ここで見つけることができるC文法の関数定義に問題がありますhttp://www.archive-host.com/files/1959635/24fe084677d7655eb57ba66e1864081450017dd9/cAST.txt、正しく定義されておらず、乗算できませんそれを何かで。入力しようとしているコードは次のとおりです。
int factorielle(int n)
{ int x;
if ( n == 0)
return 1;
else return n*factorielle(n-1);
}
関数定義は次のとおりです。
function_definition
: declaration_specifiers declarator compound_statement
| declarator compound_statement
;
definition_specifiers は int にリンクされ、declarator は factorielle(int n) にリンクされている必要があります。これを行うには、これを置き換えました。
direct_declarator
: ID ((direct_declarator '[' ']') | (direct_declarator '(' parameter_type_list ')') | (direct_declarator '(' identifier_list ')') | (direct_declarator '(' ')') )*
と
direct_declarator
: ID ((direct_declarator '[' ']') | (direct_declarator '(' parameter_type_list ')') | (direct_declarator '(' identifier_list ')') | (direct_declarator '(' ')') | '(' parameter_type_list ')' )*
しかし、それはあまり役に立ちません。
乗算に関しては、競合を起こさずに行う方法がわかりません。これを修正する方法はありますか?