prebuild-bison

This commit is contained in:
David Rose 2004-10-05 06:14:58 +00:00
parent b020b2047a
commit accceecf58
2 changed files with 184 additions and 109 deletions

View File

@ -1342,7 +1342,7 @@ YY_RULE_SETUP
// An integer as part of a semicolon-delimited list. // An integer as part of a semicolon-delimited list.
accept(); accept();
xyylval.int_list = parse_int_list(xyytext, ";"); xyylval.int_list = parse_int_list(xyytext, ";");
xyylval.u.separator_token = TOKEN_SEMICOLON; xyylval.u.separator = ';';
return TOKEN_INTEGER_LIST; return TOKEN_INTEGER_LIST;
} }
@ -1354,7 +1354,7 @@ YY_RULE_SETUP
// A floating-point number as part of a semicolon-delimited list. // A floating-point number as part of a semicolon-delimited list.
accept(); accept();
xyylval.double_list = parse_double_list(xyytext, ";"); xyylval.double_list = parse_double_list(xyytext, ";");
xyylval.u.separator_token = TOKEN_SEMICOLON; xyylval.u.separator = ';';
return TOKEN_REALNUM_LIST; return TOKEN_REALNUM_LIST;
} }
@ -1366,7 +1366,7 @@ YY_RULE_SETUP
// An integer as part of a semicolon-delimited list. // An integer as part of a semicolon-delimited list.
accept(); accept();
xyylval.int_list = parse_int_list(xyytext, ","); xyylval.int_list = parse_int_list(xyytext, ",");
xyylval.u.separator_token = TOKEN_COMMA; xyylval.u.separator = ',';
return TOKEN_INTEGER_LIST; return TOKEN_INTEGER_LIST;
} }
@ -1378,7 +1378,7 @@ YY_RULE_SETUP
// A floating-point number as part of a semicolon-delimited list. // A floating-point number as part of a semicolon-delimited list.
accept(); accept();
xyylval.double_list = parse_double_list(xyytext, ","); xyylval.double_list = parse_double_list(xyytext, ",");
xyylval.u.separator_token = TOKEN_COMMA; xyylval.u.separator = ',';
return TOKEN_REALNUM_LIST; return TOKEN_REALNUM_LIST;
} }

View File

