Explorar o código

shoot, proper fix for bison 2.4

David Rose %!s(int64=16) %!d(string=hai) anos
pai
achega
ee571fa777

+ 1 - 1
pandatool/src/xfile/xLexer.cxx.prebuilt

@@ -1140,7 +1140,7 @@ static int input (void );
 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 		{ \
 		int c = '*'; \
-		int n; \
+		unsigned n; \
 		for ( n = 0; n < max_size && \
 			     (c = getc( xyyin )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \

+ 50 - 48
pandatool/src/xfile/xParser.cxx.prebuilt

@@ -269,7 +269,7 @@ typedef short int yytype_int16;
 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
+# if YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -525,14 +525,14 @@ static const yytype_int8 yyrhs[] =
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   108,   108,   109,   110,   111,   116,   115,   129,   130,
-     134,   135,   139,   143,   147,   148,   152,   153,   154,   158,
-     166,   170,   183,   187,   191,   195,   199,   203,   207,   211,
-     215,   219,   223,   230,   235,   248,   249,   253,   257,   261,
-     273,   276,   282,   291,   307,   311,   312,   316,   323,   327,
-     331,   335,   339,   343,   348,   347,   374,   375,   379,   384,
-     388,   396,   404,   412,   418,   422,   426,   430,   431,   435,
-     444,   460
+       0,   108,   108,   109,   110,   111,   116,   115,   130,   131,
+     135,   136,   140,   144,   148,   149,   153,   154,   155,   159,
+     167,   171,   184,   188,   192,   196,   200,   204,   208,   212,
+     216,   220,   224,   231,   236,   249,   250,   254,   258,   262,
+     274,   277,   283,   292,   308,   312,   313,   317,   324,   328,
+     332,   336,   340,   344,   349,   348,   376,   377,   381,   386,
+     390,   398,   406,   414,   420,   424,   428,   432,   433,   437,
+     446,   462
 };
 #endif
 
@@ -775,7 +775,7 @@ while (YYID (0))
    we won't break user code: when these are the locations we know.  */
 
 #ifndef YY_LOCATION_PRINT
-# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
+# if YYLTYPE_IS_TRIVIAL
 #  define YY_LOCATION_PRINT(File, Loc)			\
      fprintf (File, "%d.%d-%d.%d",			\
 	      (Loc).first_line, (Loc).first_column,	\
@@ -1518,6 +1518,7 @@ yyreduce:
         case 6:
 #line 116 "xParser.yxx"
     {
+  (yyval.u.node) = current_node;
   XFileTemplate *templ = new XFileTemplate(x_file, (yyvsp[(2) - (4)].str), (yyvsp[(4) - (4)].guid));
   current_node->add_child(templ);
   current_node = templ;
@@ -1525,7 +1526,7 @@ yyreduce:
     break;
 
   case 7:
-#line 122 "xParser.yxx"
+#line 123 "xParser.yxx"
     {
   (yyval.u.node) = current_node;
   current_node = (yyvsp[(5) - (7)].u.node);
@@ -1533,14 +1534,14 @@ yyreduce:
     break;
 
   case 12:
-#line 140 "xParser.yxx"
+#line 141 "xParser.yxx"
     {
   DCAST(XFileTemplate, current_node)->set_open(true);
 }
     break;
 
   case 19:
-#line 159 "xParser.yxx"
+#line 160 "xParser.yxx"
     {
   current_data_def = new XFileDataDef(x_file, (yyvsp[(2) - (3)].str), (yyvsp[(1) - (3)].u.primitive_type));
   current_node->add_child(current_data_def);
@@ -1548,7 +1549,7 @@ yyreduce:
     break;
 
   case 21:
-#line 171 "xParser.yxx"
+#line 172 "xParser.yxx"
     {
   XFileTemplate *xtemplate = x_file->find_template((yyvsp[(1) - (3)].str));
   if (xtemplate == (XFileTemplate *)NULL) {
@@ -1561,84 +1562,84 @@ yyreduce:
     break;
 
   case 22:
-#line 184 "xParser.yxx"
+#line 185 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_word;
 }
     break;
 
   case 23:
-#line 188 "xParser.yxx"
+#line 189 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_dword;
 }
     break;
 
   case 24:
-#line 192 "xParser.yxx"
+#line 193 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_float;
 }
     break;
 
   case 25:
-#line 196 "xParser.yxx"
+#line 197 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_double;
 }
     break;
 
   case 26:
-#line 200 "xParser.yxx"
+#line 201 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_char;
 }
     break;
 
   case 27:
-#line 204 "xParser.yxx"
+#line 205 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_uchar;
 }
     break;
 
   case 28:
-#line 208 "xParser.yxx"
+#line 209 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_sword;
 }
     break;
 
   case 29:
-#line 212 "xParser.yxx"
+#line 213 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_sdword;
 }
     break;
 
   case 30:
