37 lines
866 B
ANTLR
37 lines
866 B
ANTLR
lexer grammar HooLexer;
|
|
|
|
BOOL_LITERAL: 'true' | 'false';
|
|
|
|
INTEGER_LITERAL: '0' | ('+' | '-')? [1-9] [0-9]*;
|
|
|
|
DOUBLE_LITERAL: ('+' | '-')? Digits+ '.' Digits+;
|
|
|
|
CHAR_LITERAL: '\'' (~['\\\r\n] | EscapeSequence) '\'';
|
|
|
|
STRING_LITERAL: '"' (~["\\\r\n] | EscapeSequence)* '"';
|
|
|
|
TEXT_BLOCK: '"""' [ \t]* [\r\n] (. | EscapeSequence)*? '"""';
|
|
|
|
NULL_LITERAL: 'null';
|
|
|
|
WS: [ \t\r\n\u000C]+ -> channel(HIDDEN);
|
|
COMMENT: '/*' .*? '*/' -> channel(HIDDEN);
|
|
LINE_COMMENT: '//' ~[\r\n]* -> channel(HIDDEN);
|
|
|
|
IDENTIFIER: Letter LetterOrDigit*;
|
|
|
|
fragment EscapeSequence:
|
|
'\\' 'u005c'? [btnfr"'\\]
|
|
| '\\' 'u005c'? ([0-3]? [0-7])? [0-7]
|
|
| '\\' 'u'+ HexDigit HexDigit HexDigit HexDigit;
|
|
|
|
fragment HexDigit: [0-9a-fA-F];
|
|
|
|
fragment Digits: [0-9];
|
|
|
|
fragment LetterOrDigit: Letter | [0-9];
|
|
|
|
fragment Letter:
|
|
[a-zA-Z$_]
|
|
| ~[\u0000-\u007F\uD800-\uDBFF]
|
|
| [\uD800-\uDBFF] [\uDC00-\uDFFF]; |