%{ #include #include "config.parser.h" #define YY_NO_UNISTD_H 1 %} %x double_quote %option nounput %option noyywrap %% \" BEGIN(double_quote); [^\"]* { yylval.str=(char *)strdup(yytext); return TOK_STRING; } \" BEGIN(INITIAL); false { return TOK_FALSE; } off { return TOK_FALSE; } true { return TOK_TRUE; } on { return TOK_TRUE; } yes { return TOK_TRUE; } no { return TOK_FALSE; } -?[0-9]+\.[0-9]+ { yylval.f=atof(yytext); return TOK_FLOAT; } -?[0-9]+ { yylval.i=atoi(yytext); return TOK_INTEGER; } [_A-Za-z0-9]+ { yylval.str=(char*)strdup(yytext); return TOK_IDENTIFIER; } \n { return TOK_EOL; } [[:blank:]] { return TOK_WHITE; } #.*\n { return TOK_WHITE; } . { return TOK_UNKNOWN; } %% void yyerror(char *s) { fprintf(stderr,"error: %s\n",s); }