在JavaCC中,例如在状态DEFAULT
中,我想执行状态切换,如果下一个令牌是<A>
,我想切换到状态STATE_A
,否则,我想要切换到州STATE_B
。
我尝试使用以下代码与""
作为通配符:
TOKEN:
{
<A: "aa"> : STATE_A
| <NOT_A: ""> : STATE_B
}
但它不起作用,当一个无法缩小到A
的字符时,该函数立即返回,并且不会切换到STATE_B
,因此""
似乎无法完成这项工作。
你有什么建议吗?感谢。
答案 0 :(得分:0)
我发现这实际上有效。
当A
无法匹配时,将匹配空字符串,但是我们需要在非终端的定义中明确引用NOT_A
。因此表达式如
[ <A> ]
应改写为
( <A> | <NOT_A> )
强制执行状态切换。