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

View File

@ -135,8 +135,8 @@ static const short yyprhs[] =
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, 139, 141, 143, 145, 148, 150,
152, 154, 156, 158, 160, 165
124, 132, 134, 137, 141, 143, 145, 147, 150, 152,
154, 156, 158, 160, 162, 164, 167
};
static const short yyrhs[] =
{
@ -150,13 +150,13 @@ static const short yyrhs[] =
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, 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,
17, 17, 0, 0, 52, 53, 9, 58, 55, 59,
10, 0, 60, 0, 59, 60, 0, 65, 0, 57,
0, 61, 0, 62, 0, 63, 64, 0, 64, 0,
7, 0, 8, 0, 4, 0, 19, 0, 18, 0,
9, 52, 55, 10, 0, 0
10, 0, 60, 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
@ -165,13 +165,13 @@ static const short yyrhs[] =
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const short yyrline[] =
{
0, 104, 106, 107, 110, 110, 125, 127, 130, 132,
135, 140, 143, 145, 148, 150, 151, 154, 162, 166,
179, 184, 188, 192, 196, 200, 204, 208, 212, 216,
220, 226, 232, 244, 246, 249, 253, 258, 269, 273,
278, 288, 303, 307, 312, 315, 319, 324, 327, 331,
331, 353, 355, 358, 362, 365, 368, 371, 374, 379,
383, 387, 391, 393, 396, 400
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, 361, 363, 366, 383, 391, 397, 403, 409, 417,
421, 425, 429, 434, 440, 450, 466
};
#endif
@ -210,7 +210,7 @@ static const short yyr1[] =
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, 66
62, 63, 64, 64, 65, 65, 66
};
/* 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, 2, 2, 1, 2, 3, 1, 1, 1, 2,
1, 2, 1, 1, 1, 1, 1, 1, 3, 0,
7, 1, 2, 1, 1, 1, 1, 2, 1, 1,
1, 1, 1, 1, 4, 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
@ -230,82 +230,82 @@ static const short yyr2[] =
error. */
static const short yydefact[] =
{
65, 0, 1, 42, 0, 2, 65, 3, 0, 44,
0, 43, 0, 49, 45, 4, 65, 65, 47, 0,
66, 0, 1, 42, 0, 2, 66, 3, 0, 44,
0, 43, 0, 49, 45, 4, 66, 66, 47, 0,
46, 20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 0, 0, 0, 7, 12, 14, 15, 16,
65, 65, 8, 61, 59, 60, 0, 63, 62, 54,
0, 51, 55, 56, 0, 58, 53, 0, 0, 0,
5, 0, 13, 0, 0, 65, 50, 52, 57, 31,
66, 66, 8, 61, 59, 60, 0, 63, 62, 54,
0, 51, 55, 56, 0, 58, 0, 0, 0, 5,
0, 13, 0, 0, 64, 0, 50, 52, 57, 31,
0, 0, 33, 32, 0, 0, 11, 38, 40, 10,
17, 19, 0, 36, 0, 37, 18, 34, 0, 6,
39, 41, 64, 35, 48, 0, 0
17, 19, 65, 53, 36, 0, 37, 18, 34, 0,
6, 39, 41, 35, 48, 0, 0
};
static const short yydefgoto[] =
{
1, 5, 17, 33, 34, 75, 35, 36, 37, 38,
39, 40, 58, 71, 72, 84, 76, 77, 6, 10,
18, 19, 79, 49, 16, 50, 51, 52, 53, 54,
55, 56, 11
39, 40, 57, 71, 72, 85, 76, 77, 6, 10,
15, 19, 79, 49, 16, 50, 51, 52, 53, 54,
55, 65, 11
};
static const short yypact[] =
{
-32768, 1,-32768,-32768, 6,-32768, 6,-32768, 9,-32768,
18,-32768, 34,-32768,-32768,-32768, 34, 70,-32768, 26,
-32768, 3,-32768,-32768, 6,-32768, 6,-32768, 18,-32768,
23,-32768, 34,-32768,-32768,-32768, 34, 65,-32768, 26,
-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,
7,-32768,-32768,-32768, 20,-32768,-32768, 6, 30, 6,
-32768, 5,-32768, 27, 29, 34,-32768,-32768,-32768,-32768,
2, -7,-32768,-32768, 32, 33, 6,-32768, 44,-32768,
-32768,-32768, 41,-32768, 38,-32768,-32768,-32768, 37,-32768,
-32768,-32768,-32768,-32768,-32768, 58,-32768
7,-32768,-32768,-32768, -11,-32768, 6, 33, 6,-32768,
2,-32768, 28, 29, 34, 40,-32768,-32768,-32768,-32768,
19, -1,-32768,-32768, 36, 37, 6,-32768, 34,-32768,
-32768,-32768,-32768,-32768,-32768, 43,-32768,-32768,-32768, 41,
-32768,-32768,-32768,-32768,-32768, 59,-32768
};
static const short yypgoto[] =
{
-32768,-32768,-32768,-32768,-32768,-32768,-32768, 21,-32768,-32768,
-32768, 31,-32768,-32768, -11,-32768,-32768, -15, -4, -17,
50, -1,-32768, 64,-32768,-32768, 17,-32768,-32768,-32768,
16,-32768, 3
-32768,-32768,-32768,-32768,-32768,-32768,-32768, 25,-32768,-32768,
-32768, 32,-32768,-32768, -10,-32768,-32768, -14, -4, -2,
-15,-32768,-32768, 66,-32768,-32768, 20,-32768,-32768,-32768,
15,-32768, 4
};
#define YYLAST 119
#define YYLAST 110
static const short yytable[] =
{
8, 95, 9, 2, 3, 3, 70, 83, 3, 3,
3, 43, 86, 41, 44, 45, 46, 66, 12, 20,
42, 4, 74, 63, 64, 47, 48, 13, 59, 3,
43, 41, 60, 44, 45, 46, 9, 9, 47, 48,
14, 61, 65, 70, 47, 48, 80, 89, 81, 88,
91, 92, 93, 69, 94, 73, 62, 78, 96, 3,
87, 90, 15, 57, 82, 7, 85, 67, 20, -9,
68, 0, 78, 3, 0, 0, 0, 21, 22, 23,
24, 25, 26, 27, 28, 0, 29, 30, 31, 32,
3, 21, 22, 23, 24, 25, 26, 27, 28, 0,
29, 30, 31, 32, 0, 0, 0, 0, 21, 22,
23, 24, 25, 26, 27, 28, 0, 29, 30, 31
8, 18, 9, 95, 2, 3, 3, 47, 48, 3,
3, 43, 70, 41, 44, 45, 46, 66, 87, 74,
20, 42, 3, 4, 84, 47, 48, 12, 58, 3,
43, 41, 13, 44, 45, 46, 9, 9, 62, 63,
14, 59, 64, 60, 47, 48, 70, 80, 81, 82,
83, 90, 69, 89, 73, 3, 78, 93, 94, 96,
61, 88, 91, 92, 56, -9, 86, 7, 3, 68,
67, 0, 78, 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
};
static const short yycheck[] =
{
4, 0, 6, 0, 3, 3, 13, 5, 3, 3,
3, 4, 19, 17, 7, 8, 9, 10, 9, 16,
17, 20, 17, 40, 41, 18, 19, 9, 32, 3,
4, 35, 10, 7, 8, 9, 40, 41, 18, 19,
6, 13, 46, 13, 18, 19, 19, 14, 19, 17,
6, 10, 14, 57, 17, 59, 35, 61, 0, 3,
71, 76, 12, 32, 65, 1, 70, 50, 65, 13,
54, -1, 76, 3, -1, -1, -1, 21, 22, 23,
24, 25, 26, 27, 28, -1, 30, 31, 32, 33,
3, 21, 22, 23, 24, 25, 26, 27, 28, -1,
30, 31, 32, 33, -1, -1, -1, -1, 21, 22,
23, 24, 25, 26, 27, 28, -1, 30, 31, 32
4, 16, 6, 0, 0, 3, 3, 18, 19, 3,
3, 4, 13, 17, 7, 8, 9, 10, 19, 17,
16, 17, 3, 20, 5, 18, 19, 9, 32, 3,
4, 35, 9, 7, 8, 9, 40, 41, 40, 41,
6, 10, 46, 13, 18, 19, 13, 19, 19, 64,
10, 14, 56, 17, 58, 3, 60, 14, 17, 0,
35, 71, 76, 78, 32, 13, 70, 1, 3, 54,
50, -1, 76, 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"
@ -1015,139 +1015,139 @@ yyreduce:
switch (yyn) {
case 4:
#line 112 "xParser.yxx"
#line 114 "xParser.yxx"
{
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 = templ;
}
break;
case 5:
#line 119 "xParser.yxx"
#line 121 "xParser.yxx"
{
yyval.u.node = current_node;
current_node = yyvsp[-2].u.node;
}
break;
case 10:
#line 137 "xParser.yxx"
#line 139 "xParser.yxx"
{
DCAST(XFileTemplate, current_node)->set_open(true);
}
break;
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);
}
break;
case 19:
#line 168 "xParser.yxx"
#line 170 "xParser.yxx"
{
XFileTemplate *xtemplate = x_file->find_template(yyvsp[-2].str);
if (xtemplate == (XFileTemplate *)NULL) {
yyerror("Unknown template: " + yyvsp[-2].str);
} 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);
}
}
break;
case 20:
#line 181 "xParser.yxx"
#line 183 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_word;
}
break;
case 21:
#line 185 "xParser.yxx"
#line 187 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_dword;
}
break;
case 22:
#line 189 "xParser.yxx"
#line 191 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_float;
}
break;
case 23:
#line 193 "xParser.yxx"
#line 195 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_double;
}
break;
case 24:
#line 197 "xParser.yxx"
#line 199 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_char;
}
break;
case 25:
#line 201 "xParser.yxx"
#line 203 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_uchar;
}
break;
case 26:
#line 205 "xParser.yxx"
#line 207 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_sword;
}
break;
case 27:
#line 209 "xParser.yxx"
#line 211 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_sdword;
}
break;
case 28:
#line 213 "xParser.yxx"
#line 215 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_string;
}
break;
case 29:
#line 217 "xParser.yxx"
#line 219 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_unicode;
}
break;
case 30:
#line 221 "xParser.yxx"
#line 223 "xParser.yxx"
{
yyval.u.primitive_type = XFileDataDef::T_cstring;
}
break;
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);
}
break;
case 32:
#line 233 "xParser.yxx"
#line 235 "xParser.yxx"
{
XFileTemplate *xtemplate = x_file->find_template(yyvsp[-1].str);
if (xtemplate == (XFileTemplate *)NULL) {
yyerror("Unknown template: " + yyvsp[-1].str);
} 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);
}
}
break;
case 36:
#line 255 "xParser.yxx"
#line 257 "xParser.yxx"
{
current_data_def->add_array_def(XFileArrayDef(yyvsp[0].u.number));
}
break;
case 37:
#line 259 "xParser.yxx"
#line 261 "xParser.yxx"
{
XFileNode *data_def = current_node->find_child(yyvsp[0].str);
if (data_def == (XFileNode *)NULL) {
@ -1158,17 +1158,17 @@ case 37:
}
break;
case 38:
#line 271 "xParser.yxx"
#line 273 "xParser.yxx"
{
}
break;
case 39:
#line 274 "xParser.yxx"
#line 276 "xParser.yxx"
{
}
break;
case 40:
#line 280 "xParser.yxx"
#line 282 "xParser.yxx"
{
XFileTemplate *xtemplate = x_file->find_template(yyvsp[0].str);
if (xtemplate == (XFileTemplate *)NULL) {
@ -1179,7 +1179,7 @@ case 40:
}
break;
case 41:
#line 289 "xParser.yxx"
#line 291 "xParser.yxx"
{
XFileTemplate *xtemplate = x_file->find_template(yyvsp[0].guid);
if (xtemplate == (XFileTemplate *)NULL) {
@ -1194,19 +1194,19 @@ case 41:
}
break;
case 43:
#line 309 "xParser.yxx"
#line 311 "xParser.yxx"
{
yyval.str = string();
}
break;
case 46:
#line 321 "xParser.yxx"
#line 323 "xParser.yxx"
{
yyval.guid = WindowsGuid();
}
break;
case 49:
#line 333 "xParser.yxx"
#line 335 "xParser.yxx"
{
XFileTemplate *xtemplate = x_file->find_template(yyvsp[-2].str);
yyval.u.node = current_node;
@ -1215,47 +1215,122 @@ case 49:
yyerror("Unknown template: " + yyvsp[-2].str);
} else {
XFileDataObjectTemplate *templ =
new XFileDataObjectTemplate(xtemplate, yyvsp[-1].str);
new XFileDataObjectTemplate(x_file, yyvsp[-1].str, xtemplate);
current_node->add_child(templ);
current_node = templ;
}
}
break;
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;
current_node = yyvsp[-3].u.node;
}
break;
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;
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;
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;
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;
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;
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;
}
@ -1491,4 +1566,4 @@ yyreturn:
#endif
return yyresult;
}
#line 402 "xParser.yxx"
#line 468 "xParser.yxx"