Calc.g4
grammar Calc;
// 下面是语法
prog: stat+ ;
stat: expr ';' # printExpr
| ID '=' expr ';' # assign
| NEWLINE # blank
;
expr: expr op=('*'|'/') expr # MulDiv
| expr op=('+'|'-') expr # AddSub
| INT # int
| ID # id
| '(' expr ')' # parens
;
// 下面是词法
MUL : '*' ;
DIV : '/' ;
ADD : '+' ;
SUB : '-' ;
ID : [a-zA-Z]+ ; // 匹配标识符
INT : [0-9]+ ; // 匹配整数
WS : [ \t]+ -> skip ; // 忽略空白符
NEWLINE:'\r'? '\n' ; // 空行
生成java文件
antlr4 Calc.g4
编译
javac *.java
测试验证语法组件
grun Calc prog -gui
1. 控制台输入grun Calc prog -gui
2. 输入公式 敲回车
3. 输入ctrl+z 敲回车