-#line 216 "xParser.yxx"
+#line 217 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_string;
 }
     break;
 
   case 31:
-#line 220 "xParser.yxx"
+#line 221 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_unicode;
 }
     break;
 
   case 32:
-#line 224 "xParser.yxx"
+#line 225 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_cstring;
 }
     break;
 
   case 33:
-#line 231 "xParser.yxx"
+#line 232 "xParser.yxx"
     {
   current_data_def = new XFileDataDef(x_file, (yyvsp[(2) - (2)].str), (yyvsp[(1) - (2)].u.primitive_type));
   current_node->add_child(current_data_def);
@@ -1646,7 +1647,7 @@ yyreduce:
     break;
 
   case 34:
-#line 236 "xParser.yxx"
+#line 237 "xParser.yxx"
     {
   XFileTemplate *xtemplate = x_file->find_template((yyvsp[(1) - (2)].str));
   if (xtemplate == (XFileTemplate *)NULL) {
@@ -1659,14 +1660,14 @@ yyreduce:
     break;
 
   case 38:
-#line 258 "xParser.yxx"
+#line 259 "xParser.yxx"
     {
   current_data_def->add_array_def(XFileArrayDef((yyvsp[(1) - (1)].u.number)));
 }
     break;
 
   case 39:
-#line 262 "xParser.yxx"
+#line 263 "xParser.yxx"
     {
   XFileNode *data_def = current_node->find_child((yyvsp[(1) - (1)].str));
   if (data_def == (XFileNode *)NULL) {
@@ -1678,19 +1679,19 @@ yyreduce:
     break;
 
   case 40:
-#line 274 "xParser.yxx"
+#line 275 "xParser.yxx"
     {
 }
     break;
 
   case 41:
-#line 277 "xParser.yxx"
+#line 278 "xParser.yxx"
     {
 }
     break;
 
   case 42:
-#line 283 "xParser.yxx"
+#line 284 "xParser.yxx"
     {
   XFileTemplate *xtemplate = x_file->find_template((yyvsp[(1) - (1)].str));
   if (xtemplate == (XFileTemplate *)NULL) {
@@ -1702,7 +1703,7 @@ yyreduce:
     break;
 
   case 43:
-#line 292 "xParser.yxx"
+#line 293 "xParser.yxx"
     {
   XFileTemplate *xtemplate = x_file->find_template((yyvsp[(2) - (2)].guid));
   if (xtemplate == (XFileTemplate *)NULL) {
@@ -1718,37 +1719,38 @@ yyreduce:
     break;
 
   case 46:
-#line 313 "xParser.yxx"
+#line 314 "xParser.yxx"
     {
   (yyval.str) = (yyvsp[(1) - (2)].str) + " " + (yyvsp[(2) - (2)].str);
 }
     break;
 
   case 47:
-#line 317 "xParser.yxx"
+#line 318 "xParser.yxx"
     {
   (yyval.str) = (yyvsp[(1) - (2)].str) + " " + (yyvsp[(2) - (2)].str);
 }
     break;
 
   case 48:
-#line 324 "xParser.yxx"
+#line 325 "xParser.yxx"
     {
   (yyval.str) = string();
 }
     break;
 
   case 51:
-#line 336 "xParser.yxx"
+#line 337 "xParser.yxx"
     {
   (yyval.guid) = WindowsGuid();
 }
     break;
 
   case 54:
-#line 348 "xParser.yxx"
+#line 349 "xParser.yxx"
     {
   XFileTemplate *xtemplate = x_file->find_template((yyvsp[(1) - (3)].str));
+  (yyval.u.node) = current_node;
   
   if (xtemplate == (XFileTemplate *)NULL) {
     yyerror("Unknown template: " + (yyvsp[(1) - (3)].str));
@@ -1762,7 +1764,7 @@ yyreduce:
     break;
 
   case 55:
-#line 361 "xParser.yxx"
+#line 363 "xParser.yxx"
     {
   if (current_node->is_exact_type(XFileDataNodeTemplate::get_class_type())) {
     XFileDataNodeTemplate *current_template = 
@@ -1776,7 +1778,7 @@ yyreduce:
     break;
 
   case 58:
-#line 380 "xParser.yxx"
+#line 382 "xParser.yxx"
     {
   // nested references should be added as children too.
   current_node->add_child((yyvsp[(2) - (3)].u.node));
@@ -1784,14 +1786,14 @@ yyreduce:
     break;
 
   case 59:
-#line 385 "xParser.yxx"
+#line 387 "xParser.yxx"
     {
   // nested objects are just quietly added as children.
 }
     break;
 
   case 60:
-#line 389 "xParser.yxx"
+#line 391 "xParser.yxx"
     {
   if (current_node->is_exact_type(XFileDataNodeTemplate::get_class_type())) {
     XFileDataNodeTemplate *current_template = 
@@ -1802,7 +1804,7 @@ yyreduce:
     break;
 
   case 61:
-#line 397 "xParser.yxx"
+#line 399 "xParser.yxx"
     {
   if (current_node->is_exact_type(XFileDataNodeTemplate::get_class_type())) {
     XFileDataNodeTemplate *current_template = 
@@ -1813,7 +1815,7 @@ yyreduce:
     break;
 
   case 62:
-#line 405 "xParser.yxx"
+#line 407 "xParser.yxx"
     {
   if (current_node->is_exact_type(XFileDataNodeTemplate::get_class_type())) {
     XFileDataNodeTemplate *current_template = 
@@ -1824,13 +1826,13 @@ yyreduce:
     break;
 
   case 63:
-#line 413 "xParser.yxx"
+#line 415 "xParser.yxx"
     {
 }
     break;
 
   case 69:
-#line 436 "xParser.yxx"
+#line 438 "xParser.yxx"
     {
   XFileDataNodeTemplate *data_object = x_file->find_data_object((yyvsp[(1) - (1)].str));
   if (data_object == (XFileDataObject *)NULL) {
@@ -1842,7 +1844,7 @@ yyreduce:
     break;
 
   case 70:
-#line 445 "xParser.yxx"
+#line 447 "xParser.yxx"
     {
   XFileDataNodeTemplate *data_object = x_file->find_data_object((yyvsp[(2) - (2)].guid));
   if (data_object == (XFileDataObject *)NULL) {
@@ -1860,7 +1862,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 1864 "y.tab.c"
+#line 1866 "y.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);

+ 2 - 0
pandatool/src/xfile/xParser.yxx

@@ -114,6 +114,7 @@ xfile:
 template:
          TOKEN_TEMPLATE singleword_name TOKEN_OBRACE class_id
 {
+  $<u.node>$ = current_node;
   XFileTemplate *templ = new XFileTemplate(x_file, $2, $4);
   current_node->add_child(templ);
   current_node = templ;
@@ -347,6 +348,7 @@ object:
         singleword_name optional_multiword_name TOKEN_OBRACE
 {
   XFileTemplate *xtemplate = x_file->find_template($1);
+  $<u.node>$ = current_node;
   
   if (xtemplate == (XFileTemplate *)NULL) {
     yyerror("Unknown template: " + $1);