From: Bernhard Kölbl besentv@gmail.com
Signed-off-by: Bernhard Kölbl besentv@gmail.com --- tools/widl/parser.l | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-)
diff --git a/tools/widl/parser.l b/tools/widl/parser.l index 521e78db22c..f368974f41a 100644 --- a/tools/widl/parser.l +++ b/tools/widl/parser.l @@ -22,14 +22,15 @@ %option noinput nounput noyy_top_state %option 8bit never-interactive prefix="parser_"
-ws [ \f\t\r] -cident [a-zA-Z_][0-9a-zA-Z_]* -suffix [uU][lL]?|[lL][uU]? -int [0-9]+{suffix}? -hexd [0-9a-fA-F] -hex 0[xX]{hexd}+{suffix}? -uuid {hexd}{8}-{hexd}{4}-{hexd}{4}-{hexd}{4}-{hexd}{12} -double [0-9]+.[0-9]+([eE][+-]?[0-9]+)* +/* WS = Whitespace */ +WS [ \f\t\r] +IDENTIFIER [a-zA-Z_][0-9a-zA-Z_]* +SUFFIX [uU][lL]?|[lL][uU]? +DECNUM [0-9]+{SUFFIX}? +HEXDIGIT [0-9a-fA-F] +HEXNUM 0[xX]{HEXDIGIT}+{SUFFIX}? +UUID {HEXDIGIT}{8}-{HEXDIGIT}{4}-{HEXDIGIT}{4}-{HEXDIGIT}{4}-{HEXDIGIT}{12} +DOUBLE [0-9]+.[0-9]+([eE][+-]?[0-9]+)*
%x QUOTE %x WSTRQUOTE @@ -122,8 +123,8 @@ struct uuid *parse_uuid(const char *u) ************************************************************************** */ %% -<INITIAL>^{ws}*#{ws}*pragma{ws}+ yy_push_state(PP_PRAGMA); -<INITIAL,ATTR>^{ws}*#{ws}* yy_push_state(PP_LINE); +<INITIAL>^{WS}*#{WS}*pragma{WS}+ yy_push_state(PP_PRAGMA); +<INITIAL,ATTR>^{WS}*#{WS}* yy_push_state(PP_LINE); <PP_LINE>[^\n]* { int lineno; char *cptr, *fname; @@ -160,7 +161,7 @@ struct uuid *parse_uuid(const char *u) yy_pop_state(); } <PP_PRAGMA>[^\n]* parser_lval.str = xstrdup(yytext); yy_pop_state(); return aPRAGMA; -<INITIAL>^{ws}*midl_pragma{ws}+warning return tPRAGMA_WARNING; +<INITIAL>^{WS}*midl_pragma{WS}+warning return tPRAGMA_WARNING; <INITIAL,ATTR>" yy_push_state(QUOTE); cbufidx = 0; <QUOTE>" { yy_pop_state(); @@ -186,27 +187,27 @@ struct uuid *parse_uuid(const char *u) <QUOTE,WSTRQUOTE,SQUOTE>. addcchar(yytext[0]); <INITIAL,ATTR>[ yy_push_state(ATTR); return '['; <ATTR>] yy_pop_state(); return ']'; -<ATTR>{cident} return attr_token(yytext); -<ATTR>{uuid} { +<ATTR>{IDENTIFIER} return attr_token(yytext); +<ATTR>{UUID} { parser_lval.uuid = parse_uuid(yytext); return aUUID; } -<INITIAL,ATTR>{hex} { +<INITIAL,ATTR>{HEXNUM} { parser_lval.num = xstrtoul(yytext, NULL, 0); return aHEXNUM; } -<INITIAL,ATTR>{int} { +<INITIAL,ATTR>{DECNUM} { parser_lval.num = xstrtoul(yytext, NULL, 0); return aNUM; } -<INITIAL>{double} { +<INITIAL>{DOUBLE} { parser_lval.dbl = strtod(yytext, NULL); return aDOUBLE; } -SAFEARRAY{ws}*/( return tSAFEARRAY; -{cident} return kw_token(yytext); +SAFEARRAY{WS}*/( return tSAFEARRAY; +{IDENTIFIER} return kw_token(yytext); <INITIAL,ATTR>\n line_number++; -<INITIAL,ATTR>{ws} +<INITIAL,ATTR>{WS} <INITIAL,ATTR><< return SHL; <INITIAL,ATTR>>> return SHR; <INITIAL,ATTR>-> return MEMBERPTR;