1

次の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   

ここで左再帰を削除する最良の方法を誰かが提案できますか?

4

1 に答える 1