]> git.draconx.ca Git - gob-dx.git/blobdiff - src/parse.c
Release 2.0.17
[gob-dx.git] / src / parse.c
index aee046da503de2335bbb7b34a1be8a22cc018a22..3f02d38bbf918263c141abb08eb8bb95757356d8 100644 (file)
@@ -1,24 +1,23 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
 
-/* Skeleton implementation for Bison's Yacc-like parsers in C
+/* A Bison parser, made by GNU Bison 2.4.1.  */
 
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+   
+      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
+   
+   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.
-
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
    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., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -29,7 +28,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -47,7 +46,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.3"
+#define YYBISON_VERSION "2.4.1"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
 /* Pure parsers.  */
 #define YYPURE 0
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
+/* Push parsers.  */
+#define YYPUSH 0
 
+/* Pull parsers.  */
+#define YYPULL 1
 
-
-/* Tokens.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     CLASS = 258,
-     FROM = 259,
-     CONST = 260,
-     VOID = 261,
-     STRUCT = 262,
-     UNION = 263,
-     ENUM = 264,
-     THREEDOTS = 265,
-     SIGNED = 266,
-     UNSIGNED = 267,
-     LONG = 268,
-     SHORT = 269,
-     INT = 270,
-     FLOAT = 271,
-     DOUBLE = 272,
-     CHAR = 273,
-     TOKEN = 274,
-     NUMBER = 275,
-     TYPETOKEN = 276,
-     ARRAY_DIM = 277,
-     SINGLE_CHAR = 278,
-     CCODE = 279,
-     ADCODE = 280,
-     HTCODE = 281,
-     PHCODE = 282,
-     HCODE = 283,
-     ACODE = 284,
-     ATCODE = 285,
-     STRING = 286,
-     PUBLIC = 287,
-     PRIVATE = 288,
-     PROTECTED = 289,
-     CLASSWIDE = 290,
-     PROPERTY = 291,
-     ARGUMENT = 292,
-     VIRTUAL = 293,
-     SIGNAL = 294,
-     OVERRIDE = 295,
-     NICK = 296,
-     BLURB = 297,
-     MAXIMUM = 298,
-     MINIMUM = 299,
-     DEFAULT_VALUE = 300,
-     ERROR = 301,
-     FLAGS = 302,
-     TYPE = 303,
-     FLAGS_TYPE = 304,
-     ENUM_TYPE = 305,
-     PARAM_TYPE = 306,
-     BOXED_TYPE = 307,
-     OBJECT_TYPE = 308
-   };
-#endif
-/* Tokens.  */
-#define CLASS 258
-#define FROM 259
-#define CONST 260
-#define VOID 261
-#define STRUCT 262
-#define UNION 263
-#define ENUM 264
-#define THREEDOTS 265
-#define SIGNED 266
-#define UNSIGNED 267
-#define LONG 268
-#define SHORT 269
-#define INT 270
-#define FLOAT 271
-#define DOUBLE 272
-#define CHAR 273
-#define TOKEN 274
-#define NUMBER 275
-#define TYPETOKEN 276
-#define ARRAY_DIM 277
-#define SINGLE_CHAR 278
-#define CCODE 279
-#define ADCODE 280
-#define HTCODE 281
-#define PHCODE 282
-#define HCODE 283
-#define ACODE 284
-#define ATCODE 285
-#define STRING 286
-#define PUBLIC 287
-#define PRIVATE 288
-#define PROTECTED 289
-#define CLASSWIDE 290
-#define PROPERTY 291
-#define ARGUMENT 292
-#define VIRTUAL 293
-#define SIGNAL 294
-#define OVERRIDE 295
-#define NICK 296
-#define BLURB 297
-#define MAXIMUM 298
-#define MINIMUM 299
-#define DEFAULT_VALUE 300
-#define ERROR 301
-#define FLAGS 302
-#define TYPE 303
-#define FLAGS_TYPE 304
-#define ENUM_TYPE 305
-#define PARAM_TYPE 306
-#define BOXED_TYPE 307
-#define OBJECT_TYPE 308
-
+/* Using locations.  */
+#define YYLSP_NEEDED 0
 
 
 
 /* Copy the first part of user declarations.  */
+
+/* Line 189 of yacc.c  */
 #line 23 "parse.y"
 
 
@@ -249,9 +141,10 @@ yyerror(char *str)
        char *out=NULL;
        char *p;
        
-       if(strcmp(yytext,"\n")==0) {
-               out=g_strconcat("Error: ",str," before newline",NULL);
-       } else if(yytext[0]=='\0') {
+       if (strcmp (yytext, "\n") == 0 ||
+           strcmp (yytext, "\r") == 0) {
+               out = g_strconcat ("Error: ", str, " before end of line", NULL);
+       } else if (yytext[0] == '\0') {
                out=g_strconcat("Error: ", str, " at end of input", NULL);
        } else {
                char *tmp = g_strdup(yytext);
@@ -313,7 +206,11 @@ push_function (int scope, int method, char *oid, char *id,
 
        g_assert(scope != CLASS_SCOPE);
        
-       if(method == INIT_METHOD || method == CLASS_INIT_METHOD) {
+       if(method == INIT_METHOD ||
+          method == CLASS_INIT_METHOD ||
+          method == CONSTRUCTOR_METHOD ||
+          method == DISPOSE_METHOD ||
+          method == FINALIZE_METHOD) {
                type = (Type *)node_new (TYPE_NODE,
                                         "name", "void",
                                         NULL);
@@ -832,6 +729,9 @@ ensure_property (void)
 
 
 
+/* Line 189 of yacc.c  */
+#line 734 "parse.c"
+
 /* Enabling traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 1
@@ -850,31 +750,151 @@ ensure_property (void)
 # define YYTOKEN_TABLE 0
 #endif
 
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     CLASS = 258,
+     FROM = 259,
+     CONST = 260,
+     VOID = 261,
+     STRUCT = 262,
+     UNION = 263,
+     ENUM = 264,
+     THREEDOTS = 265,
+     SIGNED = 266,
+     UNSIGNED = 267,
+     LONG = 268,
+     SHORT = 269,
+     INT = 270,
+     FLOAT = 271,
+     DOUBLE = 272,
+     CHAR = 273,
+     TOKEN = 274,
+     NUMBER = 275,
+     TYPETOKEN = 276,
+     ARRAY_DIM = 277,
+     SINGLE_CHAR = 278,
+     CCODE = 279,
+     ADCODE = 280,
+     HTCODE = 281,
+     PHCODE = 282,
+     HCODE = 283,
+     ACODE = 284,
+     ATCODE = 285,
+     STRING = 286,
+     PUBLIC = 287,
+     PRIVATE = 288,
+     PROTECTED = 289,
+     CLASSWIDE = 290,
+     PROPERTY = 291,
+     ARGUMENT = 292,
+     VIRTUAL = 293,
+     SIGNAL = 294,
+     OVERRIDE = 295,
+     NICK = 296,
+     BLURB = 297,
+     MAXIMUM = 298,
+     MINIMUM = 299,
+     DEFAULT_VALUE = 300,
+     ERROR = 301,
+     FLAGS = 302,
+     TYPE = 303,
+     FLAGS_TYPE = 304,
+     ENUM_TYPE = 305,
+     PARAM_TYPE = 306,
+     BOXED_TYPE = 307,
+     OBJECT_TYPE = 308
+   };
+#endif
+/* Tokens.  */
+#define CLASS 258
+#define FROM 259
+#define CONST 260
+#define VOID 261
+#define STRUCT 262
+#define UNION 263
+#define ENUM 264
+#define THREEDOTS 265
+#define SIGNED 266
+#define UNSIGNED 267
+#define LONG 268
+#define SHORT 269
+#define INT 270
+#define FLOAT 271
+#define DOUBLE 272
+#define CHAR 273
+#define TOKEN 274
+#define NUMBER 275
+#define TYPETOKEN 276
+#define ARRAY_DIM 277
+#define SINGLE_CHAR 278
+#define CCODE 279
+#define ADCODE 280
+#define HTCODE 281
+#define PHCODE 282
+#define HCODE 283
+#define ACODE 284
+#define ATCODE 285
+#define STRING 286
+#define PUBLIC 287
+#define PRIVATE 288
+#define PROTECTED 289
+#define CLASSWIDE 290
+#define PROPERTY 291
+#define ARGUMENT 292
+#define VIRTUAL 293
+#define SIGNAL 294
+#define OVERRIDE 295
+#define NICK 296
+#define BLURB 297
+#define MAXIMUM 298
+#define MINIMUM 299
+#define DEFAULT_VALUE 300
+#define ERROR 301
+#define FLAGS 302
+#define TYPE 303
+#define FLAGS_TYPE 304
+#define ENUM_TYPE 305
+#define PARAM_TYPE 306
+#define BOXED_TYPE 307
+#define OBJECT_TYPE 308
+
+
+
+
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 678 "parse.y"
 {
+
+/* Line 214 of yacc.c  */
+#line 683 "parse.y"
+
        char *id;
        GString *cbuf;
        GList *list;
        int line;
        int sigtype;
-}
-/* Line 187 of yacc.c.  */
-#line 865 "parse.c"
-       YYSTYPE;
+
+
+
+/* Line 214 of yacc.c  */
+#line 886 "parse.c"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 
-
 /* Copy the second part of user declarations.  */
 
 
-/* Line 216 of yacc.c.  */
-#line 878 "parse.c"
+/* Line 264 of yacc.c  */
+#line 898 "parse.c"
 
 #ifdef short
 # undef short
@@ -949,14 +969,14 @@ typedef short int yytype_int16;
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static int
-YYID (int i)
+YYID (int yyi)
 #else
 static int
-YYID (i)
-    int i;
+YYID (yyi)
+    int yyi;
 #endif
 {
-  return i;
+  return yyi;
 }
 #endif
 
@@ -1037,9 +1057,9 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss;
-  YYSTYPE yyvs;
-  };
+  yytype_int16 yyss_alloc;
+  YYSTYPE yyvs_alloc;
+};
 
 /* The size of the maximum gap between one aligned stack and the next.  */
 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
@@ -1073,12 +1093,12 @@ union yyalloc
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack)                                       \
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                          \
     do                                                                 \
       {                                                                        \
        YYSIZE_T yynewbytes;                                            \
-       YYCOPY (&yyptr->Stack, Stack, yysize);                          \
-       Stack = &yyptr->Stack;                                          \
+       YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+       Stack = &yyptr->Stack_alloc;                                    \
        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
        yyptr += yynewbytes / sizeof (*yyptr);                          \
       }                                                                        \
@@ -1253,26 +1273,26 @@ static const yytype_int8 yyrhs[] =
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   699,   699,   700,   701,   702,   705,   714,   723,   732,
-     741,   750,   759,   770,   771,   772,   773,   774,   775,   776,
-     777,   780,   785,   792,   809,   810,   818,   830,   839,   851,
-     860,   869,   878,   889,   890,   893,   894,   903,   915,   916,
-     917,   918,   921,   922,   923,   924,   927,   947,   971,   975,
-     983,   984,   985,   986,   987,   995,  1001,  1004,  1009,  1077,
-    1131,  1220,  1228,  1233,  1281,  1317,  1333,  1334,  1337,  1338,
-    1341,  1342,  1354,  1355,  1358,  1364,  1370,  1376,  1382,  1388,
-    1394,  1401,  1407,  1413,  1419,  1425,  1431,  1437,  1443,  1449,
-    1455,  1461,  1486,  1495,  1501,  1502,  1505,  1508,  1514,  1521,
-    1530,  1533,  1536,  1540,  1544,  1548,  1553,  1561,  1565,  1570,
-    1574,  1577,  1581,  1584,  1589,  1590,  1591,  1592,  1593,  1594,
-    1595,  1596,  1597,  1600,  1601,  1602,  1605,  1606,  1607,  1611,
-    1618,  1630,  1636,  1648,  1660,  1663,  1669,  1674,  1677,  1682,
-    1683,  1687,  1710,  1733,  1756,  1779,  1797,  1810,  1820,  1860,
-    1872,  1892,  1923,  1930,  1931,  1937,  1938,  1949,  1960,  1971,
-    1981,  1991,  2001,  2004,  2005,  2008,  2009,  2012,  2015,  2018,
-    2026,  2036,  2037,  2040,  2057,  2064,  2071,  2078,  2085,  2092,
-    2101,  2110,  2121,  2122,  2125,  2145,  2155,  2164,  2175,  2178,
-    2183,  2192,  2203,  2206,  2212,  2213,  2217,  2218
+       0,   704,   704,   705,   706,   707,   710,   719,   728,   737,
+     746,   755,   764,   775,   776,   777,   778,   779,   780,   781,
+     782,   785,   790,   797,   814,   815,   823,   835,   844,   856,
+     865,   874,   883,   894,   895,   898,   899,   908,   920,   921,
+     922,   923,   926,   927,   928,   929,   932,   952,   976,   980,
+     988,   989,   990,   991,   992,  1000,  1006,  1009,  1014,  1082,
+    1136,  1225,  1233,  1238,  1286,  1322,  1338,  1339,  1342,  1343,
+    1346,  1347,  1359,  1360,  1363,  1369,  1375,  1381,  1387,  1393,
+    1399,  1406,  1412,  1418,  1424,  1430,  1436,  1442,  1448,  1454,
+    1460,  1466,  1491,  1500,  1506,  1507,  1510,  1513,  1519,  1526,
+    1535,  1538,  1541,  1545,  1549,  1553,  1558,  1566,  1570,  1575,
+    1579,  1582,  1586,  1589,  1594,  1595,  1596,  1597,  1598,  1599,
+    1600,  1601,  1602,  1605,  1606,  1607,  1610,  1611,  1612,  1616,
+    1623,  1635,  1641,  1653,  1665,  1668,  1674,  1679,  1682,  1687,
+    1688,  1692,  1715,  1738,  1761,  1784,  1802,  1815,  1825,  1865,
+    1877,  1897,  1928,  1935,  1936,  1942,  1943,  1954,  1965,  1976,
+    1986,  1996,  2006,  2009,  2010,  2013,  2014,  2017,  2020,  2023,
+    2031,  2041,  2042,  2045,  2062,  2069,  2076,  2083,  2090,  2097,
+    2106,  2115,  2126,  2127,  2130,  2150,  2160,  2169,  2180,  2183,
+    2188,  2197,  2208,  2211,  2217,  2218,  2222,  2223
 };
 #endif
 
@@ -1861,17 +1881,20 @@ yy_symbol_print (yyoutput, yytype, yyvaluep)
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static void
-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
 #else
 static void
-yy_stack_print (bottom, top)
-    yytype_int16 *bottom;
-    yytype_int16 *top;
+yy_stack_print (yybottom, yytop)
+    yytype_int16 *yybottom;
+    yytype_int16 *yytop;
 #endif
 {
   YYFPRINTF (stderr, "Stack now");
-  for (; bottom <= top; ++bottom)
-    YYFPRINTF (stderr, " %d", *bottom);
+  for (; yybottom <= yytop; yybottom++)
+    {
+      int yybot = *yybottom;
+      YYFPRINTF (stderr, " %d", yybot);
+    }
   YYFPRINTF (stderr, "\n");
 }
 
@@ -1905,11 +1928,11 @@ yy_reduce_print (yyvsp, yyrule)
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
-      fprintf (stderr, "   $%d = ", yyi + 1);
+      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
                       &(yyvsp[(yyi + 1) - (yynrhs)])
                                       );
-      fprintf (stderr, "\n");
+      YYFPRINTF (stderr, "\n");
     }
 }
 
@@ -2189,10 +2212,8 @@ yydestruct (yymsg, yytype, yyvaluep)
        break;
     }
 }
-\f
 
 /* Prevent warnings from -Wmissing-prototypes.  */
-
 #ifdef YYPARSE_PARAM
 #if defined __STDC__ || defined __cplusplus
 int yyparse (void *YYPARSE_PARAM);
@@ -2208,11 +2229,10 @@ int yyparse ();
 #endif /* ! YYPARSE_PARAM */
 
 
-
-/* The look-ahead symbol.  */
+/* The lookahead symbol.  */
 int yychar;
 
-/* The semantic value of the look-ahead symbol.  */
+/* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
 
 /* Number of syntax errors so far.  */
@@ -2220,9 +2240,9 @@ int yynerrs;
 
 
 
-/*----------.
-| yyparse.  |
-`----------*/
+/*-------------------------.
+| yyparse or yypush_parse.  |
+`-------------------------*/
 
 #ifdef YYPARSE_PARAM
 #if (defined __STDC__ || defined __C99__FUNC__ \
@@ -2246,66 +2266,68 @@ yyparse ()
 #endif
 #endif
 {
-  
-  int yystate;
-  int yyn;
-  int yyresult;
-  /* Number of tokens to shift before error messages enabled.  */
-  int yyerrstatus;
-  /* Look-ahead token as an internal (translated) token number.  */
-  int yytoken = 0;
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
 
-  /* Three stacks and their tools:
-     `yyss': related to states,
-     `yyvs': related to semantic values,
-     `yyls': related to locations.
 
-     Refer to the stacks thru separate pointers, to allow yyoverflow
-     to reallocate them elsewhere.  */
+    int yystate;
+    /* Number of tokens to shift before error messages enabled.  */
+    int yyerrstatus;
 
-  /* The state stack.  */
-  yytype_int16 yyssa[YYINITDEPTH];
-  yytype_int16 *yyss = yyssa;
-  yytype_int16 *yyssp;
+    /* The stacks and their tools:
+       `yyss': related to states.
+       `yyvs': related to semantic values.
 
-  /* The semantic value stack.  */
-  YYSTYPE yyvsa[YYINITDEPTH];
-  YYSTYPE *yyvs = yyvsa;
-  YYSTYPE *yyvsp;
+       Refer to the stacks thru separate pointers, to allow yyoverflow
+       to reallocate them elsewhere.  */
 
+    /* The state stack.  */
+    yytype_int16 yyssa[YYINITDEPTH];
+    yytype_int16 *yyss;
+    yytype_int16 *yyssp;
 
+    /* The semantic value stack.  */
+    YYSTYPE yyvsa[YYINITDEPTH];
+    YYSTYPE *yyvs;
+    YYSTYPE *yyvsp;
 
-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
-
-  YYSIZE_T yystacksize = YYINITDEPTH;
+    YYSIZE_T yystacksize;
 
+  int yyn;
+  int yyresult;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yytoken;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
+#if YYERROR_VERBOSE
+  /* Buffer for error messages, and its allocated size.  */
+  char yymsgbuf[128];
+  char *yymsg = yymsgbuf;
+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
   /* The number of symbols on the RHS of the reduced rule.
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
+  yytoken = 0;
+  yyss = yyssa;
+  yyvs = yyvsa;
+  yystacksize = YYINITDEPTH;
+
   YYDPRINTF ((stderr, "Starting parse\n"));
 
   yystate = 0;
   yyerrstatus = 0;
   yynerrs = 0;
-  yychar = YYEMPTY;            /* Cause a token to be read.  */
+  yychar = YYEMPTY; /* Cause a token to be read.  */
 
   /* Initialize stack pointers.
      Waste one element of value and location stack
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
-
   yyssp = yyss;
   yyvsp = yyvs;
 
@@ -2335,7 +2357,6 @@ yyparse ()
        YYSTYPE *yyvs1 = yyvs;
        yytype_int16 *yyss1 = yyss;
 
-
        /* Each stack pointer address is followed by the size of the
           data in use in that stack, in bytes.  This used to be a
           conditional around just the two extra args, but that might
@@ -2343,7 +2364,6 @@ yyparse ()
        yyoverflow (YY_("memory exhausted"),
                    &yyss1, yysize * sizeof (*yyssp),
                    &yyvs1, yysize * sizeof (*yyvsp),
-
                    &yystacksize);
 
        yyss = yyss1;
@@ -2366,9 +2386,8 @@ yyparse ()
          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
        if (! yyptr)
          goto yyexhaustedlab;
-       YYSTACK_RELOCATE (yyss);
-       YYSTACK_RELOCATE (yyvs);
-
+       YYSTACK_RELOCATE (yyss_alloc, yyss);
+       YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
        if (yyss1 != yyssa)
          YYSTACK_FREE (yyss1);
@@ -2379,7 +2398,6 @@ yyparse ()
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
                  (unsigned long int) yystacksize));
 
@@ -2389,6 +2407,9 @@ yyparse ()
 
   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
+  if (yystate == YYFINAL)
+    YYACCEPT;
+
   goto yybackup;
 
 /*-----------.
@@ -2397,16 +2418,16 @@ yyparse ()
 yybackup:
 
   /* Do appropriate processing given the current state.  Read a
-     look-ahead token if we need one and don't already have one.  */
+     lookahead token if we need one and don't already have one.  */
 
-  /* First try to decide what to do without reference to look-ahead token.  */
+  /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
   if (yyn == YYPACT_NINF)
     goto yydefault;
 
-  /* Not known => get a look-ahead token if don't already have one.  */
+  /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
@@ -2438,20 +2459,16 @@ yybackup:
       goto yyreduce;
     }
 
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
   /* Count tokens shifted since error; after three, turn off error
      status.  */
   if (yyerrstatus)
     yyerrstatus--;
 
-  /* Shift the look-ahead token.  */
+  /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 
-  /* Discard the shifted token unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
 
   yystate = yyn;
   *++yyvsp = yylval;
@@ -2491,27 +2508,37 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 699 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 704 "parse.y"
     { ; }
     break;
 
   case 3:
-#line 700 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 705 "parse.y"
     { ; }
     break;
 
   case 4:
-#line 701 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 706 "parse.y"
     { ; }
     break;
 
   case 5:
-#line 702 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 707 "parse.y"
     { ; }
     break;
 
   case 6:
-#line 705 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 710 "parse.y"
     {
                        Node *node = node_new (CCODE_NODE,
                                               "cctype", C_CCODE,
@@ -2524,7 +2551,9 @@ yyreduce:
     break;
 
   case 7:
-#line 714 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 719 "parse.y"
     {
                        Node *node = node_new (CCODE_NODE,
                                               "cctype", AD_CCODE,
@@ -2537,7 +2566,9 @@ yyreduce:
     break;
 
   case 8:
-#line 723 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 728 "parse.y"
     {
                        Node *node = node_new (CCODE_NODE,
                                               "cctype", H_CCODE,
@@ -2550,7 +2581,9 @@ yyreduce:
     break;
 
   case 9:
-#line 732 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 737 "parse.y"
     {
                        Node *node = node_new (CCODE_NODE,
                                               "cctype", HT_CCODE,
@@ -2563,7 +2596,9 @@ yyreduce:
     break;
 
   case 10:
-#line 741 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 746 "parse.y"
     {
                        Node *node = node_new (CCODE_NODE,
                                               "cctype", PH_CCODE,
@@ -2576,7 +2611,9 @@ yyreduce:
     break;
 
   case 11:
-#line 750 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 755 "parse.y"
     {
                        Node *node = node_new (CCODE_NODE,
                                               "cctype", A_CCODE,
@@ -2589,7 +2626,9 @@ yyreduce:
     break;
 
   case 12:
-#line 759 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 764 "parse.y"
     {
                        Node *node = node_new (CCODE_NODE,
                                               "cctype", AT_CCODE,
@@ -2602,47 +2641,65 @@ yyreduce:
     break;
 
   case 13:
-#line 770 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 775 "parse.y"
     { ; }
     break;
 
   case 14:
-#line 771 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 776 "parse.y"
     { ; }
     break;
 
   case 15:
-#line 772 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 777 "parse.y"
     { ; }
     break;
 
   case 16:
-#line 773 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 778 "parse.y"
     { ; }
     break;
 
   case 17:
-#line 774 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 779 "parse.y"
     { ; }
     break;
 
   case 18:
-#line 775 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 780 "parse.y"
     { ; }
     break;
 
   case 19:
-#line 776 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 781 "parse.y"
     { ; }
     break;
 
   case 20:
-#line 777 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 782 "parse.y"
     { ; }
     break;
 
   case 21:
-#line 780 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 785 "parse.y"
     {
                        ((Class *)class)->nodes = class_nodes;
                        class_nodes = NULL;
@@ -2651,7 +2708,9 @@ yyreduce:
     break;
 
   case 22:
-#line 785 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 790 "parse.y"
     {
                        ((Class *)class)->nodes = NULL;
                        class_nodes = NULL;
@@ -2660,7 +2719,9 @@ yyreduce:
     break;
 
   case 23:
-#line 792 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 797 "parse.y"
     {
                        class = node_new (CLASS_NODE,
                                          "otype:steal", (yyvsp[(2) - (5)].id),
@@ -2679,7 +2740,9 @@ yyreduce:
     break;
 
   case 25:
-#line 810 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 815 "parse.y"
     {
                        if(strcmp((yyvsp[(2) - (4)].id),"abstract") == 0) {
                                abstract = TRUE;
@@ -2691,7 +2754,9 @@ yyreduce:
     break;
 
   case 26:
-#line 818 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 823 "parse.y"
     {
                        if(strcmp((yyvsp[(2) - (5)].id),"chunks") == 0) {
                                g_free (chunk_size);
@@ -2707,7 +2772,9 @@ yyreduce:
     break;
 
   case 27:
-#line 830 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 835 "parse.y"
     {
                        if (strcmp ((yyvsp[(2) - (5)].id), "interface") == 0) {
                                interfaces = g_list_append (interfaces,
@@ -2720,7 +2787,9 @@ yyreduce:
     break;
 
   case 28:
-#line 839 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 844 "parse.y"
     {
                        if(strcmp((yyvsp[(2) - (5)].id),"chunks") == 0) {
                                g_free (chunk_size);
@@ -2736,7 +2805,9 @@ yyreduce:
     break;
 
   case 29:
-#line 851 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 856 "parse.y"
     {
                        if (strcmp ((yyvsp[(2) - (6)].id), "GladeXML") == 0) {
                                glade_xml = TRUE;
@@ -2749,7 +2820,9 @@ yyreduce:
     break;
 
   case 30:
-#line 860 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 865 "parse.y"
     {
                        if (strcmp ((yyvsp[(2) - (7)].id), "GladeXML") == 0) {
                                glade_xml = TRUE;
@@ -2762,7 +2835,9 @@ yyreduce:
     break;
 
   case 31:
-#line 869 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 874 "parse.y"
     {
                        if (strcmp ((yyvsp[(2) - (6)].id), "GladeXML") == 0) {
                                glade_xml = TRUE;
@@ -2775,7 +2850,9 @@ yyreduce:
     break;
 
   case 32:
-#line 878 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 883 "parse.y"
     {
                        if (strcmp ((yyvsp[(2) - (7)].id), "GladeXML") == 0) {
                                glade_xml = TRUE;
@@ -2788,22 +2865,30 @@ yyreduce:
     break;
 
   case 33:
-#line 889 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 894 "parse.y"
     { ; }
     break;
 
   case 34:
-#line 890 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 895 "parse.y"
     { ; }
     break;
 
   case 35:
-#line 893 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 898 "parse.y"
     { ; }
     break;
 
   case 36:
-#line 894 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 899 "parse.y"
     {
                        if (strcmp ((yyvsp[(1) - (2)].id), "BonoboObject") != 0) {
                                g_free ((yyvsp[(1) - (2)].id));
@@ -2816,7 +2901,9 @@ yyreduce:
     break;
 
   case 37:
-#line 903 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 908 "parse.y"
     {
                        if (strcmp ((yyvsp[(1) - (3)].id), "interface") != 0) {
                                g_free ((yyvsp[(1) - (3)].id));
@@ -2832,47 +2919,65 @@ yyreduce:
     break;
 
   case 38:
-#line 915 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 920 "parse.y"
     { ; }
     break;
 
   case 39:
-#line 916 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 921 "parse.y"
     { ; }
     break;
 
   case 40:
-#line 917 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 922 "parse.y"
     { ; }
     break;
 
   case 41:
-#line 918 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 923 "parse.y"
     { ; }
     break;
 
   case 42:
-#line 921 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 926 "parse.y"
     { the_scope = PUBLIC_SCOPE; }
     break;
 
   case 43:
-#line 922 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 927 "parse.y"
     { the_scope = PRIVATE_SCOPE; }
     break;
 
   case 44:
-#line 923 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 928 "parse.y"
     { the_scope = PROTECTED_SCOPE; }
     break;
 
   case 45:
-#line 924 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 929 "parse.y"
     { the_scope = CLASS_SCOPE; }
     break;
 
   case 46:
-#line 927 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 932 "parse.y"
     {
                        if (strcmp ((yyvsp[(1) - (2)].id), "destroywith") == 0) {
                                g_free ((yyvsp[(1) - (2)].id));
@@ -2896,7 +3001,9 @@ yyreduce:
     break;
 
   case 47:
-#line 947 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 952 "parse.y"
     {
                        if (strcmp ((yyvsp[(1) - (3)].id), "destroy") == 0) {
                                g_free((yyvsp[(1) - (3)].id));
@@ -2922,7 +3029,9 @@ yyreduce:
     break;
 
   case 48:
-#line 971 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 976 "parse.y"
     {
                        initializer = (yyvsp[(2) - (2)].id);
                        initializer_line = ccode_line;
@@ -2930,7 +3039,9 @@ yyreduce:
     break;
 
   case 49:
-#line 975 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 980 "parse.y"
     {
                        initializer = ((yyvsp[(3) - (3)].cbuf))->str;
                        initializer_line = ccode_line;
@@ -2939,27 +3050,37 @@ yyreduce:
     break;
 
   case 50:
-#line 983 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 988 "parse.y"
     { ; }
     break;
 
   case 51:
-#line 984 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 989 "parse.y"
     { ; }
     break;
 
   case 52:
-#line 985 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 990 "parse.y"
     { destructor = NULL; }
     break;
 
   case 53:
-#line 986 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 991 "parse.y"
     { initializer = NULL; }
     break;
 
   case 54:
-#line 987 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 992 "parse.y"
     {
                        if (strcmp ((yyvsp[(1) - (1)].id), "GladeXML") == 0) {
                                glade_widget = TRUE;
@@ -2971,7 +3092,9 @@ yyreduce:
     break;
 
   case 55:
-#line 995 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1000 "parse.y"
     {
                        destructor = NULL;
                        initializer = NULL;
@@ -2979,21 +3102,27 @@ yyreduce:
     break;
 
   case 56:
-#line 1001 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1006 "parse.y"
     {
                        push_variable((yyvsp[(3) - (5)].id), the_scope,(yyvsp[(1) - (5)].line), NULL);
                                                }
     break;
 
   case 57:
-#line 1004 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1009 "parse.y"
     {
                        push_variable((yyvsp[(3) - (6)].id), the_scope, (yyvsp[(1) - (6)].line), (yyvsp[(4) - (6)].id));
                                                }
     break;
 
   case 58:
-#line 1009 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1014 "parse.y"
     {
                        Node *node = NULL;
                        if(strcmp((yyvsp[(6) - (12)].id),"get")==0 &&
@@ -3065,7 +3194,9 @@ yyreduce:
     break;
 
   case 59:
-#line 1077 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1082 "parse.y"
     {
                        Node *node = NULL;
                        if(strcmp((yyvsp[(6) - (9)].id), "get") == 0) {
@@ -3123,7 +3254,9 @@ yyreduce:
     break;
 
   case 60:
-#line 1131 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1136 "parse.y"
     {
                        Node *node;
                        char *get, *set = NULL;
@@ -3214,7 +3347,9 @@ yyreduce:
     break;
 
   case 61:
-#line 1220 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1225 "parse.y"
     {
                        if (strcmp ((yyvsp[(2) - (3)].id), "export")!=0) {
                                g_free ((yyvsp[(2) - (3)].id)); 
@@ -3226,14 +3361,18 @@ yyreduce:
     break;
 
   case 62:
-#line 1228 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1233 "parse.y"
     {
                        (yyval.id) = NULL;
                                                }
     break;
 
   case 63:
-#line 1233 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1238 "parse.y"
     {
                        ensure_property ();
                        node_set ((Node *)property,
@@ -3285,7 +3424,9 @@ yyreduce:
     break;
 
   case 64:
-#line 1281 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1286 "parse.y"
     {
                        ensure_property ();
                        node_set ((Node *)property,
@@ -3325,7 +3466,9 @@ yyreduce:
     break;
 
   case 65:
-#line 1317 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1322 "parse.y"
     {
                        ensure_property ();
                        node_set ((Node *)property,
@@ -3343,32 +3486,44 @@ yyreduce:
     break;
 
   case 66:
-#line 1333 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1338 "parse.y"
     { ; }
     break;
 
   case 67:
-#line 1334 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1339 "parse.y"
     { ; }
     break;
 
   case 68:
-#line 1337 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1342 "parse.y"
     { ; }
     break;
 
   case 69:
-#line 1338 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1343 "parse.y"
     { ; }
     break;
 
   case 70:
-#line 1341 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1346 "parse.y"
     { (yyval.id) = (yyvsp[(1) - (1)].id); }
     break;
 
   case 71:
-#line 1342 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1347 "parse.y"
     {
                        if (strcmp ((yyvsp[(1) - (4)].id), "_") != 0) {
                                g_free ((yyvsp[(1) - (4)].id));
@@ -3382,17 +3537,23 @@ yyreduce:
     break;
 
   case 72:
-#line 1354 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1359 "parse.y"
     { (yyval.id) = (yyvsp[(1) - (1)].id); }
     break;
 
   case 73:
-#line 1355 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1360 "parse.y"
     { (yyval.id) = (yyvsp[(1) - (1)].id); }
     break;
 
   case 74:
-#line 1358 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1363 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3402,7 +3563,9 @@ yyreduce:
     break;
 
   case 75:
-#line 1364 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1369 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3412,7 +3575,9 @@ yyreduce:
     break;
 
   case 76:
-#line 1370 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1375 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3422,7 +3587,9 @@ yyreduce:
     break;
 
   case 77:
-#line 1376 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1381 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3432,7 +3599,9 @@ yyreduce:
     break;
 
   case 78:
-#line 1382 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1387 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3442,7 +3611,9 @@ yyreduce:
     break;
 
   case 79:
-#line 1388 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1393 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3452,7 +3623,9 @@ yyreduce:
     break;
 
   case 80:
-#line 1394 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1399 "parse.y"
     {
                Type *type = pop_type ();
                ensure_property ();
@@ -3463,7 +3636,9 @@ yyreduce:
     break;
 
   case 81:
-#line 1401 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1406 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3473,7 +3648,9 @@ yyreduce:
     break;
 
   case 82:
-#line 1407 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1412 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3483,7 +3660,9 @@ yyreduce:
     break;
 
   case 83:
-#line 1413 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1418 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3493,7 +3672,9 @@ yyreduce:
     break;
 
   case 84:
-#line 1419 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1424 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3503,7 +3684,9 @@ yyreduce:
     break;
 
   case 85:
-#line 1425 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1430 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3513,7 +3696,9 @@ yyreduce:
     break;
 
   case 86:
-#line 1431 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1436 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3523,7 +3708,9 @@ yyreduce:
     break;
 
   case 87:
-#line 1437 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1442 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3533,7 +3720,9 @@ yyreduce:
     break;
 
   case 88:
-#line 1443 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1448 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3543,7 +3732,9 @@ yyreduce:
     break;
 
   case 89:
-#line 1449 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1454 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3553,7 +3744,9 @@ yyreduce:
     break;
 
   case 90:
-#line 1455 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1460 "parse.y"
     {
                ensure_property ();
                node_set ((Node *)property,
@@ -3563,7 +3756,9 @@ yyreduce:
     break;
 
   case 91:
-#line 1461 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1466 "parse.y"
     {
                ensure_property ();
                if (strcmp ((yyvsp[(1) - (1)].id), "override") == 0) {
@@ -3590,7 +3785,9 @@ yyreduce:
     break;
 
   case 92:
-#line 1486 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1491 "parse.y"
     {
                        if(strcmp((yyvsp[(3) - (5)].id),"type")!=0) {
                                g_free((yyvsp[(1) - (5)].id));
@@ -3603,7 +3800,9 @@ yyreduce:
     break;
 
   case 93:
-#line 1495 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1500 "parse.y"
     {
                        (yyval.id) = debool ((yyvsp[(1) - (1)].id));
                        typestack = g_list_prepend(typestack,NULL);
@@ -3611,31 +3810,41 @@ yyreduce:
     break;
 
   case 94:
-#line 1501 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1506 "parse.y"
     { (yyval.list) = (yyvsp[(2) - (3)].list); }
     break;
 
   case 95:
-#line 1502 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1507 "parse.y"
     { (yyval.list) = NULL; }
     break;
 
   case 96:
-#line 1505 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1510 "parse.y"
     {
                        (yyval.list) = g_list_append((yyvsp[(3) - (3)].list),(yyvsp[(1) - (3)].id));
                                                }
     break;
 
   case 97:
-#line 1508 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1513 "parse.y"
     {
                        (yyval.list) = g_list_append(NULL,(yyvsp[(1) - (1)].id));
                                                }
     break;
 
   case 98:
-#line 1514 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1519 "parse.y"
     {
                        Node *node = node_new (TYPE_NODE, 
                                               "name:steal", (yyvsp[(1) - (2)].id),
@@ -3646,7 +3855,9 @@ yyreduce:
     break;
 
   case 99:
-#line 1521 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1526 "parse.y"
     {
                        Node *node = node_new (TYPE_NODE, 
                                               "name:steal", (yyvsp[(1) - (1)].id),
@@ -3656,21 +3867,27 @@ yyreduce:
     break;
 
   case 100:
-#line 1530 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1535 "parse.y"
     {
                        (yyval.id) = (yyvsp[(1) - (1)].id);
                                                        }
     break;
 
   case 101:
-#line 1533 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1538 "parse.y"
     {
                        (yyval.id) = (yyvsp[(1) - (1)].id);
                                                        }
     break;
 
   case 102:
-#line 1536 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1541 "parse.y"
     {
                        (yyval.id) = g_strconcat("const ", (yyvsp[(2) - (2)].id), NULL);
                        g_free((yyvsp[(2) - (2)].id));
@@ -3678,7 +3895,9 @@ yyreduce:
     break;
 
   case 103:
-#line 1540 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1545 "parse.y"
     {
                        (yyval.id) = g_strconcat((yyvsp[(1) - (2)].id), " const", NULL);
                        g_free((yyvsp[(1) - (2)].id));
@@ -3686,7 +3905,9 @@ yyreduce:
     break;
 
   case 104:
-#line 1544 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1549 "parse.y"
     {
                        (yyval.id) = g_strconcat((yyvsp[(1) - (2)].id), " ", (yyvsp[(2) - (2)].id), NULL);
                        g_free((yyvsp[(2) - (2)].id));
@@ -3694,7 +3915,9 @@ yyreduce:
     break;
 
   case 105:
-#line 1548 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1553 "parse.y"
     {
                        (yyval.id) = g_strconcat("const ", (yyvsp[(2) - (3)].id), " ",
                                             (yyvsp[(3) - (3)].id), NULL);
@@ -3703,7 +3926,9 @@ yyreduce:
     break;
 
   case 106:
-#line 1553 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1558 "parse.y"
     {
                        (yyval.id) = g_strconcat((yyvsp[(1) - (3)].id), " ",
                                             (yyvsp[(2) - (3)].id), " const", NULL);
@@ -3712,7 +3937,9 @@ yyreduce:
     break;
 
   case 107:
-#line 1561 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1566 "parse.y"
     {
                        (yyval.id) = g_strconcat((yyvsp[(1) - (2)].id), " ", (yyvsp[(2) - (2)].id), NULL);
                        g_free((yyvsp[(2) - (2)].id));
@@ -3720,7 +3947,9 @@ yyreduce:
     break;
 
   case 108:
-#line 1565 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1570 "parse.y"
     {
                        (yyval.id) = g_strconcat((yyvsp[(1) - (2)].id), " ", (yyvsp[(2) - (2)].id), NULL);
                        g_free((yyvsp[(1) - (2)].id));
@@ -3729,7 +3958,9 @@ yyreduce:
     break;
 
   case 109:
-#line 1570 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1575 "parse.y"
     {
                        (yyval.id) = g_strconcat("const ", (yyvsp[(2) - (2)].id), NULL);
                        g_free((yyvsp[(2) - (2)].id));
@@ -3737,14 +3968,18 @@ yyreduce:
     break;
 
   case 110:
-#line 1574 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1579 "parse.y"
     {
                        (yyval.id) = (yyvsp[(1) - (1)].id);
                                                        }
     break;
 
   case 111:
-#line 1577 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1582 "parse.y"
     {
                        (yyval.id) = g_strconcat((yyvsp[(1) - (2)].id), " const", NULL);
                        g_free((yyvsp[(1) - (2)].id));
@@ -3752,91 +3987,125 @@ yyreduce:
     break;
 
   case 112:
-#line 1581 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1586 "parse.y"
     {
                        (yyval.id) = g_strdup((yyvsp[(1) - (1)].id));
                                                        }
     break;
 
   case 113:
-#line 1584 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1589 "parse.y"
     {
                        (yyval.id) = g_strconcat((yyvsp[(1) - (2)].id), " const", NULL);
                                                        }
     break;
 
   case 114:
-#line 1589 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1594 "parse.y"
     { (yyval.id) = "void"; }
     break;
 
   case 115:
-#line 1590 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1595 "parse.y"
     { (yyval.id) = "char"; }
     break;
 
   case 116:
-#line 1591 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1596 "parse.y"
     { (yyval.id) = "short"; }
     break;
 
   case 117:
-#line 1592 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1597 "parse.y"
     { (yyval.id) = "int"; }
     break;
 
   case 118:
-#line 1593 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1598 "parse.y"
     { (yyval.id) = "long"; }
     break;
 
   case 119:
-#line 1594 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1599 "parse.y"
     { (yyval.id) = "float"; }
     break;
 
   case 120:
-#line 1595 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1600 "parse.y"
     { (yyval.id) = "double"; }
     break;
 
   case 121:
-#line 1596 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1601 "parse.y"
     { (yyval.id) = "signed"; }
     break;
 
   case 122:
-#line 1597 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1602 "parse.y"
     { (yyval.id) = "unsigned"; }
     break;
 
   case 123:
-#line 1600 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1605 "parse.y"
     { (yyval.id) = "struct"; }
     break;
 
   case 124:
-#line 1601 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1606 "parse.y"
     { (yyval.id) = "union"; }
     break;
 
   case 125:
-#line 1602 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1607 "parse.y"
     { (yyval.id) = "enum"; }
     break;
 
   case 126:
-#line 1605 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1610 "parse.y"
     { (yyval.id) = g_strdup("*"); }
     break;
 
   case 127:
-#line 1606 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1611 "parse.y"
     { (yyval.id) = g_strdup("* const"); }
     break;
 
   case 128:
-#line 1607 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1612 "parse.y"
     {
                                (yyval.id) = g_strconcat("*", (yyvsp[(2) - (2)].id), NULL);
                                g_free((yyvsp[(2) - (2)].id));
@@ -3844,7 +4113,9 @@ yyreduce:
     break;
 
   case 129:
-#line 1611 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1616 "parse.y"
     {
                                (yyval.id) = g_strconcat("* const", (yyvsp[(3) - (3)].id), NULL);
                                g_free((yyvsp[(3) - (3)].id));
@@ -3852,7 +4123,9 @@ yyreduce:
     break;
 
   case 130:
-#line 1618 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1623 "parse.y"
     {
                        if(strcmp((yyvsp[(1) - (2)].id), "first")==0)
                                (yyval.sigtype) = SIGNAL_FIRST_METHOD;
@@ -3868,14 +4141,18 @@ yyreduce:
     break;
 
   case 131:
-#line 1630 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1635 "parse.y"
     {
                        (yyval.sigtype) = SIGNAL_LAST_METHOD;
                                        }
     break;
 
   case 132:
-#line 1636 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1641 "parse.y"
     {
                        if(strcmp((yyvsp[(2) - (3)].id),"first")==0)
                                (yyval.sigtype) = SIGNAL_FIRST_METHOD;
@@ -3891,7 +4168,9 @@ yyreduce:
     break;
 
   case 133:
-#line 1648 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1653 "parse.y"
     {
                        if(strcmp((yyvsp[(1) - (3)].id),"first")==0)
                                (yyval.sigtype) = SIGNAL_FIRST_METHOD;
@@ -3907,14 +4186,18 @@ yyreduce:
     break;
 
   case 134:
-#line 1660 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1665 "parse.y"
     {
                        (yyval.sigtype) = SIGNAL_LAST_METHOD;
                                        }
     break;
 
   case 135:
-#line 1663 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1668 "parse.y"
     {
                        /* the_scope was default thus public */
                        the_scope = PUBLIC_SCOPE;
