9

プロジェクトにAntlrv3とjavaを使用していて、AntlrWorksですべてうまくいきますが、EclipseのプラグインであるAntlr IDEに切り替えると、インタープリターが私が書いた文と一致せず、不一致が表示されます。また、レクサーで指定したスキップする単語のリストを認識できないようです。ただし、AntlrWorksで完全に機能するのと同じです。

助言がありますか?

Eclipseでantlrbuiderをセットアップしました:Antlr Parser Generator v3.4

4

1 に答える 1

20

これは構成の問題である可能性があります。私はすべてを機能させるのにいくつかの困難を抱えていたので、これを行う方法の場所を1つも見つけることができず、自分のドキュメントを作成しました。お役に立てれば。

EclipseIndigoにANTLRIDEをインストールする方法

IndigoR2およびIDE2.1.2でテスト済み

  1. Eclipseをインストールします。
  2. ANTLRv2を含むANTLR完全バイナリjarをダウンロードします。一時ディレクトリに抽出します。antlr-nnフォルダーを適切な永続的な場所、たとえばEclipseがインストールされているのと同じフォルダーにコピーします。
  3. ANTLRIDE更新サイトをEclipseに追加します。
    • Eclipseで、[ヘルプ]をクリックし、[新しいソフトウェアのインストール]を選択します。
    • [追加...]ボタンをクリックします。
    • [リポジトリの追加]ウィンドウで、[場所]にhttp://antlrv3ide.sourceforge.net/updatesと入力し、[名前]にANTLR IDEなどと入力し、[OK]をクリックして[利用可能なソフトウェア]ウィンドウに戻ります。
    • ANTLR IDE vn.nnのチェックボックスをオンにして、インストールされるまでクリックします。Eclipseはおそらく再起動します。
  4. ANTLRIDEを構成します。
    • Eclipseのメインウィンドウで、[ウィンドウ]、[設定]の順にクリックします。
    • 左側のペインで、ANTLRを展開し、[ビルダー]を選択します。
    • 右側のペインで、[追加...]ボタンをクリックします。
    • [ANTLRパッケージの追加]ウィンドウで、[ディレクトリ...]をクリックし、antlr-nnフォルダーの場所に移動して、[OK]をクリックします。
    • [OK]をクリックして、[ANTLRパッケージの追加]ウィンドウを閉じます。
    • 左側のペインで[コードジェネレーター]を選択し、右側のペインで[プロジェクト相対フォルダー]をクリックします。フォルダ名を入力します。例:antlr-javaまたはantlr-generated。
    • 他の構成パラメーターを選択しますが、「構築」ウィンドウの「一般」の下にある「-nfa」または「-dfa」はチェックしないでください。オンにすると、ANTLRエラーが発生し、出力フォルダーにJavaファイルが生成されなくなります。
    • [OK]をクリックして、[設定]ウィンドウを閉じます。
  5. 新しいJavaプロジェクトを作成し、ANTLRサポートを有効にします。
    • Eclipseのメインウィンドウから、[ファイル]、[新規]、[Javaプロジェクト]に移動します。[次へ]をクリックし、プロジェクト名を入力して、[完了]をクリックします。
    • プロジェクトのANTLRサポートを有効にするには、[パッケージエクスプローラー]ウィンドウ(左側のペイン)で、作成したばかりのプロジェクトを右クリックし、[構成]、[ANTLRプロジェクトに変換]を選択します。
    • ANTLR完全なjarファイルをプロジェクトに追加します。プロジェクトを右クリックして[プロパティ]、[Javaビルドパス]の順に選択し、[外部JARの追加...]をクリックして、ANTLR jarファイルを参照して選択し、[OK]をクリックします。[OK]をクリックして、プロジェクトの[プロパティ]ウィンドウを閉じます。
  6. ANTLR文法を作成します。
    • 新しいANTLR文法を作成します。プロジェクトのsrcフォルダーを右クリックし、[ファイル]、[新規]、[その他]の順にクリックし、[ANTLR]を展開して、[結合文法]を選択します。[次へ]をクリックし、文法名を入力して[言語]オプションを選択し、[完了]をクリックします。
    • 「.g」ファイルは、選択されたオプションと空白のルールで作成されます。オプションlanguage=Java、@ header、@ lexer :: header、および@membersステートメントを上部に追加します(例を参照)。オートコンプリートは、これらを追加する最も簡単な方法です(CTRL-スペースを押してオートコンプリートリストを表示します)。
  7. 文法を保存します。
    • 保存すると、文法用に生成されたJavaコードを含むフォルダーがプロジェクトエクスプローラーに表示されます。そうでない場合は、BuildingウィンドウのGeneralの下にあるANTLR Preferencesで–nfaまたは–dfaオプションがチェックされていないことを確認してください(ステップ4g)。[これらが必要かどうかを確認します。CLASSPATH環境変数がEclipseインストール(32ビットまたは64ビット)と一致するJava7を指し、Windowsパス環境変数にJava7SDKが含まれていることを確認します。]
    • 「タイプに解決できない」Javaエラーを回避するには、生成されたJavaコードを含むフォルダーを右クリックし、[パスの作成]、[ソースフォルダーとして使用]の順にクリックします。

サンプルの組み合わせ文法

grammar test; //must match filename.g

options {
    language = Java;
}

@header { //parser
    package pkgName; //optional
    import java.<whatever you need>.*;
}

@members { //parser
    // java code here
}

@lexer::header { //lexer
    package pkgName; //optional
    import java.<whatever you need>.*;
}

@lexer::members {
    // java code here
}
/*------------------------------------------------------------------
 * PARSER RULES (convention is all lowercase)
 *------------------------------------------------------------------*/
parserule: LEXRULE;

/*------------------------------------------------------------------
 * LEXER RULES (convention is all uppercase)
 *------------------------------------------------------------------*/
LEXRULE: 'a'..'z';
于 2012-06-04T19:59:18.020 に答える