0
我有以下的語法使用Antlr3解析與Antlr3嵌套列表,非LL(*)決定,由於遞歸調用規則
parse:
list
;
list:
LBRACK list_element* RBRACK
;
list_element:
tree_ | list
;
tree_:
node | ATOM
;
node:
LBRACK tree_ SEPARATOR tree_ RBRACK
;
ATOM: 'nil';
LBRACK: '(';
RBRACK: ')';
SEPARATOR: '.';
WS : (' ' | '\f' | '\r' | '\n' | '\t')+{$channel = HIDDEN;};
我找不出來分析嵌套列表是什麼原因造成或如何刪除錯誤:
'/ListParseTest/src/ListParse.g:17:13: [fatal] rule list_element 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. |---> list_element: '
我承認它是與list
,list_element
和tree_
之間的遞歸關係,但我不能夠解決這個問題。
任何人都可以幫忙嗎?