Código LEX que acepta strings que tienen números pares de ‘a’ sobre el alfabeto de entrada {a,b}

Requisito previo:  Diseño de autómatas finitos

Introducción:
en este artículo, discutiremos el DFA en el código LEX que acepta la string que tiene números pares de ‘a’ sobre el alfabeto de entrada {a, b}. con la ayuda del ejemplo. Discutámoslo uno a uno.

Descripción general del problema:
código LEX que acepta la string que tiene números pares de ‘a’ sobre el alfabeto de entrada {a, b}.

Ejemplo – 

Input : aba
Output: Accepted

Input : ababba
Output: Not Accepted

Input: 23ab
Output:Invalid

Input:ab345
Output:Invalid

Input:aabababa
Output:Not Accepted

Enfoque:
LEX nos proporciona un estado INICIAL por defecto. Entonces, para hacer un DFA , use esto como el estado inicial del DFA. 
Definimos dos estados más: A y DEAD, donde el estado DEAD se usaría si se encontrara una entrada incorrecta o no válida. Cuando el usuario ingrese un carácter no válido, muévase al estado MUERTO y luego imprima » Inválido «. 
Si la string de entrada termina en A, muestra el mensaje » No aceptado «. De lo contrario, si la string de entrada termina en el estado INICIAL, se muestra el mensaje » Aceptado «.

Nota: 
Para compilar el programa lex necesitamos tener un sistema Unix que tenga flex instalado. Luego necesitamos guardar el archivo con la extensión .l.

Example - filename.l

Luego, después de guardar el programa, cierre el archivo Lex y luego abra la terminal y escriba los siguientes comandos de la siguiente manera.

lex filename.l
cc lex.yy.c
./a.out

CÓDIGO LEX:

%{
%}
 
%s A DEAD
 
%%
<INITIAL>a BEGIN A;
<INITIAL>b BEGIN INITIAL;
<INITIAL>[^ab\n] BEGIN DEAD;
<INITIAL>\n BEGIN INITIAL; {printf("Accepted\n");}
 
<A>a BEGIN INITIAL;
<A>b BEGIN A;
<A>[^ab\n] BEGIN DEAD;
<A>\n BEGIN INITIAL; {printf("Not Accepted\n");}
 
<DEAD>[^\n] BEGIN DEAD;
<DEAD>\n BEGIN INITIAL; {printf("Invalid\n");}
 
%%

int yywrap()
{
return 1;
}  
int main()
{
   printf("Enter String\n");
   yylex();
return 0;
}

PRODUCCIÓN –

Publicación traducida automáticamente

Artículo escrito por kashyapsingh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *