@@ -5,11 +5,12 @@ Category: common, enterprise
5
5
Website: https://www.java.com/
6
6
*/
7
7
8
+ import * as regex from "../lib/regex" ;
9
+
8
10
export default function ( hljs ) {
9
11
var JAVA_IDENT_RE = '[\u00C0-\u02B8a-zA-Z_$][\u00C0-\u02B8a-zA-Z_$0-9]*' ;
10
12
var GENERIC_IDENT_RE = JAVA_IDENT_RE + '(<' + JAVA_IDENT_RE + '(\\s*,\\s*' + JAVA_IDENT_RE + ')*>)?' ;
11
- var KEYWORDS =
12
- 'false synchronized int abstract float private char boolean var static null if const ' +
13
+ var KEYWORDS = 'false synchronized int abstract float private char boolean var static null if const ' +
13
14
'for true while long strictfp finally protected import native final void ' +
14
15
'enum else break transient catch instanceof byte super volatile case assert short ' +
15
16
'package default double public try this switch continue throws protected public private ' +
@@ -18,32 +19,53 @@ export default function(hljs) {
18
19
var ANNOTATION = {
19
20
className : 'meta' ,
20
21
begin : '@' + JAVA_IDENT_RE ,
21
- contains :[
22
+ contains : [
22
23
{
23
24
begin : / \( / ,
24
25
end : / \) / ,
25
26
contains : [ "self" ] // allow nested () inside our annotation
26
27
} ,
27
28
]
28
- }
29
- // https://docs.oracle.com/javase/7/docs/technotes/guides/language/underscores-literals.html
30
- var JAVA_NUMBER_RE = '\\b' +
31
- '(' +
32
- '0[bB]([01]+[01_]+[01]+|[01]+)' + // 0b...
33
- '|' +
34
- '0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)' + // 0x...
35
- '|' +
36
- '(' +
37
- '([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?' +
38
- '|' +
39
- '\\.([\\d]+[\\d_]+[\\d]+|[\\d]+)' +
40
- ')' +
41
- '([eE][-+]?\\d+)?' + // octal, decimal, float
42
- ')' +
43
- '[lLfF]?' ;
29
+ } ;
30
+ /**
31
+ * A given sequence, possibly with underscores
32
+ * @type {(s: string | RegExp) => string } */
33
+ var SEQUENCE_ALLOWING_UNDERSCORES = ( seq ) => regex . concat ( '[' , seq , ']+([' , seq , '_]*[' , seq , ']+)?' ) ;
44
34
var JAVA_NUMBER_MODE = {
45
35
className : 'number' ,
46
- begin : JAVA_NUMBER_RE ,
36
+ variants : [
37
+ { begin : `\\b(0[bB]${ SEQUENCE_ALLOWING_UNDERSCORES ( '01' ) } )[lL]?` } , // binary
38
+ { begin : `\\b(0${ SEQUENCE_ALLOWING_UNDERSCORES ( '0-7' ) } )[dDfFlL]?` } , // octal
39
+ {
40
+ begin : regex . concat (
41
+ / \b 0 [ x X ] / ,
42
+ regex . either (
43
+ regex . concat ( SEQUENCE_ALLOWING_UNDERSCORES ( 'a-fA-F0-9' ) , / \. / , SEQUENCE_ALLOWING_UNDERSCORES ( 'a-fA-F0-9' ) ) ,
44
+ regex . concat ( SEQUENCE_ALLOWING_UNDERSCORES ( 'a-fA-F0-9' ) , / \. ? / ) ,
45
+ regex . concat ( / \. / , SEQUENCE_ALLOWING_UNDERSCORES ( 'a-fA-F0-9' ) ) ,
46
+ ) ,
47
+ / ( [ p P ] [ + - ] ? ( \d + ) ) ? / ,
48
+ / [ f F d D l L ] ? / // decimal & fp mixed for simplicity
49
+ )
50
+ } ,
51
+ // scientific notation
52
+ { begin : regex . concat (
53
+ / \b / ,
54
+ regex . either (
55
+ regex . concat ( / \d * \. / , SEQUENCE_ALLOWING_UNDERSCORES ( "\\d" ) ) , // .3, 3.3, 3.3_3
56
+ SEQUENCE_ALLOWING_UNDERSCORES ( "\\d" ) // 3, 3_3
57
+ ) ,
58
+ / [ e E ] [ + - ] ? [ \d ] + [ d D f F ] ? / )
59
+ } ,
60
+ // decimal & fp mixed for simplicity
61
+ { begin : regex . concat (
62
+ / \b / ,
63
+ SEQUENCE_ALLOWING_UNDERSCORES ( / \d / ) ,
64
+ regex . optional ( / \. ? / ) ,
65
+ regex . optional ( SEQUENCE_ALLOWING_UNDERSCORES ( / \d / ) ) ,
66
+ / [ d D f F l L ] ? / )
67
+ }
68
+ ] ,
47
69
relevance : 0
48
70
} ;
49
71
@@ -57,15 +79,15 @@ export default function(hljs) {
57
79
'/\\*\\*' ,
58
80
'\\*/' ,
59
81
{
60
- relevance : 0 ,
61
- contains : [
82
+ relevance : 0 ,
83
+ contains : [
62
84
{
63
85
// eat up @'s in emails to prevent them to be recognized as doctags
64
86
begin : / \w + @ / , relevance : 0
65
87
} ,
66
88
{
67
- className : 'doctag' ,
68
- begin : '@[A-Za-z]+'
89
+ className : 'doctag' ,
90
+ begin : '@[A-Za-z]+'
69
91
}
70
92
]
71
93
}
@@ -80,7 +102,7 @@ export default function(hljs) {
80
102
keywords : 'class interface' ,
81
103
illegal : / [: " \[ \] ] / ,
82
104
contains : [
83
- { beginKeywords : 'extends implements' } ,
105
+ { beginKeywords : 'extends implements' } ,
84
106
hljs . UNDERSCORE_TITLE_MODE
85
107
]
86
108
} ,
0 commit comments