• No results found

Optimización del código intermedio

ÆÆ

Generación de código

Generación de código

ÆÆ

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS

9 C t ili

9 Componentes auxiliares

¾ Administrador de la tabla de símbolos ‰

‰La tabla de símbolos contiene toda la información relacionada con

los identificadores del programa fuente:

ƒ Variables y constantes ƒ Variables y constantes

ƒ Funciones y procedimientos

P á

ƒ Parámetros

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS

9 C t ili

9 Componentes auxiliares

¾ Administrador de la tabla de símbolos ‰

‰ Se crea durante el análisis léxico

‰ Es completada y utilizada durante todas las fases del proceso de

compilación compilación

‰ Se puede utilizar más de una tabla de símbolos para controlar las

reglas de ámbito del lenguaje de programación.g g j p g

‰ Los depuradores pueden mostrar los valores de las variables al

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS

9 C t ili

9 Componentes auxiliares

¾ Administrador de la tabla de símbolos ‰

‰V.g.: dato = 3;

N b

N b

TiTi

V lV l

dato

dato

enteroentero

33

Nombre

Nombre

TipoTipo

ValorValor

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS

9 C t ili

9 Componentes auxiliares

¾ Administrador de la tabla de símbolos ‰

‰ La información de las funciones o procedimientos es más completa: ƒ Número parámetros

ƒ Tipo y forma de paso de cada parámetro ƒ Tipo de resultados (en las funciones) ƒ Etc.

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS

9 C t ili

9 Componentes auxiliares

¾ Administrador de la tabla de símbolos ‰

‰Las operaciones sobre la tabla de símbolos son: ƒ Inserción

ƒ Consulta ƒ Modificación

‰Se puede mejora la eficiencia en el uso de la tabla de símbolos

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS

9 C t ili

9 Componentes auxiliares

¾ Administrador de la tabla de símbolos ¾

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

P

f

t

ÆÆ

A áli i lé iA áli i lé i

Programa fuente

ÆÆ

Análisis léxicoAnálisis léxicoÆÆ

Análisis sintáctico

Análisis sintáctico

A áli i á ti

A áli i á ti

Análisis sintáctico

Análisis sintáctico

ÆÆ

Gestor de errores

Gestor de errores

Análisis semántico

Análisis semántico

ÆÆ

G

ió d ódi i t

di

G

ió d ódi i t

di

Administrador

Administrador

de la Tabla

de la Tabla

GG

ÆÆ

Generación de código intermedio

Generación de código intermedio

de símbolos

de símbolos

Optimización del código intermedio

Optimización del código intermedio

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS

9 C t ili

9 Componentes auxiliares ¾ Gestor de errores

‰ i d f d l

‰La gestión de errores es un proceso fundamental

‰Los errores pueden surgir en todas las fases del proceso de traducción

‰ á f l d áli i

‰ Los errores son más frecuentes en las etapas de análisis:

ƒ Errores léxicos: identificador con un carácter no permitido

i á i i d l l i

ƒ Errores sintácticos: sentencia de control mal escrita

ƒ Errores semánticos: uso de una variable en un contexto inadecuado ‰L ió d d b

‰La gestión de errores debe: ƒ Informar sobre el error,

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS

9 C t ili

9 Componentes auxiliares ¾ Gestor de errores

‰

‰ Las características de un buen gestor de errores:

ƒ Detección de errores: debe ser capaz de detectar los errores ƒ Tratamiento de los errores: al encontrar un error, intentará

subsanarlo si es posible. Siempre informará de los cambios realizados, para que la persona que programe tome la decisión , p q p q p g final.

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS

9 C t ili

9 Componentes auxiliares ¾ Gestor de errores

‰

‰ Las características de un buen gestor de errores (continuación): ƒInformación de los errores: el mensaje de error debe tener las

siguientes características: siguientes características:

- Localización: se debe indicar la línea del código fuente en la

l

que aparece el error.

- Pertinencia: debe referirse al código del programa y no a detalles internos de la traducción.

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS

9 F 9 Fases 9 Pasos

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS

9 P 9 Pasos

¾ Número de veces que se procesa una representación del programa fuente. ¾

¾ Cada paso requiere:

‰ Lectura del código fuente ‰ Procesamiento

‰ Almacenamiento de la información generada ¾ El número de pasos debe ser mínimo.

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS

