Module: wine Branch: master Commit: d87bc0520f1bc6f6201b8b44bd25cf6dff69184c URL: http://source.winehq.org/git/wine.git/?a=commit;h=d87bc0520f1bc6f6201b8b44bd...
Author: Dan Hipschman dsh@linux.ucla.edu Date: Tue Jul 1 13:09:56 2008 -0700
widl: Factor a small part of the grammar.
---
tools/widl/parser.y | 22 ++++++++-------------- 1 files changed, 8 insertions(+), 14 deletions(-)
diff --git a/tools/widl/parser.y b/tools/widl/parser.y index fc27b2d..180ca98 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -311,7 +311,7 @@ static func_list_t *append_func_from_statement(func_list_t *list, statement_t *s %type <type> dispinterface dispinterfacehdr dispinterfacedef %type <type> module modulehdr moduledef %type <type> base_type int_std -%type <type> enumdef structdef uniondef +%type <type> enumdef structdef uniondef typedecl %type <type> type %type <ifref> coclass_int %type <ifref_list> coclass_ints @@ -401,7 +401,7 @@ semicolon_opt:
statement: cppquote { $$ = make_statement_cppquote($1); } - | enumdef ';' { $$ = make_statement_type_decl($1); + | typedecl ';' { $$ = make_statement_type_decl($1); if (!parse_only && do_header) { write_type_def_or_decl(header, $1, FALSE, NULL); fprintf(header, ";\n\n"); @@ -411,19 +411,13 @@ statement: if (!parse_only && do_header) write_declaration($1, is_in_interface); } | import { $$ = make_statement_import($1); } - | structdef ';' { $$ = make_statement_type_decl($1); - if (!parse_only && do_header) { - write_type_def_or_decl(header, $1, FALSE, NULL); - fprintf(header, ";\n\n"); - } - } | typedef ';' { $$ = $1; } - | uniondef ';' { $$ = make_statement_type_decl($1); - if (!parse_only && do_header) { - write_type_def_or_decl(header, $1, FALSE, NULL); - fprintf(header, ";\n\n"); - } - } + ; + +typedecl: + enumdef + | structdef + | uniondef ;
cppquote: tCPPQUOTE '(' aSTRING ')' { $$ = $3; if (!parse_only && do_header) fprintf(header, "%s\n", $3); }