Pregunta

Soy nuevo en el tema de la compilación y acaba de comenzar un ejercicio para el análisis de fondo.

me he atascado en el siguiente problema.

Construir una tabla de análisis LR (0) para seguir la gramática:

1) E –> E + T
2) E –> T
3) T –> (E)
4) T –> id


I0 :

   E' –> .E
   E –> .E + T
   E –> .T
   T –> .(E)
   T –> .id

en E El siguiente estado en el DFA sería:

 I1:

    E' -> E.
    E  -> E. + T

De lo que he aprendido hasta ahora ¿No es este un conflicto S-R? porque el analizador no sabría si reducir o cambiar como ¿No tiene variable de apariencia? ¿Así que esto no debe ser LR (0) gramática?

Pero el PDF que estoy leyendo ha construido la tabla LR (0). Entonces, ¿hay un error en el PDF o si hubiera salido mal alguna donde entender el concepto?

¿Fue útil?

Solución

Este es, de hecho, un cambio / reducción de conflictos.Esta gramática no es LR (0).También puede ver esto porque no es libre de prefijo ;La gramática contiene múltiples cadenas que son prefijos entre sí, por lo que no puede ser LR (0).

Dicho esto, todavía puede construir todos los conjuntos de configuración de LR (0) y realizar el automatón LR (0).Simplemente no será determinista debido al cambio / reducir el conflicto.Es posible, por lo tanto, que tienes razón y el folleto tiene razón.

espero que esto ayude!

Otros consejos

Aumentó la gramática con E' -> E.Normalmente, aumentaría con una producción como E' -> E $, donde $ es un símbolo (terminal) que de otra manera no ocurre en la gramática, y denota el final de la entrada.

Entonces, I1 sería realmente


E' -> E. $
E  -> E. + T

y no hay un conflicto.(Y creo que la gramática es lr (0).)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top