You are on page 1of 2

Nombre:_______________________________________________________________

Compiladores Semestre 2019-1


Segundo examen parcial (TIPOB)
1. Elabora el diagrama de tren que defina la sintaxis de la declaración struct del Lenguaje
C

Sintaxis: átomos ejemplo

struct identif { s  struct struct lista {


<tipo> identif ; a identif int valor;
<tipo> identif ; c  char char *nombre;
: i  int struct lista *nodolista;
<tipo> identif ; f  float } lista1, lista2;
} <listaIdentif> ; ;;
{{
}}
, ,
**
Consideraciones:
- Utilizar los átomos como terminales en el diagrama de tren (no como bloques)
- <tipo> puede ser char, int, float o struct. En este último caso debe indicarse el nombre
de la estructura y su correspondiente identificador.
- Los identificadores de los campos de la estructura pueden ser de tipo apuntador (con *
inicial)
- Al menos debe definirse una línea de <tipo>
- <listaIdentif> es una lista de identificadores separados por ‘,’ o puede omitirse la lista

2. Con base en la siguiente gramática:

1: W  w(E)B 7: R  e 13: A  / O
2: E  ORO 8: R  d 14: A  * O
3: O  a 9: B  { L } 15: A  
4: O  c 10: L  a= OA;C 16: C  L
5: R  m 11: A  +O 17: C  
6: R  n 12: A  - O
a) Indica la secuencia de producciones que va reconociendo un analizador descendente
para la siguiente sentencia (tip: sólo aplica las derivaciones para obtener la cadena y de ahí
obtener lo que se pide):
w(amc){a=a;a=a-c;}┤
______________________________________________________________________
b) Indica la secuencia de producciones que va reconociendo un analizador ascendente
para la siguiente sentencia (tip: sólo aplica las derivaciones para obtener la cadena y de ahí
obtener lo que se pide):
w(amc){a=a;a=a-c;}┤

________________________________________________________________________
Nombre:_______________________________________________________________

3. La siguiente gramática define la sintaxis de una función. Ocupando los mismos


elementos terminales, obtén una gramática equivalente que sea de tipo s (simple)

1: S  AB 5: B  Ce
2: A  bB 6: B  dAC
3: A  a 7: C  ed
4: A  

4. Con base en la siguiente gramática:

1: F  Ta(A)C 4: M   7: P  pP 10: T  i
2: A   5: M  ,TaM 8: P   11 : T  f
3: A  TaM 6: C  { P} 9: T  c

a) Calcula el conjunto de selección de las producciones.


b) Construye la tabla de Parser predictivo
c) Reconoce las cadenas ia(fa){p}┤ y fa( )p┤

5. De la siguiente gramática:
1: B  BoT 4: T F 7: F v
2: B T 5: F nF 8: F f
3: T TyF 6: F  (B)

Para la siguiente forma sentencial, indica cuál(es) son las frases y cuál es el handle (subráyalas).

frases: Bof ynv

handle: Bof ynv

6. Considera la siguiente gramática


1: D  vaCT 4: C  ,aC
2: T  i 5: C  :
3: T  f

a) Construye la máquina de control de estados finitos


b) Construye las tablas de Parser ascendente
c) Utiliza las tablas de Parser para analizar la cadena de entrada va,a:i┤

7. Investiga y elabora un cuadro comparativo de las diversas gramáticas LR para


realizar un análisis ascendente.