Имам проблем с дефиницията на функцията в моята 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
;
declaration_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 ')' )*
Но това не помага много.
Що се отнася до умножението, не знам как да го направя, без да предизвикам конфликт. има ли начин да се поправи това, моля?