我在JavaCC解析器中使用Lexical状态在与Token A1匹配后从一个状态切换到另一个状态。
< DEFAULT > TOKEN :
{
<A1 : "Hello"> : STATE2
| <A2 : "World">
}
< STATE2 > TOKEN :
{
<B1: "World"> : DEFAULT
}
当我尝试解析Hello Wolrd时,它会抛出令牌管理器错误。
答案 0 :(得分:0)
因为在STATE2中没有规则匹配" Wolrd"
的任何前缀。如果您的意思是"Hello World"
,那是因为STATE2中没有规则可以匹配" World"
的任何前缀。
如果要忽略空格,请添加规则
<DEFAULT, STATE2> SKIP : { " " }