|
|
|
|
@ -1,3 +1,35 @@
|
|
|
|
|
// SysY 语法定义(lexer + parser rules)的占位文件。
|
|
|
|
|
// 注意:ANTLR 生成的 C++ 源码/头文件不进入仓库,统一放在构建目录(例如 build/generated/antlr4/)。
|
|
|
|
|
grammar SysY;
|
|
|
|
|
|
|
|
|
|
// 说明:
|
|
|
|
|
// - 这是一个“最小可用”的 SysY.g4,用于避免空文件导致的 ANTLR 解析报错。
|
|
|
|
|
// - 后续请按 SysY 语言规范逐步补全 lexer/parser 规则。
|
|
|
|
|
// - 本工程约定:ANTLR 生成的 C++ 源码/头文件不进入仓库,统一生成到构建目录(例如 build/generated/antlr4/)。
|
|
|
|
|
|
|
|
|
|
compilationUnit
|
|
|
|
|
: (statement)* EOF
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
statement
|
|
|
|
|
: 'return' expression? ';'
|
|
|
|
|
| ';'
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
expression
|
|
|
|
|
: IntegerLiteral
|
|
|
|
|
| Identifier
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
// -------- lexer --------
|
|
|
|
|
|
|
|
|
|
IntegerLiteral
|
|
|
|
|
: [0-9]+
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
Identifier
|
|
|
|
|
: [a-zA-Z_] [a-zA-Z0-9_]*
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
Whitespace
|
|
|
|
|
: [ \t\r\n]+ -> skip
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|