,,{Ñlkñjkhlkjhlkjhkj

Solo disponible en BuenasTareas
  • Páginas : 6 (1320 palabras )
  • Descarga(s) : 0
  • Publicado : 21 de diciembre de 2010
Leer documento completo
Vista previa del texto
JLEX Y JAVA CUP
Jlex es una herramienta desarrollada en Java que toma como entrada un archivo “entrada”, con este crea un archivo fuente java entrada.lex.java correspondiente al analizador léxico. En otras palabras, Jlex es un generador de analizadores léxicos. Los analizadores léxicos toman como entrada una cadena de caracteres y la convierten en una secuencia de tokens. JAVA CUP es unparser-generador. Es un analizador sintáctico que construye un parser para gramáticas tipo LALR(1), con código de producción y asociación de fragmentos de código JAVA. Cuando una producción en particular es reconocida, se genera un archivo fuente Java, parser.java que contiene una clase parser, con un método Symbol parser().

Instalación
Para la instalación de Jlex y CUP se necesitan: 1. JDK (Descargael JDK de la página Web de Sun para los sistemas Operativos Linux, Windows y Solaris). Si se tiene instalado alguna versión de JAVA, solo es necesario buscar el directorio en el que se encuentra el JDK de esta. 2. Archivo para la generación de las clases para Jlex llamado Main.java que se puede descargar de la página Web de Jlex. 3. Descarga del sitio Web de CUP el código fuente de los archivosnecesarios. Se debe crear una carpeta adentro de la carpeta bin del JDK, acá se creará una carpeta llamada Jlex y se incluirá en esta el archivo Main.java, a la vez adentro de la carpeta bin también se colocará la carpeta java_cup (Esta carpeta es la que descargamos del sitio CUP). Por ejemplo: Si tenemos instalado el programa JBuilder7, esta carpeta se encuentra en la unidad C de nuestracomputadora, adentro de esta carpeta esta el jdk.

A partir de acá generaremos nuestras variables de entorno que consiste en escribir el siguiente código desde una consola de DOS (Command Prompt) 1. Primero debemos colocarnos en la carpeta bin de la carpeta JDK desde la consola. En nuestro ejemplo seria así c:\jbuilder7\jdk1.3.1\bin 2. Ahora en la consola escribiremos c:\jbuilder7\jdk1.3.1\bin> setCLASSPATH=C:\jbuilder7\jdk1.3.1\bin;%CLASSPATH% c:\jbuilder7\jdk1.3.1\bin>set PATH=C:\jbuilder7\jdk1.3.1\bin;%PATH% Con esto tenemos generadas las variables de entorno. 3. Ahora podemos compilar la clase Main.java. Para esto escribiremos en la consola c:\jbuilder7\jdk1.3.1\bin>javac Jlex\Main.java Con esto se generarán una serie de archivos adentro de la carpeta Jlex. La carpeta de CUP no es necesariocompilarla, ya que esta ya tiene todas las clases compiladas, ya solo se utilizan. 4. Ahora podemos crear nuestros archivos .lex y .cup. El archivo .lex será el archivo que tendrá los caracteres y las expresiones regulares válidas. 5. Ahora ya podemos empezar a utilizar Jlex y CUP, de primero creamos una carpeta donde realizaremos nuestro proyecto, por ejemplo en la unidad C. La carpeta se llamaraPROYECTO, adentro de esta carpeta, copiaremos la carpeta de Jlex y la de Cup que copiamos de primero.

6. Se creará otra carpeta llamada Example, (Puede ser el nombre que se desee).

CODIGO DE JLEX:
En un archivo de texto podemos escribir lo siguiente y guardarlo con extensión .lex package Example; import java_cup.runtime.Symbol; %% %cup %% ";" { //RECONOCE EL SIMBOLO PUNTO Y COMA returnnew Symbol(sym.SEMI); } "+" { System.out.print("SIGNO DE SUMA ");//RECONOCE EL SIMBOLO MAS return new Symbol(sym.PLUS); } "*" { System.out.print("SIGNO POR ");//RECONOCE EL SIMBOLO POR return new Symbol(sym.TIMES); } "-" { System.out.print("SIGNO MENOS ");//RECONOCE EL SIMBOLO MENOS return new Symbol(sym.MENOS); } "/" { System.out.print("SIGNO DIVIDIDO ");//RECONOCE EL SIMBOLO DIVIDIDO return newSymbol(sym.DIVI); } "(" { return new Symbol(sym.LPAREN); } //RECONOCE EL PARENTESIS DE APERTURA ")" { return new Symbol(sym.RPAREN); }//RECONOCE EL SIMBOLO PARENTESIS DE CIERRE [0-9]+ { System.out.print(" numero ");//RECONOCE LOS NUMEROS return new Symbol(sym.NUMBER, new Integer(yytext())); } [ \t\r\n\f] { /* ignore white space. */ } . { System.err.println("Illegal character: "+yytext()); } Como...
tracking img