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