Implemented quoted string options, comments and empty lines.
[liboconfig.git] / src / parser.lex
1 WHITE_SPACE [\ \t\b]
2 ALNUM [A-Za-z0-9_]
3 QUOTED_STRING \"([^\"]+|\\.)*\"
4 UNQUOTED_STRING {ALNUM}+
5 HEX_NUMBER 0[xX][0-9a-fA-F]+
6 OCT_NUMBER 0[0-7]+
7 DEC_NUMBER [\+\-]?[0-9]+
8 FLOAT_NUMBER [\+\-]?[0-9]*\.[0-9]+([eE][\+\-][0-9]+)?
9 NUMBER ({FLOAT_NUMBER}|{HEX_NUMBER}|{OCT_NUMBER}|{DEC_NUMBER})
10 BOOL_TRUE (true|yes|on)
11 BOOL_FALSE (false|no|off)
12 COMMENT #.*
13
14 %%
15 {WHITE_SPACE}   |
16 {COMMENT}       {/* nothing */}
17
18 \n                      {return (EOL);}
19 "/"                     {return (SLASH);}
20 "<"                     {return (OPENBRAC);}
21 ">"                     {return (CLOSEBRAC);}
22 {NUMBER}                {yylval.number = strtod (yytext, NULL); return (NUMBER);}
23 {BOOL_TRUE}             {yylval.boolean = 1; return (TRUE);}
24 {BOOL_FALSE}            {yylval.boolean = 0; return (FALSE);}
25
26 {QUOTED_STRING}         {yylval.string = yytext; return (QUOTED_STRING);}
27 {UNQUOTED_STRING}       {yylval.string = yytext; return (UNQUOTED_STRING);}
28
29 %%