Está en la página 1de 22

INFORME DE LABORATORIO N1

TITULO: Utilizacin de Software PROTEUS


AO DE LA INVERSION PARA EL DESARROLLO RURAL Y LA SEGURIDAD ALIMENTARIA

NOMBRE:

Arellano Siancas Gian Marco

CURSO: DOCENTE: ESCUELA: FACULTAD:

Arquitectura de computadoras Lic. Luis Caldern Pinedo Ing. Informtica Industrial

INDICE GENERAL
I. INTRODUCCION GENERAL 1. INTRODUCCION 1.1 OBJETIVOS 1.2 FUNCION 2. INSTALACION DE HERRAMIENTAS 3. HERRAMIENTAS PARA SU CONSTRUCCION II. DESARROLLO DEL PROYECTO 4. ANALISIS LEXICOGRAFICO 4.1 PLANTEAMIENTO 5. ANALISIS SINTACTICO 5.1 ESTRUCTURA DEL ARBOL SINTACTICO 6. ANALISIS SEMANTICO III. FUNCIONAMIENTO

I.

INTRODUCCION GENERAL

La importancia en general de los compiladores en la informtica y en diversas reas de trabajo que utilicen la informtica sistematizada y que hagan uso de estos para para hacer fcil la funcin especfica que realiza dicho compilador. Ahora nos toca realizar uno siguiendo la enseanza terica de cmo elaborarlo, que herramientas podemos utilizar ya que la elaboracin de un compilador podemos decir que es un poco complicado. Su importancia fundamental de cualquier lenguaje de programacin es el ncleo o motor de que a simple vista no se ve. El motivo de su importancia es que sin este nosotros no entenderamos lo que nos muestra la maquina ya que solo veramos el lenguaje mquina, en nuestro caso nosotros lo elaboraremos en lenguaje JAVA. Entonces su importancia radica en el hecho que tiene que interpretar todo el cdigo fuente que se le asigne y hacerlo entendible para la computadora. Funcin: Traduce frmulas matemticas sobre reas de figuras geomtricas como rea del cuadrado, triangulo, rectngulo, trapecio a cdigo de lenguaje de alto nivel (JAVA). Resumen: Este traductor fue diseado utilizando un generador de analizador lxico como (JFLEX) y un generador de analizador sintctico como (JCUP), siguiendo cada una de sus premisas establecidas.

1. Introduccin
Historia de los compiladores La palabra compilador se atribuye con frecuencia a Grace Murray Hopper, quien visualizo la implementacin de un lenguaje de alto nivel, en forma bastante precisa para la poca, como una compilacin de una secuencia de subrutinas desde una librera. Los primeros esfuerzos para implementar lenguajes tipo ingls o castellano, fueron hechos de esta manera. Los primeros compiladores tipo traductor fueron escritos a finales de los 50s. Se ha otorgado a FORTRAN (formula translator, frmula traductora) el crdito de ser el primer lenguaje compilado con xito. Tom 18 aoshombre desarrollar el compilador FORTRAN, debido a que el lenguaje se estaba diseando al mismo tiempo que se implementaba. Compiladores Son programas que traducen cdigo fuente a programas escritos en cdigo objeto. El compilador deriva su nombre de la manera en que trabaja, buscando en todo el cdigo fuente, recolectando y reorganizando las instrucciones. En la compilacin se pueden detectar dos grandes fases muy bien diferenciadas, la fase del anlisis y la fase de la sntesis, adems de estas fases, un compilador realiza las tareas de administrar la tabla de smbolos y realizar el manejo de errores. Durante el anlisis se determinan las operaciones que implica el programa fuente y se registran en una estructura jerrquica llamada rbol. A menudo se usa una clase especial de rbol llamado rbol de sintaxis abstracta (AST) (tambin se le conoce como rbol de sintaxis abstracta (AAS)), donde cada nodo representa una operacin y los hijos son los argumentos de la operacin.

1.1 OBJETIVOS

Estudiar y comprender que es un compilador, sus funciones, sus componentes, herramientas y pasos a seguir para su creacin. Aprender el funcionamiento del JFLEX, JCUP. Finalmente e importante elaborar nuestro compilador.

1.2 Funcin:

Traduce frmulas matemticas sobre reas de figuras geomtricas como rea del cuadrado, triangulo, rectngulo, trapecio a cdigo de lenguaje de alto nivel (JAVA). Resumen: Este traductor fue diseado utilizando un generador de analizador lxico como (JFLEX) y un generador de analizador sintctico como (JCUP), siguiendo cada una de sus premisas establecidas.

2. INSTALACION DE HERRAMIENTAS
Prerrequisitos: 1) Tener las libreras de java. Pueden descargar el archivo jdk-6u18-windowsi586.exe en la pgina http://java.sun.com/javase/downloads/widget/jdk6.jsp. 2) Tener instalado NetBeans. Pueden http://netbeans.org/downloads/index.html. 3)
Tener JFlex. Pueden descargar http://jflex.de/download.html. el

