Considere la siguiente gramática:
S → FR R → S | ε F → id
En la tabla del analizador predictivo, M, de la gramática, las entradas M[S, id] y M[R, $] respectivamente.
(A) {S → FR} y {R → ε }
(B) {S → FR} y { }
(C) {S → FR} y {R → *S}
(D) {F → id} y { R → ε}
Respuesta: (A)
Explicación: aquí se representa la tabla de análisis como M[ X , Y ], donde X representa filas (no terminales) e Y representa columnas (terminales).
Estas son las reglas para llenar la tabla de análisis.
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 pedido entradas correspondientes a S y R no terminales, solo necesitamos considerar sus producciones para obtener la respuesta.
Para S → FR , de acuerdo con la regla 1, esta regla de producción debe colocarse en la entrada M[ S, FIRST(FR) ], y de la gramática dada, FIRST(FR) ={id}, M[S , id ] .
Similarmente,
Para R → S, esta regla de producción debe colocarse en la entrada M[ R, PRIMERO(S) ], y como PRIMERO(S) = PRIMERO(F) = {id}, por lo tanto, R->S se coloca en la entrada M[ Librar]
y
, 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[R,FOLLOW(R)], y FOLLOW(R) = FOLLOW( S) = {$}, M[ R, $].
Por lo tanto, la respuesta es la opción A.
http://geeksquiz.com/compiler-design-first-in-syntax-analysis/
http://geeksquiz.com/compiler-design-follow-set-in-syntax-analysis/
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