У меня проблема с определением функции в моей грамматике 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, а декларатор — с 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 ')' )*
Но это мало помогает.
Что касается умножения, то я не знаю, как обойтись без конфликта. есть ли способ исправить это, пожалуйста?