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
Top Related