Está en la página 1de 12

1

COMPILADORES E
INTRPRETES
Introduccin

Compilador: DEFINICIN
2

Proceso de traduccin que convierte un programa


f ente escrito en unn lenguaje
fuente
leng aje de alto ni
nivel
el a unn
programa objeto en cdigo mquina y listo por
tanto para ejecutarse en el ordenador, con poca o
ninguna preparacin adicional

Programa
Fuente

Compilador

Programa
Objeto

Mensajes
de Error

Compiladores, Introduccin
3

Cdigo
Mquina

Ensamblador
Cdigo
Mquina

Lenguaje
Ensamblador

Ensamblador
Compilador
Cdigo
Lenguaje
Lenguaje
Mquina
Ensamblador
de alto Nivel

Compiladores
4

En

los 50los compiladores eran considerados


programas muy difciles
FORTRAN se desarroll en grupo durante 18 aos
Se han desarrollado tcnicas sistemticas, entornos de
programacin y herramientas software que facilitan la
tarea de desarrollo

Compiladores
5

Gran

variedad de lenguajes de alto nivel


Gran variedad de lenguajes objeto
objeto, tanto otro
lenguaje de alto nivel como cdigo mquina
No puede darse una fecha exacta del primer
desarrollo
Varios grupos independientemente desarrollaron
tcnicas de anlisis
Los
L primeros
i
traducan
t d frmulas
f l aritmticas
it ti
a cdigo
di
mquina

Conceptos Relacionados
6

A it t
Arquitectura
de Ordenadores

Teora de
Lenguajes

Lenguajes de
Programacin

Compiladores

Teora de
Algoritmos

Ingeniera
del Software

Motivacin (I)
7

Para ser buen programador


p g
Saber

como se obtiene un ejecutable permite saber


ms sobre correccin y eficiencia

Para entender ms sobre lenguajes


Tipificacin:

esttica, dinmica, fuerte, polimorfismo,


conversiones, sobrecarga de operadores...
Estructura
E
de
d bloques,
bl
mbitos
bi
Paso de parmetros
Gestin de memoria, punteros

Motivacin (II)
8

La teora es imprescindible
p
Antes

de la aplicacin de teora de autmatas y


lenguajes formales, programacin, etc. Los
compiladores eran muy malos

Aplicar la teora y herramientas a otros campos:


Intrpretes

de comandos y consultas
Formateadores
F
d
de
d texto (TeX,
(T X LaTeX)
L T X)
Lenguajes de simulacin (GPSS)
Intrpretes Grficos (PS, GIF, JPEG, PovRAY)

Compilador; Definiciones I
9

Ensamblador:
Compilador

sencillo
sencillo, el lenguaje fuente tiene una estructura
simple que permite una traduccin de una sentencia fuente
a una instruccin en cdigo mquina

Compilador

cruzado:

Compilador

que traduce un lenguaje fuente a objeto, el


objeto es para un ordenador distinto del que compila

Compilador; Definiciones II
10

Compile-Link-Go

frente a Compile-Go:

Lenguaje

que permita la fragmentacin,


fragmentacin compilacin
separada y enlazado de las parte
El compilador deja en memoria directamente un mdulo
cargable que se ejecuta a continuacin
Compilador

de una o varias pasadas:

Pasada:

recorrido total de todo el fuente con alguna


misin
i i especfica
fi

Compilador; Definiciones III


11

Traductor

o compilador incremental (interactivo o


conversacional)
Encontrados

y corregidos los errores despus solo se


compilan estos

Autocompilador
Compilador

escrito en el propio lenguaje que compila


Facilitar la portabilidad

Compilador; Definiciones IV
12

Metacompilador
Programa

que recibe un lenguaje y genera un compilador


para ese lenguaje

Decompilador
Programa

que recibe como entrada cdigo mquina y lo


traduce a un lenguaje de alto nivel

Esquema de Compilacin
13

Ejecucin

Compilacin

Fuente

