23 lines
417 B
ANTLR
23 lines
417 B
ANTLR
grammar ifcc;
|
|
|
|
axiom: prog EOF ;
|
|
|
|
prog: 'int' 'main' '(' ')' '{' stmt* '}' ;
|
|
|
|
stmt: decl_stmt | set_stmt | return_stmt ;
|
|
|
|
return_stmt: RETURN val ';' ;
|
|
|
|
decl_stmt: 'int' VAR_NAME ';' ;
|
|
set_stmt: VAR_NAME '=' val ';' ;
|
|
|
|
val: CONST | VAR_NAME ;
|
|
|
|
RETURN : 'return' ;
|
|
CONST : [0-9]+ ;
|
|
VAR_NAME : [0-9a-zA-Z_]+ ;
|
|
|
|
COMMENT : '/*' .*? '*/' -> skip ;
|
|
DIRECTIVE : '#' .*? '\n' -> skip ;
|
|
WS : [ \t\r\n] -> channel(HIDDEN) ;
|