2012-05-01 1 views
2
내가 문제 트리 문법 파서 문법에서 움직이는 데

문제가 온다 문법, 나무 문법은 어떻게 생겼을까요? 이것은 재귀 적이 지 않으므로 트리 문법에서이 규칙을 하나의 규칙으로 축소 할 수는 없습니다.ANTLR 트리 문법

강제로 재 작성 구문

condition_or 
    : condition_and -> condition_and 
    ('or' x=condition_and -> ^('or' condition_or $x))* 
    ; 

이 작업을 수행 할 수있는 간단한 방법이 있나요를 사용하여 파서 문법을 다시 할 수있는 다른 대안?

감사

해당 트리 문법과 같을 것이다

답변

2

는 :

where_clause 
    : condition_or 
    ; 

condition_or 
    : ^('or' condition_and condition_and) 
    ; 

condition_and 
    : ^('and' condition_expr condition_expr) 
    ; 

condition_expr 
    : condition_comparision 
    ; 

condition_comparision 
    : ^('=' column_identifier sql_element) 
    | ^('!=' column_identifier sql_element) 
    | ^('>' column_identifier sql_element) 
    | ^('<' column_identifier sql_element) 
    ; 
+0

당신은 너무 쉽게 보이게. 다시 한번 감사드립니다. –