这个警告意味着什么? 我该如何解决?
以下是我所指的代码
expression : expression operator=DIV expression
| expression operator=MUL expression
| expression operator=ADD expression
| expression operator=SUB expression
| INT
| FLOAT
| BOOLEAN
| NULL
| ID
;
答案 0 :(得分:12)
在某些情况下,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
)
;