Código LEX que acepta la string con 0 solamente

En este artículo, discutiremos la descripción general del Código LEX que acepta la string con 0 solamente. Y también implementaremos con código LEX, entenderemos el enfoque. Discutámoslo uno por uno.

Descripción general del problema:
Código LEX que acepta la string con 0 solamente.

Ejemplo –

Input  : 00
Output : Accepted

Input  : 1000
Output : Invalid

Input  : 23ab
Output : Invalid

Input  : ab345
Output : Invalid

Input  : 00000
Output : 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 «No válido». Si la string de entrada termina en A, muestra el mensaje «Aceptado». De lo contrario, si la string de entrada termina en el estado INICIAL, se muestra el mensaje «No 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.

Ejemplo :

filename.l

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

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

Código LEX:

C

%{
%}
   
%s A DEAD
   
// logic for dead state  
%%
<INITIAL>0 BEGIN A;
<INITIAL>[^0\n] BEGIN DEAD;
<INITIAL>\n BEGIN INITIAL; {printf("Not Accepted\n");}
  
// Initial node - Accepted
<A>0 BEGIN A;
<A>[^0\n] BEGIN DEAD;
<A>\n BEGIN INITIAL; {printf("Accepted\n");}
  
// Invalid Case
<DEAD>[^\n] BEGIN DEAD;
<DEAD>\n BEGIN INITIAL; {printf("Invalid\n");}
   
%%
  
    
// Method - yywrap  
int yywrap()
{
return 1;
}  
  
// main method
int main()
{
   printf("Enter String\n");
  // called yylex method
   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 *