Sunteți pe pagina 1din 38

LENGUAJES Y TRADUCTORES

Estructura de los Traductores

Profesor: Carlos A. Ruiz De La Cruz Melo


Correo: zorroculto69@hotmail.com

CALIFICACION

Promedio
EP + EF+ PROY + PP
Final
=
4
Proyecto (PROY) = A. Lexico + A. Sintactico+ A.semantico
3

Promedio de
Practicas (PP) =

P1 + P2
2

OBJETIVOS
Conocer los conceptos tericos referentes a:

Definicin y diseo de lenguajes de


programacin,
Construccin de un traductor.

hola.c
#include stdio.h
int main(){
cout<<hola;
return 0;
}

hola.exe

TRADUCTOR

1011100010101
0101010110100
0101011011010
0110010100000
1101011000110

LENGUAJES Y TRADUCTORES
Contenido: Parte I

Arquitectura bsica del compilador


Aspectos formales
Anlisis lexicogrfico
Anlisis sintctico
Tabla de smbolos

Contenido: Parte II

Anlisis sintctico
Tratamiento de errores
Anlisis semntico
Generacin de cdigo intermedio

TRADUCTOR
Un traductor es un programa que
traduce un programa escrito en un
lenguaje a un nuevo programa escrito
en otro lenguaje.

Secuencia de instrucciones de bajo


nivel.
Cada tipo de procesador tiene su
propio conjunto de instrucciones de
bajo nivel.
nico lenguaje reconocido por el
procesador.
Extremadamente engorroso para el
programador.

Escrito en lenguaje de alto nivel: C,


C++,
Visual Basic, etc.
Adecuado para el programador.
No es reconocido por el
procesador.

PROGRAMA
FUENTE

TRADUCTOR

PROGRAMA
OBJETO

EL PROCESAMIENTO COMPLETO
DE UN PROGRAMA
Programa Fuente

COMPILADOR
Programa Objeto

ENLAZADOR

Programa Ejecutable

CARGADOR

DATOS
MEMORIA

Programa Ejecutable
RESULTADOS

EL PROCESAMIENTO COMPLETO DE UN
PROGRAMA
El programa objeto no est completo
para la ejecucin:
Programa Fuente

COMPILADOR

Las funciones han sido compiladas


Independientemente; falta enlazarlas.
Hace llamadas a funciones que se
encuentran en bibliotecas; falta
cargarlas o establecer las referencias

Programa Objeto

ENLAZADOR

Programa Ejecutable

CARGADOR

DATOS
MEMORIA

Programa Ejecutable
RESULTADOS

EL PROCESAMIENTO COMPLETO DE UN
PROGRAMA

Programa Fuente

El programa ejecutable normalmente


est en disco; para que se ejecute
necesita ser puesto en la memoria de
la computadora.
El cargador normalmente pertenece al
sistema operativo.

COMPILADOR
Programa Objeto

ENLAZADOR

Programa Ejecutable

CARGADOR

DATOS
MEMORIA

Programa Ejecutable
RESULTADOS

TIPOS DE TRADUCTORES
Existen bsicamente dos tipos de
traductores, aunque tambin se
considera como traductor al
ensamblador:

Ensambladores
Intrpretes

Macro ensamblador IBM


Macro ensamblador de
Microsoft
Turbo Editassm
Turbo Asembler

Compiladores

FORTRAN
ALGOL
C
C++
PASCAL

Perl
javaScript
Lisp
VisualBasic
SmallTallk
java

NECESIDAD DE INTERPRETES Y
COMPILADORES
Los lenguajes de alto nivel hicieron necesarios los
interpretes y compiladores a los cuales tambin se les
denomina TRADUCTORES a partir de los aos 50.
Desde entonces, gracias al descubrimiento de tcnicas
sistemticas para el manejo de muchas tareas que surgen
en la compilacin, al desarrollo de buenos lenguajes de
implantacin, entornos de programacin y herramientas de
software, ..el diseo y desarrollo de interpretes y
compiladores se ha simplificado enormemente.

El microprocesador de la CPU no entiende un lenguaje de alto


nivel, as que se hace necesario traducirlo a un lenguaje de bajo
nivel como un ensamblador que es la representacin mas
directa del cdigo maquina

TIPOS DE TRADUCTORES

Leng. Fuente

ENSAMBLADOR

(asembler)

Leng. Fuente

Leng. Objeto
(leng.mquina)

INTERPRETE

Resultados

COMPILADOR

