AntLR3では、演算子がどういう意味ですか?
質問
文法をまとめて、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文法に翻訳するときは、->
を削除するだけで、その右側にあるすべてのものです。
所属していません StackOverflow