descargarlo

en
en

la
la

pgina
pgina

archivo

jflex-1.4.3.zip

4) Tener Cup. Pueden descargar el archivo java-cup-11a.jar en la pgina http://www2.cs.tum.edu/projects/cup/. Descomprimimos

Entramos y buscamos la carpeta lib dentro de la cual estar un archivo llamado JFlex.jar

Para la integracin con el NetBeans solo ocupamos el archivo de JFlex.jar y el javacup-11a.jar. Si solo planean usarlo en un proyecto, es recomendable copiar los archivos en una carpeta x dentro del proyecto.

Ya habiendo creado el proyecto y teniendo la carpeta Tools adentro con los correspondientes archivos .jar nos pasamos a NetBeans y en el proyecto le damos click secundario y seleccionamos propiedades.

Y cliqueamos en la opcin de agregar un jar/folder. Buscamos la ubicacin de la carpeta Tools y seleccionamos los dos archivos jar.

3. HERRAMIENTAS PARA SU CONSTRUCCION


JFLEX JFlex es una herramienta para la generacin de analizadores lxicos escritos en java. A partir de un fichero de especificacin que describe las caractersticas lxicas de un lenguaje, JFlex genera un cdigo fuente compilable que puede ser utilizado como analizador lxico Cmo funciona JFlex? El fichero de especificacin de JFlex est dividido en tres secciones separadas por el delimitador %%. Cada una de ellas tiene una semntica diferente.

I. Seccin de cdigo de usuario. La seccin de cdigo de usuario se utiliza para incluir cualquier declaracin java (paquete, importacin o clase) que sea necesario para compilar el scanner. II. Seccin de directivas. Se incluyen directivas de compatibilidad con cup. Gestin de fila, columna y lexema, declaracin de estados y macros e inclusin de cdigo de inicializacin. III. Seccin de reglas patrn accin. En esta ltima seccin se define una familia de escneres lxicos, cada uno asociado a un estado distinto (YYINITIAL, COMMENT, etc.). Es posible saltar de uno a otro. La definicin se basa en reglas patrn accin que indican el cdigo java que debe ejecutarse cuando la entrada encaja con determinado patrn lxico. Si el cdigo java no acaba con un return el scanner continua buscando un nuevo token.

AREA DE DEFINICIONES // Aqu van paquetes, libreras, declaracin de estados lgicos etc. %% AREA DE REGLAS Y PATRONES // Aqu van las reglas cuando un lexema encaja con un patrn %% AREA DE FUNCIONES // Aqu va cdigo de usuario %%

LA CLASE TOKEN

Token es una clase hija que hereda de la clase que usa CUP para integrarse con JFLEX (javacup.runtime.Symbol). Esta clase facilita y encapsula la comunicacin entre anlisis lxico y anlisis sintctico desarrollado en Cup.

II.

DESARROLLO DEL PROYECTO


Anlisis lexicogrfico El analizador lexicogrfico tambin conocido como lexicador o escner, es la primera fase de un compilador. Su principal funcin consiste en leer los caracteres de entrada, agruparlos en secuencias de caracteres que forman un componente lxico (lexemas), clasificar estos en categoras y elaborar como salida una secuencia de componentes lxicos (tokens)

4. ANALISIS LEXICOGRAFICO

4.1

PLANTEAMIENTO

Nuestro traductor tendr como entrada desde un archivo de texto los parmetros y su frmula para calcular el rea de dicha figura que cumpla con los parmetros de su frmula general. Su resultado ser guardado en una variable rea de tipo int ya que nuestro traductor solo trabajara con nmeros enteros para cada uno de sus parmetros correspondientes, el analizador lxico evaluara la entrada, si es vlida el analizador lxico separara los componentes lexicogrficos (tokens) y los almacenara en un archivo de texto, caso contrario mostrara un error ya que lo ingresado no cumple con las reglas definidas para nuestro traductor, luego se pasa los
componentes lexicogrficos al analizador sintctico para la construccin del rbol sintctico y la salida sera un archivo.JAVA.

AREA DE LAS PRINCIPALES FIGURAS QUE NUESTRO TRADUCTOR CONVERTIRA A LENGUAJE JAVA AREA DEL CUADRADO: AREA DEL RECTANGULO: AREA DEL TRIANGULO: AREA DEL TRAPECIO:
DEFINIMOS NUESTRAS REGLAS A TRAVES DEL ARCHIVO LEXER.FLEX package Traductor; import static Traductor.Token.*; %% %class Lexer %type Token %line %column Comentario Comentario2 Espacio Salto Consta decimal entero areat areac ="/"[*] [^*]+ [*]"/" | "/"[*] [*]+ "/" =[/][/] ([^\r\n])* \r|\n

=[ ] =\r\n = \".*\" =[0-9]+ "."? [0-9]* =[0-9]* ="area""="({entero})("*")({entero})("/")"2" ="area""="({entero})("^")({entero})

arear areatr

="area""="({entero})("*")({entero}) ="area""="({entero})("+")({entero})("*")({entero})("/")"2"

%{ public String lexeme; public int linea; public int colum; %} %% {Comentario} {/*Ignore*/} {Comentario2} {/*Ignore*/} {Espacio} {/*Ignore*/} {Salto} {/*Ignore*/} {Consta} {/*Ignore*/} "=" {return ASSIGN;} "+" {return SUMA;} "*" {return MULT;} "-" {return RESTA;} "/" {return DIV;} {areat} {return AREA_TRIANGULO;} {areac} {return AREA_CUADRADO;} {arear} {return AREA_RECTANGULO;} {areatr} {return AREA_TRAPECIO;} {entero} {lexeme=yytext(); return INT;} {decimal} {lexeme=yytext(); return DOUBLE;} . {linea=1+yyline; colum=1+yycolumn; return ERROR;}

ESTE ARCHIVO(Lexer.flex) SE EJECUTA Y SE OBTIENE EL ARCHIVO LEXER.JAVA

5. ANALISIS SINTACTICO
Anlisis Sintctico El anlisis sintctico tambin conocido como parsing o parser, es el proceso de determinar si una cadena de componentes lxicos puede ser generada

por una gramtica. En el estudio de este problema, es til pensar en construir un rbol de sintaxis abstracta, aunque, de hecho, un compilador no lo construya. Sin embargo, un analizador deber poder construir el rbol, pues de otro modo, no se puede garantizar que la traduccin sea correcta. 6.1 ESTRUCTURA DEL ARBOL SINTACTICO La estructura de cmo se recorrer nuestro rbol sintctico con los lexemas ser en Inorden este mtodo de recorrido consiste en que primero se comenzara leer la Hoja izquierda luego ir a la raz y despus ir a la hoja derecha. CUADRADO ^

LADO

RECTANGULO x

BASE

ALTU RA

TRIANGULO /

x
2

BASE

Altura

TRAPECIO
/

+
2

Base menor

Base mayor

6. Anlisis Semntico La fase de anlisis semntico revisa el programa fuente para tratar de encontrar errores semnticos y rene la informacin sobre los tipos para la fase posterior de generacin de cdigo. En ella se utiliza la estructura

jerrquica determinada por la fase del anlisis sintctico para identificar los operadores, operandos de expresiones y proposiciones. Con base en el rbol de sintaxis abstracta construido, en el cual los operadores aparecen como los nodos interiores y los operandos de un operador son los hijos del nodo para ese operador. El trabajo que se realiza en el anlisis semntico mediante el uso de este rbol se denomina: Traduccin dirigida por la sintaxis. Un componente importante del anlisis semntico es la verificacin de tipos. Generacin de cdigo intermedio Despus del anlisis sintctico y semntico, algunos compiladores generan una representacin intermedia explicita del programa fuente. Se puede considerar esta representacin intermedia como un programa (que ya puede ejecutarse) para una mquina abstracta. Esta representacin intermedia debe tener dos propiedades importantes: debe ser fcil de producir y fcil de traducir al programa objeto.

III.

FUNCIONAMIENTO Aqu nos muestra la interfaz grfica de usuario en la cual se


mostrara el funcionamiento del traductor. Primeramente debemos leer el archivo fuente que se encuentra dentro de nuestro proyecto el cual se llama Fuente.txt y se mostrara en

el panel de Ingrese Expresin luego se realiza lgicamente el anlisis lxico y se muestra si hay errores y muestra los tokens en el panel de anlisis lxico y a la vez los guarda en un archivo de texto que se encuentra dentro del proyecto en la carpeta txt el archivo tokens.txt y en el panel anlisis sintctico muestra la estructura del rbol sintctico.

Aqu se muestra lo que contenia el archivo fuente.txt, luego presionamos el botn analizar para realizar el anlisis de las fases.

Se realiz el anlisis y se mostraron los resultados sin errores lxicos y con la estructura del rbol sintctico realizado y se habilita el botn generar cdigo para mostrarnos la estructura en lenguaje java de la frmula del rea del tringulo.

Aqu se muestra un mensaje satisfactorio de que se ha generado el archivo Triangulo.java

Buscamos la salida Triangulo.java dentro de la carpeta salida que est en el proyecto Traductorv2.1

Una vez encontrado procedemos a abrirlo directamente desde otro programa de programacin como JCreator.

Este es programa en java que calcula el rea del tringulo el cual se puede ya ejecutar desde java y mostrarnos el valor resultado del rea de dicha figura.

Este ser el resultado de la ejecucin del archivo Triangulo.java

También podría gustarte