diff --git a/pandatool/src/xfile/xLexer.cxx.prebuilt b/pandatool/src/xfile/xLexer.cxx.prebuilt index 2c7bd5cb1f..3cb949d010 100644 --- a/pandatool/src/xfile/xLexer.cxx.prebuilt +++ b/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; \ diff --git a/pandatool/src/xfile/xParser.cxx.prebuilt b/pandatool/src/xfile/xParser.cxx.prebuilt index 25254719a8..58e962f50a 100644 --- a/pandatool/src/xfile/xParser.cxx.prebuilt +++ b/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 /* 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); diff --git a/pandatool/src/xfile/xParser.yxx b/pandatool/src/xfile/xParser.yxx index 604f0b2ea6..b22804e212 100644 --- a/pandatool/src/xfile/xParser.yxx +++ b/pandatool/src/xfile/xParser.yxx @@ -114,6 +114,7 @@ xfile: template: TOKEN_TEMPLATE singleword_name TOKEN_OBRACE class_id { + $$ = 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); + $$ = current_node; if (xtemplate == (XFileTemplate *)NULL) { yyerror("Unknown template: " + $1);