Sie sind auf Seite 1von 8

UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA

Facultad de Ingeniera en Sistemas


Centro Regional de Cuilapa
Primer semestre 2014
Curso: Compiladores Quinto Ciclo
Catedrtico: Ing. Julio Escobar Seccin A

P PR RO OY YE EC CT TO O D DE EL L C CU UR RS SO O
( (C Co om mp pi il la ad do or r y y T Tr ra ad du uc ct to or r a a J Ja av va a) )


1. OBJETIVOS DEL PROYECTO

1.1 Objetivo General
Qu el estudiante lleve a la prctica el conocimiento de la teora de compiladores,
a travs de un proyecto de aplicacin.

1.2 Objetivos Especficos
Comprender las 3 fases bsicas del proceso de compilacin (anlisis lxico,
sintctico y semntico).
Elaboracin detallada y documentacin de las fases de compilacin de un lenguaje
especfico.
Creacin e implementacin de las gramticas para el reconocimiento del lenguaje
del proyecto.


2. DESCRIPCIN DEL PROYECTO

El proyecto consiste en disear y programar un compilador con sus tres fases, que analice
el cdigo fuente del lenguaje descrito en la seccin 3, el cual tiene como base XML, para poder
ejecutar las instrucciones que all se solicitan, adems de traducir el cdigo a lenguaje Java.

El compilador deber programarse en lenguaje Java, con IDE a discrecin, previamente
avalado por el catedrtico (no se aceptar ningn otro lenguaje). Incluir como presentacin un
editor de texto que permitir cargar el archivo de entrada (con extensin XML). Luego proceder a
analizar el cdigo fuente, validando la sintaxis del mismo y obteniendo como salida lo especificado
en la siguiente seccin:

3. DESCRIPCIN DE SALIDAS DEL COMPILADOR

Descripcin de errores de cada fase (en una pantalla adicional a la del editor de texto). La
descripcin de cada error debe ser lo ms especfica posible, indicando lnea del error,
columna del error y tipo de error.

Salida a pantalla que el lenguaje arroje ( a travs de una ventana adicional a la del editor).
Esto es, si el lenguaje requiere una impresin a pantalla, entonces sta ventana tendr
dicha impresin.

Resumen de tabla de smbolos del compilador. (en una ventana adicional a la del editor).
En este caso, se pedir que se resuma en pantalla no solamente cada variable que se
detecte sino tambin agrupadas en sus clases y mtodos. Ejemplo:

CLASE: primera
DEFINICION:


PARTE NOMBRE TIPO PARAMETRO 1 PARAMETRO 2 PARAMETRO 3
VARIABLE var1 entero
VARIABLE var2 entero
VARIABLE var3 cadena
METODO iniciar void a: entero b: entero c: cadena
METODO imprime void mensaje: cadena
METODO sumar entero a: entero b: entero

CLASE: prueba (clase principal)
DEFINICION:

PARTE NOMBRE TIPO PARAMETRO 1 PARAMETRO 2 PARAMETRO 3
METODO main void a: Cadenas

Tambin deber incluir los objetos que se creen, cada objeto es una instancia de una
clase, y por lo tanto es una variable de una clase:

OBJETO: p1

PARTE NOMBRE TIPO VALOR
VARIABLE var1 entero 0
VARIABLE var2 entero 0
VARIABLE var3 cadena 'Hola'

OBJETO: s1

PARTE NOMBRE TIPO VALOR
VARIABLE var1 entero 0
VARIABLE var2 entero 0
VARIABLE var3 cadena 'Hola'


Traduccin a Java (si la compilacin es exitosa), y su respectiva corrida en Java. Para esto
debe generar el cdigo Java, en un archivo con extensin .java, debe compilarlo con el
JDK, para generar el archivo .class y correrlo desde la aplicacin, para generar la salida a
pantalla respectiva.

En el Manual Tcnico se deben de describir los posibles errores que pueden ocurrir al
analizar el archivo, pues en base a stos se tomar en cuenta la nota de la recuperacin de
errores.

4. DESCRIPCIN DEL LENGUAJE

Bsicamente el lenguaje utiliza el XML para expresar instrucciones de Creacin de lenguaje
Java, pero en espaol sencillo y entendible, adems de adicionar comentarios en Java que
permitirn entender qu hace cada instruccin. El XML permitir segmentar las secciones de
declaraciones, clases, mtodos, parmetros, etc. Las caractersticas que se implementarn sern
las siguientes:

El lenguaje permitir diferenciar las minsculas y las maysculas (es case sensitive).
Solamente las palabras reservadas no se les debe hacer distincin entre maysculas y
minsculas.
Es un lenguaje que permite, parcialmente, formato libre, por lo que se admiten espacios y
tabuladores en cualquier parte del cdigo.
No tiene comentarios.
Las palabras clave que tiene el lenguaje son reservadas (Ejemplo: PROGRAMA, CLASE,
NOMBRE, VARIABLES, TIPO, METODOS, DEFINICION, PARAMETROS, CUERPO,
ASIGNACIN, RECIBE, IMPRIMIR, IMPRIMIRFL, RETORNAR, PRINCIPAL, LLAMAR,
METODO).
El lenguaje se entiende como un lenguaje que definir etiquetas, que encapsularn
definiciones, contenidos, operaciones, etc., y permitir por ste medio, crear clases de
programacin de un lenguaje orientado a objetos, y cada clase podr tener lo siguiente:
Nombre de la Clase <NOMBRE>nombre</NOMBRE>
Declaracin de Variables <VARIABLES></VARIABLES>
Declaracin de Mtodos <METODOS></METODOS>
Cada Variable tendr una etiqueta para su Tipo y para su Nombre.
Cada Variable tendr una etiqueta para su definicin, que incluir Tipo, nombre y
parmetros y otra para su cuerpo, que incluir variables, sentencias de asignacin,
de impresin y de retorno.

Las sentencias anteriores slo pueden aparecer en las secciones que a continuacin se
describen, todo encerrado entre las etiquetas <PROGRAMA></PROGRAMA>

4. SECCION DE CLASE

Tendr 3 etiquetas principales:
NOMBRE: no contendr ninguna etiqueta interior.
VARIABLES: Puede contener las etiquetas siguientes, para cada variable definida:
NOMBRE: contendr el nombre de la variable. Los nombres cumplirn con los
requerimientos de Java para especificar un identificador.
TIPO: contendr el tipo, que para efectos prcticos, solamente podr ser entero y
cadena.
METODOS: Puede contener las etiquetas siguientes, para cada mtodo definido:
DEFINICIN: Tendr las siguientes etiquetas:
NOMBRE: contendr el nombre del mtodo. Los nombres cumplirn con
los requerimientos de Java para especificar un identificador.
TIPO: contendr el tipo, que para efectos prcticos, solamente podr ser
entero y void (el void es un tipo sin retorno).
PARAMETROS: Se definirn uno luego del otro, cada uno constar de:
NOMBRE: como el nombre de una variable.
TIPO: igual al tipo de una variable.
VARIABLES: Se podr definir variables como en la clase, y exactamente con las
mismas etiquetas de:
NOMBRE: contendr el nombre de la variable. Los nombres cumplirn con
los requerimientos de Java para especificar un identificador.
TIPO: contendr el tipo, que para efectos prcticos, solamente podr ser
entero y cadena.
CUERPO: Esta es quiz la seccin ms importante, y contendr las sentencias
propias de operaciones del lenguaje, que manipularn las variables o parmetros
del mtodo, puede tenerlas todas o slo algunas, pero al menos una de las
siguientes:
ASIGNACIN: Permitir asignar un valor puntual, de variable o de
operacin a una variable, la sintaxis se ver en el ejemplo de la seccin 9.
IMPRESIN: Habr dos tipos, una impresin sin fin de linea <IMPRIMIR>,
y una impresin con fin de lnea <IMPRIMIRFL>
RETORNAR: Si el tipo del mtodo es entero, entonces deber existir una
etiqueta de < RETORNAR > para devolver el valor del mtodo.

4.1 OPERACIONES DE LA ETIQUETA ASIGNACIN

Para efectos de simplicidad nicamente se podr tener, en primer lugar, la asignacin
directa de variables y valores puntuales, ejemplo:

Cadena = Variable Cadena
Cadena = Valor de Cadena
Entero = Variable Entera
Entero = Valor Entero

* El contenido de las variables tipo Cadena, deben ir siempre entre comilla simple ().

Tambin se podr tener operaciones de suma, resta, multiplicacin y divisin, ejemplo:

<ASIGNACION>c<RECIBE>a + b</RECIBE></ASIGNACION>
<ASIGNACION>c<RECIBE>a - b</RECIBE></ASIGNACION>
<ASIGNACION>c<RECIBE>a * 3</RECIBE></ASIGNACION>
<ASIGNACION>c<RECIBE>a / b</RECIBE></ASIGNACION>
<ASIGNACION>c<RECIBE>a ^ b</RECIBE></ASIGNACION>

Estas instrucciones se trasladaran a Java de la siguiente forma:

C=a + b; //Asignacion de valor
c=a b; //Asignacion de valor
c=a * 3; //Asignacion de valor
c=a / b; //Asignacion de valor
c=a ^ b; //Asignacion de valor


4.2 OPERACIONES DE ESCRITURA A PANTALLA
Las etiquetas de escritura a pantalla pueden tener ms de un valor que imprimir:

<IMPRIMIR>'La suma es', c</IMPRIMIR>

Esta instruccin se trasladara a Java de la siguiente forma:

System.out.print(La suma es , c); //Impresion a Pantalla


4.2 INDICACIN DE PARMETROS EN LLAMADA A UN MTODO DE OBJETO:

<LLAMAR>s1<METODO>sumar</METODO>
<PARAMETROS>5,5</PARAMETROS>
<RETORNO>c</RETORNO>
</LLAMAR>

Esta instruccin se trasladara a Java de la siguiente forma:

c = s1.sumar(5,5); //LLAMADA METODO



5. APLICACIN
El editor de texto debe contener las opciones siguientes:

Men ARCHIVO
Este contiene las opciones de:
Abrir para Editar
Guardar
Salir

Men ANLISIS
Este contiene las opciones de:
Analizar Archivo
Deber desplegar las 3 ventanas siguientes:
1.) Salida del Programa.
2.) Tabla de Smbolos (Estado Final).
3.) Mostrar el archivo de Errores Generado.
. 4.) Mostrar la traduccin a cdigo de Java.
5.) Mostrar la ejecucin del cdigo de Java traducido.

6. LENGUAJE A UTILIZAR

El lenguaje utilizado para el desarrollo de este proyecto es el lenguaje Java. NO se
aceptar ningn otro que no sea el definido. No se permite utilizar libreras especiales para manejo
de XML, debe analizarse smbolo a smbolo. Cualquier consideracin especial primero debe
consultarse con el catedrtico.

7. DOCUMENTACIN DEL PROYECTO
Toda la documentacin del proyecto debe ser proporcionada en archivos .PDF en el disco
donde se encuentren los programas fuentes del compilador, e IMPRESA.
Cartula
Introduccin.
Objetivos.
Conclusiones del proyecto y del lenguaje utilizado

7.1. Manual del Usuario
Requerimientos de Hardware y Software de la aplicacin.
Funcionamiento bien detallado de la aplicacin con un ejemplo, paso a paso de cmo
utilizar el programa y cada opcin del mismo.
Descripcin de los errores que puede arrojar el programa.
Descripcin de las salidas que el programa tendr.

7.2. Manual Tcnico
Descripcin detallada de las funciones y procedimientos.
Descripcin de la elaboracin de AFD para palabras del lenguaje y gramticas para
sintaxis del lenguaje.
Cronograma de actividades (En Project).
Documentacin interna del cdigo fuente.
Lista de los posibles errores considerados.

8. FECHA DE ENTREGA
Analizador Lxico:
Sbado 12 de abril de 2014
Analizador Sintctico y Semntico:
Sbado 10 de mayo de 2014

La calificacin es personal, por lo tanto, deben traer mquinas y probar sus proyectos
antes de la calificacin.
En caso de encontrarse dos o ms proyectos iguales o muy similares se considerarn
que son copias y se proceder a la anulacin de los mismos.


9. EJEMPLO ENTRADA:

