gpt4 book ai didi

grammar - 将终端分组

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

Group terminals into sets

这个警告是什么意思?我该如何解决?

这是我引用的代码

expression : expression operator=DIV expression
| expression operator=MUL expression
| expression operator=ADD expression
| expression operator=SUB expression
| INT
| FLOAT
| BOOLEAN
| NULL
| ID
;

最佳答案

ANTLR 4 解析器生成器可以在某些情况下组合转换组以形成单个“设置转换”,从而减少静态和动态内存开销并提高运行时性能。仅当 block 的所有替代项都包含单个元素或集合时,才会发生这种情况。例如,以下代码允许将 INTFLOAT 组合成单个转换:

// example 1
number
: INT
| FLOAT
;

// example 2, elements grouped into a set
primary
: '(' expression ')'
| (INT | FLOAT)
;

但是,在以下情况下,编译器无法组合元素,因此它们将被单独处理:

primary
: '(' expression ')'
| INT
| FLOAT
;

该提示建议简单添加 ( ... ) 就足以让编译器折叠一个原本不会折叠的集合的位置能够。将您的代码更改为以下内容可以解决该警告。

expression
: expression operator=DIV expression
| expression operator=MUL expression
| expression operator=ADD expression
| expression operator=SUB expression
| ( INT
| FLOAT
| BOOLEAN
| NULL
| ID
)
;

关于grammar - 将终端分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16232795/

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