antlr3ide生成解析器和词法分析器没有包信息?

时间:2012-09-29 07:22:55

标签: eclipse-plugin antlr antlrv3ide

antlr3ide似乎生成了解析器和词法分析器文件而没有java文件所在的包信息(例如 package tour.trees; ,这里是相对路径文件夹 tour / trees 包含相应的文件ExprParser.javaExprLexer.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();};

1 个答案:

答案 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+;

...