Descargar

Sp-ps1 : generación de código java para un análisis léxico (página 2)

Enviado por FRANCISCO RIOS ACOSTA


Partes: 1, 2, 3
en la fig. 2.2 hasta tener a la vista el enlace con leyenda JDK junto con el NetBeans IDE en un solo paquete. La fig. 2.3 muestra esta liga que permite descargar el JDK de java junto al IDE NetBeans. Fig. No. 2.3 Liga para descarga del JDK y el NetBeans IDE.

Cuando se hace click sobre este enlace se tiene la siguiente página como respuesta, fig. 2.4, donde ya es posible descargar el archivo que permitirá instalar el JDK junto al Netbeans IDE. Fig. No. 2.4 Descarga del Java SE kit de desarrollo.

edu.red

Ing. Francisco Ríos Acosta SP-PS1 : generación de código java para un análisis léxico Instituto Tecnológico de la Laguna, julio del 2009. pag. 6 de 29 Enseguida se hace click sobre el botón Download para recibir la respuesta mostrada en la fig. 2.5. En esta ventana se selecciona la plataforma, y se establece si se está de acuerdo con la licencia del software a descargar. Fig. No. 2.5 Selección de la plataforma y acuerdo con la licencia.

La acción que procede es realizar el click sobre el botón Continue >>, recibiendo la respuesta de la ventana para la selección de archivos requeridos donde se debe seleccionar el checkbox según se muestra en la fig. 2.6. Ya que se selecciona el checkbox se efectúa el click sobre la liga jdk-6u14-nb-6_7-windows-ml.exe. Fig. No. 2.6 Selección de archivos requeridos.

edu.red

Ing. Francisco Ríos Acosta SP-PS1 : generación de código java para un análisis léxico Instituto Tecnológico de la Laguna, julio del 2009. pag. 7 de 29 3 Descarga del generador de código SP-PS1. Sigue los pasos que a continuación se enumeran : 1. 2. 3. 4. 5. Entra al sitio www.friosa.com.mx. Haz click en la liga Página del Ing. Francisco Ríos Acosta Continua con la liga Mi trabajo académico en el ITL Una vez que se carga la información de las materias, haz click en la liga descargas. Haz click en la descarga 1 SP-PS1.zip y haz click en el botón DESCARGAR Cualquier duda es posible contestarla en la dirección de correo : [email protected]. Además, al momento de comunicarse con un servidor, se les enviará un documento donde se especifican las restricciones del SP-PS1. 4 Tokens a reconocer por el analizador léxico. Tomando como referencia al famoso libro “del dragón” cuyos autores son los Sres. Aho, Sethi y Ulman, el diseño de un analizador léxico inicia definiendo los tokens a reconocer para entonces seguir con los pasos : • •

• Escribir la definición regular que denote al lenguaje generado por cada token a reconocer. Aplicar las reglas de Thompson a cada definición regular, con el fin de generar al AFND que reconozca las cadenas del lenguaje denotado por la expresión regular –para cada token a reconocer-. El AFND producido por las reglas de Thompson sirve como entrada para el algoritmo de construcción de subgrupos, el cual genera el AFD equivalente al AFND –de Thompson-. Luego se aplica el algoritmo de particiones al AFD generado por el algoritmo de construcción de subgrupos, para obtener un AFD reducido u óptimo. Los AFD’s obtenidos siguiendo las anteriores etapas de desarrollo constituyen el cuerpo –esqueleto- del analizador léxico a construir. Esta metodología es la que sigue el software SP-PS1 para producir el código sea C++, sea ObjectPascal, sea C# o sea java. Cabe mencionar que no es la única metodología descrita para construir analizadores léxicos, pero es la que se utilizará en este trabajo.

El analizador léxico que se codificará consiste en el reconocimiento de 7 tokens : •

• • •

• • delim. Consiste de los delimitadores encontrados al codificar en cualquier lenguaje, también son conocidos como los caracteres blancos. Se reconocerán el caracter espacio, el nueva línea n, el retorno de carro r, el tabulador t. id. Denota a todos los identificadores que empiezan con letra o guión bajo, seguidos de cualquier cantidad de letras, dígitos y guiones bajos. opAsig. Representa a los operadores de asignación = , += , -= , *= , /= . opArit. Denota a los operadores aritméticos + , – , * , / . num. Contiene al lenguaje de los números enteros y números reales con al menos una cifra en su parte entera y al menos una cifra decimal, sin signo. sep. Los separadores en este caso sólo son los caracteres ( y ) -paréntesis circulares-. termInstr. Se refiere al caracter ; usado como terminador de instrucción en varios lenguajes de programación. Antes de pasar a la sección siguiente es recomendable leer el trabajo publicado en el sitio : http://www.monografias.com/trabajos-pdf/codigo-analisis-lexico-windows/codigo-analisis-lexico-windows Reglas de Thompson Construcción de subgrupos Particiones Expresión regular AFND AFD AFD óptimo

edu.red

Ing. Francisco Ríos Acosta SP-PS1 : generación de código java para un análisis léxico Instituto Tecnológico de la Laguna, julio del 2009. pag. 8 de 29 Este documento pdf contiene algunas de las cuestiones importantes que se deben seguir en el uso de el software SP-PS1 tal como trabajar en un mismo directorio, tanto al ejecutable como a los archivos de soporte codigo1.txt, codigo2.txt hasta codigo8.txt. También contiene paso a paso la generación del código C# para reconocer a los tokens id y opasig. 5 Generación del código java para el analizador léxico usando el SP-PS1. Inicialmente es necesario editar las 7 expresiones regulares para cada token y compilarlas según se indica en el documento pdf a que se ha hecho mención en la sección 4.

Las expresiones regulares a editar, compilar, obtener su AFND de Thompson, el AFD según la construcción de subgrupos, el AFD óptimo aplicando el algoritmo de particiones, y por último, guardar la información del AFD (páginas de la 4 a la 8 inclusive del documento http://www.monografias.com/trabajos-pdf/codigo-analisis-lexico-windows/codigo-analisis-lexico- windows), se listan a continuación. • delim. Archivo delim.exr {delim} -> [ nrt]+ [^ nrt] • id. Archivo id.exr {dig} -> [0-9] {letra} -> [A-Za-z] {guionBajo} -> _ {id} -> ({letra} | {guionBajo}) ( {letra} | {dig} | { guionBajo } ) * [^_A-Za-z0-9] • opAsig. Archivo opasig.exr {opasig} -> = | ( + | –

¿Porqué no sirve la expression regular | * | / ) =

{opasig} -> = | ( + | – | * | / ) =? a pesar que está bien hecha ? • opArit. Archivo oparit.exr {oparit} -> + | – | * | / • num. Archivo num.exr {entero} -> [0-9]+ [^.0-9] {real} -> [0-9]+ . [0-9]+ [^0-9] {num} -> {entero} | {real} • sep. Archivo sep.exr {sep} -> ( | ) • termInstr. Archivo termInstr.exr {termInstr} -> ;

Sólo con el fin de comprobar si las cosas se están haciendo bien, se muestran en la tabla siguiente, los AFD’s óptimos de los cuales se debe almacenar su información según se indica en la página 8 del documento /trabajos-pdf/codigo-analisis-lexico-windows/codigo-analisis-lexico-windows.

edu.red

Ing. Francisco Ríos Acosta SP-PS1 : generación de código java para un análisis léxico Instituto Tecnológico de la Laguna, julio del 2009. pag. 9 de 29

edu.red

Ing. Francisco Ríos Acosta SP-PS1 : generación de código java para un análisis léxico Instituto Tecnológico de la Laguna, julio del 2009. pag. 10 de 29

edu.red

Ing. Francisco Ríos Acosta SP-PS1 : generación de código java para un análisis léxico Instituto Tecnológico de la Laguna, julio del 2009. pag. 11 de 29 Ensamble del analizador léxico. Una vez que se han ingresado las expresiones regulares y hecho su conversión a AFD’s óptimos, se procede a ensamblar el analizador léxico. El ensamble significa añadir los AFD’s óptimos al analizador léxico en un cierto orden. De esta manera, el analizador léxico tomará a cada AFD óptimo en el orden en que se ensamblaron, para tratar de reconocer un determinado token en la entrada. Para iniciar el ensamble del analizador léxico, se debe hacer click sobre el menú principal en el elemento del menú con leyenda Análisis léxico y luego en Construcción de analizadores léxicos. El SP-Ps1 responde con la interfase mostrada en la fig. 5.1. Los AFD’s óptimos se presentan en la ventana superior izquierda, así que se deben de seleccionar y añadirlos en la ventana con la leyenda ANALIZADOR LÉXICO, en el orden en que el analizador vaya a utilizarlos para efectuar el reconocimiento de los tokens. El orden en que se deben ensamblar los AFD’s es : delim id opAsig opArit num sep termInstr ¿ Cuál es la razón de que el opAsig deba tener un orden anterior al del opArit ?

edu.red

Ing. Francisco Ríos Acosta SP-PS1 : generación de código java para un análisis léxico Instituto Tecnológico de la Laguna, julio del 2009. pag. 12 de 29 Fig. No. 5.1 Interfase para construir y generar código de un analizador léxico usando SP-PS1. Fig. No. 5.2 Ensamble de los AFD’s con un orden.

edu.red

Ing. Francisco Ríos Acosta SP-PS1 : generación de código java para un análisis léxico Instituto Tecnológico de la Laguna, julio del 2009. pag. 13 de 29 El ensamble es realizado cuando se hace click sobre el botón con el icono de la llave. A la pregunta si se quiere ensamblar, se debe contestar con un click en el botón con leyenda Yes, fig. 5.3. Fig. No. 5.3 Confirmación del ensamble.

Luego se procede a determinar cuales AFD’s tienen en su estado de aceptación el Retraer(), fig. 5.4. Son 3 AFD’s los que requieren configurar el método de Retraer() : delim, id y num. Fig. No. 5.4 Configuración del Retraer() en los AFD’s delim, id y num.

Después se puede simular el funcionamiento del analizador léxico utilizando la pestaña Simular tal y como se muestra en la fig. 5.5. donde se ha ingresado el texto : x1 += 30 * ( a – 3.58 ); y = 100;

Generación de código en java. Sólo resta entrar a la pestaña con leyenda Código java donde es posible generar el código de las 2 clases : Lexico y Automata escritas en java.

Lo anterior se logra haciendo click en el botón con leyenda Generar código java, fig. 5.6. En esta figura se muestran las 2 ventanas donde se deposita el código java para las 2 clases Lexico y Automata.

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente