136 lines
1.7 KiB
ANTLR
136 lines
1.7 KiB
ANTLR
lexer grammar ReportLexer;
|
|
@header {
|
|
package com.torchdb.spreadsheet.dsl;
|
|
}
|
|
Cell : LETTER DIGIT+ ;
|
|
|
|
Operator : '+'
|
|
| '-'
|
|
| '*'
|
|
| '/'
|
|
| '%'
|
|
;
|
|
|
|
OP : '>'
|
|
| '<'
|
|
| '=='
|
|
| '!='
|
|
| '>='
|
|
| '<='
|
|
| 'in'
|
|
| 'notin'
|
|
| 'like'
|
|
;
|
|
|
|
|
|
ORDER : 'desc' | 'asc' ;
|
|
|
|
BOOLEAN : 'true' | 'false' ;
|
|
|
|
COLON : ':';
|
|
|
|
COMMA : ',' ;
|
|
|
|
NULL : 'null';
|
|
|
|
LeftParen : '(' ;
|
|
|
|
RightParen : ')' ;
|
|
|
|
STRING : '"' STRING_CONTENT '"'
|
|
| '\'' STRING_CONTENT '\''
|
|
| '`' STRING_CONTENT '`'
|
|
;
|
|
|
|
AND : '&&' ;
|
|
|
|
OR : '||' ;
|
|
|
|
INTEGER : DIGIT+;
|
|
|
|
NUMBER
|
|
:
|
|
DIGIT+ '.' DIGIT+ EXP? // ('-'? INT '.' INT EXP?)1.35, 1.35E-9, 0.3, -4.5
|
|
| DIGIT+ EXP // 1e10 -3e4
|
|
| DIGIT+ // -3, 45
|
|
;
|
|
|
|
EXCLAMATION : '!';
|
|
|
|
OFFSET : '~';
|
|
|
|
EXP
|
|
:
|
|
[Ee] [+\-]? DIGIT+
|
|
;
|
|
|
|
Identifier : StartChar Char* ;
|
|
|
|
LETTER : [A-Z]+ ;
|
|
|
|
Char : StartChar
|
|
| '_' | DIGIT
|
|
| '\u00B7'
|
|
| '\u0300'..'\u036F'
|
|
| '\u203F'..'\u2040'
|
|
;
|
|
|
|
DIGIT : [0-9];
|
|
|
|
|
|
fragment
|
|
STRING_CONTENT :
|
|
( EscapeSequence | ~('"'|'\'') | BLOCK_STRING)*
|
|
;
|
|
|
|
// 段落文本
|
|
fragment
|
|
BLOCK_STRING
|
|
: '\'\'\'' ~[+] .*? '\'\'\''
|
|
;
|
|
|
|
fragment
|
|
EscapeSequence
|
|
: '\\' ('b'|'t'|'n'|'f'|'r'|'\''|'\\')
|
|
| UnicodeEscape
|
|
| OctalEscape
|
|
;
|
|
|
|
fragment
|
|
OctalEscape
|
|
: '\\' ('0'..'3') ('0'..'7') ('0'..'7')
|
|
| '\\' ('0'..'7') ('0'..'7')
|
|
| '\\' ('0'..'7')
|
|
;
|
|
|
|
fragment
|
|
UnicodeEscape
|
|
:
|
|
'\\' 'u' HEX HEX HEX HEX
|
|
;
|
|
|
|
fragment
|
|
HEX
|
|
:
|
|
[0-9a-fA-F]
|
|
;
|
|
|
|
fragment
|
|
StartChar
|
|
: [a-zA-Z]
|
|
| '\u2070'..'\u218F'
|
|
| '\u2C00'..'\u2FEF'
|
|
| '\u3001'..'\uD7FF'
|
|
| '\uF900'..'\uFDCF'
|
|
| '\uFDF0'..'\uFFFD'
|
|
;
|
|
|
|
WS
|
|
:
|
|
[ \t\r\n]+ -> channel(HIDDEN)
|
|
;
|
|
|
|
NL
|
|
:
|
|
'\r'? '\n' ->channel(HIDDEN)
|
|
; |