Contenido - eafranco.com...•40 % Examen parcial •Asistencias •Las inasistencias a clases...

32

Transcript of Contenido - eafranco.com...•40 % Examen parcial •Asistencias •Las inasistencias a clases...

  • Contenido • Definición de compilador

    • Objetivo de la asignatura

    • Importancia de la asignatura

    • Temario

    • Entrega de practicas y tareas

    • Formas de la evaluación

    • Lenguaje de programación

    • Bibliografía

    • Avisos y actividades

    • Actitudes y valores

    • Tarea 01

    • Tarea 02

    01 Presentación del curso – Contenido Compiladores - Profr. Edgardo Adrián Franco Martínez

    2

  • Definición de compilador

    • Un compilador es un programa que lee un programa

    escrito en un lenguaje de programación, el

    programa fuente, y lo traduce a un programa

    equivalente en otro lenguaje , el programa objeto.

    • Como parte importante de este proceso de traducción, el compilador

    informa a su usuario de la presencia de errores en el programa fuente.

    01 Presentación del curso – Definición de compilador Compiladores - Profr. Edgardo Adrián Franco Martínez

    3

  • Compilador

    Programa

    Fuente Compilador Programa

    Objeto

    Mensajes

    de error

    01 Presentación del curso – Definición de compilador Compiladores - Profr. Edgardo Adrián Franco Martínez

    4

  • Anatomía de un compilador A

    nálisis

    S

    ínte

    sis

    La parte del análisis divide el programa

    fuente en sus elementos componentes y

    crea una representación intermedia del

    programa fuente.

    Construye el programa objeto deseado a

    partir de la representación intermedia del

    programa fuente.

    01 Presentación del curso – Definición de compilador Compiladores - Profr. Edgardo Adrián Franco Martínez

    5

  • Anatomía de un compilador

    Compiladores (02 Presentación del curso - Edgardo A. Franco)

    Analizador Sintáctico (Parser)

    Generador de Código

    Optimizador de Código

    Analizador Semántico

    Analizador Léxico (Scanner)

    Parse Tree

    Token stream

    Intermediate Representation

    Optimized Intermediate Representation

    Object code

    An

    álisis

    S

    ínte

    sis

    Program (character stream)

    01 Presentación del curso – Definición de compilador Compiladores - Profr. Edgardo Adrián Franco Martínez

    6

  • Objetivo de la asignatura

    • El alumno analizará las posibilidades que ofrezca un

    compilador para utilizarlo en toda su potencialidad.

    Asimismo; constituirá y evaluará un compilador; en el

    que empleará herramientas como: LEX y YACC.

    • “Comprender como funciona un compilador y

    algunas de las técnicas utilizadas en las distintas

    etapas de procesamiento de un programa fuente,

    técnicas que podrá usar en otro tipo de problemas

    de la computación.”

    01 Presentación del curso – Objetivo de la asignatura Compiladores - Profr. Edgardo Adrián Franco Martínez

    7

  • Importancia de la asignatura

    • Las técnicas empleadas por los compiladores para

    analizar o sintetizar programas fuente pueden ser

    empleadas para resolver otro tipo de problemas en

    la programación de sistemas.

    • El conocimiento de la estructura y funcionamiento de

    un compilador permitirá poder justificar el uso de una

    u otra plataforma para la construcción de un sistema

    de software.

    01 Presentación del curso – Importancia de la asignatura Compiladores - Profr. Edgardo Adrián Franco Martínez

    8

  • Temario

    • Unidad 1 “Definiciones básicas”

    • Unidad 2 “Compiladores e interpretes”

    • Unidad 3 “Análisis léxico”

    • Unidad 4 “Análisis sintáctico”

    • Unidad 5 “YACC”

    • Unidad 6 “Traducción dirigida por la sintaxis”

    • Unidad 7 “Análisis semántico”

    • Unidad 8 “Manejo de errores”

    • Unidad 9 “Generación de código intermedio”

    01 Presentación del curso – Temario Compiladores - Profr. Edgardo Adrián Franco Martínez

    9

  • Unidad 1 “Definiciones básicas”

    • 1.1 Lenguajes y gramáticas.

    • 1.2 Clasificación de las gramáticas.

    • 1.3 Derivaciones y reducciones.

    • 1.4 Árboles de sintaxis.

    • 1.5 Gramáticas ambiguas.

    • 1.6 Forma de Backus-Naur (BNF).

    01 Presentación del curso – Temario Compiladores - Profr. Edgardo Adrián Franco Martínez

    10

  • Unidad 2 “Compiladores e

    interpretes” • 2.1 Estructura de un compilador

    • 2.1.1 Función del analizador léxico

    • 2.1.2 Función del analizador sintáctico

    • 2.1.3 Tabla de símbolos

    • 2.1.4 Función del analizador semántico

    • 2.1.5 Etapa de análisis

    • 2.1.6 Etapa de síntesis

    01 Presentación del curso – Temario Compiladores - Profr. Edgardo Adrián Franco Martínez

    11

  • Unidad 3 “Análisis Léxico” • 3.1 Tokens y lexemas

    • 3.2 Algoritmo de los 2 buffers

    • 3.3 Expresiones regulares

    • 3.4 Definición y ejemplos de AFN

    • 3.5 Definición y ejemplos de AFD

    • 3.6 Construcción de Thompson de un AFD a partir de una expresión regular

    • 3.7 Conversión de un AFN a AFD (construcción de subconjuntos)

    • 3.8 Lenguaje LEX

    • 3.9 Escritura de programas LEX

    01 Presentación del curso – Temario Compiladores - Profr. Edgardo Adrián Franco Martínez

    12

  • Unidad 4 “Análisis sintáctico” • 4.1 Frases, formas senténciales, handles(mangos),

    prefijo viable

    • 4.2 Eliminación de recursión inmediata y no

    inmediata

    • 4.3 Factorización de gramáticas

    • 4.4 Analizadores Top-Down

    • 4.5 Analizadores Bottom-Up

    01 Presentación del curso – Temario Compiladores - Profr. Edgardo Adrián Franco Martínez

    13

  • Unidad 5 “YACC” • 5.1 Estructura de un programa YACC.

    • 5.2 Definición del tipo de la pila de YACC.

    • 5.3 Terminales y no terminales en YACC.

    • 5.4 Precedencia y asociatividad en YACC.

    • 5.5 Manejo de errores en YACC.

    • 5.6 Desarrollo de una aplicación utilizando LEX y

    YACC.

    01 Presentación del curso – Temario Compiladores - Profr. Edgardo Adrián Franco Martínez

    14

  • Unidad 6 “Traducción dirigida por la

    sintaxis” • 6.1 Atributos heredados

    • 6.2 Atributos sintetizados

    • 6.3 Conversión de atributos heredados a

    sintetizados.

    • 6.4 Desarrollo de una aplicación con LEX y YACC.

    (calculadora, derivador, graficador, etc.).

    01 Presentación del curso – Temario Compiladores - Profr. Edgardo Adrián Franco Martínez

    15

  • Unidad 7 “Análisis semántico”

    • 7.1 Diseño, implantación y administración de la tabla

    de símbolos

    • 7.2 Implantación de bloques y tipos de datos.

    • 7.3 Especificación de alcance de variables.

    • 7.4 Funciones y procedimientos.

    • 7.5 Registros de activación.

    • 7.6 Paso de parámetros.

    • 7.7 Llamada por valor.

    • 7.8 Llamada por referencia.

    01 Presentación del curso – Temario Compiladores - Profr. Edgardo Adrián Franco Martínez

    16

  • Unidad 8 “Manejo de errores”

    • 8.1 Planteamiento del problema.

    • 8.2 Técnicas básicas de detección de errores.

    • 8.3 Agregando símbolos de error.

    • 8.4 Proyecto utilizando LEX y YACC.(Calculadora con funciones, recursión, tipos de datos, variables locales y

    globales y estructuras de control: FOR, WHILE, CASE, IF

    THEN ELSE)

    01 Presentación del curso – Temario Compiladores - Profr. Edgardo Adrián Franco Martínez

    17

  • Unidad 9 “Generación de Código

    Intermedio” • 9.1 Máquina virtual

    • 9.2 Máquina objeto

    • 9.3 Administración de la memoria durante la

    ejecución.

    • 9.4 Código de 3 y 4 direcciones.

    • 9.5 Estructuras de control de flujo y de repetición (IF

    THEN ELSE, CASE, WHILE, FOR )

    01 Presentación del curso – Temario Compiladores - Profr. Edgardo Adrián Franco Martínez

    18

  • Entrega de practicas y tareas • La entrega de practicas y tareas se realizará a

    través de la página:

    http://computacion.cs.cinvestav.mx/~efranco

    Compiladores (02 Presentación del curso -

    Edgardo A. Franco)

    01 Presentación del curso – Entrega de practicas y tareas Compiladores - Profr. Edgardo Adrián Franco Martínez

    19

    http://computacion.cs.cinvestav.mx/~efrancohttp://computacion.cs.cinvestav.mx/~efranco

  • • Usuario y contraseña

    • Escribir y almacenar las claves de confirmación, para aclaraciones a con respecto a la evaluación.

    • El nombre del archivo a enviar deberá tener el tipo de trabajo, nombre de este y nombre del alumno. • P.g.

    • Mapa_mental_01_compiladores_de_Adrian_Franco.pdf

    • Tarea_03_Diagrama_de_flujo_edgardo_Franco.docx

    • Practica_01_FrancoEdgardo_MartínezJuan_SanchezAberto.rar

    Alg

    oritm

    ia y p

    rogra

    mació

    n e

    str

    uctu

    rada

    Cla

    se 01: P

    resenta

    ció

    n d

    el curs

    o

    Entr

    ega d

    e p

    rácticas y

    tare

    as

    20

    Grupo Usuario Contraseña

    6CV1 6cv1 compila6cv1

    6CV6 6cv6 compila6cv6

    Entrega de prácticas y tareas

    01 Presentación del curso – Entrega de practicas y tareas Compiladores - Profr. Edgardo Adrián Franco Martínez

    20

  • Entrega de practicas y tareas • Reportes y tareas en formatos PDF, DOC & DOCX

    • Enviar código fuente e instrucciones de compilación, etc.

    • En caso de entregar varios archivos comprimir en formato RAR sin contraseña. • Reportes y tareas

    • Portada

    • Encabezado en cada hoja con el nombre del alumno, materia, grupo, nombre del trabajo y número de página.

    • Bibliografía en formato IEEE.

    • Códigos y programas • Documentado (Nombre del alumno, versión, explicación del programa)

    • El nombre de las variables deberá ser adecuado y entendible (En español)

    • Documentación de funciones y partes importantes de los códigos según el objetivo del programa y la teoría vista en clase.

    • Instrucciones de compilación y capturas de pantalla de muestra del funcionamiento en los reportes.

    Compiladores (02 Presentación del curso -

    Edgardo A. Franco)

    01 Presentación del curso – Entrega de practicas y tareas Compiladores - Profr. Edgardo Adrián Franco Martínez

    21

  • Formato de los reportes de practica • Portada

    • Introducción

    • Planteamiento del problema

    • Diseño y funcionamiento de la solución (Descripción de la abstracción del problema y su solución, apoyándose de diagramas y figuras en un lenguaje claro)

    • Implementación de la solución (Según la solución diseñada como se implemento en el lenguaje de programación)

    • Funcionamiento (Verificación de la solución, pruebas y resultados de salida *Pantallazos)

    • Errores detectados (Si existe algún error detectado, el cuál no fue posible resolver o se desconoce el motivo y solo ocurre con ciertas condiciones es necesario describirlo)

    • Posibles mejoras (Describir posibles disminuciones de código en la implementación o otras posibles soluciones)

    • Conclusiones (Por cada integrante del equipo)

    • Anexo (Códigos fuente *con colores e instrucciones de compilación)

    • Bibliografía (En formato IEEE)

    Alg

    oritm

    ia y p

    rogra

    mació

    n e

    str

    uctu

    rada

    Cla

    se 01: P

    resenta

    ció

    n d

    el curs

    o

    Entr

    ega d

    e p

    rácticas y

    tare

    as

    22

    01 Presentación del curso – Entrega de practicas y tareas Compiladores - Profr. Edgardo Adrián Franco Martínez

    22

  • Formas de evaluación • 1er, 2do & 3er Parcial

    • 10 % Mapas mentales

    • 20 % Ejercicios y Tareas

    • 30 % Practicas

    • 40 % Examen parcial

    • Asistencias

    • Las inasistencias a clases equivalen a 2 decimas menos del

    parcial.

    • 2 retardos se consideran como una falta.

    • Tolerancia 10 minutos

    • Falta a los 15 minutos

    Compiladores (02 Presentación del curso -

    Edgardo A. Franco)

    01 Presentación del curso – Formas de evaluación Compiladores - Profr. Edgardo Adrián Franco Martínez

    23

  • Formas de evaluación

    Alg

    oritm

    ia y p

    rogra

    mació

    n e

    str

    uctu

    rada

    Cla

    se 01: P

    resenta

    ció

    n d

    el curs

    o

    Form

    as d

    e e

    valu

    ació

    n

    24

    • Participaciones en clase

    • Cada participación equivale a 1 decima extra al parcial.

    • Extraordinario

    • Para tener derecho a extraordinario, es necesario haber obtenido

    una calificación final mayor a 4.5 durante el curso.

    • Cualquier sanción establecida afectará la calificación del

    parcial.

    01 Presentación del curso – Formas de evaluación Compiladores - Profr. Edgardo Adrián Franco Martínez

    24

  • Lenguaje de programación • Para ejercicios y algunas practicas (Lenguaje C

    estructurado “ANSI C”)

    • LEX y YACC

    • Bajo ambiente LINUX (Versión que sea)

    Compiladores (02 Presentación del curso - Edgardo A. Franco)

    01 Presentación del curso – Lenguaje de programación Compiladores - Profr. Edgardo Adrián Franco Martínez

    25

  • Bibliografía • *Aho, Sthi & Ullman, Ed. Addison Wesley. "Compiladores:

    Principios, Técnicas y Herramientas". Addison Wesley, Mexico, 1990. 1ª Ed., 820 pgs.

    • *Jacinto Ruiz Catálan, Ed. Alfaomega. "Compiladores: Teoría e implementación". Alfaomega, 2010. 1ª Ed., 423 pgs.

    • Tremblay, Jean Paul & Sorense, Paul. "The Theory and Practice of Compiler Writing". Mcgraw-Hill, México, 1985. 1ª Ed., 796 pgs.

    • Holub, Allen. "Compiler Design Inc.". Prentice Hall, México, 1996. 3ª Ed., 420 pgs.

    • Schreiner, Axel & Friedman Jr., George. "Introduction to Compiler Construction With Unix" Prentice-Hall, México, 1993. 2ª Ed., 314 pgs.

    • Gries, David. "Construcción de Compiladores" Paraninfo, México, 1996. 1ª Ed., 410 pgs.

    • Pittman, Thomas & Peters, James. "The Art of Compiler-Design Theory and Practice" Prentice-Hall, N.Jersey, 1997. 1ª Ed., 351 pgs.

    Compiladores (02 Presentación del curso -

    Edgardo A. Franco)

    01 Presentación del curso – Bibliografía Compiladores - Profr. Edgardo Adrián Franco Martínez

    26

  • Bibliografía (Continuación) • Lemone, Karen. "Design of Compilers Techniques of Programming Language

    Translation" CRC Press, EUA, 1996. 1ª Ed., 225 pgs.

    • Fischer, Charles & Leblanc, Richard. "Crafting A Compiler". Benjamin/Cummings Publishing Company Inc, N. York, 1995. 1ª Ed., 413 pgs.

    • Hopcroft, J. & Ullman, J.D. "Introduction to Automata Theory, Languages and Computation". Addison-Wesley, EeU, 1991. 2ª Ed., 209 pgs.

    • Mason, Tony. “Lex and Yacc”. O´Reilly and Associates Inc. QA 76.76 .U84 M3

    • Teufel, Schmidt and Teufel. “Compiladores Conceptos Fundamentales”. Addison-Wesley, E.U., 1995. 2ª Ed., 179 pgs.

    • Lemore y Karen. “Fundamentos de Compiladores”. CECSA, México, 1996. 2ª Ed., 209 pgs.

    • Lesk, M. E. “Lex a Lexical analyzer generator, Commputing Science Techical” Report 39, AT & T Bell Laboratories, Murray Hill, Nueva Jersey

    • Backhause, Roland. "Syntax of Programming Languages: Theory And Practice" Prentice Hall, México, 1997. 2ª Ed., 418 pgs.

    Compiladores (02 Presentación del curso -

    Edgardo A. Franco)

    01 Presentación del curso – Bibliografía Compiladores - Profr. Edgardo Adrián Franco Martínez

    27

  • Avisos y actividades

    Alg

    oritm

    ia y p

    rogra

    mació

    n e

    str

    uctu

    rada

    Cla

    se 01: P

    resenta

    ció

    n d

    el curs

    o

    Avis

    os

    y a

    ctivid

    ades

    28

    • Cualquier tipo de aviso y actividades planeadas durante el semestre serán notificadas en la página Web del curso.

    • Consultar la página Web antes de clases para confirmar mi asistencia.

    • Contacto: [email protected]

    01 Presentación del curso – Avisos y actividades Compiladores - Profr. Edgardo Adrián Franco Martínez

    28

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • Actitudes y valores

    Alg

    oritm

    ia y p

    rogra

    mació

    n e

    str

    uctu

    rada

    Cla

    se 01: P

    resenta

    ció

    n d

    el curs

    o

    Actitu

    des y

    valo

    res

    29

    • Mis valores éticos fundamentales • Responsabilidad

    • Habilidad para responder a nuestros actos, ideales, compromisos,

    conocimientos, valores éticos, a la familia, al mundo en el que vivimos y

    a la sociedad. *Compromiso *Superación

    • Respeto

    • Reconocer que todo tiene un valor (persona, ser vivo, idea, opinión,

    etc.) y aunque para mi una cosa no tenga el mismo valor que para el

    resto, todos mis actos nunca deben de afectar a lo que los demás

    valoran. *Tolerancia *Empatía *Cortesía *Amabilidad

    • Honestidad

    • Consiste en comportarse y expresarse con coherencia y sinceridad

    (decir la verdad), y de acuerdo con los valores éticos

    propios.*Integridad *Justicia

    01 Presentación del curso – Actitudes y valores Compiladores - Profr. Edgardo Adrián Franco Martínez

    29

  • Actitudes y valores

    Alg

    oritm

    ia y p

    rogra

    mació

    n e

    str

    uctu

    rada

    Cla

    se 01: P

    resenta

    ció

    n d

    el curs

    o

    Actitu

    des y

    valo

    res

    30

    • Actitudes de una persona feliz • Amable

    • Amoroso (Con las personas que te rodean y con las actividades que realices)

    • Optimista

    • Tolerante

    • Cortes

    • Que necesito para lograr mis objetivos • Esfuerzo

    • Dedicación

    • Trabajo

    • Salud

    • Cuales deberían ser los principales objetivos de un buen profesionista • Desarrollarse cono persona (Ser humano) (Personal, familiar y social)

    • Siempre anteponer mi ética antes de actuar

    • Aprender en todo momento

    • Ayudar en todo momento a quien lo necesite

    • Compartir conocimiento

    • Desempeñar mi trabajo con gusto y siempre de la mejor manera posible sin condicionarlo a una ganancia económica. (Todo viene por añadidura no seas ambicioso)

    • Ser feliz

    No seas apático a esto, elige

    mejorar cada día como

    persona, nunca pases por

    encima de los demás para

    alcanzar tus metas.

    01 Presentación del curso – Actitudes y valores Compiladores - Profr. Edgardo Adrián Franco Martínez

    30

  • Tarea 01 "Autodescripción"

    31

    • Redacta de manera narrativa una autodescripción que contenga de manera implícita la respuesta a las siguientes preguntas • ¿Quién eres?.

    • ¿Cuáles son los valores que te conducen?

    • ¿Qué te ha llevado a ser quien eres?

    • ¿Cuáles son tus objetivos de vida?

    • ¿Qué esperas de ti, tu familia y la sociedad?

    *Se entregará antes del día Domingo 30 de Enero de 2011 (23:59:59 hora limite).

    *Valor 0.5 extra del primer parcial.

    *Se revisará redacción (coherencia y ortografía)

    *Deberá ser de 800 palabras mínimo .

    01 Presentación del curso – Tarea 01 Compiladores - Profr. Edgardo Adrián Franco Martínez

    31

  • Tarea 02 “Definiciones”

    Definir los siguientes conceptos:

    Lenguaje de programación

    Lenguaje Compilado

    Lenguaje Interpretado

    Lenguaje ensamblador

    Programa Fuente

    Programa Objeto

    Compilador

    Fecha de entrega: “A más tardar el día

    miércoles 26 de enero de 2011 a las 23:59:59

    horas”

    01 Presentación del curso – Tarea 02 Compiladores - Profr. Edgardo Adrián Franco Martínez

    32