<PROGRAMA>
<CLASE>
<NOMBRE>Primera</NOMBRE>
<VARIABLES>
<NOMBRE>var1</NOMBRE><TIPO>entero</TIPO>
<NOMBRE>var2</NOMBRE><TIPO>entero</TIPO>
<NOMBRE>var3</NOMBRE><TIPO>Cadena</TIPO>
</VARIABLES>
<METODOS>
<DEFINICION>
<NOMBRE>iniciar</NOMBRE><TIPO>void</TIPO>
<PARAMETROS>
<NOMBRE>a</NOMBRE><TIPO>entero</TIPO>
<NOMBRE>b</NOMBRE><TIPO>entero</TIPO>
<NOMBRE>c</NOMBRE><TIPO>cadena</TIPO>
</PARAMETROS>
</DEFINICION>
<CUERPO>
<ASIGNACION>var1<RECIBE>a</RECIBE></ASIGNACION>
<ASIGNACION>var2<RECIBE>b</RECIBE></ASIGNACION>
<ASIGNACION>var3<RECIBE>c</RECIBE></ASIGNACION>
</CUERPO>

<DEFINICION>
<NOMBRE>imprime</NOMBRE><TIPO>void</TIPO>
<PARAMETROS>
<NOMBRE>mensaje</NOMBRE><TIPO>cadena</TIPO>
</PARAMETROS>
</DEFINICION>
<CUERPO>
<IMPRIMIRFL>mensaje</IMPRIMIRFL>
</CUERPO>


<DEFINICION>
<NOMBRE>sumar</NOMBRE><TIPO>entero</TIPO>
<PARAMETROS>
<NOMBRE>a</NOMBRE><TIPO>entero</TIPO>
<NOMBRE>b</NOMBRE><TIPO>entero</TIPO>
</PARAMETROS>
</DEFINICION>


<VARIABLES>
<NOMBRE>c</NOMBRE><TIPO>entero</TIPO>
</VARIABLES>
<CUERPO>
<ASIGNACION>c<RECIBE>a+b</RECIBE></ASIGNACION>
<IMPRIMIR>'La suma es'</IMPRIMIR>
<IMPRIMIRFL>c</IMPRIMIRFL>
<RETORNAR>c</RETORNAR>
</CUERPO>
</METODOS>
</CLASE>


<CLASE>
<NOMBRE>Prueba</NOMBRE>
<METODOS>
<PRINCIPAL></PRINCIPAL>
<VARIABLES>
<NOMBRE>p1</NOMBRE><TIPO>primera</TIPO>
<NOMBRE>s1</NOMBRE><TIPO>segunda</TIPO>
<NOMBRE>c</NOMBRE><TIPO>entero</TIPO>
</VARIABLES>
<CUERPO>
<LLAMAR>p1<METODO>iniciar</METODO>
<PARAMETROS>0,0,'Hola'</PARAMETROS></LLAMAR>
<LLAMAR>s1<METODO>iniciar</METODO>
<PARAMETROS>5,5,'Mundo'</PARAMETROS></LLAMAR>
<LLAMAR>s1<METODO>sumar</METODO>
<PARAMETROS>5,5</PARAMETROS><RETORNO>c</RETORNO></LLAMAR>
<LLAMAR>s1<METODO>imprime</METODO>
<PARAMETROS>'Hola'</PARAMETROS></LLAMAR>

</CUERPO>

</METODOS>
</CLASE>

</PROGRAMA>


EJEMPLO DE SALIDA:

La suma es 10
Hola


EJEMPLO DE TRADUCCIN A JAVA:


public class primera
{
public int var1; //Declaracin de Variable
public int var2; //Declaracin de Variable
public String var3; //Declaracin de Variable

public void iniciar (int a, int b, String c)
{var1=a; //Asignacion de valor
var2=b; //Asignacion de valor
var3=c; //Asignacion de valor
}//FIN METODO

void imprime(String mensaje)
{System.out.println(mensaje); //Impresion a Pantalla
} //FIN METODO

int sumar(int a, int b)
{int c; //Declaracin de Variable
c = a + b; //Asignacion de valor
System.out.print(La suma es ); //Impresion a Pantalla
System.out.println(c); //Impresion a Pantalla
return c; //retorno de valor
} //FIN METODO

} //FIN CLASE

public class prueba
{
public static void main (String a[]) //Metodo Principal
{primera p1=new primera(); //CREACION OBJETO
primera s1=new primera(); //CREACION OBJETO
int c; //Declaracin de Variable
p1.iniciar(0,0,Hola); //LLAMADA METODO
s1.iniciar(5,5,Hola); //LLAMADA METODO
c = s1.sumar(5,5); //LLAMADA METODO
s1.imprime(Hola); // LLAMADA METODO

}//FIN METODO

}//FIN CLASE

Das könnte Ihnen auch gefallen