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