Programa LEX para imprimir la string más larga y encontrar el promedio de números dados

Lex:
El programa Lex tiene el propósito de generar un analizador léxico. Los analizadores Lex son un programa que transforma los flujos de entrada en una secuencia de tokens. El programa AC implementa el analizador léxico para leer el flujo de entrada y generar una salida como código fuente.

 Comandos a utilizar –

lex file_name.l   // To produce a c program
cc lex.yy.c -lfl  // To compile the c program and produces object program a.out.
./a.out           // To transforms an input stream into a sequence of tokens.    

1. String más larga:
en esto estamos encontrando la longitud de la string más larga usando la función llamada  yyleng   (Devuelve la longitud de una string dada). Y estamos almacenando este valor devuelto en la variable  más largo   . Para imprimir qué string o palabra es más larga estamos usando  yytexto    y  strcpy()    función. Estamos almacenando la string o palabra en una variable de tipo char que es  string más larga   .

Programa –

C

%{
   //to find longest string and its length
    #include<stdio.h>
    #include<string.h>
    int longest = 0;
    char longestString[30];
%}
%%
[a-zA-Z]+ {
if(yyleng>longest){
    longest = yyleng;
    strcpy(longestString,yytext);
}
}
  
%%
  
int main(void){
    yylex();
    printf("The longest string is %s \n", longestString);
    printf("Length of a longest string is %d \n",longest);
}

Producción –

2. Promedio de números dados:
Entonces, primero tenemos que calcular la suma de todos los números dados por el usuario. Almacene la suma en una suma variable. Luego cuente el número de enteros (números que proporciona el usuario). Almacene este conteo en una variable n.
Después de esto, solo divide la suma y cuenta de números. Obtendrás tu resultado.
Aquí, estamos usando la función incorporada atoi(). Se puede pasar una string de caracteres a la función atoi(), que los convertirá en un número entero. La string de entrada es una string de texto que se puede convertir en un valor numérico. Cuando el primer carácter en la string de entrada no es parte de un número, la función atoi() deja de leerlo. Este podría ser un carácter nulo al final de la string. No admite exponentes ni decimales.
La función atoi() elimina todos los espacios en blanco en la string al principio.

Programa –

C

%{
    //Average of given numbers.
    #include<stdio.h>
    #include<math.h>
%}
digit[0-9]+
%%
{digit} return atoi(yytext);
%%
  
int main(){
    float sum=0, num, n=0;
    while((num=yylex())>0){
    sum = sum+num;
    n = n+1;
}
printf("The sum of given numbers is %f\n",sum);
printf("Average of given numbers is %f\n",sum/n);
yylex();
return 0;
}

Producción –

Publicación traducida automáticamente

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