2013-11-28 2 views
0

나는 문법을 만들 수 ANTLR을 사용하여이 있지만,이 오류를오류 (211) : [치명적인] 규칙 조건이 아닌 LL (*)

error(211): [fatal] rule conditions has non-LL(*) decision due to recursive rule invocations reachable from alts 1,2. Resolve by left-factoring or using syntactic predicates or using backtrack=true option. 

내 문법 규칙 얻을 :

conditions 
    : '(' conditions ')' 
    |  condition (C_BINARY_OPERATOR conditions)? 
    ; 
condition 
    : expression C_CONDITIONAL_OPERATOR expression 
    ; 

expression 
    : (term) (('+'|'-') term)* 
    ; 

term 
    : (factor) (('*' | '/') factor)* 
    ; 

factor 
    : C_ID 
    | C_NUMBERS 
    | '(' expression ')' 
    ; 

// Binary Operators for Logical Calculation 
C_BINARY_OPERATOR 
    : '&&' 
    | '||' 
    ; 

// Conditonal Operators 
C_CONDITIONAL_OPERATOR 
    : '>' 
    | '<' 
    | '==' 
    | '!=' 
    | '=<' 
    | '=>' 
    ; 

어떻게이 오류를 해결할 수 있습니까?

답변

1

음, 오류는 "왼쪽 인수 분해 또는 구문 술어 사용 또는 역 추적 사용 = true 옵션"으로 오류가 발생합니다. 그게 혼란 스럽습니까?

1

ANTLR 웹 사이트의 page을 참조하십시오. 여기에는 오류를 수정하는 방법에 대한 정보가 있습니다.