gpt4 book ai didi

java - 解决 JavaCC token 歧义

转载 作者:行者123 更新时间:2023-12-01 13:03:24 25 4
gpt4 key购买 nike

我正在尝试使用 JavaCC 解析正则表达式,但遇到了整数问题。问题是,有时,在某些产品中,我想将一组数字解释为每个字符,但是,在 (ab){1,20} 之类的东西上,我想将大括号内的数字解释为整数。问题是 JavaCC 正在选择列表中匹配的第一个标记,无论该标记是否在生产中是预期的。

我有一个 token DIGIT 和一个 token INTEGER 定义为一个或多个数字。如果我优先考虑 DIGIT,它永远不会选择 INTEGER,如果我优先考虑 INTEGER,在我想要一一解释数字的作品中,它会选择 INTEGER。

我还尝试在期望整数的产生式中定义类似 (< DIGIT >)+ 的内容,但我不知道如何将其分配给 token 。有没有办法将整个序列分配给单个标记,或者至少将每个数字附加到一个标记的图像或存储一组标记?

最佳答案

如果您希望数字有时被解释为单个标记,有时被解释为整数,则需要使用词汇状态。请参阅文档和常见问题解答。您可以在 { 上切换状态,然后在 } 上切换回来。像这样的事情

<DEFAULT> TOKEN : {
<DIGIT : ["0"-"9"]>
}
<INBRACES> TOKEN : {
<NUMBER : (["0"-"9"])+ >
}
<*> TOKEN {
<LBRACE : "{" > : INBRACES
|
<RBRACE : "}" > : DEFAULT
|
...other rules apply in all states...
}

关于java - 解决 JavaCC token 歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23384013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com