Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenido
APRENDIZAJE................................................................................................................................. 3
COMPETENCIAS............................................................................................................................. 3
OBJETIVO......................................................................................................................................... 3
INTRODUCCIÓN .............................................................................................................................. 4
¿Qué es un Autómata de Pila? ............................................................................................... 5
¿Cómo funciona? ....................................................................................................................... 5
Representación ........................................................................................................................... 5
DESARROLLO ................................................................................................................................. 6
Script de programa en C++ ...................................................................................................... 6
Capturas de ejecución de programa ..................................................................................... 9
Validación de AP en JFlap ..................................................................................................... 10
Traza de ejecución ................................................................................................................... 11
LINK DE VIDEO ............................................................................................................................. 12
CONCLUSIÓN ................................................................................................................................ 12
REFERENCIAS .............................................................................................................................. 12
2
Lenguajes y automatas II
Proyecto 2do Parcial - Validador de RFC
APRENDIZAJE
• Detectar errores semánticos.
• Diseñar y seleccionar información sobre la construcción de un analizador semántico.
• Reconocer el manejo de tipos en las expresiones y el uso de operadores.
• Establecer las reglas para la conversión de tipos (casting) en expresiones.
• Agregar acciones semánticas a la estructura de la gramática.
• Manipular la tabla de conversión de símbolos y de errores y direcciones.
• Integrar equipos de trabajo para la construcción de un analizador semántico.
COMPETENCIAS
Específica(s):
Diseña mediante el uso de reglas semánticas dirigidas por sintaxis, un analizador semántico
para un compilador.
Genéricas:
• Capacidad de análisis y síntesis.
• Capacidad de organizar y planificar.
• Habilidad para buscar y analizar información proveniente de fuentes diversas.
• Solución de problemas.
• Toma de decisiones.
• Trabajo en equipo.
• Capacidad de aplicar los conocimientos.
• Habilidades de investigación.
• Capacidad de generar nuevas ideas.
• Liderazgo.
• Habilidad para trabajar en forma.
• Autónoma.
• Búsqueda del logro.
OBJETIVO
La creación de un autómata con pila aplicando conocimientos de diseño y lógica
para validar caracteres, con un ejemplo que se utiliza en sistemas como es el RFC.
Ya que la aplicación de autómatas puede ser de gran ayuda para filtrados,
validaciones de datos.
3
Lenguajes y automatas II
Proyecto 2do Parcial - Validador de RFC
INTRODUCCIÓN
4
Lenguajes y automatas II
Proyecto 2do Parcial - Validador de RFC
¿Cómo funciona?
Los autómatas de pila, en forma similar a como se usan los autómatas finitos,
también se pueden utilizar para aceptar cadenas de un lenguaje definido sobre un
alfabeto A. Los autómatas de pila pueden aceptar lenguajes que no pueden aceptar
los autómatas finitos. Un autómata de pila cuenta con una cinta de entrada y un
mecanismo de control que puede encontrarse en uno de entre un número finito de
estados. Uno de estos estados se designa como estado inicial, y además algunos
estados se llaman de aceptación o finales.
Representación
Una máquina de este tipo se representa de la siguiente forma
Al igual que un autómata finito un autómata de pila cuenta con un flujo de entrada y
un flujo de control que puede encontrarse en uno de entre un número finito de
estados. Uno de estos estados se designa como el inicial y por lo menos un estado
es de aceptación.
La principal diferencia es que los autómatas de pila cuentan con una pila en donde
pueden almacenar información para recuperarla más tarde.
5
Lenguajes y automatas II
Proyecto 2do Parcial - Validador de RFC
DESARROLLO
Script de programa en C++
#include <iostream>
#include<stack>
Stack:
La Libreria estándar de plantillas soporta el uso de estructuras de pila a
travez de la plantilla de clase stack, la cual posee el mecanismo de
operación necesario para manejar operaciones de insertar (push),
borrar(pop), entre otras. La clase stack posee únicamente cinco
métodos y dos constructores.
6
Lenguajes y automatas II
Proyecto 2do Parcial - Validador de RFC
}
if( estado == 1 && simbolo == 'R' )
{
pila.pop();
return 1;
}
if( estado == 2 && simbolo == '9' )
{
pila.pop();
return 1;
}
if( estado == 2 && simbolo == '5' )
{
pila.pop();
return 1;
}
if( estado == 3 && simbolo == '1' )
{
pila.push('1');
return 1;
}
if( estado == 3 && simbolo == '6' )
{
pila.pop();
return 1;
}
if( estado == 4 && simbolo == 'E' )
{
pila.push('E');
return 1;
}
if( estado == 4 && simbolo == '1' )
{
pila.pop();
return 1;
}
if( estado == 5 && simbolo == '9' )
{
pila.pop();
return 1;
}
return 0;
}
encarga de leer los estados del arreglo y al final variable “estado” que
es responsable de se recorra o lea todos los estados ingresados a la
pila o arreglo.
while(palabra[i])
{
estado = mover(estado,palabra[i]);
i++;
}
return 0;
}
int main(){
char palabra[12];
if( scanner(palabra))
cout<<"\n\n\t\t\t RFC VALIDO !!! ";
else
cout<<" \n\n\t\t\t RFC INVALIDO !!!!";
cout<<endl<<endl;
system("pause");
}
8
Lenguajes y automatas II
Proyecto 2do Parcial - Validador de RFC
9
Lenguajes y automatas II
Proyecto 2do Parcial - Validador de RFC
Validación de AP en JFlap
10
Lenguajes y automatas II
Proyecto 2do Parcial - Validador de RFC
Traza de ejecución
W = HUVR951116E19
Estado de pila Por leer Lo que está en pila
q0 HUVR951116E19 e
q1 UVR951116E19 H
q1 VR951116E19 U
q1 R951116E19 V
q2 951116E19 R
q2 51116E19 9
q3 1116E19 5
q2 116E19 1
q3 16E19 1
q3 6E19 1
q4 E19 6
q5 19 E
q5 9 1
q5 9 9
q5 e
11
Lenguajes y automatas II
Proyecto 2do Parcial - Validador de RFC
LINK DE VIDEO
https://www.youtube.com/watch?v=IUnFUOpYns4
CONCLUSIÓN
Existe un tipo de autómata que define los lenguajes independientes del contexto.
Dicho autómata, conocido como “autómata de pila”, es una extensión del autómata
finito no determinista con transiciones, el cual constituye una forma de definir los
lenguajes regulares. El autómata de pila es fundamentalmente un AFN con la
adición de una pila. La pila se puede leer, se pueden introducir elementos en ella y
extraer sólo el elemento que está en la parte superior de la misma, exactamente
igual que la estructura de datos de una “pila”.
REFERENCIAS
12
Lenguajes y automatas II