1

antlr3ideは、javaファイルが配置されているパッケージ情報なしでパーサーファイルとレクサーファイルを生成するようです(パッケージ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();};
4

1 に答える 1

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

...
于 2012-09-29T07:42:04.900 に答える