Leng. Objeto

(Alto nivel)

Leng. Fuente
(Alto nivel)

LENGUAJE EMSAMBLADOR
Depende de la mquina por lo
tanto hay un lenguaje mquina
para cada fabricante

Ejemplos de fabricantes

INTEL
AMD
CYRIX
TEXAS INSTRUMENTS:
IBM
THOMPSON
NEXGEN

Versin simblica de un lenguaje de


mquina:
Cada cdigo de operacin se indica por un
cdigo simblico: ADD, MUL...
Asignaciones de memoria se dan con
nombres simblicos.

LENGUAJE EMSAMBLADOR
Ventajas
Velocidad
Eficiencia de tamao
Flexibilidad

Desventajas
Tiempo de programacin
Programas fuentes grandes
Peligro de afectar recursos
inesperadamente
Falta de portabilidad

ESTRUCTURA DE UN COMPILADOR

PROGRAMA FUENTE
ANLISIS LXICO
ANLISIS SINTCTICO
TABLA DE
SMBOLOS

ANLISIS SEMNTICO
GENERACIN DE CDIGO
INTERMEDIO
OPTIMIZACIN DE
CDIGO INTERMEDIO

PROGRAMA OBJETO

MANEJO DE
ERRORES

MODELO DE ANALISIS Y SINTESIS


DE LA COMPILACION

COMPILACION
SINTESIS

ANALISIS

LEXICO

SINTAXIS

SEMANTICA

GENERACION
DE CODIGO

COMPILADOR
Ventaja

Los programas objeto se ejecutan rapidamente


La informacin de mensajes de errores es mas
detallada
En bucles, se genera cdigo equivalente al
bucle

Desventajas

Los programas objetos son poco robustos


Los programas objeto no se pueden detener
No son transportables entre distintas mquinas

PROCESO DE COMPILACION
Prog.
Fuente

a:= 1;
b:=2;
c:=a+b;

Anlisis

a= 1
b=2
c=a+b

Generacin
de cdigo

mov a, 1
mov al, a
mov b, 2
mov bl, b
add al, bl
mov c, al

Optimizacin

mov al, 1
mov bl, 2
add al, bl
mov c, al

AGRUPAR FASES
ETAPA INICIAL
(Front-end)

ETAPA FINAL
(Back-end)

Anlisis lxico

Optimizacin de cdigo

Anlisis sintctico

Generacin de cdigo objeto

Anlisis semntico
Creacin de tabla de smbolos

Generacin de cdigo
intermedio

Dependen del lenguaje fuente y son


independientes de la mquina

Dependen de la maquina

CREAR
COMPILADOR
C
PARA
SISTEMAS OPERATIVOS DIFERENTES
C
Front-end

Back-end
UNIX

Genera cdigo
mquina para UNIX

Back-end
DOS

Genera cdigo
mquina para DOS

CREAR TRES COMPILADORES PARA LA


MISMA MAQUINA
PASCAL
Front-end

COBOL

Front-end

Front-end

Back-end

Intel

COMPILADOR DE VARIAS PASADAS


Varias fases de la compilacin
implementan en un nico paso

se

Un paso implica una lctura del archivo de


entrada y en una escritura de un archivo
de salida

Ventajas
Favorece la modularidad
Util cuando los recursos del sistema son
limitados

Desventaja
Son mas lentos mientras mas pasadas tengan

TIPOS DE
COMPILADORES

Ensamblador
Compilador cruzado
Metacompilador
Descompilador
Autocompilador

Un compilador cruzado es
un compilador capaz de crear
cdigo ejecutable para otra
plataforma distinta a aqulla
en la que l se ejecuta
Programa que recibe como
entrada las especificaciones
del lenguaje para el que se
desea obtener un compilador
y genera como salida el
compilador para ese lenguaje

Es un programa de ordenador que


realiza la operacin inversa a un
compilador
Compilador escrito en su
propio lenguaje fuente y capaz
de compilarse a s mismo

TIPOS DE INTERPRETES

Programa
Fuente

Programa
Fuente

INTERPRETE

ANALISIS Y
SINTESIS

PURO

Resultados

HIBRIDO

Programa Intermedio

INTERPRETE

Resultados

ESTRUCTURA DEL INTERPRETE


PROGRAMA FUENTE
ANLISIS LXICO
ANLISIS SINTCTICO

TABLA DE
SMBOLOS

ANLISIS SEMANTICO
GENERACIN DE CDIGO
OBJETO

