Anda di halaman 1dari 12

1

1
COMPILADORES E
INTRPRETES
Introduccin
Compilador: DEFINICIN
2
Proceso de traduccin que convierte un programa
f ente escrito en n leng aje de alto ni el a n fuente escrito en un lenguaje de alto nivel a un
programa objeto en cdigo mquina y listo por
tanto para ejecutarse en el ordenador, con poca o
ninguna preparacin adicional
Compilador
Programa
Fuente
Programa
Objeto
Mensajes
de Error
2
Compiladores, Introduccin
3
Cdigo Cdigo
Mquina
Cdigo
Mquina
Lenguaje
Ensamblador
Ensamblador
Cdigo
Mquina
Lenguaje
Ensamblador
Lenguaje
de alto Nivel
Ensamblador Compilador
Compiladores
4
En los 50los compiladores eran considerados
programas muy difciles 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
3
Compiladores
5
Gran variedad de lenguajes de alto nivel
Gran variedad de lenguajes objeto tanto otro Gran variedad de lenguajes 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
L i t d f l it ti di Los primeros traducan frmulas aritmticas a cdigo
mquina
Conceptos Relacionados
6
A it t
Compiladores
Arquitectura
de Ordenadores
Teora de
Lenguajes
Lenguajes de
Programacin
Teora de
Algoritmos
Ingeniera
del Software
4
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...
E d bl bi Estructura de bloques, mbitos
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
F d d (T X L T X) Formateadores de texto (TeX, LaTeX)
Lenguajes de simulacin (GPSS)
Intrpretes Grficos (PS, GIF, JPEG, PovRAY)
5
Compilador; Definiciones I
9
Ensamblador:
Compilador sencillo el lenguaje fuente tiene una estructura Compilador 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 compilacin Lenguaje que permita la 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
i i fi misin especfica
6
Compilador; Definiciones III
11
Traductor o compilador incremental (interactivo o
conversacional) 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 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
7
Esquema de Compilacin
13
Fuente
Objeto
Compilador
Listado
Diagnsticos
Corregir
Errores del
Fuente
C
o
m
p
i
l
a
c
i

n
Bien
Programa
Objeto
Datos
Resultados
Si
No
E
j
e
c
u
c
i

n
Compilador, Esquema
14
Cdigo Mquina
Estructura de
Preprocesador Ensamblador
Editor de
Compilador
g q
Absoluto
Estructura de
Programa Fuente
Preprocesador Ensamblador
Carga
Compilador
Programa
Fuente
Programa
Objeto
Ensamblador
Cdigo Mquina
Relocalizable
Biblioteca de
Archivos Objeto
Relocalizables
8
Fases de un Compilador
15
Tabla de
Smbolos
Analizador
Lxico
Analizador
Sintctico
Analizador
Semntico
Generador
de Cdigo
Intermedio
Optimizador
Generador
de Cdigo
Anlisis
Generacin
Entrada
Salida
Tratamiento
de errores
Analizador Lxico (scanner)
16
Anlisis Lineal: La cadena de entrada se lee de
izquierda a derecha y se agrupa en componentes izquierda a derecha y se agrupa en componentes
lxicos (tokens)
Secuencias de caracteres con un significado colectivo
TOKENS
( i d, x) ( op, : =) ( i d, a)
x: =a+b*c;
y: =3+b*c;
Analizador
Lxico
( op, +) ( i d, b) ( op, *)
( i d, c) ( punt , ; )
( i d, y) ( op, : =) ( num, 3)
( op, +) ( i d, b) ( op, *)
( i d, c) ( punt , ; )
9
Analizador Sintctico
17
Anlisis Jerrquico
Agrupa los componentes lxicos en frases gramaticales que Agrupa los componentes lxicos en frases gramaticales que
el compilador utiliza
TOKENS
( i d, x) ( op, : =) ( i d, a)
Analizador
Sintctico
( op, +) ( i d, b) ( op, *)
( i d, c) ( punt , ; )
( i d, y) ( op, : =) ( num, 3)
( op, +) ( i d, b) ( op, *)
( i d, c) ( punt , ; )
18
Sentencias
Sentencia ; Sentencias
Asignacin Sentencia
Variable := Expresin Asignacin
X Variable + Expresin Variable := Expresin
a Variable * Expresin y Constante + Expresin
b Variable 3 Variable * Expresin
c b Variable
c
10
Compilador; Gramtica
19
Sent enci as : : = Sent enci a ; Sent enci as | Sent enci a
Sent enci a : : = Asi gnaci n | Condi ci onal | I t er at i va
i i i bl i Asi gnaci n : : = Var i abl e : = Expr esi n
Condi ci onal : : = i f Condi ci n t hen Sent enci as el se
Sent enci as
I t er at i va : : = whi l e Condi ci n do Sent enci as
Expr esi n : : = Var i abl e- Nmer o + Expr esi n |
Var i abl e- Nmer o * Expr esi n |
Var i abl e- Nmer o - Expr esi n |
Var i abl e- Nmer o / Expr esi n |
Var i abl e- Nmer o
Var i abl e : : = [ A- Za- z] [ A- Za- z0- 9]
*
Var i abl e- Nmer o : : = Var i abl e | Nmer o
Nmer o : : = [ 0- 9]
+
Analizador Semntico
20
Busca errores semnticos, rene informacin de tipos;
identifica operadores y operandos identifica operadores y operandos

: = : =
x + y +
a * 3 *
b c b c
11
Optimizacin
21

: = : =
x + y +
a * 3
b c
Generador de Cdigo
22

: = : =
x + y +
a * 3
b c
Push a api l a
Push b bpi l a
Load ( c) , R1 cR1
Mul t ( S) , R1 b*cR1
St or e R1, R2 R1R2 St o e , R1R2
Add ( S) , R1 a+b*cR1
St or e R1, ( x) R1x
Add #3, R2 3+b*cR2
St or e R2, ( y) R2y
12
Fases de un Compilador
23
Agrupacin lgica de un compilador g p g 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 Etapa Final
Fases que depende de la mquina, depende del lenguaje
intermedio
Optimizacin de cdigo, generacin de cdigo, operaciones con
la tabla de smbolos

Anda mungkin juga menyukai