2014-01-31 64 views
0

我使用JavaCC分析器中的詞法狀態從一個狀態切換到另一個狀態,然後它與令牌A1匹配。爲什麼這給了令牌管理器異常

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

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

當我嘗試解析Hello Wolrd時,它會拋出令牌管理器錯誤。

回答

0

因爲在STATE2中沒有規則匹配任何前綴" Wolrd"。如果你的意思是"Hello World",這是因爲STATE2中沒有規則匹配任何前綴" World"

如果要忽略空格,添加一條規則

<DEFAULT, STATE2> SKIP : { " " } 
+0

謝謝你,@Theodore。你是對的我錯過了DEFAULT和STATE2的上述規則。 –