3

なぜこの単純な文法

grammar Test;

expr
    :    Int | expr '+' expr;

Int
:    [0-9]+;

入力と一致しません1+1か? 「ルール式のメソッドがないか、引数があります」と表示されますが、私の意見では一致するはずです。

4

2 に答える 2

1

コマンドが次のようになっている場合:

grun MYGRAMMAR xxx -tokens

そして、この例外がスローされます:

No method for rule xxx or it has arguments

次に、この例外は、上記のコマンドで指定したルールでスローされます。これは、ルールがおそらく存在しないことを意味します。

System.err.println("No method for rule "+startRuleName+" or it has arguments");

したがってstartRuleName、ここではxxx、文法の最初の (開始) ルールでない場合に出力する必要があります。xxxこれを防ぐために、文法の最初のルールとして入れてください。

于 2015-01-04T06:50:01.300 に答える