Diseño compilador para C

jantonio001
03 de Enero del 2005
Estoy diseñando un compilador para una version de C reducida para la universidad. Actualmente estoy diseñando el analizador sintactico ascendente y me han surgido dos conflictos que no consigo eliminar. A continuacion pongo la parte de la gramatica afectada por si alguien me puede ayudar.

lista_sentencias ::= sentencia | lista_sentencias sentencia


sentencia ::= sentencia_switch | sentencia_if | sentencia_asignacion | sentencia_e_s

sentencia_if ::= RESERVA_IF DELIM_PARENT_IZQUI expresion_or DELIM_PARENT_DEREC cuerpo_if_else parte_else


parte_else ::= RESERVA_ELSE cuerpo_if_else | clausula_vacia

cuerpo_if_else ::= sentencia | sentencia_compuesta

sentencia_compuesta ::= DELIM_LLAVE_IZQUI lista_declaraciones DELIM_LLAVE_DEREC
| DELIM_LLAVE_IZQUI lista_sentencias DELIM_LLAVE_DEREC
| DELIM_LLAVE_IZQUI lista_declaraciones lista_sentencias DELIM_LLAVE_DEREC

Aqui el conflicto que me da es el siguiente:

Shift/Reduce conflict found in state #153 between clausula_vacia and parte_else under symbol RESERVA_ELSE

La gramatica afectada por el segundo conflicto es:

expresion_unaria ::= IDENTIFICADOR
| NUMERO
| llamada_funcion
| IDENTIFICADOR operador_unario
| DELIM_PARENT_IZQUI expresion_or DELIM_PARENT_DEREC operador_unario
| DELIM_PARENT_IZQUI expresion_or DELIM_PARENT_DEREC
| OP_NOT expresion_or

llamada_funcion ::= IDENTIFICADOR DELIM_PARENT_IZQUI parametro DELIM_PARENT_DEREC

y el conflicto que me da es el siguiente:

Shift/Reduce conflict found in state #68 between expresion_unaria and llamada_funcion under symbol DELIM_PARENT_IZQUI

angelucha84
03 de Enero del 2005
cREO K ESTAMOS IGUALES SI ENCUENTRAS LA SOLUCION TE ENCARGO K ME LA MANDES PERO SI YO LO TERMINO PRIMERO TE LO MANDO VALE?