Académique Documents
Professionnel Documents
Culture Documents
Promedio de P1 + P2
Practicas (PP) =
2
OBJETIVOS
Conocer los conceptos teóricos referentes a:
Definición y diseño de lenguajes de
programación,
Construcción de un traductor.
hola.c hola.exe
#include “stdio.h” 1011100010101
int main(){ 0101010110100
cout<<“hola”; TRADUCTOR 0101011011010
return 0; 0110010100000
} 1101011000110
LENGUAJES Y TRADUCTORES
Contenido: Parte I
Contenido: Parte II
Análisis sintáctico
Análisis semántico
Tratamiento de errores
Generación de código
TRADUCTOR
Secuencia de instrucciones de bajo
nivel.
Cada tipo de procesador tiene su
Un traductor es un programa que propio conjunto de instrucciones de
traduce un programa escrito en un bajo nivel.
lenguaje a un nuevo programa escrito Único lenguaje reconocido por el
en otro lenguaje.
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
PROGRAMA TRADUCTOR OBJETO
FUENTE
EL PROCESAMIENTO COMPLETO
DE UN PF POR UN TRADUCTOR
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
NECESIDAD DE INTERPRETES Y
COMPILADORES
Los lenguajes de alto nivel hicieron necesarios los
interpretes y compiladores a los cuales también se les
denomina TRADUCTORES a partir de los años 50.
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
ESTRUCTURA DE UN TRADUCTOR
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
ESTRUCTURA DE UN COMPILADOR
PROGRAMA FUENTE
ANÁLISIS LÉXICO
ANÁLISIS SINTÁCTICO
TABLA DE MANEJO DE
ANÁLISIS SEMÁNTICO ERRORES
SÍMBOLOS
OPTIMIZACIÓN DE
CÓDIGO INTERMEDIO
PROGRAMA OBJETO
MODELO DE ANALISIS Y SINTESIS
DE LA TRADUCCION
TRADUCCION
ANALISIS SINTESIS
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
Front-end
Back-end Back-end
UNIX DOS
PASCAL C COBOL
Back-end
Intel
COMPILADOR DE VARIAS PASADAS
Ventajas
Favorece la modularidad
Util cuando los recursos del sistema son
limitados
Desventaja
Son mas lentos mientras mas pasadas tengan
TIPOS DE Un compilador cruzado es
Programa
INTERPRETE Resultados
Fuente
HIBRIDO
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
INTERPRETE COMPILADOR
Es un programa que lee línea a Es un programa que lee
línea un programa escrito en un totalmente un programa escrito en
lenguaje; en lenguaje fuente y lo un lenguaje; el lenguaje fuente, y
va traduciendo a un código lo traduce a un programa
intermedio, para ejecutarlo. equivalente a otro lenguaje,
lenguaje objeto
Un intérprete traduce el programa
cuando lo lee, convirtiendo el Un programa que ha sido
código del programa compilado puede correr por si
directamente en acciones. solo, pues en el proceso de
compilación se lo transformo en
otro lenguaje (lenguaje máquina).
La ventaja del intérprete es que
dado cualquier programa se El archivo generado por el
puede interpretarlo en cualquier compilador solo funciona en la
plataforma (sistema operativo). plataforma en donde se lo ha
creado.
DIFERENCIA ENTRE INTERPRETE Y COMPILADOR
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
PROYECTO
declaraciones globales
main(){
variables locales
secuencia de sentencias
Estructura de
}
f1(){ un programa
variables locales
secuencia de sentencias
}
:
fn(){
variables locales
secuencia de sentencias
}
ALGUNOS EJEMPLOS
Caracter
Entero
Float
Cadena
Declaracion de variables
int i, j, k;
char c, dato;
ALGUNOS EJEMPLOS
Sentencias de asignacion
Nombre_de_variable = expresion;
ejemplos
dato = cantidad;
x=c;
Constantes
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
Sentencias de etiqueta
Sentencias de expresion
Sentencia compuesta
Sentencia de seleccion
Sentencia de iteracion
Sentencia de salto
ALGUNOS EJEMPLOS
Funciones y Procedimientos
Compiladores:
principios, técnicas y
herramientas, (2010),
Alfred V. Aho, Monica S.
Lam, Ravi Sethi &
Jeffrey D. Ullman
BIBLIOGRAFIA
FÉLIX GARCÍA RAFAEL CABALLERO ROLDAN,
MERAYO (2005), TERESA HORTALA GONZALES,
NARCISO MARTI OLIET, SUSANA
Matemáticas Discretas,
NIEVA SOTO, ANTONIO PAREJA
3ra. Edición, Thomson LARA Y MARIO RODRÍGUEZ
ARTALEJO (2007), Matemáticas
Discretas para Informáticos