Prac, 1-3 Automatas
-
Upload
sayas-cosme-francisco -
Category
Documents
-
view
13 -
download
0
Transcript of Prac, 1-3 Automatas
Practica 1:%%%class ejemfle%standalonenum=[0-9]+palabra=[A-Z|a-z]+%%"digo" |"DIGO" {System.out.println("Diego");}"house" {System.out.println("casa");}"bed" {System.out.println("cama");}"if" {System.out.println("si");}"lupo" {System.out.println("bolbasour");}{num} {System.out.println("es un número");}{palabra} {System.out.println("reconocio una palabra");}
a)Binario_par
%%%class impar%standalonepar=[1|0]+0impar=[1|0]+1%%
{par} {System.out.println("es un binario par");}{impar} {System.out.println("es un binario impar");}
b) Ca_sa
%%%class casa%standalone
%%
casa {System.out.println("Ca_sa");}camisa {System.out.println("Ca_sa");}carcasa {System.out.println("Ca_sa");}
c) Blancos
%%%class Espacio%standaloneBlanco = [ \t\f]+%%
{Blanco} {System.out.print(" ");}
d)comentario_linea%%%class comentariolinea%standaloneGato = [#]+[A-Z|a-z]+%%{Gato} {;}
PRÁCTICA NO. 2
a) UltimoBit
/* Imprime el ultimo bit de cada número binario */
%%
%class UltimoBit
%standalone
%%
(0|1)+ {int ultimo=yylength()-1;
System.out.println("El numero Binario: "+yytext());
System.out.println("El Ultimo Bit es: "+yycharat(ultimo));}
b) asterisco
/* Imprime despues*/
%%
%class asterisco
%standalone
%%
("+")+ {int Primero=yylength()-1;
System.out.print("*"+yycharat(Primero)+"*");
}
c) punto
/* Imprime despues*/
%%
%class Corche
%standalone
%%
(".")+ {int Primero=yylength();
System.out.print(yytext()+"["+yycharat(Primero)+"]");
}
d) DiaSemana
/* Imprime el ultimo bit de cada número binario */
%%
%class DS
%standalone
%%
"1" {System.out.println("Domingo");}
"2" {System.out.println("Lunes");}
"3" {System.out.println("Martes");}
"4" {System.out.println("Miercoles");}
"5" {System.out.println("Jueves");}
"6" {System.out.println("Viernes");}
"7" {System.out.println("sabado");}
e) operador
/* Imprime el ultimo bit de cada número binario */
%%
%class operador
%standalone
Salto = \r|\n|\r\n
Blanco = [ \t\f]
%%
{Blanco}+ {;}
{Salto} {;}
"+" {System.out.println("OPERADOR");}
"-" {System.out.println("OPERADOR");}
"/" {System.out.println("OPERADOR");}
"*" {System.out.println("OPERADOR");}
"^" {System.out.println("OPERADOR");}
f) A_Mayusculas
/*(A_Mayusculas)Escriba en mayúsculas todas las palabras de
Un texto que comienzan por mayúsculas.
(Considere que una palabra es una secuencia constituida por letras minúsculas o mayúsculas).*/
%%
%class Mayus
%standalone
BLANCO=[ |\r|\n|\t|\f]
Palabra = [a-zA-Z]+
Mayuscula= [A-Z]+
PalMay={Mayuscula}{Palabra}
%%
{BLANCO}+ {;}
{PalMay} {System.out.println("MAYUSCULA");}
g) cadenas
/* Imprime el ultimo bit de cada número binario */
%%
%class cadenas
%standalone
Salto = \r|\n|\r\n
Blanco = [ |\t|\f]
CADENA= \"
PALABRA= ([a-zA-Z]|[0-9])*
COMPUESTO= {CADENA}{PALABRA}{CADENA}
%%
{Blanco}+ {;}
{Salto} {;}
{CADENA} {System.out.println(" ");}
PRÁCTICA NO. 3
/* Identifica enteros y palabras de un texto*/ %%%class macro%standaloneBLANCO=[ |\r|\n|\t|\f]ENTERO = ("+"|"-")?[0-9]+PALABRA = [a-zA-Z]+%%{BLANCO}+ {;}{ENTERO} {System.out.print("INT: "+yytext()+"\n");}{PALABRA} {System.out.print("WORD: "+yytext()+"\n");}. {System.out.print("OTHER: "+yytext()+"\n");}
a) Real/*Escriba un analizador léxico que sustituya las apariciones de número reales en notación científica por la cadena "REAL". Se admiten como cadenas (lexemas): -3.4 .4 3.E10 .6e-2 No se admiten las siguientes: 45 4.6E */%%%class numreales%standaloneBLANCO=[ |\r|\n|\t|\f]Numero = ("-")?[0-9]+([0.0-0.9])*Exponencial = ["e|E"]+(("-")?[0-9])+REAL={Numero}{Exponencial}*%%{BLANCO}+ {;}{REAL} {System.out.println("Numero Real");}
b) Horas/*(Horas.flex)Escriba un analizador léxico que sustituya las expresiones horarias que encajan o bien con el patrón HH:MM o bien con el patrón H:MM por la cadena "HORA". Tenga en cuenta que las horas deben ser correctas. Por ejemplo: 29:80 no sería una hora correcta.*/%%%class Horas%standaloneBLANCO=[ |\r|\n|\t|\f]Horas = [0-23]+Minutos = [0-60]+Dospuntos= ":"HORA={Horas}{Dospuntos}{Minutos}%%{BLANCO}+ {;}{HORA} {System.out.println("HORA");}
c) May_min/*(May_Min.flex) Sustituye las palabras de un texto que empiezan por minúsculas por la cadena MINUSCULA y las palabras que empiecen por mayúsculas por la cadena MAYUSCULA.*/%%%class Maymin%standaloneBLANCO=[ |\r|\n|\t|\f]Minuscula = [a-z]+Palabra = [a-zA-Z]+Mayuscula= [A-Z]+PalMin={Minuscula}{Palabra}PalMay={Mayuscula}{Palabra}%%{BLANCO}+ {;}{PalMin} {System.out.println("MINUSCULA");}
{PalMay} {System.out.println("MAYUSCULA");}
d) Fechas/*(Fechas.flex)Para representar fechas existen dos formatos: el americano (AAAA/DD/MM) y el europeo (DD/MM/AAAA). Escriba un analizador léxico que imprima todas las fechas de un texto que se ajusten a uno de dichos formatos indicando además qué formato fue usado (Ignore la problemática relacionada con los años bisiestos). */%%%class Fechas%standaloneBLANCO=[ |\r|\n|\t|\f]Años = [0-9]+Meses = [1-12]Dias = [1-31]D = ["/"]*americano = {Años}{D}{Dias}{D}{Meses}europeo = {Dias}{D}{Meses}{D}{Años}%%{BLANCO}+ {;}{americano} {System.out.println("formato americano: "+yytext());}{europeo} {System.out.println("formato europeo: "+ yytext());}