Sie sind auf Seite 1von 5

Manual de Instalacin JFlex y CUP

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

MANUAL DE INSTALACION JFLEX Y CUP EN S.O. GNU/Linux

Jonathan Obed Garcia Osuna Guatemala 2013

Organizacin de Lenguajes y Compiladores 1

Manual de Instalacin JFlex y CUP

Instalacin:
Paso 1: Descarga de libreras
Descargamos la librera CUP 11a beta 20060608 en la pgina: http://www2.cs.tum.edu/projects/cup/

Paso 2: Instalacin de JFlex y CUP


Instalamos JFlex y CUP con el comando: $sudo apt-get install jflex cup

Paso 3: Creacin de proyecto en Netbeans


File -> New Project -> Java Application

Organizacin de Lenguajes y Compiladores 1

Manual de Instalacin JFlex y CUP Dentro de la carpeta del proyecto, agregamos una carpeta lib. Copiamos la librera: java-cup-11a-runtime.jar dentro de la carpeta lib. Clic derecho en Libreries, luego seleccionamos Add JAR/FOLDER.

Paso 4: Creacin del archivo JFlex, Scanner.jflex


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*/ {numero} {return new Symbol(simbolos.numero, yychar,yyline,new String(yytext()));} {iden} {return new Symbol(simbolos.iden, yychar,yyline,new String(yytext()));} /*Operadores*/ "=" {return "+" {return "-" {return ";" {return

new new new new

Symbol(simbolos.igual, yychar,yyline); } Symbol(simbolos.mas, yychar,yyline); } Symbol(simbolos.menos, yychar,yyline); } 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())); }

Organizacin de Lenguajes y Compiladores 1

Manual de Instalacin JFlex y CUP

Paso 5: Creacin del archivo CUP, 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." ); } /**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 numero mas menos igual pcoma errorlex error; {: {: {: {: {: {: {: System.out.println("Identificador"); :} System.out.println("Numero"); :} System.out.println("Mas"); :} System.out.println("Menos"); :} System.out.println("Igual"); :} System.out.println("Punto y coma"); :} System.out.println("Error Lexico"); :}

Paso 6: Creacin del archivo main.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----------------"); } }

Organizacin de Lenguajes y Compiladores 1

Manual de Instalacin JFlex y CUP

Paso 7: Creacin de archivos de configuracin


Estos archivos deben ser configurados de acuerdo a la localizacin de donde se encuentran nuestros archivos .jflex y .cup y luego aplicar permisos de ejecucin. Lexico.sh #!/bin/bash jflex /home/gaos/NetBeansProjects/Scanner/src/scanner/Scanner.jflex read -p "Enter para continuar."

Sintactico.sh #!/bin/bash cd /home/gaos/NetBeansProjects/Scanner/src/scanner/ cup -parser sintactico -symbols simbolos Parser.cup read -p "Enter para continuar."

Como recomendacin ejecutar los archivos con Ejecutar en una Terminal, para poder ver si existieron errores en la generacin.

Paso 8: Compilacin
Generamos nuestros archivos .java de cada uno de los analizadores, dando doble clic sobre cada uno de los archivos .sh, luego ejecutamos nuestra aplicacin. Cadena de entrada: t1 = 3; t2 = t2 + 7; t3 = 25 * 5:

Salida: run: ---------------Inicio Analisis--------------Identificador Igual Numero Punto y coma Identificador Igual Identificador Mas Numero Punto y coma Identificador Igual Numero Error Lexico Numero Error Lexico ----------------Fin Analisis---------------BUILD SUCCESSFUL (total time: 0 seconds)

Organizacin de Lenguajes y Compiladores 1

Das könnte Ihnen auch gefallen