9 P 9 Pasos

¾ Las pasadas se suelen agrupar. Ejemplo: ‰

‰ Primera pasada: análisis léxico, sintáctico, semántico y generación y

optimización de código intermedio

‰ Segunda pasada: generación y optimización de código ‰ Segunda pasada: generación y optimización de código. ¾Algunas veces es imprescindible realizar dos o más pasos:

‰ Al l 68 PL/I i ili l i bl d

‰ Algol 68 y PL/I permiten utilizar las variables antes de ser

declaradas.

‰ Si el lenguaje permite saltos incondicionales (v g : instrucción “goto”) ‰ Si el lenguaje permite saltos incondicionales (v.g.: instrucción goto )

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

TEMA I

INTRODUCCIÓN

TEMA I.-

INTRODUCCIÓN

TRADUCCIÓN E INTEPRETACIÓN

• TIPOS DE TRADUCTORES

T

U

Ó

• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN

• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORES

• COMBINACIÓN DE COMPILADORES “BOOTSTRAPPING”

• COMBINACIÓN DE COMPILADORES: BOOTSTRAPPING

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE

COMPILADORES

COMPILADORES

9 Algunas partes del proceso de traducción pueden ser generadas automáticamente 9 Tipos de herramientas de generación automática:

9 Tipos de herramientas de generación automática:

¾ Generadores automáticos de analizadores léxicos ¾ G d á i d li d i á i

¾ Generadores automáticos de analizadores sintácticos ¾ Generadores automáticos de código intermedio

¾ Generadores automáticos de código ¾ Máquinas de optimización de código

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE

COMPILADORES

COMPILADORES

9 Tipos de herramientas de generación automática: ¾ Generadores automáticos de analizadores léxicos ¾ Generadores automáticos de analizadores léxicos ¾ Generadores automáticos de analizadores sintácticos ¾ G d á i d ódi i di

¾ Generadores automáticos de código intermedio ¾ Generadores automáticos de código

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE

COMPILADORES

COMPILADORES

9 Tipos de herramientas de generación automática: ¾ Generadores automáticos de analizadores léxicos ¾ Generadores automáticos de analizadores léxicos

‰ Las expresiones regulares pueden denotar a los componentes básicos

de los lenguajes de programación:g j p g

ƒ Identificadores ƒ NúmerosNúmeros

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE

COMPILADORES

COMPILADORES

9 Tipos de herramientas de generación automática: ¾ Generadores automáticos de analizadores léxicos ¾ Generadores automáticos de analizadores léxicos

‰ Las expresiones regulares pueden denotar a los componentes básicos

de los lenguajes de programación.g j p g

‰ Existen herramientas automáticas para generar analizadores léxicos a

partir de las expresiones regulares:

ƒ Lex ƒ Flex ƒ PCLex

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE

COMPILADORES

COMPILADORES

9 Tipos de herramientas de generación automática: ¾ Generadores automáticos de analizadores léxicos ¾ Generadores automáticos de analizadores léxicos

‰ V.g.: Lex

Lex

Lex

nombre l

nombre l

ÆÆ

ÆÆ

lex yy clex yy c

Fichero con expresiones regulares

Lex

Lex

Analizador léxico escrito en lenguaje C nombre.l

nombre.l

ÆÆ

ÆÆ

lex.yy.clex.yy.c

‰El fichero lex.yy.c contiene una función denominada “yylex()” que

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE

COMPILADORES

COMPILADORES

9 Tipos de herramientas de generación automática: ¾ Generadores automáticos de analizadores léxicos ¾ Generadores automáticos de analizadores léxicos ¾ Generadores automáticos de analizadores sintácticos ¾ G d á i d ódi i di

¾ Generadores automáticos de código intermedio ¾ Generadores automáticos de código

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE

COMPILADORES

COMPILADORES

9 Tipos de herramientas de generación automática:

¾ Generadores automáticos de analizadores sintácticos ¾ Generadores automáticos de analizadores sintácticos

‰ Las gramáticas de contexto libre permiten generar “casi” todas las

estructuras sintácticas de los lenguajes de programación.g j p g

‰ Existen herramientas automáticas para generar analizadores

sintácticos a partir de las gramáticas de contexto libre:

ƒ YACC o Bison ƒ LLGENG

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE

COMPILADORES

COMPILADORES

9 Tipos de herramientas de generación automática:

¾ Generadores automáticos de analizadores sintácticos ¾ Generadores automáticos de analizadores sintácticos

‰V.g.: YACC, Yet Another Compiler Compiler

Fichero con una gramática

YACC

YACC

nombre.y

nombre.y

ÆÆ

ÆÆ

y.tab.cy.tab.c

A li d i tá ti Fichero con una gramática

de contexto libre Analizador sintáctico escrito en lenguaje C

‰El fichero y.tab.c contiene una función denominada “yyparse()” que

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE

COMPILADORES

COMPILADORES

9 Tipos de herramientas de generación automática: ¾ Generadores automáticos de analizadores léxicos ¾ Generadores automáticos de analizadores léxicos ¾ Generadores automáticos de analizadores sintácticos ¾ G d á i d ódi i di

¾ Generadores automáticos de código intermedio ¾ Generadores automáticos de código

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE

COMPILADORES

COMPILADORES

9 Tipos de herramientas de generación automática: ¾ Generadores automáticos de código intermedio ¾ Generadores automáticos de código intermedio

‰ Suelen estar integrados en los analizadores sintácticos

‰ H d i i i á i d

‰ Hay dos versiones que incorporan acciones semánticas de generación

de código intermedio:

ƒ Definiciones basadas en la sintaxisDefiniciones basadas en la sintaxis

ƒ Esquemas de traducción

‰ Al r ar l árb l i tá ti j ta la a i á ti a d

‰ Al crear el árbol sintáctico, se ejecutan las acciones semánticas de

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE

COMPILADORES

COMPILADORES

9 Tipos de herramientas de generación automática: ¾ Generadores automáticos de analizadores léxicos ¾ Generadores automáticos de analizadores léxicos ¾ Generadores automáticos de analizadores sintácticos ¾ G d á i d ódi i di

¾ Generadores automáticos de código intermedio ¾ Generadores automáticos de código

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE

COMPILADORES

COMPILADORES

9 Tipos de herramientas de generación automática: ¾ Generadores automáticos de código

¾ Generadores automáticos de código

‰ Se utilizan transformaciones basadas en reglas que tienen en cuenta:

L í i d l i i d l ódi

ƒ Las características de las sentencias y operaciones del código

intermedio

ƒ Las características de la máquina donde se va a ejecutar el código Las características de la máquina donde se va a ejecutar el código objeto:

- Acceso a las variables: almacenamiento en registros de máquina en memoria estática en la pila o el montón máquina, en memoria estática, en la pila o el montón - Operaciones básicas disponibles

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE

COMPILADORES

COMPILADORES

9 Tipos de herramientas de generación automática: ¾ Generadores automáticos de analizadores léxicos ¾ Generadores automáticos de analizadores léxicos ¾ Generadores automáticos de analizadores sintácticos ¾ G d á i d ódi i di

¾ Generadores automáticos de código intermedio ¾ Generadores automáticos de código

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

HERRAMIENTAS PARA LA CONSTRUCCIÓN DE

COMPILADORES

COMPILADORES

9 Tipos de herramientas de generación automática: ¾ Máquinas de optimización de código

¾ Máquinas de optimización de código

‰ Se utilizan dispositivos para el análisis del flujo de datos.

‰ S i f b l f l l i

‰ Se recoge información sobre la forma en que los valores se transmiten

de una parte a otra del programa

‰ Ejemplos: ‰ Ejemplos:

ƒ Análisis de “uso siguiente” o de “vida”: se comprueba en qué

lugares se usa una variable y, especialmente, cuándo no se va a utilizar más

utilizar más.

ƒ Si una variable es utilizada frecuentemente entonces es preferible

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

TEMA I

INTRODUCCIÓN

TEMA I.-

INTRODUCCIÓN

TRADUCCIÓN E INTEPRETACIÓN

• TIPOS DE TRADUCTORES

T

U

Ó

• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN

• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 La técnica de “bootstrapping” permite combinar compiladores ya creados para 9 La técnica de bootstrapping permite combinar compiladores ya creados para

construir nuevos compiladores

9 Los lenguajes que aparecen en el proceso de compilación son:g j q p p p

¾ Lenguaje fuente (F)

