Netbeans javaCC中词法状态的切换

Netbeans javaCC中词法状态的切换,netbeans,javacc,Netbeans,Javacc,我正在尝试为自定义NetBeans插件创建一个javaCC解析器,它在两个代码块中的行为会有所不同,但我甚至无法识别两种状态。我不知道我做错了什么 <DEFAULT,STATE1> SKIP : { " " | "\t" | "\n" | "\r" } TOKEN : { < A1: "a"> : STATE1 } < STATE1 > TOKEN : { < B2: "b" > : DEFAULT } 跳过:{ "

我正在尝试为自定义NetBeans插件创建一个javaCC解析器,它在两个代码块中的行为会有所不同,但我甚至无法识别两种状态。我不知道我做错了什么

<DEFAULT,STATE1>
SKIP : {
  " " 
| "\t"
| "\n"   
| "\r"
}
TOKEN : {
  < A1: "a"> : STATE1  
}
< STATE1 > TOKEN : {
  < B2: "b" > : DEFAULT
} 

跳过:{
" " 
|“\t”
|“\n”
|“\r”
}
代币:{
:状态1
}
令牌:{
:默认值
} 
这个简单的解析器不解析字符串“abab..”。

对于“.”没有规则;因此,在解析“abab”之后,lexer被卡住了。这就是为什么错误消息会显示“第1行第5列的词法错误”。遇到:“.”(46),如果添加

| "."
根据第一条规则,它将起作用