%{ int line_count=0; %} %% "(" { printf("LEFT_PAREN\n"); } ")" { printf("RIGHT_PAREN\n"); } "," { printf("COMMA\n"); } ":" { printf("COLON\n"); } ";" { printf("SEMI\n"); } ":=" { printf("ASSIGN\n"); } "<" { printf("LESS_THAN\n"); } "+" { printf("PLUS\n"); } "." { printf("PERIOD\n"); } [A-Za-z][A-Za-z0-9]* { if (reserved(yytext)) printf("Keyword %s found\n", yytext); else printf("ID val=%s\n", yytext); } [0-9]+ { printf("INTEGER val=%d\n", atoi(yytext)); } [0-9]+\.[0-9]+ { printf("FLOAT val=%s\n", yytext); } . /* ignore */ ; "\n" line_count ++; %% main() { yylex(); printf("%d lines found\n", line_count); } reserved(char *lexeme) { return 1; }