antlr3ide 似乎生成没有 java 文件所在的包信息的解析器和词法分析器文件(例如package tour.trees;,这里的相对路径文件夹tour/trees包含相应的文件ExprParser.java
和ExprLexer.java
)。
下面是一个示例语法文件Expr.g
:
grammar Expr;
options {
language = Java;
}
prog : stat+;
stat : expr NEWLINE
| ID '=' expr NEWLINE
| NEWLINE
;
expr: multiExpr (('+'|'-') multiExpr)*
;
multiExpr : atom('*' atom)*
;
atom : INT
| ID
| '(' expr ')'
;
ID : ('a'..'z'|'A'..'Z')+ ;
INT : '0'..'9'+;
NEWLINE : '\r'?'\n';
WS : (' '|'\t'|'\n'|'\r')+{skip();};