Tema 1. Introducción y Conceptos Básicos

Slides:



Advertisements
Presentaciones similares
Análisis Sintáctico Capítulo 4.
Advertisements

Clasificación de los compiladores
Compiladores e intérpretes Análisis Sintáctico II
Compiladores e intérpretes Generación de código intermedio II
Compiladores e intérpretes
Prof. Ing.Maria Rosa Damaso Rios
Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta
¿Compilador ? Es un traductor que convierte un texto escrito en un lenguaje fuente y lo traduce a un programa objeto en código máquina.
Prototipo de compilador didáctico del lenguaje LC99
¿Cómo hacer para que una máquina comprenda el LN?
Facultad de Ciencias de la Computación
Fundamentos de programación
MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN
Lenguajes de programación
INSTITUTO TECNOLOGICO DE MINATITLAN
Analizadores Sintácticos Descendentes Predictivos
Unidad 1. Introducción al proceso de compilación.
Teoría de lenguajes y compiladores
Teoría de lenguajes y compiladores
INFORMACIÓN AUTOMÁTICA Ciencia que estudia el tratamiento
Programación 1 Introducción
Traducción dirigida por la Sintaxis
Teoría de lenguajes y compiladores
Tema 3. Optimización de Código
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Teoría de lenguajes y compiladores
Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.
ALGORITMOS, LENGUAJES Y TECNICAS DE PROGRAMACION
TRADUCTOR DE UN PROGRAMA
CONDICIONES DE LA MATERIA
M.C. Meliza Contreras González
Procesadores del Lenguaje
Teoría de lenguajes y compiladores
Problemas, algoritmos y programas: Modelar: Simular o programar su solución en un computador. Algoritmos: Es un conjunto finito, y no ambiguo de etapas.
Cobol C Pascal Fortran 1. INTRODUCCIÓN SmallTalk Java C++
FUNDAMENTOS DE PROGRAMACION
Resumen de Compilación Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Traducido por Christian Torres Universidad Ricardo.
Clasificación de Gramáticas y Manejo de Errores
 Un programa informático es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora. Sin programas, estas.
Teoría de lenguajes y compiladores
Procesadores de Lenguajes
LENGUAJES DE PROGRAMACIÓN
Introducción al Análisis Sintáctico
Programación de Sistemas
Análisis Léxico Área Software de Base.
COMPILADORES DIANA ROCIO OLAYA MESA.
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
INFORMATICA VII (Programación e implementación de sistemas)
Teoría de Autómatas y Lenguajes Formales Informática Técnica de Gestión ESCUELA SUPERIOR DE INFORMATICA Universidad de Castilla-La Mancha Tema 1. Introducción.
Programación de Sistemas FEI – 2008
Unidad 1. Introducción a los Compiladores.
PROGRAMAS INFORMATICOS
JULIAN DARIO RAMIREZ CORRECHA PROSOF12. °QUE ES UN ALGORITMO °CLASES DE ALGORITMOS °QUE ES UN LENGUAJE DE PROGRAMACION °QUE ES UN LENGUAJE DE PROGRAMACION.
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
Teoría de lenguajes y compiladores
UNIVERSIDAD LATINA (UNILA)
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322.
ESCUELA NORMAL “PROF. DARÍO RODRÍGUEZ CRUZ” Licenciatura en educación preescolar Alumnas: *Mayra * Monserrat * Idalia *Cinthia Curso: las TIC en la educación.
Prof. Flor Narciso Departamento de Computación
Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo.
Preposición: suma= var1 + var2 + 10; Análisis Léxico El analizador léxico lee los caracteres del programa fuente, y verifica que correspondan a una secuencia.
Lenguajes de Programación
INTRODUCCIÓN LI & MSC OSCAR RAMÍREZ CORTÉS U NIVERSIDAD DE LA H UASTECA V ERACRUZANA L ENGUAJES DE P ROGRAMACIÓN.
El proceso de compilación
Es un tipo especial de software que nos permite *Crear *Desarrollar *Programar otras aplicaciones. Haciendo uso de sus conocimientos lógicos y lenguajes.
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Programación de Sistemas
LENGUAJE DE PROGRAMACIÓN PARA JUEGOS Integrantes: Ruiz José Vargas Mary.
Autómatas y Compiladores. Primera Semana. Ricardo Vargas Del Valle A35469.
Transcripción de la presentación:

Tema 1. Introducción y Conceptos Básicos Lección 1 Generalidades

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)

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

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

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

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

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

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

Tema 1. Introducción y Conceptos Básicos Lección 2 Estrategias de Construcción de un Compilador

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

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

Compilar, Interpretar y Ejecutar un Programa Alpha P Ejecutar LISP Sparc P Interpretar C ® Pentium Pentium P C Compilar

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

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

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

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