質問
最近、ANTLR3パーサールールを作成しました
options : foo bar;
これはコンパイルされず、 options
が予約語であることを発見するのに時間がかかりました(AntlrWorksはエラーを示しましたが、理由は示していません)。 ANTLRに予約語のリストはありますか?また、命名規則にベストプラクティスがありますか?
解決
ANTLR v3の予約語は次のとおりです。
Keyword | Description ---------+-------------------------------------------------------- scope | Dynamically-scoped attribute fragment | lexer rule is a helper rule, not real token for parser lexer | grammar type tree | grammar type parser | grammar type grammar | grammar header returns | rule return value(s) throws | rule throws exception(s) catch | catch rule exceptions finally | do this no matter what options | grammar or rule options tokens | can add tokens with this; usually imaginary tokens import | import grammar(s)
参照: https://web.archive.org/web/20120314155217/http://www.antlr.org/wiki/display/ANTLR3/ANTLR+Cheat+Sheet (ページの最後)
「命名規則」がわからないw.r.t.パーサールール(小文字で開始する必要がある以外は、もちろん慣習ではありません...)。
他のヒント
ターゲット言語の予約語を使用しても問題が発生する可能性があります。
「enum」が台無しになっていることに気づいただけで、なぜ文法が機能しないのかを理解しようとして1日を費やしました。私の文法では、「enum」という名前を付けていました。
これは、ターゲット言語が何であるかによって、問題になる場合とそうでない場合があります。私はデフォルトのJavaターゲットを使用していましたが、確かにそうでした。その場合は、ターゲット言語の予約キーワードのリストも確認する必要があります。
所属していません StackOverflow