/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
 /**
 TODO:
 SwitchCASE incompleto
 */

grammar GrammarAddress; 

assing
    : expression EOF
    ;

expression 
    : R_PAR_E expression R_PAR_D               #expr_par
    | expression op=R_OP_MULT  expression      #expr_arit_md
    | expression op=R_OP_ADD expression        #expr_arit_as
    | T_INTEIRO                                #expr_integer
    | variable                                 #expr_id
    ;
variable
    : modificator? ID
    ;
modificator
    : '.' //type
    | '_' //variable
    ;

//DEFINICAO DE TOKENS ----------------------------------------------------------

R_PAR_E                 : '(';
R_PAR_D                 : ')';
R_CHA_E                 : '[';
R_CHA_D                 : ']';
R_OP_ADD                : '+';
R_OP_MULT               : '*';

fragment    DIGITO      : [0-9] ;
fragment    CHARACTER   : [a-zA-Z_] ;
fragment    CHARACTER_UP: [A-Z];

ID                      : CHARACTER ( CHARACTER | DIGITO )* ;
T_INTEIRO               : DIGITO+ ;

R_LINE_COMMENT          : '//' .*? '\r'? '\n' -> skip ;  // Match "#" stuff '\n'
R_WS                    : (' '|'\t'|'\r'|'\n')+ -> skip ;
R_COMMENT               : '/*' .*? '*/' -> skip ; // Match "/*" stuff "*/"