次のantlr文法行のセットは、以下に示すようにnumber_operationとnumber_argumentのエラーを表示します
次の一連のルールは相互に左再帰的です
number_funtion : COUNT LEFT_PAREN number_argument RIGHT_PAREN
number_operation :
number_argument (number_operator number_argument)+ | LEFT_PAREN number_argument (number_operator number_argument)+ RIGHT_PAREN
| prefix_operator number_argument | LEFT_PAREN prefix_operator number_argument RIGHT_PAREN;
number_argument : number_column | number_function | digit_constant | number_operation ;
左再帰を回避するために、以下のように number_argument のすべての要素のすべての可能な組み合わせで number_operation を変更できますが、ルールが長くなります。
number_operation :
number_column (number_operator number_argument)+ | LEFT_PAREN number_column (number_operator number_column)+ RIGHT_PAREN
| prefix_operator number_column | LEFT_PAREN prefix_operator number_column RIGHT_PAREN
//and other combinations
ここで左再帰を削除する最良の方法を誰かが提案できますか?