Proceso de Compilación Flashcards

1
Q

8

¿Qué es un compilador?

A

Un compilador es un complejo programa que lee un programa escrito en lenguaje fuente, y lo traduce a un programa equivalente en lenguaje objeto, normalmente mas cercano al lenguaje de maquina.

programa fuente => programa objeto.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Cómo está dividido el proceso de compilación?

A

Está dividido en dos partes:
1. Análisis: a partir del programa fuente se crea una representación del mismo.
2. Síntesis: a partir de la representación intermedia, construye el programa objeto.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Cómo esta formado el Análisis?

A

El Análisis está formado por tres fases:
1. Análisis Léxico.
2. Análisis Sintáctico.
3. Análisis Semántico.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Qué es el Análisis Léxico?

A

Realizado por el Scanner, es el proceso que consiste en recorrer el flujo de caracteres que forman el Programa Fuente, detectar los lexemas que componen ese programa, y traducir la secuencia de estos lexemas en una secuencia de tokens cuya representación es mas útil para el resto del compilador.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Cuáles son las dos formas de implementar un Scanner?

A
  1. A través de un programa auxiliar tipo lex.
  2. Mediante la construcción de una rutina basada en el diseño de un AFD (reconoce los LRs que forman los tokens).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Qué es el Análisis Sintáctico?

A

Realizado por el Parser, verifica si los tokens que recibe del Scanner, forman secuencias o construcciones válidas e invoca a las rutinas semánticas que correspondan, según la gramática sintáctica del LP.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Qué es el Parser?

A

Es un grupo de rutinas que convierte el flujo de tokens en un árbol de análisis sintáctico (AAS), generalmente implicito.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿En qué consiste el Análisis Semántico?

A

Consiste en la realización de tareas de verificación y de conversión que no puede realizar el Análisis Sintáctico.

Debe verificar que se cumplan todas las reglas sensibles al contexto.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Cuáles son las funciones que lleva a cabo el Análisis Semántico?

A
  1. Chequear la semántica estática de cada construcción (que sea legal y tenga significado).
  2. Si la construcción es semánticamente correcta, la rutina hace la traducción (genera código para una maquina virtual que implementa la construcción).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

¿Qué gramáticas se utilizan para cada fase del análisis?

A
  1. Análisis Léxico: GR.
  2. Análisis Sintáctico: GIC.
  3. Análisis Semántico: GSC.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Por quién es detectado un error léxico?

A

Es detectado por el Scanner en el Análisis Léxico, si un caracter no es válido para ningun lexema en el LP, se produce el error lexico y le informa al Parser.
La reparación mas sencilla es ignorar el caracter y seguir con el siguiente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Qué derivación implementa el PAS?

A

Procedimiento de Análisis Sintáctico.
Implementa el Análisis Sintáctico Descendente Recursivo (ASDR)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Qué derivación utiliza el Análisis Sintáctico Descendente (top-down)?

A

Utiliza una derivación por izquierda que comienza desde el axioma.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Qué derivación utiliza el Análisis Sintáctico Ascendente (bottom-up)?

A

Utiliza una derivación por derecha desde las hojas hacia el axioma.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Qué es un Parser LL(1) o Parser Predictivo?

A

Es un Parser capaz de elegir entre los distintos lados derechos de un determinado noterminal con solo conocer el proximo token.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

¿Qué es el conjunto primero?

A

Es el conjunto de terminales que pueden iniciar cualquier cadena de derivación que se obtenga, a partir de un noterminal.

Primero(S)={}

17
Q

¿Qué es el conjunto siguiente?

A

Está determinado por aquellos terminales que siguen inmediatamente despues al noterminal analizado, en las cadenas de derivación que contengan al noterminal.

Siguiente(S) = {}

18
Q

¿Qué es el ASA?

A

Es el Análisis Sintáctico Ascendente (bottom-up), es realizado por un Parser Ascendente (construye desde hojas hacia el axioma) que es basicamente un AFP.