This commit is contained in:
David Rose 2004-06-02 18:19:17 +00:00
parent c3b2cefc72
commit b312099dda
1 changed files with 264 additions and 240 deletions

View File

@ -92,12 +92,12 @@ dc_cleanup_parser() {
#define YYFINAL 116
#define YYFINAL 122
#define YYFLAG -32768
#define YYNTBASE 50
#define YYNTBASE 51
/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
#define YYTRANSLATE(x) ((unsigned)(x) <= 293 ? yytranslate[x] : 79)
#define YYTRANSLATE(x) ((unsigned)(x) <= 293 ? yytranslate[x] : 82)
/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
static const char yytranslate[] =
@ -106,9 +106,9 @@ static const char yytranslate[] =
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
46, 47, 43, 2, 44, 2, 2, 48, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 45, 40,
2, 49, 2, 2, 2, 2, 2, 2, 2, 2,
48, 49, 45, 2, 46, 2, 44, 43, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 47, 40,
2, 50, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@ -137,42 +137,44 @@ static const char yytranslate[] =
#if YYDEBUG
static const short yyprhs[] =
{
0, 0, 2, 5, 8, 11, 12, 20, 22, 25,
26, 32, 34, 36, 38, 42, 44, 47, 49, 53,
55, 58, 61, 64, 65, 72, 74, 76, 78, 80,
84, 85, 89, 91, 95, 98, 102, 106, 110, 114,
120, 122, 125, 127, 129, 131, 135, 137, 139, 141,
143, 147, 151, 155, 157, 159, 161, 163, 165, 167,
169, 171, 173, 175, 177, 179, 181, 183, 185, 187,
189, 191, 193, 195, 198, 201, 204, 207, 210, 213,
216, 219, 222, 223, 228, 230, 234
0, 0, 2, 5, 8, 11, 12, 20, 22, 24,
28, 30, 34, 37, 38, 44, 46, 48, 50, 54,
56, 59, 61, 65, 67, 70, 73, 76, 77, 84,
86, 88, 90, 92, 96, 97, 101, 103, 107, 110,
114, 118, 122, 126, 132, 134, 137, 139, 141, 143,
147, 149, 151, 153, 155, 159, 163, 167, 169, 171,
173, 175, 177, 179, 181, 183, 185, 187, 189, 191,
193, 195, 197, 199, 201, 203, 205, 207, 210, 213,
216, 219, 222, 225, 228, 231, 234, 235, 240, 242,
246
};
static const short yyrhs[] =
{
78, 0, 50, 40, 0, 50, 51, 0, 50, 54,
0, 0, 8, 7, 52, 58, 41, 60, 42, 0,
7, 0, 10, 7, 0, 0, 9, 7, 10, 55,
56, 0, 57, 0, 43, 0, 7, 0, 57, 44,
7, 0, 78, 0, 45, 59, 0, 53, 0, 59,
44, 53, 0, 78, 0, 60, 40, 0, 60, 61,
0, 60, 75, 0, 0, 7, 46, 62, 64, 47,
74, 0, 7, 0, 78, 0, 65, 0, 66, 0,
65, 44, 66, 0, 0, 73, 67, 68, 0, 78,
0, 68, 48, 3, 0, 68, 7, 0, 68, 49,
3, 0, 68, 49, 4, 0, 68, 49, 5, 0,
68, 49, 6, 0, 68, 49, 41, 69, 42, 0,
78, 0, 71, 70, 0, 78, 0, 44, 0, 72,
0, 71, 44, 72, 0, 3, 0, 4, 0, 5,
0, 6, 0, 3, 43, 3, 0, 4, 43, 3,
0, 6, 43, 3, 0, 11, 0, 12, 0, 13,
0, 14, 0, 15, 0, 16, 0, 17, 0, 18,
0, 19, 0, 20, 0, 21, 0, 22, 0, 23,
0, 24, 0, 25, 0, 26, 0, 27, 0, 28,
0, 29, 0, 78, 0, 74, 31, 0, 74, 32,
0, 74, 33, 0, 74, 34, 0, 74, 35, 0,
74, 36, 0, 74, 37, 0, 74, 38, 0, 74,
39, 0, 0, 7, 45, 76, 77, 0, 63, 0,
77, 44, 63, 0, 0
81, 0, 51, 40, 0, 51, 52, 0, 51, 57,
0, 0, 8, 7, 53, 61, 41, 63, 42, 0,
7, 0, 7, 0, 55, 43, 7, 0, 55, 0,
56, 44, 55, 0, 10, 56, 0, 0, 9, 56,
10, 58, 59, 0, 60, 0, 45, 0, 55, 0,
60, 46, 55, 0, 81, 0, 47, 62, 0, 54,
0, 62, 46, 54, 0, 81, 0, 63, 40, 0,
63, 64, 0, 63, 78, 0, 0, 7, 48, 65,
67, 49, 77, 0, 7, 0, 81, 0, 68, 0,
69, 0, 68, 46, 69, 0, 0, 76, 70, 71,
0, 81, 0, 71, 43, 3, 0, 71, 7, 0,
71, 50, 3, 0, 71, 50, 4, 0, 71, 50,
5, 0, 71, 50, 6, 0, 71, 50, 41, 72,
42, 0, 81, 0, 74, 73, 0, 81, 0, 46,
0, 75, 0, 74, 46, 75, 0, 3, 0, 4,
0, 5, 0, 6, 0, 3, 45, 3, 0, 4,
45, 3, 0, 6, 45, 3, 0, 11, 0, 12,
0, 13, 0, 14, 0, 15, 0, 16, 0, 17,
0, 18, 0, 19, 0, 20, 0, 21, 0, 22,
0, 23, 0, 24, 0, 25, 0, 26, 0, 27,
0, 28, 0, 29, 0, 81, 0, 77, 31, 0,
77, 32, 0, 77, 33, 0, 77, 34, 0, 77,
35, 0, 77, 36, 0, 77, 37, 0, 77, 38,
0, 77, 39, 0, 0, 7, 47, 79, 80, 0,
66, 0, 80, 46, 66, 0, 0
};
#endif
@ -181,15 +183,16 @@ static const short yyrhs[] =
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const short yyrline[] =
{
0, 91, 93, 94, 95, 98, 98, 109, 123, 128,
128, 135, 137, 143, 148, 154, 156, 159, 166, 174,
176, 177, 178, 181, 181, 192, 208, 210, 213, 215,
218, 218, 230, 232, 236, 240, 246, 252, 258, 264,
274, 276, 279, 281, 284, 286, 289, 296, 302, 308,
314, 323, 332, 343, 348, 352, 356, 360, 364, 368,
372, 376, 380, 384, 388, 392, 396, 400, 404, 408,
412, 416, 422, 424, 428, 432, 436, 440, 444, 448,
452, 456, 462, 462, 473, 480, 493
0, 93, 95, 96, 97, 100, 100, 111, 125, 127,
133, 135, 141, 146, 146, 153, 155, 161, 166, 172,
174, 177, 184, 192, 194, 195, 196, 199, 199, 210,
226, 228, 231, 233, 236, 236, 248, 250, 254, 258,
264, 270, 276, 282, 292, 294, 297, 299, 302, 304,
307, 314, 320, 326, 332, 341, 350, 361, 366, 370,
374, 378, 382, 386, 390, 394, 398, 402, 406, 410,
414, 418, 422, 426, 430, 434, 440, 442, 446, 450,
454, 458, 462, 466, 470, 474, 480, 480, 491, 498,
511
};
#endif
@ -207,8 +210,9 @@ static const char *const yytname[] =
"KW_UINT8ARRAY", "KW_UINT16ARRAY", "KW_UINT32ARRAY",
"KW_UINT32UINT8ARRAY", "KW_MOL", "KW_REQUIRED", "KW_BROADCAST",
"KW_P2P", "KW_RAM", "KW_DB", "KW_CLSEND", "KW_CLRECV", "KW_OWNSEND",
"KW_AIRECV", "';'", "'{'", "'}'", "'*'", "','", "':'", "'('", "')'",
"'/'", "'='", "dc", "dclass", "@1", "dclass_name", "import", "@2",
"KW_AIRECV", "';'", "'{'", "'}'", "'/'", "'.'", "'*'", "','", "':'",
"'('", "')'", "'='", "dc", "dclass", "@1", "dclass_name",
"slash_identifier", "import_identifier", "import", "@2",
"import_symbol_list_or_star", "import_symbol_list", "dclass_derivation",
"base_list", "dclass_fields", "atomic_field", "@3", "atomic_name",
"parameter_list", "nonempty_parameter_list", "atomic_element", "@4",
@ -221,29 +225,31 @@ static const char *const yytname[] =
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const short yyr1[] =
{
0, 50, 50, 50, 50, 52, 51, 53, 54, 55,
54, 56, 56, 57, 57, 58, 58, 59, 59, 60,
60, 60, 60, 62, 61, 63, 64, 64, 65, 65,
67, 66, 68, 68, 68, 68, 68, 68, 68, 68,
69, 69, 70, 70, 71, 71, 72, 72, 72, 72,
72, 72, 72, 73, 73, 73, 73, 73, 73, 73,
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
73, 73, 74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 76, 75, 77, 77, 78
0, 51, 51, 51, 51, 53, 52, 54, 55, 55,
56, 56, 57, 58, 57, 59, 59, 60, 60, 61,
61, 62, 62, 63, 63, 63, 63, 65, 64, 66,
67, 67, 68, 68, 70, 69, 71, 71, 71, 71,
71, 71, 71, 71, 72, 72, 73, 73, 74, 74,
75, 75, 75, 75, 75, 75, 75, 76, 76, 76,
76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
76, 76, 76, 76, 76, 76, 77, 77, 77, 77,
77, 77, 77, 77, 77, 77, 79, 78, 80, 80,
81
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const short yyr2[] =
{
0, 1, 2, 2, 2, 0, 7, 1, 2, 0,
5, 1, 1, 1, 3, 1, 2, 1, 3, 1,
2, 2, 2, 0, 6, 1, 1, 1, 1, 3,
0, 3, 1, 3, 2, 3, 3, 3, 3, 5,
1, 2, 1, 1, 1, 3, 1, 1, 1, 1,
3, 3, 3, 1, 1, 1, 1, 1, 1, 1,
0, 1, 2, 2, 2, 0, 7, 1, 1, 3,
1, 3, 2, 0, 5, 1, 1, 1, 3, 1,
2, 1, 3, 1, 2, 2, 2, 0, 6, 1,
1, 1, 1, 3, 0, 3, 1, 3, 2, 3,
3, 3, 3, 5, 1, 2, 1, 1, 1, 3,
1, 1, 1, 1, 3, 3, 3, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
2, 2, 0, 4, 1, 3, 0
1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
2, 2, 2, 2, 2, 2, 0, 4, 1, 3,
0
};
/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
@ -251,78 +257,84 @@ static const short yyr2[] =
error. */
static const short yydefact[] =
{
86, 0, 1, 0, 0, 0, 2, 3, 4, 5,
0, 8, 86, 9, 0, 0, 15, 0, 7, 17,
16, 86, 13, 12, 10, 11, 0, 0, 19, 0,
18, 0, 20, 6, 21, 22, 14, 82, 23, 0,
86, 25, 84, 83, 53, 54, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
69, 70, 71, 0, 27, 28, 30, 26, 0, 86,
0, 86, 85, 24, 72, 29, 31, 32, 73, 74,
75, 76, 77, 78, 79, 80, 81, 34, 0, 0,
33, 35, 36, 37, 38, 86, 46, 47, 48, 49,
0, 86, 44, 40, 0, 0, 0, 39, 43, 41,
42, 50, 51, 52, 45, 0, 0
90, 0, 1, 0, 0, 0, 2, 3, 4, 5,
8, 10, 0, 12, 90, 0, 13, 0, 0, 0,
19, 9, 0, 11, 7, 21, 20, 90, 16, 17,
14, 15, 0, 0, 23, 0, 22, 0, 24, 6,
25, 26, 18, 86, 27, 0, 90, 29, 88, 87,
57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
67, 68, 69, 70, 71, 72, 73, 74, 75, 0,
31, 32, 34, 30, 0, 90, 0, 90, 89, 28,
76, 33, 35, 36, 77, 78, 79, 80, 81, 82,
83, 84, 85, 38, 0, 0, 37, 39, 40, 41,
42, 90, 50, 51, 52, 53, 0, 90, 48, 44,
0, 0, 0, 43, 47, 45, 46, 54, 55, 56,
49, 0, 0
};
static const short yydefgoto[] =
{
1, 7, 12, 19, 8, 17, 24, 25, 15, 20,
27, 34, 40, 42, 63, 64, 65, 71, 76, 100,
109, 101, 102, 66, 73, 35, 39, 43, 2
1, 7, 14, 25, 11, 12, 8, 22, 30, 31,
19, 26, 33, 40, 46, 48, 69, 70, 71, 77,
82, 106, 115, 107, 108, 72, 79, 41, 45, 49,
2
};
static const short yypact[] =
{
-32768, 4,-32768, -4, 3, 17,-32768,-32768,-32768,-32768,
1,-32768, -40,-32768, 18, -18,-32768, -5,-32768,-32768,
-17,-32768,-32768,-32768,-32768, 2, 18, -1,-32768, 19,
-32768, -38,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 33,
49,-32768,-32768, 5,-32768,-32768,-32768,-32768,-32768,-32768,
-32768, 2,-32768, 27, 28, 28,-32768,-32768,-32768,-32768,
-32768, -36, -1, -8, -9, 32,-32768, 28, 33, 4,
-32768,-32768, 1, -36,-32768,-32768, 5,-32768,-32768, -36,
-32768, 6, 33, 7,-32768, 28,-32768, -17,-32768,-32768,
-32768,-32768, -36,-32768,-32768, 41, 53,-32768,-32768, 8,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768, 0, 6,-32768,-32768,-32768, 33,-32768,
49,-32768,-32768, -2,-32768,-32768, -6,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 42, 12,
-32768,-32768,-32768,-32768,-32768, 16, 8, 9,-32768, 11,
13, 14,-32768,-32768, 45, 53, 76,-32768, 16,-32768,
-32768,-32768,-32768,-32768,-32768, 80,-32768
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 9,
10,-32768,-32768,-32768, 41,-32768, 53,-32768,-32768, -10,
-32768,-32768, -6,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768, 47, 0,-32768,-32768,-32768,-32768,
-32768, 13, 12, 14,-32768, 15, 11, 16,-32768,-32768,
52, 80, 81,-32768, 13,-32768,-32768,-32768,-32768,-32768,
-32768, 85,-32768
};
static const short yypgoto[] =
{
-32768,-32768,-32768, 55,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768, 20,-32768,-32768, 15,-32768,-32768,-32768,
-32768,-32768, -26,-32768,-32768,-32768,-32768,-32768, -12
-32768,-32768,-32768, 54, -2, 83,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768, 17,-32768,-32768, 18,-32768,
-32768,-32768,-32768,-32768, -25,-32768,-32768,-32768,-32768,-32768,
-14
};
#define YYLAST 89
#define YYLAST 94
static const short yytable[] =
{
16, 87, 22, 9, 115, 14, 31, 37, 38, 28,
10, 13, 3, 4, 5, 91, 92, 93, 94, 96,
97, 98, 99, 21, 11, 18, 36, 26, 67, 78,
79, 80, 81, 82, 83, 84, 85, 86, 23, 32,
41, 33, 88, 89, 6, 90, 29, 69, 111, 68,
70, 104, 105, 95, 106, 107, 112, 74, 108, 77,
44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, 62, 113,
116, 30, 114, 103, 0, 75, 0, 0, 72, 110
20, 93, 121, 97, 98, 99, 100, 15, 10, 16,
3, 4, 5, 34, 37, 23, 102, 103, 104, 105,
29, 84, 85, 86, 87, 88, 89, 90, 91, 92,
43, 44, 73, 42, 9, 10, 17, 94, 18, 21,
24, 101, 6, 17, 95, 27, 28, 38, 47, 39,
96, 32, 35, 113, 74, 117, 76, 110, 75, 111,
112, 80, 114, 83, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
66, 67, 68, 118, 119, 122, 36, 109, 13, 120,
0, 78, 0, 116, 81
};
static const short yycheck[] =
{
12, 7, 7, 7, 0, 45, 7, 45, 46, 21,
7, 10, 8, 9, 10, 3, 4, 5, 6, 3,
4, 5, 6, 41, 7, 7, 7, 44, 40, 31,
32, 33, 34, 35, 36, 37, 38, 39, 43, 40,
7, 42, 48, 49, 40, 3, 44, 47, 3, 44,
44, 43, 43, 41, 43, 42, 3, 69, 44, 71,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 3,
0, 26, 108, 95, -1, 70, -1, -1, 68, 101
14, 7, 0, 3, 4, 5, 6, 43, 7, 10,
8, 9, 10, 27, 7, 17, 3, 4, 5, 6,
22, 31, 32, 33, 34, 35, 36, 37, 38, 39,
47, 48, 46, 35, 7, 7, 44, 43, 47, 7,
7, 41, 40, 44, 50, 41, 45, 40, 7, 42,
3, 46, 46, 42, 46, 3, 46, 45, 49, 45,
45, 75, 46, 77, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 3, 3, 0, 32, 101, 5, 114,
-1, 74, -1, 107, 76
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/share/bison/bison.simple"
@ -1032,7 +1044,7 @@ yyreduce:
switch (yyn) {
case 5:
#line 100 "dcParser.yxx"
#line 102 "dcParser.yxx"
{
current_class = new DCClass(yyvsp[0].str);
if (!dc_file->add_class(current_class)) {
@ -1041,66 +1053,78 @@ case 5:
}
break;
case 7:
#line 111 "dcParser.yxx"
#line 113 "dcParser.yxx"
{
DCFile::ClassesByName::const_iterator ni;
ni = dc_file->_classes_by_name.find(yyvsp[0].str);
if (ni == dc_file->_classes_by_name.end()) {
yyerror("Unknown class: " + yyvsp[0].str);
yyval.u.dclass = (DCClass *)NULL;
yyval.u.dclass = new DCClass(yyvsp[0].str, true);
dc_file->add_class(yyval.u.dclass);
} else {
yyval.u.dclass = (*ni).second;
}
}
break;
case 8:
#line 125 "dcParser.yxx"
case 9:
#line 128 "dcParser.yxx"
{
yyval.str = yyvsp[-2].str + string("/") + yyvsp[0].str;
}
break;
case 11:
#line 136 "dcParser.yxx"
{
yyval.str = yyvsp[-2].str + string(".") + yyvsp[0].str;
}
break;
case 12:
#line 143 "dcParser.yxx"
{
dc_file->add_import_module(yyvsp[0].str);
}
break;
case 9:
#line 129 "dcParser.yxx"
case 13:
#line 147 "dcParser.yxx"
{
dc_file->add_import_module(yyvsp[-1].str);
}
break;
case 12:
#line 138 "dcParser.yxx"
case 16:
#line 156 "dcParser.yxx"
{
dc_file->add_import_symbol("*");
}
break;
case 13:
#line 145 "dcParser.yxx"
{
dc_file->add_import_symbol(yyvsp[0].str);
}
break;
case 14:
#line 149 "dcParser.yxx"
{
dc_file->add_import_symbol(yyvsp[0].str);
}
break;
case 17:
#line 161 "dcParser.yxx"
#line 163 "dcParser.yxx"
{
if (yyvsp[0].u.dclass != (DCClass *)NULL) {
current_class->add_parent(yyvsp[0].u.dclass);
}
dc_file->add_import_symbol(yyvsp[0].str);
}
break;
case 18:
#line 167 "dcParser.yxx"
{
dc_file->add_import_symbol(yyvsp[0].str);
}
break;
case 21:
#line 179 "dcParser.yxx"
{
if (yyvsp[0].u.dclass != (DCClass *)NULL) {
current_class->add_parent(yyvsp[0].u.dclass);
}
}
break;
case 23:
#line 183 "dcParser.yxx"
case 22:
#line 185 "dcParser.yxx"
{
if (yyvsp[0].u.dclass != (DCClass *)NULL) {
current_class->add_parent(yyvsp[0].u.dclass);
}
}
break;
case 27:
#line 201 "dcParser.yxx"
{
current_atomic = new DCAtomicField(yyvsp[-1].str);
if (!current_class->add_field(current_atomic)) {
@ -1108,8 +1132,8 @@ case 23:
}
}
break;
case 25:
#line 194 "dcParser.yxx"
case 29:
#line 212 "dcParser.yxx"
{
DCField *field = current_class->get_field_by_name(yyvsp[0].str);
yyval.u.atomic = (DCAtomicField *)NULL;
@ -1123,65 +1147,65 @@ case 25:
}
}
break;
case 30:
#line 220 "dcParser.yxx"
case 34:
#line 238 "dcParser.yxx"
{
atomic_element = DCAtomicField::ElementType();
atomic_element._type = yyvsp[0].u.subatomic;
}
break;
case 31:
#line 225 "dcParser.yxx"
case 35:
#line 243 "dcParser.yxx"
{
current_atomic->_elements.push_back(atomic_element);
}
break;
case 33:
#line 233 "dcParser.yxx"
case 37:
#line 251 "dcParser.yxx"
{
atomic_element._divisor = yyvsp[0].u.integer;
}
break;
case 34:
#line 237 "dcParser.yxx"
case 38:
#line 255 "dcParser.yxx"
{
atomic_element._name = yyvsp[0].str;
}
break;
case 35:
#line 241 "dcParser.yxx"
case 39:
#line 259 "dcParser.yxx"
{
if (!atomic_element.set_default_value(yyvsp[0].u.integer)) {
yyerror("Invalid default value: " + yyvsp[0].str);
}
}
break;
case 36:
#line 247 "dcParser.yxx"
case 40:
#line 265 "dcParser.yxx"
{
if (!atomic_element.set_default_value(yyvsp[0].u.real)) {
yyerror("Invalid default value: " + yyvsp[0].str);
}
}
break;
case 37:
#line 253 "dcParser.yxx"
case 41:
#line 271 "dcParser.yxx"
{
if (!atomic_element.set_default_value(yyvsp[0].str)) {
yyerror("Invalid default value: \"" + yyvsp[0].str + "\"");
}
}
break;
case 38:
#line 259 "dcParser.yxx"
case 42:
#line 277 "dcParser.yxx"
{
if (!atomic_element.set_default_value_literal(yyvsp[0].str)) {
yyerror("Invalid default hex string value");
}
}
break;
case 39:
#line 265 "dcParser.yxx"
case 43:
#line 283 "dcParser.yxx"
{
if (!atomic_element.end_array()) {
yyerror("Array default value inappropriate");
@ -1190,40 +1214,40 @@ case 39:
}
}
break;
case 46:
#line 291 "dcParser.yxx"
case 50:
#line 309 "dcParser.yxx"
{
if (!atomic_element.add_default_value(yyvsp[0].u.integer)) {
yyerror("Invalid default value: " + yyvsp[0].str);
}
}
break;
case 47:
#line 297 "dcParser.yxx"
case 51:
#line 315 "dcParser.yxx"
{
if (!atomic_element.add_default_value(yyvsp[0].u.real)) {
yyerror("Invalid default value: " + yyvsp[0].str);
}
}
break;
case 48:
#line 303 "dcParser.yxx"
case 52:
#line 321 "dcParser.yxx"
{
if (!atomic_element.add_default_value(yyvsp[0].str)) {
yyerror("Invalid default value: " + yyvsp[0].str);
}
}
break;
case 49:
#line 309 "dcParser.yxx"
case 53:
#line 327 "dcParser.yxx"
{
if (!atomic_element.add_default_value_literal(yyvsp[0].str)) {
yyerror("Invalid hex literal in default array");
}
}
break;
case 50:
#line 315 "dcParser.yxx"
case 54:
#line 333 "dcParser.yxx"
{
for (int i = 0; i < yyvsp[0].u.integer; i++) {
if (!atomic_element.add_default_value(yyvsp[-2].u.integer)) {
@ -1233,8 +1257,8 @@ case 50:
}
}
break;
case 51:
#line 324 "dcParser.yxx"
case 55:
#line 342 "dcParser.yxx"
{
for (int i = 0; i < yyvsp[0].u.integer; i++) {
if (!atomic_element.add_default_value(yyvsp[-2].u.real)) {
@ -1244,8 +1268,8 @@ case 51:
}
}
break;
case 52:
#line 333 "dcParser.yxx"
case 56:
#line 351 "dcParser.yxx"
{
for (int i = 0; i < yyvsp[0].u.integer; i++) {
if (!atomic_element.add_default_value_literal(yyvsp[-2].str)) {
@ -1255,176 +1279,176 @@ case 52:
}
}
break;
case 53:
#line 345 "dcParser.yxx"
case 57:
#line 363 "dcParser.yxx"
{
yyval.u.subatomic = ST_int8;
}
break;
case 54:
#line 349 "dcParser.yxx"
case 58:
#line 367 "dcParser.yxx"
{
yyval.u.subatomic = ST_int16;
}
break;
case 55:
#line 353 "dcParser.yxx"
case 59:
#line 371 "dcParser.yxx"
{
yyval.u.subatomic = ST_int32;
}
break;
case 56:
#line 357 "dcParser.yxx"
case 60:
#line 375 "dcParser.yxx"
{
yyval.u.subatomic = ST_int64;
}
break;
case 57:
#line 361 "dcParser.yxx"
case 61:
#line 379 "dcParser.yxx"
{
yyval.u.subatomic = ST_uint8;
}
break;
case 58:
#line 365 "dcParser.yxx"
case 62:
#line 383 "dcParser.yxx"
{
yyval.u.subatomic = ST_uint16;
}
break;
case 59:
#line 369 "dcParser.yxx"
case 63:
#line 387 "dcParser.yxx"
{
yyval.u.subatomic = ST_uint32;
}
break;
case 60:
#line 373 "dcParser.yxx"
case 64:
#line 391 "dcParser.yxx"
{
yyval.u.subatomic = ST_uint64;
}
break;
case 61:
#line 377 "dcParser.yxx"
case 65:
#line 395 "dcParser.yxx"
{
yyval.u.subatomic = ST_float64;
}
break;
case 62:
#line 381 "dcParser.yxx"
case 66:
#line 399 "dcParser.yxx"
{
yyval.u.subatomic = ST_string;
}
break;
case 63:
#line 385 "dcParser.yxx"
case 67:
#line 403 "dcParser.yxx"
{
yyval.u.subatomic = ST_blob;
}
break;
case 64:
#line 389 "dcParser.yxx"
case 68:
#line 407 "dcParser.yxx"
{
yyval.u.subatomic = ST_blob32;
}
break;
case 65:
#line 393 "dcParser.yxx"
case 69:
#line 411 "dcParser.yxx"
{
yyval.u.subatomic = ST_int8array;
}
break;
case 66:
#line 397 "dcParser.yxx"
case 70:
#line 415 "dcParser.yxx"
{
yyval.u.subatomic = ST_int16array;
}
break;
case 67:
#line 401 "dcParser.yxx"
case 71:
#line 419 "dcParser.yxx"
{
yyval.u.subatomic = ST_int32array;
}
break;
case 68:
#line 405 "dcParser.yxx"
case 72:
#line 423 "dcParser.yxx"
{
yyval.u.subatomic = ST_uint8array;
}
break;
case 69:
#line 409 "dcParser.yxx"
case 73:
#line 427 "dcParser.yxx"
{
yyval.u.subatomic = ST_uint16array;
}
break;
case 70:
#line 413 "dcParser.yxx"
case 74:
#line 431 "dcParser.yxx"
{
yyval.u.subatomic = ST_uint32array;
}
break;
case 71:
#line 417 "dcParser.yxx"
case 75:
#line 435 "dcParser.yxx"
{
yyval.u.subatomic = ST_uint32uint8array;
}
break;
case 73:
#line 425 "dcParser.yxx"
case 77:
#line 443 "dcParser.yxx"
{
current_atomic->_flags |= DCAtomicField::F_required;
}
break;
case 74:
#line 429 "dcParser.yxx"
case 78:
#line 447 "dcParser.yxx"
{
current_atomic->_flags |= DCAtomicField::F_broadcast;
}
break;
case 75:
#line 433 "dcParser.yxx"
case 79:
#line 451 "dcParser.yxx"
{
current_atomic->_flags |= DCAtomicField::F_p2p;
}
break;
case 76:
#line 437 "dcParser.yxx"
case 80:
#line 455 "dcParser.yxx"
{
current_atomic->_flags |= DCAtomicField::F_ram;
}
break;
case 77:
#line 441 "dcParser.yxx"
case 81:
#line 459 "dcParser.yxx"
{
current_atomic->_flags |= DCAtomicField::F_db;
}
break;
case 78:
#line 445 "dcParser.yxx"
case 82:
#line 463 "dcParser.yxx"
{
current_atomic->_flags |= DCAtomicField::F_clsend;
}
break;
case 79:
#line 449 "dcParser.yxx"
case 83:
#line 467 "dcParser.yxx"
{
current_atomic->_flags |= DCAtomicField::F_clrecv;
}
break;
case 80:
#line 453 "dcParser.yxx"
case 84:
#line 471 "dcParser.yxx"
{
current_atomic->_flags |= DCAtomicField::F_ownsend;
}
break;
case 81:
#line 457 "dcParser.yxx"
case 85:
#line 475 "dcParser.yxx"
{
current_atomic->_flags |= DCAtomicField::F_airecv;
}
break;
case 82:
#line 464 "dcParser.yxx"
case 86:
#line 482 "dcParser.yxx"
{
current_molecular = new DCMolecularField(yyvsp[-1].str);
if (!current_class->add_field(current_molecular)) {
@ -1432,16 +1456,16 @@ case 82:
}
}
break;
case 84:
#line 475 "dcParser.yxx"
case 88:
#line 493 "dcParser.yxx"
{
if (yyvsp[0].u.atomic != (DCAtomicField *)NULL) {
current_molecular->_fields.push_back(yyvsp[0].u.atomic);
}
}
break;
case 85:
#line 481 "dcParser.yxx"
case 89:
#line 499 "dcParser.yxx"
{
if (yyvsp[0].u.atomic != (DCAtomicField *)NULL) {
current_molecular->_fields.push_back(yyvsp[0].u.atomic);
@ -1686,4 +1710,4 @@ yyreturn:
#endif
return yyresult;
}
#line 495 "dcParser.yxx"
#line 513 "dcParser.yxx"