Antlr3を使用してネストされたリストを解析するための次の文法があります
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] ルール list_element には、alts 1、2 から到達可能な再帰ルール呼び出しのため、非 LL(*) 決定があります。左因数分解するか、構文述語を使用するか、backtrack=true オプションを使用して解決します。|---> list_element: '
list
と の間の再帰的な関係と関係があることは認識していますがlist_element
、tree_
問題を解決できません。
誰でも助けることができますか?