什么是->;ANTLR3中的运算符平均值?
我正在尝试编译一个语法,并让它在ANTLR4中工作。语法是为ANTLR3编写的,我得到了很多编译错误。以下是其中之一:什么是->;ANTLR3中的运算符平均值?,antlr,antlr3,antlr4,Antlr,Antlr3,Antlr4,我正在尝试编译一个语法,并让它在ANTLR4中工作。语法是为ANTLR3编写的,我得到了很多编译错误。以下是其中之一: syntax error: '->' came as a complete surprise to me while looking for rule element 这是导致错误的规则 tokens { ZONE; ZONE_OFFSET; } time_zone_abbreviation : UTC -> ZONE["UTC"] | ES
syntax error: '->' came as a complete surprise to me while looking for rule element
这是导致错误的规则
tokens {
ZONE;
ZONE_OFFSET;
}
time_zone_abbreviation
: UTC -> ZONE["UTC"]
| EST -> ZONE["America/New_York"]
| CST -> ZONE["America/Chicago"]
| PST -> ZONE["America/Los_Angeles"]
| MST -> ZONE["America/Denver"]
| AKST -> ZONE["America/Anchorage"]
| HAST -> ZONE["Pacific/Honolulu"]
;
我知道
->
操作符可用于在ANTLR4中指定lexer命令。但是在ANTLR3中,运算符是什么意思?在解析器规则中,->
表示ANTLR3中的重写规则,该规则根据解析器规则构造AST。更多关于此问题的信息,请参见本问答:
在ANTLR 4中,->
仅在lexer规则中用于将某些令牌放在不同的通道上(或从令牌流中将它们一起跳过)。因为,->
不再具有等效项。将ANTLR v3语法转换为v4语法时,只需删除->
及其右侧的所有内容