Anda di halaman 1dari 12

Universidad de San Carlos de Guatemala Facultad de Ingeniera Escuela de Ciencias y Sistemas Organizacin de Lenguajes y Compiladores 1

Roger Alexander Girn Moscoso 2011-14674 Guatemala 2013

MANUAL DE INSTALACION JFLEX Y CUP EN S.O. WINDOWS


Descargar JFlex, el cual es un generador de anlisis lxico. Se us JFlex versin 1.4.3 .

Descargar CUP el cual es un LALR parser o look ahead from left to right parser. En especial el CUP 10k y la librera CUP 11a beta 20060608

Universidad de San Carlos de Guatemala Facultad de Ingeniera Escuela de Ciencias y Sistemas Organizacin de Lenguajes y Compiladores 1 Crear Carpeta Fuentes dentro de el disco duro principal

Roger Alexander Girn Moscoso 2011-14674 Guatemala 2013

Descomprimir contenido de los 2 archivos comprimidos que se bajaron, dentro de la carpeta creada. De la versin 10k de javacup lo que interesa descomprimir es principalmente la carpeta java_cup

Universidad de San Carlos de Guatemala Roger Alexander Girn Moscoso Facultad de Ingeniera Escuela de Ciencias y Sistemas 2011-14674 Organizacin de Lenguajes y Compiladores 1 Guatemala 2013 Crear un nuevo proyecto en Netbeans (o el IDE que se este usando para JAVA)

Universidad de San Carlos de Guatemala Roger Alexander Girn Moscoso Facultad de Ingeniera Escuela de Ciencias y Sistemas 2011-14674 Organizacin de Lenguajes y Compiladores 1 Guatemala 2013 Dentro del proyecto agregar una nueva carpeta a la cual se le llamara lib donde se agregara javacup-11a-runtime.jar

Universidad de San Carlos de Guatemala Facultad de Ingeniera Escuela de Ciencias y Sistemas Organizacin de Lenguajes y Compiladores 1 Crear el archivo de Jflex, el cual se llamara Scanner.Jflex

Roger Alexander Girn Moscoso 2011-14674 Guatemala 2013

package scanner; import java_cup.runtime.Symbol; %% numero =[0-9]+ "."? [0-9]* letra =[a-zA-Z]+ iden ={letra}({letra}|{numero}|"_")* %cupsym simbolos %class lexico %cup %unicode %public %line %char %ignorecase %% /*Expresiones Regulares*/

Universidad de San Carlos de Guatemala Roger Alexander Girn Moscoso Facultad de Ingeniera Escuela de Ciencias y Sistemas 2011-14674 Organizacin de Lenguajes y Compiladores 1 Guatemala 2013 {numero} {return new Symbol(simbolos.numero, yychar,yyline,new String(yytext()));} {iden} {return new Symbol(simbolos.iden, yychar,yyline,new String(yytext()));} /*Operadores*/ "=" {return new Symbol(simbolos.igual, yychar,yyline); } "+" {return new Symbol(simbolos.mas, yychar,yyline); } "-" {return new Symbol(simbolos.menos, yychar,yyline); } ";" {return new Symbol(simbolos.pcoma, yychar,yyline); } /*Espacios en Blanco*/ [ \t\r\f\n]+ { /* Se ignoran */} /* Cualquier Otro */ . { return new Symbol(simbolos.errorlex, yychar,yyline,new String(yytext())); }

Tambin crear el archivo CUP, el cual se le llamara Parser.cup

package scanner; 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 Linea " + (s.right+1) +" Columna "+s.left+ ". Identificador " +s.value + " no reconocido." ); }

Universidad de San Carlos de Guatemala Facultad de Ingeniera Escuela de Ciencias y Sistemas Organizacin de Lenguajes y Compiladores 1

Roger Alexander Girn Moscoso 2011-14674 Guatemala 2013

/**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 Linea " + (s.right+1)+ "Columna "+s.left+". Identificador " + s.value + " no reconocido."); } :} action code {: :} /*Declaracion de simbolos terminales*/ terminal iden, numero, mas, menos, igual, pcoma, errorlex; /*Declaracion de simbolos NO terminales*/ non terminal INICIA,L, LISTA; /*Inicio de la gramatica*/ start with INICIA; INICIA::= L; L::=L LISTA |LISTA; LISTA ::= iden {: System.out.println("Identificador"); :} | numero {: System.out.println("Numero"); :} | mas {: System.out.println("Mas"); :} | menos {: System.out.println("Menos"); :} | igual {: System.out.println("Igual"); :} | pcoma {: System.out.println("Punto y coma"); :} | errorlex {: System.out.println("Error Lexico"); :} | error;

De preferencia crearlos dentro del src de el proyecto (dentro del source a la par de los .java) Se puede crear con bloc de notas

Universidad de San Carlos de Guatemala Roger Alexander Girn Moscoso Facultad de Ingeniera Escuela de Ciencias y Sistemas 2011-14674 Organizacin de Lenguajes y Compiladores 1 Guatemala 2013 Dentro del main de el proyecto de java se agregaran las siguientes lneas, los cuales agarraran a las clases lxico y sintctico que generaran los .bat (posteriormente ejecutndolos o desde consola). Por eso la necesidad de que estn en la misma carpeta donde tienen los .java

package scanner; import java.io.BufferedReader; import java.io.StringReader; public class main { public static void main(String[] args) throws Exception { String Cadena = "t1 = 3;\n" + "t2 = t2 + 7;\n" + "t3 = 25 * 5:\n"; System.out.println("---------------Inicio Analisis---------------"); new sintactico(new lexico(new BufferedReader( new StringReader(Cadena)))).parse(); System.out.println("----------------Fin Analisis----------------"); } }

Universidad de San Carlos de Guatemala Roger Alexander Girn Moscoso Facultad de Ingeniera Escuela de Ciencias y Sistemas 2011-14674 Organizacin de Lenguajes y Compiladores 1 Guatemala 2013 Crear los archivos de configuracin de el lxico y del sintctico. Especialmente concentrar donde es que queda el JAVA_HOME que es donde se encuentre el JDK y donde se encuentran los archivos .jflex y .cup

SET JAVA_HOME="C:\Program Files\Java\jdk1.6.0_31\bin" SET PATH=%JAVA_HOME%;%PATH% SET CLASSPATH=%JAVA_HOME%; SET JFLEX_HOME= C:\Fuentes\jflex-1.4.3 cd C:\Users\GaOs\Documents\NetBeansProjects\Scanner\src\scanner java -jar %JFLEX_HOME%\lib\JFlex.jar Scanner.jflex pause

SET JAVA_HOME="C:\Program Files\Java\jdk1.6.0_31\bin" SET PATH=%JAVA_HOME%;%PATH% SET CLASSPATH=%JAVA_HOME%; cd C:\Users\GaOs\Documents\NetBeansProjects\Scanner\src\scanner java -classpath C:\Fuentes\ java_cup.Main -parser sintactico -symbols simbolos Parser.cup pause

Universidad de San Carlos de Guatemala Roger Alexander Girn Moscoso Facultad de Ingeniera Escuela de Ciencias y Sistemas 2011-14674 Organizacin de Lenguajes y Compiladores 1 Guatemala 2013 Luego generar los .java a travs de compilar los archivos de CUP y JFLEX. A travs de primero ejecutar los .bat para que luego entre en el paquete los dems .java que este proceso generar. Y saldrn unas pantallas as:

10

Universidad de San Carlos de Guatemala Facultad de Ingeniera Escuela de Ciencias y Sistemas Organizacin de Lenguajes y Compiladores 1

Roger Alexander Girn Moscoso 2011-14674 Guatemala 2013

Y en el proyecto ya estarn las nuevas clases.

11

Universidad de San Carlos de Guatemala Roger Alexander Girn Moscoso Facultad de Ingeniera Escuela de Ciencias y Sistemas 2011-14674 Organizacin de Lenguajes y Compiladores 1 Guatemala 2013 Si no aparecen las clases: buscar donde se generaron / compilaron (buscar cerca de los .JFlex y .CUP)

Finalmente compilar el proyecto con lo cual se obtendr algo asi:

12

Anda mungkin juga menyukai