Considere la gramática que se muestra a continuación
S → i E t S S' | a S' → e S | ε E → b
En la tabla de análisis predictivo. M, de esta gramática, las entradas M[S’, e] y M[S’, $] respectivamente son
(A) {S’ → e S} y {S’ → e}
(B) {S’ → e S} y {}
(C) {S’ → ε} y {S’ → ε}
(D) {S’ → e S, S’→ ε} y {S’ → ε}
Respuesta: (D)
Explicación: Aquí representamos la tabla de análisis como M[ X , Y ], donde X representa filas (no terminales) e Y representa columnas (terminales).
Para cada regla de producción distinta A->α, de la gramática, necesitamos aplicar las reglas dadas:
Regla 1 : si A –> α es una producción, para cada terminal ‘a’ en FIRST(α), agregue A–>α a M[ A , a ]
Regla 2 : si ‘ ε ‘ está en PRIMERO (α), agregue A –> α a M [ A , b ] para cada ‘b’ en SEGUIR (A).
Como se han solicitado Entradas correspondientes a No-Terminal S’, solo necesitamos considerar sus producciones para obtener la respuesta.
Para S’ → eS , de acuerdo con la regla 1, esta regla de producción debe colocarse en la entrada M[ S’, FIRST(eS) ], y de la gramática dada, FIRST(eS) ={e}, por lo tanto S’- >eS se coloca en la tabla de análisis en la entrada M[S’, e].
Similarmente,
Para S’->ε , como FIRST(ε) = {ε}, por lo tanto, se debe aplicar la regla 2, por lo tanto, esta regla de producción debe colocarse en la tabla de análisis en la entrada M[S’,FOLLOW(S’)], y SEGUIR(S’) = SEGUIR(S) = { e, $}, por lo que R->ε se coloca en la entrada M[ S’, e ] y M[ S’ , $].
Por lo tanto, la respuesta es la opción D.
http://geeksquiz.com/compiler-design-first-in-syntax-analysis/
http://geeksquiz.com/compiler-design-follow-set-in-syntax-analysis/
Prueba de esta pregunta
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA