2026-03-04 10:54:23 +01:00

23 lines
433 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 ',')* 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) ;