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