make X file reader more forgiving

This commit is contained in:
David Rose
2005-05-28 16:12:57 +00:00
parent b9302590cf
commit 3dd4264c8c
3 changed files with 178 additions and 177 deletions
+4 -3
View File
@@ -24,6 +24,7 @@
#include "xFile.h"
#include "xFileDataNodeTemplate.h"
#include "filename.h"
#include "string_utils.h"
TypeHandle XFileNode::_type_handle;
@@ -58,7 +59,7 @@ XFileNode::
XFileNode *XFileNode::
find_child(const string &name) const {
ChildrenByName::const_iterator ni;
ni = _children_by_name.find(name);
ni = _children_by_name.find(downcase(name));
if (ni != _children_by_name.end()) {
return get_child((*ni).second);
}
@@ -75,7 +76,7 @@ find_child(const string &name) const {
int XFileNode::
find_child_index(const string &name) const {
ChildrenByName::const_iterator ni;
ni = _children_by_name.find(name);
ni = _children_by_name.find(downcase(name));
if (ni != _children_by_name.end()) {
return (*ni).second;
}
@@ -227,7 +228,7 @@ is_standard_object(const string &template_name) const {
void XFileNode::
add_child(XFileNode *node) {
if (node->has_name()) {
_children_by_name[node->get_name()] = (int)_children.size();
_children_by_name[downcase(node->get_name())] = (int)_children.size();
}
if (node->has_guid()) {
_x_file->_nodes_by_guid[node->get_guid()] = node;
+173 -174
View File
@@ -90,7 +90,7 @@ x_cleanup_parser() {
#define YYFINAL 96
#define YYFINAL 97
#define YYFLAG -32768
#define YYNTBASE 34
@@ -131,33 +131,34 @@ static const char yytranslate[] =
#if YYDEBUG
static const short yyprhs[] =
{
0, 0, 2, 5, 8, 9, 17, 22, 24, 26,
28, 30, 32, 34, 37, 39, 41, 43, 47, 52,
56, 58, 60, 62, 64, 66, 68, 70, 72, 74,
76, 78, 81, 84, 86, 89, 93, 95, 97, 99,
102, 104, 107, 109, 111, 113, 115, 117, 119, 123,
124, 132, 134, 137, 141, 143, 145, 147, 150, 152,
154, 156, 158, 160, 162, 164, 167
0, 0, 2, 5, 8, 11, 12, 20, 25, 27,
29, 31, 33, 35, 37, 40, 42, 44, 46, 50,
55, 59, 61, 63, 65, 67, 69, 71, 73, 75,
77, 79, 81, 84, 87, 89, 92, 96, 98, 100,
102, 105, 107, 110, 112, 114, 116, 118, 120, 122,
126, 127, 135, 137, 140, 144, 146, 148, 150, 153,
155, 157, 159, 161, 163, 165, 167, 170
};
static const short yyrhs[] =
{
66, 0, 34, 35, 0, 34, 57, 0, 0, 20,
52, 9, 54, 36, 37, 10, 0, 38, 13, 39,
14, 0, 40, 0, 66, 0, 40, 0, 56, 0,
50, 0, 41, 0, 40, 41, 0, 42, 0, 43,
0, 44, 0, 45, 53, 19, 0, 33, 46, 47,
19, 0, 52, 53, 19, 0, 21, 0, 22, 0,
23, 0, 24, 0, 25, 0, 26, 0, 27, 0,
28, 0, 30, 0, 31, 0, 32, 0, 45, 52,
0, 52, 52, 0, 48, 0, 47, 48, 0, 13,
49, 14, 0, 5, 0, 52, 0, 51, 0, 50,
51, 0, 52, 0, 52, 54, 0, 3, 0, 66,
0, 52, 0, 6, 0, 66, 0, 54, 0, 17,
17, 17, 0, 0, 52, 53, 9, 58, 55, 59,
10, 0, 66, 0, 59, 60, 0, 9, 65, 10,
0, 57, 0, 61, 0, 62, 0, 63, 64, 0,
64, 0, 7, 0, 8, 0, 4, 0, 19, 0,
18, 0, 52, 0, 52, 54, 0, 0
66, 0, 34, 35, 0, 34, 57, 0, 34, 10,
0, 0, 20, 52, 9, 54, 36, 37, 10, 0,
38, 13, 39, 14, 0, 40, 0, 66, 0, 40,
0, 56, 0, 50, 0, 41, 0, 40, 41, 0,
42, 0, 43, 0, 44, 0, 45, 53, 19, 0,
33, 46, 47, 19, 0, 52, 53, 19, 0, 21,
0, 22, 0, 23, 0, 24, 0, 25, 0, 26,
0, 27, 0, 28, 0, 30, 0, 31, 0, 32,
0, 45, 52, 0, 52, 52, 0, 48, 0, 47,
48, 0, 13, 49, 14, 0, 5, 0, 52, 0,
51, 0, 50, 51, 0, 52, 0, 52, 54, 0,
3, 0, 66, 0, 52, 0, 6, 0, 66, 0,
54, 0, 17, 17, 17, 0, 0, 52, 53, 9,
58, 55, 59, 10, 0, 66, 0, 59, 60, 0,
9, 65, 10, 0, 57, 0, 61, 0, 62, 0,
63, 64, 0, 64, 0, 7, 0, 8, 0, 4,
0, 19, 0, 18, 0, 52, 0, 52, 54, 0,
0
};
#endif
@@ -166,13 +167,13 @@ static const short yyrhs[] =
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const short yyrline[] =
{
0, 106, 108, 109, 112, 112, 127, 129, 132, 134,
137, 142, 145, 147, 150, 152, 153, 156, 164, 168,
181, 186, 190, 194, 198, 202, 206, 210, 214, 218,
222, 228, 234, 246, 248, 251, 255, 260, 271, 275,
280, 290, 305, 309, 314, 317, 321, 326, 329, 333,
333, 359, 361, 364, 370, 374, 380, 386, 392, 397,
401, 405, 409, 411, 414, 424, 440
0, 106, 108, 109, 110, 113, 113, 128, 130, 133,
135, 138, 143, 146, 148, 151, 153, 154, 157, 165,
169, 182, 187, 191, 195, 199, 203, 207, 211, 215,
219, 223, 229, 235, 247, 249, 252, 256, 261, 272,
276, 281, 291, 306, 310, 315, 318, 322, 327, 330,
334, 334, 360, 362, 365, 371, 375, 381, 387, 393,
398, 402, 406, 410, 412, 415, 425, 441
};
#endif
@@ -205,25 +206,25 @@ static const char *const yytname[] =
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const short yyr1[] =
{
0, 34, 34, 34, 36, 35, 37, 37, 38, 38,
39, 39, 40, 40, 41, 41, 41, 42, 43, 44,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 46, 46, 47, 47, 48, 49, 49, 50, 50,
51, 51, 52, 53, 53, 54, 55, 55, 56, 58,
57, 59, 59, 60, 60, 60, 60, 60, 60, 61,
62, 63, 64, 64, 65, 65, 66
0, 34, 34, 34, 34, 36, 35, 37, 37, 38,
38, 39, 39, 40, 40, 41, 41, 41, 42, 43,
44, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 46, 46, 47, 47, 48, 49, 49, 50,
50, 51, 51, 52, 53, 53, 54, 55, 55, 56,
58, 57, 59, 59, 60, 60, 60, 60, 60, 60,
61, 62, 63, 64, 64, 65, 65, 66
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const short yyr2[] =
{
0, 1, 2, 2, 0, 7, 4, 1, 1, 1,
1, 1, 1, 2, 1, 1, 1, 3, 4, 3,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 2, 1, 2, 3, 1, 1, 1, 2,
1, 2, 1, 1, 1, 1, 1, 1, 3, 0,
7, 1, 2, 3, 1, 1, 1, 2, 1, 1,
1, 1, 1, 1, 1, 2, 0
0, 1, 2, 2, 2, 0, 7, 4, 1, 1,
1, 1, 1, 1, 2, 1, 1, 1, 3, 4,
3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 2, 2, 1, 2, 3, 1, 1, 1,
2, 1, 2, 1, 1, 1, 1, 1, 1, 3,
0, 7, 1, 2, 3, 1, 1, 1, 2, 1,
1, 1, 1, 1, 1, 1, 2, 0
};
/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
@@ -231,84 +232,82 @@ static const short yyr2[] =
error. */
static const short yydefact[] =
{
66, 0, 1, 42, 0, 2, 66, 3, 0, 44,
0, 43, 0, 49, 45, 4, 66, 66, 47, 66,
46, 20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 0, 0, 0, 7, 12, 14, 15, 16,
66, 66, 8, 0, 51, 0, 0, 0, 5, 0,
13, 0, 0, 61, 59, 60, 0, 50, 63, 62,
54, 52, 55, 56, 0, 58, 31, 0, 0, 33,
32, 0, 0, 11, 38, 40, 10, 17, 19, 64,
0, 57, 36, 0, 37, 18, 34, 0, 6, 39,
41, 65, 53, 35, 48, 0, 0
67, 0, 1, 43, 4, 0, 2, 67, 3, 0,
45, 0, 44, 0, 50, 46, 5, 67, 67, 48,
67, 47, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 31, 0, 0, 0, 8, 13, 15, 16,
17, 67, 67, 9, 0, 52, 0, 0, 0, 6,
0, 14, 0, 0, 62, 60, 61, 0, 51, 64,
63, 55, 53, 56, 57, 0, 59, 32, 0, 0,
34, 33, 0, 0, 12, 39, 41, 11, 18, 20,
65, 0, 58, 37, 0, 38, 19, 35, 0, 7,
40, 42, 66, 54, 36, 49, 0, 0
};
static const short yydefgoto[] =
{
1, 5, 17, 33, 34, 72, 35, 36, 37, 38,
39, 40, 46, 68, 69, 83, 73, 74, 9, 10,
15, 19, 76, 7, 16, 43, 61, 62, 63, 64,
65, 80, 11
1, 6, 18, 34, 35, 73, 36, 37, 38, 39,
40, 41, 47, 69, 70, 84, 74, 75, 10, 11,
16, 20, 77, 8, 17, 44, 62, 63, 64, 65,
66, 81, 12
};
static const short yypact[] =
{
-32768, 2,-32768,-32768, 12,-32768, 12,-32768, 8,-32768,
9,-32768, 13,-32768,-32768,-32768, 13, 67,-32768,-32768,
-32768, 2,-32768,-32768,-32768, 5,-32768, 5,-32768, 9,
-32768, 17,-32768, 30,-32768,-32768,-32768, 30, 68,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768, 80, 15, 14, 54,-32768,-32768,-32768,-32768,
12, 12,-32768, 110,-32768, 12, 16, 12,-32768, 7,
-32768, 11, 17,-32768,-32768,-32768, 12,-32768,-32768,-32768,
-32768,-32768,-32768,-32768, -11,-32768,-32768, 6, -7,-32768,
-32768, 18, 19, 12,-32768, 13,-32768,-32768,-32768, 13,
22,-32768,-32768, 23,-32768,-32768,-32768, 21,-32768,-32768,
-32768,-32768,-32768,-32768,-32768, 26,-32768
-32768,-32768,-32768, 81, 1, 25, 55,-32768,-32768,-32768,
-32768, 5, 5,-32768, 6,-32768, 5, 26, 5,-32768,
16,-32768, 18, 21,-32768,-32768,-32768, 5,-32768,-32768,
-32768,-32768,-32768,-32768,-32768, -12,-32768,-32768, 24, 15,
-32768,-32768, 27, 28, 5,-32768, 30,-32768,-32768,-32768,
30, 31,-32768,-32768, 32,-32768,-32768,-32768, 33,-32768,
-32768,-32768,-32768,-32768,-32768,-32768, 48,-32768
};
static const short yypgoto[] =
{
-32768,-32768,-32768,-32768,-32768,-32768,-32768, 5,-32768,-32768,
-32768, -4,-32768,-32768, -29,-32768,-32768, -32, -1, -27,
-15,-32768,-32768, 0,-32768,-32768,-32768,-32768,-32768,-32768,
-19,-32768, 4
-32768,-32768,-32768,-32768,-32768,-32768,-32768, 19,-32768,-32768,
-32768, 20,-32768,-32768, -18,-32768,-32768, -22, -1, -11,
-16,-32768,-32768, 10,-32768,-32768,-32768,-32768,-32768,-32768,
-8,-32768, 3
};
#define YYLAST 129
#define YYLAST 113
static const short yytable[] =
{
6, 18, 95, 8, 2, 3, 67, 58, 59, 3,
3, 82, 85, 51, 52, 3, 41, 12, 13, 14,
20, 42, 4, 44, 71, 48, 96, 49, 45, 67,
77, 47, 92, 88, 41, 87, 78, 93, 94, 86,
50, 89, 6, 60, 66, 81, 70, 0, 75, 0,
0, 0, 0, 0, 0, 79, 0, 3, 0, 0,
90, 0, 0, 0, 91, 0, 84, -9, 0, 0,
3, 0, 75, 0, 0, 21, 22, 23, 24, 25,
26, 27, 28, 3, 29, 30, 31, 32, 21, 22,
23, 24, 25, 26, 27, 28, 0, 29, 30, 31,
32, 21, 22, 23, 24, 25, 26, 27, 28, 0,
29, 30, 31, 3, 53, 0, 0, 54, 55, 56,
57, 0, 0, 0, 0, 0, 0, 0, 58, 59
7, 19, 96, 2, 9, 3, 59, 60, 3, 3,
54, 49, 4, 55, 56, 57, 58, 42, 13, 3,
21, 43, 5, 45, 59, 60, 14, 3, 68, 83,
52, 53, 48, 72, 86, 42, 15, 78, 50, 68,
79, 93, 89, 7, 88, 67, 94, 71, 97, 76,
95, 87, 90, 46, 61, 51, 80, 82, 3, 0,
91, 0, 0, 0, 92, 0, 0, 85, -10, 0,
0, 3, 0, 76, 0, 0, 22, 23, 24, 25,
26, 27, 28, 29, 3, 30, 31, 32, 33, 22,
23, 24, 25, 26, 27, 28, 29, 0, 30, 31,
32, 33, 22, 23, 24, 25, 26, 27, 28, 29,
0, 30, 31, 32
};
static const short yycheck[] =
{
1, 16, 0, 4, 0, 3, 13, 18, 19, 3,
3, 5, 19, 40, 41, 3, 17, 9, 9, 6,
16, 17, 20, 19, 17, 10, 0, 13, 32, 13,
19, 32, 10, 14, 35, 17, 19, 14, 17, 68,
35, 73, 43, 43, 45, 64, 47, -1, 49, -1,
-1, -1, -1, -1, -1, 56, -1, 3, -1, -1,
75, -1, -1, -1, 79, -1, 67, 13, -1, -1,
3, -1, 73, -1, -1, 21, 22, 23, 24, 25,
26, 27, 28, 3, 30, 31, 32, 33, 21, 22,
23, 24, 25, 26, 27, 28, -1, 30, 31, 32,
33, 21, 22, 23, 24, 25, 26, 27, 28, -1,
30, 31, 32, 3, 4, -1, -1, 7, 8, 9,
10, -1, -1, -1, -1, -1, -1, -1, 18, 19
1, 17, 0, 0, 5, 3, 18, 19, 3, 3,
4, 10, 10, 7, 8, 9, 10, 18, 9, 3,
17, 18, 20, 20, 18, 19, 9, 3, 13, 5,
41, 42, 33, 17, 19, 36, 6, 19, 13, 13,
19, 10, 14, 44, 17, 46, 14, 48, 0, 50,
17, 69, 74, 33, 44, 36, 57, 65, 3, -1,
76, -1, -1, -1, 80, -1, -1, 68, 13, -1,
-1, 3, -1, 74, -1, -1, 21, 22, 23, 24,
25, 26, 27, 28, 3, 30, 31, 32, 33, 21,
22, 23, 24, 25, 26, 27, 28, -1, 30, 31,
32, 33, 21, 22, 23, 24, 25, 26, 27, 28,
-1, 30, 31, 32
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/share/bison/bison.simple"
@@ -1017,8 +1016,8 @@ yyreduce:
switch (yyn) {
case 4:
#line 114 "xParser.yxx"
case 5:
#line 115 "xParser.yxx"
{
yyval.u.node = current_node;
XFileTemplate *templ = new XFileTemplate(x_file, yyvsp[-2].str, yyvsp[0].guid);
@@ -1026,28 +1025,28 @@ case 4:
current_node = templ;
}
break;
case 5:
#line 121 "xParser.yxx"
case 6:
#line 122 "xParser.yxx"
{
yyval.u.node = current_node;
current_node = yyvsp[-2].u.node;
}
break;
case 10:
#line 139 "xParser.yxx"
case 11:
#line 140 "xParser.yxx"
{
DCAST(XFileTemplate, current_node)->set_open(true);
}
break;
case 17:
#line 158 "xParser.yxx"
case 18:
#line 159 "xParser.yxx"
{
current_data_def = new XFileDataDef(x_file, yyvsp[-1].str, yyvsp[-2].u.primitive_type);
current_node->add_child(current_data_def);
}
break;
case 19:
#line 170 "xParser.yxx"
case 20:
#line 171 "xParser.yxx"
{
XFileTemplate *xtemplate = x_file->find_template(yyvsp[-2].str);
if (xtemplate == (XFileTemplate *)NULL) {
@@ -1058,81 +1057,81 @@ case 19:
}
}
break;
case 20:
#line 183 "xParser.yxx"
case 21:
#line 184 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_word;
}
break;
case 21:
#line 187 "xParser.yxx"
case 22:
#line 188 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_dword;
}
break;
case 22:
#line 191 "xParser.yxx"
case 23:
#line 192 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_float;
}
break;
case 23:
#line 195 "xParser.yxx"
case 24:
#line 196 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_double;
}
break;
case 24:
#line 199 "xParser.yxx"
case 25:
#line 200 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_char;
}
break;
case 25:
#line 203 "xParser.yxx"
case 26:
#line 204 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_uchar;
}
break;
case 26:
#line 207 "xParser.yxx"
case 27:
#line 208 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_sword;
}
break;
case 27:
#line 211 "xParser.yxx"
case 28:
#line 212 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_sdword;
}
break;
case 28:
#line 215 "xParser.yxx"
case 29:
#line 216 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_string;
}
break;
case 29:
#line 219 "xParser.yxx"
case 30:
#line 220 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_unicode;
}
break;
case 30:
#line 223 "xParser.yxx"
case 31:
#line 224 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_cstring;
}
break;
case 31:
#line 230 "xParser.yxx"
case 32:
#line 231 "xParser.yxx"
{
current_data_def = new XFileDataDef(x_file, yyvsp[0].str, yyvsp[-1].u.primitive_type);
current_node->add_child(current_data_def);
}
break;
case 32:
#line 235 "xParser.yxx"
case 33:
#line 236 "xParser.yxx"
{
XFileTemplate *xtemplate = x_file->find_template(yyvsp[-1].str);
if (xtemplate == (XFileTemplate *)NULL) {
@@ -1143,14 +1142,14 @@ case 32:
}
}
break;
case 36:
#line 257 "xParser.yxx"
case 37:
#line 258 "xParser.yxx"
{
current_data_def->add_array_def(XFileArrayDef(yyvsp[0].u.number));
}
break;
case 37:
#line 261 "xParser.yxx"
case 38:
#line 262 "xParser.yxx"
{
XFileNode *data_def = current_node->find_child(yyvsp[0].str);
if (data_def == (XFileNode *)NULL) {
@@ -1158,20 +1157,20 @@ case 37:
} else {
current_data_def->add_array_def(XFileArrayDef(DCAST(XFileDataDef, data_def)));
}
}
break;
case 38:
#line 273 "xParser.yxx"
{
}
break;
case 39:
#line 276 "xParser.yxx"
#line 274 "xParser.yxx"
{
}
break;
case 40:
#line 282 "xParser.yxx"
#line 277 "xParser.yxx"
{
}
break;
case 41:
#line 283 "xParser.yxx"
{
XFileTemplate *xtemplate = x_file->find_template(yyvsp[0].str);
if (xtemplate == (XFileTemplate *)NULL) {
@@ -1181,8 +1180,8 @@ case 40:
}
}
break;
case 41:
#line 291 "xParser.yxx"
case 42:
#line 292 "xParser.yxx"
{
XFileTemplate *xtemplate = x_file->find_template(yyvsp[0].guid);
if (xtemplate == (XFileTemplate *)NULL) {
@@ -1196,20 +1195,20 @@ case 41:
}
}
break;
case 43:
#line 311 "xParser.yxx"
case 44:
#line 312 "xParser.yxx"
{
yyval.str = string();
}
break;
case 46:
#line 323 "xParser.yxx"
case 47:
#line 324 "xParser.yxx"
{
yyval.guid = WindowsGuid();
}
break;
case 49:
#line 335 "xParser.yxx"
case 50:
#line 336 "xParser.yxx"
{
XFileTemplate *xtemplate = x_file->find_template(yyvsp[-2].str);
yyval.u.node = current_node;
@@ -1224,8 +1223,8 @@ case 49:
}
}
break;
case 50:
#line 349 "xParser.yxx"
case 51:
#line 350 "xParser.yxx"
{
XFileDataNodeTemplate *current_template =
DCAST(XFileDataNodeTemplate, current_node);
@@ -1235,50 +1234,50 @@ case 50:
current_node = yyvsp[-3].u.node;
}
break;
case 53:
#line 366 "xParser.yxx"
case 54:
#line 367 "xParser.yxx"
{
// nested references should be added as children too.
current_node->add_child(yyvsp[-1].u.node);
}
break;
case 54:
#line 371 "xParser.yxx"
case 55:
#line 372 "xParser.yxx"
{
// nested objects are just quietly added as children.
}
break;
case 55:
#line 375 "xParser.yxx"
case 56:
#line 376 "xParser.yxx"
{
XFileDataNodeTemplate *current_template =
DCAST(XFileDataNodeTemplate, current_node);
current_template->add_parse_int(yyvsp[0].int_list);
}
break;
case 56:
#line 381 "xParser.yxx"
case 57:
#line 382 "xParser.yxx"
{
XFileDataNodeTemplate *current_template =
DCAST(XFileDataNodeTemplate, current_node);
current_template->add_parse_double(yyvsp[0].double_list);
}
break;
case 57:
#line 387 "xParser.yxx"
case 58:
#line 388 "xParser.yxx"
{
XFileDataNodeTemplate *current_template =
DCAST(XFileDataNodeTemplate, current_node);
current_template->add_parse_string(yyvsp[-1].str);
}
break;
case 58:
#line 393 "xParser.yxx"
case 59:
#line 394 "xParser.yxx"
{
}
break;
case 64:
#line 416 "xParser.yxx"
case 65:
#line 417 "xParser.yxx"
{
XFileDataNodeTemplate *data_object = x_file->find_data_object(yyvsp[0].str);
if (data_object == (XFileDataObject *)NULL) {
@@ -1288,8 +1287,8 @@ case 64:
yyval.u.node = new XFileDataNodeReference(data_object);
}
break;
case 65:
#line 425 "xParser.yxx"
case 66:
#line 426 "xParser.yxx"
{
XFileDataNodeTemplate *data_object = x_file->find_data_object(yyvsp[0].guid);
if (data_object == (XFileDataObject *)NULL) {
@@ -1537,4 +1536,4 @@ yyreturn:
#endif
return yyresult;
}
#line 442 "xParser.yxx"
#line 443 "xParser.yxx"
+1
View File
@@ -107,6 +107,7 @@ xfile:
empty
| xfile template
| xfile object
| xfile TOKEN_CBRACE /* the 3dsMax converter writes an extra one. */
;
template: