2 ejemplo fases compilador

12
  Ejemplo de las fases de un compilador  Analizaremos algo más las fases usando como ejemplo simple el fragmento de código Pascal: posicion := inicial + velocidad * 60

Upload: realvaradog4831

Post on 14-Jul-2015

94 views

Category:

Documents


1 download

TRANSCRIPT

5/12/2018 2 Ejemplo Fases Compilador - slidepdf.com

http://slidepdf.com/reader/full/2-ejemplo-fases-compilador 1/12

 

Ejemplo de las fases de uncompilador 

Analizaremos algo más las fases usandocomo ejemplo simple el fragmento decódigo Pascal:

posicion := inicial + velocidad * 60

5/12/2018 2 Ejemplo Fases Compilador - slidepdf.com

http://slidepdf.com/reader/full/2-ejemplo-fases-compilador 2/12

 

Ejemplo de las fases de uncompilador 

Analizador Lexico La cadena de entrada se recibe como una sucesión de

caracteres.

El análisis léxico agrupa los caracteres en secuencias

con significado colectivo y mínimo en el lenguaje,llamadas componentes léxicos (token) con ciertosatributos léxicos. En el ejemplo, se detectarían 7:

1. El identificador posicion2. el operador de asignación :=

3. el identificador inicial4. el operador +5. el identificador velocidad6. el operador *7. la constante numérica 60

5/12/2018 2 Ejemplo Fases Compilador - slidepdf.com

http://slidepdf.com/reader/full/2-ejemplo-fases-compilador 3/12

 

Ejemplo de las fases de uncompilador 

Cada vez que se detecta un nuevo identificador, se anotauna entrada en la tabla de símbolos.

El lenguaje de entrada tendrá un catálogo de componentesposibles, que se podrán codificar, siendo mas comunes:

✔ Palabras Reservadas: codificadas mediante las constantesBEGIN, END, IF, VAR . . .

✔ Identificadores: codificadas mediante la constante ID(caracterizadas por ser sucesiones de letras y dígitos quecomiencen por una letra, que no pertenezcan al catálogo depalabras reservadas).

✔ Operadores Relacionales: codificados mediante la constanteOPREL, que pueden ser uno de los siguientes: <=, <, >, >=,= <>

✔ Operadores aritméticos de un solo caracter : ”+”, ”-”, ”*”, etc.

Se codificarán con su propio código de carácter.

5/12/2018 2 Ejemplo Fases Compilador - slidepdf.com

http://slidepdf.com/reader/full/2-ejemplo-fases-compilador 4/12

 

Ejemplo de las fases de uncompilador 

Salida del Analizador léxico Una sucesión de pares formada por el tipo de

componente léxico de que se trata y cuál de ellos es.

Llamaremos componente léxico al primer elemento del

par y valor léxico al segundo. Por lo tanto, la salida delanalizador léxico para el ejemplo sería:

<ID, 25>

<OPASIGN,>

<ID, 24>

<+,>

<ID, 26>

<*,>

<CTE, 60>

5/12/2018 2 Ejemplo Fases Compilador - slidepdf.com

http://slidepdf.com/reader/full/2-ejemplo-fases-compilador 5/12

 

Ejemplo de las fases de uncompilador 

Analizador Sintáctico: Los components léxicos se agrupan para formar frases

Normalmente las frases se representan mediante unaestructura de árbol sintáctico, siguiendo las reglas que

describen el lenguaje. Las reglas determinarán en

el caso del ejemplo un árbolcomo el siguiente:

5/12/2018 2 Ejemplo Fases Compilador - slidepdf.com

http://slidepdf.com/reader/full/2-ejemplo-fases-compilador 6/12

 

Ejemplo de las fases de uncompilador 

Analizador Semántico: En esta etapa se revisa el resultado del análisis sintáctico,

recopilando información de tipos y construyendo unarepresentación llamada arbol de sintaxis abstracta.

Para el ejemplo, en esta fase se anotará el tipo de losidentificadores cuando se revise la declaración de variablesde forma que la tabla de símbolos ahora contendrá másinformación:

5/12/2018 2 Ejemplo Fases Compilador - slidepdf.com

http://slidepdf.com/reader/full/2-ejemplo-fases-compilador 7/12

 

Ejemplo de las fases de uncompilador 

Salida del analizador semántico: Un AST en el que más que la estructura sintáctica de la

entrada, aparece la estructura de operaciones a realizar,como el siguiente:

Ej l d l f d

5/12/2018 2 Ejemplo Fases Compilador - slidepdf.com

http://slidepdf.com/reader/full/2-ejemplo-fases-compilador 8/12

 

Ejemplo de las fases de uncompilador 

Generación de Código Intermedio Se puede considerar esta representación intermedia

como un programa para una máquina abstracta.

Está representación intermedia debe de tener dos

propiedades, debe ser:✔ Fácil de producir.

✔ Fácil de traducir al lenguaje objeto

Puede tener diversas formas. La mas usada es la

llamada código de tres direcciones, que consiste en:✔ Una secuencia de intrucciones, cada una de las cuales

involucra a lo sumo un operador, además de laasignación.

✔ Tres direcciones a lo sumo (las de los operandos y la delresultado)

Ej l d l f d

5/12/2018 2 Ejemplo Fases Compilador - slidepdf.com

http://slidepdf.com/reader/full/2-ejemplo-fases-compilador 9/12

 

Ejemplo de las fases de uncompilador 

El código intemedio, además, deberá generarnombres temporales para almacenar losresultados intermedios.

Para el ejemplo, la salida del compilador en esta fasepodria ser la siguiente secuencia de instrucciones:

Ej l d l f d

5/12/2018 2 Ejemplo Fases Compilador - slidepdf.com

http://slidepdf.com/reader/full/2-ejemplo-fases-compilador 10/12

 

Ejemplo de las fases de uncompilador 

Optimización de código Esta fase trata de mejorar el código intermedio, de

modo que resulte un código de máquina más rápido deejecutar.

Se buscan optimizaciones sencillas que mejoransensiblemente el tiempo de ejecución del programaobjeto sin retardar demasiado la compilación

Para el ejemplo, el resultado de esta fase podría ser laeliminación de variables intermedias:

Ej l d l f d

5/12/2018 2 Ejemplo Fases Compilador - slidepdf.com

http://slidepdf.com/reader/full/2-ejemplo-fases-compilador 11/12

 

Ejemplo de las fases de uncompilador 

Generador de código Las posiciones de memoria se seleccionan para cada

una de las variables usadas por el programa.

Cada una de las instrucciones intermedias se traduce auna secuencia de instrucciones de máquina que ejecutala misma tarea.

Para el ejemplo, el código objeto generado finalmentepodría ser:

5/12/2018 2 Ejemplo Fases Compilador - slidepdf.com

http://slidepdf.com/reader/full/2-ejemplo-fases-compilador 12/12

 

Resúmen

El estudio de las fases anteriores trata laorganización lógica de un compilador.

En una implantación, a menudo se agrupan las

actividades en dos o mas fases.