Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porAna Isabel Duarte Acosta Modificado hace 10 años
1
Tema 1. Introducción y Conceptos Básicos
Lección 1 Generalidades
2
Dimensión de un Compilador
Actividad Compleja Poca complejidad Mucha complejidad Poco volumen Mucho volumen Programas elementales Programación de gestión Inteligencia Artificial Compiladores matemá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)
3
Proceso de ejecución (interpretación) Proceso de interpretación
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
4
Compilador Tiempo de Compilación Programa fuente Scanner Parser
Secuencia de caracteres Scanner Secuencia de símbolos Parser Árbol sintáctico Compilador Analizador semántico Tabla de símbolos Árbol sintáctico con atributos Generador de código Código Programa objeto
5
Distintos tipos de Lenguajes
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
6
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
7
Análisis Lexicográfico (Scanner)
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
8
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
9
Tema 1. Introducción y Conceptos Básicos
Lección 2 Estrategias de Construcción de un Compilador
10
Estrategias de Construcción de un Compilador
Introducción: No es una pieza única, autónoma ni aislada ¿Porqué plantearse este problema más general ahora? => Implica restricciones sobre la organización y estructura del compilador Notación: Diagramas de Tombstone Programa Compilador Máquina Intérprete Compiladores cruzados Familia de compiladores Compiladores para máquina abstracta Migración de plataforma del software P L L ® S C M L M
11
Coherencia en los Diagramas de Tombstone
Todo se ejecuta sobre una máquina real Coherencia de interpretación Coherencia de compilación P M Iguales M P L Iguales L M Iguales M Iguales P L P S L ® S M Iguales M Iguales
12
Compilar, Interpretar y Ejecutar un Programa
Alpha P Ejecutar LISP Sparc P Interpretar C ® Pentium Pentium P C Compilar
13
Compiladores cruzados Compilador para una Nueva Máquina
Compilador Cruzado Compilador que genera código para una máquina diferente de la que utiliza para ejecutarse. Como hacer un compilador para una máquina Y con el mínimo esfuerzo posible Piezas que se tienen Objetivo Piezas a Desarrollar L ® X X X Y L ® Y Y L ® Y L
14
Compilador para una Nueva Máquina
Paso 1 L ® Y L L ® Y X L ® X X X Paso 2 L ® Y L L ® Y Y L ® Y X X Paso 1 y 2 L ® Y L L ® Y Y L ® Y L L ® Y X L ® X X X X
15
Compiladores para máquina abstracta
¿Como hacer un compilador de un lenguaje nuevo para todas las máquinas? L ® A C L ® A M L ® A C C ® M M Compilador M A C A M A C C ® M M Intérprete de la máquina abstracta M P L P A Compilar y ejecutar un programa P L ® A M A M M M
16
Familia de compiladores y Código Intermedio
¿Como hacer un compilador para muchas máquinas? L ® I C L ® I C L ® I M C ® M M Compilador M I ® M C I ® M C I ® M M C ® M M Generador de código M P L P I P M L ® I M I ® M M M Compilar y ejecutar un programa P M M
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.