Programa Lex para implementar una calculadora simple

Lex es 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 -efl
./a.out 

Veamos el programa LEX para implementar una calculadora simple.

Ejemplos:

Input : 
3+3
Output :
6.0

Input : 
5*4
Output : 
20.0 

A continuación se muestra la implementación:

/*lex program to implement 
         - a simple calculator.*/
  
% {
  int op = 0,i;
  float a, b;
% }
  
dig [0-9]+|([0-9]*)"."([0-9]+)
add "+"
sub "-"
mul "*"
div "/"
pow "^"
ln \n
%%
  
/* digi() is a user defined function */
{dig} {digi();} 
{add} {op=1;}
{sub} {op=2;}
{mul} {op=3;}
{div} {op=4;}
{pow} {op=5;}
{ln} {printf("\n The Answer :%f\n\n",a);}
  
%%
digi()
{
 if(op==0)
  
/* atof() is used to convert 
      - the ASCII input to float */
 a=atof(yytext); 
  
 else
 {
 b=atof(yytext);
  
 switch(op)
 {
   case 1:a=a+b;
    break;
  
   case 2:a=a-b;
   break;
   
   case 3:a=a*b;
   break;
   
   case 4:a=a/b;
   break;
   
   case 5:for(i=a;b>1;b--)
   a=a*i;
   break;
  }
 op=0;
 }
}
  
main(int argv,char *argc[])
{
 yylex();
}
  
yywrap()
 {
  return 1;
 }

Producción:

Publicación traducida automáticamente

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