EJECUCIN

MANEJO DE
ERRORES

INTERPRETE
Ventajas
Los programas objeto se pueden detener
Los programas objeto son muy robustos
Facilmente transportables entre distintas
mquinas
Un interprete necesita menos memoria que un
compilador

Desventaja

Los programas objeto se ejecutan de forma


lenta
En bucles, se traduce tantas veces una lnea
como veces se repite el bucle

PROCESO DEL INTERPRETE


Prog.Fuente

Anlisis
a= 1

a:= 1;
b:=2;
c:=a+b;

Generacin
de cdigo
mov a, 1
mov al, a

b=2

mov b, 2
mov bl, b

c=a+b

add al, bl
mov c, al

APLICACION DE COMPILADORES E
INTERPRETES
Desarrollo de interfaces textuales
Tratamiento de ficheros de texto con
informacin estructurada
Procesadores de texto
Diseo e interpretacin de lenguajes para
el formateo de texto y descripcin de
grficos
Gestion de base de datos
Procesamiento del lenguaje natural
Reconocimiento de formas

METALENGUAJES
Los
metalenguajes
son
herramientas para la descripcin
formal de los lenguajes

Diagramas de transicin
Expresiones regulares
Gramticas

PROYECTO
Condiciones del proyecto

Describir un lenguaje orientado a objetos


Construir un compilador para el lenguaje
El proyecto se podra trabajar en grupos de
4 alumnos
Puede usar java o C++ para el proyecto

DESCRIPCION DEL LENGUAJE


Estructura de un programa
Identificadores
constantes
Variables
Vectores de una dimension
Estructurados (clases)
Operadores
Expresiones
Instrucciones
Asignacion
Lectura/ escritura por pantalla
Sentencias de control de flujo
Si sino
Mientras
para
Subprogramas

ALGUNOS EJEMPLOS
declaraciones globales
main(){
variables locales
secuencia de sentencias
}
f1(){
variables locales
secuencia de sentencias
}
:
fn(){
variables locales
secuencia de sentencias
}

Estructura de
un programa

ALGUNOS EJEMPLOS
Tipos de datos a usar
Caracter
Entero
Float
Cadena
Declaracion de variables
int i, j, k;
char c, dato;

ALGUNOS EJEMPLOS
Sentencias de asignacion
La forma general de la sentencia de asignacion es:
Nombre_de_variable = expresion;
ejemplos
dato = cantidad;
x=c;

Constantes
Pueden ser enteras, reales, de caracter o cadena
Ejemplo:
c=A;
cout<<UNMSM;
total = 789;

ALGUNOS EJEMPLOS
Operadores
Operadores aritmeticos
Operadores relacionales y logicos
Otros operadores

Expresiones
Los operadores, las constantes y las variables son los constituyentes de las
expresionesPueden ser enteras, reales, de caracter o cadena
Ejemplo:
a + 5*b
(a >= 0) and ((b+5) > 10)
a
-a * 2 + b
-b + sqrt(b**2 - 4*a*c)
length(s) > 0

ALGUNOS EJEMPLOS
Sentencias
Por ejemplo en C tenemos:

Sentencias de etiqueta
Sentencias de expresion
Sentencia compuesta
Sentencia de seleccion
Sentencia de iteracion
Sentencia de salto

ALGUNOS EJEMPLOS
Funciones y Procedimientos
Las funciones son los bloques constructores de C y el lugar donde se da toda la
actividad del programa. La forma general de una funcion es:
Especificador_de_tipo nombre_de_la_funcion(lista de parametros)
{
cuerpo de la funcion
}

BIBLIOGRAFIA
AHO-ULLMAN(2008).
Compiladores, Principios,
tcnicas y herramientas

COLMAN-BUSBYROSS (1997).
Estructura de
Matematicas Discretas
para la Computacin

TEUFEL. SCHMIDT.
TEUFEL (1995).
Compiladores,
Conceptos
Fundamentales

KENNETH C.
LOUDEN (2004).
Construccin de
Compiladores,
principios y prctica

GRASSMANNTREMBLAY (1998).
Matematica Discreta
y Logica.

JACINTO RUIZ
CATALAN (2010)
Compiladores Teoria
e Implementacion

BIBLIOGRAFIA
Compiladores: principios, tcnicas
y herramientas, (2010), Alfred V.
Aho, Monica S. Lam, Ravi Sethi &
Jeffrey D. Ullman

S-ar putea să vă placă și