Привет, я использую bison для школьного проекта, но у меня проблема: у меня есть следующие правила:
callsubrotina : callfunction | callprocedure;
callprocedure:
T_IDENTIFICADOR
{identifier_check( GOTO, $1, TIPO_PROCEDIMENTO );}
| T_IDENTIFICADOR T_PARENTESE_E listaexpressoes T_PARENTESE_D
{identifier_check( GOTO, $1, TIPO_PROCEDIMENTO );}
;
callfunction:
T_IDENTIFICADOR
{identifier_check( LD_VAR, $1, TIPO_FUNCAO );}
| T_IDENTIFICADOR T_PARENTESE_E listaexpressoes T_PARENTESE_D
{identifier_check( LD_VAR, $1, TIPO_FUNCAO );} ;
Проблема в том, что bison всегда переходит к «процедуре вызова», даже если это вызывает ошибку. Как я могу заставить его проверить оба правила? Или как я могу создать правило для правильного лечения?
PS: Извините за плохой английский.