%{ 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"); } program | input | output | var | integer | float | begin | while | do | end { printf("%d: Keyword %s found\n", line_count+1, yytext); } [A-Za-z][A-Za-z0-9]* { 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); }