質問

最近、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ターゲットを使用していましたが、確かにそうでした。その場合は、ターゲット言語の予約キーワードのリストも確認する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top