%option noyywrap %{ #define ADD 1 #define SUB 2 #define MUL 3 #define DIV 4 #define NUM 5 #define ERROR 6 %} %% "+" return ADD; "-" return SUB; "*" return MUL; "/" return DIV; [1-9][0-9]* return NUM; [ \t\r\n] ; . return ERROR; %% int main(int argc, char **argv){ while(1){ int rec = yylex(); if(rec == 0) break; char *kind; switch(rec){ case ADD: kind = "ADD"; break; case SUB: kind = "SUB"; break; case MUL: kind = "MUL"; break; case DIV: kind = "DIV"; break; case NUM: kind = "NUM"; break; case ERROR: kind = "ERROR"; break; } printf("%d : %s : %s\n", rec, kind, yytext); } }