Programa Lex para encontrar si un carácter aparte del alfabeto aparece en una string

Lexes un programa informático que genera analizadores léxicos. Lex lee un flujo de entrada que especifica el analizador léxico y genera el código fuente que implementa el lexer en el lenguaje de programación C.

Los comandos para ejecutar el programa lex son:

lex abc.l (abc is the file name)
cc lex.yy.c 
./a.out

Problema: escriba un programa lex para encontrar si un carácter aparte del alfabeto aparece en una string dada.

Ejemplo :

Input : GeeksforGeeks is best
Output : other characters are also present
Explanation: Because ' ' space is also a character

Input : geeksforgeeks
Output : only alphabets present
Explanation: Only english alphabets are present in the string

Acercarse :

  1. Usar la bandera para verificar si otros personajes también están presentes o no;
  2. Si se encuentra «\n» , asumiremos que el usuario ha dado la string por completo y ahora quiere que se muestre el resultado.
  3. Entonces, de acuerdo con el estado de la bandera, mostraremos la salida.
  4. De lo contrario, si se encuentra cualquier otro carácter excepto (az, AZ) , haremos que el indicador sea = 1, que estamos verificando a través de la expresión regular.

A continuación se muestra la implementación:

C++

/* lex code to check for characters other that
alphabets in a given string */
 
%{
int flag = 0;
%}
 
%%
[\n] {
    flag==0?printf("Only alphabets present\n"):
    printf("Other characters are also present\n");
    flag = 0;
}
 
[^a-zA-Z] {flag = 1;}
 
. {}
%%
 
int yywrap(void) {}
 
int main(){
    yylex();
    return 0;
}

Producción:

Publicación traducida automáticamente

Artículo escrito por abhijeet010304 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 *