Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /******************************************************************************\
- * Essex Lexer
- */
- lexer grammar essex_lexer;
- ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;
- INT : BININT
- | OCTINT
- | DECINT
- | HEXINT
- ;
- BININT : '0b' BIN_DIGIT+
- ;
- OCTINT : '0o' OCT_DIGIT+
- ;
- DECINT : DIGIT+
- ;
- HEXINT : '0x' HEX_DIGIT+
- ;
- FLOAT : DIGIT+ '.' DIGIT+ EXPONENT?
- | DIGIT+ EXPONENT
- | DIGIT+ 'f'
- ;
- fragment
- BIN_DIGIT
- : ('0' | '1')
- ;
- fragment
- OCT_DIGIT
- : ('0'..'7')
- ;
- fragment
- DIGIT
- : ('0'..'9')
- ;
- fragment
- HEX_DIGIT
- : (DIGIT | 'a'..'f' | 'A'..'F')
- ;
- fragment
- EXPONENT: ('e'|'E') ('+'|'-')? DIGIT+ ;
- WS : ( ' ' | '\t' | '\r' | '\n' ) {$channel=HIDDEN;} ;
- STRING : '"' ( ESC_SEQ | ~('\\'|'"') )* '"' ;
- CHAR : '\''( ESC_SEQ | ~('\''|'\\')) '\'' ;
- fragment
- ESC_SEQ : '\\' ('\\'|'\''|'\"'|'a'|'b'|'f'|'n'|'r'|'t'|'v') | OCT_ESC | HEX_ESC | UNICODE_ESC ;
- fragment
- HEX_ESC : '\\x' HEX_DIGIT HEX_DIGIT ;
- fragment
- OCT_ESC
- : '\\' ('0'..'3') ('0'..'7') ('0'..'7')
- | '\\' ('0'..'7') ('0'..'7')
- | '\\' ('0'..'7')
- ;
- fragment
- UNICODE_ESC
- : '\\u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
- | '\\U' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
- ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement