[3/3] widl: Factor a small part of the grammar.
Dan Hipschman
dsh at linux.ucla.edu
Tue Jul 1 15:09:56 CDT 2008
---
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 fb526cc..3d72cbd 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); }
More information about the wine-patches
mailing list