xref: /minix3/external/bsd/flex/dist/examples/manual/expr.lex (revision 357f1050293be536ca8309aae20889945ce99fc1)
1*357f1050SThomas Veerman /*
2*357f1050SThomas Veerman  * expr.lex : Scanner for a simple
3*357f1050SThomas Veerman  *            expression parser.
4*357f1050SThomas Veerman  */
5*357f1050SThomas Veerman 
6*357f1050SThomas Veerman %{
7*357f1050SThomas Veerman #include "y.tab.h"
8*357f1050SThomas Veerman 
9*357f1050SThomas Veerman %}
10*357f1050SThomas Veerman 
11*357f1050SThomas Veerman %%
12*357f1050SThomas Veerman 
13*357f1050SThomas Veerman [0-9]+     { yylval.val = atol(yytext);
14*357f1050SThomas Veerman              return(NUMBER);
15*357f1050SThomas Veerman            }
16*357f1050SThomas Veerman [0-9]+\.[0-9]+ {
17*357f1050SThomas Veerman              sscanf(yytext,"%f",&yylval.val);
18*357f1050SThomas Veerman              return(NUMBER);
19*357f1050SThomas Veerman            }
20*357f1050SThomas Veerman "+"        return(PLUS);
21*357f1050SThomas Veerman "-"        return(MINUS);
22*357f1050SThomas Veerman "*"        return(MULT);
23*357f1050SThomas Veerman "/"        return(DIV);
24*357f1050SThomas Veerman "^"        return(EXPON);
25*357f1050SThomas Veerman "("        return(LB);
26*357f1050SThomas Veerman ")"        return(RB);
27*357f1050SThomas Veerman \n         return(EOL);
28*357f1050SThomas Veerman [\t ]*     /* throw away whitespace */
29*357f1050SThomas Veerman .          { yyerror("Illegal character");
30*357f1050SThomas Veerman              return(EOL);
31*357f1050SThomas Veerman            }
32*357f1050SThomas Veerman %%
33*357f1050SThomas Veerman 
34*357f1050SThomas Veerman 
35*357f1050SThomas Veerman 
36