Documente Academic
Documente Profesional
Documente Cultură
VICERRECTORA ACADMICA
ESCUELA CIENCIAS EXACTAS Y NATURALES
CTEDRA TECNOLOGA DE SISTEMAS
E-mail: ycarballo@uned.ac.cr
ORIENTACIONES ACADMICAS:
03307 Compiladores
Virtual
Actualizacin
Lic. Mario Quirs Monge
Edicin acadmica
Ing. Yenori Carballo Valverde, MSc
Telfono: 2202-1826
Costa Rica
Tabla de Contenidos
1. Introduccin ........................................................................................................................................ 3
2. Personal A Cargo De La Asignatura ................................................................................................... 3
2.1. Profesores-Tutores ...................................................................................................................... 3
2.2. Asistentes De Carrera ................................................................................................................. 4
2.3. Encargados Ctedra Y Carrera ................................................................................................... 4
3. Objetivos De La Asignatura ................................................................................................................ 4
3.1. Objetivo General .......................................................................................................................... 5
3.2. Objetivos Especficos .................................................................................................................. 5
4. Requisitos ........................................................................................................................................... 5
5. Modalidad De Estudio ......................................................................................................................... 5
5.1. Componentes Educacin Virtual ................................................................................................. 6
5.2. Componente Programa De Aprendizaje En Lnea (Pal).............................................................. 8
6. Materiales De La Asignatura............................................................................................................. 10
6.1. Material Oficial ........................................................................................................................... 10
6.2. Material De Apoyo ..................................................................................................................... 10
6.3. Servicios En Lnea De La Biblioteca.......................................................................................... 10
Consultas De Orden Acadmico.............................................................................................................. 10
7. Temas De La Asignatura .................................................................................................................. 11
8. Calendarizacin De La Asignatura ................................................................................................... 12
9. Evaluacin De La Asignatura............................................................................................................ 13
9.1. Poltica De Evaluacin ............................................................................................................... 13
9.2. Porcentajes De Evaluacin ....................................................................................................... 14
9.3. Actividades Formativas ............................................................................................................. 15
9.4. Actividades Sumativas .............................................................................................................. 16
Tarea #1 ........................................................................................................................................... 16
Tarea #2 ........................................................................................................................................... 18
Tarea #3 ........................................................................................................................................... 20
Tarea #4 ........................................................................................................................................... 22
Proyecto........................................................................................................................................... 24
Rbrica De Evaluacin Del Proyecto ............................................................................................ 33
2
Compiladores CDIGO 03307
1. INTRODUCCIN
2.1. Profesores-tutores
Por medio del correo institucional, correo interno de MOODLE o foro de consultas se
puede comunicar con los docentes, cualquier informacin recibida por otro medio no
se considera oficial y no es vlida.
3
Compiladores CDIGO 03307
3. OBJETIVOS DE LA ASIGNATURA
4
Compiladores CDIGO 03307
compilador.
4. REQUISITOS
Conocimientos previos
5. MODALIDAD DE ESTUDIO
5
Compiladores CDIGO 03307
Correo electrnico.
6
Compiladores CDIGO 03307
actividad.
propias para favorecer una comunicacin plena y completa por tanto, las
pegar no se permite).
ortografa.
7
Compiladores CDIGO 03307
6. Las actividades que se proponen responden un eje temtico, por ende, son
Tareas y proyectos
Las tareas y proyectos pretenden que el estudiante logre, a partir del estudio de los
materiales didcticos, un documento que demuestre mediante su propia creacin el
aprendizaje construido.
Ingrese a Moodle
Se recomienda utilizar los navegadores web: Internet Explorer, Microsoft Edge
o Mozilla Firefox, evite utilizar el navegador web Google Chrome, pues no es
compatible con Moodle, para acceder al portal de la Universidad Estatal a Distancia
digite la siguiente URL: http://www.uned.ac.cr
Haga clic en la opcin del Men Recursos didcticos y en ella encontrar dos
posibilidades:
8
Compiladores CDIGO 03307
Ejemplos:
1-234-567: digite 0102340567 (cuando su nmero de identificacin tiene 7
dgitos)
1-1456-052: digite 0114560052 (cuando su nmero de identificacin tiene 8
dgitos
Ejemplo:
Si usted naci el 7 de febrero de 1985: digite Uned.070285
En caso de tener problemas de acceso o haber olvidado sus datos de ingreso, puede
utilizar la opcin: Olvid su contrasea? Ubicada en la pgina principal de Moodle.
9
Compiladores CDIGO 03307
6. MATERIALES DE LA ASIGNATURA
La Biblioteca informa que por medio del acceso a biblioteca ubicado al final de la
pgina de la UNED www.uned.ac.cr usted podr:
Conocer ms sobre nuestros servicios
Acceder al catlogo en lnea
Solicitar material de otras bibliotecas por medio de un formulario.
Recomendar compra de libros.
Ingresar a la biblioteca virtual e-bibliotec@uned por medio de acceso
remoto, (digitando su usuario y contrasea de entorno estudiantil o su
correo institucional UNED) en donde tendr acceso a: tesis en texto
completo, revistas electrnicas, bases de datos con millones de
artculos, libros, audiolibros, tales como EBSCO, Isi Web of Knowledge,
Proquest, OCDE, Annual Reviews, Springer, Scopus, Cab Abstracts, E-
Libro, Digitalia, Ebrary y World E-Book Library, Dialnet, Pivot.
10
Compiladores CDIGO 03307
7. TEMAS DE LA ASIGNATURA
A continuacin, se presenta una tabla que describe los temas que el estudiante
debe leer y estudiar para las actividades de la asignatura.
Tema Correspondencia Pginas
en el libro
Tema 1: Introduccin a los compiladores Captulo 1 1-35
Tema 2: Un traductor simple orientado a
Captulo 2 39-108
la sintaxis
Tema 3: Anlisis lxico Captulo 3 109-190
Tema 4: Anlisis sintctico Captulo 4 191-302
Tema 5: Traduccin orientada por la Captulo 5 303-356
sintaxis
Tema 6: Generacin de cdigo Captulo 6 357-426
intermedio
Tema 7: Entornos de tiempos de Captulo 7 427-470
ejecucin
Tema 8: Generacin de Cdigo Captulo 8 505-548
Tema 9: Optimizaciones independientes Captulo 9 583-637
de la mquina
Tema 10: Paralelismo a nivel de Captulo 10 707-768
instruccin
Tema 11: Optimizacin para el Captulo 11 769-799
paralelismo y la localidad
Tema 12: Anlisis interprocedural Captulo 12 903-939
11
Compiladores CDIGO 03307
8. CALENDARIZACIN DE LA ASIGNATURA
Participar en foro de
presentacin. V
Semana 1
Del 11 al 17 de Tema 1 y 2
setiembre
Leer y analizar los temas
V
de estudio.
Semana 2 Tema 3 Leer y analizar los temas de estudio.
Del 18 al 24 de V
setiembre
Semana 3 Tema 4 Entregar Tarea Corta #1.
Del 25 de setiembre al V
1 de octubre
Semana 4 Tema 5 y 6 Leer y analizar los temas de estudio.
Del 2 al 8 de octubre V
12
Compiladores CDIGO 03307
9. EVALUACIN DE LA ASIGNATURA
13
Compiladores CDIGO 03307
14
Compiladores CDIGO 03307
Actividad Descripcin
En este espacio los estudiantes se presentan como
Foro de presentacin en participantes de la asignatura, brindando: el
nombre, el centro universitario al que pertenecen,
MOODLE
grupo y correo electrnico, adems de la
experiencia que tienen de los temas a estudiar.
Este espacio estar disponible durante todo el
Foro de consulta periodo y se utiliza para que los estudiantes
publiquen sus consultas.
Este foro es para publicar informacin tanto
Foro Novedades acadmica como administrativa de la asignatura y
de la carrera.
15
Compiladores CDIGO 03307
OBJETIVOS
DESARROLLO
Se recuerda que deben leer la totalidad de los captulos para poder responder las
preguntas.
16
Compiladores CDIGO 03307
17
Compiladores CDIGO 03307
Tarea #2
OBJETIVOS
Reafirmar conceptos del curso mediante investigaciones breves dando
respuestas detalladas a preguntas. En vista de que se desea destinar el
mayor tiempo posible a los avances del proyecto dada su complejidad, se
permite por esta ocasin que las preguntas se respondan sin necesidad de
hacer la formalidad de un documento (v.g. introduccin, conclusiones, etc.)
bastando la portada y la bibliografa segn las pautas dictadas por la
universidad. Sin embargo, cada respuesta de cada pregunta deber tener al
menos una pgina de extensin, a espacio sencillo, letra arial tamao 10; al
menos dos prrafos de esa hoja deben corresponder a opiniones, juicios o
conclusiones personales del estudiante sobre el tema de la pregunta.
Ir poniendo en prctica esos conceptos mediante la programacin de partes
del proyecto.
Ir adelantando el proyecto con avances parciales y controlados del desarrollo.
DESARROLLO
Se recuerda que deben leer la totalidad de los captulos para poder responder las
preguntas.
18
Compiladores CDIGO 03307
DECLARACIN DE VARIABLES
PALABRAS RESERVADAS DE JAVA
TIPOS DE DATOS
ASIGNACIN SIMPLE (como i = 10)
MANEJO DE ERRORES
// primer ejemplo
import java.util.*;
public class Discriminante {
public static void main (String[] args) {
double a;
double b;
double c;
double discriminante;
a = 1;
b = 2;
c = 1;
}
}
Se debe entregar el programa fuente en Java y las instrucciones
apropiadas para ejecutarlo. En este caso, se revisar en Netbeans.
19
Compiladores CDIGO 03307
Tarea #3
OBJETIVOS
DESARROLLO
Se recuerda que deben leer la totalidad de los captulos para poder responder las
preguntas.
20
Compiladores CDIGO 03307
OPERADORES ARITMTICOS
ASIGNACIN COMPLEJA
SALIDA DE DATOS
// segundo ejemplo
import java.util.*;
public class Operaciones {
public static void main(String[] args) {
int num1;
int num2;
num1=10;
num2=5 * num1;
println("El resultado de la suma es "+(num1+num2));
println("El resultado de la resta es "+(num1-num2));
println("El resultado de la multiplicacin es "+(num1*num2));
println("El resultado de la divisin es "+(num1/num2));
}
}
21
Compiladores CDIGO 03307
Tarea #4
OBJETIVOS
DESARROLLO
Se recuerda que deben leer la totalidad de los captulos para poder responder las
preguntas.
CONDICIONES
22
Compiladores CDIGO 03307
DECISIONES
CICLOS
USO DE JAVAC.EXE Y JAVA.EXE PARA COMPILAR
LOS PROGRAMAS EN YABA
Ejemplos de programas de este tipo
// Tercer ejemplo
import java.util.*;
public class Discriminante {
public static void main (String[] args) {
double a;
double b;
double c;
double discriminante;
a = 1;
b = 2;
c = 1;
discriminante = b*b - 4*a*c;
if (discriminante > 0) {
println("Hay dos soluciones reales distintas.");
}
if (discriminante == 0) {
println("Hay una solucin nica.");
}
if (discriminante <0) {
println("No hay soluciones reales.");
}
}
}
// Cuarto ejemplo
import java.util.*;
public class MuestraNumWhile {
public static void main(String[] args) {
int num;
num=1;
while (num<=100){
println(num);
num=num+1;
}
}
}
23
Compiladores CDIGO 03307
Proyecto
OBJETIVO
DESARROLLO
PAUTAS
El proyecto es individual.
Debe ser hecho en Java. No puede usarse otro lenguaje.
El entorno de desarrollo debe ser Netbeans, oficial de la universidad.
Debe ser en modo carcter.
Si el estudiante desea hacerlo en modo grfico no hay problema, pero no se brindan
puntos adicionales en la nota final.
NOCIONES BSICAS
YABA es un compilador sencillo (no genera ejecutable nativo) que permite compilar
programas bsicos hechos en un lenguaje similar al de Java llamado YABA; en
sntesis, se aceptan solo el programa principal main (no se permiten mtodos),
variables de tipos simples, las instrucciones de asignacin, la instruccin de decisin
IF/ELSE simple, as como el ciclo WHILE simple; no se permiten decisiones (IF) o
ciclos (WHILE) anidados.
24
Compiladores CDIGO 03307
Ejemplo.yaba
YABA debe crear un nuevo archivo de salida de errores, con el mismo nombre del
programa en YABA, solo que con el sufijo -YABA-errores y extensin .txt
25
Compiladores CDIGO 03307
Este archivo llevar, en primera instancia, una copia del programa en YABA, con las
lneas debidamente enumeradas hasta un mximo de 999 lneas; se puede asumir
que nunca ningn programa YABA superar ese lmite de lneas.
Ejemplo-YABA-errores.txt
Para implementar este mecanismo el estudiante deber investigar cmo manejar las
variables de ambiente de CMD necesarias para realizar esas invocaciones, as como
valorar si temporalmente debe cambiar la extensin del archivo .yaba a .java o bien
sacar una copia con extensin .java para poder ser compilada en Java y
posteriormente ejecutada en Java.
26
Compiladores CDIGO 03307
Los archivos de cdigo fuente en YABA se pueden escribir en cualquier editor, siempre y cuando
se grabe el contenido como texto sin formato (en cdigo ASCII). Las lneas de estos archivos
deben terminar con punto y coma (cuando proceda, como en Java) y al final con el carcter de
retorno de carro (ENTER o RETURN).
Los archivos de cdigo fuente en YABA siempre tendrn la siguiente estructura sin excepcin; no
se debe asumir y se debe verificar; si no la cumplen se deben enviar los mensajes de error
respectivos:
Fsicamente, el archivo que almacena este cdigo fuente se debe llamar Identificador.yaba
como ya se explic. Es importante recordar que tanto en Java como en YABA los identificadores
son sensibles a maysculas y minsculas. No se permiten mtodos, solo el main; en otras
palabras, toda la lgica del programa en YABA estar dentro del main delimitada por las llaves.
Cualquier token que no se reconozca como vlido de YABA (pero s de Java) se ignorar, pero en
el archivo de errores saldr el mensaje:
Por ejemplo: las instrucciones "import"; una vez detectados estos tokens que YABA no soporta el
resto de la lnea se debe ignorar y por lo tanto no compilar; la idea es permitir instrucciones no
27
Compiladores CDIGO 03307
soportadas por YABA pero s por Java. Para poder implementar esto, se deber llevar un arreglo
o vector de todas las palabras reservadas de Java. Para los tokens que no estn en esta lista y
que no correspondan a variables o instrucciones de YABA deber aparecer un mensaje como el
siguiente:
Se puede asumir que las clases de java.lang se usarn sin indicar el paquete.
Ejemplos:
println (digitos);
println ("fin");
COMENTARIOS
Si una lnea empieza con estos caracteres: // (sin espacio entre ellos) se debe interpretar como
comentario y entonces se puede asumir que el resto de la lnea es un comentario y por lo tanto no se
debe compilar.
Tambin, se puede asumir que nunca vendrn comentarios de los delimitados por /* y */
OPERADORES ARITMTICOS
Los operadores aritmticos vlidos para YABA son:
+ Suma
- Resta
/ Divisin
* Multiplicacin
Se deben seguir las reglas de precedencia de operadores ya conocidas; recordar que las mismas pueden
ser alteradas por los caracteres de agrupacin (parntesis) definidos ms adelante. Tomar nota, adems,
de la naturaleza unaria del signo negativo. Se puede asumir que las expresiones de los programas en
YABA solo traern estos operadores aritmticos.
NOTA
En particular, las formas de operadores como i++ o ++i no se soportan en YABA;
se puede asumir que nunca vendrn.
OPERADORES RELACIONALES
Los operadores relacionales vlidos para YABA son:
== Igual que.
> Mayor que.
>= Mayor o igual que (no debe haber blanco separador entre los dos caracteres).
< Menor que (no debe haber blanco separador entre los dos caracteres).
<= Menor o igual que (no debe haber blanco separador entre los dos caracteres).
!= Diferente que (no debe haber blanco separador entre los dos caracteres).
Se puede asumir que las expresiones de los programas en YABA solo traern estos operadores
relacionales.
AGRUPACIN
Los caracteres de agrupacin vlidos para YABA son:
( Parntesis izquierdo.
) Parntesis derecho.
Se debe reportar como error la falta de parntesis de apertura, de cierre, o los parntesis de ms.
28
Compiladores CDIGO 03307
Se usarn tantos parntesis como se juzgue necesario para darle claridad a las expresiones a calcular o a
validar en condiciones de IF y de WHILE.
INICIO/FIN DE INSTRUCCIONES
Los caracteres de inicio/fin de instrucciones vlidos para YABA son:
{ Llave izquierda.
} Llave derecha.
Se debe reportar como error la falta de llave de apertura, de cierre, o las llaves de ms.
Se usarn las llaves conforme a las reglas que dictan los manuales de Java.
VARIABLES
En YABA los identificadores se definen siguiendo las reglas de Java, a saber:
PALABRAS RESERVADAS
Los identificadores que correspondan a los comandos o instrucciones que usa YABA o Java decimos que
son palabras reservadas y por lo tanto no pueden ser identificadores de variables. Como ya se indic,
para poder implementar esto se deber llevar un arreglo o vector de todas las palabras reservadas de
Java.
TIPOS DE DATOS
YABA maneja solo los siguientes tipos de datos simples o primitivos:
char
byte
short
int
long
float
double
Se puede asumir que las variables se declaran siempre sin hacerles asignacin y que ser solo una
variable por lnea.
Ejemplos:
int a;
int b = 2; <--------- YABA no lo soporta
double d;
char c = 100; <--------- YABA no lo soporta
char e;
ERRORES
YABA debe reportar al usuario los errores que detecta cuando analiza las hileras de caracteres que
conformar el archivo fuente que corresponde al programa.
29
Compiladores CDIGO 03307
Todos los errores que se vayan a manejar deben ser identificados por un cdigo y un texto.
La enumeracin de los errores queda a criterio del estudiante. Los errores deben ser claros y concisos y
referirse a solo una situacin de error por vez, de manera que un texto como ste:
Ejemplos:
ERROR 025: los tipos de datos no son congruentes.
ERROR 027: identificador no definido.
ERROR 030: falta un parntesis derecho.
ASIGNACIN
La asignacin de variables se hace mediante el operador relacional =; a las variables se les puede
asignar constantes, variables o expresiones que sean del mismo tipo; la violacin a esto se debe validar y
reportar como error.
Se puede asumir que solo va una instruccin de asignacin por lnea (solo una variable a la vez). El
identificador a la izquierda del igual debe ser vlido y no puede corresponder a uno no definido; es error y
se debe notificar.
El valor digitado (si es una constante) a la derecha del operador igual define el tipo:
El punto decimal debe ser seguido por al menos un dgito; en consecuencia, este valor es incorrecto:
123.
Debera ser 123 (para asignar a una variable entera) o 123.0 o 123.00 para asignar a una variable real. No
hay lmite en la cantidad de dgitos tanto a la izquierda como a la derecha del punto decimal.
Cuando lo que se asigna a la variable es una expresin en notacin infija (la que normalmente usamos los
humanos) construida usando uno, varios o todos los trminos definidos en este documento, el programa
debe validar tanto sintctica como semnticamente la expresin. Si no fuera vlida se debe notificar al
usuario los errores que se haya podido determinar, sean sintcticos o semnticos.
Ejemplos
a = 1;
c =a + b;
d = 20;
letra ='E';
ENTRADA DE DATOS
Debido a la complejidad de los mtodos de entrada de datos, YABA no los maneja.
En su lugar se ponen valores a las variables como parte de las instrucciones del programa.
Ejemplo:
Ntese como los valores iniciales de las variables se dan en el programa y no mediante lectura.
30
Compiladores CDIGO 03307
Ejemplos:
println ("El precio es de " + precio + " euros");
println ("Mi nombre es " + "Juan");
DECISIONES
En YABA las decisiones se implementan mediante la instruccin IF y, opcionalmente, mediante el ELSE.
La sintaxis es la siguiente:
if (condicin) {
instrucciones
} else {
instrucciones
}
Se puede asumir que no vienen IF anidados, aunque s pueden venir varios independientes entre s.
Ejemplos:
if ( a> b ) {
j = a - b;
} else {
j = b - a;
}
CICLOS
En YABA los ciclos se implementan mediante la instruccin WHILE. La sintaxis es la siguiente:
while(condicin) {
instrucciones
}
Se puede asumir que no vienen WHILE anidados, aunque s pueden venir varios independientes entre s.
Ejemplos:
public class Cuadrado {
public static void main(String args[]) {
int contador;
contador = 1;
while( contador<= 5 ) {
println("*****\n");
contador = contador + 1;
}
}
}
31
Compiladores CDIGO 03307
publicclass Ciclo1 {
public static void main(String[] arg) {
int x;
x=1;
while (x<=100) {
print(x);
print(" - ");
x = x + 1;
}
}
}
CONDICIONES
Como se vio en los ejemplos anteriores, las instrucciones IF y WHILE manejan condiciones.
El programa debe validar tanto sintctica como semnticamente las condiciones.
Si no fueran vlidas se debe notificar al usuario los errores que se haya podido determinar.
32
Compiladores CDIGO 03307
ENTREGA
Se debern entregar como proyecto:
el programa o programas fuentes finales en Java.
Manual tcnico que explique cmo instalar y ejecutar el compilador YABA desde CMD.
En el manual tcnico deber venir una lista de los puntos que no se programaron o que no
funcionan correctamente y la justificacin del caso, a fin de valorar la calidad de la solucin
entregada y la viabilidad de dar por buenos algunos de esos puntos sin terminar.
RBRICA
Rbrica de evaluacin del proyecto
33
Compiladores CDIGO 03307
34