aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2006-03-21 09:41:28 +0000
committerLev Walkin <vlm@lionet.info>2006-03-21 09:41:28 +0000
commit5045dfaba4cd14cbcbb40b00dc3f3dfd0685e916 (patch)
treedc844b7d3c0f8d8d5e18ee64a12468017f22f559
parent1775697d9c9e2df31d12f624b36726f06fd55fb5 (diff)
ObjectSets
-rw-r--r--ChangeLog2
-rw-r--r--libasn1fix/asn1fix_constraint.c89
-rw-r--r--libasn1fix/asn1fix_misc.c2
-rw-r--r--libasn1fix/asn1fix_param.c12
-rw-r--r--libasn1parser/asn1p_expr.c29
-rw-r--r--libasn1parser/asn1p_value.c34
-rw-r--r--libasn1parser/asn1p_value.h5
-rw-r--r--libasn1parser/asn1p_y.c1711
-rw-r--r--libasn1parser/asn1p_y.y48
-rw-r--r--libasn1print/asn1print.c8
-rw-r--r--tests/112-param-class-OK.asn124
-rw-r--r--tests/112-param-class-OK.asn1.-EF17
12 files changed, 1076 insertions, 905 deletions
diff --git a/ChangeLog b/ChangeLog
index 3a8a81ac..e235cf21 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -12,7 +12,7 @@
0.9.20: 2006-Mar-06
* SET OF CHOICE, SEQUENCE OF CHOICE and a certain named S/O types
- are represented differently in XER. THIS IS AN ICOMPATIBLE CHANGE.
+ are represented differently in XER. THIS IS AN INCOMPATIBLE CHANGE.
(Test case 70) (Severity: low; Security impact: low)
* asn1c: Removed -ftypes88 command line option.
* Started PER implementation. Somewhat experimental!
diff --git a/libasn1fix/asn1fix_constraint.c b/libasn1fix/asn1fix_constraint.c
index 23709a4e..7477d722 100644
--- a/libasn1fix/asn1fix_constraint.c
+++ b/libasn1fix/asn1fix_constraint.c
@@ -195,7 +195,6 @@ asn1constraint_resolve(arg_t *arg, asn1p_constraint_t *ct, asn1p_expr_type_e ety
* Resolve all possible references, wherever they occur.
*/
if(ct->containedSubtype) {
- assert(ct->containedSubtype->type == ATV_REFERENCED);
ret = constraint_type_resolve(arg, ct);
RET2RVAL(ret, rvalue);
}
@@ -250,60 +249,68 @@ _remove_extensions(arg_t *arg, asn1p_constraint_t *ct) {
static int
constraint_type_resolve(arg_t *arg, asn1p_constraint_t *ct) {
- asn1p_expr_t *rtype;
- arg_t tmparg;
+ asn1p_constraint_t *ct_expr;
int ret;
DEBUG("(\"%s\")", asn1f_printable_value(ct->containedSubtype));
- assert(ct->containedSubtype->type == ATV_REFERENCED);
+ if(ct->containedSubtype->type == ATV_VALUESET) {
+ ct_expr = ct->containedSubtype->value.constraint;
+ DEBUG("Found %s in constraints", "ValueSet");
+ } else if(ct->containedSubtype->type == ATV_REFERENCED) {
+ asn1p_expr_t *rtype;
+ arg_t tmparg;
+
+ rtype = asn1f_lookup_symbol(arg, arg->expr->module,
+ arg->expr->rhs_pspecs,
+ ct->containedSubtype->value.reference);
+ if(!rtype) {
+ FATAL("Cannot find type \"%s\" in constraints "
+ "at line %d",
+ asn1f_printable_value(ct->containedSubtype),
+ ct->_lineno);
+ return -1;
+ }
- rtype = asn1f_lookup_symbol(arg, arg->expr->module,
- arg->expr->rhs_pspecs,
- ct->containedSubtype->value.reference);
- if(!rtype) {
- FATAL("Cannot find type \"%s\" in constraints at line %d",
- asn1f_printable_value(ct->containedSubtype),
- ct->_lineno);
+ tmparg = *arg;
+ tmparg.expr = rtype;
+ tmparg.mod = rtype->module;
+ ret = asn1constraint_pullup(&tmparg);
+ if(ret) return ret;
+
+ ct_expr = rtype->combined_constraints;
+ if(!ct_expr) return 0;
+ } else {
+ FATAL("Unsupported feature at line %d", ct->_lineno);
return -1;
}
+ ct_expr = asn1p_constraint_clone(ct_expr);
+ assert(ct_expr);
- tmparg = *arg;
- tmparg.expr = rtype;
- tmparg.mod = rtype->module;
- ret = asn1constraint_pullup(&tmparg);
- if(ret) return ret;
-
- if(rtype->combined_constraints) {
- asn1p_constraint_t *ct_expr;
- ct_expr = asn1p_constraint_clone(rtype->combined_constraints);
- assert(ct_expr);
-
- _remove_extensions(arg, ct_expr);
+ _remove_extensions(arg, ct_expr);
- if(ct_expr->type == ACT_CA_SET) {
- unsigned int i;
- for(i = 0; i < ct_expr->el_count; i++) {
- if(asn1p_constraint_insert(
- ct, ct_expr->elements[i])) {
- asn1p_constraint_free(ct_expr);
- return -1;
- } else {
- ct_expr->elements[i] = 0;
- }
+ if(ct_expr->type == ACT_CA_SET) {
+ unsigned int i;
+ for(i = 0; i < ct_expr->el_count; i++) {
+ if(asn1p_constraint_insert(
+ ct, ct_expr->elements[i])) {
+ asn1p_constraint_free(ct_expr);
+ return -1;
+ } else {
+ ct_expr->elements[i] = 0;
}
- asn1p_constraint_free(ct_expr);
- } else {
- ret = asn1p_constraint_insert(ct, ct_expr);
- assert(ret == 0);
}
-
- ct->type = ACT_CA_SET;
- asn1p_value_free(ct->containedSubtype);
- ct->containedSubtype = NULL;
+ asn1p_constraint_free(ct_expr);
+ } else {
+ ret = asn1p_constraint_insert(ct, ct_expr);
+ assert(ret == 0);
}
+ ct->type = ACT_CA_SET;
+ asn1p_value_free(ct->containedSubtype);
+ ct->containedSubtype = NULL;
+
return 0;
}
diff --git a/libasn1fix/asn1fix_misc.c b/libasn1fix/asn1fix_misc.c
index 5728bd4c..72317aa2 100644
--- a/libasn1fix/asn1fix_misc.c
+++ b/libasn1fix/asn1fix_misc.c
@@ -160,6 +160,8 @@ asn1f_printable_value(asn1p_value_t *v) {
assert(reflen == (size_t)(ptr - managedptr));
return managedptr;
}
+ case ATV_VALUESET:
+ return "<ValueSet>";
case ATV_CHOICE_IDENTIFIER:
{
char *cid = v->value.choice_identifier.identifier;
diff --git a/libasn1fix/asn1fix_param.c b/libasn1fix/asn1fix_param.c
index 4c87afcd..6b3a6294 100644
--- a/libasn1fix/asn1fix_param.c
+++ b/libasn1fix/asn1fix_param.c
@@ -133,9 +133,11 @@ resolve_expr(asn1p_expr_t *expr_to_resolve, void *resolver_arg) {
return NULL;
}
- DEBUG("Found target %s", expr->Identifier);
+ DEBUG("Found target %s (%d/%x)",
+ expr->Identifier, expr->meta_type, expr->expr_type);
if(expr->meta_type == AMT_TYPE
- || expr->meta_type == AMT_VALUE) {
+ || expr->meta_type == AMT_VALUE
+ || expr->meta_type == AMT_VALUESET) {
DEBUG("Target is a simple type %s",
ASN_EXPR_TYPE2STR(expr->expr_type));
nex = asn1p_expr_clone(expr, 0);
@@ -144,8 +146,10 @@ resolve_expr(asn1p_expr_t *expr_to_resolve, void *resolver_arg) {
? strdup(expr_to_resolve->Identifier) : 0;
return nex;
} else {
- FATAL("Feature not implemented for %s",
- rarg->original_expr->Identifier);
+ FATAL("Feature not implemented for %s (%d/%x), "
+ "please contact the asn1c author",
+ rarg->original_expr->Identifier,
+ expr->meta_type, expr->expr_type);
errno = EPERM;
return NULL;
}
diff --git a/libasn1parser/asn1p_expr.c b/libasn1parser/asn1p_expr.c
index b1cce695..29919a14 100644
--- a/libasn1parser/asn1p_expr.c
+++ b/libasn1parser/asn1p_expr.c
@@ -176,16 +176,31 @@ value_resolver(asn1p_value_t *value, void *rarg) {
if(!target)
return NULL; /* errno's are compatible */
- if(!target->value) {
- fprintf(stderr,
- "FATAL: Parameterization did not resolve value reference "
- "at line %d", ref->_lineno);
- asn1p_expr_free(target);
+ if(target->meta_type == AMT_VALUE) {
+ if(!target->value) {
+ fprintf(stderr,
+ "FATAL: Parameterization did not resolve "
+ "value reference at line %d\n", ref->_lineno);
+ asn1p_expr_free(target);
+ errno = EPERM;
+ return NULL;
+ }
+ cval = asn1p_value_clone(target->value);
+ } else if(target->meta_type == AMT_VALUESET) {
+ if(!target->constraints) {
+ fprintf(stderr,
+ "FATAL: Parameterization did not resolve "
+ "value set reference at line %d\n", ref->_lineno);
+ asn1p_expr_free(target);
+ errno = EPERM;
+ return NULL;
+ }
+ cval = asn1p_value_fromconstr(target->constraints, 1);
+ } else {
errno = EPERM;
- return NULL;
+ cval = NULL;
}
- cval = asn1p_value_clone(target->value);
asn1p_expr_free(target);
return cval;
}
diff --git a/libasn1parser/asn1p_value.c b/libasn1parser/asn1p_value.c
index 6686e497..cafc1f93 100644
--- a/libasn1parser/asn1p_value.c
+++ b/libasn1parser/asn1p_value.c
@@ -30,6 +30,30 @@ asn1p_value_fromref(asn1p_ref_t *ref, int do_copy) {
}
asn1p_value_t *
+asn1p_value_fromconstr(asn1p_constraint_t *ct, int do_copy) {
+ if(ct) {
+ asn1p_value_t *v = calloc(1, sizeof *v);
+ if(v) {
+ if(do_copy) {
+ v->value.constraint
+ = asn1p_constraint_clone(ct);
+ if(v->value.constraint == NULL) {
+ free(v);
+ return NULL;
+ }
+ } else {
+ v->value.constraint = ct;
+ }
+ v->type = ATV_VALUESET;
+ }
+ return v;
+ } else {
+ errno = EINVAL;
+ return NULL;
+ }
+}
+
+asn1p_value_t *
asn1p_value_frombits(uint8_t *bits, int size_in_bits, int do_copy) {
if(bits) {
asn1p_value_t *v = calloc(1, sizeof *v);
@@ -155,6 +179,13 @@ asn1p_value_clone_with_resolver(asn1p_value_t *v,
else if(errno != ESRCH) return NULL;
}
return asn1p_value_fromref(v->value.reference, 1);
+ case ATV_VALUESET:
+ if(resolver) {
+ clone = resolver(v, rarg);
+ if(clone) return clone;
+ else if(errno != ESRCH) return NULL;
+ }
+ return asn1p_value_fromconstr(v->value.constraint, 1);
case ATV_CHOICE_IDENTIFIER: {
char *id = v->value.choice_identifier.identifier;
clone = calloc(1, sizeof(*clone));
@@ -204,6 +235,9 @@ asn1p_value_free(asn1p_value_t *v) {
case ATV_REFERENCED:
asn1p_ref_free(v->value.reference);
break;
+ case ATV_VALUESET:
+ asn1p_constraint_free(v->value.constraint);
+ break;
case ATV_CHOICE_IDENTIFIER:
free(v->value.choice_identifier.identifier);
asn1p_value_free(v->value.choice_identifier.value);
diff --git a/libasn1parser/asn1p_value.h b/libasn1parser/asn1p_value.h
index 5705f745..1b5bbeec 100644
--- a/libasn1parser/asn1p_value.h
+++ b/libasn1parser/asn1p_value.h
@@ -4,6 +4,8 @@
#ifndef ASN1_PARSER_VALUE_H
#define ASN1_PARSER_VALUE_H
+struct asn1p_constraint_s; /* Forward declaration */
+
/*
* A wrapper around various kinds of values.
*/
@@ -25,11 +27,13 @@ typedef struct asn1p_value_s {
ATV_STRING, /* "abcdef" */
ATV_UNPARSED,
ATV_BITVECTOR,
+ ATV_VALUESET, /* { 1 | 2 | 3 } */
ATV_REFERENCED, /* Reference to a value defined elsewhere */
ATV_CHOICE_IDENTIFIER, /* ChoiceIdentifier value */
} type; /* Value type and location */
union {
+ struct asn1p_constraint_s *constraint; /* ValueSet */
asn1p_ref_t *reference;
asn1c_integer_t v_integer;
double v_double;
@@ -59,6 +63,7 @@ typedef struct asn1p_value_s {
*/
void asn1p_value_free(asn1p_value_t *);
asn1p_value_t *asn1p_value_fromref(asn1p_ref_t *ref, int do_copy);
+asn1p_value_t *asn1p_value_fromconstr(struct asn1p_constraint_s *ct, int dc);
asn1p_value_t *asn1p_value_frombits(uint8_t *bits, int size_in_bits, int dc);
asn1p_value_t *asn1p_value_frombuf(char *buffer, int size, int do_copy);
asn1p_value_t *asn1p_value_fromdouble(double);
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 9bbad6e1..e9be56f6 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -223,7 +223,7 @@ typedef union {
-#define YYFINAL 444
+#define YYFINAL 448
#define YYFLAG -32768
#define YYNTBASE 120
@@ -276,29 +276,29 @@ static const short yyprhs[] = { 0,
79, 81, 82, 86, 88, 92, 95, 97, 100, 101,
103, 108, 110, 114, 116, 120, 122, 126, 130, 133,
135, 139, 141, 145, 147, 151, 156, 158, 160, 165,
- 169, 173, 180, 182, 186, 188, 192, 196, 200, 202,
- 206, 208, 210, 212, 213, 215, 217, 221, 225, 228,
- 232, 234, 236, 240, 243, 245, 247, 253, 254, 256,
- 258, 262, 265, 270, 274, 278, 282, 286, 290, 291,
- 293, 294, 301, 303, 306, 308, 310, 312, 316, 318,
- 322, 326, 330, 331, 334, 336, 341, 346, 351, 358,
- 365, 367, 372, 376, 378, 382, 386, 390, 392, 396,
- 398, 402, 404, 406, 408, 410, 414, 418, 420, 425,
- 427, 429, 433, 434, 438, 440, 442, 444, 446, 448,
- 450, 452, 454, 458, 460, 462, 464, 466, 469, 471,
- 473, 475, 477, 480, 483, 485, 487, 490, 493, 495,
- 497, 499, 501, 503, 506, 508, 511, 513, 515, 517,
- 519, 521, 523, 525, 527, 529, 531, 533, 535, 537,
- 539, 541, 543, 545, 547, 549, 550, 552, 554, 559,
- 563, 568, 570, 574, 580, 582, 586, 590, 594, 598,
- 603, 607, 609, 611, 615, 619, 623, 627, 629, 631,
- 632, 638, 640, 643, 646, 650, 652, 654, 656, 658,
- 660, 662, 664, 666, 670, 676, 678, 682, 684, 688,
- 689, 691, 693, 695, 697, 699, 701, 705, 710, 712,
- 716, 719, 723, 725, 729, 730, 732, 734, 737, 740,
- 744, 746, 750, 752, 757, 762, 764, 766, 768, 770,
- 771, 773, 776, 781, 782, 784, 786, 788, 789, 791,
- 793, 795, 797, 799, 800, 802
+ 169, 173, 180, 187, 189, 193, 195, 199, 203, 207,
+ 211, 213, 217, 219, 221, 223, 225, 226, 228, 230,
+ 234, 238, 241, 245, 247, 249, 253, 256, 258, 260,
+ 266, 267, 269, 271, 275, 278, 283, 287, 291, 295,
+ 299, 303, 304, 306, 307, 314, 316, 319, 321, 323,
+ 325, 329, 331, 335, 339, 343, 344, 347, 349, 354,
+ 359, 364, 371, 378, 380, 385, 389, 391, 395, 399,
+ 403, 405, 409, 411, 415, 417, 419, 421, 423, 427,
+ 431, 433, 438, 440, 442, 446, 447, 451, 453, 455,
+ 457, 459, 461, 463, 465, 467, 471, 473, 475, 477,
+ 479, 482, 484, 486, 488, 490, 493, 496, 498, 500,
+ 503, 506, 508, 510, 512, 514, 516, 519, 521, 524,
+ 526, 528, 530, 532, 534, 536, 538, 540, 542, 544,
+ 546, 548, 550, 552, 554, 556, 558, 560, 562, 563,
+ 565, 567, 572, 576, 581, 583, 585, 589, 595, 597,
+ 601, 605, 609, 613, 618, 622, 624, 626, 630, 634,
+ 638, 642, 644, 646, 647, 653, 655, 658, 661, 665,
+ 667, 669, 671, 673, 675, 677, 679, 681, 685, 691,
+ 693, 697, 699, 703, 704, 706, 708, 710, 712, 714,
+ 716, 720, 725, 727, 731, 734, 738, 740, 744, 745,
+ 747, 749, 752, 755, 759, 761, 765, 767, 772, 777,
+ 779, 781, 783, 785, 786, 788, 791, 796, 797, 799,
+ 801, 803, 804, 806, 808, 810, 812, 814, 815, 817
};
static const short yyrhs[] = { 121,
@@ -319,70 +319,71 @@ static const short yyrhs[] = { 121,
223, 107, 108, 0, 226, 0, 107, 193, 108, 0,
223, 145, 3, 143, 0, 185, 0, 170, 0, 170,
107, 149, 108, 0, 223, 3, 166, 0, 223, 3,
- 156, 0, 223, 107, 147, 108, 3, 166, 0, 148,
- 0, 147, 112, 148, 0, 223, 0, 223, 113, 226,
- 0, 223, 113, 223, 0, 183, 113, 226, 0, 150,
- 0, 149, 112, 150, 0, 166, 0, 179, 0, 226,
- 0, 0, 152, 0, 153, 0, 152, 112, 153, 0,
- 226, 166, 212, 0, 166, 212, 0, 34, 72, 166,
- 0, 165, 0, 155, 0, 154, 112, 155, 0, 226,
- 166, 0, 165, 0, 166, 0, 32, 107, 158, 108,
- 160, 0, 0, 92, 0, 159, 0, 158, 112, 159,
- 0, 16, 212, 0, 17, 166, 157, 212, 0, 17,
- 174, 212, 0, 17, 175, 212, 0, 16, 174, 212,
- 0, 16, 166, 212, 0, 16, 175, 212, 0, 0,
- 161, 0, 0, 99, 86, 107, 162, 163, 108, 0,
- 164, 0, 163, 164, 0, 4, 0, 18, 0, 173,
- 0, 114, 163, 115, 0, 106, 0, 106, 116, 180,
- 0, 106, 116, 217, 0, 218, 168, 190, 0, 0,
- 167, 169, 0, 145, 0, 31, 107, 154, 108, 0,
- 82, 107, 151, 108, 0, 83, 107, 151, 108, 0,
- 82, 190, 72, 225, 218, 168, 0, 83, 190, 72,
- 225, 218, 168, 0, 22, 0, 22, 39, 29, 226,
- 0, 60, 72, 170, 0, 14, 0, 14, 117, 223,
- 0, 224, 117, 223, 0, 14, 117, 226, 0, 224,
- 0, 224, 117, 171, 0, 172, 0, 171, 117, 172,
- 0, 173, 0, 16, 0, 17, 0, 16, 0, 174,
- 117, 16, 0, 174, 117, 17, 0, 15, 0, 226,
- 145, 3, 177, 0, 179, 0, 180, 0, 226, 113,
- 177, 0, 0, 107, 178, 182, 0, 67, 0, 49,
- 0, 90, 0, 6, 0, 8, 0, 181, 0, 217,
- 0, 226, 0, 223, 117, 226, 0, 7, 0, 11,
- 0, 12, 0, 5, 0, 182, 5, 0, 28, 0,
- 67, 0, 80, 0, 184, 0, 71, 85, 0, 69,
- 55, 0, 81, 0, 48, 0, 40, 75, 0, 30,
- 85, 0, 95, 0, 51, 0, 186, 0, 62, 0,
- 44, 0, 26, 85, 0, 183, 0, 184, 214, 0,
- 27, 0, 52, 0, 53, 0, 54, 0, 63, 0,
- 68, 0, 78, 0, 87, 0, 89, 0, 94, 0,
- 96, 0, 97, 0, 98, 0, 70, 0, 103, 0,
- 104, 0, 101, 0, 102, 0, 100, 0, 0, 191,
- 0, 192, 0, 84, 109, 193, 110, 0, 109, 193,
- 110, 0, 192, 109, 193, 110, 0, 194, 0, 194,
- 112, 106, 0, 194, 112, 106, 112, 194, 0, 195,
- 0, 21, 100, 195, 0, 194, 187, 195, 0, 194,
- 188, 195, 0, 195, 189, 195, 0, 198, 109, 193,
- 110, 0, 109, 193, 110, 0, 199, 0, 200, 0,
- 199, 197, 199, 0, 65, 197, 199, 0, 199, 197,
- 64, 0, 65, 197, 64, 0, 206, 0, 201, 0,
- 0, 35, 29, 107, 196, 182, 0, 105, 0, 105,
- 118, 0, 118, 105, 0, 118, 105, 118, 0, 84,
- 0, 50, 0, 49, 0, 90, 0, 217, 0, 181,
- 0, 226, 0, 223, 0, 99, 33, 192, 0, 99,
- 34, 107, 202, 108, 0, 203, 0, 202, 112, 203,
- 0, 106, 0, 226, 190, 204, 0, 0, 205, 0,
- 77, 0, 19, 0, 73, 0, 207, 0, 208, 0,
- 107, 223, 108, 0, 207, 107, 209, 108, 0, 210,
- 0, 209, 112, 210, 0, 119, 211, 0, 119, 117,
- 211, 0, 226, 0, 211, 117, 226, 0, 0, 213,
- 0, 73, 0, 37, 177, 0, 107, 108, 0, 107,
- 215, 108, 0, 216, 0, 215, 112, 216, 0, 226,
- 0, 226, 109, 217, 110, 0, 226, 109, 180, 110,
- 0, 217, 0, 106, 0, 10, 0, 13, 0, 0,
- 219, 0, 220, 222, 0, 114, 221, 10, 115, 0,
- 0, 93, 0, 23, 0, 79, 0, 0, 56, 0,
- 45, 0, 14, 0, 15, 0, 15, 0, 0, 226,
- 0, 9, 0
+ 156, 0, 223, 107, 147, 108, 3, 166, 0, 223,
+ 107, 147, 108, 3, 156, 0, 148, 0, 147, 112,
+ 148, 0, 223, 0, 223, 113, 226, 0, 223, 113,
+ 223, 0, 183, 113, 226, 0, 183, 113, 223, 0,
+ 150, 0, 149, 112, 150, 0, 166, 0, 179, 0,
+ 226, 0, 143, 0, 0, 152, 0, 153, 0, 152,
+ 112, 153, 0, 226, 166, 212, 0, 166, 212, 0,
+ 34, 72, 166, 0, 165, 0, 155, 0, 154, 112,
+ 155, 0, 226, 166, 0, 165, 0, 166, 0, 32,
+ 107, 158, 108, 160, 0, 0, 92, 0, 159, 0,
+ 158, 112, 159, 0, 16, 212, 0, 17, 166, 157,
+ 212, 0, 17, 174, 212, 0, 17, 175, 212, 0,
+ 16, 174, 212, 0, 16, 166, 212, 0, 16, 175,
+ 212, 0, 0, 161, 0, 0, 99, 86, 107, 162,
+ 163, 108, 0, 164, 0, 163, 164, 0, 4, 0,
+ 18, 0, 173, 0, 114, 163, 115, 0, 106, 0,
+ 106, 116, 180, 0, 106, 116, 217, 0, 218, 168,
+ 190, 0, 0, 167, 169, 0, 145, 0, 31, 107,
+ 154, 108, 0, 82, 107, 151, 108, 0, 83, 107,
+ 151, 108, 0, 82, 190, 72, 225, 218, 168, 0,
+ 83, 190, 72, 225, 218, 168, 0, 22, 0, 22,
+ 39, 29, 226, 0, 60, 72, 170, 0, 14, 0,
+ 14, 117, 223, 0, 224, 117, 223, 0, 14, 117,
+ 226, 0, 224, 0, 224, 117, 171, 0, 172, 0,
+ 171, 117, 172, 0, 173, 0, 16, 0, 17, 0,
+ 16, 0, 174, 117, 16, 0, 174, 117, 17, 0,
+ 15, 0, 226, 145, 3, 177, 0, 179, 0, 180,
+ 0, 226, 113, 177, 0, 0, 107, 178, 182, 0,
+ 67, 0, 49, 0, 90, 0, 6, 0, 8, 0,
+ 181, 0, 217, 0, 226, 0, 223, 117, 226, 0,
+ 7, 0, 11, 0, 12, 0, 5, 0, 182, 5,
+ 0, 28, 0, 67, 0, 80, 0, 184, 0, 71,
+ 85, 0, 69, 55, 0, 81, 0, 48, 0, 40,
+ 75, 0, 30, 85, 0, 95, 0, 51, 0, 186,
+ 0, 62, 0, 44, 0, 26, 85, 0, 183, 0,
+ 184, 214, 0, 27, 0, 52, 0, 53, 0, 54,
+ 0, 63, 0, 68, 0, 78, 0, 87, 0, 89,
+ 0, 94, 0, 96, 0, 97, 0, 98, 0, 70,
+ 0, 103, 0, 104, 0, 101, 0, 102, 0, 100,
+ 0, 0, 191, 0, 192, 0, 84, 109, 193, 110,
+ 0, 109, 193, 110, 0, 192, 109, 193, 110, 0,
+ 106, 0, 194, 0, 194, 112, 106, 0, 194, 112,
+ 106, 112, 194, 0, 195, 0, 21, 100, 195, 0,
+ 194, 187, 195, 0, 194, 188, 195, 0, 195, 189,
+ 195, 0, 198, 109, 193, 110, 0, 109, 193, 110,
+ 0, 199, 0, 200, 0, 199, 197, 199, 0, 65,
+ 197, 199, 0, 199, 197, 64, 0, 65, 197, 64,
+ 0, 206, 0, 201, 0, 0, 35, 29, 107, 196,
+ 182, 0, 105, 0, 105, 118, 0, 118, 105, 0,
+ 118, 105, 118, 0, 84, 0, 50, 0, 49, 0,
+ 90, 0, 217, 0, 181, 0, 226, 0, 223, 0,
+ 99, 33, 192, 0, 99, 34, 107, 202, 108, 0,
+ 203, 0, 202, 112, 203, 0, 106, 0, 226, 190,
+ 204, 0, 0, 205, 0, 77, 0, 19, 0, 73,
+ 0, 207, 0, 208, 0, 107, 223, 108, 0, 207,
+ 107, 209, 108, 0, 210, 0, 209, 112, 210, 0,
+ 119, 211, 0, 119, 117, 211, 0, 226, 0, 211,
+ 117, 226, 0, 0, 213, 0, 73, 0, 37, 177,
+ 0, 107, 108, 0, 107, 215, 108, 0, 216, 0,
+ 215, 112, 216, 0, 226, 0, 226, 109, 217, 110,
+ 0, 226, 109, 180, 110, 0, 217, 0, 106, 0,
+ 10, 0, 13, 0, 0, 219, 0, 220, 222, 0,
+ 114, 221, 10, 115, 0, 0, 93, 0, 23, 0,
+ 79, 0, 0, 56, 0, 45, 0, 14, 0, 15,
+ 0, 15, 0, 0, 226, 0, 9, 0
};
#endif
@@ -395,29 +396,29 @@ static const short yyrline[] = { 0,
558, 565, 567, 579, 591, 602, 607, 613, 619, 621,
624, 635, 641, 647, 654, 660, 668, 672, 675, 682,
688, 694, 701, 707, 716, 718, 728, 742, 752, 768,
- 778, 794, 802, 812, 822, 827, 834, 841, 851, 857,
- 863, 867, 875, 902, 904, 906, 912, 918, 926, 932,
- 939, 944, 950, 956, 962, 965, 971, 981, 983, 986,
- 994, 1001, 1014, 1025, 1035, 1046, 1056, 1067, 1078, 1080,
- 1085, 1089, 1094, 1099, 1105, 1110, 1113, 1117, 1122, 1131,
- 1140, 1151, 1173, 1180, 1199, 1203, 1209, 1215, 1221, 1231,
- 1241, 1247, 1259, 1273, 1282, 1292, 1302, 1312, 1320, 1341,
- 1350, 1359, 1361, 1368, 1375, 1381, 1385, 1391, 1411, 1421,
- 1423, 1424, 1431, 1431, 1436, 1443, 1449, 1454, 1458, 1462,
- 1465, 1470, 1482, 1499, 1504, 1509, 1542, 1552, 1566, 1568,
- 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578,
- 1579, 1585, 1587, 1588, 1591, 1598, 1610, 1612, 1616, 1620,
- 1621, 1622, 1623, 1624, 1628, 1629, 1630, 1631, 1635, 1636,
- 1643, 1643, 1644, 1644, 1645, 1647, 1649, 1654, 1658, 1667,
- 1671, 1676, 1680, 1686, 1696, 1700, 1703, 1706, 1709, 1714,
- 1723, 1731, 1737, 1743, 1750, 1758, 1766, 1775, 1778, 1781,
- 1782, 1792, 1794, 1795, 1796, 1799, 1803, 1808, 1814, 1819,
- 1822, 1825, 1838, 1852, 1856, 1861, 1865, 1870, 1877, 1890,
- 1892, 1895, 1899, 1902, 1907, 1911, 1919, 1934, 1940, 1947,
- 1960, 1972, 1987, 1991, 2008, 2013, 2016, 2021, 2043, 2048,
- 2053, 2059, 2065, 2073, 2081, 2089, 2096, 2106, 2111, 2141,
- 2143, 2146, 2153, 2159, 2161, 2162, 2163, 2166, 2168, 2169,
- 2172, 2177, 2184, 2191, 2193, 2198
+ 778, 794, 800, 807, 817, 827, 832, 839, 846, 854,
+ 864, 870, 876, 880, 888, 899, 921, 923, 925, 931,
+ 937, 945, 951, 958, 963, 969, 975, 981, 984, 990,
+ 1000, 1002, 1005, 1013, 1020, 1033, 1044, 1054, 1065, 1075,
+ 1086, 1097, 1099, 1104, 1108, 1113, 1118, 1124, 1129, 1132,
+ 1136, 1141, 1150, 1159, 1170, 1192, 1199, 1218, 1222, 1228,
+ 1234, 1240, 1250, 1260, 1266, 1277, 1291, 1300, 1310, 1320,
+ 1330, 1338, 1359, 1368, 1377, 1379, 1386, 1393, 1399, 1403,
+ 1409, 1429, 1439, 1441, 1442, 1449, 1449, 1454, 1461, 1467,
+ 1472, 1476, 1480, 1483, 1488, 1500, 1517, 1522, 1527, 1560,
+ 1570, 1584, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593,
+ 1594, 1595, 1596, 1597, 1603, 1605, 1606, 1609, 1616, 1628,
+ 1630, 1634, 1638, 1639, 1640, 1641, 1642, 1646, 1647, 1648,
+ 1649, 1653, 1654, 1661, 1661, 1662, 1662, 1663, 1665, 1667,
+ 1672, 1676, 1685, 1689, 1694, 1699, 1702, 1708, 1718, 1722,
+ 1725, 1728, 1731, 1736, 1745, 1753, 1759, 1765, 1772, 1780,
+ 1788, 1797, 1800, 1803, 1804, 1814, 1816, 1817, 1818, 1821,
+ 1825, 1830, 1836, 1841, 1844, 1847, 1860, 1874, 1878, 1883,
+ 1887, 1892, 1899, 1912, 1914, 1917, 1921, 1924, 1929, 1933,
+ 1941, 1956, 1962, 1969, 1982, 1994, 2009, 2013, 2030, 2035,
+ 2038, 2043, 2065, 2070, 2075, 2081, 2087, 2095, 2103, 2111,
+ 2118, 2128, 2133, 2163, 2165, 2168, 2175, 2181, 2183, 2184,
+ 2185, 2188, 2190, 2191, 2194, 2199, 2206, 2213, 2215, 2220
};
#endif
@@ -452,7 +453,7 @@ static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ",
"ImportsBundleSet","AssignedIdentifier","ImportsBundle","ImportsList","ImportsElement",
"ExportsDefinition","ExportsBody","ExportsElement","ValueSet","ValueSetTypeAssignment",
"DefinedType","DataTypeReference","ParameterArgumentList","ParameterArgumentName",
-"Specializations","Specialization","optComponentTypeLists","ComponentTypeLists",
+"ActualParameterList","ActualParameter","optComponentTypeLists","ComponentTypeLists",
"ComponentType","AlternativeTypeLists","AlternativeType","ObjectClass","optUnique",
"FieldSpec","ClassField","optWithSyntax","WithSyntax","@2","WithSyntaxList",
"WithSyntaxToken","ExtensionAndException","Type","NSTD_IndirectMarker","TypeDeclaration",
@@ -478,29 +479,29 @@ static const short yyr1[] = { 0,
132, 133, 132, 132, 134, 134, 135, 135, 136, 136,
137, 138, 138, 139, 139, 139, 140, 140, 140, 141,
141, 142, 142, 142, 143, 144, 145, 145, 145, 146,
- 146, 146, 147, 147, 148, 148, 148, 148, 149, 149,
- 150, 150, 150, 151, 151, 152, 152, 153, 153, 153,
- 153, 154, 154, 155, 155, 155, 156, 157, 157, 158,
- 158, 159, 159, 159, 159, 159, 159, 159, 160, 160,
- 162, 161, 163, 163, 164, 164, 164, 164, 165, 165,
- 165, 166, 167, 168, 169, 169, 169, 169, 169, 169,
- 169, 169, 169, 170, 170, 170, 170, 170, 170, 171,
- 171, 172, 173, 173, 174, 174, 174, 175, 176, 177,
- 177, 177, 178, 177, 177, 179, 179, 179, 179, 179,
- 179, 180, 180, 181, 181, 181, 182, 182, 183, 183,
- 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
- 183, 184, 184, 184, 185, 185, 186, 186, 186, 186,
+ 146, 146, 146, 147, 147, 148, 148, 148, 148, 148,
+ 149, 149, 150, 150, 150, 150, 151, 151, 152, 152,
+ 153, 153, 153, 153, 154, 154, 155, 155, 155, 156,
+ 157, 157, 158, 158, 159, 159, 159, 159, 159, 159,
+ 159, 160, 160, 162, 161, 163, 163, 164, 164, 164,
+ 164, 165, 165, 165, 166, 167, 168, 169, 169, 169,
+ 169, 169, 169, 169, 169, 169, 170, 170, 170, 170,
+ 170, 170, 171, 171, 172, 173, 173, 174, 174, 174,
+ 175, 176, 177, 177, 177, 178, 177, 177, 179, 179,
+ 179, 179, 179, 179, 180, 180, 181, 181, 181, 182,
+ 182, 183, 183, 183, 183, 183, 183, 183, 183, 183,
+ 183, 183, 183, 183, 184, 184, 184, 185, 185, 186,
186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
- 187, 187, 188, 188, 189, 190, 190, 191, 191, 192,
- 192, 193, 193, 193, 194, 194, 194, 194, 194, 195,
- 195, 195, 195, 195, 195, 195, 195, 195, 195, 196,
- 195, 197, 197, 197, 197, 198, 198, 199, 199, 199,
- 199, 199, 200, 201, 201, 202, 202, 203, 203, 204,
- 204, 205, 205, 205, 206, 206, 207, 208, 209, 209,
- 210, 210, 211, 211, 212, 212, 213, 213, 214, 214,
- 215, 215, 216, 216, 216, 216, 216, 217, 217, 218,
- 218, 219, 220, 221, 221, 221, 221, 222, 222, 222,
- 223, 223, 224, 225, 225, 226
+ 186, 186, 186, 187, 187, 188, 188, 189, 190, 190,
+ 191, 191, 192, 192, 193, 193, 193, 193, 194, 194,
+ 194, 194, 194, 195, 195, 195, 195, 195, 195, 195,
+ 195, 195, 195, 196, 195, 197, 197, 197, 197, 198,
+ 198, 199, 199, 199, 199, 199, 200, 201, 201, 202,
+ 202, 203, 203, 204, 204, 205, 205, 205, 206, 206,
+ 207, 208, 209, 209, 210, 210, 211, 211, 212, 212,
+ 213, 213, 214, 214, 215, 215, 216, 216, 216, 216,
+ 216, 217, 217, 218, 218, 219, 220, 221, 221, 221,
+ 221, 222, 222, 222, 223, 223, 224, 225, 225, 226
};
static const short yyr2[] = { 0,
@@ -510,223 +511,231 @@ static const short yyr2[] = { 0,
1, 0, 3, 1, 3, 2, 1, 2, 0, 1,
4, 1, 3, 1, 3, 1, 3, 3, 2, 1,
3, 1, 3, 1, 3, 4, 1, 1, 4, 3,
- 3, 6, 1, 3, 1, 3, 3, 3, 1, 3,
- 1, 1, 1, 0, 1, 1, 3, 3, 2, 3,
- 1, 1, 3, 2, 1, 1, 5, 0, 1, 1,
- 3, 2, 4, 3, 3, 3, 3, 3, 0, 1,
- 0, 6, 1, 2, 1, 1, 1, 3, 1, 3,
- 3, 3, 0, 2, 1, 4, 4, 4, 6, 6,
- 1, 4, 3, 1, 3, 3, 3, 1, 3, 1,
- 3, 1, 1, 1, 1, 3, 3, 1, 4, 1,
- 1, 3, 0, 3, 1, 1, 1, 1, 1, 1,
- 1, 1, 3, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 2, 2, 1, 1, 2, 2, 1, 1,
- 1, 1, 1, 2, 1, 2, 1, 1, 1, 1,
+ 3, 6, 6, 1, 3, 1, 3, 3, 3, 3,
+ 1, 3, 1, 1, 1, 1, 0, 1, 1, 3,
+ 3, 2, 3, 1, 1, 3, 2, 1, 1, 5,
+ 0, 1, 1, 3, 2, 4, 3, 3, 3, 3,
+ 3, 0, 1, 0, 6, 1, 2, 1, 1, 1,
+ 3, 1, 3, 3, 3, 0, 2, 1, 4, 4,
+ 4, 6, 6, 1, 4, 3, 1, 3, 3, 3,
+ 1, 3, 1, 3, 1, 1, 1, 1, 3, 3,
+ 1, 4, 1, 1, 3, 0, 3, 1, 1, 1,
+ 1, 1, 1, 1, 1, 3, 1, 1, 1, 1,
+ 2, 1, 1, 1, 1, 2, 2, 1, 1, 2,
+ 2, 1, 1, 1, 1, 1, 2, 1, 2, 1,
1, 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, 3, 4,
- 3, 1, 1, 3, 3, 3, 3, 1, 1, 0,
- 5, 1, 2, 2, 3, 1, 1, 1, 1, 1,
- 1, 1, 1, 3, 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, 2, 4, 0, 1, 1, 1, 0, 1, 1,
- 1, 1, 1, 0, 1, 1
+ 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
+ 1, 4, 3, 4, 1, 1, 3, 5, 1, 3,
+ 3, 3, 3, 4, 3, 1, 1, 3, 3, 3,
+ 3, 1, 1, 0, 5, 1, 2, 2, 3, 1,
+ 1, 1, 1, 1, 1, 1, 1, 3, 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, 2, 4, 0, 1, 1,
+ 1, 0, 1, 1, 1, 1, 1, 0, 1, 1
};
static const short yydefact[] = { 0,
- 281, 282, 1, 2, 5, 3, 0, 0, 6, 286,
+ 285, 286, 1, 2, 5, 3, 0, 0, 6, 290,
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, 177, 0, 0,
- 178, 179, 180, 0, 181, 182, 190, 183, 184, 185,
- 186, 187, 188, 189, 0, 24, 25, 27, 28, 31,
+ 18, 21, 19, 0, 17, 12, 23, 180, 0, 0,
+ 181, 182, 183, 0, 184, 185, 193, 186, 187, 188,
+ 189, 190, 191, 192, 0, 24, 25, 27, 28, 31,
29, 30, 34, 0, 0, 32, 0, 49, 0, 50,
52, 54, 36, 0, 37, 0, 42, 44, 46, 4,
- 26, 270, 124, 283, 0, 159, 0, 0, 173, 166,
- 170, 172, 160, 0, 0, 161, 165, 169, 0, 0,
- 58, 175, 162, 57, 171, 128, 0, 33, 48, 47,
- 0, 0, 35, 38, 0, 0, 0, 0, 274, 61,
- 60, 113, 271, 278, 0, 174, 168, 167, 164, 163,
- 0, 63, 0, 162, 65, 0, 270, 0, 176, 0,
- 0, 51, 53, 39, 43, 45, 0, 276, 277, 275,
- 0, 0, 196, 280, 279, 272, 125, 127, 0, 0,
- 0, 0, 0, 56, 148, 154, 149, 268, 155, 156,
- 269, 146, 147, 0, 69, 71, 72, 150, 151, 73,
- 267, 259, 0, 261, 266, 263, 133, 134, 129, 130,
- 132, 126, 145, 143, 139, 140, 141, 0, 152, 40,
- 41, 270, 270, 0, 90, 0, 121, 0, 0, 196,
- 196, 115, 114, 0, 0, 112, 197, 198, 270, 64,
- 68, 67, 66, 0, 0, 228, 227, 0, 226, 229,
- 0, 0, 0, 231, 0, 202, 205, 0, 212, 213,
- 219, 218, 245, 246, 230, 233, 232, 59, 270, 260,
- 0, 0, 0, 0, 0, 0, 138, 135, 0, 257,
- 255, 255, 255, 92, 256, 88, 255, 255, 99, 0,
- 273, 0, 270, 0, 270, 0, 270, 0, 0, 0,
- 0, 62, 0, 0, 222, 0, 0, 0, 0, 0,
- 0, 55, 193, 194, 191, 192, 0, 0, 0, 195,
- 0, 0, 0, 0, 70, 262, 0, 0, 152, 131,
- 157, 144, 153, 142, 258, 97, 0, 96, 98, 89,
- 255, 94, 95, 0, 87, 100, 91, 0, 109, 0,
- 82, 85, 86, 270, 123, 0, 0, 75, 76, 81,
- 255, 270, 284, 0, 284, 0, 200, 0, 206, 220,
- 223, 224, 217, 215, 234, 0, 247, 211, 203, 207,
- 208, 209, 0, 216, 214, 0, 0, 249, 265, 264,
- 158, 136, 137, 93, 0, 122, 0, 116, 270, 84,
- 270, 117, 270, 79, 255, 270, 285, 118, 270, 199,
- 201, 0, 225, 238, 0, 236, 196, 0, 210, 0,
- 251, 253, 248, 0, 101, 110, 111, 83, 80, 77,
- 78, 113, 113, 221, 235, 0, 240, 204, 252, 0,
- 250, 0, 119, 120, 237, 243, 244, 242, 239, 241,
- 254, 105, 106, 0, 0, 103, 107, 0, 102, 104,
- 108, 0, 0, 0
+ 26, 274, 127, 287, 0, 162, 0, 0, 176, 169,
+ 173, 175, 163, 0, 0, 164, 168, 172, 0, 0,
+ 58, 178, 165, 57, 174, 131, 0, 33, 48, 47,
+ 0, 0, 35, 38, 0, 0, 0, 0, 278, 61,
+ 60, 116, 275, 282, 0, 177, 171, 170, 167, 166,
+ 0, 64, 0, 165, 66, 0, 274, 0, 179, 0,
+ 0, 51, 53, 39, 43, 45, 0, 280, 281, 279,
+ 0, 0, 199, 284, 283, 276, 128, 130, 0, 0,
+ 0, 0, 0, 56, 151, 157, 152, 272, 158, 159,
+ 273, 149, 150, 76, 0, 71, 73, 74, 153, 154,
+ 75, 271, 263, 0, 265, 270, 267, 136, 137, 132,
+ 133, 135, 129, 148, 146, 142, 143, 144, 0, 155,
+ 40, 41, 274, 274, 0, 93, 0, 124, 0, 0,
+ 199, 199, 118, 117, 0, 0, 115, 200, 201, 274,
+ 65, 70, 69, 68, 67, 0, 0, 232, 231, 0,
+ 230, 233, 0, 205, 0, 0, 235, 0, 206, 209,
+ 0, 216, 217, 223, 222, 249, 250, 234, 237, 236,
+ 59, 274, 264, 0, 0, 0, 0, 0, 0, 141,
+ 138, 0, 261, 259, 259, 259, 95, 260, 91, 259,
+ 259, 102, 0, 277, 0, 274, 0, 274, 0, 274,
+ 0, 0, 0, 0, 63, 62, 0, 0, 226, 0,
+ 0, 0, 0, 0, 0, 55, 196, 197, 194, 195,
+ 0, 0, 0, 198, 0, 0, 0, 0, 72, 266,
+ 0, 0, 155, 134, 160, 147, 156, 145, 262, 100,
+ 0, 99, 101, 92, 259, 97, 98, 0, 90, 103,
+ 94, 0, 112, 0, 85, 88, 89, 274, 126, 0,
+ 0, 78, 79, 84, 259, 274, 288, 0, 288, 0,
+ 203, 0, 210, 224, 227, 228, 221, 219, 238, 0,
+ 251, 215, 207, 211, 212, 213, 0, 220, 218, 0,
+ 0, 253, 269, 268, 161, 139, 140, 96, 0, 125,
+ 0, 119, 274, 87, 274, 120, 274, 82, 259, 274,
+ 289, 121, 274, 202, 204, 0, 229, 242, 0, 240,
+ 199, 0, 214, 0, 255, 257, 252, 0, 104, 113,
+ 114, 86, 83, 80, 81, 116, 116, 225, 239, 0,
+ 244, 208, 256, 0, 254, 0, 122, 123, 241, 247,
+ 248, 246, 243, 245, 258, 108, 109, 0, 0, 106,
+ 110, 0, 105, 107, 111, 0, 0, 0
};
-static const short yydefgoto[] = { 442,
+static const short yydefgoto[] = { 446,
3, 4, 8, 9, 13, 14, 25, 26, 27, 55,
- 56, 57, 108, 58, 74, 201, 75, 76, 77, 59,
- 69, 70, 164, 60, 100, 61, 131, 132, 174, 175,
- 337, 338, 339, 330, 331, 120, 321, 204, 205, 325,
- 326, 422, 435, 436, 340, 341, 152, 153, 213, 101,
- 189, 190, 437, 262, 263, 62, 195, 254, 196, 197,
- 234, 312, 102, 103, 104, 105, 298, 299, 301, 216,
- 217, 218, 235, 236, 237, 392, 287, 238, 239, 240,
- 241, 395, 396, 429, 430, 242, 243, 244, 367, 368,
- 401, 264, 265, 139, 183, 184, 245, 122, 123, 124,
- 151, 156, 246, 106, 386, 247
+ 56, 57, 108, 58, 74, 202, 75, 76, 77, 59,
+ 69, 70, 174, 60, 100, 61, 131, 132, 175, 176,
+ 341, 342, 343, 334, 335, 120, 325, 205, 206, 329,
+ 330, 426, 439, 440, 344, 345, 152, 153, 214, 101,
+ 190, 191, 441, 265, 266, 62, 196, 257, 197, 198,
+ 237, 316, 102, 103, 104, 105, 302, 303, 305, 217,
+ 218, 219, 238, 239, 240, 396, 291, 241, 242, 243,
+ 244, 399, 400, 433, 434, 245, 246, 247, 371, 372,
+ 405, 267, 268, 139, 184, 185, 248, 122, 123, 124,
+ 151, 156, 249, 106, 390, 250
};
-static const short yypact[] = { 275,
--32768,-32768, 275,-32768, -91,-32768, 17, 36,-32768,-32768,
--32768,-32768, 56,-32768, -47, 262,-32768,-32768, 54, 44,
- 41, 62, 91, 68, 175, 262,-32768, 82,-32768,-32768,
--32768,-32768,-32768, 155,-32768,-32768, 453,-32768, 193, 75,
--32768,-32768,-32768, 197,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768, 198, 453,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 337, 614,-32768, 132,-32768, 119,-32768,
- 144,-32768,-32768, 3,-32768, 57,-32768, 154,-32768,-32768,
--32768, -11, 184,-32768, 196,-32768, 223, 251,-32768,-32768,
--32768,-32768,-32768, 273, 252,-32768,-32768,-32768, 690, 336,
- 243,-32768, 246,-32768,-32768, 241, 357,-32768,-32768,-32768,
- 290, 253,-32768,-32768, 275, 290, 254, 259, 9,-32768,
--32768,-32768,-32768, 102, 290,-32768,-32768,-32768,-32768,-32768,
- -2,-32768, 255,-32768, 258, 266, 70, 163,-32768, 308,
- 207,-32768,-32768, -91,-32768,-32768, 303,-32768,-32768,-32768,
- 364, 538, -38,-32768,-32768,-32768,-32768,-32768, 372, 690,
- 370, 290, 189,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 69,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768, 85,-32768,-32768, 271,-32768,-32768, 265,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768, 269, 270,-32768,
--32768, 71, 76, 128,-32768, 272, 353, 287, 323, 98,
- 125,-32768,-32768, 288, 189,-32768,-32768, 289, 282,-32768,
--32768,-32768,-32768, 311, 373,-32768,-32768, -50,-32768,-32768,
- 301, 275, 189,-32768, 293, 191, 312, 294, -50,-32768,
--32768,-32768, 307,-32768,-32768,-32768,-32768,-32768, 70,-32768,
- 178, 302, 329, 411, 370, 207,-32768,-32768, 207,-32768,
- 26, 48, 26,-32768,-32768, 327, 48, 26, 321, 303,
--32768, 392, 39, 333, 60, 350, 60, 351, 189, 315,
- 189,-32768, 436, 322, 309, 325, 216, 319, 330, 328,
- 331,-32768,-32768,-32768,-32768,-32768, 332, 436, 436,-32768,
- 436, 189, 320, 334,-32768,-32768, 342, 344,-32768,-32768,
--32768, 434,-32768,-32768,-32768,-32768, 338,-32768,-32768,-32768,
- 26,-32768,-32768, 354,-32768,-32768,-32768, 370, 326, 138,
--32768,-32768,-32768, 282,-32768, 383, 348, 345,-32768,-32768,
- 26, 282, 370, 352, 370, 349,-32768, 355,-32768,-32768,
--32768, 340,-32768,-32768, 289, 22,-32768,-32768, 358,-32768,
--32768,-32768, 356,-32768,-32768, -4, 164,-32768,-32768,-32768,
--32768,-32768,-32768,-32768, 362,-32768, 302,-32768, 39,-32768,
- 282,-32768, 61,-32768, 26, 282,-32768,-32768, 282,-32768,
--32768, 411,-32768,-32768, 179,-32768, -38, 189,-32768, 370,
- 346,-32768,-32768, 334,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 434,-32768, 22, 24, 240, 346, 370,
--32768, 35,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 35, 43,-32768,-32768, 18,-32768,-32768,
--32768, 461, 464,-32768
+static const short yypact[] = { 200,
+-32768,-32768, 200,-32768, -45,-32768, 43, 34,-32768,-32768,
+-32768,-32768, 50,-32768, -19, 235,-32768,-32768, 86, 122,
+ 22, 106, 139, 120, 236, 235,-32768, 134,-32768,-32768,
+-32768,-32768,-32768, 197,-32768,-32768, 457,-32768, 234, 56,
+-32768,-32768,-32768, 49,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768, 214, 457,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 341, 618,-32768, 163,-32768, 181,-32768,
+ 206,-32768,-32768, 65,-32768, -14,-32768, 216,-32768,-32768,
+-32768, 57, 210,-32768, 256,-32768, 258, 274,-32768,-32768,
+-32768,-32768,-32768, 295, 266,-32768,-32768,-32768, 694, 349,
+ 250,-32768, 251,-32768,-32768, 242, 357,-32768,-32768,-32768,
+ 226, 253,-32768,-32768, 200, 226, 254, 257, 85,-32768,
+-32768,-32768,-32768, 5, 226,-32768,-32768,-32768,-32768,-32768,
+ -5,-32768, 252,-32768, 259, 263, 75, 82,-32768, 303,
+ 219,-32768,-32768, -45,-32768,-32768, 305,-32768,-32768,-32768,
+ 356, 542, 18,-32768,-32768,-32768,-32768,-32768, 372, 694,
+ 226, 226, 188,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768, 67,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 99,-32768,-32768, 268,-32768,-32768, 261,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 267, 270,
+-32768,-32768, 169, 90, 112,-32768, 271, 348, 283, 319,
+ 103, 109,-32768,-32768, 290, 188,-32768,-32768, 291, 57,
+-32768,-32768,-32768,-32768,-32768, 301, 373,-32768,-32768, -74,
+-32768,-32768, 299,-32768, 200, 188,-32768, 297, 204, 306,
+ 298, -74,-32768,-32768,-32768, 307,-32768,-32768,-32768,-32768,
+-32768, 75,-32768, 7, 275, 318, 410, 407, 219,-32768,
+-32768, 219,-32768, 41, 74, 41,-32768,-32768, 326, 74,
+ 41, 321, 305,-32768, 394, 14, 322, 60, 352, 60,
+ 353, 188, 316, 188,-32768,-32768, 440, 320, 311, 327,
+ 433, 324, 334, 323, 346,-32768,-32768,-32768,-32768,-32768,
+ 328, 440, 440,-32768, 440, 188, 452, 338,-32768,-32768,
+ 350, 358,-32768,-32768,-32768, 453,-32768,-32768,-32768,-32768,
+ 329,-32768,-32768,-32768, 41,-32768,-32768, 381,-32768,-32768,
+-32768, 407, 354, 146,-32768,-32768,-32768, 355,-32768, 401,
+ 366, 364,-32768,-32768, 41, 355, 407, 369, 407, 368,
+-32768, 370,-32768,-32768,-32768, 361,-32768,-32768, 291, 17,
+-32768,-32768, 371,-32768,-32768,-32768, 375,-32768,-32768, 23,
+ 158,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 374,-32768,
+ 275,-32768, 14,-32768, 355,-32768, 42,-32768, 41, 355,
+-32768,-32768, 355,-32768,-32768, 410,-32768,-32768, 203,-32768,
+ 18, 289,-32768, 407, 376,-32768,-32768, 338,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 453,-32768, 17,
+ 140, 227, 376, 407,-32768, 38,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 38, 11,-32768,
+-32768, 30,-32768,-32768,-32768, 486, 487,-32768
};
static const short yypgoto[] = {-32768,
--32768, 469,-32768, 335,-32768, 460,-32768,-32768, 448,-32768,
--32768, 419,-32768,-32768,-32768,-32768, 402,-32768, 361,-32768,
--32768, 367,-32768,-32768, -54,-32768,-32768, 324,-32768, 232,
- 205,-32768, 100,-32768, 108,-32768,-32768,-32768, 218,-32768,
--32768,-32768, 55, -176, -244, -79,-32768, -56,-32768, 217,
--32768, 237, -133, 291, 295,-32768, 19,-32768, -127, -250,
- -97, 101, -49, -45,-32768, -14,-32768,-32768,-32768, -202,
--32768, 204, -44, 99, -16,-32768, 257,-32768, -231,-32768,
--32768,-32768, 84,-32768,-32768,-32768,-32768,-32768,-32768, 104,
- 103, -248,-32768,-32768,-32768, 261, -113, -76,-32768,-32768,
--32768,-32768, 1,-32768, 157, -7
+-32768, 485,-32768, 347,-32768, 479,-32768,-32768, 468,-32768,
+-32768, 439,-32768,-32768,-32768,-32768, 422,-32768, 382,-32768,
+-32768, 389, 377,-32768, -55,-32768,-32768, 342,-32768, 255,
+ 224,-32768, 119,-32768, 125, 292,-32768,-32768, 241,-32768,
+-32768,-32768, 79, -270, -268, -71,-32768, -69,-32768, 244,
+-32768, 262, -135, 315, 325,-32768, -82,-32768, -130, -246,
+ -102, 126, -59, -31,-32768, -13,-32768,-32768,-32768, -209,
+-32768, 239, -63, 124, -41,-32768, 286,-32768, -121,-32768,
+-32768,-32768, 113,-32768,-32768,-32768,-32768,-32768,-32768, 128,
+ 130, -252,-32768,-32768,-32768, 278, -116, -114,-32768,-32768,
+-32768,-32768, 1,-32768, 189, -7
};
-#define YYLAST 788
+#define YYLAST 792
static const short yytable[] = { 15,
- 5, 307, 121, 5, 10, 15, 191, 276, 278, 177,
- 107, 10, 316, 318, 319, 7, 1, 2, 322, 323,
- 118, 432, 63, 179, 185, 10, 11, 179, 332, 65,
- 10, 148, 72, 187, 188, 433, 79, 64, 432, 178,
- 71, 63, 426, 178, 78, 214, 432, 10, 65, 133,
- 187, 188, 433, 134, 285, 354, 64, 176, 187, 188,
- 433, 19, 259, 28, 10, 11, 79, 286, 10, 10,
- 215, 365, 374, 16, 78, 165, 166, 167, 10, 168,
- 169, 170, 171, 10, 259, 257, 258, 149, 1, 2,
- 257, 258, 384, 336, 336, 67, 427, 212, 260, 135,
- 428, 150, 119, 72, 29, 159, 115, 259, 79, 160,
- 133, 71, 400, 113, 134, 144, 78, 158, 172, 191,
- 260, 177, 261, 266, 12, 157, 406, 394, 30, 180,
- 186, 434, 441, 199, 332, 179, 411, 185, 308, 282,
- 192, 198, 179, 260, 329, 179, 154, 32, 434, 31,
- 439, 178, 119, 221, 223, 33, 434, 155, 178, 173,
- 135, 178, 222, 17, 317, 329, 329, -74, 116, 176,
- 280, 10, 168, 119, 119, 171, 248, 34, -255, 37,
- 249, 214, -255, 119, 119, 68, 10, 168, 291, 119,
- 171, 36, 250, 333, 417, 166, 251, 10, 168, 169,
- 170, 171, 1, 2, 275, 10, 215, 66, 214, 224,
- 1, 2, 165, 166, 167, 10, 168, 169, 170, 171,
- 1, 2, 166, 225, 10, 168, 169, 170, 171, 110,
- 111, 277, 290, 215, 346, 269, 348, 226, 227, 270,
- 80, 180, 109, 186, 309, 378, 73, 313, 199, 379,
- 112, 199, 198, 228, 380, 172, 198, 363, 440, 198,
- 117, 440, 385, 407, 226, 334, 349, 342, 181, 342,
- 182, 403, 229, 193, 314, 404, 20, 315, 230, 353,
- 126, 360, 361, 181, 362, 21, 415, 231, 1, 2,
- 416, 293, 294, 295, 296, 232, 173, 233, 10, 333,
- 125, 409, 297, 1, 2, 230, 22, 127, 23, 412,
- 10, 168, 413, 194, 171, 1, 2, 24, 202, 203,
- 376, 1, 2, 187, 188, 128, 166, 129, 10, 168,
- 169, 170, 171, 288, 289, 387, 130, 387, 136, 82,
- 293, 294, 295, 296, 187, 188, 83, 84, 397, 137,
- 83, 84, 138, 372, 373, 423, 424, 140, 402, 141,
- 143, 146, 85, 38, 86, 147, 87, 161, 226, 309,
- 162, 334, 163, 206, 219, 342, 88, 198, 10, 252,
- 89, 253, 256, 364, 90, 255, 271, 91, 41, 42,
- 43, 272, 402, 273, 274, 119, 279, 281, 92, 45,
- 292, 284, 302, 93, 46, 94, 47, 95, 397, 230,
- 283, 300, 431, 304, 48, 311, 96, 97, 320, 324,
- 328, 343, 345, 49, 347, 50, 351, 215, 350, 352,
- 51, 98, 52, 53, 54, 357, 356, 359, 371, 375,
- 358, 377, 166, 99, 10, 168, 169, 170, 171, 1,
- 2, 369, 366, 370, 381, 382, 383, 393, 390, 388,
- 443, 10, 420, 444, 391, 399, 1, 2, 405, 398,
- 225, 6, 18, 35, 81, 114, 145, 142, 200, 38,
- 305, 344, 410, 220, 226, 227, 408, 327, 438, 310,
- 335, 355, 414, 267, 39, 303, 418, 268, 40, 425,
- 228, 389, 419, 0, 41, 42, 43, 421, 0, 0,
- 44, 306, 0, 0, 0, 45, 0, 0, 0, 229,
- 46, 0, 47, 0, 0, 230, 0, 0, 0, 0,
- 48, 0, 0, 0, 231, 0, 0, 0, 0, 49,
- 0, 50, 232, 0, 233, 0, 51, 0, 52, 53,
- 54, 83, 84, 0, 0, 0, 0, 0, 0, 207,
- 0, 0, 0, 85, 38, 86, 0, 87, 208, 0,
+ 5, 279, 281, 5, 192, 15, 178, 336, 311, 107,
+ 121, 320, 322, 323, 436, 10, 168, 326, 327, 171,
+ 180, 186, 10, 63, 180, 10, 188, 189, 437, 65,
+ 289, 10, 72, 436, 179, 115, 79, 64, 179, 133,
+ 71, 436, 63, 290, 78, 188, 189, 437, 65, 154,
+ 10, 10, 11, 188, 189, 437, 64, 10, 10, 11,
+ 155, 7, 1, 2, 10, 177, 79, 134, 10, 1,
+ 2, 16, 378, 10, 78, 340, 67, 262, 1, 2,
+ 165, 166, 167, 10, 168, 169, 170, 171, 118, 19,
+ 10, 168, 388, 340, 171, 28, 213, 116, 73, 135,
+ 133, 215, 159, 72, 260, 261, 160, 148, 79, 30,
+ 262, 71, 182, 263, 336, 144, 78, 158, 443, 333,
+ 192, 178, 398, 172, 438, 157, 216, 119, 134, 181,
+ 187, 264, 269, 200, 410, 180, 415, 186, 312, 404,
+ 193, 199, 180, 438, 445, 180, 263, 333, 286, 179,
+ 12, 438, 283, 223, 225, 119, 179, 17, 430, 179,
+ 135, 222, 224, 149, 173, 333, 68, -77, 444, 358,
+ 119, 444, 295, 119, 251, 113, 318, 150, 252, 319,
+ 177, 163, 29, 260, 261, 369, 215, 182, 119, 183,
+ 321, 421, 215, 31, 166, 32, 10, 168, 169, 170,
+ 171, 1, 2, 119, 337, 262, 253, 33, 226, 278,
+ 254, 216, 431, 1, 2, 280, 432, 216, 350, 272,
+ 352, 37, 227, 273, 165, 166, 167, 10, 168, 169,
+ 170, 171, 1, 2, 10, 294, 228, 229, 34, 1,
+ 2, 263, 367, 36, 181, 353, 187, 313, 66, 20,
+ 317, 200, 230, 382, 200, 199, 80, 383, 21, 199,
+ 364, 365, 199, 366, 411, 407, 384, 172, 338, 408,
+ 346, 231, 346, 109, 389, 416, -259, 232, 417, 22,
+ -259, 23, 119, 10, 168, 194, 233, 171, 1, 2,
+ 24, 110, 111, 234, 235, 166, 236, 10, 168, 169,
+ 170, 171, 1, 2, 297, 298, 299, 300, 173, 226,
+ 419, 337, 112, 413, 420, 301, 1, 2, 188, 189,
+ 203, 204, 117, 227, 380, 195, 125, 297, 298, 299,
+ 300, 292, 293, 188, 189, 83, 84, 228, 229, 391,
+ 126, 391, 127, 82, 376, 377, 427, 428, 128, 129,
+ 130, 136, 401, 230, 83, 84, 137, 138, 140, 141,
+ 143, 146, 406, 147, 161, 207, 85, 38, 86, 163,
+ 87, 162, 231, 313, 220, 338, 255, 256, 232, 346,
+ 88, 199, 259, 258, 89, 274, 275, 233, 90, 276,
+ 277, 91, 41, 42, 43, 235, 406, 236, 282, 284,
+ 287, 288, 92, 45, 296, 304, 306, 93, 46, 94,
+ 47, 95, 401, 308, 315, 10, 435, 324, 48, 328,
+ 96, 97, 332, 347, 349, 351, 354, 49, 355, 50,
+ 361, 356, 216, 363, 51, 98, 52, 53, 54, 166,
+ 360, 10, 168, 169, 170, 171, 166, 99, 10, 168,
+ 169, 170, 171, 1, 2, 362, 370, 375, 166, 373,
+ 10, 168, 169, 170, 171, 10, 379, 374, 119, 381,
+ 1, 2, 385, 386, 227, 387, 392, 394, 397, 395,
+ 409, 228, 402, 38, 403, 447, 448, 6, 228, 229,
+ 201, 18, 424, 35, 81, 114, 357, 145, 39, 142,
+ 228, 221, 40, 348, 230, 414, 309, 412, 41, 42,
+ 43, 285, 164, 331, 44, 368, 442, 314, 270, 45,
+ 339, 418, 232, 231, 46, 422, 47, 307, 271, 232,
+ 359, 310, 429, 423, 48, 425, 0, 393, 233, 0,
+ 0, 232, 0, 49, 0, 50, 235, 0, 236, 0,
+ 51, 0, 52, 53, 54, 83, 84, 0, 0, 0,
+ 0, 0, 0, 208, 0, 0, 0, 85, 38, 86,
+ 0, 87, 209, 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, 210, 0, 92, 45, 0, 0, 0, 93, 46,
+ 94, 47, 95, 0, 0, 0, 0, 0, 0, 48,
+ 0, 96, 97, 211, 212, 0, 0, 0, 49, 0,
+ 50, 83, 84, 0, 0, 51, 98, 52, 53, 54,
+ 0, 0, 0, 85, 38, 86, 0, 87, 0, 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, 209, 0, 92,
+ 42, 43, 0, 0, 0, 0, 0, 0, 0, 92,
45, 0, 0, 0, 93, 46, 94, 47, 95, 0,
- 0, 0, 0, 0, 0, 48, 0, 96, 97, 210,
- 211, 0, 0, 0, 49, 0, 50, 83, 84, 0,
+ 0, 0, 0, 0, 0, 48, 0, 96, 97, 0,
+ 0, 0, 0, 0, 49, 0, 50, 1, 2, 0,
0, 51, 98, 52, 53, 54, 0, 0, 0, 85,
38, 86, 0, 87, 0, 0, 0, 0, 0, 0,
0, 0, 0, 88, 0, 0, 0, 89, 0, 0,
@@ -734,81 +743,82 @@ static const short yytable[] = { 15,
0, 0, 0, 0, 0, 92, 45, 0, 0, 0,
93, 46, 94, 47, 95, 0, 0, 0, 0, 0,
0, 48, 0, 96, 97, 0, 0, 0, 0, 0,
- 49, 0, 50, 1, 2, 0, 0, 51, 98, 52,
- 53, 54, 0, 0, 0, 85, 38, 86, 0, 87,
- 0, 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, 0,
- 0, 92, 45, 0, 0, 0, 93, 46, 94, 47,
- 95, 0, 0, 0, 0, 0, 0, 48, 0, 96,
- 97, 0, 0, 0, 0, 0, 49, 0, 50, 0,
- 0, 0, 0, 51, 98, 52, 53, 54
+ 49, 0, 50, 0, 0, 0, 0, 51, 98, 52,
+ 53, 54
};
static const short yycheck[] = { 7,
- 0, 252, 82, 3, 9, 13, 140, 210, 211, 137,
- 65, 9, 261, 262, 263, 107, 14, 15, 267, 268,
- 32, 4, 37, 137, 138, 9, 10, 141, 273, 37,
- 9, 23, 40, 16, 17, 18, 44, 37, 4, 137,
- 40, 56, 19, 141, 44, 84, 4, 9, 56, 99,
- 16, 17, 18, 99, 105, 287, 56, 137, 16, 17,
- 18, 109, 37, 10, 9, 10, 74, 118, 9, 9,
- 109, 303, 321, 38, 74, 6, 7, 8, 9, 10,
- 11, 12, 13, 9, 37, 15, 16, 79, 14, 15,
- 15, 16, 341, 34, 34, 21, 73, 152, 73, 99,
- 77, 93, 114, 111, 61, 108, 50, 37, 116, 112,
- 160, 111, 117, 111, 160, 115, 116, 125, 49, 253,
- 73, 249, 202, 203, 108, 125, 377, 106, 88, 137,
- 138, 114, 115, 141, 379, 249, 385, 251, 252, 219,
- 140, 141, 256, 73, 106, 259, 45, 57, 114, 88,
- 108, 249, 114, 161, 162, 88, 114, 56, 256, 90,
- 160, 259, 162, 108, 117, 106, 106, 108, 112, 249,
- 215, 9, 10, 114, 114, 13, 108, 3, 108, 25,
- 112, 84, 112, 114, 114, 111, 9, 10, 233, 114,
- 13, 110, 108, 273, 397, 7, 112, 9, 10, 11,
- 12, 13, 14, 15, 107, 9, 109, 15, 84, 21,
- 14, 15, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 7, 35, 9, 10, 11, 12, 13, 111,
- 112, 107, 232, 109, 279, 108, 281, 49, 50, 112,
- 43, 249, 111, 251, 252, 108, 50, 255, 256, 112,
- 107, 259, 252, 65, 334, 49, 256, 302, 435, 259,
- 107, 438, 342, 377, 49, 273, 283, 275, 106, 277,
- 108, 108, 84, 67, 256, 112, 15, 259, 90, 64,
- 85, 298, 299, 106, 301, 24, 108, 99, 14, 15,
- 112, 101, 102, 103, 104, 107, 90, 109, 9, 379,
- 117, 381, 112, 14, 15, 90, 45, 85, 47, 386,
- 9, 10, 389, 107, 13, 14, 15, 56, 16, 17,
- 328, 14, 15, 16, 17, 75, 7, 55, 9, 10,
- 11, 12, 13, 33, 34, 343, 85, 345, 3, 3,
- 101, 102, 103, 104, 16, 17, 14, 15, 356, 107,
- 14, 15, 107, 16, 17, 412, 413, 117, 366, 3,
- 108, 108, 26, 27, 28, 107, 30, 113, 49, 377,
- 113, 379, 107, 10, 3, 383, 40, 377, 9, 109,
- 44, 117, 113, 64, 48, 117, 115, 51, 52, 53,
- 54, 39, 400, 107, 72, 114, 109, 109, 62, 63,
- 108, 29, 109, 67, 68, 69, 70, 71, 416, 90,
- 100, 100, 420, 107, 78, 5, 80, 81, 92, 99,
- 29, 72, 72, 87, 110, 89, 118, 109, 107, 105,
- 94, 95, 96, 97, 98, 108, 107, 106, 5, 86,
- 110, 116, 7, 107, 9, 10, 11, 12, 13, 14,
- 15, 110, 119, 110, 72, 108, 112, 118, 110, 108,
- 0, 9, 117, 0, 110, 110, 14, 15, 107, 112,
- 35, 3, 13, 26, 56, 74, 116, 111, 144, 27,
- 249, 277, 383, 160, 49, 50, 379, 270, 434, 253,
- 274, 288, 392, 203, 42, 239, 398, 203, 46, 416,
- 65, 345, 400, -1, 52, 53, 54, 404, -1, -1,
- 58, 251, -1, -1, -1, 63, -1, -1, -1, 84,
- 68, -1, 70, -1, -1, 90, -1, -1, -1, -1,
- 78, -1, -1, -1, 99, -1, -1, -1, -1, 87,
- -1, 89, 107, -1, 109, -1, 94, -1, 96, 97,
- 98, 14, 15, -1, -1, -1, -1, -1, -1, 22,
- -1, -1, -1, 26, 27, 28, -1, 30, 31, -1,
+ 0, 211, 212, 3, 140, 13, 137, 276, 255, 65,
+ 82, 264, 265, 266, 4, 9, 10, 270, 271, 13,
+ 137, 138, 9, 37, 141, 9, 16, 17, 18, 37,
+ 105, 9, 40, 4, 137, 50, 44, 37, 141, 99,
+ 40, 4, 56, 118, 44, 16, 17, 18, 56, 45,
+ 9, 9, 10, 16, 17, 18, 56, 9, 9, 10,
+ 56, 107, 14, 15, 9, 137, 74, 99, 9, 14,
+ 15, 38, 325, 9, 74, 34, 21, 37, 14, 15,
+ 6, 7, 8, 9, 10, 11, 12, 13, 32, 109,
+ 9, 10, 345, 34, 13, 10, 152, 112, 50, 99,
+ 160, 84, 108, 111, 15, 16, 112, 23, 116, 88,
+ 37, 111, 106, 73, 383, 115, 116, 125, 108, 106,
+ 256, 252, 106, 49, 114, 125, 109, 114, 160, 137,
+ 138, 203, 204, 141, 381, 252, 389, 254, 255, 117,
+ 140, 141, 259, 114, 115, 262, 73, 106, 220, 252,
+ 108, 114, 216, 161, 162, 114, 259, 108, 19, 262,
+ 160, 161, 162, 79, 90, 106, 111, 108, 439, 291,
+ 114, 442, 236, 114, 108, 111, 259, 93, 112, 262,
+ 252, 107, 61, 15, 16, 307, 84, 106, 114, 108,
+ 117, 401, 84, 88, 7, 57, 9, 10, 11, 12,
+ 13, 14, 15, 114, 276, 37, 108, 88, 21, 107,
+ 112, 109, 73, 14, 15, 107, 77, 109, 282, 108,
+ 284, 25, 35, 112, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 9, 235, 49, 50, 3, 14,
+ 15, 73, 306, 110, 252, 287, 254, 255, 15, 15,
+ 258, 259, 65, 108, 262, 255, 43, 112, 24, 259,
+ 302, 303, 262, 305, 381, 108, 338, 49, 276, 112,
+ 278, 84, 280, 111, 346, 390, 108, 90, 393, 45,
+ 112, 47, 114, 9, 10, 67, 99, 13, 14, 15,
+ 56, 111, 112, 106, 107, 7, 109, 9, 10, 11,
+ 12, 13, 14, 15, 101, 102, 103, 104, 90, 21,
+ 108, 383, 107, 385, 112, 112, 14, 15, 16, 17,
+ 16, 17, 107, 35, 332, 107, 117, 101, 102, 103,
+ 104, 33, 34, 16, 17, 14, 15, 49, 50, 347,
+ 85, 349, 85, 3, 16, 17, 416, 417, 75, 55,
+ 85, 3, 360, 65, 14, 15, 107, 107, 117, 3,
+ 108, 108, 370, 107, 113, 10, 26, 27, 28, 107,
+ 30, 113, 84, 381, 3, 383, 109, 117, 90, 387,
+ 40, 381, 113, 117, 44, 115, 39, 99, 48, 107,
+ 72, 51, 52, 53, 54, 107, 404, 109, 109, 109,
+ 100, 29, 62, 63, 108, 100, 109, 67, 68, 69,
+ 70, 71, 420, 107, 5, 9, 424, 92, 78, 99,
+ 80, 81, 29, 72, 72, 110, 107, 87, 118, 89,
+ 108, 105, 109, 106, 94, 95, 96, 97, 98, 7,
+ 107, 9, 10, 11, 12, 13, 7, 107, 9, 10,
+ 11, 12, 13, 14, 15, 110, 119, 5, 7, 110,
+ 9, 10, 11, 12, 13, 9, 86, 110, 114, 116,
+ 14, 15, 72, 108, 35, 112, 108, 110, 118, 110,
+ 107, 49, 112, 27, 110, 0, 0, 3, 49, 50,
+ 144, 13, 117, 26, 56, 74, 64, 116, 42, 111,
+ 49, 160, 46, 280, 65, 387, 252, 383, 52, 53,
+ 54, 220, 136, 273, 58, 64, 438, 256, 204, 63,
+ 277, 396, 90, 84, 68, 402, 70, 242, 204, 90,
+ 292, 254, 420, 404, 78, 408, -1, 349, 99, -1,
+ -1, 90, -1, 87, -1, 89, 107, -1, 109, -1,
+ 94, -1, 96, 97, 98, 14, 15, -1, -1, -1,
+ -1, -1, -1, 22, -1, -1, -1, 26, 27, 28,
+ -1, 30, 31, -1, -1, -1, -1, -1, -1, -1,
+ -1, 40, -1, -1, -1, 44, -1, -1, -1, 48,
+ -1, -1, 51, 52, 53, 54, -1, -1, -1, -1,
+ -1, 60, -1, 62, 63, -1, -1, -1, 67, 68,
+ 69, 70, 71, -1, -1, -1, -1, -1, -1, 78,
+ -1, 80, 81, 82, 83, -1, -1, -1, 87, -1,
+ 89, 14, 15, -1, -1, 94, 95, 96, 97, 98,
+ -1, -1, -1, 26, 27, 28, -1, 30, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 40, -1, -1,
-1, 44, -1, -1, -1, 48, -1, -1, 51, 52,
- 53, 54, -1, -1, -1, -1, -1, 60, -1, 62,
+ 53, 54, -1, -1, -1, -1, -1, -1, -1, 62,
63, -1, -1, -1, 67, 68, 69, 70, 71, -1,
- -1, -1, -1, -1, -1, 78, -1, 80, 81, 82,
- 83, -1, -1, -1, 87, -1, 89, 14, 15, -1,
+ -1, -1, -1, -1, -1, 78, -1, 80, 81, -1,
+ -1, -1, -1, -1, 87, -1, 89, 14, 15, -1,
-1, 94, 95, 96, 97, 98, -1, -1, -1, 26,
27, 28, -1, 30, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 40, -1, -1, -1, 44, -1, -1,
@@ -816,15 +826,8 @@ static const short yycheck[] = { 7,
-1, -1, -1, -1, -1, 62, 63, -1, -1, -1,
67, 68, 69, 70, 71, -1, -1, -1, -1, -1,
-1, 78, -1, 80, 81, -1, -1, -1, -1, -1,
- 87, -1, 89, 14, 15, -1, -1, 94, 95, 96,
- 97, 98, -1, -1, -1, 26, 27, 28, -1, 30,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 40,
- -1, -1, -1, 44, -1, -1, -1, 48, -1, -1,
- 51, 52, 53, 54, -1, -1, -1, -1, -1, -1,
- -1, 62, 63, -1, -1, -1, 67, 68, 69, 70,
- 71, -1, -1, -1, -1, -1, -1, 78, -1, 80,
- 81, -1, -1, -1, -1, -1, 87, -1, 89, -1,
- -1, -1, -1, 94, 95, 96, 97, 98
+ 87, -1, 89, -1, -1, -1, -1, 94, 95, 96,
+ 97, 98
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/share/bison.simple"
@@ -1864,13 +1867,20 @@ case 62:
#line 794 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
- assert(yyval.a_expr->Identifier == 0);
yyval.a_expr->Identifier = yyvsp[-5].tv_str;
yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
;
break;}
case 63:
-#line 803 "asn1p_y.y"
+#line 800 "asn1p_y.y"
+{
+ yyval.a_expr = yyvsp[0].a_expr;
+ yyval.a_expr->Identifier = yyvsp[-5].tv_str;
+ yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
+ ;
+ break;}
+case 64:
+#line 808 "asn1p_y.y"
{
int ret;
yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -1881,8 +1891,8 @@ case 63:
if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
;
break;}
-case 64:
-#line 812 "asn1p_y.y"
+case 65:
+#line 817 "asn1p_y.y"
{
int ret;
yyval.a_plist = yyvsp[-2].a_plist;
@@ -1892,15 +1902,15 @@ case 64:
if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
;
break;}
-case 65:
-#line 823 "asn1p_y.y"
+case 66:
+#line 828 "asn1p_y.y"
{
yyval.a_parg.governor = NULL;
yyval.a_parg.argument = yyvsp[0].tv_str;
;
break;}
-case 66:
-#line 827 "asn1p_y.y"
+case 67:
+#line 832 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1909,8 +1919,8 @@ case 66:
yyval.a_parg.argument = yyvsp[0].tv_str;
;
break;}
-case 67:
-#line 834 "asn1p_y.y"
+case 68:
+#line 839 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1919,8 +1929,8 @@ case 67:
yyval.a_parg.argument = yyvsp[0].tv_str;
;
break;}
-case 68:
-#line 841 "asn1p_y.y"
+case 69:
+#line 846 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1930,29 +1940,40 @@ case 68:
yyval.a_parg.argument = yyvsp[0].tv_str;
;
break;}
-case 69:
-#line 852 "asn1p_y.y"
+case 70:
+#line 854 "asn1p_y.y"
+{
+ int ret;
+ yyval.a_parg.governor = asn1p_ref_new(yylineno);
+ ret = asn1p_ref_add_component(yyval.a_parg.governor,
+ ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
+ checkmem(ret == 0);
+ yyval.a_parg.argument = yyvsp[0].tv_str;
+ ;
+ break;}
+case 71:
+#line 865 "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 70:
-#line 857 "asn1p_y.y"
+case 72:
+#line 870 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 71:
-#line 864 "asn1p_y.y"
+case 73:
+#line 877 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
-case 72:
-#line 867 "asn1p_y.y"
+case 74:
+#line 880 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1962,8 +1983,8 @@ case 72:
yyval.a_expr->value = yyvsp[0].a_value;
;
break;}
-case 73:
-#line 875 "asn1p_y.y"
+case 75:
+#line 888 "asn1p_y.y"
{
asn1p_ref_t *ref;
yyval.a_expr = asn1p_expr_new(yylineno);
@@ -1976,31 +1997,40 @@ case 73:
yyval.a_expr->value = asn1p_value_fromref(ref, 0);
;
break;}
-case 74:
-#line 903 "asn1p_y.y"
+case 76:
+#line 899 "asn1p_y.y"
+{
+ yyval.a_expr = asn1p_expr_new(yylineno);
+ yyval.a_expr->expr_type = A1TC_VALUESET;
+ yyval.a_expr->meta_type = AMT_VALUESET;
+ yyval.a_expr->constraints = yyvsp[0].a_constr;
+ ;
+ break;}
+case 77:
+#line 922 "asn1p_y.y"
{ yyval.a_expr = asn1p_expr_new(yylineno); ;
break;}
-case 75:
-#line 904 "asn1p_y.y"
+case 78:
+#line 923 "asn1p_y.y"
{ yyval.a_expr = yyvsp[0].a_expr; ;
break;}
-case 76:
-#line 907 "asn1p_y.y"
+case 79:
+#line 926 "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 77:
-#line 912 "asn1p_y.y"
+case 80:
+#line 931 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 78:
-#line 919 "asn1p_y.y"
+case 81:
+#line 938 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->Identifier == 0);
@@ -2009,8 +2039,8 @@ case 78:
yyval.a_expr->marker = yyvsp[0].a_marker;
;
break;}
-case 79:
-#line 926 "asn1p_y.y"
+case 82:
+#line 945 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
@@ -2018,8 +2048,8 @@ case 79:
_fixup_anonymous_identifier(yyval.a_expr);
;
break;}
-case 80:
-#line 932 "asn1p_y.y"
+case 83:
+#line 951 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2028,50 +2058,50 @@ case 80:
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 81:
-#line 939 "asn1p_y.y"
+case 84:
+#line 958 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
-case 82:
-#line 945 "asn1p_y.y"
+case 85:
+#line 964 "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 83:
-#line 950 "asn1p_y.y"
+case 86:
+#line 969 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 84:
-#line 957 "asn1p_y.y"
+case 87:
+#line 976 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
assert(yyval.a_expr->Identifier == 0);
yyval.a_expr->Identifier = yyvsp[-1].tv_str;
;
break;}
-case 85:
-#line 962 "asn1p_y.y"
+case 88:
+#line 981 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
-case 86:
-#line 965 "asn1p_y.y"
+case 89:
+#line 984 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
_fixup_anonymous_identifier(yyval.a_expr);
;
break;}
-case 87:
-#line 972 "asn1p_y.y"
+case 90:
+#line 991 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
checkmem(yyval.a_expr);
@@ -2080,16 +2110,16 @@ case 87:
assert(yyval.a_expr->meta_type == AMT_OBJECTCLASS);
;
break;}
-case 88:
-#line 982 "asn1p_y.y"
+case 91:
+#line 1001 "asn1p_y.y"
{ yyval.a_int = 0; ;
break;}
-case 89:
-#line 983 "asn1p_y.y"
+case 92:
+#line 1002 "asn1p_y.y"
{ yyval.a_int = 1; ;
break;}
-case 90:
-#line 987 "asn1p_y.y"
+case 93:
+#line 1006 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2098,15 +2128,15 @@ case 90:
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 91:
-#line 994 "asn1p_y.y"
+case 94:
+#line 1013 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 92:
-#line 1004 "asn1p_y.y"
+case 95:
+#line 1023 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2116,8 +2146,8 @@ case 92:
yyval.a_expr->marker = yyvsp[0].a_marker;
;
break;}
-case 93:
-#line 1014 "asn1p_y.y"
+case 96:
+#line 1033 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
yyval.a_expr->Identifier = yyvsp[-3].tv_str;
@@ -2128,8 +2158,8 @@ case 93:
asn1p_expr_add(yyval.a_expr, yyvsp[-2].a_expr);
;
break;}
-case 94:
-#line 1025 "asn1p_y.y"
+case 97:
+#line 1044 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2139,8 +2169,8 @@ case 94:
yyval.a_expr->marker = yyvsp[0].a_marker;
;
break;}
-case 95:
-#line 1035 "asn1p_y.y"
+case 98:
+#line 1054 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2151,8 +2181,8 @@ case 95:
yyval.a_expr->marker = yyvsp[0].a_marker;
;
break;}
-case 96:
-#line 1046 "asn1p_y.y"
+case 99:
+#line 1065 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2162,8 +2192,8 @@ case 96:
yyval.a_expr->marker = yyvsp[0].a_marker;
;
break;}
-case 97:
-#line 1056 "asn1p_y.y"
+case 100:
+#line 1075 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2174,8 +2204,8 @@ case 97:
yyval.a_expr->marker = yyvsp[0].a_marker;
;
break;}
-case 98:
-#line 1067 "asn1p_y.y"
+case 101:
+#line 1086 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2186,68 +2216,68 @@ case 98:
yyval.a_expr->marker = yyvsp[0].a_marker;
;
break;}
-case 99:
-#line 1079 "asn1p_y.y"
+case 102:
+#line 1098 "asn1p_y.y"
{ yyval.a_wsynt = 0; ;
break;}
-case 100:
-#line 1080 "asn1p_y.y"
+case 103:
+#line 1099 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[0].a_wsynt;
;
break;}
-case 101:
-#line 1087 "asn1p_y.y"
+case 104:
+#line 1106 "asn1p_y.y"
{ asn1p_lexer_hack_enable_with_syntax(); ;
break;}
-case 102:
-#line 1089 "asn1p_y.y"
+case 105:
+#line 1108 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[-1].a_wsynt;
;
break;}
-case 103:
-#line 1095 "asn1p_y.y"
+case 106:
+#line 1114 "asn1p_y.y"
{
yyval.a_wsynt = asn1p_wsyntx_new();
TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
;
break;}
-case 104:
-#line 1099 "asn1p_y.y"
+case 107:
+#line 1118 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[-1].a_wsynt;
TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
;
break;}
-case 105:
-#line 1106 "asn1p_y.y"
+case 108:
+#line 1125 "asn1p_y.y"
{
yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
yyval.a_wchunk->type = WC_WHITESPACE;
;
break;}
-case 106:
-#line 1110 "asn1p_y.y"
+case 109:
+#line 1129 "asn1p_y.y"
{
yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_str, strlen(yyvsp[0].tv_str), 0);
;
break;}
-case 107:
-#line 1113 "asn1p_y.y"
+case 110:
+#line 1132 "asn1p_y.y"
{
yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].a_refcomp.name, strlen(yyvsp[0].a_refcomp.name), 0);
yyval.a_wchunk->type = WC_FIELD;
;
break;}
-case 108:
-#line 1117 "asn1p_y.y"
+case 111:
+#line 1136 "asn1p_y.y"
{
yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt);
;
break;}
-case 109:
-#line 1123 "asn1p_y.y"
+case 112:
+#line 1142 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2257,8 +2287,8 @@ case 109:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 110:
-#line 1131 "asn1p_y.y"
+case 113:
+#line 1150 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2269,8 +2299,8 @@ case 110:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 111:
-#line 1140 "asn1p_y.y"
+case 114:
+#line 1159 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2281,8 +2311,8 @@ case 111:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 112:
-#line 1152 "asn1p_y.y"
+case 115:
+#line 1171 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2303,15 +2333,15 @@ case 112:
}
;
break;}
-case 113:
-#line 1174 "asn1p_y.y"
+case 116:
+#line 1193 "asn1p_y.y"
{
yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
asn1p_as_pointer = 0;
;
break;}
-case 114:
-#line 1181 "asn1p_y.y"
+case 117:
+#line 1200 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
yyval.a_expr->marker.flags |= yyvsp[-1].a_int;
@@ -2329,14 +2359,14 @@ case 114:
}
;
break;}
-case 115:
-#line 1200 "asn1p_y.y"
+case 118:
+#line 1219 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
-case 116:
-#line 1203 "asn1p_y.y"
+case 119:
+#line 1222 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2344,8 +2374,8 @@ case 116:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 117:
-#line 1209 "asn1p_y.y"
+case 120:
+#line 1228 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2353,8 +2383,8 @@ case 117:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 118:
-#line 1215 "asn1p_y.y"
+case 121:
+#line 1234 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2362,8 +2392,8 @@ case 118:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 119:
-#line 1221 "asn1p_y.y"
+case 122:
+#line 1240 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2375,8 +2405,8 @@ case 119:
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 120:
-#line 1231 "asn1p_y.y"
+case 123:
+#line 1250 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2388,8 +2418,8 @@ case 120:
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 121:
-#line 1241 "asn1p_y.y"
+case 124:
+#line 1260 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2397,8 +2427,8 @@ case 121:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 122:
-#line 1247 "asn1p_y.y"
+case 125:
+#line 1266 "asn1p_y.y"
{
int ret;
yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2411,8 +2441,8 @@ case 122:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 123:
-#line 1259 "asn1p_y.y"
+case 126:
+#line 1277 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2421,8 +2451,8 @@ case 123:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 124:
-#line 1274 "asn1p_y.y"
+case 127:
+#line 1292 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2432,8 +2462,8 @@ case 124:
free(yyvsp[0].tv_str);
;
break;}
-case 125:
-#line 1282 "asn1p_y.y"
+case 128:
+#line 1300 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2445,8 +2475,8 @@ case 125:
free(yyvsp[-2].tv_str);
;
break;}
-case 126:
-#line 1292 "asn1p_y.y"
+case 129:
+#line 1310 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2458,8 +2488,8 @@ case 126:
free(yyvsp[-2].tv_str);
;
break;}
-case 127:
-#line 1302 "asn1p_y.y"
+case 130:
+#line 1320 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2471,8 +2501,8 @@ case 127:
free(yyvsp[-2].tv_str);
;
break;}
-case 128:
-#line 1312 "asn1p_y.y"
+case 131:
+#line 1330 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2482,8 +2512,8 @@ case 128:
checkmem(ret == 0);
;
break;}
-case 129:
-#line 1320 "asn1p_y.y"
+case 132:
+#line 1338 "asn1p_y.y"
{
int ret;
yyval.a_ref = yyvsp[0].a_ref;
@@ -2504,8 +2534,8 @@ case 129:
}
;
break;}
-case 130:
-#line 1342 "asn1p_y.y"
+case 133:
+#line 1360 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2515,8 +2545,8 @@ case 130:
checkmem(ret == 0);
;
break;}
-case 131:
-#line 1350 "asn1p_y.y"
+case 134:
+#line 1368 "asn1p_y.y"
{
int ret;
yyval.a_ref = yyvsp[-2].a_ref;
@@ -2525,50 +2555,50 @@ case 131:
checkmem(ret == 0);
;
break;}
-case 133:
-#line 1363 "asn1p_y.y"
+case 136:
+#line 1381 "asn1p_y.y"
{
yyval.a_refcomp.lex_type = RLT_AmpUppercase;
yyval.a_refcomp.name = yyvsp[0].tv_str;
;
break;}
-case 134:
-#line 1368 "asn1p_y.y"
+case 137:
+#line 1386 "asn1p_y.y"
{
yyval.a_refcomp.lex_type = RLT_Amplowercase;
yyval.a_refcomp.name = yyvsp[0].tv_str;
;
break;}
-case 135:
-#line 1377 "asn1p_y.y"
+case 138:
+#line 1395 "asn1p_y.y"
{
yyval.a_ref = asn1p_ref_new(yylineno);
asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
;
break;}
-case 136:
-#line 1381 "asn1p_y.y"
+case 139:
+#line 1399 "asn1p_y.y"
{
yyval.a_ref = yyval.a_ref;
asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
;
break;}
-case 137:
-#line 1385 "asn1p_y.y"
+case 140:
+#line 1403 "asn1p_y.y"
{
yyval.a_ref = yyval.a_ref;
asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
;
break;}
-case 138:
-#line 1392 "asn1p_y.y"
+case 141:
+#line 1410 "asn1p_y.y"
{
yyval.a_ref = asn1p_ref_new(yylineno);
asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
;
break;}
-case 139:
-#line 1412 "asn1p_y.y"
+case 142:
+#line 1430 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
assert(yyval.a_expr->Identifier == NULL);
@@ -2577,8 +2607,8 @@ case 139:
yyval.a_expr->value = yyvsp[0].a_value;
;
break;}
-case 142:
-#line 1424 "asn1p_y.y"
+case 145:
+#line 1442 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
@@ -2587,70 +2617,70 @@ case 142:
yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
;
break;}
-case 143:
-#line 1431 "asn1p_y.y"
+case 146:
+#line 1449 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
-case 144:
-#line 1431 "asn1p_y.y"
+case 147:
+#line 1449 "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 145:
-#line 1436 "asn1p_y.y"
+case 148:
+#line 1454 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_NULL;
;
break;}
-case 146:
-#line 1444 "asn1p_y.y"
+case 149:
+#line 1462 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_FALSE;
;
break;}
-case 147:
-#line 1449 "asn1p_y.y"
+case 150:
+#line 1467 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_TRUE;
;
break;}
-case 148:
-#line 1454 "asn1p_y.y"
+case 151:
+#line 1472 "asn1p_y.y"
{
yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
checkmem(yyval.a_value);
;
break;}
-case 149:
-#line 1458 "asn1p_y.y"
+case 152:
+#line 1476 "asn1p_y.y"
{
yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
checkmem(yyval.a_value);
;
break;}
-case 150:
-#line 1462 "asn1p_y.y"
+case 153:
+#line 1480 "asn1p_y.y"
{
yyval.a_value = yyval.a_value;
;
break;}
-case 151:
-#line 1465 "asn1p_y.y"
+case 154:
+#line 1483 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
-case 152:
-#line 1471 "asn1p_y.y"
+case 155:
+#line 1489 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -2663,8 +2693,8 @@ case 152:
free(yyvsp[0].tv_str);
;
break;}
-case 153:
-#line 1482 "asn1p_y.y"
+case 156:
+#line 1500 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -2680,31 +2710,31 @@ case 153:
free(yyvsp[0].tv_str);
;
break;}
-case 154:
-#line 1500 "asn1p_y.y"
+case 157:
+#line 1518 "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 155:
-#line 1504 "asn1p_y.y"
+case 158:
+#line 1522 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_TUPLE;
;
break;}
-case 156:
-#line 1509 "asn1p_y.y"
+case 159:
+#line 1527 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_QUADRUPLE;
;
break;}
-case 157:
-#line 1543 "asn1p_y.y"
+case 160:
+#line 1561 "asn1p_y.y"
{
yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2715,8 +2745,8 @@ case 157:
free(yyvsp[0].tv_opaque.buf);
;
break;}
-case 158:
-#line 1552 "asn1p_y.y"
+case 161:
+#line 1570 "asn1p_y.y"
{
int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
char *p = malloc(newsize + 1);
@@ -2730,72 +2760,72 @@ case 158:
yyval.tv_opaque.len = newsize;
;
break;}
-case 159:
-#line 1567 "asn1p_y.y"
+case 162:
+#line 1585 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
break;}
-case 160:
-#line 1568 "asn1p_y.y"
+case 163:
+#line 1586 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
break;}
-case 161:
-#line 1569 "asn1p_y.y"
+case 164:
+#line 1587 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
break;}
-case 162:
-#line 1570 "asn1p_y.y"
+case 165:
+#line 1588 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
break;}
-case 163:
-#line 1571 "asn1p_y.y"
+case 166:
+#line 1589 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
break;}
-case 164:
-#line 1572 "asn1p_y.y"
+case 167:
+#line 1590 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
break;}
-case 165:
-#line 1573 "asn1p_y.y"
+case 168:
+#line 1591 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
break;}
-case 166:
-#line 1574 "asn1p_y.y"
+case 169:
+#line 1592 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
break;}
-case 167:
-#line 1575 "asn1p_y.y"
+case 170:
+#line 1593 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
break;}
-case 168:
-#line 1576 "asn1p_y.y"
+case 171:
+#line 1594 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
break;}
-case 169:
-#line 1577 "asn1p_y.y"
+case 172:
+#line 1595 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
break;}
-case 170:
-#line 1578 "asn1p_y.y"
+case 173:
+#line 1596 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
break;}
-case 171:
-#line 1579 "asn1p_y.y"
+case 174:
+#line 1597 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
break;}
-case 172:
-#line 1586 "asn1p_y.y"
+case 175:
+#line 1604 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
break;}
-case 173:
-#line 1587 "asn1p_y.y"
+case 176:
+#line 1605 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
break;}
-case 174:
-#line 1588 "asn1p_y.y"
+case 177:
+#line 1606 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
break;}
-case 175:
-#line 1592 "asn1p_y.y"
+case 178:
+#line 1610 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2803,8 +2833,8 @@ case 175:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 176:
-#line 1598 "asn1p_y.y"
+case 179:
+#line 1616 "asn1p_y.y"
{
if(yyvsp[0].a_expr) {
yyval.a_expr = yyvsp[0].a_expr;
@@ -2816,92 +2846,92 @@ case 176:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 177:
-#line 1611 "asn1p_y.y"
+case 180:
+#line 1629 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
break;}
-case 178:
-#line 1612 "asn1p_y.y"
+case 181:
+#line 1630 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GeneralString;
fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
;
break;}
-case 179:
-#line 1616 "asn1p_y.y"
+case 182:
+#line 1634 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GraphicString;
fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
;
break;}
-case 180:
-#line 1620 "asn1p_y.y"
+case 183:
+#line 1638 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
break;}
-case 181:
-#line 1621 "asn1p_y.y"
+case 184:
+#line 1639 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
break;}
-case 182:
-#line 1622 "asn1p_y.y"
+case 185:
+#line 1640 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
break;}
-case 183:
-#line 1623 "asn1p_y.y"
+case 186:
+#line 1641 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
break;}
-case 184:
-#line 1624 "asn1p_y.y"
+case 187:
+#line 1642 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_T61String;
fprintf(stderr, "WARNING: T61String is not fully supported\n");
;
break;}
-case 185:
-#line 1628 "asn1p_y.y"
+case 188:
+#line 1646 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
break;}
-case 186:
-#line 1629 "asn1p_y.y"
+case 189:
+#line 1647 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
break;}
-case 187:
-#line 1630 "asn1p_y.y"
+case 190:
+#line 1648 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
break;}
-case 188:
-#line 1631 "asn1p_y.y"
+case 191:
+#line 1649 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_VideotexString;
fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
;
break;}
-case 189:
-#line 1635 "asn1p_y.y"
+case 192:
+#line 1653 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
break;}
-case 190:
-#line 1636 "asn1p_y.y"
+case 193:
+#line 1654 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
break;}
-case 196:
-#line 1648 "asn1p_y.y"
+case 199:
+#line 1666 "asn1p_y.y"
{ yyval.a_constr = 0; ;
break;}
-case 197:
-#line 1649 "asn1p_y.y"
+case 200:
+#line 1667 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 198:
-#line 1655 "asn1p_y.y"
+case 201:
+#line 1673 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
;
break;}
-case 199:
-#line 1658 "asn1p_y.y"
+case 202:
+#line 1676 "asn1p_y.y"
{
/*
* This is a special case, for compatibility purposes.
@@ -2910,26 +2940,33 @@ case 199:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
;
break;}
-case 200:
-#line 1668 "asn1p_y.y"
+case 203:
+#line 1686 "asn1p_y.y"
{
yyval.a_constr = yyvsp[-1].a_constr;
;
break;}
-case 201:
-#line 1671 "asn1p_y.y"
+case 204:
+#line 1689 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
-case 202:
-#line 1677 "asn1p_y.y"
+case 205:
+#line 1695 "asn1p_y.y"
+{
+ yyval.a_constr = asn1p_constraint_new(yylineno);
+ yyval.a_constr->type = ACT_EL_EXT;
+ ;
+ break;}
+case 206:
+#line 1699 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 203:
-#line 1680 "asn1p_y.y"
+case 207:
+#line 1702 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
@@ -2937,8 +2974,8 @@ case 203:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
;
break;}
-case 204:
-#line 1686 "asn1p_y.y"
+case 208:
+#line 1708 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
@@ -2948,38 +2985,38 @@ case 204:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
;
break;}
-case 205:
-#line 1697 "asn1p_y.y"
+case 209:
+#line 1719 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 206:
-#line 1700 "asn1p_y.y"
+case 210:
+#line 1722 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
;
break;}
-case 207:
-#line 1703 "asn1p_y.y"
+case 211:
+#line 1725 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
-case 208:
-#line 1706 "asn1p_y.y"
+case 212:
+#line 1728 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
-case 209:
-#line 1709 "asn1p_y.y"
+case 213:
+#line 1731 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
-case 210:
-#line 1715 "asn1p_y.y"
+case 214:
+#line 1737 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2989,8 +3026,8 @@ case 210:
checkmem(ret == 0);
;
break;}
-case 211:
-#line 1723 "asn1p_y.y"
+case 215:
+#line 1745 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -3000,8 +3037,8 @@ case 211:
checkmem(ret == 0);
;
break;}
-case 212:
-#line 1731 "asn1p_y.y"
+case 216:
+#line 1753 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3009,8 +3046,8 @@ case 212:
yyval.a_constr->value = yyvsp[0].a_value;
;
break;}
-case 213:
-#line 1737 "asn1p_y.y"
+case 217:
+#line 1759 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3018,8 +3055,8 @@ case 213:
yyval.a_constr->containedSubtype = yyvsp[0].a_value;
;
break;}
-case 214:
-#line 1743 "asn1p_y.y"
+case 218:
+#line 1765 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3028,8 +3065,8 @@ case 214:
yyval.a_constr->range_stop = yyvsp[0].a_value;
;
break;}
-case 215:
-#line 1750 "asn1p_y.y"
+case 219:
+#line 1772 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3039,8 +3076,8 @@ case 215:
yyval.a_constr->range_start->type = ATV_MIN;
;
break;}
-case 216:
-#line 1758 "asn1p_y.y"
+case 220:
+#line 1780 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3050,8 +3087,8 @@ case 216:
yyval.a_constr->range_stop->type = ATV_MAX;
;
break;}
-case 217:
-#line 1766 "asn1p_y.y"
+case 221:
+#line 1788 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3062,24 +3099,24 @@ case 217:
yyval.a_constr->range_stop->type = ATV_MAX;
;
break;}
-case 218:
-#line 1775 "asn1p_y.y"
+case 222:
+#line 1797 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 219:
-#line 1778 "asn1p_y.y"
+case 223:
+#line 1800 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 220:
-#line 1782 "asn1p_y.y"
+case 224:
+#line 1804 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
-case 221:
-#line 1782 "asn1p_y.y"
+case 225:
+#line 1804 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3089,64 +3126,64 @@ case 221:
yyval.a_constr->value->type = ATV_UNPARSED;
;
break;}
-case 222:
-#line 1793 "asn1p_y.y"
+case 226:
+#line 1815 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
break;}
-case 223:
-#line 1794 "asn1p_y.y"
+case 227:
+#line 1816 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
break;}
-case 224:
-#line 1795 "asn1p_y.y"
+case 228:
+#line 1817 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
break;}
-case 225:
-#line 1796 "asn1p_y.y"
+case 229:
+#line 1818 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
break;}
-case 226:
-#line 1800 "asn1p_y.y"
+case 230:
+#line 1822 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_SIZE;
;
break;}
-case 227:
-#line 1803 "asn1p_y.y"
+case 231:
+#line 1825 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_FROM;
;
break;}
-case 228:
-#line 1809 "asn1p_y.y"
+case 232:
+#line 1831 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_FALSE;
;
break;}
-case 229:
-#line 1814 "asn1p_y.y"
+case 233:
+#line 1836 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(1);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_TRUE;
;
break;}
-case 230:
-#line 1819 "asn1p_y.y"
+case 234:
+#line 1841 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
-case 231:
-#line 1822 "asn1p_y.y"
+case 235:
+#line 1844 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
-case 232:
-#line 1825 "asn1p_y.y"
+case 236:
+#line 1847 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -3159,8 +3196,8 @@ case 232:
free(yyvsp[0].tv_str);
;
break;}
-case 233:
-#line 1839 "asn1p_y.y"
+case 237:
+#line 1861 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -3173,32 +3210,32 @@ case 233:
free(yyvsp[0].tv_str);
;
break;}
-case 234:
-#line 1853 "asn1p_y.y"
+case 238:
+#line 1875 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
;
break;}
-case 235:
-#line 1856 "asn1p_y.y"
+case 239:
+#line 1878 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
;
break;}
-case 236:
-#line 1862 "asn1p_y.y"
+case 240:
+#line 1884 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 237:
-#line 1865 "asn1p_y.y"
+case 241:
+#line 1887 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
-case 238:
-#line 1871 "asn1p_y.y"
+case 242:
+#line 1893 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3206,8 +3243,8 @@ case 238:
yyval.a_constr->value = asn1p_value_frombuf("...", 3, 0);
;
break;}
-case 239:
-#line 1877 "asn1p_y.y"
+case 243:
+#line 1899 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3217,46 +3254,46 @@ case 239:
if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
;
break;}
-case 240:
-#line 1891 "asn1p_y.y"
+case 244:
+#line 1913 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
break;}
-case 241:
-#line 1892 "asn1p_y.y"
+case 245:
+#line 1914 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
break;}
-case 242:
-#line 1896 "asn1p_y.y"
+case 246:
+#line 1918 "asn1p_y.y"
{
yyval.a_pres = ACPRES_PRESENT;
;
break;}
-case 243:
-#line 1899 "asn1p_y.y"
+case 247:
+#line 1921 "asn1p_y.y"
{
yyval.a_pres = ACPRES_ABSENT;
;
break;}
-case 244:
-#line 1902 "asn1p_y.y"
+case 248:
+#line 1924 "asn1p_y.y"
{
yyval.a_pres = ACPRES_OPTIONAL;
;
break;}
-case 245:
-#line 1908 "asn1p_y.y"
+case 249:
+#line 1930 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 246:
-#line 1911 "asn1p_y.y"
+case 250:
+#line 1933 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 247:
-#line 1920 "asn1p_y.y"
+case 251:
+#line 1942 "asn1p_y.y"
{
asn1p_ref_t *ref = asn1p_ref_new(yylineno);
asn1p_constraint_t *ct;
@@ -3270,14 +3307,14 @@ case 247:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
;
break;}
-case 248:
-#line 1935 "asn1p_y.y"
+case 252:
+#line 1957 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
-case 249:
-#line 1941 "asn1p_y.y"
+case 253:
+#line 1963 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3285,8 +3322,8 @@ case 249:
yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
;
break;}
-case 250:
-#line 1947 "asn1p_y.y"
+case 254:
+#line 1969 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
@@ -3296,8 +3333,8 @@ case 250:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
;
break;}
-case 251:
-#line 1961 "asn1p_y.y"
+case 255:
+#line 1983 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
int ret;
@@ -3310,8 +3347,8 @@ case 251:
free(yyvsp[0].tv_str);
;
break;}
-case 252:
-#line 1972 "asn1p_y.y"
+case 256:
+#line 1994 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
int ret;
@@ -3325,14 +3362,14 @@ case 252:
free(yyvsp[0].tv_str);
;
break;}
-case 253:
-#line 1988 "asn1p_y.y"
+case 257:
+#line 2010 "asn1p_y.y"
{
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 254:
-#line 1991 "asn1p_y.y"
+case 258:
+#line 2013 "asn1p_y.y"
{
int l1 = strlen(yyvsp[-2].tv_str);
int l3 = strlen(yyvsp[0].tv_str);
@@ -3343,61 +3380,61 @@ case 254:
yyval.tv_str[l1 + 1 + l3] = '\0';
;
break;}
-case 255:
-#line 2009 "asn1p_y.y"
+case 259:
+#line 2031 "asn1p_y.y"
{
yyval.a_marker.flags = EM_NOMARK;
yyval.a_marker.default_value = 0;
;
break;}
-case 256:
-#line 2013 "asn1p_y.y"
+case 260:
+#line 2035 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
break;}
-case 257:
-#line 2017 "asn1p_y.y"
+case 261:
+#line 2039 "asn1p_y.y"
{
yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
yyval.a_marker.default_value = 0;
;
break;}
-case 258:
-#line 2021 "asn1p_y.y"
+case 262:
+#line 2043 "asn1p_y.y"
{
yyval.a_marker.flags = EM_DEFAULT;
yyval.a_marker.default_value = yyvsp[0].a_value;
;
break;}
-case 259:
-#line 2044 "asn1p_y.y"
+case 263:
+#line 2066 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
;
break;}
-case 260:
-#line 2048 "asn1p_y.y"
+case 264:
+#line 2070 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
;
break;}
-case 261:
-#line 2054 "asn1p_y.y"
+case 265:
+#line 2076 "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 262:
-#line 2059 "asn1p_y.y"
+case 266:
+#line 2081 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 263:
-#line 2066 "asn1p_y.y"
+case 267:
+#line 2088 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3406,8 +3443,8 @@ case 263:
yyval.a_expr->Identifier = yyvsp[0].tv_str;
;
break;}
-case 264:
-#line 2073 "asn1p_y.y"
+case 268:
+#line 2095 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3417,8 +3454,8 @@ case 264:
yyval.a_expr->value = yyvsp[-1].a_value;
;
break;}
-case 265:
-#line 2081 "asn1p_y.y"
+case 269:
+#line 2103 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3428,8 +3465,8 @@ case 265:
yyval.a_expr->value = yyvsp[-1].a_value;
;
break;}
-case 266:
-#line 2089 "asn1p_y.y"
+case 270:
+#line 2111 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3438,8 +3475,8 @@ case 266:
yyval.a_expr->value = yyvsp[0].a_value;
;
break;}
-case 267:
-#line 2096 "asn1p_y.y"
+case 271:
+#line 2118 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3449,103 +3486,103 @@ case 267:
yyval.a_expr->meta_type = AMT_VALUE;
;
break;}
-case 268:
-#line 2107 "asn1p_y.y"
+case 272:
+#line 2129 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
-case 269:
-#line 2111 "asn1p_y.y"
+case 273:
+#line 2133 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
-case 270:
-#line 2142 "asn1p_y.y"
+case 274:
+#line 2164 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
break;}
-case 271:
-#line 2143 "asn1p_y.y"
+case 275:
+#line 2165 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
break;}
-case 272:
-#line 2147 "asn1p_y.y"
+case 276:
+#line 2169 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-1].a_tag;
yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
;
break;}
-case 273:
-#line 2154 "asn1p_y.y"
+case 277:
+#line 2176 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-2].a_tag;
yyval.a_tag.tag_value = yyvsp[-1].a_int;
;
break;}
-case 274:
-#line 2160 "asn1p_y.y"
+case 278:
+#line 2182 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
break;}
-case 275:
-#line 2161 "asn1p_y.y"
+case 279:
+#line 2183 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
break;}
-case 276:
-#line 2162 "asn1p_y.y"
+case 280:
+#line 2184 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_APPLICATION; ;
break;}
-case 277:
-#line 2163 "asn1p_y.y"
+case 281:
+#line 2185 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_PRIVATE; ;
break;}
-case 278:
-#line 2167 "asn1p_y.y"
+case 282:
+#line 2189 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
break;}
-case 279:
-#line 2168 "asn1p_y.y"
+case 283:
+#line 2190 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
break;}
-case 280:
-#line 2169 "asn1p_y.y"
+case 284:
+#line 2191 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
break;}
-case 281:
-#line 2173 "asn1p_y.y"
+case 285:
+#line 2195 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 282:
-#line 2177 "asn1p_y.y"
+case 286:
+#line 2199 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 283:
-#line 2185 "asn1p_y.y"
+case 287:
+#line 2207 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 284:
-#line 2192 "asn1p_y.y"
+case 288:
+#line 2214 "asn1p_y.y"
{ yyval.tv_str = 0; ;
break;}
-case 285:
-#line 2193 "asn1p_y.y"
+case 289:
+#line 2215 "asn1p_y.y"
{
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 286:
-#line 2199 "asn1p_y.y"
+case 290:
+#line 2221 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
@@ -3773,7 +3810,7 @@ yyerrhandle:
}
return 1;
}
-#line 2205 "asn1p_y.y"
+#line 2227 "asn1p_y.y"
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index 597f77c5..f3131df6 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -272,8 +272,8 @@ static void _fixup_anonymous_identifier(asn1p_expr_t *expr);
%type <tv_str> optIdentifier
%type <a_parg> ParameterArgumentName
%type <a_plist> ParameterArgumentList
-%type <a_expr> Specialization
-%type <a_expr> Specializations
+%type <a_expr> ActualParameter
+%type <a_expr> ActualParameterList
%type <a_aid> AssignedIdentifier /* OID/DefinedValue */
%type <a_oid> ObjectIdentifier /* OID */
%type <a_oid> optObjectIdentifier /* Optional OID */
@@ -747,9 +747,9 @@ DefinedType:
$$->meta_type = AMT_TYPEREF;
}
/*
- * A parametrized assignment.
+ * A parameterized assignment.
*/
- | ComplexTypeReference '{' Specializations '}' {
+ | ComplexTypeReference '{' ActualParameterList '}' {
$$ = asn1p_expr_new(yylineno);
checkmem($$);
$$->reference = $1;
@@ -782,7 +782,7 @@ DataTypeReference:
assert($$->meta_type == AMT_OBJECTCLASS);
}
/*
- * Parametrized <Type> declaration:
+ * Parameterized <Type> declaration:
* === EXAMPLE ===
* SIGNED { ToBeSigned } ::= SEQUENCE {
* toBeSigned ToBeSigned,
@@ -793,7 +793,12 @@ DataTypeReference:
*/
| TypeRefName '{' ParameterArgumentList '}' TOK_PPEQ Type {
$$ = $6;
- assert($$->Identifier == 0);
+ $$->Identifier = $1;
+ $$->lhs_params = $3;
+ }
+ /* Parameterized CLASS declaration */
+ | TypeRefName '{' ParameterArgumentList '}' TOK_PPEQ ObjectClass {
+ $$ = $6;
$$->Identifier = $1;
$$->lhs_params = $3;
}
@@ -846,21 +851,29 @@ ParameterArgumentName:
checkmem(ret == 0);
$$.argument = $3;
}
+ | BasicTypeId ':' TypeRefName {
+ int ret;
+ $$.governor = asn1p_ref_new(yylineno);
+ ret = asn1p_ref_add_component($$.governor,
+ ASN_EXPR_TYPE2STR($1), 1);
+ checkmem(ret == 0);
+ $$.argument = $3;
+ }
;
-Specializations:
- Specialization {
+ActualParameterList:
+ ActualParameter {
$$ = asn1p_expr_new(yylineno);
checkmem($$);
asn1p_expr_add($$, $1);
}
- | Specializations ',' Specialization {
+ | ActualParameterList ',' ActualParameter {
$$ = $1;
asn1p_expr_add($$, $3);
}
;
-Specialization:
+ActualParameter:
Type {
$$ = $1;
}
@@ -883,10 +896,16 @@ Specialization:
asn1p_ref_add_component(ref, $1, RLT_lowercase);
$$->value = asn1p_value_fromref(ref, 0);
}
+ | ValueSet {
+ $$ = asn1p_expr_new(yylineno);
+ $$->expr_type = A1TC_VALUESET;
+ $$->meta_type = AMT_VALUESET;
+ $$->constraints = $1;
+ }
;
/*
- | '{' Specialization '}' {
+ | '{' ActualParameter '}' {
$$ = asn1p_expr_new(yylineno);
checkmem($$);
asn1p_expr_add($$, $2);
@@ -1255,7 +1274,6 @@ TypeDeclarationSet:
$$->expr_type = ASN_TYPE_ANY;
$$->meta_type = AMT_TYPE;
}
-
| TOK_INSTANCE TOK_OF ComplexTypeReference {
$$ = asn1p_expr_new(yylineno);
checkmem($$);
@@ -1674,7 +1692,11 @@ SetOfConstraints:
;
ElementSetSpecs:
- ElementSetSpec {
+ TOK_ThreeDots {
+ $$ = asn1p_constraint_new(yylineno);
+ $$->type = ACT_EL_EXT;
+ }
+ | ElementSetSpec {
$$ = $1;
}
| ElementSetSpec ',' TOK_ThreeDots {
diff --git a/libasn1print/asn1print.c b/libasn1print/asn1print.c
index 4cab16ba..47cfb1f8 100644
--- a/libasn1print/asn1print.c
+++ b/libasn1print/asn1print.c
@@ -259,6 +259,8 @@ asn1print_value(asn1p_value_t *val, enum asn1print_flags flags) {
}
case ATV_REFERENCED:
return asn1print_ref(val->value.reference, flags);
+ case ATV_VALUESET:
+ return asn1print_constraint(val->value.constraint, flags);
case ATV_CHOICE_IDENTIFIER:
printf("%s: ", val->value.choice_identifier.identifier);
return asn1print_value(val->value.choice_identifier.value, flags);
@@ -280,7 +282,7 @@ asn1print_constraint(asn1p_constraint_t *ct, enum asn1print_flags flags) {
switch(ct->type) {
case ACT_EL_TYPE:
- asn1print_value(ct->value, flags);
+ asn1print_value(ct->containedSubtype, flags);
break;
case ACT_EL_VALUE:
asn1print_value(ct->value, flags);
@@ -583,6 +585,8 @@ asn1print_expr(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *tc, enum asn1pri
}
printf(" OF");
break;
+ case A1TC_VALUESET:
+ break;
default:
{
char *p = ASN_EXPR_TYPE2STR(tc->expr_type);
@@ -599,7 +603,7 @@ asn1print_expr(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *tc, enum asn1pri
asn1print_ref(tc->reference, flags);
}
- if(tc->meta_type == AMT_VALUESET)
+ if(tc->meta_type == AMT_VALUESET && level == 0)
printf(" ::=");
/*
diff --git a/tests/112-param-class-OK.asn1 b/tests/112-param-class-OK.asn1
new file mode 100644
index 00000000..d5512dfa
--- /dev/null
+++ b/tests/112-param-class-OK.asn1
@@ -0,0 +1,24 @@
+
+-- OK: Everything is fine
+
+-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
+-- .spelio.software.asn1c.test (9363.1.5.1)
+-- .112
+
+ModuleParameterizationClass
+ { iso org(3) dod(6) internet (1) private(4) enterprise(1)
+ spelio(9363) software(1) asn1c(5) test(1) 112 }
+ DEFINITIONS ::=
+BEGIN
+
+ PCLASS {Type, INTEGER:value, INTEGER:ValueSet} ::= CLASS {
+ &valueField1 Type,
+ &valueField2 INTEGER DEFAULT value,
+ &valueField3 INTEGER (ValueSet),
+ &ValueSetField INTEGER DEFAULT {ValueSet}
+ } WITH SYNTAX {
+ &valueField1, &valueField2, &valueField3, &ValueSetField }
+
+ SCLASS ::= PCLASS {REAL, 111, {1 | 2 | 3}}
+
+END
diff --git a/tests/112-param-class-OK.asn1.-EF b/tests/112-param-class-OK.asn1.-EF
new file mode 100644
index 00000000..99223679
--- /dev/null
+++ b/tests/112-param-class-OK.asn1.-EF
@@ -0,0 +1,17 @@
+ModuleParameterizationClass { iso org(3) dod(6) internet(1) private(4)
+ enterprise(1) spelio(9363) software(1) asn1c(5) test(1) 112 }
+DEFINITIONS ::=
+BEGIN
+
+PCLASS{Type, INTEGER:value, INTEGER:ValueSet} ::= CLASS {
+ &valueField1 Type,
+ &valueField2 INTEGER DEFAULT value,
+ &valueField3 INTEGER (ValueSet),
+ &ValueSetField INTEGER DEFAULT {ValueSet}
+} WITH SYNTAX {
+ &valueField1, &valueField2, &valueField3, &ValueSetField }
+
+
+SCLASS ::= PCLASS{ REAL, 111, {1 | 2 | 3}}
+
+END