Está en la página 1de 20

El Problema

Etapas

Las Etapas de la Compilacin


El Parsing en la Compilacin

Universidad de Cantabria

Compilacin y Parsing

El Problema
Etapas

Outline

El Problema

Etapas
Anlisis Lxico
Parsing
Generacin de Cdigo Intermedio
Optimizacin de Cdigo Intermedio y Cdigo Final

Compilacin y Parsing

El Problema
Etapas

Las Etapas y el Parsing

Qu pasos son necesarios dar para hallar la estructura de un


programa?
En qu pasos podemos dividirlos de forma racional?

Compilacin y Parsing

El Problema
Etapas

Las Etapas y el Parsing

Qu pasos son necesarios dar para hallar la estructura de un


programa?
En qu pasos podemos dividirlos de forma racional?

Compilacin y Parsing

El Problema
Etapas

Las Etapas y el Parsing

Un autmata no necesita leer la cinta de lectura varias veces.


Pero puede ser interesante para el humano que el compilador
haga varias pasadas al fichero fuente o que lo transforme.

Compilacin y Parsing

El Problema
Etapas

Un ejemplo: Tokens

Los tokens son grupos de caracteres, tal que unidos tienen una
significacin especial.

Compilacin y Parsing

El Problema
Etapas

Un ejemplo: Tokens

Ejemplos de token:
Valores numricos: 4.5
Strings : hola
Palabras reservadas: if, while, for.

Compilacin y Parsing

El Problema
Etapas

Un ejemplo: Tokens

Los tokens pueden ser diferentes dependiendo del programa,


esto se hace por conveniencia, para mantener el cdigo legible
y por no poner limitacin a acciones.

Compilacin y Parsing

El Problema
Etapas

Anlisis Lxico
Parsing
Generacin de Cdigo Intermedio
Optimizacin de Cdigo Intermedio y Cdigo Final

Anlisis Lxico

El anlisis lxico se ocupa de evaluar las reglas bsicas del


cdigo fuente, que cada uno de los tokens introducidos sean
conocidos.

Compilacin y Parsing

El Problema
Etapas

Anlisis Lxico
Parsing
Generacin de Cdigo Intermedio
Optimizacin de Cdigo Intermedio y Cdigo Final

Anlisis Lxico

Para ello, cada uno de los tokens es introducido como


expresin regular y convertido a un autmata que detecta si un
token coincide con una expresin regular.

Compilacin y Parsing

El Problema
Etapas

Anlisis Lxico
Parsing
Generacin de Cdigo Intermedio
Optimizacin de Cdigo Intermedio y Cdigo Final

Anlisis Lxico

Al final, devuelve un flujo (stream) de tokens que los utilizar


el analizador sintctico (parser).

Compilacin y Parsing

El Problema
Etapas

Anlisis Lxico
Parsing
Generacin de Cdigo Intermedio
Optimizacin de Cdigo Intermedio y Cdigo Final

Anlisis Sintctico

De nuevo usaremos el problema de palabra como referente y


como sustrato las gramticas libres de contexto y los
autmatas con pila.

Compilacin y Parsing

El Problema
Etapas

Anlisis Lxico
Parsing
Generacin de Cdigo Intermedio
Optimizacin de Cdigo Intermedio y Cdigo Final

Anlisis Sintctico

As como en el anlisis lxico, tenemos el autmata mnimo es


la solucin a seguir, en el anlisis sintctico hay varias tcnicas
para resolver el problema de la palabra.

Compilacin y Parsing

El Problema
Etapas

Anlisis Lxico
Parsing
Generacin de Cdigo Intermedio
Optimizacin de Cdigo Intermedio y Cdigo Final

Anlisis Sintctico

Utilizar un algoritmo genrico para hallar una derivacin de


la palabra.
Algoritmo basados en propiedades de la gramtica:
Las derivaciones a la derecha son facilmente adivinables
(Algoritmos LR)
Las derivaciones a la izquierda son facilmente adivinables
(Algoritmos LL)

Compilacin y Parsing

El Problema
Etapas

Anlisis Lxico
Parsing
Generacin de Cdigo Intermedio
Optimizacin de Cdigo Intermedio y Cdigo Final

Anlisis Sintctico

Normalmente se trabajar con autmatas con pila con alguna


propiedad adicional, pero es importante recordar que estos
autmatas no tienen una capacidad expresiva mayor.

Compilacin y Parsing

El Problema
Etapas

Anlisis Lxico
Parsing
Generacin de Cdigo Intermedio
Optimizacin de Cdigo Intermedio y Cdigo Final

Generacin de Cdigo Intermedio

En esta fase se genera a partir del cdigo fuente un archivo con


el programa en cdigo intermedio, a veces llamado cdigo de
tres direcciones, ya que a lo sumo involucran a tres terminos.

Compilacin y Parsing

El Problema
Etapas

Anlisis Lxico
Parsing
Generacin de Cdigo Intermedio
Optimizacin de Cdigo Intermedio y Cdigo Final

Generacin de Cdigo Intermedio

Es ms fcil de mejorar el rendimiento del programa.


Puede ser un punto intermedio para generar cdigo para
diferentes plataformas.

Compilacin y Parsing

El Problema
Etapas

Anlisis Lxico
Parsing
Generacin de Cdigo Intermedio
Optimizacin de Cdigo Intermedio y Cdigo Final

Optimizacin de Cdigo Intermedio

Antes de empezar, que es lo que esperamos?


Una posible respuesta es:
Generar cdigo que se ejecute ms velozmente:
Se utilizara el mismo procedimiento que hemos generado..
en las partes que no influyan al programa.

Compilacin y Parsing

El Problema
Etapas

Anlisis Lxico
Parsing
Generacin de Cdigo Intermedio
Optimizacin de Cdigo Intermedio y Cdigo Final

Optimizacin de Cdigo Intermedio

Antes de empezar, que es lo que esperamos?


Una posible respuesta es:
Generar cdigo que se ejecute ms velozmente:
Se utilizara el mismo procedimiento que hemos generado..
en las partes que no influyan al programa.

Compilacin y Parsing

El Problema
Etapas

Anlisis Lxico
Parsing
Generacin de Cdigo Intermedio
Optimizacin de Cdigo Intermedio y Cdigo Final

Generacin de Cdigo Final

En la tlima parte de la compilacin se genera cdigo final,


adaptado a la mquina.
No se vuelve a intentar optimizar.
El mismo cdigo intermedio puede ser utilizado para
generar cdigo para otras plataformas.

Compilacin y Parsing

También podría gustarte