View difference between Paste ID: JcywPZJd and Y536bf91
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')* ;