%{ #define NEWLINE 1 #define KEY_BEGIN 2 #define ID 3 %} %% \n { return NEWLINE; } begin { return KEY_BEGIN; } [a-z][a-z0-9_]* { return ID; } . { } %% main() { int tok; while ((tok = yylex()) != 0) { switch (tok) { case NEWLINE: printf("NEWLINE\n"); break; case KEY_BEGIN: printf("BEGIN\n"); break; case ID: printf("ID[%s]\n", yytext); break; default: printf("Unknown[%s]\n", yytext); break; } /* switch */ } /* while */ } /* main */ int yywrap() { return 1; }