SHOW:
|
|
- or go back to the newest paste.
| 1 | lexer grammar SpokolLexer; | |
| 2 | ||
| 3 | WS : (' '|'\r'|'\t'|'\n') {channel=HIDDEN;}
| |
| 4 | ; | |
| 5 | ||
| 6 | COMMENT : '{' (~'}')* '}' {channel=HIDDEN;}
| |
| 7 | ; | |
| 8 | ||
| 9 | STRING_LITERAL | |
| 10 | : '\'' ( EscapeSequence | ~('\\'|'\'') )* '\''
| |
| 11 | ; | |
| 12 | ||
| 13 | EscapeSequence | |
| 14 | : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
| |
| 15 | ; | |
| 16 | ||
| 17 | COMMA: ',' ; | |
| 18 | PARENTHESIS_OPEN: '(' ;
| |
| 19 | PARENTHESIS_CLOSE: ')' ; | |
| 20 | SEMICOLON: ';' ; | |
| 21 | PLUS: '+' ; | |
| 22 | MINUS: '-' ; | |
| 23 | EQUAL: '=' ; | |
| 24 | MULTIPLY: '*' ; | |
| 25 | DIVIDE: '/' ; | |
| 26 | NOT_EQUAL: '!=' ; | |
| 27 | LESS_EQUAL: '<=' ; | |
| 28 | LESS: '<' ; | |
| 29 | GREATER_EQUAL: '>=' ; | |
| 30 | GREATER: '>' ; | |
| 31 | ASSIGN: ':=' ; | |
| 32 | COLON: ':'; | |
| 33 | CONST_INT: ('0'..'9')+ ;
| |
| 34 | FLOATING_POINT_LITERAL: | |
| 35 | ('0'..'9')+ '.' ('0'..'9')+ ('e'|'E') ('+'|'-')? ('0'..'9')+
| |
| 36 | | ('0'..'9')+ ('e'|'E') ('+'|'-')? ('0'..'9')+
| |
| 37 | | ('0'..'9')+ '.' ('0'..'9')+
| |
| 38 | ; | |
| 39 | AND: 'AND' ; | |
| 40 | OR: 'OR' ; | |
| 41 | NOT: 'not' ; | |
| 42 | STRING: 'string' ; | |
| 43 | INT: 'int' ; | |
| 44 | BOOL: 'bool' ; | |
| 45 | REAL: 'real' ; | |
| 46 | PROGRAM: 'program' ; | |
| 47 | PROCEDURE: 'procedure' ; | |
| 48 | BEGIN: 'begin' ; | |
| 49 | END: 'end' ; | |
| 50 | DO: 'do' ; | |
| 51 | ENDWHILE: 'endwhile' ; | |
| 52 | BREAK: 'break' ; | |
| 53 | IF: 'if' ; | |
| 54 | ELSE: 'else' ; | |
| 55 | ENDIF: 'endif' ; | |
| 56 | PRINT: 'print' ; | |
| 57 | READ: 'read' ; | |
| 58 | THEN: 'then' ; | |
| 59 | VAR: 'var' ; | |
| 60 | WHILE: 'while' ; | |
| 61 | - | IDENT: ('A'..'Z'|'a'..'z'|'-')('A'..'Z'|'a'..'z'|'-'|'0'..'9')* ; |
| 61 | + | IDENT: ('A'..'Z'|'a'..'z'|'_')('A'..'Z'|'a'..'z'|'_'|'0'..'9')* ; |