Академический Документы
Профессиональный Документы
Культура Документы
Facultad de Ingeniería
Escuela de Ciencias y Sistemas
Organización de Lenguajes y Compiladores 1
2do. semestre del 2010
JLEX
1. Descripción General
2. Instalación
Para utilizar esta herramienta se debe baja el fuente de JLex (Main.java) de la pagina
http://www.cs.princeton.edu/~appel/modern/java/JLex/current/Main.java.
Se crea una carpeta en el directorio bin de nuestro jdk llamada JLex y dentro se baja el
archivo Main.java
cd "G:\Archivos de programa\Java\jdk1.6.0_21\bin"
javac JLex\Main.java
int a1,a2,a3;
double b1,b2,b3;
string c_1,c_2,c_3;
int d1;
a1=1;
b1=2.0;
a2=a1+b1;
b2=a1+b2;
a3=a2+3;
b3=b2*4.0;
c_1="hola";
c_2="mundo";
c_3=c_1+" "+c_2;
a3=(a1+b1)*(b2+a2);
b3=(a1%b1)/(b2%a2);
Identificadores
Palabra reservadas (int, doublé, string)
Operadores (=,+,-,*,/,%)
Constantes (Numero,Cadena)
Otros componentes (Fin de línea, espacios y tabuladores)
Para esto se procede a definir las expresiones regulares y las reglas en el archivo léxico.lex
como se muestra a continuación.
package ejemplo;
import java_cup.runtime.*;
import javax.swing.*;
import java.util.*;
%%
%class Yylex
%{String literal;
String temp_include;
%}
%{
int columna=1;
%}
%public
%cup
%line
%full
%unicode
%ignorecase
%char
%{
public String sourceFilename;
StringBuffer string = new StringBuffer();
int ultimoEstado = 0;
public void init(){};
%}
%eofval{
{return new Symbol(Token.EOF, null); }
%eofval}
ALPHA=[A-Za-zÑñ]
DIGITO=[0-9]
IDENTIFICADOR={ALPHA}({ALPHA}|{DIGITO}|"_")*
NUMERO=({DIGITO})+"."({DIGITO})+
CADENA=[\"] [^\"\n]+ [\"\n]
%%
[\n] { yychar=0;}
\’ { /* ignore apostrofos. */ }
<YYINITIAL> [\t\r\f] {/*no hace nada, aumenta una columna*/yychar++; }
.{
}
Para poder utilizar únicamente en analizador léxico de JLex se debe de crear una clase a la
que llamaremos Token que contendrá todos los token a devolver por nuestro léxico.lex.
package ejemplo;
/* terminals */
}
Despues se debe compilar con las herramienta de Jlex creando el archivo bat mostrado a
continuacion y ejecutándolo
cd "G:\Archivos de programa\Java\jdk1.6.0_21\bin"
set CLASSPATH=G:\Archivos de
programa\Java\jdk1.6.0_21\bin;%CLASSPATH%
del Yylex.java
pause
Se ejecuta este archivo y nos dara como resultado un archivo al cual renombramos como
Yylex y que será nuestro analizador lexico.
Para probarlo se debe crear un proyecto con el nombre que más se prefiera en este caso
Ejemplo. Y copiar en directorio de src las carpetas de JLex y java_cup, además en la
carpeta del paquete principal en src se debe copiar los archivos generados Yylex.java y
Token.java junto al Main el cual debe tener el código siguiente
http://muytux.blogspot.com/2010/07/manual-de-jflex.html
http://www.basketcase.net84.net/index/?p=318
http://www.cs.princeton.edu/~appel/modern/java/JLex/