Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Arquitectura Básica de un
Traductor
PROGRAMA
PROGRAMA TRADUCTOR OBJETO
FUENTE
EJEMPLO DE UN TRADUCTOR
hola.c hola.obj
#include “stdio.h”
int main(){
cout<<“hola”; TRADUCTOR
return 0;
}
PORQUE USAR UN TRADUCTOR?
• El microprocesador de la computadora
no entiende un programa en lenguaje de
alto nivel.
Programa Fuente(PF)
COMPILADOR
Programa Objeto
ENLAZADOR DATOS
RESULTADOS
EL PROCESAMIENTO COMPLETO DE UN
PROGRAMA
ENLAZADOR DATOS
RESULTADOS
EL PROCESAMIENTO COMPLETO DE UN
PROGRAMA
• El programa ejecutable normalmente
está en disco; para que se ejecute
necesita ser puesto en la memoria de
la computadora.
Programa Fuente
• El cargador normalmente pertenece al
sistema operativo.
COMPILADOR
Programa Objeto
ENLAZADOR DATOS
RESULTADOS
TIPOS DE TRADUCTORES
Existen básicamente dos tipos de
traductores, aunque también se
considera como traductor al
ensamblador: ❑ Macro ensamblador IBM
❑ Macro ensamblador de
❑ Ensambladores Microsoft
❑ Turbo Editassm
❑ Intérpretes ❑ Turbo Asembler
❑ Compiladores
❑ Perl
❑ javaScript
❑ Lisp
❑ VisualBasic
❑ FORTRAN ❑ SmallTallk
❑ ALGOL ❑ java
❑ C
❑ C++
❑ PASCAL
TIPOS DE TRADUCTORES
❑ Interpretes
❑ compiladores
Es un tipo de
compilador
PROGRAMA FUENTE
ANÁLISIS LÉXICO
ANÁLISIS SINTÁCTICO
TABLA DE MANEJO DE
ANÁLISIS SEMÁNTICO ERRORES
SÍMBOLOS
GENERACIÓN DE CÓDIGO
INTERMEDIO
OPTIMIZACIÓN DE
CÓDIGO INTERMEDIO
PROGRAMA OBJETO
MODELO DE ANALISIS Y SINTESIS
DE LA TRADUCCION
TRADUCCION
ANALISIS SINTESIS
Ventajas
▪Favorece la modularidad
▪Util cuando los recursos del sistema son limitados
Desventaja
▪Son mas lentos mientras mas pasadas tengan
LENGUAJE EMSAMBLADOR
Depende de la máquina por lo
tanto hay un lenguaje máquina
para cada fabricante
Ejemplos de fabricantes
• INTEL
• AMD
• CYRIX
• TEXAS INSTRUMENTS:
• IBM Versión simbólica de un lenguaje de
• THOMPSON máquina:
• NEXGEN
❑Cada código de operación se indica por un
código simbólico: ADD, MUL...
▪ Velocidad
▪ Eficiencia de tamaño
▪ Flexibilidad
❑ Desventajas
▪ Tiempo de programación
▪ Programas fuentes grandes
▪ Peligro de afectar recursos
inesperadamente
▪ Falta de portabilidad
QUE ES UN COMPILADOR?
PROGRAMA FUENTE
ANÁLISIS LÉXICO
ANÁLISIS SINTÁCTICO
TABLA DE MANEJO DE
ANÁLISIS SEMÁNTICO ERRORES
SÍMBOLOS
GENERACIÓN DE CÓDIGO
OBJETO
OPTIMIZADOR DE CÓDIGO
OBJETO
PROGRAMA OBJETO
COMPILADOR
Ventaja
Desventajas
mov a, 1
mov al, a mov al, 1
a:= 1; a= 1
mov b, 2 mov bl, 2
b:=2; b=2
mov bl, b add al, bl
c:=a+b; c=a+b
add al, bl mov c, al
mov c, al
AGRUPAR FASES EN UN TRADUCTOR
Análisis léxico
Análisis sintáctico Generación de código objeto
Análisis semántico
Optimización de Código
Creación de tabla de símbolos objeto
Front-end
Back-end Back-end
UNIX DOS
PASCAL C COBOL
Back-end
Intel
TIPOS DE Un compilador cruzado es
Programa
ANALISIS Y
Fuente
SINTESIS
Programa Intermedio
INTERPRETE Resultados
ESTRUCTURA DEL INTERPRETE
PROGRAMA FUENTE
ANÁLISIS LÉXICO
ANÁLISIS SINTÁCTICO
TABLA DE MANEJO DE
SÍMBOLOS ANÁLISIS SEMANTICO ERRORES
GENERACIÓN DE CÓDIGO
INTERMEDIO
EJECUCIÓN
INTERPRETE
❑ Ventajas
▪ Los programas objeto se pueden detener
▪ Los programas objeto son muy robustos
▪ Facilmente transportables entre distintas
máquinas
▪ Un interprete necesita menos memoria que un
compilador
❑ Desventaja
▪ Los programas objeto se ejecutan de forma
lenta
▪ En bucles, se traduce tantas veces una línea
como veces se repite el bucle
PROCESO DEL INTERPRETE
Generación
Prog.Fuente Análisis
de código
mov a, 1
a= 1
mov al, a
a:= 1;
mov b, 2
b:=2; b=2
mov bl, b
c:=a+b;
add al, bl
c=a+b mov c, al
DIFERENCIA ENTRE INTERPRETE Y COMPILADOR
INTERPRETE COMPILADOR
▪Es un programa que lee línea a ▪Es un programa que lee totalmente
línea un programa escrito en un un programa escrito en un lenguaje; el
lenguaje; en lenguaje fuente y lo va lenguaje fuente, y lo traduce a un
traduciendo a un código intermedio, programa equivalente a otro lenguaje,
para ejecutarlo. lenguaje objeto
INTERPRETE COMPILADOR
INTERPRETE COMPILADOR
▪ Típicamente, los programas interpretados ▪ El proceso de traducción se realiza
son mucho más portables que los una sola vez
compilados, ya que suelen existir
intérpretes del mismo lenguaje en
distintas plataformas. Los programas que
se van a interpretar no suelen ser muy
dependientes de su plataforma de
destino, siendo más portables.
INTERPRETE COMPILADOR
❑ Diagramas de transición
❑ Expresiones regulares
❑ Gramáticas
LABORATORIO
❑ Defina la gramática del lenguaje especificado
en la clase anterior.
❑ La gramática no debe incluir reglas de
producción recursivas, ni ambiguas.
❑ Incluya también en su trabajo el lenguaje
definido en la anterior clase para poder
comparar con su gramática.
❑ También indique solamente el tipo de
analizador sintáctico a usar.
cruizdelacruzm@unmsm.edu.pe