@@ -3922,38 +4205,50 @@ yyreduce:
     break;
 
   case 136:
-#line 1669 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1674 "parse.y"
     {
                        gtktypes = g_list_prepend(gtktypes, debool ((yyvsp[(1) - (4)].id)));
                                                }
     break;
 
   case 137:
-#line 1674 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1679 "parse.y"
     {
                        gtktypes = g_list_append(gtktypes, debool ((yyvsp[(3) - (3)].id)));
                                                }
     break;
 
   case 138:
-#line 1677 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1682 "parse.y"
     { 
                        gtktypes = g_list_append(gtktypes, debool ((yyvsp[(1) - (1)].id)));
                                                        }
     break;
 
   case 139:
-#line 1682 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1687 "parse.y"
     { (yyval.cbuf) = (yyvsp[(2) - (2)].cbuf); }
     break;
 
   case 140:
-#line 1683 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1688 "parse.y"
     { (yyval.cbuf) = NULL; }
     break;
 
   case 141:
-#line 1687 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1692 "parse.y"
     {
                        if(!has_self) {
                                yyerror(_("signal without 'self' as "
@@ -3980,7 +4275,9 @@ yyreduce:
     break;
 
   case 142:
-#line 1710 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1715 "parse.y"
     {
                        if(!has_self) {
                                yyerror(_("signal without 'self' as "
@@ -4007,7 +4304,9 @@ yyreduce:
     break;
 
   case 143:
-#line 1733 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1738 "parse.y"
     {
                        if(!has_self) {
                                yyerror(_("virtual method without 'self' as "
@@ -4034,7 +4333,9 @@ yyreduce:
     break;
 
   case 144:
-#line 1756 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1761 "parse.y"
     {
                        if(!has_self) {
                                yyerror(_("virtual method without 'self' as "
@@ -4061,7 +4362,9 @@ yyreduce:
     break;
 
   case 145:
-#line 1779 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1784 "parse.y"
     {
                        if(!has_self) {
                                yyerror(_("virtual method without 'szelf' as "
@@ -4083,7 +4386,9 @@ yyreduce:
     break;
 
   case 146:
-#line 1797 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1802 "parse.y"
     {
                        if (funcattrs != NULL) {
                                char *error = g_strdup_printf
@@ -4100,7 +4405,9 @@ yyreduce:
     break;
 
   case 147:
-#line 1810 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1815 "parse.y"
     {
                        if(the_scope == CLASS_SCOPE) {
                                yyerror(_("a method cannot be of class scope"));
@@ -4114,7 +4421,9 @@ yyreduce:
     break;
 
   case 148:
-#line 1820 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1825 "parse.y"
     {
                        if(strcmp((yyvsp[(1) - (5)].id), "init")==0) {
                                push_init_arg((yyvsp[(3) - (5)].id),FALSE);
@@ -4156,7 +4465,9 @@ yyreduce:
     break;
 
   case 149:
-#line 1860 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1865 "parse.y"
     {
                        g_free(funcattrs); funcattrs = NULL;
                        g_free(onerror); onerror = NULL;
@@ -4172,7 +4483,9 @@ yyreduce:
     break;
 
   case 150:
-#line 1872 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1877 "parse.y"
     {
                        g_free(funcattrs); funcattrs = NULL;
                        g_free(onerror); onerror = NULL;
@@ -4196,7 +4509,9 @@ yyreduce:
     break;
 
   case 151:
-#line 1892 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1897 "parse.y"
     {
                        g_free(funcattrs); funcattrs = NULL;
                        g_free(onerror); onerror = NULL;
@@ -4231,7 +4546,9 @@ yyreduce:
     break;
 
   case 152:
-#line 1923 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1928 "parse.y"
     {
                        g_free(funcattrs); funcattrs = NULL;
                        g_free(onerror); onerror = NULL;
@@ -4240,12 +4557,16 @@ yyreduce:
     break;
 
   case 153:
-#line 1930 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1935 "parse.y"
     { (yyval.id) = (yyvsp[(1) - (1)].id); }
     break;
 
   case 154:
-#line 1931 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1936 "parse.y"
     {
                        (yyval.id) = ((yyvsp[(2) - (2)].cbuf))->str;
                        g_string_free((yyvsp[(2) - (2)].cbuf), FALSE);
@@ -4253,12 +4574,16 @@ yyreduce:
     break;
 
   case 155:
-#line 1937 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1942 "parse.y"
     { vararg = FALSE; has_self = FALSE; }
     break;
 
   case 156:
-#line 1938 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1943 "parse.y"
     {
                        vararg = FALSE;
                        has_self = TRUE;
@@ -4273,7 +4598,9 @@ yyreduce:
     break;
 
   case 157:
-#line 1949 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1954 "parse.y"
     {
                        vararg = FALSE;
                        has_self = TRUE;
@@ -4288,7 +4615,9 @@ yyreduce:
     break;
 
   case 158:
-#line 1960 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1965 "parse.y"
     {
                        vararg = FALSE;
                        has_self = TRUE;
@@ -4303,7 +4632,9 @@ yyreduce:
     break;
 
   case 159:
-#line 1971 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1976 "parse.y"
     {
                        has_self = TRUE;
                        if(strcmp((yyvsp[(1) - (3)].id),"self")==0)
@@ -4317,7 +4648,9 @@ yyreduce:
     break;
 
   case 160:
-#line 1981 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1986 "parse.y"
     {
                        has_self = TRUE;
                        if(strcmp((yyvsp[(1) - (4)].id),"self")==0)
@@ -4331,7 +4664,9 @@ yyreduce:
     break;
 
   case 161:
-#line 1991 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 1996 "parse.y"
     {
                        has_self = TRUE;
                        if(strcmp((yyvsp[(2) - (4)].id),"self")==0)
@@ -4345,46 +4680,62 @@ yyreduce:
     break;
 
   case 162:
-#line 2001 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2006 "parse.y"
     { has_self = FALSE; }
     break;
 
   case 163:
-#line 2004 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2009 "parse.y"
     { vararg = TRUE; }
     break;
 
   case 164:
-#line 2005 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2010 "parse.y"
     { vararg = FALSE; }
     break;
 
   case 165:
-#line 2008 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2013 "parse.y"
     { ; }
     break;
 
   case 166:
-#line 2009 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2014 "parse.y"
     { ; }
     break;
 
   case 167:
-#line 2012 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2017 "parse.y"
     {
                        push_funcarg((yyvsp[(2) - (2)].id),NULL);
                                                                }
     break;
 
   case 168:
-#line 2015 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2020 "parse.y"
     {
                        push_funcarg((yyvsp[(2) - (3)].id),(yyvsp[(3) - (3)].id));
                                                                }
     break;
 
   case 169:
-#line 2018 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2023 "parse.y"
     {
                        if(strcmp((yyvsp[(4) - (6)].id),"check")!=0) {
                                yyerror(_("parse error"));
@@ -4396,7 +4747,9 @@ yyreduce:
     break;
 
   case 170:
-#line 2026 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2031 "parse.y"
     {
                        if(strcmp((yyvsp[(5) - (7)].id),"check")!=0) {
                                yyerror(_("parse error"));
@@ -4408,17 +4761,23 @@ yyreduce:
     break;
 
   case 171:
-#line 2036 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2041 "parse.y"
     { ; }
     break;
 
   case 172:
-#line 2037 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2042 "parse.y"
     { ; }
     break;
 
   case 173:
-#line 2040 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2045 "parse.y"
     {
                        if(strcmp((yyvsp[(1) - (1)].id),"type")==0) {
                                Node *node = node_new (CHECK_NODE,
@@ -4439,7 +4798,9 @@ yyreduce:
     break;
 
   case 174:
-#line 2057 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2062 "parse.y"
     {
                        Node *node = node_new (CHECK_NODE,
                                               "chtype", GT_CHECK,
@@ -4450,7 +4811,9 @@ yyreduce:
     break;
 
   case 175:
-#line 2064 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2069 "parse.y"
     {
                        Node *node = node_new (CHECK_NODE,
                                               "chtype", LT_CHECK,
@@ -4461,7 +4824,9 @@ yyreduce:
     break;
 
   case 176:
-#line 2071 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2076 "parse.y"
     {
                        Node *node = node_new (CHECK_NODE,
                                               "chtype", GE_CHECK,
@@ -4472,7 +4837,9 @@ yyreduce:
     break;
 
   case 177:
-#line 2078 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2083 "parse.y"
     {
                        Node *node = node_new (CHECK_NODE,
                                               "chtype", LE_CHECK,
@@ -4483,7 +4850,9 @@ yyreduce:
     break;
 
   case 178:
-#line 2085 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2090 "parse.y"
     {
                        Node *node = node_new (CHECK_NODE,
                                               "chtype", EQ_CHECK,
@@ -4494,7 +4863,9 @@ yyreduce:
     break;
 
   case 179:
-#line 2092 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2097 "parse.y"
     {
                        Node *node = node_new (CHECK_NODE,
                                               "chtype", NE_CHECK,
@@ -4505,7 +4876,9 @@ yyreduce:
     break;
 
   case 180:
-#line 2101 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2106 "parse.y"
     {
                        Node *node = node_new (ENUMDEF_NODE,
                                               "etype:steal", (yyvsp[(6) - (7)].id),
@@ -4518,7 +4891,9 @@ yyreduce:
     break;
 
   case 181:
-#line 2110 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2115 "parse.y"
     {
                        Node *node = node_new (ENUMDEF_NODE,
                                               "etype:steal", (yyvsp[(7) - (8)].id),
@@ -4531,17 +4906,23 @@ yyreduce:
     break;
 
   case 182:
-#line 2121 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2126 "parse.y"
     {;}
     break;
 
   case 183:
-#line 2122 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2127 "parse.y"
     {;}
     break;
 
   case 184:
-#line 2125 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2130 "parse.y"
     {
                        Node *node;
                        char *num = (yyvsp[(3) - (3)].id);
@@ -4565,7 +4946,9 @@ yyreduce:
     break;
 
   case 185:
-#line 2145 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2150 "parse.y"
     {
                        Node *node;
 
@@ -4577,7 +4960,9 @@ yyreduce:
     break;
 
   case 186:
-#line 2155 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2160 "parse.y"
     {
                        Node *node = node_new (FLAGS_NODE,
                                               "ftype:steal", (yyvsp[(6) - (7)].id),
@@ -4590,7 +4975,9 @@ yyreduce:
     break;
 
   case 187:
-#line 2164 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2169 "parse.y"
     {
                        Node *node = node_new (FLAGS_NODE,
                                               "ftype:steal", (yyvsp[(7) - (8)].id),
@@ -4603,21 +4990,27 @@ yyreduce:
     break;
 
   case 188:
-#line 2175 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2180 "parse.y"
     {
                        flag_vals = g_list_append (flag_vals, (yyvsp[(3) - (3)].id));
                }
     break;
 
   case 189:
-#line 2178 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2183 "parse.y"
     {
                        flag_vals = g_list_append (flag_vals, (yyvsp[(1) - (1)].id));
                }
     break;
 
   case 190:
-#line 2183 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2188 "parse.y"
     {
                        Node *node = node_new (ERROR_NODE,
                                               "etype:steal", (yyvsp[(6) - (7)].id),
@@ -4630,7 +5023,9 @@ yyreduce:
     break;
 
   case 191:
-#line 2192 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2197 "parse.y"
     {
                        Node *node = node_new (ERROR_NODE,
                                               "etype:steal", (yyvsp[(7) - (8)].id),
@@ -4643,26 +5038,34 @@ yyreduce:
     break;
 
   case 192:
-#line 2203 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2208 "parse.y"
     {
                        error_vals = g_list_append (error_vals, (yyvsp[(3) - (3)].id));
                }
     break;
 
   case 193:
-#line 2206 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2211 "parse.y"
     {
                        error_vals = g_list_append (error_vals, (yyvsp[(1) - (1)].id));
                }
     break;
 
   case 194:
-#line 2212 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2217 "parse.y"
     { (yyval.id) = (yyvsp[(1) - (1)].id); }
     break;
 
   case 195:
-#line 2213 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2218 "parse.y"
     {
                        (yyval.id) = g_strconcat("-",(yyvsp[(2) - (2)].id),NULL);
                        g_free((yyvsp[(2) - (2)].id));
@@ -4670,18 +5073,23 @@ yyreduce:
     break;
 
   case 196:
-#line 2217 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2222 "parse.y"
     { (yyval.id) = (yyvsp[(1) - (1)].id); }
     break;
 
   case 197:
-#line 2218 "parse.y"
+
+/* Line 1455 of yacc.c  */
+#line 2223 "parse.y"
     { (yyval.id) = (yyvsp[(1) - (1)].id); }
     break;
 
 
-/* Line 1267 of yacc.c.  */
-#line 4685 "parse.c"
+
+/* Line 1455 of yacc.c  */
+#line 5093 "parse.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -4692,7 +5100,6 @@ yyreduce:
 
   *++yyvsp = yyval;
 
-
   /* Now `shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
@@ -4757,7 +5164,7 @@ yyerrlab:
 
   if (yyerrstatus == 3)
     {
-      /* If just tried and failed to reuse look-ahead token after an
+      /* If just tried and failed to reuse lookahead token after an
         error, discard it.  */
 
       if (yychar <= YYEOF)
@@ -4774,7 +5181,7 @@ yyerrlab:
        }
     }
 
-  /* Else will try to reuse look-ahead token after shifting the error
+  /* Else will try to reuse lookahead token after shifting the error
      token.  */
   goto yyerrlab1;
 
@@ -4831,9 +5238,6 @@ yyerrlab1:
       YY_STACK_PRINT (yyss, yyssp);
     }
 
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
   *++yyvsp = yylval;
 
 
@@ -4858,7 +5262,7 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#ifndef yyoverflow
+#if !defined(yyoverflow) || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -4869,7 +5273,7 @@ yyexhaustedlab:
 #endif
 
 yyreturn:
-  if (yychar != YYEOF && yychar != YYEMPTY)
+  if (yychar != YYEMPTY)
      yydestruct ("Cleanup: discarding lookahead",
                 yytoken, &yylval);
   /* Do not reclaim the symbols of the rule which action triggered
@@ -4895,6 +5299,8 @@ yyreturn:
 }
 
 
-#line 2221 "parse.y"
+
+/* Line 1675 of yacc.c  */
+#line 2226 "parse.y"