gpt4 book ai didi

JavaCC - 匹配除其他一些单词之外的一些单词

转载 作者:太空宇宙 更新时间:2023-11-04 13:43:25 32 4
gpt4 key购买 nike

我正在尝试使用 javacc 创建一阶逻辑解析器,但遇到以下问题。

我有这个:

<变量:<下>(<内>)* >

哪里

<#内部:
( <上>
| <下>
| <数字>
| <下划线> ) >

<#DIGIT:[“0”-“9”]>
<#LOWER:[“a”-“z”]>
<#UPPER:[“A”-“Z”]>
<#UNDERSCORE:“_”>

,但我想从中排除一些词。特别是我想排除单词 sum、count、avg、max 和 min。有办法做到这一点吗?换句话说,我希望变量以小写字母开头,后跟任意数量的内部标记,其中内部标记可以是大写字母、小写字母、数字或下划线。但是,我不希望变量采用 sum、count、avg、max 和 min 等值。

最佳答案

由于 JavaCC 选择第一个与最长字符串匹配的正则表达式,因此您所需要做的就是将保留字的规则放在前面。例如

TOKEN : {
<SUM : "sum">
| <COUNT: "count">
| <AVG: "avg" >
| <MIN: "min">
| <MAX: "max" >
/* The next rule must come after the ones above. */
| < VARIABLE : < LOWER > (< INNER >)* >
}

片段规则(#INNER、#LOWER 等)的放置并不重要。

关于JavaCC - 匹配除其他一些单词之外的一些单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31079753/

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