2014-02-25 4 views
3

나는 문법을 컴파일하고 ANTLR4에서 작동 얻기 위해 노력하고있어. 문법은 ANTLR3 용으로 작성되었으며 많은 컴파일 오류가 발생합니다. 다음은 그 중 하나입니다ANTLR3에서 -> 연산자의 의미는 무엇입니까?

syntax error: '->' came as a complete surprise to me while looking for rule element 

이 내가 -> 운영자가 ANTLR4에 렉서 명령을 지정하는 데 사용할 수 있습니다 알고있는 오류

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"] 
    ; 

을 일으키는 원인이되는 규칙입니다. 하지만 ANTLR3에서 연산자는 무엇을 의미합니까? 파서 규칙 내부

답변

4

-> 파서 규칙에서 AST를 구성 ANTLR 3 재기록 룰이다. ANTLR 4 How to output the AST built using ANTLR?

상기 -> 만 다른 채널에서 특정 토큰을 넣어 (또는 토큰 스트림에서 모두 함께 이동)하는 렉서 규칙에 사용되는이 Q & A의 이에 대한 자세한. ANTLR 4 does not work with AST's 이후 ->는 더 이상 해당이 없습니다. V4 문법에 ANTLR v3의 문법을 번역 할 때, 단순히 그것의 오른쪽에있는 -> 모든 것을 제거합니다.

관련 문제