%{ #include #include "Util.h" # ifndef YYSTYPE # define YYSTYPE char* # define YYSTYPE_IS_TRIVIAL 1 # endif # define COMMA 257 # define EQUAL 258 # define DIGEST 259 # define ID 260 # define QSTRING 261 # define HSTRING 262 extern YYSTYPE yylval; %} ws [ \t]+ comma , equal = hstring [0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f]* qstring \"[^\"]*\" id [a-z]* %% {ws} ; {comma} { /* PRINT ("COMMA"); */ return COMMA; } {equal} { /* PRINT ("EQUAL"); */ return EQUAL; } {hstring} { /* PRINT ("HSTRING"); */ printf ("lexer => %s\n", yytext); yylval = yytext; return HSTRING; } {qstring} { /* PRINT ("QSTRING"); */ printf ("lexer => %s\n", yytext); yylval = yytext; return QSTRING; } {id} { /* PRINT ("ID"); */ yylval = yytext; return ID; } Digest { /* PRINT ("DIGEST"); */ return DIGEST; } <> { return EOF; } %% /* int main (void) { printf ("calling yy_scan_string\n"); yy_scan_string ("abc=123, xyz=\"xyz\""); while (EOF!=yylex()) {} } */