Fix grammar of the size_is attribute so that size_is(*Length) gets accepted.
Modified: trunk/reactos/tools/widl/ChangeLog
Modified: trunk/reactos/tools/widl/client.c
Modified: trunk/reactos/tools/widl/lex.yy.c
Modified: trunk/reactos/tools/widl/parser.y
Modified: trunk/reactos/tools/widl/proxy.c
Modified: trunk/reactos/tools/widl/server.c
Modified: trunk/reactos/tools/widl/y.tab.c
Modified: trunk/reactos/tools/widl/y.tab.h

Modified: trunk/reactos/tools/widl/ChangeLog
--- trunk/reactos/tools/widl/ChangeLog	2005-07-24 21:42:00 UTC (rev 16720)
+++ trunk/reactos/tools/widl/ChangeLog	2005-07-24 22:17:02 UTC (rev 16721)
@@ -1,5 +1,17 @@
 ChangeLog
 
+2005-07-25 ekohl
+
+   tools/widl/client.c
+   tools/widl/lex.yy.c
+   tools/widl/parser.y
+   tools/widl/proxy.c
+   tools/widl/server.c
+   tools/widl/y.tab.c
+   tools/widl/y.tab.h
+
+- Fix grammar of the size_is attribute so that size_is(*Length) gets accepted.
+
 2005-07-23 ekohl
 
    tools/widl/client.c

Modified: trunk/reactos/tools/widl/client.c
--- trunk/reactos/tools/widl/client.c	2005-07-24 21:42:00 UTC (rev 16720)
+++ trunk/reactos/tools/widl/client.c	2005-07-24 22:17:02 UTC (rev 16721)
@@ -522,7 +522,7 @@
                     {
                         unsigned char type_type = 0;
 
-                        type = get_type_by_name(func, ((expr_t *)sizeis_attr)->u.sval);
+                        type = get_type_by_name(func, ((var_t *)sizeis_attr)->name);
                         if (type != NULL)
                             type_type = type->type;
 
@@ -541,10 +541,10 @@
 
                             fprintf(client, "#ifndef _ALPHA_\n");
                             print_client("NdrFcShort(0x%02X),\n",
-                                         get_var_stack_offset_32(func, ((expr_t *)sizeis_attr)->u.sval));
+                                         get_var_stack_offset_32(func, ((var_t *)sizeis_attr)->name));
                             fprintf(client, "#else\n");
                             print_client("NdrFcShort(0x%02X),\n",
-                                         get_var_stack_offset_64(func, ((expr_t *)sizeis_attr)->u.sval));
+                                         get_var_stack_offset_64(func, ((var_t *)sizeis_attr)->name));
                             fprintf(client, "#endif\n");
                         }
                         else

Modified: trunk/reactos/tools/widl/lex.yy.c
--- trunk/reactos/tools/widl/lex.yy.c	2005-07-24 21:42:00 UTC (rev 16720)
+++ trunk/reactos/tools/widl/lex.yy.c	2005-07-24 22:17:02 UTC (rev 16721)
@@ -1,3 +1,4 @@
+#line 2 "lex.yy.c"
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
@@ -9,7 +10,6 @@
 #define YY_FLEX_MINOR_VERSION 5
 
 #include <stdio.h>
-#include <unistd.h>
 
 
 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
@@ -23,6 +23,7 @@
 #ifdef __cplusplus
 
 #include <stdlib.h>
+#include <unistd.h>
 
 /* Use prototypes in function declarations. */
 #define YY_USE_PROTOS
@@ -3087,7 +3088,7 @@
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
-#line 1 "./parser.l"
+#line 1 "parser.l"
 #define INITIAL 0
 /*
  * IDL Compiler
@@ -3114,7 +3115,7 @@
 
 #define pp_line 2
 
-#line 36 "./parser.l"
+#line 36 "parser.l"
 
 #include "config.h"
 
@@ -3185,7 +3186,7 @@
  * The flexer starts here
  **************************************************************************
  */
-#line 3189 "lex.yy.c"
+#line 3190 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -3336,12 +3337,12 @@
 YY_DECL
 	{
 	register yy_state_type yy_current_state;
-	register char *yy_cp = NULL, *yy_bp = NULL;
+	register char *yy_cp, *yy_bp;
 	register int yy_act;
 
-#line 108 "./parser.l"
+#line 108 "parser.l"
 
-#line 3345 "lex.yy.c"
+#line 3346 "lex.yy.c"
 
 	if ( yy_init )
 		{
@@ -3430,12 +3431,12 @@
 
 case 1:
 YY_RULE_SETUP
-#line 109 "./parser.l"
+#line 109 "parser.l"
 yy_push_state(pp_line);
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 110 "./parser.l"
+#line 110 "parser.l"
 {
                             int lineno;
                             char *cptr, *fname;
@@ -3458,12 +3459,12 @@
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 129 "./parser.l"
+#line 129 "parser.l"
 yy_push_state(QUOTE); cbufidx = 0;
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 130 "./parser.l"
+#line 130 "parser.l"
 {
 				yy_pop_state();
 				yylval.str = get_buffered_cstring();
@@ -3471,25 +3472,25 @@
 			}
 	YY_BREAK
 case 5:
-#line 136 "./parser.l"
+#line 136 "parser.l"
 case 6:
 YY_RULE_SETUP
-#line 136 "./parser.l"
+#line 136 "parser.l"
 addcchar(yytext[1]);
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 137 "./parser.l"
+#line 137 "parser.l"
 addcchar('\\'); addcchar(yytext[1]);
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 138 "./parser.l"
+#line 138 "parser.l"
 addcchar(yytext[0]);
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 139 "./parser.l"
+#line 139 "parser.l"
 {
 				yylval.uuid = parse_uuid(yytext);
 				return aUUID;
@@ -3497,7 +3498,7 @@
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 143 "./parser.l"
+#line 143 "parser.l"
 {
 				yylval.num = strtoul(yytext, NULL, 0);
 				return aHEXNUM;
@@ -3505,7 +3506,7 @@
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 147 "./parser.l"
+#line 147 "parser.l"
 {
 				yylval.num = strtoul(yytext, NULL, 0);
 				return aNUM;
@@ -3513,38 +3514,38 @@
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 151 "./parser.l"
+#line 151 "parser.l"
 return kw_token(yytext);
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 152 "./parser.l"
+#line 152 "parser.l"
 line_number++;
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 153 "./parser.l"
+#line 153 "parser.l"
 
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 154 "./parser.l"
+#line 154 "parser.l"
 return SHL;
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 155 "./parser.l"
+#line 155 "parser.l"
 return SHR;
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 156 "./parser.l"
+#line 156 "parser.l"
 return yytext[0];
 	YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(QUOTE):
 case YY_STATE_EOF(pp_line):
-#line 157 "./parser.l"
+#line 157 "parser.l"
 {
 				if (import_stack_ptr) {
 					pop_import();
@@ -3555,10 +3556,10 @@
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 164 "./parser.l"
+#line 164 "parser.l"
 ECHO;
 	YY_BREAK
-#line 3562 "lex.yy.c"
+#line 3563 "lex.yy.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -3934,7 +3935,6 @@
 #endif	/* ifndef YY_NO_UNPUT */
 
 
-#ifndef YY_NO_INPUT
 #ifdef __cplusplus
 static int yyinput()
 #else
@@ -4007,8 +4007,8 @@
 
 	return c;
 	}
-#endif /* YY_NO_INPUT */
 
+
 #ifdef YY_USE_PROTOS
 void yyrestart( FILE *input_file )
 #else
@@ -4118,6 +4118,11 @@
 	}
 
 
+#ifndef YY_ALWAYS_INTERACTIVE
+#ifndef YY_NEVER_INTERACTIVE
+extern int isatty YY_PROTO(( int ));
+#endif
+#endif
 
 #ifdef YY_USE_PROTOS
 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
@@ -4435,7 +4440,7 @@
 	return 0;
 	}
 #endif
-#line 164 "./parser.l"
+#line 164 "parser.l"
 
 
 #ifndef yywrap

Modified: trunk/reactos/tools/widl/parser.y
--- trunk/reactos/tools/widl/parser.y	2005-07-24 21:42:00 UTC (rev 16720)
+++ trunk/reactos/tools/widl/parser.y	2005-07-24 22:17:02 UTC (rev 16721)
@@ -363,7 +363,7 @@
 	| tIMPLICITHANDLE '(' tHANDLET aIDENTIFIER ')'	{ $$ = make_attrp(ATTR_IMPLICIT_HANDLE, $4); }
 	| tIN					{ $$ = make_attr(ATTR_IN); }
 	| tINPUTSYNC				{ $$ = make_attr(ATTR_INPUTSYNC); }
-	| tLENGTHIS '(' m_exprs ')'		{ $$ = make_attrp(ATTR_LENGTHIS, $3); }
+	| tLENGTHIS '(' pident_list ')'		{ $$ = make_attrp(ATTR_LENGTHIS, $3); }
 	| tLOCAL				{ $$ = make_attr(ATTR_LOCAL); }
 	| tNONCREATABLE				{ $$ = make_attr(ATTR_NONCREATABLE); }
 	| tOBJECT				{ $$ = make_attr(ATTR_OBJECT); }
@@ -381,7 +381,7 @@
 	| tREF					{ $$ = make_attr(ATTR_REF); }
 	| tRESTRICTED				{ $$ = make_attr(ATTR_RESTRICTED); }
 	| tRETVAL				{ $$ = make_attr(ATTR_RETVAL); }
-	| tSIZEIS '(' m_exprs ')'		{ $$ = make_attrp(ATTR_SIZEIS, $3); }
+	| tSIZEIS '(' pident_list ')'		{ $$ = make_attrp(ATTR_SIZEIS, $3); }
 	| tSOURCE				{ $$ = make_attr(ATTR_SOURCE); }
 	| tSTRING				{ $$ = make_attr(ATTR_STRING); }
 	| tSWITCHIS '(' expr ')'		{ $$ = make_attrp(ATTR_SWITCHIS, $3); }

Modified: trunk/reactos/tools/widl/proxy.c
--- trunk/reactos/tools/widl/proxy.c	2005-07-24 21:42:00 UTC (rev 16720)
+++ trunk/reactos/tools/widl/proxy.c	2005-07-24 22:17:02 UTC (rev 16721)
@@ -206,13 +206,13 @@
 {
   int index = 0;
   type_t *type = get_base_type(arg);
-  expr_t *expr;
+  var_t *var;
 
-  expr = get_attrp( arg->attrs, ATTR_SIZEIS );
-  if (expr)
+  var = get_attrp( arg->attrs, ATTR_SIZEIS );
+  if (var)
   {
     print_proxy( "_StubMsg.MaxCount = ", arg->name );
-    write_expr(proxy, expr);
+    write_name(proxy, var);
     fprintf(proxy, ";\n\n");
     print_proxy( "NdrConformantArrayBufferSize( &_StubMsg, (unsigned char*)%s, ", arg->name );
     fprintf(proxy, "&__MIDL_TypeFormatString.Format[%d]);\n", index );
@@ -238,7 +238,7 @@
   case RPC_FC_ENUM32:
     print_proxy( "_StubMsg.BufferLength += %d; /* %s */\n", 4, arg->name );
     break;
-      
+
   case RPC_FC_STRUCT:
     print_proxy( "NdrSimpleStructBufferSize(&_StubMsg, (unsigned char*)%s, ", arg->name );
     fprintf(proxy, "&__MIDL_TypeFormatString.Format[%d] );\n", index );
@@ -285,7 +285,7 @@
 
   END_OF_LIST(arg);
   while (arg) {
-    if (is_attr(arg->attrs, ATTR_IN)) 
+    if (is_attr(arg->attrs, ATTR_IN))
     {
       marshall_size_arg( arg );
       fprintf(proxy, "\n");
@@ -298,13 +298,13 @@
 {
   int index = 0;
   type_t *type = get_base_type(arg);
-  expr_t *expr;
+  var_t *var;
 
-  expr = get_attrp( arg->attrs, ATTR_SIZEIS );
-  if (expr)
+  var = get_attrp( arg->attrs, ATTR_SIZEIS );
+  if (var)
   {
     print_proxy( "_StubMsg.MaxCount = ", arg->name );
-    write_expr(proxy, expr);
+    write_name(proxy, var);
     fprintf(proxy, ";\n\n");
     print_proxy( "NdrConformantArrayMarshall( &_StubMsg, (unsigned char*)%s, ", arg->name );
     fprintf(proxy, "&__MIDL_TypeFormatString.Format[%d]);\n", index );
@@ -326,7 +326,7 @@
     write_type(proxy, arg->type, arg, arg->tname);
     fprintf(proxy,"*)_StubMsg.Buffer)++ = %s;\n", arg->name );
     break;
-      
+
   case RPC_FC_STRUCT:
     /* FIXME: add the format string, and set the index below */
     print_proxy( "NdrSimpleStructMarshall(&_StubMsg, (unsigned char*)%s, ", arg->name );
@@ -370,7 +370,7 @@
 {
   END_OF_LIST(arg);
   while (arg) {
-    if (is_attr(arg->attrs, ATTR_IN)) 
+    if (is_attr(arg->attrs, ATTR_IN))
     {
       marshall_copy_arg( arg );
       fprintf(proxy, "\n");
@@ -397,10 +397,10 @@
 {
   int index = 0;
   type_t *type = get_base_type(arg);
-  expr_t *expr;
+  var_t *var;
 
-  expr = get_attrp( arg->attrs, ATTR_SIZEIS );
-  if (expr)
+  var = get_attrp( arg->attrs, ATTR_SIZEIS );
+  if (var)
   {
     print_proxy( "NdrConformantArrayUnmarshall( &_StubMsg, (unsigned char*)%s, ", arg->name );
     fprintf(proxy, "&__MIDL_TypeFormatString.Format[%d]);\n", index );
@@ -422,7 +422,7 @@
     write_type(proxy, arg->type, arg, arg->tname);
     fprintf(proxy,"*)_StubMsg.Buffer)++;\n");
     break;
-      
+
   case RPC_FC_STRUCT:
     print_proxy( "NdrSimpleStructUnmarshall(&_StubMsg, (unsigned char**)%s, ", arg->name );
     fprintf(proxy, "&__MIDL_TypeFormatString.Format[%d], 0);\n", index );
@@ -467,7 +467,7 @@
 {
   END_OF_LIST(arg);
   while (arg) {
-    if (is_attr(arg->attrs, ATTR_OUT)) 
+    if (is_attr(arg->attrs, ATTR_OUT))
     {
       unmarshall_copy_arg( arg );
       fprintf(proxy, "\n");
@@ -481,13 +481,13 @@
   var_t *constraint;
   int index = 0; /* FIXME */
   type_t *type;
-  expr_t *expr;
+  var_t *var;
 
-  expr = get_attrp( arg->attrs, ATTR_SIZEIS );
-  if (expr)
+  var = get_attrp( arg->attrs, ATTR_SIZEIS );
+  if (var)
   {
     print_proxy( "_StubMsg.MaxCount = ", arg->name );
-    write_expr(proxy, expr);
+    write_name(proxy, var);
     fprintf(proxy, ";\n\n");
     print_proxy( "NdrClearOutParameters( &_StubMsg, ");
     fprintf(proxy, "&__MIDL_TypeFormatString.Format[%d], ", index );
@@ -529,7 +529,7 @@
 {
   END_OF_LIST(arg);
   while (arg) {
-    if (is_attr(arg->attrs, ATTR_OUT)) 
+    if (is_attr(arg->attrs, ATTR_OUT))
     {
       free_variable( arg );
       fprintf(proxy, "\n");
@@ -587,7 +587,7 @@
 
   gen_unmarshall( cur->args );
   if (has_ret) {
-    /* 
+    /*
      * FIXME: We only need to round the buffer up if it could be unaligned...
      *    We should calculate how much buffer we used and output the following
      *    line only if necessary.
@@ -790,7 +790,7 @@
   fprintf(proxy, "\n");
 
   if (has_ret) {
-    /* 
+    /*
      * FIXME: We only need to round the buffer up if it could be unaligned...
      *    We should calculate how much buffer we used and output the following
      *    line only if necessary.

Modified: trunk/reactos/tools/widl/server.c
--- trunk/reactos/tools/widl/server.c	2005-07-24 21:42:00 UTC (rev 16720)
+++ trunk/reactos/tools/widl/server.c	2005-07-24 22:17:02 UTC (rev 16721)
@@ -113,7 +113,7 @@
 get_var_type_offset(var_t *var)
 {
     unsigned int toffset = 0;
-    void *size_is_attr;
+    void *sizeis_attr;
     int string_attr;
 
     if (var->ptr_level == 0)
@@ -138,10 +138,10 @@
     }
     else if (var->ptr_level == 1)
     {
-        size_is_attr = get_attrp(var->attrs, ATTR_SIZEIS);
+        sizeis_attr = get_attrp(var->attrs, ATTR_SIZEIS);
         string_attr = is_attr(var->attrs, ATTR_STRING);
 
-        if (size_is_attr)
+        if (sizeis_attr)
         {
             if (string_attr)
             {
@@ -519,7 +519,7 @@
                     {
                         unsigned char type_type = 0;
 
-                        type = get_type_by_name(func, ((expr_t *)sizeis_attr)->u.sval);
+                        type = get_type_by_name(func, ((var_t *)sizeis_attr)->name);
                         if (type != NULL)
                             type_type = type->type;
 
@@ -538,10 +538,10 @@
 
                             fprintf(server, "#ifndef _ALPHA_\n");
                             print_server("NdrFcShort(0x%02X),\n",
-                                         get_var_stack_offset_32(func, ((expr_t *)sizeis_attr)->u.sval));
+                                         get_var_stack_offset_32(func, ((var_t *)sizeis_attr)->name));
                             fprintf(server, "#else\n");
                             print_server("NdrFcShort(0x%02X),\n",
-                                         get_var_stack_offset_64(func, ((expr_t *)sizeis_attr)->u.sval));
+                                         get_var_stack_offset_64(func, ((var_t *)sizeis_attr)->name));
                             fprintf(server, "#endif\n");
                         }
                         else
@@ -815,7 +815,7 @@
                      var->type->type == RPC_FC_CHAR ||
                      var->type->type == RPC_FC_WCHAR))
                 {
-                    print_server("_StubMsg.MaxCount = %s;\n", ((expr_t *)sizeis_attr)->u.sval);
+                    print_server("_StubMsg.MaxCount = %s;\n", ((var_t *)sizeis_attr)->name);
                     fprintf(server, "\n");
                     print_server("NdrConformantStringBufferSize(\n");
                     indent++;
@@ -1160,7 +1160,7 @@
                     if (string_attr)
                     {
                         fprintf(server, "\n");
-                        print_server("_StubMsg.MaxCount = %s;\n", ((expr_t *)sizeis_attr)->u.sval);
+                        print_server("_StubMsg.MaxCount = %s;\n", ((var_t *)sizeis_attr)->name);
                         fprintf(server, "\n");
                         print_server("NdrConformantStringMarshall(\n");
                         indent++;
@@ -1360,7 +1360,7 @@
                 indent++;
                 if (string_attr)
                 {
-                    print_server("_StubMsg.MaxCount = %s;\n", ((expr_t *)sizeis_attr)->u.sval);
+                    print_server("_StubMsg.MaxCount = %s;\n", ((var_t *)sizeis_attr)->name);
                     fprintf(server, "\n");
                     print_server("NdrPointerFree(\n");
                     indent++;
@@ -1406,7 +1406,7 @@
     unsigned int i, sep;
     int in_attr;
     int out_attr;
-    void *size_is_attr;
+    void *sizeis_attr;
 
     while (NEXT_LINK(func)) func = NEXT_LINK(func);
     while (func)
@@ -1462,11 +1462,11 @@
             {
                 in_attr = is_attr(var->attrs, ATTR_IN);
                 out_attr = is_attr(var->attrs, ATTR_OUT);
-                size_is_attr = get_attrp(var->attrs, ATTR_SIZEIS);
+                sizeis_attr = get_attrp(var->attrs, ATTR_SIZEIS);
 
                 if (!out_attr && !in_attr)
                     in_attr = 1;
-                if (!in_attr && !size_is_attr)
+                if (!in_attr && !sizeis_attr)
                 {
                     if (var->type->type == RPC_FC_RP)
                     {
@@ -1567,16 +1567,16 @@
                 if (!out_attr && !in_attr)
                     in_attr = 1;
 
-                size_is_attr = get_attrp(var->attrs, ATTR_SIZEIS);
+                sizeis_attr = get_attrp(var->attrs, ATTR_SIZEIS);
 
                 if (!in_attr)
                 {
-                    if (size_is_attr != NULL)
+                    if (sizeis_attr != NULL)
                     {
                         print_server("");
                         write_name(server, var);
                         fprintf(server, " = NdrAllocate(&_StubMsg, %s * %d);\n",
-                                ((expr_t *)size_is_attr)->u.sval, get_type_size(var->type, 1));
+                                ((var_t *)sizeis_attr)->name, get_type_size(var->type, 1));
                         sep = 1;
                     }
                     else

Modified: trunk/reactos/tools/widl/y.tab.c
--- trunk/reactos/tools/widl/y.tab.c	2005-07-24 21:42:00 UTC (rev 16720)
+++ trunk/reactos/tools/widl/y.tab.c	2005-07-24 22:17:02 UTC (rev 16721)
@@ -1,134 +1,313 @@
-/* A Bison parser, made from ./parser.y
-   by GNU bison 1.35.  */
+/* A Bison parser, made by GNU Bison 1.875.  */
 
-#define YYBISON 1  /* Identify Bison output.  */
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
 
-# define	aIDENTIFIER	257
-# define	aKNOWNTYPE	258
-# define	aNUM	259
-# define	aHEXNUM	260
-# define	aSTRING	261
-# define	aUUID	262
-# define	aEOF	263
-# define	SHL	264
-# define	SHR	265
-# define	tAGGREGATABLE	266
-# define	tALLOCATE	267
-# define	tAPPOBJECT	268
-# define	tARRAYS	269
-# define	tASYNC	270
-# define	tASYNCUUID	271
-# define	tAUTOHANDLE	272
-# define	tBINDABLE	273
-# define	tBOOLEAN	274
-# define	tBROADCAST	275
-# define	tBYTE	276
-# define	tBYTECOUNT	277
-# define	tCALLAS	278
-# define	tCALLBACK	279
-# define	tCASE	280
-# define	tCDECL	281
-# define	tCHAR	282
-# define	tCOCLASS	283
-# define	tCODE	284
-# define	tCOMMSTATUS	285
-# define	tCONST	286
-# define	tCONTEXTHANDLE	287
-# define	tCONTEXTHANDLENOSERIALIZE	288
-# define	tCONTEXTHANDLESERIALIZE	289
-# define	tCONTROL	290
-# define	tCPPQUOTE	291
-# define	tDEFAULT	292
-# define	tDEFAULTVALUE	293
-# define	tDISPINTERFACE	294
-# define	tDLLNAME	295
-# define	tDOUBLE	296
-# define	tDUAL	297
-# define	tENDPOINT	298
-# define	tENTRY	299
-# define	tENUM	300
-# define	tERRORSTATUST	301
-# define	tEXPLICITHANDLE	302
-# define	tEXTERN	303
-# define	tFLOAT	304
-# define	tHANDLE	305
-# define	tHANDLET	306
-# define	tHELPCONTEXT	307
-# define	tHELPFILE	308
-# define	tHELPSTRING	309
-# define	tHELPSTRINGCONTEXT	310
-# define	tHELPSTRINGDLL	311
-# define	tHIDDEN	312
-# define	tHYPER	313
-# define	tID	314
-# define	tIDEMPOTENT	315
-# define	tIIDIS	316
-# define	tIMPLICITHANDLE	317
-# define	tIMPORT	318
-# define	tIMPORTLIB	319
-# define	tIN	320
-# define	tINCLUDE	321
-# define	tINLINE	322
-# define	tINPUTSYNC	323
-# define	tINT	324
-# define	tINT64	325
-# define	tINTERFACE	326
-# define	tLENGTHIS	327
-# define	tLIBRARY	328
-# define	tLOCAL	329
-# define	tLONG	330
-# define	tMETHODS	331
-# define	tMODULE	332
-# define	tNONCREATABLE	333
-# define	tOBJECT	334
-# define	tODL	335
-# define	tOLEAUTOMATION	336
-# define	tOPTIONAL	337
-# define	tOUT	338
-# define	tPOINTERDEFAULT	339
-# define	tPROPERTIES	340
-# define	tPROPGET	341
-# define	tPROPPUT	342
-# define	tPROPPUTREF	343
-# define	tPTR	344
-# define	tPUBLIC	345
-# define	tREADONLY	346
-# define	tREF	347
-# define	tRESTRICTED	348
-# define	tRETVAL	349
-# define	tSHORT	350
-# define	tSIGNED	351
-# define	tSINGLE	352
-# define	tSIZEIS	353
-# define	tSIZEOF	354
-# define	tSMALL	355
-# define	tSOURCE	356
-# define	tSTDCALL	357
-# define	tSTRING	358
-# define	tSTRUCT	359
-# define	tSWITCH	360
-# define	tSWITCHIS	361
-# define	tSWITCHTYPE	362
-# define	tTRANSMITAS	363
-# define	tTYPEDEF	364
-# define	tUNION	365
-# define	tUNIQUE	366
-# define	tUNSIGNED	367
-# define	tUUID	368
-# define	tV1ENUM	369
-# define	tVARARG	370
-# define	tVERSION	371
-# define	tVOID	372
-# define	tWCHAR	373
-# define	tWIREMARSHAL	374
-# define	tPOINTERTYPE	375
-# define	COND	376
-# define	CAST	377
-# define	PPTR	378
-# define	NEG	379
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
 
-#line 1 "./parser.y"
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     aIDENTIFIER = 258,
+     aKNOWNTYPE = 259,
+     aNUM = 260,
+     aHEXNUM = 261,
+     aSTRING = 262,
+     aUUID = 263,
+     aEOF = 264,
+     SHL = 265,
+     SHR = 266,
+     tAGGREGATABLE = 267,
+     tALLOCATE = 268,
+     tAPPOBJECT = 269,
+     tARRAYS = 270,
+     tASYNC = 271,
+     tASYNCUUID = 272,
+     tAUTOHANDLE = 273,
+     tBINDABLE = 274,
+     tBOOLEAN = 275,
+     tBROADCAST = 276,
+     tBYTE = 277,
+     tBYTECOUNT = 278,
+     tCALLAS = 279,
+     tCALLBACK = 280,
+     tCASE = 281,
+     tCDECL = 282,
+     tCHAR = 283,
+     tCOCLASS = 284,
+     tCODE = 285,
+     tCOMMSTATUS = 286,
+     tCONST = 287,
+     tCONTEXTHANDLE = 288,
+     tCONTEXTHANDLENOSERIALIZE = 289,
+     tCONTEXTHANDLESERIALIZE = 290,
+     tCONTROL = 291,
+     tCPPQUOTE = 292,
+     tDEFAULT = 293,
+     tDEFAULTVALUE = 294,
+     tDISPINTERFACE = 295,
+     tDLLNAME = 296,
+     tDOUBLE = 297,
+     tDUAL = 298,
+     tENDPOINT = 299,
+     tENTRY = 300,
+     tENUM = 301,
+     tERRORSTATUST = 302,
+     tEXPLICITHANDLE = 303,
+     tEXTERN = 304,
+     tFLOAT = 305,
+     tHANDLE = 306,
+     tHANDLET = 307,
+     tHELPCONTEXT = 308,
+     tHELPFILE = 309,
+     tHELPSTRING = 310,
+     tHELPSTRINGCONTEXT = 311,
+     tHELPSTRINGDLL = 312,
+     tHIDDEN = 313,
+     tHYPER = 314,
+     tID = 315,
+     tIDEMPOTENT = 316,
+     tIIDIS = 317,
+     tIMPLICITHANDLE = 318,
+     tIMPORT = 319,
+     tIMPORTLIB = 320,
+     tIN = 321,
+     tINCLUDE = 322,
+     tINLINE = 323,
+     tINPUTSYNC = 324,
+     tINT = 325,
+     tINT64 = 326,
+     tINTERFACE = 327,
+     tLENGTHIS = 328,
+     tLIBRARY = 329,
+     tLOCAL = 330,
+     tLONG = 331,
+     tMETHODS = 332,
+     tMODULE = 333,
+     tNONCREATABLE = 334,
+     tOBJECT = 335,
+     tODL = 336,
+     tOLEAUTOMATION = 337,
+     tOPTIONAL = 338,
+     tOUT = 339,
+     tPOINTERDEFAULT = 340,
+     tPROPERTIES = 341,
+     tPROPGET = 342,
+     tPROPPUT = 343,
+     tPROPPUTREF = 344,
+     tPTR = 345,
+     tPUBLIC = 346,
+     tREADONLY = 347,
+     tREF = 348,
+     tRESTRICTED = 349,
+     tRETVAL = 350,
+     tSHORT = 351,
+     tSIGNED = 352,
+     tSINGLE = 353,
+     tSIZEIS = 354,
+     tSIZEOF = 355,
+     tSMALL = 356,
+     tSOURCE = 357,
+     tSTDCALL = 358,
+     tSTRING = 359,
+     tSTRUCT = 360,
+     tSWITCH = 361,
+     tSWITCHIS = 362,
+     tSWITCHTYPE = 363,
+     tTRANSMITAS = 364,
+     tTYPEDEF = 365,
+     tUNION = 366,
+     tUNIQUE = 367,
+     tUNSIGNED = 368,
+     tUUID = 369,
+     tV1ENUM = 370,
+     tVARARG = 371,
+     tVERSION = 372,
+     tVOID = 373,
+     tWCHAR = 374,
+     tWIREMARSHAL = 375,
+     tPOINTERTYPE = 376,
+     COND = 377,
+     CAST = 378,
+     PPTR = 379,
+     NEG = 380
+   };
+#endif
+#define aIDENTIFIER 258
+#define aKNOWNTYPE 259
+#define aNUM 260
+#define aHEXNUM 261
+#define aSTRING 262
+#define aUUID 263
+#define aEOF 264
+#define SHL 265
+#define SHR 266
+#define tAGGREGATABLE 267
+#define tALLOCATE 268
+#define tAPPOBJECT 269
+#define tARRAYS 270
+#define tASYNC 271
+#define tASYNCUUID 272
+#define tAUTOHANDLE 273
+#define tBINDABLE 274
+#define tBOOLEAN 275
+#define tBROADCAST 276
+#define tBYTE 277
+#define tBYTECOUNT 278
+#define tCALLAS 279
+#define tCALLBACK 280
+#define tCASE 281
+#define tCDECL 282
+#define tCHAR 283
+#define tCOCLASS 284
+#define tCODE 285
+#define tCOMMSTATUS 286
+#define tCONST 287
+#define tCONTEXTHANDLE 288
+#define tCONTEXTHANDLENOSERIALIZE 289
+#define tCONTEXTHANDLESERIALIZE 290
+#define tCONTROL 291
+#define tCPPQUOTE 292
+#define tDEFAULT 293
+#define tDEFAULTVALUE 294
+#define tDISPINTERFACE 295
+#define tDLLNAME 296
+#define tDOUBLE 297
+#define tDUAL 298
+#define tENDPOINT 299
+#define tENTRY 300
+#define tENUM 301
+#define tERRORSTATUST 302
+#define tEXPLICITHANDLE 303
+#define tEXTERN 304
+#define tFLOAT 305
+#define tHANDLE 306
+#define tHANDLET 307
+#define tHELPCONTEXT 308
+#define tHELPFILE 309
+#define tHELPSTRING 310
+#define tHELPSTRINGCONTEXT 311
+#define tHELPSTRINGDLL 312
+#define tHIDDEN 313
+#define tHYPER 314
+#define tID 315
+#define tIDEMPOTENT 316
+#define tIIDIS 317
+#define tIMPLICITHANDLE 318
+#define tIMPORT 319
+#define tIMPORTLIB 320
+#define tIN 321
+#define tINCLUDE 322
+#define tINLINE 323
+#define tINPUTSYNC 324
+#define tINT 325
+#define tINT64 326
+#define tINTERFACE 327
+#define tLENGTHIS 328
+#define tLIBRARY 329
+#define tLOCAL 330
+#define tLONG 331
+#define tMETHODS 332
+#define tMODULE 333
+#define tNONCREATABLE 334
+#define tOBJECT 335
+#define tODL 336
+#define tOLEAUTOMATION 337
+#define tOPTIONAL 338
+#define tOUT 339
+#define tPOINTERDEFAULT 340
+#define tPROPERTIES 341
+#define tPROPGET 342
+#define tPROPPUT 343
+#define tPROPPUTREF 344
+#define tPTR 345
+#define tPUBLIC 346
+#define tREADONLY 347
+#define tREF 348
+#define tRESTRICTED 349
+#define tRETVAL 350
+#define tSHORT 351
+#define tSIGNED 352
+#define tSINGLE 353
+#define tSIZEIS 354
+#define tSIZEOF 355
+#define tSMALL 356
+#define tSOURCE 357
+#define tSTDCALL 358
+#define tSTRING 359
[truncated at 1000 lines; 4948 more skipped]