domingo, marzo 06, 2005

La Gramática ......

Quitando la ambiguedad de la gramática me encontre con un If que tenia una regla como esta:
statement:
IF_TOK PARENIZQ expression PARENDER statement else statement
| IF_TOK PARENIZQ expression PARENDER statement
;
que lo factorice como:
statement:
IF_TOK PARENIZQ expression PARENDER statement elseopcional
;
elseopcional:
else statement
|
;
pero al realizar este cambio me tira un warning que no es determinístico, aun no he logrado entender porque, sin embargo probe a quitar el lamnda y me quita el warning pero no me parece correcta esa eliminación.

Tengo problemas también para que me reconosca constantes enteras y tipos, si en el archivo meto algo como:
integer prueba ()
{
integer a;
while (a)
{
a=1+2;
}
}
dice que
- token integer inesperado linea 1, columna 1
- token int_constant inesperado linea 6,columna 7
no sé porque, ya derive la gramática a mano y tendria que aceptalo, pero me da error.