Lex is a computer program that generates lexical analyzers. Lex reads an input stream specifying the lexical analyzer and outputs source code implementing the lexer in the C programming language.
The commands for executing the LEX program are:
lex abc.l (abc is the file name)
cc lex.yy.c -efl
./a.out
Let’s see LEX program to implement a simple calculator.
Examples:
Input :
3+3
Output :
6.0
Input :
5*4
Output :
20.0
Below is the implementation:
% {
int op = 0,i;
float a, b;
% }
dig [0-9]+|([0-9]*) "." ([0-9]+)
add "+"
sub "-"
mul "*"
div "/"
pow "^"
ln \n
%%
{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)
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;
}
|
Output:

Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
11 Jul, 2022
Like Article
Save Article