80 lines
835 B
Plaintext
80 lines
835 B
Plaintext
lexer grammar VSLLexer;
|
|
|
|
options {
|
|
language = Java;
|
|
}
|
|
|
|
@header {
|
|
package TP2;
|
|
}
|
|
|
|
FUNCTION: 'FUNC'
|
|
;
|
|
PROTOTYPE: 'PROTO'
|
|
;
|
|
TYPE_INT: 'INT'
|
|
;
|
|
TYPE_VOID: 'VOID'
|
|
;
|
|
ASSIGN :':='
|
|
;
|
|
IF : 'IF'
|
|
;
|
|
THEN : 'THEN'
|
|
;
|
|
ELSE : 'ELSE'
|
|
;
|
|
FIN : 'FI'
|
|
;
|
|
WHILE : 'WHILE'
|
|
;
|
|
DO : 'DO'
|
|
;
|
|
DONE : 'DONE'
|
|
;
|
|
READ : 'READ'
|
|
;
|
|
PRINT : 'PRINT'
|
|
;
|
|
RETURN: 'RETURN'
|
|
;
|
|
TEXT : '"' (ASCII)+ '"'
|
|
;
|
|
NUMBER : (DIGIT)+
|
|
;
|
|
ParO: '('
|
|
;
|
|
ParF: ')'
|
|
;
|
|
BacO: '{'
|
|
;
|
|
BacF: '}'
|
|
;
|
|
CroO: '['
|
|
;
|
|
CroF:']'
|
|
;
|
|
PLUS: '+'
|
|
;
|
|
MINUS: '-'
|
|
;
|
|
DIV:'/'
|
|
;
|
|
TIMES: '*'
|
|
;
|
|
MOD: '%'
|
|
;
|
|
VIRGULE: ','
|
|
;
|
|
IDENT: ('a'..'z'|'A'..'Z')('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
|
|
;
|
|
WS : (' '|'\n'|'\t'| '\r') { skip(); }
|
|
;
|
|
|
|
COMMENT : '//' (~'\n')* { skip(); }
|
|
;
|
|
|
|
fragment LETTER : 'a'..'z' ;
|
|
fragment DIGIT : '0'..'9' ;
|
|
fragment ASCII : ~('\n'|'"');
|