Sunteți pe pagina 1din 14

Lenguajes formales y compiladores 2009-I

Manual de sfalas

Se ejecuta el ejecutable Sefalas.jar Primero se va a : Archivo=> editar posteriormente se escribe lo siguiente /es una nueva interfaz

Ahora tenemos que ir a: Especificacin LEX => validar y listo se activara Anlisis Lxico=> Generar Automata

Por: Vladimir Flrez Tinta

Lenguajes formales y compiladores 2009-I

Posteriormente Anlisis Lxico=> Analizar Cadena ahora ingresa tu cadena

Por: Vladimir Flrez Tinta

Lenguajes formales y compiladores 2009-I

Manual de Jflex

Es un ejecutable Jflex.jar que procesa informacin a extensin java Primero tenemos que guardar un archivo con extensin ejemplo.flex /* Identifica los nmero en base 2 y a 16 */ %% %class ejemplo %standalone Blanco = [\r\n \t\f] %% {Blanco}+ {;} [01]+ {System.out.print("BASE 2\n");} [0-2]+ {System.out.print("BASE 3\n");} [0-3]+ {System.out.print("BASE 4\n");} [0-4]+ {System.out.print("BASE 5\n");} [0-5]+ {System.out.print("BASE 6\n");} [0-6]+ {System.out.print("BASE 7\n");} [0-7]+ {System.out.print("BASE 8\n");} [0-8]+ {System.out.print("BASE 9\n");} [0-9]+ {System.out.print("BASE 10\n");} [0-A]+ {System.out.print("BASE 11\n");} [0-B]+ {System.out.print("BASE 12\n");} [0-C]+ {System.out.print("BASE 13\n");} [0-D]+ {System.out.print("BASE 14\n");} [0-E]+ {System.out.print("BASE 15\n");} [0-F]+ {System.out.print("BASE 16\n");}

Por: Vladimir Flrez Tinta

Lenguajes formales y compiladores 2009-I

. {} Ahora tenemos que ejecutar el archivo jflex.jar y buscar la ruta donde se ha guardado el ejemplo.flex y seleccionamos

Para genera un archivo con extensin java

Nos genera un archiva de extensin java

Ahora compilamos el archiva ejemplo.java copiamos al disco C o en la misma carpeta se puede compilar y nos genera un archivo ejemplo.class

Por: Vladimir Flrez Tinta

Lenguajes formales y compiladores 2009-I

Ahora guardamos el ejemplo a compilar en el mismo lugar donde se genero el archivo ejemplo.class

Posteriormente obtenemos lo siguiente y disfrute con lo obtenido

Por: Vladimir Flrez Tinta

Lenguajes formales y compiladores 2009-I

Manual de flex
flex-2.5.4a-1 => instlalo 1. primero tenemos que descomprimir el , el ejemplo se guarda con extensin uno.flex

%{ unsigned NroCaracteres=0, NroPalabras=0,NroLineas=0; %} word [a-z]+ eol \n %% {word} { NroPalabras++; NroCaracteres+=yyleng; } {eol} { NroCaracteres++; NroLineas++; } . { NroCaracteres++; } %%

Por: Vladimir Flrez Tinta

Lenguajes formales y compiladores 2009-I

int main(int argc, char **argv) { if(argc>1) { FILE *file; file=fopen(argv[1],"r"); if(!file) { fprintf(stderr, "no se puede abrir el archivo %s\n",argv[1]); exit(1); } yyin=file; } yylex(); printf("Nro Lineas:%d\nNro Palabras:%d\nNro Caracteres:%d\n",NroLineas,NroPalabras,NroCaracteres); } En la ruta C:\Archivos de programa\GnuWin32\bin la ruta es donde se a instalado el flex2.14-1

Ahora se copia los ejemplos con extensin .lex por ejemplo uno.lex

Posteriormente vamos al modo DOS

Por: Vladimir Flrez Tinta

Lenguajes formales y compiladores 2009-I

Ahora hemos generado un archivo con extensin .c

Ahora copiamos el archivo generado a la siguiente ruta con nombre cambiado, dice: lex.yy a debe decir: lex como podemos observar es un archivi con extencion .c

Ahora tenemos que crea un archivo txt para ingresar los datos y guardarlo en la ruta C:\TC\BIN

La manera mas correcta de ejecutarlo es :

Por: Vladimir Flrez Tinta

Lenguajes formales y compiladores 2009-I

Manual de JLexCUP

Los ejemplos que se guardan con exrencion lexico.lex y extensin sintac01.cup 1. guardamos en la carpeta C:\JLexCUPcon el nombre : lxico.lex package Binario; import java_cup.runtime.Symbol; import java.io.*; import java.lang.*; %% binario="0"|"1" pcoma=";" %cup

Por: Vladimir Flrez Tinta

Lenguajes formales y compiladores 2009-I

%line %char %% {binario} {return new Symbol(sym.BINARIO, new String(yytext()));} {pcoma} {return new Symbol(sym.PCOMA, new String(yytext()));} [ \t\r\f\n]+ {} . {System.out.println("Error lexico");}

2. guardamos en la carpeta C:\JLexCUPcon el nombre : sintac01.cup package Binario; import java_cup.runtime.*; import java.io.*; import java.lang.*; parser code {: public static void main(String args[]) throws Exception { System.out.println("Archivo de entrada: "+args[0]); new parser(new Yylex(new FileInputStream(args[0]))).parse(); } // fin procedimiento public void syntax_error(Symbol s) { String cadena=""; report_error("Error de sintaxis",null); } // fin procedimiento :} action code {: int decimal=0; // Variable que almacena el numero decimal String cadena=""; // Cadena que contiene el numero binario :} terminal String BINARIO, PCOMA; non terminal S, F, E; start with S;

Por: Vladimir Flrez Tinta

10

Lenguajes formales y compiladores 2009-I

S ::= F; F ::= F E PCOMA {:System.out.println(cadena+" = "+decimal); decimal=0; cadena="";:}; F ::= E PCOMA {:System.out.println(cadena+" = "+decimal); decimal=0; cadena="";:}; E ::= E BINARIO:val {:cadena=cadena+val; decimal=decimal*(2)+(new Integer(val).intValue());:}; E ::= BINARIO:val {:cadena=cadena+val; decimal=new Integer(val).intValue();:}; Primero tenemos que extraer en JLexCUP en el disco C

Ingresamos a la carpeta extrada y copiamos el ejemplo

Por: Vladimir Flrez Tinta

11

Lenguajes formales y compiladores 2009-I

Se generaron 3 archivos de los cuales y una carpeta => es el nombre del paquete package

Cambiamos el nombre de archivo jenerado Dice Debe decir :lesico1.lex : Yylex se encuentra con extencion java se encuentra con extencion java

Por: Vladimir Flrez Tinta

12

Lenguajes formales y compiladores 2009-I

Ahora copiamos el ejemplo con el nombre: entrada.txt

a. esta es la forma de ingresar texto para una consulta y ya no por teclado

b. Si no queremos entrar por un texto los valores podemos introducir por teclado tenemos que hacer lo siguiente

Por: Vladimir Flrez Tinta

13

Lenguajes formales y compiladores 2009-I

Por: Vladimir Flrez Tinta

14

S-ar putea să vă placă și