Hogar

Páginas: 6 (1399 palabras) Publicado: 9 de agosto de 2012
UNIVERSIDAD AUTÓNOMA DEL ESTADO
DE MÉXICO
CENTRO UNIVERSITARIO UAEM ZUMPANGO

COMPILADORES
“ANALIZADOR LèXICO”

INGENIERÍA EN COMPUTACIÓN

Planteamiento:
Diseño y construcción de un compilador léxico de un subconjunto del lenguaje Java.

Consideraciones Teóricas:
Compilador:
Un compilador no es más que un traductor, es decir, un programa que nos permite pasar información de unlenguaje a otro.

Analizador léxico:
Este analizador se encarga de formar los componentes léxicos del lenguaje fuente. Estos componentes reciben el nombre de token.
Token:
Un token es un elemento que puede formar parte del lenguaje fuente

Jlex:
Es una herramienta desarrollada en Java, la cual genera especificación en el que se indican los tokens permitidos por nuestro lenguaje con la ayudaJAVACUP es un analizador sintáctico o sea un parser-generador vamos a gestionar jflex.

PASOS PARA LA CREACION DEL ANALIZADOR LEXICO CON JFLEX
1. Se descarga el archivo jflex
2. Creación de una carpeta en este caso se llamara JFlex en donde estará el compilador jflex

3. Abrir netbeans que es en donde se desarrollara el compilador, crear un proyecto el cual lo llamaremosjflexnetbeans

4. Agregar a nuestro proyecto un archivo vacio que nos definira los token que aceptara el analizador léxico, lo llamaremos Lexer.flex

5. Después se crea un nuevo archivo que se llamara Token, este contendrá el nombre de todos los token que pertenecerán a nuestro lenguaje

6. Se agrega el jflex.jar como biblioteca

7. Una vez agregado el jflex como librería a nuestroproyecto, se lee el archivo Lexer.flex este generara el Lexer.java que analizara léxico-gráficamente el texto que se introduce.

8. Ejecutar el proyecto y la clase Lexer.java ha sido generada exitosamente.

9. Crear un nuevo método para poder probar el analizador léxico y en caso de que haya algún error este lo indicara.

10. Ejecutar el proyecto y ha quedado el analizador léxico.11. Se agrega una interfaz donde se pondrá el texto a analizar y el resultado que devolverá son los token que identifico en el texto.

Ventajas:
* Solo con el paso de los token el JFlex realiza el programa .java, por lo cual ahorra trabajo y es más fácil realizar el analizador.
* No es difícil manejar el JFlex

Inconvenientes:
* Al realizar el paso del nombre de los token noacepta espacios.
* Nunca se había trabajado con el JFlex por lo cual se tuvo que hacer investigaciones extras.

CASOS DE PRUEBA:
CORRECTOS
En estos casos se introducen códigos que contengan token que estén dentro de los parámetros que reconoce nuestro analizador léxico.

Código 1:
public void area()
{
Scanner le = new Scanne ( System.in);
b=NextInt();//lee el valor
c=b*b;//realizael area
System.out.println(+c);
}

Análisis 1:
TOKEN: PUBLICO
TOKEN: VACIO
TOKEN: ID area
TOKEN: PARENTESIS_ABRE
TOKEN: PARENTESIS_CIERRA
TOKEN: LLAVE_ABRE
TOKEN: ID Scanner
TOKEN: ID le
TOKEN: ASIGNACION
TOKEN: ID new
TOKEN: ID Scanne
TOKEN: PARENTESIS_ABRE
TOKEN: ID System
TOKEN: PUNTO
TOKEN: ID in
TOKEN: PARENTESIS_CIERRA
TOKEN: SIGNO_TERMINA_SENTENCIA
TOKEN: ID bTOKEN: ASIGNACION
TOKEN: ID NextInt
TOKEN: PARENTESIS_ABRE
TOKEN: PARENTESIS_CIERRA
TOKEN: SIGNO_TERMINA_SENTENCIA
TOKEN: ID c
TOKEN: ASIGNACION
TOKEN: ID b
TOKEN: SIGNO_MULTIPLICACION
TOKEN: ID b
TOKEN: SIGNO_TERMINA_SENTENCIA
TOKEN: ID System
TOKEN: PUNTO
TOKEN: SALIDA
TOKEN: PUNTO
TOKEN: IMPRIME_LINEA
TOKEN: PARENTESIS_ABRE
TOKEN: SIGNO_MAS
TOKEN: ID c
TOKEN: PARENTESIS_CIERRATOKEN: SIGNO_TERMINA_SENTENCIA
TOKEN: LLAVE_CIERRA
EOF

Código 2:
switch(a)//elige el metodo hacer

{
case 1: //realiza el perimetro
perimetro();
break;

case 2:
area();
break;

default: //manda error
break;
}

Análisis 2:
TOKEN: CONDICIONAL
TOKEN: PARENTESIS_ABRE
TOKEN: ID a
TOKEN: PARENTESIS_CIERRA
TOKEN: LLAVE_ABRE
TOKEN: ID case
TOKEN: NUMERO 1
TOKEN:...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • hogar
  • Hogar
  • hogar
  • hogar
  • Hogar
  • hogar
  • HOGAR
  • Hogos

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS