Commit 9c974183 authored by Lev Walkin's avatar Lev Walkin

DEFAULT type support

parent 5498f2d6
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -285,7 +285,9 @@ WSP [\t\r\v\f\n ]
}
ABSENT return TOK_ABSENT;
/*
ABSTRACT-SYNTAX return TOK_ABSTRACT_SYNTAX;
*/
ALL return TOK_ALL;
ANY {
/* Appeared in 1990, removed in 1997 */
......@@ -485,9 +487,10 @@ WITH return TOK_WITH;
yylineno, yytext);
while(YYSTATE != INITIAL)
yy_pop_state();
yy_top_state(); /* Just to use this function. */
yyterminate();
yy_fatal_error("Unexpected token");
if(0) {
yy_top_state(); /* Just to use this function. */
yy_fatal_error("Parse error");
}
return -1;
}
......
......@@ -110,13 +110,12 @@ asn1p_value_fromint(asn1_integer_t i) {
asn1p_value_t *
asn1p_value_clone(asn1p_value_t *v) {
asn1p_value_t *clone;
asn1p_value_t *clone = NULL;
if(v) {
switch(v->type) {
case ATV_NOVALUE:
return calloc(1, sizeof(*v));
case ATV_REFERENCED:
return asn1p_value_fromref(v->value.reference, 1);
case ATV_NULL:
return calloc(1, sizeof(*clone));
case ATV_REAL:
return asn1p_value_fromdouble(v->value.v_double);
case ATV_INTEGER:
......@@ -140,7 +139,24 @@ asn1p_value_clone(asn1p_value_t *v) {
case ATV_BITVECTOR:
return asn1p_value_frombuf(v->value.binary_vector.bits,
v->value.binary_vector.size_in_bits, 1);
case ATV_REFERENCED:
return asn1p_value_fromref(v->value.reference, 1);
case ATV_CHOICE_IDENTIFIER: {
char *id = v->value.choice_identifier.identifier;
clone = calloc(1, sizeof(*clone));
if(!clone) return NULL;
clone->type = v->type;
id = strdup(id);
if(!id) { asn1p_value_free(clone); return NULL; }
clone->value.choice_identifier.identifier = id;
v = asn1p_value_clone(v->value.choice_identifier.value);
if(!v) { asn1p_value_free(clone); return NULL; }
clone->value.choice_identifier.value = v;
return clone;
}
}
assert(!"UNREACHABLE");
}
return v;
}
......@@ -150,16 +166,14 @@ asn1p_value_free(asn1p_value_t *v) {
if(v) {
switch(v->type) {
case ATV_NOVALUE:
case ATV_NULL:
break;
case ATV_REFERENCED:
asn1p_ref_free(v->value.reference);
break;
case ATV_REAL:
case ATV_INTEGER:
case ATV_MIN:
case ATV_MAX:
case ATV_FALSE:
case ATV_TRUE:
case ATV_REAL:
/* No freeing necessary */
break;
case ATV_STRING:
......@@ -171,6 +185,13 @@ asn1p_value_free(asn1p_value_t *v) {
assert(v->value.binary_vector.bits);
free(v->value.binary_vector.bits);
break;
case ATV_REFERENCED:
asn1p_ref_free(v->value.reference);
break;
case ATV_CHOICE_IDENTIFIER:
free(v->value.choice_identifier.identifier);
asn1p_value_free(v->value.choice_identifier.value);
break;
}
free(v);
}
......
......@@ -13,9 +13,9 @@ typedef struct asn1p_value_s {
*/
enum {
ATV_NOVALUE,
ATV_REFERENCED,
ATV_INTEGER,
ATV_REAL,
ATV_NULL, /* A "NULL" value of type NULL. */
ATV_REAL, /* A constant floating-point value */
ATV_INTEGER, /* An integer constant */
ATV_MAX,
ATV_MIN,
ATV_TRUE,
......@@ -23,6 +23,8 @@ typedef struct asn1p_value_s {
ATV_STRING,
ATV_UNPARSED,
ATV_BITVECTOR,
ATV_REFERENCED, /* Reference to a value defined elsewhere */
ATV_CHOICE_IDENTIFIER, /* ChoiceIdentifier value */
} type; /* Value type and location */
union {
......@@ -40,6 +42,10 @@ typedef struct asn1p_value_s {
uint8_t *bits;
int size_in_bits;
} binary_vector;
struct {
char *identifier;
struct asn1p_value_s *value;
} choice_identifier;
} value;
} asn1p_value_t;
......
......@@ -182,7 +182,7 @@ typedef union {
asn1p_value_t *a_value; /* Number, DefinedValue, etc */
struct asn1p_param_s a_parg; /* A parameter argument */
asn1p_paramlist_t *a_plist; /* A pargs list */
enum asn1p_expr_marker_e a_marker; /* OPTIONAL/DEFAULT */
struct asn1p_expr_marker_s a_marker; /* OPTIONAL/DEFAULT */
enum asn1p_constr_pres_e a_pres; /* PRESENT/ABSENT/OPTIONAL */
asn1_integer_t a_int;
char *tv_str;
......@@ -205,11 +205,11 @@ typedef union {
#define YYFINAL 397
#define YYFINAL 399
#define YYFLAG -32768
#define YYNTBASE 115
#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 213)
#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 211)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
......@@ -263,96 +263,96 @@ static const short yyprhs[] = { 0,
231, 233, 239, 240, 242, 244, 248, 251, 256, 261,
262, 264, 265, 272, 274, 277, 279, 281, 283, 287,
291, 295, 297, 299, 304, 309, 314, 320, 326, 328,
333, 338, 340, 344, 346, 350, 354, 356, 360, 362,
366, 368, 370, 372, 374, 379, 380, 384, 386, 388,
390, 392, 394, 396, 400, 402, 405, 407, 409, 411,
413, 416, 419, 421, 423, 426, 429, 431, 433, 435,
437, 440, 442, 445, 447, 449, 451, 453, 455, 457,
459, 461, 463, 465, 467, 469, 471, 473, 475, 477,
479, 481, 483, 484, 486, 488, 493, 497, 502, 504,
508, 514, 516, 520, 524, 528, 533, 537, 539, 543,
547, 551, 555, 557, 559, 561, 564, 567, 571, 573,
575, 577, 579, 581, 583, 585, 591, 593, 597, 599,
603, 604, 606, 608, 610, 612, 614, 616, 620, 625,
627, 631, 634, 638, 640, 644, 645, 647, 649, 652,
654, 656, 657, 661, 664, 668, 670, 674, 676, 681,
686, 688, 690, 692, 694, 695, 697, 699, 702, 705,
707, 709, 711
333, 338, 340, 344, 346, 350, 354, 358, 360, 364,
366, 370, 372, 374, 376, 378, 383, 387, 388, 392,
394, 396, 398, 400, 402, 404, 406, 408, 410, 414,
416, 419, 421, 423, 425, 427, 430, 433, 435, 437,
440, 443, 445, 447, 449, 451, 454, 456, 459, 461,
463, 465, 467, 469, 471, 473, 475, 477, 479, 481,
483, 485, 487, 489, 491, 493, 495, 497, 498, 500,
502, 507, 511, 516, 518, 522, 528, 530, 534, 538,
542, 547, 551, 553, 557, 561, 565, 569, 571, 573,
575, 578, 581, 585, 587, 589, 591, 593, 595, 597,
599, 605, 607, 611, 613, 617, 618, 620, 622, 624,
626, 628, 630, 634, 639, 641, 645, 648, 652, 654,
658, 659, 661, 663, 666, 669, 673, 675, 679, 681,
686, 691, 693, 695, 697, 699, 700, 702, 704, 707,
710, 712, 714, 716
};
static const short yyrhs[] = { 116,
0, 117, 0, 116, 117, 0, 210, 118, 34, 122,
0, 117, 0, 116, 117, 0, 208, 118, 34, 122,
3, 21, 125, 39, 0, 0, 119, 0, 104, 120,
105, 0, 104, 105, 0, 121, 0, 120, 121, 0,
212, 0, 212, 106, 9, 107, 0, 9, 0, 0,
210, 0, 210, 106, 9, 107, 0, 9, 0, 0,
123, 0, 124, 0, 123, 124, 0, 41, 84, 0,
52, 84, 0, 20, 84, 0, 43, 53, 0, 12,
57, 0, 0, 126, 0, 127, 0, 126, 127, 0,
129, 0, 134, 0, 142, 0, 168, 0, 137, 0,
0, 38, 12, 128, 0, 176, 0, 54, 130, 108,
0, 54, 46, 0, 131, 0, 130, 131, 0, 132,
46, 210, 118, 0, 133, 0, 132, 109, 133, 0,
210, 0, 212, 0, 42, 135, 108, 0, 42, 17,
46, 208, 118, 0, 133, 0, 132, 109, 133, 0,
208, 0, 210, 0, 42, 135, 108, 0, 42, 17,
108, 0, 42, 108, 0, 136, 0, 135, 109, 136,
0, 210, 0, 212, 0, 210, 138, 3, 104, 139,
0, 208, 0, 210, 0, 208, 138, 3, 104, 139,
105, 0, 163, 0, 173, 0, 0, 140, 0, 141,
0, 140, 109, 141, 0, 102, 0, 184, 0, 210,
3, 208, 87, 0, 210, 3, 161, 0, 210, 3,
151, 0, 210, 104, 143, 105, 3, 161, 0, 144,
0, 143, 109, 144, 0, 210, 0, 210, 110, 212,
0, 173, 110, 212, 0, 146, 0, 145, 109, 146,
0, 161, 0, 212, 0, 148, 0, 147, 109, 148,
0, 212, 161, 200, 0, 30, 68, 161, 0, 160,
0, 150, 0, 149, 109, 150, 0, 212, 161, 0,
0, 140, 109, 141, 0, 102, 0, 184, 0, 208,
3, 206, 87, 0, 208, 3, 161, 0, 208, 3,
151, 0, 208, 104, 143, 105, 3, 161, 0, 144,
0, 143, 109, 144, 0, 208, 0, 208, 110, 210,
0, 173, 110, 210, 0, 146, 0, 145, 109, 146,
0, 161, 0, 210, 0, 148, 0, 147, 109, 148,
0, 210, 161, 200, 0, 30, 68, 161, 0, 160,
0, 150, 0, 149, 109, 150, 0, 210, 161, 0,
160, 0, 28, 104, 153, 105, 155, 0, 0, 88,
0, 154, 0, 153, 109, 154, 0, 166, 200, 0,
166, 161, 200, 152, 0, 166, 166, 200, 152, 0,
0, 156, 0, 0, 95, 82, 104, 157, 158, 105,
0, 159, 0, 158, 159, 0, 4, 0, 166, 0,
102, 0, 102, 111, 171, 0, 102, 111, 207, 0,
208, 162, 180, 0, 175, 0, 176, 0, 27, 104,
102, 0, 102, 111, 171, 0, 102, 111, 205, 0,
206, 162, 180, 0, 175, 0, 176, 0, 27, 104,
149, 105, 0, 78, 104, 147, 105, 0, 79, 104,
147, 105, 0, 78, 180, 68, 208, 162, 0, 79,
180, 68, 208, 162, 0, 18, 0, 18, 35, 25,
212, 0, 210, 104, 145, 105, 0, 163, 0, 56,
68, 163, 0, 11, 0, 11, 112, 210, 0, 11,
112, 212, 0, 211, 0, 211, 112, 164, 0, 165,
0, 164, 112, 165, 0, 167, 0, 167, 0, 13,
0, 14, 0, 212, 138, 3, 169, 0, 0, 104,
170, 172, 0, 5, 0, 7, 0, 6, 0, 207,
0, 171, 0, 212, 0, 210, 112, 212, 0, 4,
0, 172, 4, 0, 24, 0, 63, 0, 76, 0,
174, 0, 67, 81, 0, 65, 51, 0, 77, 0,
44, 0, 36, 71, 0, 26, 81, 0, 91, 0,
47, 0, 58, 0, 40, 0, 22, 81, 0, 173,
0, 174, 204, 0, 23, 0, 48, 0, 49, 0,
50, 0, 59, 0, 64, 0, 74, 0, 83, 0,
85, 0, 90, 0, 92, 0, 93, 0, 94, 0,
66, 0, 99, 0, 100, 0, 97, 0, 98, 0,
96, 0, 0, 181, 0, 182, 0, 80, 106, 183,
107, 0, 106, 183, 107, 0, 182, 106, 183, 107,
0, 184, 0, 184, 109, 102, 0, 184, 109, 102,
109, 184, 0, 185, 0, 184, 177, 185, 0, 184,
178, 185, 0, 185, 179, 185, 0, 187, 106, 183,
107, 0, 106, 183, 107, 0, 188, 0, 188, 186,
188, 0, 61, 186, 188, 0, 188, 186, 60, 0,
61, 186, 60, 0, 194, 0, 189, 0, 101, 0,
101, 113, 0, 113, 101, 0, 113, 101, 113, 0,
80, 0, 46, 0, 207, 0, 212, 0, 6, 0,
45, 0, 86, 0, 95, 30, 104, 190, 105, 0,
191, 0, 190, 109, 191, 0, 102, 0, 212, 180,
192, 0, 0, 193, 0, 73, 0, 15, 0, 69,
0, 195, 0, 196, 0, 104, 210, 105, 0, 195,
104, 197, 105, 0, 198, 0, 197, 109, 198, 0,
114, 199, 0, 114, 112, 199, 0, 212, 0, 199,
112, 212, 0, 0, 201, 0, 69, 0, 33, 202,
0, 188, 0, 173, 0, 0, 104, 203, 172, 0,
104, 105, 0, 104, 205, 105, 0, 206, 0, 205,
109, 206, 0, 212, 0, 212, 106, 207, 107, 0,
212, 106, 171, 107, 0, 207, 0, 102, 0, 9,
0, 10, 0, 0, 209, 0, 103, 0, 103, 52,
0, 103, 41, 0, 11, 0, 12, 0, 12, 0,
8, 0
147, 105, 0, 78, 180, 68, 206, 162, 0, 79,
180, 68, 206, 162, 0, 18, 0, 18, 35, 25,
210, 0, 208, 104, 145, 105, 0, 163, 0, 56,
68, 163, 0, 11, 0, 11, 112, 208, 0, 209,
112, 208, 0, 11, 112, 210, 0, 209, 0, 209,
112, 164, 0, 165, 0, 164, 112, 165, 0, 167,
0, 167, 0, 13, 0, 14, 0, 210, 138, 3,
169, 0, 210, 110, 169, 0, 0, 104, 170, 172,
0, 63, 0, 45, 0, 86, 0, 5, 0, 7,
0, 6, 0, 205, 0, 171, 0, 210, 0, 208,
112, 210, 0, 4, 0, 172, 4, 0, 24, 0,
63, 0, 76, 0, 174, 0, 67, 81, 0, 65,
51, 0, 77, 0, 44, 0, 36, 71, 0, 26,
81, 0, 91, 0, 47, 0, 58, 0, 40, 0,
22, 81, 0, 173, 0, 174, 202, 0, 23, 0,
48, 0, 49, 0, 50, 0, 59, 0, 64, 0,
74, 0, 83, 0, 85, 0, 90, 0, 92, 0,
93, 0, 94, 0, 66, 0, 99, 0, 100, 0,
97, 0, 98, 0, 96, 0, 0, 181, 0, 182,
0, 80, 106, 183, 107, 0, 106, 183, 107, 0,
182, 106, 183, 107, 0, 184, 0, 184, 109, 102,
0, 184, 109, 102, 109, 184, 0, 185, 0, 184,
177, 185, 0, 184, 178, 185, 0, 185, 179, 185,
0, 187, 106, 183, 107, 0, 106, 183, 107, 0,
188, 0, 188, 186, 188, 0, 61, 186, 188, 0,
188, 186, 60, 0, 61, 186, 60, 0, 194, 0,
189, 0, 101, 0, 101, 113, 0, 113, 101, 0,
113, 101, 113, 0, 80, 0, 46, 0, 205, 0,
210, 0, 6, 0, 45, 0, 86, 0, 95, 30,
104, 190, 105, 0, 191, 0, 190, 109, 191, 0,
102, 0, 210, 180, 192, 0, 0, 193, 0, 73,
0, 15, 0, 69, 0, 195, 0, 196, 0, 104,
208, 105, 0, 195, 104, 197, 105, 0, 198, 0,
197, 109, 198, 0, 114, 199, 0, 114, 112, 199,
0, 210, 0, 199, 112, 210, 0, 0, 201, 0,
69, 0, 33, 169, 0, 104, 105, 0, 104, 203,
105, 0, 204, 0, 203, 109, 204, 0, 210, 0,
210, 106, 205, 107, 0, 210, 106, 171, 107, 0,
205, 0, 102, 0, 9, 0, 10, 0, 0, 207,
0, 103, 0, 103, 52, 0, 103, 41, 0, 11,
0, 12, 0, 12, 0, 8, 0
};
#endif
......@@ -370,21 +370,21 @@ static const short yyrline[] = { 0,
892, 897, 907, 909, 912, 920, 926, 935, 941, 958,
960, 965, 969, 974, 979, 985, 989, 1000, 1009, 1018,
1029, 1051, 1055, 1061, 1067, 1073, 1079, 1088, 1097, 1103,
1117, 1141, 1148, 1162, 1171, 1181, 1191, 1199, 1220, 1229,
1238, 1239, 1241, 1248, 1260, 1270, 1272, 1277, 1281, 1285,
1289, 1292, 1297, 1309, 1325, 1336, 1350, 1352, 1353, 1354,
1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1368, 1370,
1371, 1374, 1381, 1393, 1395, 1399, 1403, 1404, 1405, 1406,
1407, 1411, 1412, 1413, 1414, 1418, 1419, 1426, 1426, 1427,
1427, 1428, 1430, 1432, 1437, 1441, 1450, 1454, 1459, 1463,
1469, 1479, 1483, 1486, 1489, 1494, 1503, 1511, 1517, 1524,
1532, 1540, 1549, 1552, 1557, 1559, 1560, 1561, 1564, 1568,
1573, 1577, 1588, 1593, 1598, 1605, 1611, 1615, 1620, 1626,
1638, 1640, 1643, 1647, 1650, 1655, 1659, 1667, 1682, 1688,
1695, 1708, 1720, 1735, 1739, 1756, 1758, 1761, 1765, 1771,
1774, 1776, 1776, 1796, 1801, 1806, 1812, 1818, 1826, 1834,
1842, 1849, 1859, 1864, 1894, 1896, 1899, 1904, 1908, 1914,
1919, 1926, 1933
1117, 1141, 1148, 1162, 1171, 1181, 1191, 1201, 1209, 1230,
1239, 1248, 1249, 1251, 1258, 1270, 1280, 1288, 1288, 1293,
1298, 1303, 1308, 1312, 1316, 1320, 1323, 1328, 1340, 1356,
1367, 1381, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390,
1391, 1392, 1393, 1399, 1401, 1402, 1405, 1412, 1424, 1426,
1430, 1434, 1435, 1436, 1437, 1438, 1442, 1443, 1444, 1445,
1449, 1450, 1457, 1457, 1458, 1458, 1459, 1461, 1463, 1468,
1472, 1481, 1485, 1490, 1494, 1500, 1510, 1514, 1517, 1520,
1525, 1534, 1542, 1548, 1555, 1563, 1571, 1580, 1583, 1588,
1590, 1591, 1592, 1595, 1599, 1604, 1608, 1619, 1623, 1628,
1635, 1641, 1645, 1650, 1656, 1668, 1670, 1673, 1677, 1680,
1685, 1689, 1697, 1712, 1718, 1725, 1738, 1750, 1765, 1769,
1786, 1791, 1794, 1799, 1821, 1826, 1831, 1837, 1843, 1851,
1859, 1867, 1874, 1884, 1889, 1919, 1921, 1924, 1929, 1933,
1939, 1944, 1951, 1958
};
#endif
......@@ -423,16 +423,15 @@ static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ",
"optUnique","ClassFieldList","ClassField","optWithSyntax","WithSyntax","@2",
"WithSyntaxFormat","WithSyntaxFormatToken","ExtensionAndException","Type","TypeDeclaration",
"ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
"ClassFieldIdentifier","ClassFieldName","ValueDefinition","InlineOrDefinedValue",
"@3","DefinedValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
"BasicType","BasicString","Union","Intersection","Except","optConstraints","Constraints",
"SetOfConstraints","ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement",
"ConstraintRangeSpec","ConstraintSpec","ConstraintValue","WithComponents","WithComponentsList",
"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
"ComponentIdList","optMarker","Marker","DefaultValue","@4","UniverationDefinition",
"UniverationList","UniverationElement","SignedNumber","optTag","Tag","TypeRefName",
"ObjectClassReference","Identifier", NULL
"ClassFieldIdentifier","ClassFieldName","ValueDefinition","Value","@3","DefinedValue",
"Opaque","BasicTypeId","BasicTypeId_UniverationCompatible","BasicType","BasicString",
"Union","Intersection","Except","optConstraints","Constraints","SetOfConstraints",
"ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement","ConstraintRangeSpec",
"ConstraintSpec","ConstraintValue","WithComponents","WithComponentsList","WithComponentsElement",
"optPresenceConstraint","PresenceConstraint","TableConstraint","SimpleTableConstraint",
"ComponentRelationConstraint","AtNotationList","AtNotationElement","ComponentIdList",
"optMarker","Marker","UniverationDefinition","UniverationList","UniverationElement",
"SignedNumber","optTag","Tag","TypeRefName","ObjectClassReference","Identifier", NULL
};
#endif
......@@ -448,21 +447,21 @@ static const short yyr1[] = { 0,
150, 151, 152, 152, 153, 153, 154, 154, 154, 155,
155, 157, 156, 158, 158, 159, 159, 160, 160, 160,
161, 162, 162, 162, 162, 162, 162, 162, 162, 162,
162, 162, 162, 163, 163, 163, 163, 163, 164, 164,
165, 166, 167, 167, 168, 170, 169, 169, 169, 169,
169, 169, 171, 171, 172, 172, 173, 173, 173, 173,
173, 173, 173, 173, 173, 173, 173, 173, 174, 174,
174, 175, 175, 176, 176, 176, 176, 176, 176, 176,
176, 176, 176, 176, 176, 176, 176, 177, 177, 178,
178, 179, 180, 180, 181, 181, 182, 182, 183, 183,
183, 184, 184, 184, 184, 185, 185, 185, 185, 185,
185, 185, 185, 185, 186, 186, 186, 186, 187, 187,
188, 188, 188, 188, 188, 189, 190, 190, 191, 191,
192, 192, 193, 193, 193, 194, 194, 195, 196, 197,
197, 198, 198, 199, 199, 200, 200, 201, 201, 202,
202, 203, 202, 204, 204, 205, 205, 206, 206, 206,
206, 206, 207, 207, 208, 208, 209, 209, 209, 210,
210, 211, 212
162, 162, 162, 163, 163, 163, 163, 163, 163, 164,
164, 165, 166, 167, 167, 168, 169, 170, 169, 169,
169, 169, 169, 169, 169, 169, 169, 171, 171, 172,
172, 173, 173, 173, 173, 173, 173, 173, 173, 173,
173, 173, 173, 174, 174, 174, 175, 175, 176, 176,
176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
176, 176, 177, 177, 178, 178, 179, 180, 180, 181,
181, 182, 182, 183, 183, 183, 184, 184, 184, 184,
185, 185, 185, 185, 185, 185, 185, 185, 185, 186,
186, 186, 186, 187, 187, 188, 188, 188, 188, 188,
189, 190, 190, 191, 191, 192, 192, 193, 193, 193,
194, 194, 195, 196, 197, 197, 198, 198, 199, 199,
200, 200, 201, 201, 202, 202, 203, 203, 204, 204,
204, 204, 204, 205, 205, 206, 206, 207, 207, 207,
208, 208, 209, 210
};
static const short yyr2[] = { 0,
......@@ -477,279 +476,271 @@ static const short yyr2[] = { 0,
1, 5, 0, 1, 1, 3, 2, 4, 4, 0,
1, 0, 6, 1, 2, 1, 1, 1, 3, 3,
3, 1, 1, 4, 4, 4, 5, 5, 1, 4,
4, 1, 3, 1, 3, 3, 1, 3, 1, 3,
1, 1, 1, 1, 4, 0, 3, 1, 1, 1,
1, 1, 1, 3, 1, 2, 1, 1, 1, 1,
2, 2, 1, 1, 2, 2, 1, 1, 1, 1,
2, 1, 2, 1, 1, 1, 1, 1, 1, 1,
4, 1, 3, 1, 3, 3, 3, 1, 3, 1,
3, 1, 1, 1, 1, 4, 3, 0, 3, 1,
1, 1, 1, 1, 1, 1, 1, 1, 3, 1,
2, 1, 1, 1, 1, 2, 2, 1, 1, 2,
2, 1, 1, 1, 1, 2, 1, 2, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 1, 1, 4, 3, 4, 1, 3,
5, 1, 3, 3, 3, 4, 3, 1, 3, 3,
3, 3, 1, 1, 1, 2, 2, 3, 1, 1,
1, 1, 1, 1, 1, 5, 1, 3, 1, 3,
0, 1, 1, 1, 1, 1, 1, 3, 4, 1,
3, 2, 3, 1, 3, 0, 1, 1, 2, 1,
1, 0, 3, 2, 3, 1, 3, 1, 4, 4,
1, 1, 1, 1, 0, 1, 1, 2, 2, 1,
1, 1, 1
1, 1, 1, 1, 1, 1, 1, 0, 1, 1,
4, 3, 4, 1, 3, 5, 1, 3, 3, 3,
4, 3, 1, 3, 3, 3, 3, 1, 1, 1,
2, 2, 3, 1, 1, 1, 1, 1, 1, 1,
5, 1, 3, 1, 3, 0, 1, 1, 1, 1,
1, 1, 3, 4, 1, 3, 2, 3, 1, 3,
0, 1, 1, 2, 2, 3, 1, 3, 1, 4,
4, 1, 1, 1, 1, 0, 1, 1, 2, 2,
1, 1, 1, 1
};
static const short yydefact[] = { 0,
250, 251, 1, 2, 5, 3, 0, 0, 6, 253,
251, 252, 1, 2, 5, 3, 0, 0, 6, 254,
13, 8, 0, 9, 11, 14, 7, 10, 0, 0,
0, 0, 0, 0, 0, 15, 16, 0, 22, 20,
18, 21, 19, 0, 17, 12, 23, 154, 0, 0,
155, 156, 157, 0, 158, 159, 167, 160, 161, 162,
163, 164, 165, 166, 0, 24, 25, 27, 28, 31,
18, 21, 19, 0, 17, 12, 23, 159, 0, 0,
160, 161, 162, 0, 163, 164, 172, 165, 166, 167,
168, 169, 170, 171, 0, 24, 25, 27, 28, 31,
29, 30, 34, 0, 0, 32, 0, 46, 0, 47,
49, 50, 36, 0, 37, 0, 40, 42, 43, 4,
26, 245, 114, 252, 0, 137, 0, 0, 150, 144,
148, 149, 138, 0, 0, 139, 143, 147, 0, 0,
52, 53, 140, 117, 0, 33, 45, 44, 0, 35,
38, 0, 0, 0, 247, 62, 61, 0, 246, 0,
151, 146, 145, 142, 141, 0, 64, 0, 66, 0,
0, 0, 48, 5, 41, 0, 249, 248, 114, 252,
109, 0, 0, 173, 173, 60, 173, 112, 152, 140,
102, 103, 0, 115, 116, 0, 0, 0, 0, 54,
123, 124, 118, 119, 121, 128, 130, 129, 243, 244,
126, 125, 132, 131, 0, 133, 39, 0, 85, 245,
122, 0, 0, 0, 0, 0, 0, 0, 174, 175,
0, 0, 101, 0, 153, 245, 245, 65, 68, 67,
203, 204, 200, 0, 199, 205, 0, 58, 0, 0,
0, 55, 56, 59, 182, 0, 188, 194, 193, 216,
217, 201, 202, 0, 0, 0, 90, 0, 0, 228,
226, 226, 87, 227, 0, 0, 98, 0, 78, 81,
245, 113, 0, 0, 0, 73, 77, 245, 0, 179,
245, 0, 0, 245, 242, 234, 0, 236, 241, 238,
0, 69, 71, 72, 63, 195, 0, 0, 0, 0,
0, 51, 0, 170, 171, 168, 169, 0, 0, 172,
0, 0, 0, 0, 120, 135, 127, 134, 0, 82,
91, 86, 232, 231, 230, 229, 83, 83, 110, 0,
104, 0, 80, 0, 245, 105, 0, 226, 177, 0,
0, 0, 106, 0, 235, 0, 0, 111, 245, 196,
197, 192, 190, 0, 218, 187, 57, 183, 184, 185,
0, 191, 189, 0, 0, 220, 136, 0, 0, 84,
88, 89, 99, 100, 79, 176, 76, 74, 75, 180,
107, 178, 108, 237, 0, 0, 70, 198, 209, 0,
207, 173, 186, 0, 222, 224, 219, 0, 92, 233,
0, 240, 239, 206, 0, 211, 223, 0, 221, 0,
181, 208, 214, 215, 213, 210, 212, 225, 96, 0,
94, 97, 93, 95, 0, 0, 0
26, 246, 114, 253, 0, 142, 0, 0, 155, 149,
153, 154, 143, 0, 0, 144, 148, 152, 0, 0,
52, 53, 145, 118, 0, 33, 45, 44, 0, 35,
38, 0, 0, 0, 248, 62, 61, 0, 247, 0,
156, 151, 150, 147, 146, 0, 64, 0, 66, 0,
0, 0, 48, 5, 41, 0, 250, 249, 114, 253,
109, 0, 0, 178, 178, 60, 178, 112, 157, 145,
102, 103, 0, 115, 117, 0, 0, 0, 0, 54,
124, 125, 119, 120, 122, 116, 133, 135, 134, 244,
245, 131, 130, 132, 128, 126, 137, 136, 0, 138,
39, 0, 85, 246, 123, 0, 0, 0, 0, 0,
0, 0, 179, 180, 0, 0, 101, 0, 158, 246,
246, 65, 68, 67, 208, 209, 205, 0, 204, 210,
0, 58, 0, 0, 0, 55, 56, 59, 187, 0,
193, 199, 198, 221, 222, 206, 207, 0, 0, 0,
0, 90, 0, 0, 233, 231, 231, 87, 232, 0,
0, 98, 0, 78, 81, 246, 113, 0, 0, 0,
73, 77, 246, 0, 184, 246, 0, 0, 246, 243,
235, 0, 237, 242, 239, 0, 69, 71, 72, 63,
200, 0, 0, 0, 0, 0, 51, 0, 175, 176,
173, 174, 0, 0, 177, 0, 0, 0, 0, 121,
140, 129, 139, 127, 0, 82, 91, 86, 234, 83,
83, 110, 0, 104, 0, 80, 0, 246, 105, 0,
231, 182, 0, 0, 0, 106, 0, 236, 0, 0,
111, 246, 201, 202, 197, 195, 0, 223, 192, 57,
188, 189, 190, 0, 196, 194, 0, 0, 225, 141,
0, 84, 88, 89, 99, 100, 138, 79, 181, 76,
74, 75, 185, 107, 183, 108, 238, 0, 0, 70,
203, 214, 0, 212, 178, 191, 0, 227, 229, 224,
0, 92, 0, 241, 240, 211, 0, 216, 228, 0,
226, 0, 186, 213, 219, 220, 218, 215, 217, 230,
96, 0, 94, 97, 93, 95, 0, 0, 0
};
static const short yydefgoto[] = { 395,
static const short yydefgoto[] = { 397,
3, 4, 8, 9, 13, 14, 25, 26, 27, 55,
56, 57, 106, 58, 74, 75, 76, 77, 59, 69,
70, 60, 100, 211, 212, 213, 61, 126, 127, 261,
262, 245, 246, 238, 239, 116, 341, 178, 179, 290,
291, 380, 390, 391, 247, 263, 147, 148, 163, 164,
180, 181, 62, 172, 225, 173, 287, 149, 103, 151,
152, 278, 279, 281, 188, 189, 190, 249, 250, 215,
268, 216, 217, 218, 360, 361, 386, 387, 219, 220,
221, 335, 336, 365, 233, 234, 296, 339, 195, 257,
258, 222, 235, 119, 153, 104, 223
70, 60, 100, 215, 216, 217, 61, 126, 127, 266,
267, 250, 251, 243, 244, 116, 343, 182, 183, 296,
297, 382, 392, 393, 252, 268, 147, 148, 163, 164,
184, 185, 62, 176, 229, 177, 292, 149, 103, 151,
152, 283, 284, 286, 192, 193, 194, 254, 255, 219,
273, 220, 221, 222, 363, 364, 388, 389, 223, 224,
225, 338, 339, 368, 238, 239, 199, 262, 263, 226,
240, 119, 179, 104, 227
};
static const short yypact[] = { 254,
-32768,-32768, 254,-32768, -79,-32768, 13, 7,-32768,-32768,
-32768,-32768, 35,-32768, -51, 202,-32768,-32768, 61, 20,
11, 19, 57, 44, 90, 202,-32768, 23,-32768,-32768,
-32768,-32768,-32768, 115,-32768,-32768, 351,-32768, 176, 12,
-32768,-32768,-32768, 174,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768, 151, 351,-32768,-32768,-32768,-32768,
-32768,-32768,-32768, 220, 565,-32768, 99,-32768, 199,-32768,
-32768,-32768,-32768, 24,-32768, -20,-32768,-32768,-32768,-32768,
-32768, -9, 106,-32768, 140,-32768, 145, 163,-32768,-32768,
-32768,-32768,-32768, 186, 182,-32768,-32768,-32768, 582, 249,
-32768,-32768,-32768, 143, 278,-32768,-32768,-32768, 228,-32768,
-32768, 254, 228, 180, 129,-32768,-32768, 428,-32768, 228,
-32768,-32768,-32768,-32768,-32768, 101,-32768, 147, 191, 195,
300, 74,-32768, -79,-32768, 300,-32768,-32768, 105, 214,
285, 217, 255, 89, 124,-32768, -40,-32768,-32768, 218,
-32768,-32768, 221,-32768,-32768, 328, 582, 324, 324, 51,
-32768,-32768, 222,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768, 223,-32768,-32768, 142,-32768, 40,
-32768, 308, 37, 304, 230, 48, 155, 269,-32768, 232,
48, 271,-32768, 42,-32768, 26, 237,-32768,-32768,-32768,
-32768,-32768,-32768, -26,-32768,-32768, 311,-32768, 254, 155,
238, 236,-32768, 206, 251, 242, -26,-32768,-32768, 245,
-32768,-32768,-32768, 300, 346, 324, 256, 300, 320,-32768,
5, 5,-32768,-32768, 505, 324, 241, 144,-32768,-32768,
237,-32768, 155, 286, 153,-32768,-32768, 237, 246, 171,
237, 155, 167, 237,-32768,-32768, 168,-32768,-32768, 252,
170,-32768,-32768,-32768,-32768, 248, 265, 82, 266, 250,
262,-32768, 51,-32768,-32768,-32768,-32768, 155, 155,-32768,
155, 155, 188, 258,-32768,-32768, 369,-32768, 293,-32768,
-32768,-32768,-32768,-32768,-32768,-32768, 288, 288,-32768, 280,
-32768, 37,-32768, 270, 237,-32768, 48, 5,-32768, 277,
505, 273,-32768, 505,-32768, 54, 280,-32768, 26,-32768,
268,-32768,-32768, 60,-32768,-32768,-32768,-32768,-32768,-32768,
275,-32768,-32768, 9, 177,-32768,-32768, 282, 346,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 279,
-32768,-32768,-32768,-32768, 283, 284,-32768,-32768,-32768, 189,
-32768, -40,-32768, 324, 272,-32768,-32768, 258,-32768, 369,
155,-32768,-32768,-32768, 60, 85, 272, 324,-32768, 94,
206,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 14,
-32768,-32768,-32768,-32768, 392, 394,-32768
static const short yypact[] = { 42,
-32768,-32768, 42,-32768, -6,-32768, 72, 111,-32768,-32768,
-32768,-32768, 74,-32768, -1, 162,-32768,-32768, 138, 99,
83, 91, 123, 97, 222, 162,-32768, 121,-32768,-32768,
-32768,-32768,-32768, 209,-32768,-32768, 313,-32768, 219, 33,
-32768,-32768,-32768, 96,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768, 210, 313,-32768,-32768,-32768,-32768,
-32768,-32768,-32768, 12, 527,-32768, 185,-32768, -18,-32768,
-32768,-32768,-32768, 49,-32768, -25,-32768,-32768,-32768,-32768,
-32768, -3, 145,-32768, 186,-32768, 202, 229,-32768,-32768,
-32768,-32768,-32768, 250, 223,-32768,-32768,-32768, 544, 302,
-32768,-32768,-32768, 194, 311,-32768,-32768,-32768, 158,-32768,
-32768, 42, 158, 214, 102,-32768,-32768, 390,-32768, 158,
-32768,-32768,-32768,-32768,-32768, 87,-32768, 213, 216, 225,
297, 254,-32768, -6,-32768, 124,-32768,-32768, -57, 231,
292, 233, 270, -12, 149,-32768, -37,-32768,-32768, 235,
-32768,-32768, 237,-32768,-32768, 339, 544, 335, 335, 152,
-32768,-32768, 232,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 238, 236,
-32768, 90,-32768, 176,-32768, 320, 8, 207, 241, 32,
140, 281,-32768, 246, 32, 285,-32768, 63,-32768, 20,
251,-32768,-32768,-32768,-32768,-32768,-32768, -16,-32768,-32768,
326,-32768, 42, 140, 252, 255,-32768, 234, 263, 259,
-16,-32768,-32768, 264,-32768,-32768,-32768, 124, 362, 335,
254, 274, 124, 254,-32768, 18, 18,-32768,-32768, 467,
335, 260, 101,-32768,-32768, 251,-32768, 140, 306, 131,
-32768,-32768, 251, 268, 177, 251, 140, 132, 251,-32768,
-32768, 134,-32768,-32768, 272, 164,-32768,-32768,-32768,-32768,
267, 275, 242, 277, 278, 279,-32768, 152,-32768,-32768,
-32768,-32768, 140, 140,-32768, 140, 140, 262, 271,-32768,
-32768, 378,-32768,-32768, 307,-32768,-32768,-32768,-32768, 296,
296,-32768, 280,-32768, 8,-32768, 283, 251,-32768, 32,
18,-32768, 286, 467, 284,-32768, 467,-32768, 10, 280,
-32768, 20,-32768, 282,-32768,-32768, 27,-32768,-32768,-32768,
-32768,-32768,-32768, 287,-32768,-32768, 5, 173,-32768,-32768,
288,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768, 290,-32768,-32768,-32768,-32768, 293, 303,-32768,
-32768,-32768, 175,-32768, -37,-32768, 335, 299,-32768,-32768,
271,-32768, 140,-32768,-32768,-32768, 27, 71, 299, 335,
-32768, 159, 234,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768, 13,-32768,-32768,-32768,-32768, 393, 397,-32768
};
static const short yypgoto[] = {-32768,
-32768, 395, 261,-32768,-32768, 389,-32768,-32768, 377,-32768,
-32768, 348,-32768,-32768,-32768, 333,-32768, 295,-32768,-32768,
303,-32768, 344,-32768,-32768, 141,-32768,-32768, 259,-32768,
100, 227, 113,-32768, 111,-32768, 123,-32768, 194,-32768,
-32768,-32768,-32768, 33, -169, -81, -173, -49,-32768, 203,
-177, -100,-32768,-32768,-32768, -252, 87, -52, -109,-32768,
67,-32768,-32768,-32768, -137,-32768,-32768, -44, -156, -107,
211,-32768, -56,-32768,-32768, 55,-32768,-32768,-32768,-32768,
-32768,-32768, 63, 65, -160,-32768,-32768,-32768,-32768,-32768,
116, -125, -71,-32768, 2,-32768, -7
-32768, 401, 289,-32768,-32768, 396,-32768,-32768, 389,-32768,
-32768, 363,-32768,-32768,-32768, 344,-32768, 308,-32768,-32768,
315,-32768, 355,-32768,-32768, 144,-32768,-32768, 276,-32768,
103, 240, 117,-32768, 126,-32768, 127,-32768, 196,-32768,
-32768,-32768,-32768, 40, -173, -75, -218, -53,-32768, 208,
-180, -109,-32768, -23,-32768, -167,-32768, -33, -110,-32768,
37,-32768,-32768,-32768, -144,-32768,-32768, -93, -151, 11,
220,-32768, -210,-32768,-32768, 65,-32768,-32768,-32768,-32768,
-32768,-32768, 73, 76, -172,-32768,-32768,-32768, 128, -103,
-72,-32768, 2,-32768, -7
};
#define YYLAST 673
#define YYLAST 635
static const short yytable[] = { 15,
117, 5, 232, 214, 5, 15, 174, 192, 150, 193,
118, 102, 102, 240, 101, 101, 10, 389, 114, 10,
10, 11, 1, 2, 7, 112, 161, 162, 67, 65,
165, 10, 72, 10, 1, 2, 79, 229, 64, 185,
16, 71, 10, 11, 10, 78, 128, 343, 65, 10,
169, 170, 161, 162, 19, 10, 201, 64, 10, 169,
170, 10, 169, 170, 355, 187, 79, 10, 259, 28,
297, 298, 229, 230, 266, 78, 29, 244, 166, 167,
168, 10, 169, 170, 1, 2, 267, 201, 113, 10,
169, 170, 34, 115, 30, 202, 203, 389, 231, 383,
129, 72, 31, 63, 128, 79, 161, 162, 230, 32,
71, 204, 155, 134, 78, 265, 214, 12, 393, 68,
364, 154, 63, 165, 176, 150, 202, 33, 115, 36,
205, 110, 240, 175, 242, 37, 206, 351, 237, 17,
353, 322, 115, 255, -226, 207, 256, 349, -226, 237,
199, 200, 208, 384, 209, 255, 210, 385, 129, 303,
201, 359, 10, 169, 170, 271, 308, 206, 185, 137,
328, 329, 295, 330, 344, 241, 294, 171, 248, 311,
138, 10, 314, 248, 1, 2, 260, 66, 264, 80,
259, 356, 186, 201, 187, 10, 169, 170, 304, 202,
203, 150, 392, 185, 150, 156, 107, 312, -250, 157,
270, 323, 392, 20, 381, 204, 120, 120, 288, 73,
121, 21, 82, 347, 376, 122, 333, 191, 299, 187,
83, 84, 202, 123, 205, 10, 124, 331, 1, 2,
206, 85, 22, 86, 23, 87, 227, 332, 301, 207,
228, 130, 302, 24, 131, 88, 158, 306, 209, 89,
210, 307, 125, 90, 1, 2, 91, 274, 275, 276,
277, 313, 315, 206, 318, 307, 316, 92, 319, 310,
132, 367, 93, 136, 94, 368, 95, 10, 169, 170,
1, 2, 176, 374, 241, 96, 97, 375, 160, 248,
159, 175, 274, 275, 276, 277, 108, 109, 260, 176,
98, 264, 161, 162, 83, 84, 362, -251, 175, 182,
183, 194, 184, 99, 196, 201, 366, 10, 169, 170,
197, 10, 236, 224, 226, 243, 251, 252, 254, 115,
269, 85, 272, 86, 273, 87, 280, 282, 284, 286,
289, 300, 309, 305, 325, 88, 366, 317, 10, 89,
320, 1, 2, 90, 202, 321, 91, 362, 326, 324,
388, 334, 337, 38, 338, 340, 346, 92, 350, 352,
358, 363, 93, 378, 94, 369, 95, 371, 39, 372,
373, 396, 40, 397, 177, 96, 97, 6, 41, 42,
43, 18, 35, 81, 44, 206, 111, 135, 105, 45,
98, 133, 345, 327, 46, 198, 47, 253, 357, 348,
342, 292, 394, 293, 48, 370, 285, 283, 377, 382,
379, 354, 0, 49, 0, 50, 0, 0, 139, 140,
51, 0, 52, 53, 54, 141, 0, 0, 0, 85,
38, 86, 0, 87, 142, 0, 0, 0, 0, 0,
0, 0, 0, 88, 0, 0, 0, 89, 0, 0,
0, 90, 0, 0, 91, 41, 42, 43, 0, 0,
0, 0, 0, 143, 0, 92, 45, 0, 0, 0,
93, 46, 94, 47, 95, 0, 0, 0, 0, 0,
0, 48, 0, 96, 97, 144, 145, 0, 0, 0,
49, 0, 50, 0, 146, 139, 140, 51, 98, 52,
53, 54, 141, 0, 0, 0, 85, 38, 86, 0,
87, 142, 0, 0, 0, 0, 0, 0, 0, 0,
88, 0, 0, 0, 89, 0, 0, 0, 90, 0,
0, 91, 41, 42, 43, 0, 0, 0, 0, 0,
143, 0, 92, 45, 0, 0, 0, 93, 46, 94,
47, 95, 0, 0, 0, 83, 84, 0, 48, 0,
96, 97, 144, 145, 0, 0, 85, 49, 86, 50,
87, 0, 1, 2, 51, 98, 52, 53, 54, 0,
88, 0, 0, 85, 89, 86, 0, 87, 90, 0,
0, 91, 0, 0, 0, 0, 0, 88, 0, 0,
0, 89, 92, 0, 0, 90, 0, 93, 91, 94,
0, 95, 0, 0, 0, 0, 0, 0, 0, 92,
96, 97, 0, 0, 93, 0, 94, 0, 95, 0,
0, 0, 0, 0, 0, 98, 0, 96, 97, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 98
196, 5, 197, 237, 5, 15, 117, 150, 218, 118,
101, 101, 10, 245, 82, 10, 391, 10, 170, 171,
112, 165, 83, 84, 114, 161, 162, 10, 178, 65,
102, 102, 72, 85, 10, 86, 79, 87, 64, 10,
10, 71, 189, 1, 2, 78, -251, 88, 65, 67,
234, 89, 1, 2, 120, 90, 10, 64, 91, 1,
2, 249, 326, 300, 301, 128, 79, 189, 191, 92,
10, 170, 171, 63, 93, 78, 94, 336, 95, 10,
11, 10, 11, 113, 271, 385, 235, 96, 97, 108,
109, 190, 63, 191, 264, 354, 272, 7, 356, 115,
129, 72, 98, 10, 19, 79, 1, 2, 236, 242,
71, 260, 155, 134, 78, 99, 367, 395, 165, 153,
276, 154, 115, 128, 180, 270, 218, 178, 362, 150,
178, 245, 166, 242, 247, 345, 161, 162, 352, 386,
68, 73, 137, 387, 16, 205, 28, 10, 170, 171,
203, 204, 358, 138, 307, 29, 110, 205, 129, 10,
170, 171, 391, 315, 260, 10, 30, 261, 1, 2,
306, 161, 162, 20, 31, 32, 12, 311, 17, 246,
33, 21, 253, 314, 206, 207, 317, 253, 161, 162,
265, 156, 269, 334, 232, 157, 206, 207, 233, 346,
208, 394, 22, 150, 23, 304, 150, 294, 234, 305,
299, 394, 208, 24, 275, 264, 359, 83, 84, 209,
378, 383, 293, 180, 34, 210, 180, 36, 189, 37,
66, 209, 350, 302, 211, 309, 316, 210, 318, 310,
310, 153, 319, 213, 235, 214, 211, 205, 80, 10,
170, 171, 195, 212, 191, 213, 120, 214, 167, 168,
169, 10, 170, 171, 1, 2, 121, 205, 321, 10,
170, 171, 322, 279, 280, 281, 282, 370, 115, 376,
-231, 371, 122, 377, -231, 313, 206, 10, 170, 171,
1, 2, 107, 331, 332, 347, 333, 246, 172, 123,
124, 325, 253, 125, 130, 131, 206, 1, 2, 161,
162, 265, 347, 132, 269, 153, 173, 136, 153, 365,
10, 335, 158, 1, 2, 159, 186, 210, 160, 369,
279, 280, 281, 282, -252, 38, 187, 188, 198, 174,
200, 201, 10, 228, 241, 231, 248, 210, 256, 230,
39, 257, 259, 115, 40, 274, 277, 175, 285, 369,
41, 42, 43, 278, 287, 291, 44, 289, 295, 365,
303, 45, 390, 308, 312, 324, 46, 320, 47, 323,
327, 340, 328, 342, 337, 329, 48, 353, 341, 349,
355, 372, 398, 366, 361, 49, 399, 50, 373, 374,
139, 140, 51, 6, 52, 53, 54, 141, 18, 375,
380, 85, 38, 86, 35, 87, 142, 111, 81, 105,
135, 330, 181, 133, 360, 88, 351, 344, 298, 89,
348, 396, 202, 90, 258, 290, 91, 41, 42, 43,
288, 384, 379, 381, 0, 143, 357, 92, 45, 0,
0, 0, 93, 46, 94, 47, 95, 0, 0, 0,
0, 0, 0, 48, 0, 96, 97, 144, 145, 0,
0, 0, 49, 0, 50, 0, 146, 139, 140, 51,
98, 52, 53, 54, 141, 0, 0, 0, 85, 38,
86, 0, 87, 142, 0, 0, 0, 0, 0, 0,
0, 0, 88, 0, 0, 0, 89, 0, 0, 0,
90, 0, 0, 91, 41, 42, 43, 0, 0, 0,
0, 0, 143, 0, 92, 45, 0, 0, 0, 93,
46, 94, 47, 95, 0, 0, 0, 83, 84, 0,
48, 0, 96, 97, 144, 145, 0, 0, 85, 49,
86, 50, 87, 0, 1, 2, 51, 98, 52, 53,
54, 0, 88, 0, 0, 85, 89, 86, 0, 87,
90, 0, 0, 91, 0, 0, 0, 0, 0, 88,
0, 0, 0, 89, 92, 0, 0, 90, 0, 93,
91, 94, 0, 95, 0, 0, 0, 0, 0, 0,
0, 92, 96, 97, 0, 0, 93, 0, 94, 0,
95, 0, 0, 0, 0, 0, 0, 98, 0, 96,
97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 98
};
static const short yycheck[] = { 7,
82, 0, 180, 160, 3, 13, 132, 145, 118, 147,
82, 64, 65, 183, 64, 65, 8, 4, 28, 8,
8, 9, 11, 12, 104, 46, 13, 14, 17, 37,
131, 8, 40, 8, 11, 12, 44, 33, 37, 80,
34, 40, 8, 9, 8, 44, 99, 300, 56, 8,
9, 10, 13, 14, 106, 8, 6, 56, 8, 9,
10, 8, 9, 10, 317, 106, 74, 8, 194, 9,
231, 232, 33, 69, 101, 74, 57, 30, 5, 6,
7, 8, 9, 10, 11, 12, 113, 6, 109, 8,
9, 10, 3, 103, 84, 45, 46, 4, 180, 15,
99, 109, 84, 37, 157, 113, 13, 14, 69, 53,
109, 61, 120, 112, 113, 197, 273, 105, 105, 108,
112, 120, 56, 224, 132, 235, 45, 84, 103, 107,
80, 108, 302, 132, 184, 21, 86, 311, 102, 105,
314, 60, 103, 102, 105, 95, 105, 308, 109, 102,
158, 159, 102, 69, 104, 102, 106, 73, 157, 241,
6, 102, 8, 9, 10, 210, 248, 86, 80, 41,
278, 279, 229, 281, 300, 183, 229, 104, 186, 251,
52, 8, 254, 191, 11, 12, 194, 12, 196, 39,
316, 317, 104, 6, 106, 8, 9, 10, 243, 45,
46, 311, 380, 80, 314, 105, 108, 252, 104, 109,
209, 268, 390, 12, 371, 61, 112, 112, 226, 46,
81, 20, 3, 305, 362, 81, 283, 104, 236, 106,
11, 12, 45, 71, 80, 8, 51, 282, 11, 12,
86, 22, 41, 24, 43, 26, 105, 60, 105, 95,
109, 3, 109, 52, 112, 36, 110, 105, 104, 40,
106, 109, 81, 44, 11, 12, 47, 97, 98, 99,
100, 105, 105, 86, 105, 109, 109, 58, 109, 109,
3, 105, 63, 104, 65, 109, 67, 8, 9, 10,
11, 12, 300, 105, 302, 76, 77, 109, 104, 307,
110, 300, 97, 98, 99, 100, 108, 109, 316, 317,
91, 319, 13, 14, 11, 12, 324, 104, 317, 35,
104, 104, 68, 104, 104, 6, 334, 8, 9, 10,
3, 8, 25, 112, 112, 106, 68, 106, 68, 103,
30, 22, 105, 24, 109, 26, 96, 106, 104, 4,
95, 111, 107, 68, 105, 36, 364, 106, 8, 40,
113, 11, 12, 44, 45, 101, 47, 375, 107, 104,
378, 114, 4, 23, 82, 88, 107, 58, 102, 107,
113, 107, 63, 112, 65, 104, 67, 109, 38, 107,
107, 0, 42, 0, 134, 76, 77, 3, 48, 49,
50, 13, 26, 56, 54, 86, 74, 113, 65, 59,
91, 109, 302, 273, 64, 157, 66, 191, 319, 307,
298, 228, 390, 104, 74, 339, 224, 217, 364, 375,
368, 316, -1, 83, -1, 85, -1, -1, 11, 12,
90, -1, 92, 93, 94, 18, -1, -1, -1, 22,
23, 24, -1, 26, 27, -1, -1, -1, -1, -1,
-1, -1, -1, 36, -1, -1, -1, 40, -1, -1,
-1, 44, -1, -1, 47, 48, 49, 50, -1, -1,
-1, -1, -1, 56, -1, 58, 59, -1, -1, -1,
63, 64, 65, 66, 67, -1, -1, -1, -1, -1,
-1, 74, -1, 76, 77, 78, 79, -1, -1, -1,
83, -1, 85, -1, 87, 11, 12, 90, 91, 92,
93, 94, 18, -1, -1, -1, 22, 23, 24, -1,
26, 27, -1, -1, -1, -1, -1, -1, -1, -1,
36, -1, -1, -1, 40, -1, -1, -1, 44, -1,
-1, 47, 48, 49, 50, -1, -1, -1, -1, -1,
56, -1, 58, 59, -1, -1, -1, 63, 64, 65,
66, 67, -1, -1, -1, 11, 12, -1, 74, -1,
76, 77, 78, 79, -1, -1, 22, 83, 24, 85,
26, -1, 11, 12, 90, 91, 92, 93, 94, -1,
36, -1, -1, 22, 40, 24, -1, 26, 44, -1,
-1, 47, -1, -1, -1, -1, -1, 36, -1, -1,
-1, 40, 58, -1, -1, 44, -1, 63, 47, 65,
-1, 67, -1, -1, -1, -1, -1, -1, -1, 58,
76, 77, -1, -1, 63, -1, 65, -1, 67, -1,
-1, -1, -1, -1, -1, 91, -1, 76, 77, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 91
145, 0, 147, 184, 3, 13, 82, 118, 160, 82,
64, 65, 8, 187, 3, 8, 4, 8, 9, 10,
46, 131, 11, 12, 28, 13, 14, 8, 132, 37,
64, 65, 40, 22, 8, 24, 44, 26, 37, 8,
8, 40, 80, 11, 12, 44, 104, 36, 56, 17,
33, 40, 11, 12, 112, 44, 8, 56, 47, 11,
12, 30, 273, 236, 237, 99, 74, 80, 106, 58,
8, 9, 10, 37, 63, 74, 65, 288, 67, 8,
9, 8, 9, 109, 101, 15, 69, 76, 77, 108,
109, 104, 56, 106, 198, 314, 113, 104, 317, 103,
99, 109, 91, 8, 106, 113, 11, 12, 184, 102,
109, 102, 120, 112, 113, 104, 112, 105, 228, 118,
214, 120, 103, 157, 132, 201, 278, 231, 102, 240,
234, 305, 131, 102, 188, 303, 13, 14, 311, 69,
108, 46, 41, 73, 34, 6, 9, 8, 9, 10,
158, 159, 320, 52, 248, 57, 108, 6, 157, 8,
9, 10, 4, 257, 102, 8, 84, 105, 11, 12,
246, 13, 14, 12, 84, 53, 105, 253, 105, 187,
84, 20, 190, 256, 45, 46, 259, 195, 13, 14,
198, 105, 200, 287, 105, 109, 45, 46, 109, 303,
61, 382, 41, 314, 43, 105, 317, 231, 33, 109,
234, 392, 61, 52, 213, 319, 320, 11, 12, 80,
365, 373, 230, 231, 3, 86, 234, 107, 80, 21,
12, 80, 308, 241, 95, 105, 105, 86, 105, 109,
109, 240, 109, 104, 69, 106, 95, 6, 39, 8,
9, 10, 104, 102, 106, 104, 112, 106, 5, 6,
7, 8, 9, 10, 11, 12, 81, 6, 105, 8,
9, 10, 109, 97, 98, 99, 100, 105, 103, 105,
105, 109, 81, 109, 109, 109, 45, 8, 9, 10,
11, 12, 108, 283, 284, 303, 286, 305, 45, 71,
51, 60, 310, 81, 3, 112, 45, 11, 12, 13,
14, 319, 320, 3, 322, 314, 63, 104, 317, 327,
8, 60, 110, 11, 12, 110, 35, 86, 104, 337,
97, 98, 99, 100, 104, 23, 104, 68, 104, 86,
104, 3, 8, 112, 25, 110, 106, 86, 68, 112,
38, 106, 68, 103, 42, 30, 105, 104, 96, 367,
48, 49, 50, 109, 106, 4, 54, 104, 95, 377,
111, 59, 380, 68, 107, 101, 64, 106, 66, 113,
104, 4, 105, 88, 114, 107, 74, 102, 82, 107,
107, 104, 0, 107, 113, 83, 0, 85, 109, 107,
11, 12, 90, 3, 92, 93, 94, 18, 13, 107,
112, 22, 23, 24, 26, 26, 27, 74, 56, 65,
113, 278, 134, 109, 322, 36, 310, 301, 233, 40,
305, 392, 157, 44, 195, 228, 47, 48, 49, 50,
221, 377, 367, 371, -1, 56, 319, 58, 59, -1,
-1, -1, 63, 64, 65, 66, 67, -1, -1, -1,
-1, -1, -1, 74, -1, 76, 77, 78, 79, -1,
-1, -1, 83, -1, 85, -1, 87, 11, 12, 90,
91, 92, 93, 94, 18, -1, -1, -1, 22, 23,
24, -1, 26, 27, -1, -1, -1, -1, -1, -1,
-1, -1, 36, -1, -1, -1, 40, -1, -1, -1,
44, -1, -1, 47, 48, 49, 50, -1, -1, -1,
-1, -1, 56, -1, 58, 59, -1, -1, -1, 63,
64, 65, 66, 67, -1, -1, -1, 11, 12, -1,
74, -1, 76, 77, 78, 79, -1, -1, 22, 83,
24, 85, 26, -1, 11, 12, 90, 91, 92, 93,
94, -1, 36, -1, -1, 22, 40, 24, -1, 26,
44, -1, -1, 47, -1, -1, -1, -1, -1, 36,
-1, -1, -1, 40, 58, -1, -1, 44, -1, 63,
47, 65, -1, 67, -1, -1, -1, -1, -1, -1,
-1, 58, 76, 77, -1, -1, 63, -1, 65, -1,
67, -1, -1, -1, -1, -1, -1, 91, -1, 76,
77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 91
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/share/bison.simple"
......@@ -2283,13 +2274,26 @@ case 116:
checkmem(yyval.a_ref);
ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
checkmem(ret == 0);
ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
checkmem(ret == 0);
free(yyvsp[-2].tv_str);
;
break;}
case 117:
#line 1191 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
checkmem(yyval.a_ref);
ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
checkmem(ret == 0);
ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
checkmem(ret == 0);
free(yyvsp[-2].tv_str);
;
break;}
case 118:
#line 1201 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
......@@ -2299,8 +2303,8 @@ case 117:
checkmem(ret == 0);
;
break;}
case 118:
#line 1199 "asn1p_y.y"
case 119:
#line 1209 "asn1p_y.y"
{
int ret;
yyval.a_ref = yyvsp[0].a_ref;
......@@ -2321,8 +2325,8 @@ case 118:
}
;
break;}
case 119:
#line 1221 "asn1p_y.y"
case 120:
#line 1231 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
......@@ -2332,8 +2336,8 @@ case 119:
checkmem(ret == 0);
;
break;}
case 120:
#line 1229 "asn1p_y.y"
case 121:
#line 1239 "asn1p_y.y"
{
int ret;
yyval.a_ref = yyvsp[-2].a_ref;
......@@ -2342,22 +2346,22 @@ case 120:
checkmem(ret == 0);
;
break;}
case 123:
#line 1243 "asn1p_y.y"
case 124:
#line 1253 "asn1p_y.y"
{
yyval.a_refcomp.lex_type = RLT_AmpUppercase;
yyval.a_refcomp.name = yyvsp[0].tv_str;
;
break;}
case 124:
#line 1248 "asn1p_y.y"
case 125:
#line 1258 "asn1p_y.y"
{
yyval.a_refcomp.lex_type = RLT_Amplowercase;
yyval.a_refcomp.name = yyvsp[0].tv_str;
;
break;}
case 125:
#line 1261 "asn1p_y.y"
case 126:
#line 1271 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
assert(yyval.a_expr->Identifier == NULL);
......@@ -2366,53 +2370,87 @@ case 125:
yyval.a_expr->value = yyvsp[0].a_value;
;
break;}
case 126:
#line 1271 "asn1p_y.y"
case 127:
#line 1281 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_CHOICE_IDENTIFIER;
yyval.a_value->value.choice_identifier.identifier = yyvsp[-2].tv_str;
yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
;
break;}
case 128:
#line 1288 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
case 127:
#line 1272 "asn1p_y.y"
case 129:
#line 1288 "asn1p_y.y"
{
yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_UNPARSED;
;
break;}
case 128:
#line 1277 "asn1p_y.y"
case 130:
#line 1293 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_NULL;
;
break;}
case 131:
#line 1298 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_FALSE;
;
break;}
case 132:
#line 1303 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_TRUE;
;
break;}
case 133:
#line 1308 "asn1p_y.y"
{
yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
checkmem(yyval.a_value);
;
break;}
case 129:
#line 1281 "asn1p_y.y"
case 134:
#line 1312 "asn1p_y.y"
{
yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
checkmem(yyval.a_value);
;
break;}
case 130:
#line 1285 "asn1p_y.y"
case 135:
#line 1316 "asn1p_y.y"
{
yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
checkmem(yyval.a_value);
;
break;}
case 131:
#line 1289 "asn1p_y.y"
case 136:
#line 1320 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 132:
#line 1292 "asn1p_y.y"
case 137:
#line 1323 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 133:
#line 1298 "asn1p_y.y"
case 138:
#line 1329 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
......@@ -2425,8 +2463,8 @@ case 133:
free(yyvsp[0].tv_str);
;
break;}
case 134:
#line 1309 "asn1p_y.y"
case 139:
#line 1340 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
......@@ -2442,8 +2480,8 @@ case 134:
free(yyvsp[0].tv_str);
;
break;}
case 135:
#line 1326 "asn1p_y.y"
case 140:
#line 1357 "asn1p_y.y"
{
yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 2;
yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
......@@ -2455,8 +2493,8 @@ case 135:
free(yyvsp[0].tv_opaque.buf);
;
break;}
case 136:
#line 1336 "asn1p_y.y"
case 141:
#line 1367 "asn1p_y.y"
{
int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
char *p = malloc(newsize + 1);
......@@ -2470,68 +2508,68 @@ case 136:
yyval.tv_opaque.len = newsize;
;
break;}
case 137:
#line 1351 "asn1p_y.y"
case 142:
#line 1382 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
break;}
case 138:
#line 1352 "asn1p_y.y"
case 143:
#line 1383 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
break;}
case 139:
#line 1353 "asn1p_y.y"
case 144:
#line 1384 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
break;}
case 140:
#line 1354 "asn1p_y.y"
case 145:
#line 1385 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
break;}
case 141:
#line 1355 "asn1p_y.y"
case 146:
#line 1386 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
break;}
case 142:
#line 1356 "asn1p_y.y"
case 147:
#line 1387 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
break;}
case 143:
#line 1357 "asn1p_y.y"
case 148:
#line 1388 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
break;}
case 144:
#line 1358 "asn1p_y.y"
case 149:
#line 1389 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
break;}
case 145:
#line 1359 "asn1p_y.y"
case 150:
#line 1390 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
break;}
case 146:
#line 1360 "asn1p_y.y"
case 151:
#line 1391 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
break;}
case 147:
#line 1361 "asn1p_y.y"
case 152:
#line 1392 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
break;}
case 148:
#line 1362 "asn1p_y.y"
case 153:
#line 1393 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
break;}
case 149:
#line 1369 "asn1p_y.y"
case 154:
#line 1400 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
break;}
case 150:
#line 1370 "asn1p_y.y"
case 155:
#line 1401 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
break;}
case 151:
#line 1371 "asn1p_y.y"
case 156:
#line 1402 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
break;}
case 152:
#line 1375 "asn1p_y.y"
case 157:
#line 1406 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2539,8 +2577,8 @@ case 152:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
case 153:
#line 1381 "asn1p_y.y"
case 158:
#line 1412 "asn1p_y.y"
{
if(yyvsp[0].a_expr) {
yyval.a_expr = yyvsp[0].a_expr;
......@@ -2552,92 +2590,92 @@ case 153:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
case 154:
#line 1394 "asn1p_y.y"
case 159:
#line 1425 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
break;}
case 155:
#line 1395 "asn1p_y.y"
case 160:
#line 1426 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GeneralString;
fprintf(stderr, "WARNING: GeneralString is not fully supported");
fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
;
break;}
case 156:
#line 1399 "asn1p_y.y"
case 161:
#line 1430 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GraphicString;
fprintf(stderr, "WARNING: GraphicString is not fully supported");
fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
;
break;}
case 157:
#line 1403 "asn1p_y.y"
case 162:
#line 1434 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
break;}
case 158:
#line 1404 "asn1p_y.y"
case 163:
#line 1435 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
break;}
case 159:
#line 1405 "asn1p_y.y"
case 164:
#line 1436 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
break;}
case 160:
#line 1406 "asn1p_y.y"
case 165:
#line 1437 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
break;}
case 161:
#line 1407 "asn1p_y.y"
case 166:
#line 1438 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_T61String;
fprintf(stderr, "WARNING: T61String is not fully supported");
fprintf(stderr, "WARNING: T61String is not fully supported\n");
;
break;}
case 162:
#line 1411 "asn1p_y.y"
case 167:
#line 1442 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
break;}
case 163:
#line 1412 "asn1p_y.y"
case 168:
#line 1443 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
break;}
case 164:
#line 1413 "asn1p_y.y"
case 169:
#line 1444 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
break;}
case 165:
#line 1414 "asn1p_y.y"
case 170:
#line 1445 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_VideotexString;
fprintf(stderr, "WARNING: VideotexString is not fully supported");
fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
;
break;}
case 166:
#line 1418 "asn1p_y.y"
case 171:
#line 1449 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
break;}
case 167:
#line 1419 "asn1p_y.y"
case 172:
#line 1450 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
break;}
case 173:
#line 1431 "asn1p_y.y"
case 178:
#line 1462 "asn1p_y.y"
{ yyval.a_constr = 0; ;
break;}
case 174:
#line 1432 "asn1p_y.y"
case 179:
#line 1463 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 175:
#line 1438 "asn1p_y.y"
case 180:
#line 1469 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
;
break;}
case 176:
#line 1441 "asn1p_y.y"
case 181:
#line 1472 "asn1p_y.y"
{
/*
* This is a special case, for compatibility purposes.
......@@ -2646,26 +2684,26 @@ case 176:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
;
break;}
case 177:
#line 1451 "asn1p_y.y"
case 182:
#line 1482 "asn1p_y.y"
{
yyval.a_constr = yyvsp[-1].a_constr;
;
break;}
case 178:
#line 1454 "asn1p_y.y"
case 183:
#line 1485 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
case 179:
#line 1460 "asn1p_y.y"
case 184:
#line 1491 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 180:
#line 1463 "asn1p_y.y"
case 185:
#line 1494 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
......@@ -2673,8 +2711,8 @@ case 180:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
;
break;}
case 181:
#line 1469 "asn1p_y.y"
case 186:
#line 1500 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
......@@ -2684,32 +2722,32 @@ case 181:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
;
break;}
case 182:
#line 1480 "asn1p_y.y"
case 187:
#line 1511 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 183:
#line 1483 "asn1p_y.y"
case 188:
#line 1514 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 184:
#line 1486 "asn1p_y.y"
case 189:
#line 1517 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 185:
#line 1489 "asn1p_y.y"
case 190:
#line 1520 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 186:
#line 1495 "asn1p_y.y"
case 191:
#line 1526 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
......@@ -2719,8 +2757,8 @@ case 186:
checkmem(ret == 0);
;
break;}
case 187:
#line 1503 "asn1p_y.y"
case 192:
#line 1534 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
......@@ -2730,8 +2768,8 @@ case 187:
checkmem(ret == 0);
;
break;}
case 188:
#line 1511 "asn1p_y.y"
case 193:
#line 1542 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2739,8 +2777,8 @@ case 188:
yyval.a_constr->value = yyvsp[0].a_value;
;
break;}
case 189:
#line 1517 "asn1p_y.y"
case 194:
#line 1548 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2749,8 +2787,8 @@ case 189:
yyval.a_constr->range_stop = yyvsp[0].a_value;
;
break;}
case 190:
#line 1524 "asn1p_y.y"
case 195:
#line 1555 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2760,8 +2798,8 @@ case 190:
yyval.a_constr->range_start->type = ATV_MIN;
;
break;}
case 191:
#line 1532 "asn1p_y.y"
case 196:
#line 1563 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2771,8 +2809,8 @@ case 191:
yyval.a_constr->range_stop->type = ATV_MAX;
;
break;}
case 192:
#line 1540 "asn1p_y.y"
case 197:
#line 1571 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2783,54 +2821,54 @@ case 192:
yyval.a_constr->range_stop->type = ATV_MAX;
;
break;}
case 193:
#line 1549 "asn1p_y.y"
case 198:
#line 1580 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 194:
#line 1552 "asn1p_y.y"
case 199:
#line 1583 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 195:
#line 1558 "asn1p_y.y"
case 200:
#line 1589 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
break;}
case 196:
#line 1559 "asn1p_y.y"
case 201:
#line 1590 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
break;}
case 197:
#line 1560 "asn1p_y.y"
case 202:
#line 1591 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
break;}
case 198:
#line 1561 "asn1p_y.y"
case 203:
#line 1592 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
break;}
case 199:
#line 1565 "asn1p_y.y"
case 204:
#line 1596 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_SIZE;
;
break;}
case 200:
#line 1568 "asn1p_y.y"
case 205:
#line 1599 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_FROM;
;
break;}
case 201:
#line 1574 "asn1p_y.y"
case 206:
#line 1605 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 202:
#line 1577 "asn1p_y.y"
case 207:
#line 1608 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
......@@ -2843,57 +2881,57 @@ case 202:
free(yyvsp[0].tv_str);
;
break;}
case 203:
#line 1588 "asn1p_y.y"
case 208:
#line 1619 "asn1p_y.y"
{
yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
checkmem(yyval.a_value);
;
break;}
case 204:
#line 1593 "asn1p_y.y"
case 209:
#line 1623 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_FALSE;
;
break;}
case 205:
#line 1598 "asn1p_y.y"
case 210:
#line 1628 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(1);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_TRUE;
;
break;}
case 206:
#line 1606 "asn1p_y.y"
case 211:
#line 1636 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
;
break;}
case 207:
#line 1612 "asn1p_y.y"
case 212:
#line 1642 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 208:
#line 1615 "asn1p_y.y"
case 213:
#line 1645 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 209:
#line 1621 "asn1p_y.y"
case 214:
#line 1651 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
yyval.a_constr->type = ACT_EL_EXT;
;
break;}
case 210:
#line 1626 "asn1p_y.y"
case 215:
#line 1656 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2902,46 +2940,46 @@ case 210:
yyval.a_constr->presence = yyvsp[0].a_pres;
;
break;}
case 211:
#line 1639 "asn1p_y.y"
case 216:
#line 1669 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
break;}
case 212:
#line 1640 "asn1p_y.y"
case 217:
#line 1670 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
break;}
case 213:
#line 1644 "asn1p_y.y"
case 218:
#line 1674 "asn1p_y.y"
{
yyval.a_pres = ACPRES_PRESENT;
;
break;}
case 214:
#line 1647 "asn1p_y.y"
case 219:
#line 1677 "asn1p_y.y"
{
yyval.a_pres = ACPRES_ABSENT;
;
break;}
case 215:
#line 1650 "asn1p_y.y"
case 220:
#line 1680 "asn1p_y.y"
{
yyval.a_pres = ACPRES_OPTIONAL;
;
break;}
case 216:
#line 1656 "asn1p_y.y"
case 221:
#line 1686 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 217:
#line 1659 "asn1p_y.y"
case 222:
#line 1689 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 218:
#line 1668 "asn1p_y.y"
case 223:
#line 1698 "asn1p_y.y"
{
asn1p_ref_t *ref = asn1p_ref_new(yylineno);
asn1p_constraint_t *ct;
......@@ -2955,14 +2993,14 @@ case 218:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
;
break;}
case 219:
#line 1683 "asn1p_y.y"
case 224:
#line 1713 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
case 220:
#line 1689 "asn1p_y.y"
case 225:
#line 1719 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2970,8 +3008,8 @@ case 220:
yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
;
break;}
case 221:
#line 1695 "asn1p_y.y"
case 226:
#line 1725 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
......@@ -2981,8 +3019,8 @@ case 221:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
;
break;}
case 222:
#line 1709 "asn1p_y.y"
case 227:
#line 1739 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
int ret;
......@@ -2995,8 +3033,8 @@ case 222:
free(yyvsp[0].tv_str);
;
break;}
case 223:
#line 1720 "asn1p_y.y"
case 228:
#line 1750 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
int ret;
......@@ -3010,14 +3048,14 @@ case 223:
free(yyvsp[0].tv_str);
;
break;}
case 224:
#line 1736 "asn1p_y.y"
case 229:
#line 1766 "asn1p_y.y"
{
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 225:
#line 1739 "asn1p_y.y"
case 230:
#line 1769 "asn1p_y.y"
{
int l1 = strlen(yyvsp[-2].tv_str);
int l3 = strlen(yyvsp[0].tv_str);
......@@ -3028,76 +3066,61 @@ case 225:
yyval.tv_str[l1 + 1 + l3] = '\0';
;
break;}
case 226:
#line 1757 "asn1p_y.y"
{ yyval.a_marker = EM_NOMARK; ;
break;}
case 227:
#line 1758 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
break;}
case 228:
#line 1762 "asn1p_y.y"
{
yyval.a_marker = EM_OPTIONAL;
;
break;}
case 229:
#line 1765 "asn1p_y.y"
{
yyval.a_marker = EM_DEFAULT;
/* FIXME: store DefaultValue somewhere */
;
break;}
case 230:
#line 1772 "asn1p_y.y"
{
;
break;}
case 231:
#line 1774 "asn1p_y.y"
#line 1787 "asn1p_y.y"
{
yyval.a_marker.flags = EM_NOMARK;
yyval.a_marker.default_value = 0;
;
break;}
case 232:
#line 1776 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
#line 1791 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
break;}
case 233:
#line 1776 "asn1p_y.y"
#line 1795 "asn1p_y.y"
{
yyval.a_marker.flags = EM_OPTIONAL;
yyval.a_marker.default_value = 0;
;
break;}
case 234:
#line 1797 "asn1p_y.y"
#line 1799 "asn1p_y.y"
{
yyval.a_marker.flags = EM_DEFAULT;
yyval.a_marker.default_value = yyvsp[0].a_value;
;
break;}
case 235:
#line 1822 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
;
break;}
case 235:
#line 1801 "asn1p_y.y"
case 236:
#line 1826 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
;
break;}
case 236:
#line 1807 "asn1p_y.y"
case 237:
#line 1832 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 237:
#line 1812 "asn1p_y.y"
case 238:
#line 1837 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 238:
#line 1819 "asn1p_y.y"
case 239:
#line 1844 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3106,8 +3129,8 @@ case 238:
yyval.a_expr->Identifier = yyvsp[0].tv_str;
;
break;}
case 239:
#line 1826 "asn1p_y.y"
case 240:
#line 1851 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3117,8 +3140,8 @@ case 239:
yyval.a_expr->value = yyvsp[-1].a_value;
;
break;}
case 240:
#line 1834 "asn1p_y.y"
case 241:
#line 1859 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3128,8 +3151,8 @@ case 240:
yyval.a_expr->value = yyvsp[-1].a_value;
;
break;}
case 241:
#line 1842 "asn1p_y.y"
case 242:
#line 1867 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3138,8 +3161,8 @@ case 241:
yyval.a_expr->value = yyvsp[0].a_value;
;
break;}
case 242:
#line 1849 "asn1p_y.y"
case 243:
#line 1874 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3149,72 +3172,72 @@ case 242:
yyval.a_expr->meta_type = AMT_VALUE;
;
break;}
case 243:
#line 1860 "asn1p_y.y"
case 244:
#line 1885 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
case 244:
#line 1864 "asn1p_y.y"
case 245:
#line 1889 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
case 245:
#line 1895 "asn1p_y.y"
case 246:
#line 1920 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
break;}
case 246:
#line 1896 "asn1p_y.y"
case 247:
#line 1921 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
break;}
case 247:
#line 1900 "asn1p_y.y"
case 248:
#line 1925 "asn1p_y.y"
{
yyval.a_tag = yyvsp[0].a_tag;
yyval.a_tag.tag_mode = TM_DEFAULT;
;
break;}
case 248:
#line 1904 "asn1p_y.y"
case 249:
#line 1929 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-1].a_tag;
yyval.a_tag.tag_mode = TM_IMPLICIT;
;
break;}
case 249:
#line 1908 "asn1p_y.y"
case 250:
#line 1933 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-1].a_tag;
yyval.a_tag.tag_mode = TM_EXPLICIT;
;
break;}
case 250:
#line 1915 "asn1p_y.y"
case 251:
#line 1940 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 251:
#line 1919 "asn1p_y.y"
case 252:
#line 1944 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 252:
#line 1927 "asn1p_y.y"
case 253:
#line 1952 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 253:
#line 1934 "asn1p_y.y"
case 254:
#line 1959 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
......@@ -3442,7 +3465,7 @@ yyerrhandle:
}
return 1;
}
#line 1940 "asn1p_y.y"
#line 1965 "asn1p_y.y"
......
......@@ -17,7 +17,7 @@ typedef union {
asn1p_value_t *a_value; /* Number, DefinedValue, etc */
struct asn1p_param_s a_parg; /* A parameter argument */
asn1p_paramlist_t *a_plist; /* A pargs list */
enum asn1p_expr_marker_e a_marker; /* OPTIONAL/DEFAULT */
struct asn1p_expr_marker_s a_marker; /* OPTIONAL/DEFAULT */
enum asn1p_constr_pres_e a_pres; /* PRESENT/ABSENT/OPTIONAL */
asn1_integer_t a_int;
char *tv_str;
......
......@@ -74,7 +74,7 @@ static asn1p_value_t *
asn1p_value_t *a_value; /* Number, DefinedValue, etc */
struct asn1p_param_s a_parg; /* A parameter argument */
asn1p_paramlist_t *a_plist; /* A pargs list */
enum asn1p_expr_marker_e a_marker; /* OPTIONAL/DEFAULT */
struct asn1p_expr_marker_s a_marker; /* OPTIONAL/DEFAULT */
enum asn1p_constr_pres_e a_pres; /* PRESENT/ABSENT/OPTIONAL */
asn1_integer_t a_int;
char *tv_str;
......@@ -236,7 +236,7 @@ static asn1p_value_t *
%type <a_expr> optValueSetBody
%type <a_expr> ValueSetBody
%type <a_expr> ValueSetElement
%type <a_value> InlineOrDefinedValue
%type <a_value> Value
%type <a_value> DefinedValue
%type <a_value> SignedNumber
%type <a_expr> ComponentTypeLists
......@@ -1178,6 +1178,16 @@ ComplexTypeReference:
checkmem(ret == 0);
free($1);
}
| ObjectClassReference '.' TypeRefName {
int ret;
$$ = asn1p_ref_new(yylineno);
checkmem($$);
ret = asn1p_ref_add_component($$, $1, RLT_UNKNOWN);
checkmem(ret == 0);
ret = asn1p_ref_add_component($$, $3, RLT_UNKNOWN);
checkmem(ret == 0);
free($1);
}
| TOK_typereference '.' Identifier {
int ret;
$$ = asn1p_ref_new(yylineno);
......@@ -1258,7 +1268,7 @@ ClassFieldName:
* === EOF ===
*/
ValueDefinition:
Identifier DefinedTypeRef TOK_PPEQ InlineOrDefinedValue {
Identifier DefinedTypeRef TOK_PPEQ Value {
$$ = $2;
assert($$->Identifier == NULL);
$$->Identifier = $1;
......@@ -1267,13 +1277,34 @@ ValueDefinition:
}
;
InlineOrDefinedValue:
'{' { asn1p_lexer_hack_push_opaque_state(); }
Opaque /* '}' */ {
Value:
Identifier ':' Value {
$$ = asn1p_value_fromint(0);
checkmem($$);
$$->type = ATV_CHOICE_IDENTIFIER;
$$->value.choice_identifier.identifier = $1;
$$->value.choice_identifier.value = $3;
}
| '{' { asn1p_lexer_hack_push_opaque_state(); } Opaque /* '}' */ {
$$ = asn1p_value_frombuf($3.buf, $3.len, 0);
checkmem($$);
$$->type = ATV_UNPARSED;
}
| TOK_NULL {
$$ = asn1p_value_fromint(0);
checkmem($$);
$$->type = ATV_NULL;
}
| TOK_FALSE {
$$ = asn1p_value_fromint(0);
checkmem($$);
$$->type = ATV_FALSE;
}
| TOK_TRUE {
$$ = asn1p_value_fromint(0);
checkmem($$);
$$->type = ATV_TRUE;
}
| TOK_bstring {
$$ = _convert_bitstring2binary($1, 'B');
checkmem($$);
......@@ -1394,11 +1425,11 @@ BasicString:
TOK_BMPString { $$ = ASN_STRING_BMPString; }
| TOK_GeneralString {
$$ = ASN_STRING_GeneralString;
fprintf(stderr, "WARNING: GeneralString is not fully supported");
fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
}
| TOK_GraphicString {
$$ = ASN_STRING_GraphicString;
fprintf(stderr, "WARNING: GraphicString is not fully supported");
fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
}
| TOK_IA5String { $$ = ASN_STRING_IA5String; }
| TOK_ISO646String { $$ = ASN_STRING_ISO646String; }
......@@ -1406,14 +1437,14 @@ BasicString:
| TOK_PrintableString { $$ = ASN_STRING_PrintableString; }
| TOK_T61String {
$$ = ASN_STRING_T61String;
fprintf(stderr, "WARNING: T61String is not fully supported");
fprintf(stderr, "WARNING: T61String is not fully supported\n");
}
| TOK_TeletexString { $$ = ASN_STRING_TeletexString; }
| TOK_UniversalString { $$ = ASN_STRING_UniversalString; }
| TOK_UTF8String { $$ = ASN_STRING_UTF8String; }
| TOK_VideotexString {
$$ = ASN_STRING_VideotexString;
fprintf(stderr, "WARNING: VideotexString is not fully supported");
fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
}
| TOK_VisibleString { $$ = ASN_STRING_VisibleString; }
| TOK_ObjectDescriptor { $$ = ASN_STRING_ObjectDescriptor; }
......@@ -1589,7 +1620,6 @@ ConstraintValue:
$$ = asn1p_value_frombuf($1.buf, $1.len, 0);
checkmem($$);
}
| TOK_FALSE {
$$ = asn1p_value_fromint(0);
checkmem($$);
......@@ -1754,26 +1784,21 @@ ComponentIdList:
*/
optMarker:
{ $$ = EM_NOMARK; }
{
$$.flags = EM_NOMARK;
$$.default_value = 0;
}
| Marker { $$ = $1; }
;
Marker:
TOK_OPTIONAL {
$$ = EM_OPTIONAL;
}
| TOK_DEFAULT DefaultValue {
$$ = EM_DEFAULT;
/* FIXME: store DefaultValue somewhere */
}
;
DefaultValue:
ConstraintValue {
}
| BasicTypeId {
$$.flags = EM_OPTIONAL;
$$.default_value = 0;
}
| '{' { asn1p_lexer_hack_push_opaque_state(); } Opaque /* '}' */ {
| TOK_DEFAULT Value {
$$.flags = EM_DEFAULT;
$$.default_value = $2;
}
;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment