Prac, 1-3 Automatas

8
Practica 1: %% %class ejemfle %standalone num=[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 %standalone par=[1|0]+0 impar=[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");}

Transcript of Prac, 1-3 Automatas

Page 1: 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]+%%

Page 2: Prac, 1-3 Automatas

{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)+"*");

}

Page 3: Prac, 1-3 Automatas

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");}

Page 4: Prac, 1-3 Automatas

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");}

Page 5: Prac, 1-3 Automatas

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");}

Page 6: Prac, 1-3 Automatas

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");}

Page 7: Prac, 1-3 Automatas

{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());}