Skip to content

Commit 7af8f8b

Browse files
RunDevelopmentmAAdhaTTah
authored andcommitted
C/C++/Java operator update (#1528)
This PR extends and updates the operators of C, C++, and Java. Java and C++ now support the -> operator. (C++ had a bug.) The tests of all languages were updated and the operator pattern for each language is now shorter.
1 parent e63d159 commit 7af8f8b

9 files changed

+138
-19
lines changed

components/prism-c.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Prism.languages.c = Prism.languages.extend('clike', {
22
'keyword': /\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,
3-
'operator': /-[>-]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/]/,
3+
'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/,
44
'number': /(?:\b0x[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i
55
});
66

components/prism-c.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/prism-cpp.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Prism.languages.cpp = Prism.languages.extend('c', {
22
'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/,
33
'boolean': /\b(?:true|false)\b/,
4-
'operator': /--?|\+\+?|!=?|<{1,2}=?|>{1,2}=?|->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|\|?|\?|\*|\/|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/
4+
'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/
55
});
66

77
Prism.languages.insertBefore('cpp', 'keyword', {

components/prism-cpp.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/prism-java.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ Prism.languages.java = Prism.languages.extend('clike', {
22
'keyword': /\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,
33
'number': /\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp-]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?[df]?/i,
44
'operator': {
5-
pattern: /(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<<?=?|>>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,
5+
pattern: /(^|[^.])(?:<<=?|>>>?=?|->|([-+&|])\2|[?:~]|[-+*/%&|^!=<>]=?)/m,
66
lookbehind: true
77
}
88
});

components/prism-java.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
+53-11
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,61 @@
1-
+ - ++ -- ! !=
2-
< << <= <<=
3-
> >> >= >>=
4-
-> == ^ ~ %
5-
& && | || ? * /
1+
+ - * / % -- ++
2+
>> <<
3+
~ & | ^
4+
+= -= *= /= %= >>= <<= &= |= ^=
5+
! && ||
6+
-> ::
7+
? :
8+
= == != < > <= >=
69

710
----------------------------------------------------
811

912
[
10-
["operator", "+"], ["operator", "-"], ["operator", "++"], ["operator", "--"], ["operator", "!"], ["operator", "!="],
11-
["operator", "<"], ["operator", "<<"], ["operator", "<="], ["operator", "<<="],
12-
["operator", ">"], ["operator", ">>"], ["operator", ">="], ["operator", ">>="],
13-
["operator", "->"], ["operator", "=="], ["operator", "^"], ["operator", "~"], ["operator", "%"],
14-
["operator", "&"], ["operator", "&&"], ["operator", "|"], ["operator", "||"], ["operator", "?"], ["operator", "*"], ["operator", "/"]
13+
["operator", "+"],
14+
["operator", "-"],
15+
["operator", "*"],
16+
["operator", "/"],
17+
["operator", "%"],
18+
["operator", "--"],
19+
["operator", "++"],
20+
21+
["operator", ">>"],
22+
["operator", "<<"],
23+
24+
["operator", "~"],
25+
["operator", "&"],
26+
["operator", "|"],
27+
["operator", "^"],
28+
29+
["operator", "+="],
30+
["operator", "-="],
31+
["operator", "*="],
32+
["operator", "/="],
33+
["operator", "%="],
34+
["operator", ">>="],
35+
["operator", "<<="],
36+
["operator", "&="],
37+
["operator", "|="],
38+
["operator", "^="],
39+
40+
["operator", "!"],
41+
["operator", "&&"],
42+
["operator", "||"],
43+
44+
["operator", "->"],
45+
["operator", "::"],
46+
47+
["operator", "?"],
48+
["operator", ":"],
49+
50+
["operator", "="],
51+
["operator", "=="],
52+
["operator", "!="],
53+
["operator", "<"],
54+
["operator", ">"],
55+
["operator", "<="],
56+
["operator", ">="]
1557
]
1658

1759
----------------------------------------------------
1860

19-
Checks for all operators
61+
Checks for all operators
+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
+ - * / % -- ++
2+
>> <<
3+
~ & | ^
4+
+= -= *= /= %= >>= <<= &= |= ^=
5+
! && ||
6+
-> ::
7+
? :
8+
= == != < > <= >=
9+
and and_eq bitand bitor not not_eq or or_eq xor xor_eq
10+
11+
----------------------------------------------------
12+
13+
[
14+
["operator", "+"],
15+
["operator", "-"],
16+
["operator", "*"],
17+
["operator", "/"],
18+
["operator", "%"],
19+
["operator", "--"],
20+
["operator", "++"],
21+
22+
["operator", ">>"],
23+
["operator", "<<"],
24+
25+
["operator", "~"],
26+
["operator", "&"],
27+
["operator", "|"],
28+
["operator", "^"],
29+
30+
["operator", "+="],
31+
["operator", "-="],
32+
["operator", "*="],
33+
["operator", "/="],
34+
["operator", "%="],
35+
["operator", ">>="],
36+
["operator", "<<="],
37+
["operator", "&="],
38+
["operator", "|="],
39+
["operator", "^="],
40+
41+
["operator", "!"],
42+
["operator", "&&"],
43+
["operator", "||"],
44+
45+
["operator", "->"],
46+
["operator", "::"],
47+
48+
["operator", "?"],
49+
["operator", ":"],
50+
51+
["operator", "="],
52+
["operator", "=="],
53+
["operator", "!="],
54+
["operator", "<"],
55+
["operator", ">"],
56+
["operator", "<="],
57+
["operator", ">="],
58+
59+
["operator", "and"],
60+
["operator", "and_eq"],
61+
["operator", "bitand"],
62+
["operator", "bitor"],
63+
["operator", "not"],
64+
["operator", "not_eq"],
65+
["operator", "or"],
66+
["operator", "or_eq"],
67+
["operator", "xor"],
68+
["operator", "xor_eq"]
69+
]
70+
71+
----------------------------------------------------
72+
73+
Checks for all operators.

tests/languages/java/operator_feature.test

+6-2
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
& && &=
88
| || |=
99
? : ~
10+
^ ^=
1011
* *=
1112
/ /=
1213
% %=
14+
->
1315

1416
----------------------------------------------------
1517

@@ -23,11 +25,13 @@
2325
["operator", "&"], ["operator", "&&"], ["operator", "&="],
2426
["operator", "|"], ["operator", "||"], ["operator", "|="],
2527
["operator", "?"], ["operator", ":"], ["operator", "~"],
28+
["operator", "^"], ["operator", "^="],
2629
["operator", "*"], ["operator", "*="],
2730
["operator", "/"], ["operator", "/="],
28-
["operator", "%"], ["operator", "%="]
31+
["operator", "%"], ["operator", "%="],
32+
["operator", "->"]
2933
]
3034

3135
----------------------------------------------------
3236

33-
Checks for all operators.
37+
Checks for all operators.

0 commit comments

Comments
 (0)