UNIVERSIDAD CAPITAN GENERAL GERARDO
BARRIOS
Estudiante:
Fidel Ángel Sandoval Bran.
Catedrática:
IGN. Marvin Osmaro Parada.
Facultad:
Ciencia &
Tecnología.
Carrera:
Ingeniería
En Sistemas & Redes Informáticas.
Cátedra:
Compiladores e interpretes.
Contenido:
- Inicio
- Presentación de programa
- Introduccióng
Normativa en el aula:
- GUARDAR SILENCIO.
- MANTENER EL CELULAR EN VIBRADOR.
- NO USAR GORRA DENTRO DEL SALÓN DE CLASES
- NO SALIR Y ENTRAR INNECESARIAMENTE DEL AULA.
- PEDIR LA PALABRA PARA INTERVENIR EN LA CLASE.
- RESPETAR LAS OPINIONES DE LOS DEMÁS.
- PUNTUALIDAD.
- OTRAS NORMAS QUE SERÁN INCLUIDAS EN EL TRANSCURSO DEL CICLO.
Acerca de…
ASIGNATURA:
COMPILADORES E INTERPRETES
DOCENTE
TITULAR:
ING. MARVIN OSMARO PARADA
GRUPO:
INGENIERIA
EN SISTEMAS Y
REDES INFORMATICAS CICLO I - 2016
HORARIO:
MARTES Y JUEVES.
HORA: 10.40 – 12.40 AULA: Lab. Computo y 3
DESCRIPCIÒN DE LA ASIGNATURA
- La cátedra de Compiladores e Intérpretes presenta una introducción al software cuya función única es compilar programas fuentes en un determinado lenguaje, y producir programas ejecutables, la asignatura cubre los fundamentos conceptuales, el principio de funcionamiento, la estructura básica; así también presenta un estudio de aspectos, léxicos, sintácticos y semánticos propios de un compilador.
OBJETIVO DEL AREA DE COMPETENCIA
- Al final se realiza un proyecto que será el producto de la asistencia técnica proporcionada al alumno y su ingenio en el diseño de compiladores e intérpretes.
Aplicar técnicas y procedimientos para traducir código fuente en código intermedio y final.
COMPETENCIAS ESPERADAS DE LA ASIGNATURA
- Propone modelos en versión académica de los módulos internos de un compilador, incluyendo la conversión de código fuente a código intermedio.
- Conoce la teoría relacionada con los traductores, compiladores e intérpretes.
- Conoce la estructura básica de un compilador
ACERCA DEL PROGRAMA DE
ESTUDIO…….
Unidad 01: Introducción a Los Traductores
¨
1.1 Conceptos Generales
¨
1.2 Clasificación de los Traductores
¨
1.3 Metalenguajes
¨
1.4 Estructura de un Compilador
Unidad 02: Análisis Léxico
¨
2.1 Definición – Implementación
¨
2.2 Conceptos de Token, patrones, lexema y atributo
¨
2.3 Especificaciones de un Token. Expresiones regulares
¨
2.4 El Autómata Finito
¨
2.5 La Tabla de Transición
¨
2.6 Tratamiento de Errores
¨
2.7 Tabla de Símbolos
Unidad 03: Análisis Sintáctico
¨
3.1 Gramáticas Libres de Contexto
¨
3.2 Derivación. Ambigüedad
¨
3.3 Analizador Sintáctico. Tipos
¨
3.4 Analizador Sintáctico descendente determinista LL(1)
¨
3.5 Comprobación si una gramática es LL(1). Iniciales y seguidores
autómatas de pilas
¨
3.6 Tabla de Análisis
¨
3.7 Tratamiento de errores.
Unidad 04 Análisis Semántico
¨
4.1 Introducción
¨
4.2 Especificación formal
¨
4.3 Fases en el Análisis Semántico
¨
4.4 Determinación de los tipos de Comprobaciones
Semánticas
a Realizar
¨
4.5 Implementación de acciones Semánticas
Unidad 05 Lenguajes Intermedios y Generación
de Código
¨
5.1 Lenguajes Intermedios, Definición y Tipos
¨
5.2 Optimización Independiente de la Máquina
¨
5.3 Generador de Código Intermedio y Final
¨
5.4 Optimización Dependiente de la Máquina Unidad 06 Proyecto
¨
6.1 Proceso para Diseñar un Lenguaje de Programación
¨
6.2 Implementación del Analizador Léxico
¨
6.3 Implementación del Analizador Sintáctico
¨
6.4 Implementación del Analizador Semántico
¨
6.5 Obtención de código Intermedio
Sistemas de Evaluación
ACTI.:
Actividad.
POND.:
Ponderación de cada actividad.
P. C.: Ponderación del cómputo. ASIST.:
Asistencia.
PRAC.: Practica
TAR. :
Tarea del Laboratorio.
E. C.: Examen Corto del Laboratorio
Introducción:
TRADUCTORES
Existen dos tipos principales de traductores de los lenguajes de programación de alto nivel:
- Compiladores
- Interpretes
Ocupan una posición
intermedia entre los lenguajes naturales humanos y los precisos lenguajes
de máquina.
Gracias a
la progresiva complejidad de los lenguajes traductores que permiten convertir
las instrucciones de un
lenguaje de programación al lenguaje de
máquina, la
programación puede usar lenguajes de computación que se parecen
cada vez más a los
lenguajes naturales.
A los lenguajes máquina se les conoce como lenguajes de primera generación.
Los ensambladores son los lenguajes de segunda generación.
Los
simbólicos de alto nivel de tipo procedural se les denomina de tercera generación y a
los relacionales
se considera que son de cuarta
generación.
A la tercera generación pertenecen lenguajes conocidos como el FORTRAN,
COBOL,
RPG, BASIC, PL1, SIMULA, ALGOL, PASCAL, ADA, C, LISP, PROGOL.
SQL es un lenguaje convertido en estándar mundial como lenguaje de
cuarta generación,
una serie de lenguajes orientados a objetos. Entre estos
destaca el Visual Basic de
Microsoft.
Además hay que prestar una seria atención al lenguaje de programación Java,
desarrollado por SUN
Compilador: DEFINICIÓN
Proceso
de traducción que convierte un programa fuente escrito en un lenguaje
de alto
nivel a un programa objeto en código máquina y listo por tanto para
ejecutarse
en el ordenador, con poca o ninguna preparación adicional.
Un compilador analiza
el programa y lo traduce al idioma "maquina".
La acción fundamental de los compiladores
es equivalente a la de un traductor humano , que toma nota de lo que esta
escuchando y reproduce por escrito en otra lengua.
INTERPRETES
Analiza
el programa fuente y lo ejecuta directamente, Ejemplo del traductor humano,
éste sería un traductor humano que conforme a lo que está escuchando va
ejecutando, sin generar ningún escrito.
Conceptos Relacionados
Para ser buen programador
Saber
como se obtiene un ejecutable permite saber más sobre corrección y eficiencia
Para entender más sobre lenguajes
Tipificación:
estática, dinámica, fuerte, polimorfismo, conversiones, sobrecarga de
operadores...
Estructura
de bloques, ámbitos
Paso de
parámetros
Gestión
de memoria, punteros
La teoría es imprescindible
Antes de la aplicación de teoría
de autómatas y lenguajes formales, programación, etc. Los
compiladores eran muy
malos
Aplicar la teoría y herramientas a otros
campos:
Intérpretes de comandos y
consultas
Lenguajes de simulación (GPSS)
Intérpretes Gráficos (PS, GIF,
JPEG)
Compilador; Definiciones I
Ensamblador:
Compilador
sencillo, el lenguaje fuente tiene una estructura simple que permite una
traducción de una sentencia fuente a una instrucción en código máquina.
Compilador cruzado:
Compilador
que traduce un lenguaje fuente a objeto, el objeto es para un ordenador
distinto del que compila
Esquema de Compilación
Agrupación
lógica de un compilador
Etapa Inicial
Fases, o
parte de fases que dependen del lenguaje fuente y que son independientes de la
máquina
Análisis
léxico, sintáctico, semántico y generación de código intermedio, manejo de
errores de cada parte
Etapa Final
Fases que
depende de la máquina, depende del lenguaje intermedio
Optimización
de código, generación de código, operaciones con la tabla de símbolos.
I.
HOJA DE DATOS GENERALES
HOJA DE DATOS GENERALES
Ciclo Académico
|
:I-2016
|
Carrera
|
: Ingeniería de Sistemas y
Redes
|
Asignatura
|
: Compiladores e
Interpretes
|
N° de orden en Pensum
|
: 28
|
Código
|
: 83
|
Número de Horas por Ciclo
|
: 80 Horas
|
Duración del Ciclo en Semanas
|
: 20 Semanas
|
Unidades Valorativas
|
: 4 U.V.
|
Identificación del Ciclo Académico
|
: VII
|
Pre – Requisito
|
: Programación
Computacional IV
|
Pre – Requisito Para
|
:
|
Horas Teóricas Semanales
|
: 2 Horas
|
Horas Prácticas Semanales
|
: 2 Horas
|
Duración de Horas - Clase
|
: 50 Minutos
|
HORARIO
MARTES 10:40 a
12:20 PM Lab. Computo
JUEVES 10:40 a
12:20 PM 3
I.
PERSONAL
ACADÉMICO RESPONSABLE
Decano /a: Licda. Azucena Edelmira Guevara
Vice-Decano
/a: Lic. Salvador Ernesto Manzanares
Profesor
Titular: Ing. Marvin Osmaro Parada Benítez
II.
DESCRIPCION
DE LA ASIGNATURA
La cátedra de
Compiladores e Intérpretes presenta una introducción al software cuya
función
única es compilar programas fuentes en un determinado lenguaje, y producir
programas ejecutables, la asignatura cubre los fundamentos conceptuales, el
principio de
funcionamiento, la estructura básica interna; así también presenta
un estudio de
aspectos, léxicos, sintácticos y semánticos propios de un
compilador. Al final se realiza
un proyecto que será el producto de la
asistencia técnica proporcionada al alumno y
su
ingenio en el diseño de compiladores e intérpretes.
I.
ELEMENTOS DE COMPETENCIAS GENERALES
Ø
Análisis y síntesis.
Ø
Planificar y Organizar
Ø Resolución
de problemas y Toma de Decisiones Ø Pensamiento
creativo e innovador.
Ø Pensamiento
Critico Ø Trabajo
en equipo.
Ø
Aprender – aprender.
Ø
Responsabilidad social y Compromiso
ciudadano.
Ø Comunicación
Lingüística Ø Compromiso
Ético.
Ø
Habilidad en el uso de las TIC´s.
II.
AREA DE COMPETENCIA ESPECIFICA
AREA DE COMPETENCIA ESPECIFICA
Aplicar técnicas y procedimientos para traducir código
fuente en código intermedio y final.
III. OBJETIVO DEL AREA DE COMPETENCIA
El desarrollo
tecnológico de las sociedades, implica diferentes escenarios, desde el nivel
cognoscitivo teórico - pragmático, pasando por la capacidad técnica de
implementar, integrar y operar, hasta ascender a los niveles más abstractos y
teóricos como es la construcción de recursos especializados (compiladores) que
permiten desarrollar nuevas herramientas de tecnología (lenguaje de
programación), que posteriormente serán utilizadas para automatizar el quehacer
de las sociedades. Lograr que los estudiantes exploren este último escenario
continúa siendo un reto insoslayable para la formación de profesionales en el
área de tecnología.
Es por esto que
el objetivo del área de competencia de la asignatura, se basa principalmente en
explora niveles abstractos y teóricos involucrados en la construcción de
recursos especializados (compiladores), que posteriormente permitan desarrollar
nuevas herramientas de tecnología (lenguaje de programación), orientadas a
automatizar el quehacer de las sociedades.
IV.
COMPETENCIAS ESPERADAS DE LA ASIGNATURA
COMPETENCIAS ESPERADAS DE LA ASIGNATURA
Ø Propone
modelos en versión académica de los módulos internos de un compilador,
incluyendo la conversión de código fuente a código intermedio.
Ø
Conoce la teoría relacionada con los
traductores, compiladores e intérpretes.
Ø
Conoce la
estructura básica de un compilador
Ø Explora
modelos académicos de los diferentes módulos que conforman los
compiladores.
Ø
Interpreta modelos académicos de los módulos
internos de un compilador.
Ø
Construye la base teórica de los analizadores
léxicos, sintáctica y semántica.
Ø
Aplica técnicas y procedimientos para traducir
código fuente en código intermedio.
Ø
Aplica técnicas de análisis léxico, sintáctico y
semántico
Ø
Propone modelos elementales de los módulos de un
compilador
V.
CONTENIDO DE LA ASIGNATURA
CONTENIDO DE LA ASIGNATURA
Unidad 01: Introducción
a Los Traductores
1.1
Conceptos Generales
1.2
Clasificación de los Traductores
1.3
Metalenguajes
1.4
Estructura de un Compilador
Unidad 02: Análisis
Léxico
2.1
Definición – Implementación
2.2
Conceptos de Token, patrones, lexema y atributo
2.3
Especificaciones de un Token. Expresiones
regulares
2.4
El Autómata Finito
2.5
La Tabla de Transición
2.6
Tratamiento de Errores
2.7
Tabla de Símbolos
Unidad 03: Análisis
Sintáctico
3.1
Gramáticas Libres de Contexto
3.2
Derivación. Ambigüedad
3.3
Analizador Sintáctico. Tipos
3.4
Analizador Sintáctico descendente determinista LL(1)
3.5
Comprobación si una gramática es LL(1). Iniciales y
seguidores autómatas de pilas
3.6
Tabla de Análisis
3.7
Tratamiento de errores.
Unidad 04 Análisis
Semántico
4.1
Introducción
4.2
Especificación formal
4.3
Fases en el Análisis Semántico
4.4
Determinación de los tipos de Comprobaciones Semánticas
a Realizar
4.5
Implementación de acciones Semánticas
Unidad 05 Lenguajes
Intermedios y Generación de Código
5.1
Lenguajes Intermedios, Definición y Tipos
5.2
Optimización Independiente de la Máquina
5.3
Generador de Código Intermedio y Final
5.4
Optimización Dependiente de la Máquina
Unidad 06 Proyecto
6.1
Proceso para Diseñar un Lenguaje de Programación
6.2
Implementación del Analizador Léxico
6.3
Implementación del Analizador Sintáctico
6.4
Implementación del Analizador Semántico
6.5
Obtención de código Intermedio
COMPETENCIAS ESPERADAS AL FINALIZAR LA ASIGNATURA
CONOCIMIENTOS
|
HABILIDADES
|
ACTITUDES
|
VALORES
|
Identifica el funcionamiento de los traductores
|
Aplica algoritmos
especializados para el análisis léxico, sintáctico y semántico.
|
Se
identifica como persona que desarrollará software y no solo utilizarlo a
nivel de usuario.
|
Persistencia
Ética
Responsable
Innovador
Análisis y síntesis.
Planificar y Organizar
Pensamiento creativo, innovador y crítico.
Trabajo en equipo.
Responsabilidad
social
|
Identifica el
funcionamiento compiladores e intérpretes
|
Modifica los módulos de un
compilador versión académica.
|
Se
identifica como persona que desarrollará software y no solo utilizarlo a
nivel de usuario.
|
|
CONOCIMIENTOS
|
HABILIDADES
|
ACTITUDES
|
VALORES
|
Conoce los métodos aplicados para analizadores
léxicos, sintácticos y
semánticos.
|
Propone
modelos elementales de los módulos de un compilador.
|
Es capaz de comprender y hacer frente a los
contenidos difíciles que incluye la asignatura.
|
y Compromiso
ciudadano.
Buena comunicación
|
Domina las técnicas para
generar código intermedio
|
Aplica las
técnicas para convertir código fuente en código intermedio y final.
|
Visualiza el desarrollo de
un proyecto de software y se considera capaz de su desarrollo.
|
|
Desarrolla prototipos de
lenguajes compiladores.
|
Combina las etapas para el
desarrollo de lenguajes intermedios.
|
Se visualiza como
profesional que desarrolla software que será usado por otras personas.
|
I.
PROPUESTA METODOLÓGICA
PROPUESTA METODOLÓGICA
METODOS
|
TECNICAS
|
METODOS PARA CLASES
TEÓRICAS
Ø Clases Expositivas
Ø Método de preguntas
Ø Lluvia de ideas
Ø Demostración de ejemplos
METODOS PARA CLASES
PRACTICAS
Ø Guías de ejercicios
Ø Resolución
de casos prácticos que permitan adquirir conocimientos fundamentales de
compiladores e intérpretes.
Ø Aprendizaje
basado en problemas Ø Hojas de cotejo
METODOS PARA TAREAS
Ø Método de
proyectos Ø Método de casos
|
Ø Proporcionar
a los estudiantes, metodologías y estrategias que les faciliten la
comprensión y desarrollo de código fuente para su respectiva
compilación.
Ø Resolución
de casos prácticos que permitan adquirir conocimientos fundamentales para el
desarrollo de un proyecto de lenguaje compilador.
Ø Desarrollo
de clases expositivas con apoyo audio y visual.
Ø Clases
demostrativas con ejemplos previamente desarrollados y su posterior
aplicación por parte del estudiante.
Ø Proporcionar
a los estudiantes las técnicas y procedimientos que les faciliten la
traducción del código fuente en código intermedio.
Ø Realizar
la gestión y administración del desarrollo de un proyecto de software.
|
I.
PROPUESTAS DE EVALUACIÓN Y CRITERIOS DE DESEMPEÑO
PROPUESTAS DE EVALUACIÓN Y CRITERIOS DE DESEMPEÑO
La evaluación
debe ser gradual y formativa, además de realizar evaluación sumativa que
permita determinar el grado de aprendizaje alcanzado. La propuesta de
evaluación y
criterios de desempeño son los siguientes:
Propuesta de
Evaluación: se realizaran un total de seis laboratorios y tres exámenes
parciales durante el ciclo. Cada cómputo incluye dos laboratorio y un
parcial. El
porcentaje para los
laboratorios es de 30% y 40% para los parciales.
Además se tomará en cuenta para la evaluación los siguientes
aspectos:
* Asistencia
a clases.
* Participación
en clases cuando se aplique la metodología de preguntas y lluvia de ideas.
* Capacidad
de análisis para resolver ejercicios propuestos.
* Entrega
de tareas individuales y grupales.
Criterios de desempeño:
- Interpretar y saber aplicar las etapas para desarrollar un lenguaje compilador.
* Resolución
de ejercicios de las guías de práctica.
* Trabajo
en equipo durante el proceso de creación de una guía final
sobre el proceso de
creación de un lenguaje compilador según
requerimientos.












No hay comentarios.:
Publicar un comentario