0

JAVACC を使用して、bnf 文法で定義された文字列を初期非終端 G で解析します。TokenMgrError によってスローされたエラーをキャッチしたいと考えています。特に、次の 2 つのケースを処理したいと考えています。

  1. 入力の一部のプレフィックスが G を満たすが、すべてのシンボルが入力から読み取られるわけではない場合、このケースを正常と見なし、G() の呼び出しによって見つかったプレフィックスの AST を返します。
  2. 入力に ​​G を満たすプレフィックスがない場合は、G() から null を返します。

現在、代わりにこのケースのそれぞれで TokenMgrError を取得しています。生成されたファイルの変更 (つまり、Error を Exception に変更し、適切な try/catch/throws ステートメントを追加する) を開始しましたが、面倒であることがわかりました。さらに、JAACC によって生成された変更済みファイルの自動生成は機能しません。これを達成するためのよりスマートな方法はありますか?

4

1 に答える 1

1

含めることで、すべての TokenMgrErrors をいつでも排除できます。

<*> TOKEN : { <UNEXPECTED: ~[] > }

最終ルールとして。これにより、すべての問題が文法レベルに押し上げられ、通常はより簡単に対処できるようになります。

于 2013-07-26T16:18:16.853 に答える