@ -135,8 +135,8 @@ static const short yyprhs[] =
56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74,
76, 78, 81, 84, 86, 89, 93, 95, 97, 99, 76, 78, 81, 84, 86, 89, 93, 95, 97, 99,
102, 104, 107, 109, 111, 113, 115, 117, 119, 123, 102, 104, 107, 109, 111, 113, 115, 117, 119, 123,
124, 132, 134, 137, 139, 141, 143, 145, 148, 150, 124, 132, 134, 137, 141, 143, 145, 147, 150, 152,
152, 154, 156, 158, 160, 165 154, 156, 158, 160, 162, 164, 167
}; };
static const short yyrhs[] = static const short yyrhs[] =
{ {
@ -150,13 +150,13 @@ static const short yyrhs[] =
28, 0, 30, 0, 31, 0, 32, 0, 45, 52, 28, 0, 30, 0, 31, 0, 32, 0, 45, 52,
0, 52, 52, 0, 48, 0, 47, 48, 0, 13, 0, 52, 52, 0, 48, 0, 47, 48, 0, 13,
49, 14, 0, 5, 0, 52, 0, 51, 0, 50, 49, 14, 0, 5, 0, 52, 0, 51, 0, 50,
51, 0, 52, 0, 52, 6, 0, 3, 0, 66, 51, 0, 52, 0, 52, 54, 0, 3, 0, 66,
0, 52, 0, 6, 0, 66, 0, 54, 0, 17, 0, 52, 0, 6, 0, 66, 0, 54, 0, 17,
17, 17, 0, 0, 52, 53, 9, 58, 55, 59, 17, 17, 0, 0, 52, 53, 9, 58, 55, 59,
10, 0, 60, 0, 59, 60, 0, 65, 0, 57, 10, 0, 60, 0, 59, 60, 0, 9, 65, 10,
0, 61, 0, 62, 0, 63, 64, 0, 64, 0, 0, 57, 0, 61, 0, 62, 0, 63, 64, 0,
7, 0, 8, 0, 4, 0, 19, 0, 18, 0, 64, 0, 7, 0, 8, 0, 4, 0, 19, 0,
9, 52, 55, 10, 0, 0 18, 0, 52, 0, 52, 54, 0, 0
}; };
#endif #endif
@ -165,13 +165,13 @@ static const short yyrhs[] =
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const short yyrline[] = static const short yyrline[] =
{ {
0, 104, 106, 107, 110, 110, 125, 127, 130, 132, 0, 106, 108, 109, 112, 112, 127, 129, 132, 134,
135, 140, 143, 145, 148, 150, 151, 154, 162, 166, 137, 142, 145, 147, 150, 152, 153, 156, 164, 168,
179, 184, 188, 192, 196, 200, 204, 208, 212, 216, 181, 186, 190, 194, 198, 202, 206, 210, 214, 218,
220, 226, 232, 244, 246, 249, 253, 258, 269, 273, 222, 228, 234, 246, 248, 251, 255, 260, 271, 275,
278, 288, 303, 307, 312, 315, 319, 324, 327, 331, 280, 290, 305, 309, 314, 317, 321, 326, 329, 333,
331, 353, 355, 358, 362, 365, 368, 371, 374, 379, 333, 361, 363, 366, 383, 391, 397, 403, 409, 417,
383, 387, 391, 393, 396, 400 421, 425, 429, 434, 440, 450, 466
}; };
#endif #endif
@ -210,7 +210,7 @@ static const short yyr1[] =
45, 46, 46, 47, 47, 48, 49, 49, 50, 50, 45, 46, 46, 47, 47, 48, 49, 49, 50, 50,
51, 51, 52, 53, 53, 54, 55, 55, 56, 58, 51, 51, 52, 53, 53, 54, 55, 55, 56, 58,
57, 59, 59, 60, 60, 60, 60, 60, 60, 61, 57, 59, 59, 60, 60, 60, 60, 60, 60, 61,
62, 63, 64, 64, 65, 66 62, 63, 64, 64, 65, 65, 66
}; };
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@ -221,8 +221,8 @@ static const short yyr2[] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 2, 1, 2, 3, 1, 1, 1, 2, 1, 2, 2, 1, 2, 3, 1, 1, 1, 2,
1, 2, 1, 1, 1, 1, 1, 1, 3, 0, 1, 2, 1, 1, 1, 1, 1, 1, 3, 0,
7, 1, 2, 1, 1, 1, 1, 2, 1, 1, 7, 1, 2, 3, 1, 1, 1, 2, 1, 1,
1, 1, 1, 1, 4, 0 1, 1, 1, 1, 1, 2, 0
}; };
/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
@ -230,82 +230,82 @@ static const short yyr2[] =
error. */ error. */
static const short yydefact[] = static const short yydefact[] =
{ {
65, 0, 1, 42, 0, 2, 65, 3, 0, 44, 66, 0, 1, 42, 0, 2, 66, 3, 0, 44,
0, 43, 0, 49, 45, 4, 65, 65, 47, 0, 0, 43, 0, 49, 45, 4, 66, 66, 47, 0,
46, 20, 21, 22, 23, 24, 25, 26, 27, 28, 46, 20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 0, 0, 0, 7, 12, 14, 15, 16, 29, 30, 0, 0, 0, 7, 12, 14, 15, 16,
65, 65, 8, 61, 59, 60, 0, 63, 62, 54, 66, 66, 8, 61, 59, 60, 0, 63, 62, 54,
0, 51, 55, 56, 0, 58, 53, 0, 0, 0, 0, 51, 55, 56, 0, 58, 0, 0, 0, 5,
5, 0, 13, 0, 0, 65, 50, 52, 57, 31, 0, 13, 0, 0, 64, 0, 50, 52, 57, 31,
0, 0, 33, 32, 0, 0, 11, 38, 40, 10, 0, 0, 33, 32, 0, 0, 11, 38, 40, 10,
17, 19, 0, 36, 0, 37, 18, 34, 0, 6, 17, 19, 65, 53, 36, 0, 37, 18, 34, 0,
39, 41, 64, 35, 48, 0, 0 6, 39, 41, 35, 48, 0, 0
}; };
static const short yydefgoto[] = static const short yydefgoto[] =
{ {
1, 5, 17, 33, 34, 75, 35, 36, 37, 38, 1, 5, 17, 33, 34, 75, 35, 36, 37, 38,
39, 40, 58, 71, 72, 84, 76, 77, 6, 10, 39, 40, 57, 71, 72, 85, 76, 77, 6, 10,
18, 19, 79, 49, 16, 50, 51, 52, 53, 54, 15, 19, 79, 49, 16, 50, 51, 52, 53, 54,
55, 56, 11 55, 65, 11
}; };
static const short yypact[] = static const short yypact[] =
{ {
-32768, 1,-32768,-32768, 6,-32768, 6,-32768, 9,-32768, -32768, 3,-32768,-32768, 6,-32768, 6,-32768, 18,-32768,
18,-32768, 34,-32768,-32768,-32768, 34, 70,-32768, 26, 23,-32768, 34,-32768,-32768,-32768, 34, 65,-32768, 26,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768, 87, 22, 28, 56,-32768,-32768,-32768,-32768, -32768,-32768, 78, 31, 30, 52,-32768,-32768,-32768,-32768,
6, 6,-32768,-32768,-32768,-32768, 6,-32768,-32768,-32768, 6, 6,-32768,-32768,-32768,-32768, 6,-32768,-32768,-32768,
7,-32768,-32768,-32768, 20,-32768,-32768, 6, 30, 6, 7,-32768,-32768,-32768, -11,-32768, 6, 33, 6,-32768,
-32768, 5,-32768, 27, 29, 34,-32768,-32768,-32768,-32768, 2,-32768, 28, 29, 34, 40,-32768,-32768,-32768,-32768,
2, -7,-32768,-32768, 32, 33, 6,-32768, 44,-32768, 19, -1,-32768,-32768, 36, 37, 6,-32768, 34,-32768,
-32768,-32768, 41,-32768, 38,-32768,-32768,-32768, 37,-32768, -32768,-32768,-32768,-32768,-32768, 43,-32768,-32768,-32768, 41,
-32768,-32768,-32768,-32768,-32768, 58,-32768 -32768,-32768,-32768,-32768,-32768, 59,-32768
}; };
static const short yypgoto[] = static const short yypgoto[] =
{ {
-32768,-32768,-32768,-32768,-32768,-32768,-32768, 21,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768, 25,-32768,-32768,
-32768, 31,-32768,-32768, -11,-32768,-32768, -15, -4, -17, -32768, 32,-32768,-32768, -10,-32768,-32768, -14, -4, -2,
50, -1,-32768, 64,-32768,-32768, 17,-32768,-32768,-32768, -15,-32768,-32768, 66,-32768,-32768, 20,-32768,-32768,-32768,
16,-32768, 3 15,-32768, 4
}; };
#define YYLAST 119 #define YYLAST 110
static const short yytable[] = static const short yytable[] =
{ {
8, 95, 9, 2, 3, 3, 70, 83, 3, 3, 8, 18, 9, 95, 2, 3, 3, 47, 48, 3,
3, 43, 86, 41, 44, 45, 46, 66, 12, 20, 3, 43, 70, 41, 44, 45, 46, 66, 87, 74,
42, 4, 74, 63, 64, 47, 48, 13, 59, 3, 20, 42, 3, 4, 84, 47, 48, 12, 58, 3,
43, 41, 60, 44, 45, 46, 9, 9, 47, 48, 43, 41, 13, 44, 45, 46, 9, 9, 62, 63,
14, 61, 65, 70, 47, 48, 80, 89, 81, 88, 14, 59, 64, 60, 47, 48, 70, 80, 81, 82,
91, 92, 93, 69, 94, 73, 62, 78, 96, 3, 83, 90, 69, 89, 73, 3, 78, 93, 94, 96,
87, 90, 15, 57, 82, 7, 85, 67, 20, -9, 61, 88, 91, 92, 56, -9, 86, 7, 3, 68,
68, 0, 78, 3, 0, 0, 0, 21, 22, 23, 67, 0, 78, 21, 22, 23, 24, 25, 26, 27,
24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 28, 3, 29, 30, 31, 32, 21, 22, 23, 24,
3, 21, 22, 23, 24, 25, 26, 27, 28, 0, 25, 26, 27, 28, 0, 29, 30, 31, 32, 21,
29, 30, 31, 32, 0, 0, 0, 0, 21, 22, 22, 23, 24, 25, 26, 27, 28, 0, 29, 30,
23, 24, 25, 26, 27, 28, 0, 29, 30, 31 31
}; };
static const short yycheck[] = static const short yycheck[] =
{ {
4, 0, 6, 0, 3, 3, 13, 5, 3, 3, 4, 16, 6, 0, 0, 3, 3, 18, 19, 3,
3, 4, 19, 17, 7, 8, 9, 10, 9, 16, 3, 4, 13, 17, 7, 8, 9, 10, 19, 17,
17, 20, 17, 40, 41, 18, 19, 9, 32, 3, 16, 17, 3, 20, 5, 18, 19, 9, 32, 3,
4, 35, 10, 7, 8, 9, 40, 41, 18, 19, 4, 35, 9, 7, 8, 9, 40, 41, 40, 41,
6, 13, 46, 13, 18, 19, 19, 14, 19, 17, 6, 10, 46, 13, 18, 19, 13, 19, 19, 64,
6, 10, 14, 57, 17, 59, 35, 61, 0, 3, 10, 14, 56, 17, 58, 3, 60, 14, 17, 0,
71, 76, 12, 32, 65, 1, 70, 50, 65, 13, 35, 71, 76, 78, 32, 13, 70, 1, 3, 54,
54, -1, 76, 3, -1, -1, -1, 21, 22, 23, 50, -1, 76, 21, 22, 23, 24, 25, 26, 27,
24, 25, 26, 27, 28, -1, 30, 31, 32, 33, 28, 3, 30, 31, 32, 33, 21, 22, 23, 24,
3, 21, 22, 23, 24, 25, 26, 27, 28, -1, 25, 26, 27, 28, -1, 30, 31, 32, 33, 21,
30, 31, 32, 33, -1, -1, -1, -1, 21, 22, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31,
23, 24, 25, 26, 27, 28, -1, 30, 31, 32 32
}; };
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/share/bison/bison.simple" #line 3 "/usr/share/bison/bison.simple"
@ -1015,139 +1015,139 @@ yyreduce:
switch (yyn) { switch (yyn) {
case 4: case 4:
#line 112 "xParser.yxx" #line 114 "xParser.yxx"
{ {
yyval.u.node = current_node; yyval.u.node = current_node;
XFileTemplate *templ = new XFileTemplate(yyvsp[-2].str, yyvsp[0].guid); XFileTemplate *templ = new XFileTemplate(x_file, yyvsp[-2].str, yyvsp[0].guid);
current_node->add_child(templ); current_node->add_child(templ);
current_node = templ; current_node = templ;
} }
break; break;
case 5: case 5:
#line 119 "xParser.yxx" #line 121 "xParser.yxx"
{ {
yyval.u.node = current_node; yyval.u.node = current_node;
current_node = yyvsp[-2].u.node; current_node = yyvsp[-2].u.node;
} }
break; break;
case 10: case 10:
#line 137 "xParser.yxx" #line 139 "xParser.yxx"
{ {
DCAST(XFileTemplate, current_node)->set_open(true); DCAST(XFileTemplate, current_node)->set_open(true);
} }
break; break;
case 17: case 17:
#line 156 "xParser.yxx" #line 158 "xParser.yxx"
{ {
current_data_def = new XFileDataDef(yyvsp[-2].u.primitive_type, yyvsp[-1].str); current_data_def = new XFileDataDef(x_file, yyvsp[-1].str, yyvsp[-2].u.primitive_type);
current_node->add_child(current_data_def); current_node->add_child(current_data_def);
} }
break; break;
case 19: case 19:
#line 168 "xParser.yxx" #line 170 "xParser.yxx"
{ {
XFileTemplate *xtemplate = x_file->find_template(yyvsp[-2].str); XFileTemplate *xtemplate = x_file->find_template(yyvsp[-2].str);
if (xtemplate == (XFileTemplate *)NULL) { if (xtemplate == (XFileTemplate *)NULL) {
yyerror("Unknown template: " + yyvsp[-2].str); yyerror("Unknown template: " + yyvsp[-2].str);
} else { } else {
current_data_def = new XFileDataDef(XFileDataDef::T_template, yyvsp[-1].str, xtemplate); current_data_def = new XFileDataDef(x_file, yyvsp[-1].str, XFileDataDef::T_template, xtemplate);
current_node->add_child(current_data_def); current_node->add_child(current_data_def);
} }
} }
break; break;
case 20: case 20:
#line 181 "xParser.yxx" #line 183 "xParser.yxx"
{ {
yyval.u.primitive_type = XFileDataDef::T_word; yyval.u.primitive_type = XFileDataDef::T_word;
} }
break; break;
case 21: case 21:
#line 185 "xParser.yxx" #line 187 "xParser.yxx"
{ {
yyval.u.primitive_type = XFileDataDef::T_dword; yyval.u.primitive_type = XFileDataDef::T_dword;
} }
break; break;
case 22: case 22:
#line 189 "xParser.yxx" #line 191 "xParser.yxx"
{ {
yyval.u.primitive_type = XFileDataDef::T_float; yyval.u.primitive_type = XFileDataDef::T_float;
} }
break; break;
case 23: case 23:
#line 193 "xParser.yxx" #line 195 "xParser.yxx"
{ {
yyval.u.primitive_type = XFileDataDef::T_double; yyval.u.primitive_type = XFileDataDef::T_double;
} }
break; break;
case 24: case 24:
#line 197 "xParser.yxx" #line 199 "xParser.yxx"
{ {
yyval.u.primitive_type = XFileDataDef::T_char; yyval.u.primitive_type = XFileDataDef::T_char;
} }
break; break;
case 25: case 25:
#line 201 "xParser.yxx" #line 203 "xParser.yxx"
{ {
yyval.u.primitive_type = XFileDataDef::T_uchar; yyval.u.primitive_type = XFileDataDef::T_uchar;
} }
break; break;
case 26: case 26:
#line 205 "xParser.yxx" #line 207 "xParser.yxx"
{ {
yyval.u.primitive_type = XFileDataDef::T_sword; yyval.u.primitive_type = XFileDataDef::T_sword;
} }
break; break;
case 27: case 27:
#line 209 "xParser.yxx" #line 211 "xParser.yxx"
{ {
yyval.u.primitive_type = XFileDataDef::T_sdword; yyval.u.primitive_type = XFileDataDef::T_sdword;
} }
break; break;
case 28: case 28:
#line 213 "xParser.yxx" #line 215 "xParser.yxx"
{ {
yyval.u.primitive_type = XFileDataDef::T_string; yyval.u.primitive_type = XFileDataDef::T_string;
} }
break; break;
case 29: case 29:
#line 217 "xParser.yxx" #line 219 "xParser.yxx"
{ {
yyval.u.primitive_type = XFileDataDef::T_unicode; yyval.u.primitive_type = XFileDataDef::T_unicode;
} }
break; break;
case 30: case 30:
#line 221 "xParser.yxx" #line 223 "xParser.yxx"
{ {
yyval.u.primitive_type = XFileDataDef::T_cstring; yyval.u.primitive_type = XFileDataDef::T_cstring;
} }
break; break;
case 31: case 31:
#line 228 "xParser.yxx" #line 230 "xParser.yxx"
{ {
current_data_def = new XFileDataDef(yyvsp[-1].u.primitive_type, yyvsp[0].str); current_data_def = new XFileDataDef(x_file, yyvsp[0].str, yyvsp[-1].u.primitive_type);
current_node->add_child(current_data_def); current_node->add_child(current_data_def);
} }
break; break;
case 32: case 32:
#line 233 "xParser.yxx" #line 235 "xParser.yxx"
{ {
XFileTemplate *xtemplate = x_file->find_template(yyvsp[-1].str); XFileTemplate *xtemplate = x_file->find_template(yyvsp[-1].str);
if (xtemplate == (XFileTemplate *)NULL) { if (xtemplate == (XFileTemplate *)NULL) {
yyerror("Unknown template: " + yyvsp[-1].str); yyerror("Unknown template: " + yyvsp[-1].str);
} else { } else {
current_data_def = new XFileDataDef(XFileDataDef::T_template, yyvsp[0].str, xtemplate); current_data_def = new XFileDataDef(x_file, yyvsp[0].str, XFileDataDef::T_template, xtemplate);
current_node->add_child(current_data_def); current_node->add_child(current_data_def);
} }
} }
break; break;
case 36: case 36:
#line 255 "xParser.yxx" #line 257 "xParser.yxx"
{ {
current_data_def->add_array_def(XFileArrayDef(yyvsp[0].u.number)); current_data_def->add_array_def(XFileArrayDef(yyvsp[0].u.number));
} }
break; break;
case 37: case 37:
#line 259 "xParser.yxx" #line 261 "xParser.yxx"
{ {
XFileNode *data_def = current_node->find_child(yyvsp[0].str); XFileNode *data_def = current_node->find_child(yyvsp[0].str);
if (data_def == (XFileNode *)NULL) { if (data_def == (XFileNode *)NULL) {
@ -1158,17 +1158,17 @@ case 37:
} }
break; break;
case 38: case 38:
#line 271 "xParser.yxx" #line 273 "xParser.yxx"
{ {
} }
break; break;
case 39: case 39:
#line 274 "xParser.yxx" #line 276 "xParser.yxx"
{ {
} }
break; break;
case 40: case 40:
#line 280 "xParser.yxx" #line 282 "xParser.yxx"
{ {
XFileTemplate *xtemplate = x_file->find_template(yyvsp[0].str); XFileTemplate *xtemplate = x_file->find_template(yyvsp[0].str);
if (xtemplate == (XFileTemplate *)NULL) { if (xtemplate == (XFileTemplate *)NULL) {
@ -1179,7 +1179,7 @@ case 40:
} }
break; break;
case 41: case 41:
#line 289 "xParser.yxx" #line 291 "xParser.yxx"
{ {
XFileTemplate *xtemplate = x_file->find_template(yyvsp[0].guid); XFileTemplate *xtemplate = x_file->find_template(yyvsp[0].guid);
if (xtemplate == (XFileTemplate *)NULL) { if (xtemplate == (XFileTemplate *)NULL) {
@ -1194,19 +1194,19 @@ case 41:
} }
break; break;
case 43: case 43:
#line 309 "xParser.yxx" #line 311 "xParser.yxx"
{ {
yyval.str = string(); yyval.str = string();
} }
break; break;
case 46: case 46:
#line 321 "xParser.yxx" #line 323 "xParser.yxx"
{ {
yyval.guid = WindowsGuid(); yyval.guid = WindowsGuid();
} }
break; break;
case 49: case 49:
#line 333 "xParser.yxx" #line 335 "xParser.yxx"
{ {
XFileTemplate *xtemplate = x_file->find_template(yyvsp[-2].str); XFileTemplate *xtemplate = x_file->find_template(yyvsp[-2].str);
yyval.u.node = current_node; yyval.u.node = current_node;
@ -1215,47 +1215,122 @@ case 49:
yyerror("Unknown template: " + yyvsp[-2].str); yyerror("Unknown template: " + yyvsp[-2].str);
} else { } else {
XFileDataObjectTemplate *templ = XFileDataObjectTemplate *templ =
new XFileDataObjectTemplate(xtemplate, yyvsp[-1].str); new XFileDataObjectTemplate(x_file, yyvsp[-1].str, xtemplate);
current_node->add_child(templ); current_node->add_child(templ);
current_node = templ; current_node = templ;
} }
} }
break; break;
case 50: case 50:
#line 347 "xParser.yxx" #line 349 "xParser.yxx"
{ {
XFileDataObjectTemplate *current_template =
DCAST(XFileDataObjectTemplate, current_node);
if (!current_template->finalize_parse_data()) {
yyerror("Invalid data for object.");
}
yyval.u.node = current_node; yyval.u.node = current_node;
current_node = yyvsp[-3].u.node; current_node = yyvsp[-3].u.node;
} }
break; break;
case 53: case 53:
#line 360 "xParser.yxx" #line 368 "xParser.yxx"
{ {
if (yyvsp[-1].u.node != (XFileNode *)NULL) {
if (!yyvsp[-1].u.node->is_of_type(XFileDataObjectTemplate::get_class_type())) {
// Actually, maybe you can--the docs aren't clear about this.
// But I don't think there's any real reason to.
yyerror("Can't reference primitive data type.");
} else {
XFileDataObjectTemplate *object =
DCAST(XFileDataObjectTemplate, yyvsp[-1].u.node);
XFileDataObjectTemplate *current_template =
DCAST(XFileDataObjectTemplate, current_node);
current_template->add_parse_object(object, true);
}
}
} }
break; break;
case 54: case 54:
#line 363 "xParser.yxx" #line 384 "xParser.yxx"
{ {
XFileDataObjectTemplate *object =
DCAST(XFileDataObjectTemplate, yyvsp[0].u.node);
XFileDataObjectTemplate *current_template =
DCAST(XFileDataObjectTemplate, current_node);
current_template->add_parse_object(object, false);
} }
break; break;
case 55: case 55:
#line 366 "xParser.yxx" #line 392 "xParser.yxx"
{ {
XFileDataObjectTemplate *current_template =
DCAST(XFileDataObjectTemplate, current_node);
current_template->add_parse_int(yyvsp[0].int_list, yyvsp[0].u.separator);
} }
break; break;
case 56: case 56:
#line 369 "xParser.yxx" #line 398 "xParser.yxx"
{ {
XFileDataObjectTemplate *current_template =
DCAST(XFileDataObjectTemplate, current_node);
current_template->add_parse_double(yyvsp[0].double_list, yyvsp[0].u.separator);
} }
break; break;
case 57: case 57:
#line 372 "xParser.yxx" #line 404 "xParser.yxx"
{ {
XFileDataObjectTemplate *current_template =
DCAST(XFileDataObjectTemplate, current_node);
current_template->add_parse_string(yyvsp[-1].str, yyvsp[0].u.separator);
} }
break; break;
case 58: case 58:
#line 375 "xParser.yxx" #line 410 "xParser.yxx"
{ {
XFileDataObjectTemplate *current_template =
DCAST(XFileDataObjectTemplate, current_node);
current_template->add_parse_separator(yyvsp[0].u.separator);
}
break;
case 62:
#line 431 "xParser.yxx"
{
yyval.u.separator = ';';
}
break;
case 63:
#line 435 "xParser.yxx"
{
yyval.u.separator = ',';
}
break;
case 64:
#line 442 "xParser.yxx"
{
XFileDataObject *data_object = x_file->find_data_object(yyvsp[0].str);
if (data_object == (XFileDataObject *)NULL) {
yyerror("Unknown data_object: " + yyvsp[0].str);
}
yyval.u.node = data_object;
}
break;
case 65:
#line 451 "xParser.yxx"
{
XFileDataObject *data_object = x_file->find_data_object(yyvsp[0].guid);
if (data_object == (XFileDataObject *)NULL) {
yyerror("Unknown data_object: " + yyvsp[-1].str);
} else {
if (data_object->get_name() != yyvsp[-1].str) {
xyywarning("GUID identifies data_object " + data_object->get_name() +
", not " + yyvsp[-1].str);
}
}
yyval.u.node = data_object;
} }
break; break;
} }
@ -1491,4 +1566,4 @@ yyreturn:
#endif #endif
return yyresult; return yyresult;
} }
#line 402 "xParser.yxx" #line 468 "xParser.yxx"