为什么会出现令牌管理器异常

时间:2014-01-31 06:07:43

标签: parsing javacc

我在JavaCC解析器中使用Lexical状态在与Token A1匹配后从一个状态切换到另一个状态。

< DEFAULT > TOKEN :
{
    <A1 : "Hello"> : STATE2
    | <A2 : "World">
}

< STATE2 > TOKEN :
{
    <B1: "World"> : DEFAULT
}

当我尝试解析Hello Wolrd时,它会抛出令牌管理器错误。

1 个答案:

答案 0 :(得分:0)

因为在STATE2中没有规则匹配" Wolrd"的任何前缀。如果您的意思是"Hello World",那是因为STATE2中没有规则可以匹配" World"的任何前缀。

如果要忽略空格,请添加规则

<DEFAULT, STATE2> SKIP : { " " }