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