解决JavaCC令牌歧义
我试图用JavaCC解析正则表达式,但遇到了整数的问题。问题是,有时,在某些产品中,我想将一组数字解释为每个字符,然而,在(ab){1,20}之类的东西上,我想将大括号内的数字解释为整数。问题在于JavaCC正在选择列表中匹配的第一个令牌,而不管该令牌是否会出现在产品中 我有一个令牌数字和一个令牌整数,定义为一个或多个数字。如果我对数字进行优先级排序,它将永远不会选择整数;如果我对整数进行优先级排序,在我想要逐个解释数字的产品中,它将选择整数解决JavaCC令牌歧义,java,regex,parsing,token,javacc,Java,Regex,Parsing,Token,Javacc,我试图用JavaCC解析正则表达式,但遇到了整数的问题。问题是,有时,在某些产品中,我想将一组数字解释为每个字符,然而,在(ab){1,20}之类的东西上,我想将大括号内的数字解释为整数。问题在于JavaCC正在选择列表中匹配的第一个令牌,而不管该令牌是否会出现在产品中 我有一个令牌数字和一个令牌整数,定义为一个或多个数字。如果我对数字进行优先级排序,它将永远不会选择整数;如果我对整数进行优先级排序,在我想要逐个解释数字的产品中,它将选择整数 我还尝试在产品中定义()+之类的东西,希望得到一个整
我还尝试在产品中定义(
{
上的状态,然后再切换}
上的状态。像这样的
<DEFAULT> TOKEN : {
<DIGIT : ["0"-"9"]>
}
<INBRACES> TOKEN : {
<NUMBER : (["0"-"9"])+ >
}
<*> TOKEN {
<LBRACE : "{" > : INBRACES
|
<RBRACE : "}" > : DEFAULT
|
...other rules apply in all states...
}
令牌:{
}
代币:{
}
代币{
:种内
|
:默认值
|
…其他规则适用于所有州。。。
}