%option noyywrap %{ #define YY_INPUT(buf,result,max_size) {\ int c=fgetc(yyin);\ result=( c==EOF) ? YY_NULL : (buf[0]=c, 1);\ } %} %% -?[0-9]+ {return TINTEGER;} -?([0-9]+\.[0-9]*)|(\.[0-9]+) {return TREAL;} "#x"-?[0-9a-fA-F]+ {return THEX;} "#b"[01]+ {return TBIN;} #\\. {return TCHAR;} \"\" {return TNULLSTR;} \"([^"\\]|\\.)+\" {return TSTRING;} "." {return TDOT;} ([^(),'`#; \r\n\t]|(\\.))+ {return TSYMBOL;} "()" {return TNULL;} "(" {return TOPENPAREN;} ")" {return TCLOSEPAREN;} "," {return TUNQUOTE;} "'" {return TQUOTE;} "`" {return TQUASIQUOTE;} "#()" {return TNULLVEC;} "#(" {return TVECTOR;} "#t" {return TTRUE;} "#f" {return TFALSE;} (;.*"\n")|[ \t\r\n]+ . {printf ("\e[41m%s", yytext);} %%