Psicología social de hechos, de procesos y de proyectos. Objeto y tiempo
Universidad de San Carlos de Guatemala Facultad de Ingeniería – Escuela de Ciencias y Sistemas...
-
Upload
independent -
Category
Documents
-
view
3 -
download
0
Transcript of Universidad de San Carlos de Guatemala Facultad de Ingeniería – Escuela de Ciencias y Sistemas...
Universidad de San Carlos de Guatemala Roger Alexander Girón Moscoso Facultad de Ingeniería – Escuela de Ciencias y Sistemas 2011-14674 Organización de Lenguajes y Compiladores 1 Guatemala 2013
1
MANUAL DE INSTALACION JFLEX Y CUP EN S.O. WINDOWS
Descargar JFlex, el cual es un generador de análisis léxico. Se usó JFlex versión 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 librería CUP 11a beta 20060608
Universidad de San Carlos de Guatemala Roger Alexander Girón Moscoso Facultad de Ingeniería – Escuela de Ciencias y Sistemas 2011-14674 Organización de Lenguajes y Compiladores 1 Guatemala 2013
2
Crear Carpeta “Fuentes” dentro de el disco duro principal
Descomprimir contenido de los 2 archivos comprimidos que se bajaron, dentro de la carpeta
creada. De la versión 10k de javacup lo que interesa descomprimir es principalmente la carpeta
“java_cup”
Universidad de San Carlos de Guatemala Roger Alexander Girón Moscoso Facultad de Ingeniería – Escuela de Ciencias y Sistemas 2011-14674 Organización de Lenguajes y Compiladores 1 Guatemala 2013
3
Crear un nuevo proyecto en Netbeans (o el IDE que se este usando para JAVA)
Universidad de San Carlos de Guatemala Roger Alexander Girón Moscoso Facultad de Ingeniería – Escuela de Ciencias y Sistemas 2011-14674 Organización de Lenguajes y Compiladores 1 Guatemala 2013
4
Dentro del proyecto agregar una nueva carpeta a la cual se le llamara “lib” donde se agregara java-
cup-11a-runtime.jar
Universidad de San Carlos de Guatemala Roger Alexander Girón Moscoso Facultad de Ingeniería – Escuela de Ciencias y Sistemas 2011-14674 Organización de Lenguajes y Compiladores 1 Guatemala 2013
5
Crear el archivo de Jflex, el cual se llamara “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*/
Universidad de San Carlos de Guatemala Roger Alexander Girón Moscoso Facultad de Ingeniería – Escuela de Ciencias y Sistemas 2011-14674 Organización de Lenguajes y Compiladores 1 Guatemala 2013
6
{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())); }
También crear el archivo CUP, el cual se le llamara “Parser.cup”
package scanner;
import java_cup.runtime.*;
parser code
{:
/**Metodo al que se llama automáticamente ante algún 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 Roger Alexander Girón Moscoso Facultad de Ingeniería – Escuela de Ciencias y Sistemas 2011-14674 Organización de Lenguajes y Compiladores 1 Guatemala 2013
7
/**Metodo al que se llama en el momento en que ya no es posible una recuperación 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 Girón Moscoso Facultad de Ingeniería – Escuela de Ciencias y Sistemas 2011-14674 Organización de Lenguajes y Compiladores 1 Guatemala 2013
8
Dentro del main de el proyecto de java se agregaran las siguientes líneas, los cuales agarraran a las
clases léxico y sintáctico que generaran los .bat (posteriormente ejecutándolos o desde consola).
Por eso la necesidad de que estén 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 Girón Moscoso Facultad de Ingeniería – Escuela de Ciencias y Sistemas 2011-14674 Organización de Lenguajes y Compiladores 1 Guatemala 2013
9
Crear los archivos de configuración de el léxico y del sintáctico. 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 Girón Moscoso Facultad de Ingeniería – Escuela de Ciencias y Sistemas 2011-14674 Organización de Lenguajes y Compiladores 1 Guatemala 2013
10
Luego generar los .java a través de compilar los archivos de CUP y JFLEX. A través de primero
ejecutar los .bat para que luego entre en el paquete los demás .java que este proceso generará.
Y saldrán unas pantallas así:
Universidad de San Carlos de Guatemala Roger Alexander Girón Moscoso Facultad de Ingeniería – Escuela de Ciencias y Sistemas 2011-14674 Organización de Lenguajes y Compiladores 1 Guatemala 2013
11
Y en el proyecto ya estarán las nuevas clases.
Universidad de San Carlos de Guatemala Roger Alexander Girón Moscoso Facultad de Ingeniería – Escuela de Ciencias y Sistemas 2011-14674 Organización de Lenguajes y Compiladores 1 Guatemala 2013
12
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: