最近、ANTLR3パーサールールを作成しました
options : foo bar;
これはコンパイルされずoptions
、予約語であることがわかるまでに時間がかかりました(AntlrWorksはエラーを示しましたが、理由は示していません)。ANTLRに予約語のリストがあり、命名規則のベストプラクティスがありますか(これはこれを回避するのに役立つ可能性があります)?
最近、ANTLR3パーサールールを作成しました
options : foo bar;
これはコンパイルされずoptions
、予約語であることがわかるまでに時間がかかりました(AntlrWorksはエラーを示しましたが、理由は示していません)。ANTLRに予約語のリストがあり、命名規則のベストプラクティスがありますか(これはこれを回避するのに役立つ可能性があります)?
ANTLRv3の予約語は次のとおりです。
キーワード| 説明 --------- + ---------------------------------------- -------------------------------- スコープ| 動的スコープ属性 フラグメント| レクサールールはヘルパールールであり、パーサーの実際のトークンではありません レクサー| 文法タイプ ツリー| 文法タイプ パーサー| 文法タイプ 文法| 文法ヘッダー 返品| ルールの戻り値 スロー| ルールは例外をスローします キャッチ| ルールの例外をキャッチ ついに| 何があってもこれを行う オプション| 文法またはルールのオプション トークン| これでトークンを追加できます。通常は架空のトークン インポート| 文法をインポートする
参照:https ://web.archive.org/web/20120314155217/http://www.antlr.org/wiki/display/ANTLR3/ANTLR+Cheat+Sheet (ページの最後)
パーサールールの「命名規則」を知らない(もちろん、小文字で始める必要がありますが、これは慣例ではありません...)。
ターゲット言語の予約語を使用することも問題を引き起こす可能性があります。
私は、「列挙型」と名付けた文法の「列挙型」ルールによって混乱していることに気付くためだけに文法が機能しない理由を理解しようと1日を費やしました。
これは、ターゲット言語が何であるかによって、問題になる場合とそうでない場合があります。私はデフォルトのJavaターゲットを使用していましたが、確かにそうでした。その場合は、ターゲット言語の予約キーワードのリストも確認する必要があります。