%{ /* need this for the call to atof() below */ #include /* need this for printf(), fopen() and stdio below */ #include %} DIGIT [0-9] ID [a-z][a-z0-9]* %% {DIGIT}+ { printf("An integer:%s(%d)\n",yytext,atoi(yytext)); } {DIGIT}+"."{DIGIT}* { printf("A float: %s (%g)\n",yytext,atof(yytext)); } if|then|begin|end|procedure|function { printf("A keyword: %s\n",yytext); } {ID} {printf("An identifier %s\n",yytext);} "+"|"-"|"*"|"/" {printf("An operator %s\n",yytext);} "{"[^}\n]*"}" {/* eat up one-line comments */} [ \t\n]+ {/* eat up white space */} . {printf("Unrecognized character: %s\n", yytext);} %% int main(int argc, char *argv[]){ ++argv, --argc; if (argc>0) yyin = fopen(argv[0],"r"); else yyin = stdin; yylex(); } yywrap(){}