antlr3ide似乎生成了解析器和词法分析器文件而没有java文件所在的包信息(例如 package tour.trees; ,这里是相对路径文件夹 tour / trees 包含相应的文件ExprParser.java
和ExprLexer.java
)。
official forum似乎有点不活跃,而documentation对我的帮助不大:(
下面是一个示例语法文件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();};
答案 0 :(得分:1)
包声明不是antlrv3ide生成的。这是由ANTLR完成的。要让ANTLR在包tour.trees
中生成源文件,请在语法文件中添加包含包声明的@header
块,如下所示:
grammar Expr;
options {
language = Java;
}
// placed _after_ the `options`-block!
@parser::header { package tour.trees; }
@lexer::header { package tour.trees; }
prog : stat+;
...