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