3

JavaCCパーサーのtoken<NULL:"null">に奇妙な問題があります。のような表現で

String IsNullClause():
{
      String res = "";
}
{
     <IS> {res += " IS ";}
     [<NOT> {res += " NOT ";} ]
     <NULL> {res += " NULL ";}

{
    return res;
}
}

パーサーはNULLトークンを認識せず、「null」が予期される例外をスローします。トークンの定義を<NULL: "null_val">などに変更すると、正常に機能します。これは私の間違いですか、それともJavaCCはトークン値として「null」を受け入れませんか?

4

1 に答える 1

3

JavaCC パッケージには、次のトークン定義を持つサンプル Java 言語文法があります。

< NULL: "null" >

したがって、JavaCCがnullトークンを処理できると確信しています。

NULL が「null」に一致する前にトークンが宣言されていませんか? トークンは宣言順に照合されます。最初に NULL を宣言しようとするかもしれません。

于 2008-12-29T17:11:57.283 に答える