Lenguajes y compiladores

3
ESCUELA DE INGENIERÍAS FACULTAD DE INGENIERÍA EN TECNOLOGÍAS DE LA INFORMACIÓN Y LA COMUNICACIÓN PROGRAMA DE INGENIERÍA DE SISTEMAS E INFORMÁTICA CURSO: Lenguajes y Compiladores CODIGO: PRERREQUISITOS: Teoría de la Computación SEMESTRE: V INTENSIDAD HORARIA: 4 horas semanales HABILITABLE: NO OBJETIVOS Establecer las fases necesarias para entender los Compiladores actuales. Conocer las actividades del ciclo de desarrollo de un compilador. Implementar cada uno de los módulos de un compilador de lenguaje de alto nivel. PROPOSITOS DE ENSEÑANZA Brindar a los estudiantes el conocimiento asociado con el análisis de lenguajes formales y su síntesis en código de máquina. Reconocer mediante aplicación práctica los procesos de análisis lexicográfico, gramatical y semántico, como también los procesos de generación y optimización de código respectivamente. Proporcionar un ejercicio de síntesis sobre la teoría, los métodos y las técnicas aprendidas en lenguajes de programación, estructuras de datos, análisis de algoritmos y teoría de lenguajes formales. CONTENIDO DEL CURSO PRELIMINARES Aspectos generales e historia Importancia en el desarrollo de software Modelo de Análisis y síntesis de la compilación Arquitectura general de un Compilador ANÁLISIS LÉXICO Aspectos Generales de las gramáticas regulares, autómatas y diagramas de transición Administración y clasificación de los tipos de datos Propósito general del análisis lexicográfico 1

Transcript of Lenguajes y compiladores

Page 1: Lenguajes y compiladores

ESCUELA DE INGENIERÍASFACULTAD DE INGENIERÍA EN TECNOLOGÍAS DE LA INFORMACIÓN Y LA COMUNICACIÓNPROGRAMA DE INGENIERÍA DE SISTEMAS E INFORMÁTICA

CURSO: Lenguajes y CompiladoresCODIGO:PRERREQUISITOS: Teoría de la ComputaciónSEMESTRE: VINTENSIDAD HORARIA: 4 horas semanalesHABILITABLE: NO

OBJETIVOS

Establecer las fases necesarias para entender los Compiladores actuales.

Conocer las actividades del ciclo de desarrollo de un compilador.

Implementar cada uno de los módulos de un compilador de lenguaje de alto nivel.

PROPOSITOS DE ENSEÑANZA

Brindar a los estudiantes el conocimiento asociado con el análisis de lenguajes formales y su síntesis en código de máquina.

Reconocer mediante aplicación práctica los procesos de análisis lexicográfico, gramatical y semántico, como también los procesos de generación y optimización de código respectivamente.

Proporcionar un ejercicio de síntesis sobre la teoría, los métodos y las técnicas aprendidas en lenguajes de programación, estructuras de datos, análisis de algoritmos y teoría de lenguajes formales.

CONTENIDO DEL CURSO

PRELIMINARES

Aspectos generales e historiaImportancia en el desarrollo de softwareModelo de Análisis y síntesis de la compilaciónArquitectura general de un Compilador

ANÁLISIS LÉXICO

Aspectos Generales de las gramáticas regulares, autómatas y diagramas de transiciónAdministración y clasificación de los tipos de datosPropósito general del análisis lexicográficoArquitectura de la fase de análisis léxico y aplicación al proyectoAspectos generales de la Tabla de SímbolosTipos de errores léxicos

ANÁLISIS ESTRUCTURAL O SINTÁCTICO

Aspectos generales de las gramáticas independientes de contextoAdministración y clasificación de las estructuras que conforman los enunciados de un lenguajePropósito general del análisis sintácticoTipos de análisis sintácticos y mecanismos de implementaciónArquitectura de la fase de análisis sintáctico y aplicación al proyectoAspectos asociados a la Tabla de Símbolos y la generación de códigoTipos de errores sintácticos

1

Page 2: Lenguajes y compiladores

ANÁLISIS SEMÁNTICO (SEMÁNTICA DE LENGUAJES)

Aspectos generales de las gramáticas atribuidas, tipos de atributos y su asociaciónTraducción dirigida por la sintaxisAdministración y evaluación de las estructuras que conforman un código fuente analizadoPropósito general del análisis semánticoMecanismos de implementación (reglas semánticas y evaluación de atributos)Arquitectura de la fase de análisis semántica y aplicación al proyectoAspectos asociados a la Tabla de Símbolos y la generación de códigoTipos de errores semánticos

ADMINISTRACIÓN DE ERRORES

Aspectos generales de la administración de erroresAplicación de la administración de errores en cada una de las fases de análisisMecanismos de implementación y aplicación al proyecto

FASE DE SÍNTESIS

Aspectos generales de la generación de código intermedioAspectos generales de la generación de códigoTipos de traducción, máquinas abstractas Optimización de código y sus estrategias de implementación

METODOLOGIA

El curso se desarrollará mediante talleres de desarrollo por parte de los estudiantes.

Se dejarán algunos temas para investigación o autoestudio con asesoría del profesor.

Los estudiantes desarrollarán un proyecto que consta de dos partes. La primera consiste en construir un

analizador léxico de algún lenguaje de programación real. La segunda consiste en elaborar la gramática BNF del lenguaje de programación.

BIBLIOGRAFIA

KELLY, Dean. Teoría de Autómatas y Lenguajes Formales. Prentice Hall.

HOPCROFT Y ULLMAN. Introducción a la Teoría de Autómatas, Lenguajes y Computación. Editorial Cecsa.

AHO, JEFEY D. ULLMAN, Alfred V. The Theory of Parsing, Translation, andCompiling. Volume 1: Parsing. Prentice-

Hall 1972

MARÍN, S, Diego Fernando. Material de Clase Compiladores. Universidad del Quindío, 2004.

AHO, SETHI, ULLMAN. Compilers. Principles, Techniques and Tools. Addison-Wesley 1986.

TEUFEL, Schmidt. Compiladores. Conceptos Fundamentales. Addison Wesley Iberoamericana 1995

AHO, A. V., HOPCROFT, J. E., y ULLMAN, J.D. Data Structures and Algorithms.

LEWIS, H. y PAPADIMITRIOU, C. Elements of the Theory of Computation.

SIPSER, Michael. Introduction to the Theory of Computation.

Elaboró: Oscar Eduardo Sánchez GarcíaDocente de Teoría de la ComputaciónII Semestre Académico del 2012Universidad Pontificia BolivarianaRepública de Colombia

2