Skip to content

Commit 3de29e7

Browse files
C++: Fixed C++ number pattern (#1887)
1 parent 6068bf1 commit 3de29e7

File tree

3 files changed

+71
-3
lines changed

3 files changed

+71
-3
lines changed

components/prism-cpp.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@ Prism.languages.cpp = Prism.languages.extend('c', {
44
lookbehind: true
55
},
66
'keyword': /\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,
7-
'boolean': /\b(?:true|false)\b/,
8-
'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/
7+
'number': {
8+
pattern: /(?:\b0b[01']+|\b0x(?:[\da-f']+\.?[\da-f']*|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+\.?[\d']*|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]*/i,
9+
greedy: true
10+
},
11+
'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,
12+
'boolean': /\b(?:true|false)\b/
913
});
1014

1115
Prism.languages.insertBefore('cpp', 'string', {

components/prism-cpp.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
42
2+
3.14159
3+
4e10
4+
2.1e-10
5+
0.4e+2
6+
0xbabe
7+
0xBABE
8+
0x1.2
9+
0x0.3p-3
10+
0x0.3p4L
11+
42f
12+
42F
13+
42u
14+
42U
15+
42l
16+
42L
17+
0b0101
18+
0B0101
19+
20+
18446744073709550592ull
21+
18'446'744'073'709'550'592llu
22+
1844'6744'0737'0955'0592uLL
23+
184467'440737'0'95505'92LLU
24+
1'048'576
25+
0x10'0000
26+
0'004'000'000
27+
1.602'176'565e-19
28+
0b010'01010
29+
30+
----------------------------------------------------
31+
32+
[
33+
["number", "42"],
34+
["number", "3.14159"],
35+
["number", "4e10"],
36+
["number", "2.1e-10"],
37+
["number", "0.4e+2"],
38+
["number", "0xbabe"],
39+
["number", "0xBABE"],
40+
["number", "0x1.2"],
41+
["number", "0x0.3p-3"],
42+
["number", "0x0.3p4L"],
43+
["number", "42f"],
44+
["number", "42F"],
45+
["number", "42u"],
46+
["number", "42U"],
47+
["number", "42l"],
48+
["number", "42L"],
49+
["number", "0b0101"],
50+
["number", "0B0101"],
51+
["number", "18446744073709550592ull"],
52+
["number", "18'446'744'073'709'550'592llu"],
53+
["number", "1844'6744'0737'0955'0592uLL"],
54+
["number", "184467'440737'0'95505'92LLU"],
55+
["number", "1'048'576"],
56+
["number", "0x10'0000"],
57+
["number", "0'004'000'000"],
58+
["number", "1.602'176'565e-19"],
59+
["number", "0b010'01010"]
60+
]
61+
62+
----------------------------------------------------
63+
64+
Checks for binary, decimal, and hexadecimal numbers.

0 commit comments

Comments
 (0)