2. Requerimientos
Tener instalado.
JDK cualquiera de sus versiones.
Sitios de descarga
JLex
http://www.cs.princeton.edu/~appel/modern/j
ava/JLex/
Java Cup
http://www.cs.princeton.edu/~appel/modern/jav
a/CUP/java_cup_v10k.zip
3. Antes de Comenzar
Se
requiere configurar las variables de entorno.
Abrimos cmd
Ingresamos al directorio donde esté instalado el
JDK
Ej:
c:ProgramFilesJavajdk1.7.0_02bin>
Tipeamos el comando
set
CLASSPATH=c:ProgramFilesJavajdk1.7.0_0
2bin>;%CLASSPATH%
set
CLASSPATH=c:ProgramFilesJavajdk1.7.0_0
2bin>;%PATH%
4. INSTALACIÓN JLEX
El
archivo que se descargará es el
archivo Main.java correspondiente a
JLex. Este archivo se puede guardar en
cualquier lugar del disco duro, pero luego
será necesario, para su integración con
Netbeans, moverlo al directorio de
instalación de JDK.
5. COMPILACIÓN DE JLEX
Luego de haber copiado/movido el archivo a
esta nueva locación, es necesario compilar desde
consola esta clase, para que se generen los
archivos .class necesario para la completa
integración de JLex a Netbeans.
Para compilar el archivo Main.java desde la
consola será necesario ubicarse en consola en la
carpeta de instalación de JDK y luego dirigirse al
subdirectorio donde se copió el archivo Main.java
perteneciente a JLex.
El resultado de la compilación terminará con la
creación de los archivos .class necesarios para la
total integración de JLex.
6. INTEGRACIÓN DE CUP
Para
integrar JLex y Cup al proyecto será
necesario pegar las carpetas JLex y
Java_Cup que han sido previamente
colocadas en la carpeta del JDK. Estas dos
carpetas deberán de ser copiadas en el
subdirectorio src del proyecto creado.
7. ANALIZADOR LEXICO JLEX
La definición de reglas para el analizador léxico,
deberá declarase en un ARCHVO.
En este ejemplo la case con las reglas del analizador
léxico está bajo el nombre “Scanner”.
Para la creación de esta clase se deberá de utilizar
un editor de texto. Quedando estructurado
el
archivo de la siguiente manera:
(NOTA: ABRIR ARCHIVO SCANNER )
8. USO DEL JFLEX
Abrimos una consola (cmd)
Nos ubicamos en el directorio del JDK
Y procedemos a compilar el archivo scanner
Dentro del directorio donde esté Scanner se
crea Scanner.Java que es el archivo
compilado
9. USO DE JAVA_CUP
De
igual manera desde una consola
Nos ubicamos en el directorio del JDK y
compilamos el archivo parser
10. Nos
dirigimos al directorio del JDK y
ubicamos los archivos parser.java y
sym.java
Estos archivos deben ser trasladados al
directorio src del Proyecto de Netbeans
Al igual que scanner.java
Quedando algo asi:----------->
11. PRUEBA DE LA GRAMÁTICA
En proyecto creamos una clase denominada token la cual contiene lo sig:
package jlexcup;
public class token {
String valor;
public token(String val)
{
this.valor=val;
}
public String getValue() {
return valor;
}
}
//Esta es la funcion que vamos a necesitar
12. GRAMÁTICA A USAR
La gramática a utilizar en este ejemplo de integración de
JLex y Cup con Java utilizando un IDE como Netbeans
para el desarrollo del ejemplo consiste en la gramática
libre de contexto necesaria para reconocer una
estructura de una instrucción IF en lenguaje Lisp.
Un ejemplo de la construcción de una instrucción IF en
LISP se denota de la siguiente manera:
(IF<condicion><consecuencia><alternativa>)
Ejemplo:
(if (= y 0) 9999999 (/ x y))
Para poder utilizar en nuestro proyecto creamos un archivo
.txt y ponemos la gramática ya mencionada Para el
ejemplo lo llamaremos Entrada.txt
13. Ejecución
package jlexcup;
import java.util.logging.Logger;
public class Jflexcup {
public static void main(String[] args) {
try{
parser P=new parser();
P.cargar("C:UsersPaulDesktopjflexcupEntrada.txt");
}catch(Exception ex){
//Logger.getLogger(jlexcup.class.getName()).log(level.SEVERE,null,ex);}
}
}
}