-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCosmosDBLexer.g4
123 lines (109 loc) · 2.58 KB
/
CosmosDBLexer.g4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
lexer grammar CosmosDBLexer;
options {
caseInsensitive = true;
}
fragment A: [a];
fragment B: [b];
fragment C: [c];
fragment D: [d];
fragment E: [e];
fragment F: [f];
fragment G: [g];
fragment H: [h];
fragment I: [i];
fragment J: [j];
fragment K: [k];
fragment L: [l];
fragment M: [m];
fragment N: [n];
fragment O: [o];
fragment P: [p];
fragment Q: [q];
fragment R: [r];
fragment S: [s];
fragment T: [t];
fragment U: [u];
fragment V: [v];
fragment W: [w];
fragment X: [x];
fragment Y: [y];
fragment Z: [z];
MULTIPLY_OPERATOR: '*';
AS_SYMBOL: 'AS';
SELECT_SYMBOL: 'SELECT';
FROM_SYMBOL: 'FROM';
DISTINCT_SYMBOL: 'DISTINCT';
UNDEFINED_SYMBOL: 'UNDEFINED';
NULL_SYMBOL: 'NULL';
FALSE_SYMBOL: 'FALSE';
TRUE_SYMBOL: 'TRUE';
NOT_SYMBOL: 'NOT';
UDF_SYMBOL: 'UDF';
WHERE_SYMBOL: 'WHERE';
AT_SYMBOL: '@';
LC_BRACKET_SYMBOL: '{';
RC_BRACKET_SYMBOL: '}';
LS_BRACKET_SYMBOL: '[';
RS_BRACKET_SYMBOL: ']';
LR_BRACKET_SYMBOL: '(';
RR_BRACKET_SYMBOL: ')';
SINGLE_QUOTE_SYMBOL: '\'';
DOUBLE_QUOTE_SYMBOL: '"';
COMMA_SYMBOL: ',';
DOT_SYMBOL: '.';
QUESTION_MARK_SYMBOL: '?';
COLON_SYMBOL: ':';
PLUS_SYMBOL: '+';
MINUS_SYMBOL: '-';
BIT_NOT_SYMBOL: '~';
DIVIDE_SYMBOL: '/';
MODULO_SYMBOL: '%';
BIT_AND_SYMBOL: '&';
BIT_OR_SYMBOL: '|';
OR_SYMBOL: '||';
BIT_XOR_SYMBOL: '^';
EUQAL_SYMBOL: '=';
/* Identifiers */
IDENTIFIER: [a-z] [a-z_0-9]*;
// White space handling
WHITESPACE:
[ \t\f\r\n] -> channel(HIDDEN); // Ignore whitespaces.
// Decimal literal.
fragment DEC_DIGIT: [0-9];
fragment DEC_DOT_DEC: (
DEC_DIGIT+ '.' DEC_DIGIT+
| DEC_DIGIT+ '.'
| '.' DEC_DIGIT+
);
DECIMAL: DEC_DIGIT+;
REAL: (DECIMAL | DEC_DOT_DEC) ('E' [+-]? DEC_DIGIT+);
FLOAT: DEC_DOT_DEC;
// Hexadecimal literal.
fragment HEX_DIGIT: [0-9A-F];
HEXADECIMAL: '0' 'X' HEX_DIGIT+;
fragment FullWidthLetter options {
caseInsensitive = false;
}:
'\u00c0' ..'\u00d6'
| '\u00d8' ..'\u00f6'
| '\u00f8' ..'\u00ff'
| '\u0100' ..'\u1fff'
| '\u2c00' ..'\u2fff'
| '\u3040' ..'\u318f'
| '\u3300' ..'\u337f'
| '\u3400' ..'\u3fff'
| '\u4e00' ..'\u9fff'
| '\ua000' ..'\ud7ff'
| '\uf900' ..'\ufaff'
| '\uff00' ..'\ufff0';
// | '\u10000'..'\u1F9FF' //not support four bytes chars | '\u20000'..'\u2FA1F'
// String literal.
fragment ESCAPE_SEQUENCE:
'\\' [btnrf"'\\/] // Basic escape sequences: \b, \t, \n, \r, \f, ", ', \, /
| '\\u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT; // Unicode escape: \uXXXX
fragment STRING_CHAR:
ESCAPE_SEQUENCE
| ~[\\"'\r\n]; // Any Unicode character EXCEPT: \, ", ', \r, \n
STRING_LITERAL:
SINGLE_QUOTE_SYMBOL STRING_CHAR* SINGLE_QUOTE_SYMBOL // Single-quoted string
| DOUBLE_QUOTE_SYMBOL STRING_CHAR* DOUBLE_QUOTE_SYMBOL; // Double-quoted string