You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
885 B
Plaintext
60 lines
885 B
Plaintext
// Basic terminals for common use
|
|
|
|
|
|
//
|
|
// Numbers
|
|
//
|
|
|
|
DIGIT: "0".."9"
|
|
HEXDIGIT: "a".."f"|"A".."F"|DIGIT
|
|
|
|
INT: DIGIT+
|
|
SIGNED_INT: ["+"|"-"] INT
|
|
DECIMAL: INT "." INT? | "." INT
|
|
|
|
// float = /-?\d+(\.\d+)?([eE][+-]?\d+)?/
|
|
_EXP: ("e"|"E") SIGNED_INT
|
|
FLOAT: INT _EXP | DECIMAL _EXP?
|
|
SIGNED_FLOAT: ["+"|"-"] FLOAT
|
|
|
|
NUMBER: FLOAT | INT
|
|
SIGNED_NUMBER: ["+"|"-"] NUMBER
|
|
|
|
//
|
|
// Strings
|
|
//
|
|
_STRING_INNER: /.*?/
|
|
_STRING_ESC_INNER: _STRING_INNER /(?<!\\)(\\\\)*?/
|
|
|
|
ESCAPED_STRING : "\"" _STRING_ESC_INNER "\""
|
|
|
|
|
|
//
|
|
// Names (Variables)
|
|
//
|
|
LCASE_LETTER: "a".."z"
|
|
UCASE_LETTER: "A".."Z"
|
|
|
|
LETTER: UCASE_LETTER | LCASE_LETTER
|
|
WORD: LETTER+
|
|
|
|
CNAME: ("_"|LETTER) ("_"|LETTER|DIGIT)*
|
|
|
|
|
|
//
|
|
// Whitespace
|
|
//
|
|
WS_INLINE: (" "|/\t/)+
|
|
WS: /[ \t\f\r\n]/+
|
|
|
|
CR : /\r/
|
|
LF : /\n/
|
|
NEWLINE: (CR? LF)+
|
|
|
|
|
|
// Comments
|
|
SH_COMMENT: /#[^\n]*/
|
|
CPP_COMMENT: /\/\/[^\n]*/
|
|
C_COMMENT: "/*" /(.|\n)*?/ "*/"
|
|
SQL_COMMENT: /--[^\n]*/
|