// SysY 子集语法:支持形如 // int main() { int a = 1; int b = 2; return a + b; } // 的最小返回表达式编译。 // 后续需要自行添加 grammar SysY; compUnit : funcDef EOF ; funcDef : Int Main L_PAREN R_PAREN block ; block : L_BRACE stmt* R_BRACE ; stmt : varDecl | returnStmt ; varDecl : Int Ident (Assign exp)? Semi ; returnStmt : Return exp Semi ; exp : addExp ; addExp : primary (AddOp primary)* ; primary : Number | Ident | L_PAREN exp R_PAREN ; Int : 'int'; Return : 'return'; Main : 'main'; AddOp : '+'; Assign : '='; Semi : ';'; L_PAREN : '('; R_PAREN : ')'; L_BRACE : '{'; R_BRACE : '}'; Ident : [a-zA-Z_][a-zA-Z_0-9]* ; Number : [0-9]+ ; WS : [ \t\r\n]+ -> skip ; COMMENT : '//' ~[\r\n]* -> skip ;