Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual de Instalación JFlex Netbeans Con CUP Windows
Manual de Instalación JFlex Netbeans Con CUP Windows
Manual de instalacin
de JFlex y Cup
Windows SO
Facultad de Ingeniera Escuela de Ciencias y Sistemas
INSTALACIN
IMPORTANTE: Para poder instalar JFlex y Cup primeramente se tiene que tener
Para efecto de este tutorial usaremos el IDE Netbeans para los archivos de configuracin.
DESCARGA DE LIBRERAS
Descargamos
las
fuentes
http://jflex.de/download.html.
de
JFlex
(versin
1.4.3)
desde
la
siguiente
pgina:
Descargamos las fuentes de Cup (CUP 10k) y el ejecutable CUP 11a beta 20060608 runtime en
la pgina: http://www2.cs.tum.edu/projects/cup/.
Creamos la carpeta Fuentes dentro de la unidad C: (Pueden escoger el lugar que ustedes
prefieran, siempre tomando en cuenta dicha direccin para los siguientes pasos de la
instalacin, para este manual escogimos directamente la unidad C:).
Descomprimimos la carpeta de JFlex anteriormente descargada (jflex-1.4.3) dentro de la
carpeta Fuentes.
Descomprimimos el contenido de la carpeta Cup anteriormente descargada (CUP 10K) y
copiamos la carpeta java_cup en la carpeta Fuentes.
Laboratorio de Compiladores I
Despus buscamos en nuestra carpeta lib que se encuentra en la carpeta del proyecto, y
seleccionamos el JAR java-cup-11a-runtime.
Laboratorio de Compiladores I
%cupsym tabla_simbolos
%class lexico
%cup
%public
%unicode
%line
%column
%char
%ignorecase
%%
/* PALABRAS RESERVADAS */
"IF"
"WHILE"
"FOR"
/* OPERADOR */
"="
"+"
"-"
";"
/*
{numero}
*/
/* BLANCOS */
[ \t\r\f\n]+
{ /* Se ignoran */}
/* CUAQUIER OTRO */
.
Laboratorio de Compiladores I
Parser.cup
Para crear el archivo Parser.cup deben agregar a su proyecto un archivo vaco.
package escaner;
import java_cup.runtime.*;
parser code
{:
/**Metodo al que se llama automticamente ante algn error sintactico.*/
public void syntax_error(Symbol s){
System.out.println("Error en la Lnea " + (s.right+1) +" Columna "+s.left+ ". Identificador " +s.value + " no
reconocido." );
}
/**Metodo al que se llama en el momento en que ya no es posible una recuperacin de errores.*/
public void unrecovered_syntax_error(Symbol s) throws java.lang.Exception{
System.out.println("Error en la Lnea " + (s.right+1)+ "Columna "+s.left+". Identificador " + s.value + " no
reconocido.");
}
:}
action code
{:
:}
terminal tif , twhile, tfor, tigual, tmas, tmenos, tpcoma, tnumero, terrorlex;
non terminal INICIA,L, TIPOS;
start with INICIA;
INICIA::= L;
L::=L TIPOS
|TIPOS;
TIPOS ::= tif
| twhile
| tfor
| tigual
| tmas
| tmenos
| tnumero
| tpcoma
| terrorlex
| error;
{: System.out.println("IF"); :}
{: System.out.println("WHILE"); :}
{: System.out.println("FOR"); :}
{: System.out.println("IGUAL"); :}
{: System.out.println("MAS"); :}
{: System.out.println("MENOS"); :}
{: System.out.println("NUMERO"); :}
{: System.out.println("PUNTO Y COMA"); :}
{: System.out.println("ERROR LEXICO"); :}
Laboratorio de Compiladores I
Fichero Lexico.bat
SET JAVA_HOME="C:\Program Files\Java\jdk1.7.0_05\bin"
SET PATH=%JAVA_HOME%;%PATH%
SET CLASSPATH=%JAVA_HOME%;
SET JFLEX_HOME= C:\Fuentes\jflex-1.4.3
cd C:\Users\W\Documents\NetBeansProjects\Escaner\src
java -jar %JFLEX_HOME%\lib\JFlex.jar Escaner.jflex
pause
Fichero Sintactico.bat
SET JAVA_HOME=" C:\Program Files\Java\jdk1.7.0_05\bin "
SET PATH=%JAVA_HOME%;%PATH%
SET CLASSPATH=%JAVA_HOME%;
cd C:\Users\W\Documents\NetBeansProjects\Escaner\src
java -classpath C:\Fuentes\ java_cup.Main -parser sintactico -symbols tabla_simbolos Parser.cup
pause
PRUEBAS DE COMPILACIN
Debemos dar doble click en los ficheros lexico.bat y sintactico.bat. Esto nos crear 3 archivos .java
dentro de nuestro proyecto. El primero es el archivo lxico.java que contiene el escner para
analizar lxicamente un archivo de entrada; el segundo es el archivo sintctico.java que contiene el
parser para analizar sintcticamente un archivo de entrada; el tercero y ltimo es el archivo
tabla_simbolos.java que contiene todo lo respectivo a la tabla de smbolos de nuestro compilador.
Para probar nuestro compilador agregamos las siguientes lneas de cdigo en el main. El cual
analizar el archivo Prueba.txt.
Main.java
public static void main(String[] args) {
System.out.println("--------------INICIO DE COMPILACIN-----------------");
try {
Laboratorio de Compiladores I
Prueba.txt
2.33333 ;
for 3; 2; 1; 4;
5=5
if = 2222;
while 45;
if 6; 7; 8; 9;
%$%
Salida (consola Netbeans):
Si todo est correcto nos saldr este texto dentro de la consola de Netbeans:
run:
--------------INICIO DE COMPILACIN----------------NUMERO
PUNTO Y COMA
FOR
NUMERO
PUNTO Y COMA
NUMERO
PUNTO Y COMA
NUMERO
PUNTO Y COMA
NUMERO
PUNTO Y COMA
NUMERO
IGUAL
NUMERO
IF
IGUAL
NUMERO
PUNTO Y COMA
WHILE
NUMERO
PUNTO Y COMA
IF
NUMERO
PUNTO Y COMA
NUMERO
Laboratorio de Compiladores I
PUNTO Y COMA
NUMERO
PUNTO Y COMA
NUMERO
PUNTO Y COMA
ERROR LEXICO
ERROR LEXICO
ERROR LEXICO
----------------FIN DE COMPILACIN----------------BUILD SUCCESSFUL (total time: 0 seconds)
NOTA: CADA VEZ QUE HAGAN CAMBIOS A SUS ARCHIVOS .JFLEX O .CUP, DEBERN COMPILAR DE
NUEVO LOS ARCHIVOS .BAT CORRESPONDIENTES, PARA QUE SE ACTUALICEN LOS ARCHIVOS DE LOS
ANALIZADORES.
Laboratorio de Compiladores I