Está en la página 1de 5

UNIVERSIDAD NACIONAL EXPERIMENTAL DEL TÁCHIRA

Segundo Examen Parcial de Compiladores e Intérpretes (70 puntos)

Apellidos y Nombres: _________________________________________________________________________________________

C.I. Nº: _____________________________________ Profesor: Luis Ochoa Fecha: 17/07/2022

Responda las siguientes preguntas de desarrollo. (70 puntos.)


1. A partir de la gramática siguiente calcular el conjunto de Primeros, Siguientes y el conjunto de predicción. ¿Es una gramática
LL(1)? (20 ptos.) LLEVELO A CABO DE FORMA ORDENADA EN UNA TABLA COMO SE MOSTRO EN CLASE (COLUMNAS: PRIMEROS
REGLA, PRIMEROS, SIGUIENTES, PREDICCION). Y debe hacer la tabla de predicción en la parte de atrás de la hoja.

Gramática Primeros Regla Primeros Siguientes Predicción


W’ -> W#
W -> T X Z
T -> m X k
T -> λ
X -> n W p
X -> f T j
X -> g Z h
X -> λ
Z -> i
Procedimiento
2. Elimine la recursividad por la izquierda de la siguiente gramática libre de contexto. (Tokens: +,* b) (7 ptos)
Regla Original Regla No Recursiva por la izquierda
X -> X inst | X var U | λ

U -> U ident T | U ident sep | int | float

T -> X fproc

3. Dada la siguiente tabla de análisis y la cadena acbaefbdcd# (símbolo inicial S), indique si la misma es aceptada o no por dicha
tabla de predicción (debe mostrar el procedimiento usado para llegar a dicha conclusión) (8 ptos)

Entrada Pila Acción


4. Obtener la colección canónica de elementos LR(0) y crear la tabla de análisis sintáctico ascendente SLR(1), usando la siguiente
gramática (20 ptos) completar en la hoja siguiente la tabla de acciones/estados (en pag 4. debe estar el procedimiento):

Exp’ → Exp # Siguientes(Exp)={ #,mas, menos, pder}


Expr → Expr mas Expr Siguientes(Factor)={#, mas, menos, pder}
Expr → Expr menos Expr
Factor → vector ¿Esta gramática puede llevar a cabo el análisis sintáctico ascendente mediante el
Factor → num prod Factor
algoritmo SLR(1) sin ambigüedades o conflictos? RESPUESTA:
Factor → pizq Expr pder
_______________________________________________

Acciones Ir_a

Estado mas menos vector num prod pizq pder # Exp Factor

10

11

12

13
5. Haciendo uso de la tabla de acciones/estados hacer el seguimiento de la cadena: “(id+id)*(id+id)+id” (15 puntos)

0. E’=>E#
1. E=> E + T
2. E=> T
3. T=> T * F
4. T => F
5. F => (E)
6. F => id

Fila Pila Entrada Acción


1 0 (id+id)*(id+id)+id # Desplazar 4
2 04 Id+id)*(id+id)+id # Desplazar 5
3 045 +id)*(id+id)+id # R6(F->id) quitar 1 numero y se va a (4,F)
4 043 +id)*(id+id)+id # R4 (T->F) quitar 1 numero y se va a (4,T)
5 042 +id)*(id+id)+id # R2(E->T) q. 1 y se va a (4,E)
6 048 +id)*(id+id)+id # D6
7 0486 id)*(id+id)+id # D5
8 04865 )*(id+id)+id # R6 (F->id) quitar 1 y se va a (6,F)
9 04863 )*(id+id)+id # R4 (T->F) quitar 1 se va a (6,T)
10 04869 )*(id+id)+id # R1 (E->E+T) quitar 3 se va a (4,E)
11 048 )*(id+id)+id # D11
12 0 4 8 11 *(id+id)+id # R5 (F->(E) ) quitar 3 ir a (0,F)
13 03 *(id+id)+id # R4 (T->F) quitar 1 ir a (0,T)
14 02 *(id+id)+id # D7
15 027 (id+id)+id # D4
16 0274 id+id)+id# D5
17 02745 +id)+id# R6 (F->id) quitar 1 ir a (4,F)
18 02743 +id)+id# R4 (T->F) quitar 1 ir a (4,T)
19 02742 +id)+id# R2 (E->T) quitar 1 ir a (4,E)
20 02748 +id)+id# D6
21 027486 id)+id# D5
22 0274865 )+id# R6 (F->id) quitar 1 ir a (6,F)
23 0274863 )+id# R4(T->F) quitar 1 ir a (6,T)
24 0274869 )+id# R1(E->E+T) quitar 3 ir a (4,E)
25 02748 )+id# D 11
26 0 2 7 4 8 11 +id# R5 (F->(E) ) quitar 3 ir a (7,F)
27 0 2 7 10 +id# R3 (T->T*F) quitar 3 ir a (0,T)
28 02 +id# R2(E->T) quitar 1 ir a (0,E)
29 01 +id# D6
30 016 id# D5
31 0165 # R6 (F->id) quitar 1 ir a (6,F)
32 0163 # R4 (T->F) quitar 1 ir a (6,T)
33 0169 # R1(E->E+T) quitar 3 ir a (0,E)
34 01 # OK

La Cadena es aceptada.

También podría gustarte