%{ typedef unsigned int tetra; typedef struct { tetra h,l; } octa; extern int scan_const(char *); extern octa val; %} SIGN [+-]? NUM [0-9]+ EXP (e{SIGN}{NUM})? DOT \. %% {SIGN}{NUM}{DOT}{NUM}{EXP} if (scan_const(yytext)==1) { fprintf(stdout,"#%08X%08X",val.h,val.l); } else { fprintf(stderr,"Unable to convert floating point constant %s\n",yytext); exit(1); } . ECHO; \n ECHO; %% int main(void) { yylex(); return 0; }