¾ Lenguaje de implementación (I): lenguaje en el que está escrito el compiladorg j p ( ) g j q p

¾ Lenguaje objeto (O)

9 El compilador se pueden representar en forma de Tf

F

F

OO

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 Ej l il d

9 Ejemplo: compilador gcc

¾ Lenguaje fuente: Lenguaje C ¾

¾ Lenguaje de implementación: Lenguaje máquina de Unix (U) ¾ Lenguaje objeto: Lenguaje máquina de Unix (U)

CC

UU

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 Si F I t l il d d i “ t il d ”

9 Si F = I entonces el compilador se denomina “autocompilador” 9 Ejemplo:

¾

¾ Lenguaje fuente: Lenguaje C

¾ Lenguaje de implementación: Lenguaje máquina de Unix (U) ¾ Lenguaje objeto: Lenguaje C

CC

UU

CC

CC

U

U

CC

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 Si I ≠ O t l il d d i “ il d d ”

9 Si I ≠ O entonces el compilador se denomina “compilador cruzado”, porque se

genera código para una máquina diferente a la que se ha compilado

9 Ejemplo:Ejemplo:

¾ Lenguaje fuente: Lenguaje C

¾ Lenguaje de implementación: Lenguaje máquina de Unix (U) ¾ Lenguaje de implementación: Lenguaje máquina de Unix (U) ¾ Lenguaje objeto: Lenguaje máquina de Linux (L)

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 A li ió d l té i d “b t t i ”

9 Aplicación de la técnica de “bootstrapping”:

¾ Ejemplo 1: se pretende construir el siguiente compilador ‰

‰ Lenguaje fuente: Lenguaje L de alto nivel

‰ Lenguaje de implementación: Lenguaje máquina (M) ‰ Lenguaje objeto: Lenguaje máquina (M)

L

L

MM

L

L

M

M

M

M

M

M

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 A li ió d l té i d “b t t i ”

9 Aplicación de la técnica de “bootstrapping”: ¾ Ejemplo 1

‰

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 A li ió d l té i d “b t t i ”

9 Aplicación de la técnica de “bootstrapping”: ¾ Ejemplo 1

‰

‰Paso 1: se construyen dos compiladores auxiliares ƒ Primer compilador

Lenguaje fuente: Lenguaje S, que es más simple que el lenguaje L de alto nivel (V.g: un subconjunto de L o ensamblador).

L j d i l ió L j á i (M)

SS

MM

Lenguaje de implementación: Lenguaje máquina (M) Lenguaje objeto: Lenguaje máquina (M)

M

M

Observación: este compilador se puede construir con más facilidad porque S es más simple que L.

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 Aplicación de la técnica de “bootstrapping”: 9 Aplicación de la técnica de bootstrapping :

¾ Ejemplo 1

‰ Paso 1: se construyen dos compiladores auxiliares ‰ Paso 1: se construyen dos compiladores auxiliares

ƒSegundo compilador

Lenguaje fuente: Lenguaje L de alto nivel Lenguaje fuente: Lenguaje L de alto nivel

Lenguaje de implementación: Lenguaje S (que es más simple que el lenguaje L de alto nivel)

L

L

MM

Lenguaje objeto: lenguaje máquina (M)

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 Aplicación de la técnica de “bootstrapping”: 9 Aplicación de la técnica de bootstrapping :

¾ Ejemplo 1

‰ Paso 2: se compila el compilador 2 con el compilador 1, creándose el Paso 2: se compila el compilado 2 con el compilado 1, c eándose el compilador final

L

L

MM

LL

MM

SS

MM

SS

MM

22

MM

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 A li ió d l té i d “b t t i ”

9 Aplicación de la técnica de “bootstrapping”: ¾ Forma general: A I B + I M N = A N B

A

A

BB

AA

BB

II

NN

A

A

II

B

B

AA

N

N

II

NN

II

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 A li ió d l té i d “b t t i ”

9 Aplicación de la técnica de “bootstrapping”: ¾ Forma general: A I B + I M N = A N B

A

A

BB

AA

BB

II

NN

A

A

II

B

B

AA

N

N

II

M

M

N

N

II

M

M

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 A li ió d l té i d “b t t i ”

9 Aplicación de la técnica de “bootstrapping”:

¾ Si se desea construir un compilador escrito en un lenguaje máquina M para

