@@ -41,7 +41,7 @@ input_element
41
41
// Source: §6.3.2 Line terminators
42
42
New_Line
43
43
: New_Line_Character
44
- | '\u000D\u000A' // carriage return, line feed
44
+ | '\u000D\u000A' // carriage return, line feed
45
45
;
46
46
47
47
// Source: §6.3.3 Comments
@@ -58,19 +58,19 @@ fragment Input_Character
58
58
// anything but New_Line_Character
59
59
: ~('\u000D' | '\u000A' | '\u0085' | '\u2028' | '\u2029')
60
60
;
61
-
61
+
62
62
fragment New_Line_Character
63
63
: '\u000D' // carriage return
64
64
| '\u000A' // line feed
65
65
| '\u0085' // next line
66
66
| '\u2028' // line separator
67
67
| '\u2029' // paragraph separator
68
68
;
69
-
69
+
70
70
fragment Delimited_Comment
71
71
: '/*' Delimited_Comment_Section* ASTERISK+ '/'
72
72
;
73
-
73
+
74
74
fragment Delimited_Comment_Section
75
75
: SLASH
76
76
| ASTERISK* Not_Slash_Or_Asterisk
@@ -125,7 +125,7 @@ fragment Available_Identifier
125
125
fragment Escaped_Identifier
126
126
// Includes keywords and contextual keywords prefixed by '@'.
127
127
// See note below.
128
- : '@' Basic_Identifier
128
+ : '@' Basic_Identifier
129
129
;
130
130
131
131
fragment Basic_Identifier
@@ -246,36 +246,36 @@ fragment Decimal_Integer_Literal
246
246
fragment Decorated_Decimal_Digit
247
247
: '_'* Decimal_Digit
248
248
;
249
-
249
+
250
250
fragment Decimal_Digit
251
251
: '0'..'9'
252
252
;
253
-
253
+
254
254
fragment Integer_Type_Suffix
255
255
: 'U' | 'u' | 'L' | 'l' |
256
256
'UL' | 'Ul' | 'uL' | 'ul' | 'LU' | 'Lu' | 'lU' | 'lu'
257
257
;
258
-
258
+
259
259
fragment Hexadecimal_Integer_Literal
260
260
: ('0x' | '0X') Decorated_Hex_Digit+ Integer_Type_Suffix?
261
261
;
262
262
263
263
fragment Decorated_Hex_Digit
264
264
: '_'* Hex_Digit
265
265
;
266
-
266
+
267
267
fragment Hex_Digit
268
268
: '0'..'9' | 'A'..'F' | 'a'..'f'
269
269
;
270
-
270
+
271
271
fragment Binary_Integer_Literal
272
272
: ('0b' | '0B') Decorated_Binary_Digit+ Integer_Type_Suffix?
273
273
;
274
274
275
275
fragment Decorated_Binary_Digit
276
276
: '_'* Binary_Digit
277
277
;
278
-
278
+
279
279
fragment Binary_Digit
280
280
: '0' | '1'
281
281
;
@@ -305,24 +305,24 @@ fragment Real_Type_Suffix
305
305
Character_Literal
306
306
: '\'' Character '\''
307
307
;
308
-
308
+
309
309
fragment Character
310
310
: Single_Character
311
311
| Simple_Escape_Sequence
312
312
| Hexadecimal_Escape_Sequence
313
313
| Unicode_Escape_Sequence
314
314
;
315
-
315
+
316
316
fragment Single_Character
317
317
// anything but ', \, and New_Line_Character
318
318
: ~['\\\u000D\u000A\u0085\u2028\u2029]
319
319
;
320
-
320
+
321
321
fragment Simple_Escape_Sequence
322
322
: '\\\'' | '\\"' | '\\\\' | '\\0' | '\\a' | '\\b' |
323
323
'\\f' | '\\n' | '\\r' | '\\t' | '\\v'
324
324
;
325
-
325
+
326
326
fragment Hexadecimal_Escape_Sequence
327
327
: '\\x' Hex_Digit Hex_Digit? Hex_Digit? Hex_Digit?
328
328
;
@@ -332,11 +332,11 @@ String_Literal
332
332
: Regular_String_Literal
333
333
| Verbatim_String_Literal
334
334
;
335
-
335
+
336
336
fragment Regular_String_Literal
337
337
: '"' Regular_String_Literal_Character* '"'
338
338
;
339
-
339
+
340
340
fragment Regular_String_Literal_Character
341
341
: Single_Regular_String_Literal_Character
342
342
| Simple_Escape_Sequence
@@ -352,16 +352,16 @@ fragment Single_Regular_String_Literal_Character
352
352
fragment Verbatim_String_Literal
353
353
: '@"' Verbatim_String_Literal_Character* '"'
354
354
;
355
-
355
+
356
356
fragment Verbatim_String_Literal_Character
357
357
: Single_Verbatim_String_Literal_Character
358
358
| Quote_Escape_Sequence
359
359
;
360
-
360
+
361
361
fragment Single_Verbatim_String_Literal_Character
362
362
: ~["] // anything but quotation mark (U+0022)
363
363
;
364
-
364
+
365
365
fragment Quote_Escape_Sequence
366
366
: '""'
367
367
;
@@ -431,11 +431,11 @@ fragment PP_Conditional_Symbol
431
431
fragment PP_Expression
432
432
: PP_Whitespace? PP_Or_Expression PP_Whitespace?
433
433
;
434
-
434
+
435
435
fragment PP_Or_Expression
436
436
: PP_And_Expression (PP_Whitespace? '||' PP_Whitespace? PP_And_Expression)*
437
437
;
438
-
438
+
439
439
fragment PP_And_Expression
440
440
: PP_Equality_Expression (PP_Whitespace? '&&' PP_Whitespace?
441
441
PP_Equality_Expression)*
@@ -445,12 +445,12 @@ fragment PP_Equality_Expression
445
445
: PP_Unary_Expression (PP_Whitespace? ('==' | '!=') PP_Whitespace?
446
446
PP_Unary_Expression)*
447
447
;
448
-
448
+
449
449
fragment PP_Unary_Expression
450
450
: PP_Primary_Expression
451
451
| '!' PP_Whitespace? PP_Unary_Expression
452
452
;
453
-
453
+
454
454
fragment PP_Primary_Expression
455
455
: TRUE
456
456
| FALSE
@@ -475,15 +475,15 @@ fragment PP_Conditional
475
475
fragment PP_If_Section
476
476
: 'if' PP_Whitespace PP_Expression
477
477
;
478
-
478
+
479
479
fragment PP_Elif_Section
480
480
: 'elif' PP_Whitespace PP_Expression
481
481
;
482
-
482
+
483
483
fragment PP_Else_Section
484
484
: 'else'
485
485
;
486
-
486
+
487
487
fragment PP_Endif
488
488
: 'endif'
489
489
;
@@ -523,11 +523,11 @@ fragment PP_Line_Indicator
523
523
| DEFAULT
524
524
| 'hidden'
525
525
;
526
-
526
+
527
527
fragment PP_Compilation_Unit_Name
528
528
: '"' PP_Compilation_Unit_Name_Character* '"'
529
529
;
530
-
530
+
531
531
fragment PP_Compilation_Unit_Name_Character
532
532
// Any Input_Character except "
533
533
: ~('\u000D' | '\u000A' | '\u0085' | '\u2028' | '\u2029' | '"')
@@ -1092,8 +1092,7 @@ element_initializer
1092
1092
;
1093
1093
1094
1094
expression_list
1095
- : expression
1096
- | expression_list ',' expression
1095
+ : expression (',' expression)*
1097
1096
;
1098
1097
1099
1098
// Source: §12.8.17.3 Anonymous object creation expressions
@@ -1410,12 +1409,7 @@ from_clause
1410
1409
;
1411
1410
1412
1411
query_body
1413
- : query_body_clauses? select_or_group_clause query_continuation?
1414
- ;
1415
-
1416
- query_body_clauses
1417
- : query_body_clause
1418
- | query_body_clauses query_body_clause
1412
+ : query_body_clause* select_or_group_clause query_continuation?
1419
1413
;
1420
1414
1421
1415
query_body_clause
@@ -1948,12 +1942,11 @@ class_modifier
1948
1942
1949
1943
// Source: §15.2.3 Type parameters
1950
1944
type_parameter_list
1951
- : '<' type_parameters '>'
1945
+ : '<' decorated_type_parameter (',' decorated_type_parameter)* '>'
1952
1946
;
1953
1947
1954
- type_parameters
1948
+ decorated_type_parameter
1955
1949
: attributes? type_parameter
1956
- | type_parameters ',' attributes? type_parameter
1957
1950
;
1958
1951
1959
1952
// Source: §15.2.4.1 General
@@ -2508,17 +2501,13 @@ interface_modifier
2508
2501
2509
2502
// Source: §18.2.3.1 General
2510
2503
variant_type_parameter_list
2511
- : '<' variant_type_parameters '>'
2504
+ : '<' variant_type_parameter (',' variant_type_parameter)* '>'
2512
2505
;
2513
2506
2514
- // Source: §18.2.3.1 General
2515
- variant_type_parameters
2507
+ variant_type_parameter
2516
2508
: attributes? variance_annotation? type_parameter
2517
- | variant_type_parameters ',' attributes? variance_annotation?
2518
- type_parameter
2519
2509
;
2520
2510
2521
- // Source: §18.2.3.1 General
2522
2511
variance_annotation
2523
2512
: 'in'
2524
2513
| 'out'
0 commit comments