此警告是什么意思?
我该如何解决?
这是我指的代码
expression : expression operator=DIV expression
| expression operator=MUL expression
| expression operator=ADD expression
| expression operator=SUB expression
| INT
| FLOAT
| BOOLEAN
| NULL
| ID
;
最佳答案
在某些情况下,ANTLR 4解析器生成器可以组合转换组以形成单个“设置转换”,从而减少了静态和动态内存开销,并提高了运行时性能。仅当块的所有替代都包含单个元素或集合时,才会发生这种情况。例如,以下代码允许将INT
和FLOAT
组合为一个过渡:
// 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
)
;