primeraclase melo
DESCRIPTION
aaaaaaaaaaaaaaaaaaaaaaaaTRANSCRIPT
LENGUAJES Y TRADUCTORES
ProfesorCarlos A. Ruiz De La Cruz Melo
LENGUAJES Y TRADUCTORES
Objetivos
Exponer técnicas y métodos para definir un lenguaje formal. Construcción de un traductor.
1
LENGUAJES Y TRADUCTORESContenido: Parte I
Arquitectura básica del compiladorAspectos formalesAnálisis lexicográficoAnálisis sintácticoTabla de símbolos
2
LENGUAJES Y TRADUCTORES
Contenido: Parte II
Análisis sintácticoTratamiento de erroresAnálisis semánticoGeneración de código intermedio
3
LENGUAJELenguaje ( def. linguística)
Conjunto de palabras y formas de expresión por medio de las cuales se relaciona una comunidad de hombres determinada.
Lenguaje de programaciónSistema de signos utilizado para escribir un programa que ha de ejecutar un autómata
4
LENGUAJEDefinición Formal
Símbolo• Es una entidad abstracta
Alfabeto ( )• Cualquier conjunto finito y no vacio de
elementos que denominaremos símbolosLenguaje (* )• Es el conjunto de todas las palabras sobre
un alfabeto. Se le conoce como lenguaje universal
Lenguaje ( L )• Es un subconjunto de * 5
LENGUAJECadena
Secuencia finita de símbolos del alfabeto
Longitud de una cadena wNúmero de símbolos que contiene una cadena y se denota por |w|
Potencia de una cadenaUna cadena de “i” símbolos “a” se denota por ai 6
OPERACIONES CON LENGUAJES
UniónIntersecciónComplementaciónConcatenaciónCierre o clausura universal (estrella de kleene)Cierre positivo
7
TRADUCTOR
Un traductor es un programa que traduce un programa escrito en un lenguaje a un nuevo programa escrito en otro lenguaje.
LENGUAJE FUENTE
TRADUCTOR LENGUAJE OBJETO
8
TRADUCTORLenguaje fuente
Programas escritos en un lenguaje de alto nivel escritos en texto ordinario en el que hemos introducido las sentencias (instrucciones) del programa con un editor de texto, o con un Entorno Integrado de Desarrollo, que ya contiene el traductor.
Lenguaje objeto
Lenguaje resultante de la traducción 9
TIPOS DE TRADUCTORES
Ensamblador ( 80x86)Interprete ( visual basic, java)Compilador ( C, C++, pascal, delphi)
10
(leng.máquina)
(Alto nivel)
(Alto nivel)
TIPOS DE TRADUCTORES
Leng. Fuente Leng. ObjetoCOMPILADOR
Leng. Fuente ResultadosINTERPRETE
Leng. Fuente Leng. ObjetoENSAMBLADOR(asembler)
11
EMSAMBLADOR
Ejemplos
Intel 80x86Motorola 68000IBM RS/6000
Depende de la máquina por lo tanto hay un lenguaje máquina para cada CPU
12
EMSAMBLADORVentajas
VelocidadEficiencia de tamañoFlexibilidad
DesventajasTiempo de programaciónProgramas fuentes grandesPeligro de afectar recursos inesperadamenteFalta de portabilidad
13
COMPILADOREstructura de un compilador
PROGRAMA FUENTE
ANÁLISIS LÉXICO
OPTIMIZACIÓN DE CÓDIGO INTERMEDIO
PROGRAMA OBJETO
TABLA DE SÍMBOLOS
MANEJO DE ERRORES
ANÁLISIS SINTÁCTICO
ANÁLISIS SEMÁNTICO
GENERACIÓN DE CÓDIGO INTERMEDIO
14
COMPILADOR
Modelo de análisis y síntesis de la compilación
COMPILACION
ANALISIS SINTESIS
LEXICO SINTAXIS SEMANTICA GENERACION DE CODIGO
15
COMPILADOR
VentajaLos programas objeto se ejecutan rapidamenteLa información de mensajes de errores es mas detalladaEn bucles, se genera código equivalente al bucle
DesventajasLos programas objetos son poco robustosLos programas objeto no se pueden detenerNo son transportables entre distintas máquinas
16
COMPILADORProceso de compilación de un fragmento de programa
a:= 1;b:=2;c:=a+b;
Prog. Fuente
a= 1b=2c=a+b
mov a, 1mov al, amov b, 2mov bl, badd al, blmov c, al
mov al, 1mov bl, 2add al, blmov c, al
Análisis Generación de código
Optimización
17
AGRUPAR FASES
ETAPA INICIAL (Front-end)
ETAPA FINAL (Back-end)
Análisis léxico
Análisis sintáctico
Creación de tabla de símbolos
Análisis semántico
Generación de código intermedio
Optimización de código
Generación de código objeto
Dependen del lenguaje fuente y son independientes de la máquina
Dependen del lenguaje intermedio
18
C
AGRUPAR FASESEjemplo : Crear un compilador C para 2 máquinas diferentes
Front-end
Back-endUNIX
Back-endDOS
Genera código máquina para UNIX
Genera código máquina para DOS 19
AGRUPAR FASESEjemplo: crear tres compiladores para la misma máquina
PASCAL
Front-end
C
Front-end
COBOL
Front-end
Back-end
Intel 20
COMPILADOR DE VARIAS PASADAS
Varias fases de la compilación se implementan en un único pasoUn paso implica una léctura del archivo de entrada y en una escritura de un archivo de salidaUn compilador de varios pasos se denomina compilador de varias pasadas
21
COMPILADOR DE VARIAS PASADAS
VentajasFavorece la modularidadUtil cuando los recursos del sistema son limitados
DesventajaSon mas lentos mientras mas pasadas tengan
22
CONTEXTO DE UN COMPILADORLenguaje Fuente
Módulo de Carga
Lenguaje Ensamblador COMPILACION
MONTAJE
EJECUCION
....
Programa Ejecutable en Memoria
ObjetoCódigoReubicable
MONTADOR DE ENLACES(LINKER)
CARGADOR (LOADER)
ENSAMBLADOR
TRADUCTOR
ObjetoCódigoReubicable
ObjetoCódigoReubicable
23
TIPOS DE COMPILADORES
Ensamblador Compilador cruzado Metacompilador Descompilador Aucompilador
24
ESPECIFICACION DE UN COMPILADOR
Especificación léxica Especificación sintáctica Especificación semántica
25
INTERPRETEEstructura de un interprete
PROGRAMA FUENTE
ANÁLISIS LÉXICO
ANÁLISIS SINTÁCTICO
ANÁLISIS SEMANTICO
GENERACIÓN DE CÓDIGO OBJETO
EJECUCIÓN
TABLA DE SÍMBOLOS
MANEJO DE ERRORES
26
INTERPRETEVentajas
Los programas objeto se pueden detenerLos programas objeto son muy robustosFacilmente transportables entre distintas máquinasUn interprete necesita menos memoria que un compilador
DesventajaLos programas objeto se ejecutan de forma lentaEn bucles, se traduce tantas veces una línea como veces se repite el bucle
27
INTERPRETEProceso de interpretación de un fragmento de programa
a:= 1;b:=2;c:=a+b;
Prog.Fuente
a= 1 mov a, 1mov al, a
Análisis
b=2
c=a+b
mov b, 2mov bl, b
add al, blmov c, al
Generación de código
28
APLICACION DE COMPIL. E INTERPRETES
Desarrollo de interfaces textualesTratamiento de ficheros de texto con información estructuradaProcesadores de textoDiseño e interpretación de lenguajes para el formateo de texto y descripción de gráficosGestion de base de datosProcesamiento del lenguaje naturalReconocimiento de formas
29
METALENGUAJES
Diagramas de transiciónExpresiones regularesGramáticas
Los metalenguajes son herramientas para la descripción formal de los lenguajes
30