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'|'"');
