0

在JavaCC中,例如在 state 中DEFAULT,我要进行状态切换,如果下一个标记是<A>,我要切换到 state STATE_A,否则我要切换到 state STATE_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 回答