un lenguaje de alto nivel L entonces se utilizan subconjuntos del lenguaje un lenguaje de alto nivel L, entonces se utilizan subconjuntos del lenguaje inicial.

L

L

MM

M

M

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 Aplicación de la técnica de “bootstrapping”: 9 Aplicación de la técnica de bootstrapping :

¾ Ejemplo 2

‰Sean tres lenguajes de programación: L1 ⊆ L2 ⊆ L3 ‰Sean tres lenguajes de programación: L1 ⊆ L2 ⊆ L3 ‰Se pretende construir el siguiente compilador

ƒ Lenguaje fuente: Lenguaje L3 de alto nivelg j f g j

ƒ Lenguaje de implementación: Lenguaje máquina (M) ƒ Lenguaje objeto: Lenguaje máquina (M)

L3

L3

MM

M

M

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 A li ió d l té i d “b t t i ”

9 Aplicación de la técnica de “bootstrapping”: ¾ Ejemplo 2:

‰

‰Paso 1:

ƒSe construyen los siguientes tres compiladores

L1

L1

MM

L2L2

MM

L3L3

MM

M

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 A li ió d l té i d “b t t i ”

9 Aplicación de la técnica de “bootstrapping”: ¾ Ejemplo 2

‰

‰ Paso 2:

ƒSe compila el compilador 2 con el compilador 1: se crea un compilador 4

L2

L2

MM

L2L2

MM

L1

L1

MM

L1

L1

MM

M

M

22

44

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 A li ió d l té i d “b t t i ”

9 Aplicación de la técnica de “bootstrapping”: ¾ Ejemplo2

‰

‰ Paso 3:

ƒSe compila el compilador 3 con el compilador 4: se crea el compilador

final final

L3

L3

MM

L3L3

MM

L2

L2

MM

L2

L2

MM

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 A li ió d l té i d “b t t i ”

9 Aplicación de la técnica de “bootstrapping”: ¾Ejemplo 3:

‰ ‰ ‰

‰ Existe el compilador de un lenguaje L para una máquina M y se quiere

construir otro compilador para otra máquina N

‰Compilador original: L M ‰Compilador original: L M M ‰Objetivo: L N N

L

L

NN

L

L

MM

N

N

M

M

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 A li ió d l té i d “b t t i ”

9 Aplicación de la técnica de “bootstrapping”: ¾ Ejemplo 3

‰

‰Paso 1:

ƒSe construye el auto compilador L L N

ƒ Este compilador es más fácil de construir que el compilador L N N

L

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 Aplicación de la técnica de “bootstrapping”: 9 Aplicación de la técnica de bootstrapping :

¾ Ejemplo 3 ‰ Paso 2: ‰ Paso 2:

ƒSe compila el compilador obtenido en el paso 1 con el compilador

original, creándose el compilador cruzado L M N

L

L

NN

LL

NN

L

L

L

L

MM

MM

M

M

11

22

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 Aplicación de la técnica de “bootstrapping”: 9 Aplicación de la técnica de bootstrapping :

¾ Ejemplo 3 ‰Paso 3: ‰Paso 3:

ƒSe compila el compilador obtenido en el paso 1 con el compilador

obtenido en el paso 2, creándose el compilador final

L

L

NN

LL

NN

L

L

L

L

NN

NN

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 Aplicación de la técnica de “bootstrapping”:Aplicación de la técnica de bootstrapping :

¾Resumen del ejemplo 3:

‰ El compilador original y el compilador 1 se construyen directamentep g y p y

‰ El compilador 2 se construye a partir del original y el compilador 1 ‰ El compilador final se construye a partir de los compiladores 1 y 2

L

L

NN

L

L

NN

11

L

L

NN

L

L

N

N

N

N

L

L

NN

L

L

L

L

L

L

N

N

M

M

MM

11

Compilador final

Compilador finalpp

ff

Procesadores de Lenguajes

Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción

COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”

9 Aplicación de la técnica de “bootstrapping”: 9 Aplicación de la técnica de bootstrapping :

¾Resumen del ejemplo 3:

L

L

NN

L

L

NN

11

L

L

NN

L

L

N

N

N

N

L

L

NN

L

L

L

L

L

L

N

N

M

M

MM

11

Compilador final

Compilador finalpp

ff

UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR

Á Á É

DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO

Related documents