Compilador
Corregir
Errores del
Fuente

Listado
Diagnsticos

Objeto

No

Bien
Si
Programa
Objeto

Resultados

Datos

Compilador, Esquema
14

Cdigo
g Mquina
q
Absoluto

Estructura de
Programa Fuente

Preprocesador

Compilador

Programa
Fuente

Ensamblador

Programa
Objeto
Ensamblador

Editor de
Carga

Biblioteca de
Archivos Objeto
Relocalizables

Cdigo Mquina
Relocalizable

Fases de un Compilador
15

Tabla de
Smbolos

Generacin

Anlisis
Analizador
Lxico

Analizador
Sintctico

Analizador
Semntico

Entrada
Salida

Generador
de Cdigo
Intermedio

Optimizador

Generador
de Cdigo

Tratamiento
de errores

Analizador Lxico (scanner)


16

Anlisis

Lineal: La cadena de entrada se lee de


izquierda a derecha y se agrupa en componentes
lxicos (tokens)
Secuencias

de caracteres con un significado colectivo


TOKENS

x:=a+b*c;
y:=3+b*c;

Analizador
Lxico

(id,x) (op,:=)

(id,a)

(op,+) (id,b)

(op,*)

(id,c) (punt,;)
(id,y) (op,:=)

(num,3)

(op,+) (id,b)

(op,*)

(id,c) (punt,;)

Analizador Sintctico
17

Anlisis

Jerrquico

Agrupa

los componentes lxicos en frases gramaticales que


el compilador utiliza

TOKENS
(id,x) (op,:=)

(id,a)

(op,+) (id,b)

(op,*)

Analizador
Sintctico

(id,c) (punt,;)
(id,y) (op,:=)

(num,3)

(op,+) (id,b)

(op,*)

(id,c) (punt,;)

18

Sentencias
Sentencia

Sentencias

Asignacin

X
a

Variable

:=

Variable

Variable
b

Sentencia
Expresin

Asignacin

Expresin

Variable

Expresin

Variable

3
c

:=

Constante
Variable

Expresin
+

Expresin

Expresin

Variable
c

Compilador; Gramtica
19

Sentencias ::= Sentencia ; Sentencias | Sentencia


Sentencia ::= Asignacin | Condicional | Iterativa
Asignacin
i
i ::= Variable
i bl
:=
Expresin
i
Condicional ::= if Condicin then Sentencias else
Sentencias
Iterativa ::= while Condicin do Sentencias
Expresin ::= Variable-Nmero + Expresin |
Variable-Nmero * Expresin |
Variable-Nmero - Expresin |
Variable-Nmero / Expresin |
Variable-Nmero
Variable ::= [A-Za-z] [A-Za-z0-9]*
Variable-Nmero ::= Variable | Nmero
Nmero ::= [0-9]+

Analizador Semntico
20

Busca

errores semnticos, rene informacin de tipos;


identifica operadores y operandos

:=
x

:=
+

y
*

+
3

*
b

10

Optimizacin
21

:=
x

:=
+

*
b

+
3

Generador de Cdigo
22

:=
x

:=
+

y
*

+
3

Push a

apila

Push b

bpila

Load (c), R1

cR1

Mult (S), R1

b*cR1

Store
Sto
e R1,
, R2

R1R2

Add (S), R1

a+b*cR1

Store R1,(x)

R1x

Add #3, R2

3+b*cR2

Store R2, (y) R2y

11

Fases de un Compilador
23

Agrupacin
g p
lgica
g de un compilador
p
Etapa

Inicial

Fases,

o parte de fases que dependen del lenguaje fuente y


que son independientes de la mquina

Anlisis lxico, sintctico, semntico y generacin de cdigo


intermedio, manejo de errores de cada parte

Etapa

Final

Fases

que depende de la mquina, depende del lenguaje


intermedio

Optimizacin de cdigo, generacin de cdigo, operaciones con


la tabla de smbolos

12

También podría gustarte