g:\trabajo de informatica\compilador
DESCRIPTION
COMPILADORTRANSCRIPT
![Page 1: G:\trabajo de informatica\compilador](https://reader036.vdocuments.co/reader036/viewer/2022082607/55936af11a28ab0f748b4693/html5/thumbnails/1.jpg)
Compiladores I (96-97 14/04/23 02:48) - 1.1 -
COMPILADOR Dimensión de un Compilador
• Actividad Compleja
Poca complejidad Mucha complejidad
Poc
o vo
lum
en
Muc
ho v
olum
en
Programaselementales
Programaciónde gestión
Inteligencia ArtificialCompiladores
Programaciónmatemática
– Reducción a subproblemas
– Teoría (Simplificar las soluciones)• Fib(n) = if n<2 then 1 else Fib(n-1)+Fib(n-2)
– Metodología (Implementación de programas grandes)
![Page 2: G:\trabajo de informatica\compilador](https://reader036.vdocuments.co/reader036/viewer/2022082607/55936af11a28ab0f748b4693/html5/thumbnails/2.jpg)
Compiladores I (96-97 14/04/23 02:48) - 1.2 -
Generalidades
• Proceso de ejecución (interpretación)– La CPU es un intérprete
• Proceso de interpretación– Un programa (intérprete) ejecuta otro
programa
• Proceso de compilación– Un programa (compilador) traduce otro
programa a código máquina
• Proceso de precompilación– Un programa (precompilador) traduce otro
programa a otra representación más fácil de interpretar
• Estructura de un compilador– Análisis lexicográfico
– Análisis sintáctico
– Análisis semántico
– Generación de código
![Page 3: G:\trabajo de informatica\compilador](https://reader036.vdocuments.co/reader036/viewer/2022082607/55936af11a28ab0f748b4693/html5/thumbnails/3.jpg)
Compiladores I (96-97 14/04/23 02:48) - 1.3 -
Tiempo de Compilación
Programa fuente
Programaobjeto
Scanner
Parser
Analizadorsemántico
Generadorde código
Secuencia de símbolos
Árbolsintáctico
Árbol sintácticocon atributos
Secuenciade caracteres
Código
Tabla de símbolos
Com
pil
ador
![Page 4: G:\trabajo de informatica\compilador](https://reader036.vdocuments.co/reader036/viewer/2022082607/55936af11a28ab0f748b4693/html5/thumbnails/4.jpg)
Compiladores I (96-97 14/04/23 02:48) - 1.4 -
Código Fuente
• Tipos de Código Fuente– Secuencia de caracteres ASCII, EBCDIC,
Unicode, etc.
– Dibujo vectorial (DFD).
– Posiciones fijas en una hoja (fila, columna determinan la categoría sintáctica -RPG-)
– Opciones de menú / Selecciones en formulario (Visual Basic, C++, etc.)
• Distintos tipos de Lenguajes– Bajo nivel
• Hexadecimal
• Ensamblador / Macroensamblador
– Lenguajes de Alto Nivel• Especializados / Generales
• Imperativos, funcionales, lógicos
• Orientados a objetos
![Page 5: G:\trabajo de informatica\compilador](https://reader036.vdocuments.co/reader036/viewer/2022082607/55936af11a28ab0f748b4693/html5/thumbnails/5.jpg)
Compiladores I (96-97 14/04/23 02:48) - 1.5 -
Análisis Lexicográfico y Sintáctico
• Gramáticas y Lenguajes de Programación– ¿Cómo describir las formas /
combinaciones válidas del programa fuente?
– Gramáticas: Definición. Producciones
– Distintos tipos de gramáticas (Chomsky):• Tipo 0 Generales
• Tipo 1 Sensitivas al contexto
• Tipo 2 Libres de contexto
• Tipo 3 Regulares
– Partición en subproblemas: Tres niveles de gramáticas.
• Lexicográfica
• Sintáctica
• Semántica
![Page 6: G:\trabajo de informatica\compilador](https://reader036.vdocuments.co/reader036/viewer/2022082607/55936af11a28ab0f748b4693/html5/thumbnails/6.jpg)
Compiladores I (96-97 14/04/23 02:48) - 1.6 -
Niveles de Análisis
• Análisis Lexicográfico (Scanner)– Expresiones regulares
– secuencia de caracteres => secuencia de símbolos
• Análisis Sintáctico (Parser)– Gramáticas libres del contexto
– Descubrir la estructura gramatical del programa
– Construir el árbol sintáctico
• Análisis Semántico– Validar la semántica del programa
(información sensitiva al contexto)
– Formalización (gramática de atributos)
– Generación / utilización de la información semántica
– Tabla de Símbolos
![Page 7: G:\trabajo de informatica\compilador](https://reader036.vdocuments.co/reader036/viewer/2022082607/55936af11a28ab0f748b4693/html5/thumbnails/7.jpg)
Compiladores I (96-97 14/04/23 02:48) - 1.7 -
Errores y Generación de código
• Control de errores– Sólo detectar el 1er. error
– Detectar todos los errores, pero no demasiados
• Sincronización después del error
• Corrección de errores
• Generación de código– Formalización (semántica interpretativa)
– En un solo paso
– Mediante un código intermedio• Con optimización local
• Con optimización global
• Con optimización dependiente de máquina