ANTLR3 中的 -> 运算符是什么意思?



我正在尝试编译语法并使其在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"]
  | 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 中指定词法分析器命令。但是ANTLR3中的运算符是什么意思?

在解析器规则中,->表示 ANTLR 3 中的重写规则,该规则从解析器规则构造 AST。在此问答中对此的更多信息:如何输出使用ANTLR构建的AST?

在 ANTLR 4 中,->仅用于词法分析器规则中将某些令牌放在不同的通道上(或从令牌流中一起跳过它们)。由于ANTLR 4不适用于AST的,因此->不再具有等价物。将 ANTLR v3 语法转换为 v4 语法时,只需删除->及其右侧的所有内容即可。

相关内容

  • 没有找到相关文章

最新更新