0

JavaCC では、たとえば stateDEFAULTで状態切り替えを実行したい、次のトークンが の場合は stateに切り替えたい、そうでない場合は state に切り替え<A>たい。STATE_ASTATE_B

次のコードのようなものを""ワイルドカードとして使用しようとしました:

TOKEN:
{
  <A: "aa"> : STATE_A
| <NOT_A: ""> : STATE_B
}

しかし、それは機能しません。還元できない文字にA遭遇すると、関数はすぐに戻り、 に切り替えられないためSTATE_B""仕事をすることができないようです.

何か提案はありますか?ありがとう。

4

1 に答える 1

0

さて、これは実際に機能することがわかりました。A一致できない場合は空の文字列が一致しますが、非終端記号NOT_Aの定義で明示的に参照する必要があります。したがって、次のような表現

[ <A> ]

次のように書き直す必要があります

( <A> | <NOT_A> )

状態の切り替えを強制します。

于 2011-08-10T07:00:26.883 に答える