Lenguajes y Autómatas I
Serie:
5SC6B
Grupo:
B
Temas:
Autómatas Finitos, Expresiones Regulares y Analizador Léxico
Unidades:
II, III y IV
Alumno:
Meza Pineda José María
14212042
Maestro:
Estrada Erasmo
Fecha de entrega:
Por ejemplo:
0,1
0 1
q0 q2 q3
Inicio
Autómatas finitos determinísticos
Un autómata finito determinista (AFD) es un autómata finito que además es un
sistema determinista, es decir, para cada estado en que se encuentre el autómata,
y en cualquier símbolo del alfabeto leído, existe siempre a lo más una transición
posible desde ese estado y con ese símbolo.
Utilizado en muchos lugares como un lenguaje para describir patrones en texto que
son sencillos pero muy útiles.
Pueden definir exactamente los mismos lenguajes que los autómatas pueden
describir: Lenguajes regulares.
Tabla de expresiones regulares
Token E.R Lexema
Tipo_Dato jmtabla | jmraiz | jmrenglon Jmtabla, jmraiz,
| jmcolumna | jmborra | jmrenglon, jmcolumna,
jmbusca | jmnulo | jmborra, jmbusca,
jmseleccion | jmcorto | jmnulo, jmseleccion,
jmrepite | jmlong | jmcorto, jmrepite, jmlong,
jmconstante | jmtecto | jmconstante, jmtecto,
jmmultiple | jmatributo | jmmultiple, jmatributo,
jmenumerar | jmdiatiempo jmenumerar,
| jmletra | jmcadena | jmdiatiempo, jmletra,
jmrandom | jmbyte | jmcadena, jmrandom,
jmbinario | jmentero | jmbyte, jmbinario,
jmbooleano | jmflotador | jmentero, jmbooleano,
jmdoble | jmimagen | jmflotador, jmdoble,
jmfoto | jmbol | jmcaracter jmimagen, jmfoto jmbol |
jmcaracter
Bucles jmdo | jmforeach | jmpara | Jmdo, jmforeach,
jmencaso jmpara,jmencaso
Modif_acceso jmprivado | jmpublico | Jmprivado, jmpublico,
jmprotegido | jmglobal jmprotegido, jmglobal
Espec_metodos jmvoid | jmoverride | jmvoid, jmoverride,
jmvirtual | jmabstracto | jmvirtual, jmabstracto,
jmnativo | jmestatico | jmnativo, jmestatico,
jmetiquet jmetiquet
Sal_bucle jmdetener | jmpara | Jmdetener, jmpara,
jmaltos | jmstop jmaltos, jmstop
Est_booleano jmfalso | jmverdadero | Jmfalso, jmverdadero,
jmreal | noreal jmreal, noreal
Cont_bloque jmcontinuar | jmavanzar | Jmcontinuar, jmavanzar,
jmseguir | jmadelantede jmseguir, jmadelantede
Op_bool jmno | jmy | jmo Jmno,jmy, jmo
condicional Jmsi | jmnoo Jmsi, jmnoo
Alter_cond jmsino jmsino
Crea_obj Jmnuevo | jmnew Jmnuevo, jmnew
excepciones Jmfinalmente | jmthrow | Jmfinalmente, jmthrow,
jmexcepcion | jmintenta | jmexcepcion, jmintenta,
jmcatch | jmcopiar | jmcatch, jmcopiar,
jmdiccionario | jmdiccionario,
jmexponene jmexponene
sentencia jmswitch jmswitch
Bloque_sentencia jmcaso jmcaso
clase jmclase jmclase
referencia jmesto jmesto
Devuelve_valor jmregresar jmregresar
Asignar_prop Jmtenero | jmbteber Jmtenero, jmbteber
comentario jm// jm//
delimitador jm, | jmdelimitador | jmdel jm, jmdelimitador, jmdel
Fin_inst jm; jm;
Decla_interface jminter | jminterfaz Jminter, jminterfaz
Bloque_codigo jmporpordefecto jmporpordefecto
importar Jmimportar | jmimpo Jmimportar, jmimpo
mensaje Jmmensaje | jmmen Jmmensaje, jmmen
Propiedad_obj Jmpropiedad | jmprop Jmpropiedad, jmprop
Prop_mens Jmnom | jmnombre | Jmnom, jmnombre
jmvisible | jmcolor | jmfont | jmvisible, jmcolor, jmfont,
jmfuente | jmvianey jmfuente, jmvianey
evento Jmevento | jmevent Jmevento, jmevent
Tipo_evento Jmmouseclick | Jmmouseclick,
jmmouseenter | jmmouseenter,
jmmosepressed,
jmmosepressed |
jmmousereleased,
jmmousereleased | jmtick | jmtick, jmbuttonclick,
jmbuttonclick | jmkeypressed,
jmkeytyped,
jmkeypressed |
jmkeyreleased
jmkeytyped |
jmkeyreleased
Function_matematica Jmatan | jmexp | jmlog | Jmatan, jmexp, jmlog,
jmlog10 | jmpow | jmsqrt | jmlog10, jmpow, jmsqrt,
jmavg | jmabs | jmsin | jmavg, jmabs, jmsin,
jmcos | jmasin | jmacos jmcos, jmasin, jmacos
Estruc_datos Jmarreglo | jmmatriz | Jmarreglo, jmmatriz,
jmstruct | jmlista | jmcola | jmstruct, jmlista, jmcola,
jmpila jmpila
hilos Jmresumen | jmscheduled Jmresumen,
| jmjoin | jmhilo | jmdormir | jmscheduled, jmjoin,
jmstarthilo | jmnotificacion | jmhilo, jmdormir,
jmslee jmstarthilo,
jmnotificacion, jmslee
Manipulacion_datos Jmagrega | jmempujar | jmagregar, jmempujar,
jmlimpiar | jmpeek | jmpop jmlimpiar, jmpeek, jmpop
variable Jmtemporizador | Jmdelay Jmtemporizador,
| jmciclo | jmsetup | Jmdelay, jmciclo,
jmdigitalesc | jmdigitalleer | jmsetup, jmdigitalesc,
jmanalogesc | jmdigitalleer,
jmanalogread | jmanalogesc,
jmdelaymicroseconds | jmanalogread,
jmprin | jmlnhig | jmlow | jmdelaymicroseconds,
jmentrada | jmsalida | jmprin, jmlnhig, jmlow,
jmpinmode | jmseria l | jmentrada, jmsalida,
jmdisplay jmpinmode, jmserial,
jmdisplay
imprimir Jmimprimircad | jmlimpiar | Jmimprimircad,
jmleer | jmleercad | jmlimpiar, jmleer,
jmimprimir jmleercad, jmimprimir
Clase_prin Jmmain | jmenelmain Jmmain, jmenelmain
graficos Jmfill | jmgraphics | Jmfill,jmgraphics,jmunion
jmunion
funcion Jmfunction | jmfunciones Jmfunction,jmfunciones
metodo cdestructor | jmdes Cdestructor, jmdes
constante jmpi jmpi
Crea_alias jmalias jmalias
modificador jmvolatil jmvolatil
Operador_aritmetico +|-| /| *|^|% +, -, /, *, ^, %
Abre_parentesis ( (
Cierra_parentesis ) )
Abre_corchete [ [
Cierra_corchete ] ]
Abre_llave { {
Cierra_llave } }
Op_relacional < | > | == |=< | >= | dif <, >, ==, =<, >=, dif
asigacion -= -=
Analizador Léxico
La fase de rastreo (scanner), tiene las funciones de leer el programa fuente como
un archivo de caracteres y dividirlo en tokens. Los tokens son las palabras
reservadas de un lenguaje, secuencia de caracteres que representa una unidad de
información en el programa fuente. En cada caso un token representa un cierto
patrón de caracteres que el analizador léxico reconoce, o ajusta desde el inicio de
los caracteres de entrada. De tal manera es necesario generar un mecanismo
computacional que nos permita identificar el patrón de transición entre los
caracteres de entrada, generando tokens, que posteriormente serán clasificados.
Este mecanismo es posible crearlo a partir de un tipo específico de máquina de
estados llamado autómata finito.
class AnalizadorLexicoMeza
try
analizador.Programa();
catch(ParseException e)
System.out.println(e.getMessage());
System.out.println("Error en analisis");
PARSER_END(AnalizadorLexicoMeza)
TOKEN:
TOKEN:
{
TOKEN:
| <AND: "&&">{System.out.println("AND"+image);}
TOKEN:
<INT:"inum"|"idec"|"istr"|"ichr">{System.out.println("Entero "+image);}
| <IDENTIFIER : ["a"-"z","A"-"Z"](["a"-"z","A"-"Z","0"-"9","_"])*>
{System.out.print("Identificador "+image+"\r\n");}
| <CADENA : ["a"-"z","A"-"Z","0"-"9"](["a"-"z","A"-"Z","0"-
"9"])*>{System.out.print("Cadena"+image+"\r\n");}
}
TOKEN:
| <CONDICIONAL:"Jmsi" | "jmnoo">{System.out.println("Condicional"+image);}
| <ALT_CONDI:"jmsino">{System.out.println("Alterno Condicional"+image);}
| <SENTENCIA:"jmswitch">{System.out.println("Sentencia"+image);}
| <BLOQUE_SENT:"jmcaso">{System.out.println("Bloque de Sentencia"+image);}
| <CLASE:"jmclase">{System.out.println("Clase"+image);}
| <REFERENCIA:"jmesto">{System.out.println("Referencia"+image);}
| <DEVUELVE_VALOR:"jmregresar">{System.out.println("Devuelve Valor"+image);}
| <ASIGNAR_PROP:"Jmtenero" | "jmbteber">{System.out.println("Asignar
Proporcion"+image);}
| <COMENTARIO:"jm//">{System.out.println("Comentario"+image);}
| <FIN_INSTANCIA:"jm;">{System.out.println("Fin de la Instacia"+image);}
| <DECLA_INTERFACE:"jminter" | "jminterfaz">{System.out.println("Declaracion de
Interface"+image);}
| <IMPORTAR:"Jmimportar" | "jmimpo">{System.out.println("Importar"+image);}
| <MENSAJE:"Jmmensaje" | "jmmen">{System.out.println("Mensaje"+image);}
| <EVENTO:"Jmevento | jmevent">{System.out.println("Evento"+image);}
| <FUNCION:"Jmfunction" | "jmfunciones">{System.out.println("Funcion"+image);}
| <METODO:"cdestructor" | "jmdes">{System.out.println("Metodo"+image);}
}
Archivo de Texto
jmtabla jmraiz jmrenglon jmcolumna jmborra jmbusca jmnulo jmseleccion jmcorto jmrepite jmlong
jmconstante jmtecto
jmrandom jmbyte jmbinario jmentero jmbooleano jmflotador jmdoble jmimagen jmfoto jmbol
jmcaracter
jmexp jmlog jmlog10 jmpow jmsqrt jmavg jmabs jmsin jmcos jmasin jmacos
Jmsi jmnoo
Jmatan jmexp jmlog jmlog10 jmpow jmsqrt jmavg jmabs jmsin jmcos jmasin jmacos
Corrida