diff options
Diffstat (limited to 'examples/manual/expr.lex')
-rw-r--r-- | examples/manual/expr.lex | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/manual/expr.lex b/examples/manual/expr.lex new file mode 100644 index 0000000..9adfcaa --- /dev/null +++ b/examples/manual/expr.lex @@ -0,0 +1,35 @@ +/* + * expr.lex : Scanner for a simple + * expression parser. + */ + +%{ +#include "y.tab.h" + +%} + +%% + +[0-9]+ { yylval.val = atol(yytext); + return(NUMBER); + } +[0-9]+\.[0-9]+ { + sscanf(yytext,"%f",&yylval.val); + return(NUMBER); + } +"+" return(PLUS); +"-" return(MINUS); +"*" return(MULT); +"/" return(DIV); +"^" return(EXPON); +"(" return(LB); +")" return(RB); +\n return(EOL); +[\t ]* /* throw away whitespace */ +. { yyerror("Illegal character"); + return(EOL); + } +%% + + + |