質問

文法をまとめて、AntLR4で機能します。文法はAntLR3のために書かれていました、そして私は多くのコンパイルエラーを得ています。これはそれらのうちの1つです:

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で意味するのですか?

役に立ちましたか?

解決

内部パーサールール、->は、パーサールールからASTを構築するANTLR 3の書き換え規則を表します。このQ&Aの詳細: ASTLRを使用して構築されていますか?

Antlr 4では、->は、異なるチャネルに特定のトークンを配置するためのレクサルールでのみ使用されます(またはトークンストリームからそれらすべてをすべてスキップ)。 Antlr 4は、-> Noでは動作しません。より長いものが同じです。ANTLR V3文法をV4文法に翻訳するときは、->を削除するだけで、その右側にあるすべてのものです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top