aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2006-03-09 08:49:26 +0000
committerLev Walkin <vlm@lionet.info>2006-03-09 08:49:26 +0000
commit9c2285abf3b32e66e3966c7c861a8e21065cc89e (patch)
tree20f60c552a81573748bd5c3cc4edf47c519de9b9
parent9344c9fdbff13f3148e421bcc5a5775f3cede9d0 (diff)
parsing object classes more properly
-rw-r--r--libasn1compiler/asn1compiler.c10
-rw-r--r--libasn1fix/asn1fix.c4
-rw-r--r--libasn1fix/asn1fix_class.c240
-rw-r--r--libasn1fix/asn1fix_tags.c3
-rw-r--r--libasn1fix/check_fixer.c4
-rw-r--r--libasn1parser/asn1p_expr.h28
-rw-r--r--libasn1parser/asn1p_y.c1876
-rw-r--r--libasn1parser/asn1p_y.y158
-rw-r--r--libasn1print/asn1print.c8
-rw-r--r--tests/34-class-OK.asn1.-EF4
10 files changed, 1169 insertions, 1166 deletions
diff --git a/libasn1compiler/asn1compiler.c b/libasn1compiler/asn1compiler.c
index e8e6739d..e38ce8d9 100644
--- a/libasn1compiler/asn1compiler.c
+++ b/libasn1compiler/asn1compiler.c
@@ -96,7 +96,8 @@ asn1c_compile_expr(arg_t *arg) {
switch(expr->meta_type) {
case AMT_PARAMTYPE:
case AMT_OBJECT:
- case AMT_OBJECTSET:
+ case AMT_OBJECTCLASS:
+ case AMT_OBJECTFIELD:
case AMT_VALUE:
case AMT_VALUESET:
ret = 0;
@@ -104,13 +105,6 @@ asn1c_compile_expr(arg_t *arg) {
default:
break;
}
-
- switch(expr->expr_type) {
- case A1TC_TYPEID:
- ret = 0; /* TYPE-IDENTIFIER is a CLASS */
- default:
- break;
- }
}
if(ret == -1) {
diff --git a/libasn1fix/asn1fix.c b/libasn1fix/asn1fix.c
index 5ee73a87..44dbf0eb 100644
--- a/libasn1fix/asn1fix.c
+++ b/libasn1fix/asn1fix.c
@@ -433,6 +433,7 @@ asn1f_check_constraints(arg_t *arg) {
static int
asn1f_check_duplicate(arg_t *arg) {
arg_t tmparg = *arg;
+ int rvalue = 0;
/*
* This is a linear scan in search of a similar type.
@@ -478,11 +479,12 @@ asn1f_check_duplicate(arg_t *arg) {
diff_files ? ")" : "");
if(critical)
return -1;
+ RET2RVAL(1, rvalue);
}
if(tmparg.mod == arg->mod) break;
}
- return 0;
+ return rvalue;
}
static int
diff --git a/libasn1fix/asn1fix_class.c b/libasn1fix/asn1fix_class.c
index 3542e0cd..11acd8b4 100644
--- a/libasn1fix/asn1fix_class.c
+++ b/libasn1fix/asn1fix_class.c
@@ -1,38 +1,15 @@
#include "asn1fix_internal.h"
-typedef enum field_category {
- OFC_INVALID, /* Invalid object field category */
- OFC_TYPE,
- OFC_FIXED_TYPE_VALUE,
- OFC_VARIABLE_TYPE_VALUE,
- OFC_FIXED_TYPE_VALUE_SET,
- OFC_VARIABLE_TYPE_VALUE_SET,
- OFC_INFORMATION_OBJECT,
- OFC_INFORMATION_OBJECT_SET,
-} field_category_e;
-
-typedef enum object_category {
- OC_INVALID,
- OC_OBJECT,
- OC_OBJECTSET,
-} object_category_e;
-
-static field_category_e asn1f_class_field_category(asn1p_expr_t *ofield);
-static object_category_e asn1f_class_object_category(asn1p_expr_t *expr);
-static asn1p_expr_t *
-asn1f_class_dot_lookup(arg_t *arg, asn1p_expr_t *obj, asn1p_ref_t *ref);
-
asn1p_expr_t *
asn1f_class_access(arg_t *arg, asn1p_module_t *mod, asn1p_ref_t *ref) {
- asn1p_expr_t *obj; /* Information Object or Object Set */
- object_category_e obj_cat; /* Object category */
- //field_category_e field_cat; /* Field category */
- asn1p_expr_t *result;
+ asn1p_expr_t *ioclass;
+ asn1p_expr_t *classfield;
+ asn1p_expr_t *expr;
asn1p_ref_t tmpref;
assert(ref->comp_count > 1);
- DEBUG("(%s) for line %d", asn1f_printable_reference(ref), ref->_lineno);
+ DEBUG("ClassAccess lookup (%s) for line %d", asn1f_printable_reference(ref), ref->_lineno);
/*
* Fetch the first part of the reference (OBJECT or ObjectSet).
@@ -43,198 +20,47 @@ asn1f_class_access(arg_t *arg, asn1p_module_t *mod, asn1p_ref_t *ref) {
tmpref = *ref;
tmpref.comp_count = 1;
- obj = asn1f_lookup_symbol(arg, mod, &tmpref);
- if(obj == NULL) {
+ ioclass = asn1f_lookup_symbol(arg, mod, &tmpref);
+ if(ioclass == NULL) {
errno = ESRCH;
return NULL;
}
- /*
- * Make sure the symbol lexical property (upper-case, lower-case)
- * corresponds to the type of the expression returned by
- * lookup_symbol().
- */
- obj_cat = asn1f_class_object_category(obj);
- switch(obj_cat) {
- case OC_OBJECT:
- case OC_OBJECTSET:
- if(ref->components[0].lex_type
- == (obj_cat==OC_OBJECT)
- ? RLT_CAPITALS
- : RLT_Uppercase)
- break;
- /* Fall through */
- case OC_INVALID:
- WARNING("Symbol \"%s\" is not compatible "
- "with referenced expression \"%s\" at line %d",
- ref->components[0].name,
- obj->Identifier, obj->_lineno);
- errno = EPERM;
- return NULL;
- }
-
- /*
- * Find the specified field within the object.
- */
- result = asn1f_class_dot_lookup(arg, obj, ref);
- if(result == NULL) {
+ classfield = asn1f_lookup_child(ioclass, ref->components[1].name);
+ if(classfield == NULL) {
+ DEBUG("CLASS %s does not contain field %s",
+ ioclass->Identifier, ref->components[1].name);
+ errno = ESRCH;
return NULL;
}
- //field_cat = asn1f_class_field_category(result);
+ assert(classfield->meta_type == AMT_OBJECTFIELD);
- DEBUG("FILLME: %s", result->Identifier);
+ DEBUG("CLASS %s -> %s (%d)", ioclass->Identifier,
+ classfield->Identifier, classfield->expr_type);
- return result;
-}
-
-static object_category_e
-asn1f_class_object_category(asn1p_expr_t *expr) {
-
- switch(expr->meta_type) {
- case AMT_OBJECT:
- return OC_OBJECT;
- case AMT_OBJECTSET:
- return OC_OBJECTSET;
- case AMT_VALUESET:
- if(expr->expr_type == A1TC_REFERENCE
- && expr->reference
- && expr->reference->comp_count == 1
- && expr->reference->components[0].lex_type == RLT_CAPITALS)
- {
- /* FIXME: use find_terminal_type instead! */
- return OC_OBJECTSET;
+ switch(classfield->expr_type) {
+ case A1TC_CLASSFIELD_TFS:
+ if(TQ_FIRST(&classfield->members)) {
+ /* Already have something */
+ } else {
+ expr = asn1p_expr_new(classfield->_lineno);
+ expr->expr_type = ASN_TYPE_ANY;
+ expr->meta_type = AMT_TYPE;
+ asn1p_expr_add(classfield, expr);
}
+ /* Fall through */
+ case A1TC_CLASSFIELD_FTVFS:
+ expr = TQ_FIRST(&classfield->members);
+ assert(expr);
+ return expr;
break;
default:
- break;
- }
-
- return OC_INVALID;
-}
-
-static field_category_e
-asn1f_class_field_category(asn1p_expr_t *ofield) {
-
- assert(ofield);
-
- if(ofield->Identifier[0] != '&') {
- assert(ofield->Identifier[0] == '&');
- return OFC_INVALID;
- }
-
- if(isupper(ofield->Identifier[1])) {
- if(ofield->reference) {
- enum asn1p_ref_lex_type_e lex_type
- = ofield->reference->components[0].lex_type;
-
- switch(lex_type) {
- case RLT_CAPITALS:
- return OFC_INFORMATION_OBJECT_SET;
- case RLT_Uppercase:
- return OFC_FIXED_TYPE_VALUE_SET;
- case RLT_AmpUppercase:
- return OFC_VARIABLE_TYPE_VALUE_SET;
- default:
- break;
- }
- } else {
- if(ofield->expr_type == A1TC_CLASSFIELD)
- return OFC_TYPE;
-
- switch(ofield->meta_type) {
- case AMT_TYPE:
- case AMT_TYPEREF:
- return OFC_FIXED_TYPE_VALUE_SET;
- default:
- break;
- }
-
- }
- } else {
- if(ofield->reference) {
- enum asn1p_ref_lex_type_e lex_type
- = ofield->reference->components[0].lex_type;
-
- switch(lex_type) {
- case RLT_CAPITALS:
- return OFC_INFORMATION_OBJECT;
- case RLT_Uppercase:
- return OFC_FIXED_TYPE_VALUE;
- case RLT_AmpUppercase:
- return OFC_VARIABLE_TYPE_VALUE;
- default:
- break;
- }
- } else {
- switch(ofield->meta_type) {
- case AMT_TYPE:
- case AMT_TYPEREF:
- return OFC_FIXED_TYPE_VALUE;
- default:
- break;
- }
- }
- }
-
- return OFC_INVALID;
-}
-
-
-static asn1p_expr_t *
-asn1f_class_dot_lookup(arg_t *arg, asn1p_expr_t *obj, asn1p_ref_t *ref) {
- asn1p_expr_t *ofield = NULL; /* Information Object's Field */
- field_category_e field_cat; /* Field category */
- int comp;
-
- assert(ref->comp_count >= 2);
-
- for(comp = 1 /* sic! */; comp < ref->comp_count; comp++) {
- int is_last_component = (comp + 1 == ref->comp_count);
- char *comp_name = ref->components[comp].name;
-
- ofield = asn1f_lookup_child(obj, comp_name);
- if(ofield == NULL) {
- DEBUG("Cannot find field \"%s\" in \"%s\" at line %d",
- ref->components[1].name,
- obj->Identifier,
- obj->_lineno);
- errno = EPERM;
- return NULL;
- }
-
- /*
- * Compute the category of the field of
- * the information object class.
- */
- field_cat = asn1f_class_field_category(ofield);
-
- switch(field_cat) {
- case OFC_INVALID:
- WARNING("Invalid field category of \"%s\" at line %d",
- ofield->Identifier, ofield->_lineno);
- errno = EPERM;
- return NULL;
- case OFC_TYPE:
- case OFC_FIXED_TYPE_VALUE:
- case OFC_VARIABLE_TYPE_VALUE:
- case OFC_FIXED_TYPE_VALUE_SET:
- case OFC_VARIABLE_TYPE_VALUE_SET:
- if(!is_last_component) {
- FATAL("Field name component \"%s\" at line %d "
- "specifies non-dereferenceable thing",
- comp_name, ref->_lineno);
- errno = EPERM;
- return NULL;
- }
- break;
- case OFC_INFORMATION_OBJECT:
- case OFC_INFORMATION_OBJECT_SET:
- obj = ofield;
- break;
- }
+ FATAL("%s.%s: field type not yet supported. "
+ "Consider donation to the asn1c author.",
+ ioclass->Identifier, classfield->Identifier);
+ return NULL;
}
- assert(ofield);
- return ofield;
+ return NULL;
}
diff --git a/libasn1fix/asn1fix_tags.c b/libasn1fix/asn1fix_tags.c
index dfda4410..3215fff6 100644
--- a/libasn1fix/asn1fix_tags.c
+++ b/libasn1fix/asn1fix_tags.c
@@ -25,6 +25,9 @@ static int
asn1f_fetch_tags_impl(arg_t *arg, struct asn1p_type_tag_s **tags, int count, int skip, enum asn1f_aft_flags_e flags) {
asn1p_expr_t *expr = arg->expr;
+ DEBUG("Fetching tag from %s: meta %d, type %s", expr->Identifier,
+ expr->meta_type, expr->expr_type);
+
/* If this type is tagged, add this tag first */
if(expr->tag.tag_class != TC_NOCLASS)
ADD_TAG(skip, expr->tag);
diff --git a/libasn1fix/check_fixer.c b/libasn1fix/check_fixer.c
index a64d9bd1..c4e3f995 100644
--- a/libasn1fix/check_fixer.c
+++ b/libasn1fix/check_fixer.c
@@ -185,8 +185,10 @@ check(const char *fname,
std_asn = asn1p_parse_file("../skeletons/standard-modules/ASN1C-UsefulInformationObjectClasses.asn1", A1P_NOFLAGS);
if(std_asn) {
asn1p_module_t *mod;
- while((mod = TQ_REMOVE(&(std_asn->modules), mod_next)))
+ while((mod = TQ_REMOVE(&(std_asn->modules), mod_next))) {
+ mod->_tags |= MT_STANDARD_MODULE;
TQ_ADD(&(asn->modules), mod, mod_next);
+ }
asn1p_free(std_asn);
}
}
diff --git a/libasn1parser/asn1p_expr.h b/libasn1parser/asn1p_expr.h
index c44e1032..6bcaa589 100644
--- a/libasn1parser/asn1p_expr.h
+++ b/libasn1parser/asn1p_expr.h
@@ -14,8 +14,8 @@ typedef enum asn1p_expr_meta {
AMT_PARAMTYPE, /* Type3{Parameter} ::= SET { ... } */
AMT_VALUE, /* value1 Type1 ::= 1 */
AMT_VALUESET, /* ValueSet Type1 ::= { value1 } */
- AMT_OBJECT, /* FUNCTION ::= CLASS {...} */
- AMT_OBJECTSET, /* Functions FUNCTION ::= {...} */
+ AMT_OBJECT, /* object CLASS ::= {...} */
+ AMT_OBJECTCLASS, /* FUNCTION ::= CLASS {...} */
AMT_OBJECTFIELD, /* ... */
AMT_EXPR_META_MAX
} asn1p_expr_meta_e;
@@ -38,14 +38,24 @@ typedef enum asn1p_expr_type {
A1TC_PARAMETRIZED, /* A parametrized type declaration */
A1TC_VALUESET, /* Value set definition */
A1TC_CLASSDEF, /* Information Object Class */
- A1TC_CLASSFIELD, /* Information Object Class field */
A1TC_INSTANCE, /* Instance of Object Class */
- A1TC_TYPEID, /* Type identifier */
+
+ /*
+ * ASN.1 Class field types
+ */
+#define ASN_CLASSFIELD_MASK 0x10 /* Every class field type */
+ A1TC_CLASSFIELD_TFS = ASN_CLASSFIELD_MASK, /* TypeFieldSpec */
+ A1TC_CLASSFIELD_FTVFS, /* FixedTypeValueFieldSpec */
+ A1TC_CLASSFIELD_VTVFS, /* VariableTypeValueFieldSpec */
+ A1TC_CLASSFIELD_FTVSFS, /* FixedTypeValueSetFieldSpec */
+ A1TC_CLASSFIELD_VTVSFS, /* VariableTypeValueSetFieldSpec */
+ A1TC_CLASSFIELD_OFS, /* ObjectFieldSpec */
+ A1TC_CLASSFIELD_OSFS, /* ObjectSetFieldSpec */
/*
* ASN.1 Constructed types
*/
-#define ASN_CONSTR_MASK 0x10 /* Every constructed type */
+#define ASN_CONSTR_MASK 0x20 /* Every constructed type */
ASN_CONSTR_SEQUENCE = ASN_CONSTR_MASK, /* SEQUENCE */
ASN_CONSTR_CHOICE, /* CHOICE */
ASN_CONSTR_SET, /* SET */
@@ -55,7 +65,7 @@ typedef enum asn1p_expr_type {
/*
* ASN.1 Basic types
*/
-#define ASN_BASIC_MASK 0x20 /* Every basic type */
+#define ASN_BASIC_MASK 0x40 /* Every basic type */
ASN_TYPE_ANY = ASN_BASIC_MASK, /* ANY (deprecated) */
ASN_BASIC_BOOLEAN,
ASN_BASIC_NULL,
@@ -75,9 +85,9 @@ typedef enum asn1p_expr_type {
/*
* ASN.1 String types
*/
-#define ASN_STRING_KM_MASK 0x40 /* Known multiplier */
-#define ASN_STRING_NKM_MASK 0x80 /* Not a known multiplier */
-#define ASN_STRING_MASK 0xC0 /* Every restricted string type */
+#define ASN_STRING_KM_MASK 0x100 /* Known multiplier */
+#define ASN_STRING_NKM_MASK 0x200 /* Not a known multiplier */
+#define ASN_STRING_MASK 0x300 /* Every restricted string type */
ASN_STRING_IA5String = ASN_STRING_KM_MASK,
ASN_STRING_PrintableString,
ASN_STRING_VisibleString,
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 058a7c84..024f520e 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -221,11 +221,11 @@ typedef union {
-#define YYFINAL 431
+#define YYFINAL 445
#define YYFLAG -32768
#define YYNTBASE 118
-#define YYTRANSLATE(x) ((unsigned)(x) <= 356 ? yytranslate[x] : 223)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 356 ? yytranslate[x] : 225)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -273,144 +273,148 @@ static const short yyprhs[] = { 0,
57, 60, 63, 64, 66, 68, 71, 73, 75, 77,
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, 148, 155, 157, 159, 164,
- 168, 172, 179, 181, 185, 187, 191, 195, 199, 201,
- 205, 207, 209, 210, 212, 214, 218, 222, 225, 229,
- 231, 233, 237, 240, 242, 244, 250, 251, 253, 255,
- 259, 262, 267, 272, 273, 275, 276, 283, 285, 288,
- 290, 292, 294, 298, 302, 306, 307, 310, 312, 317,
- 322, 327, 334, 341, 343, 348, 353, 355, 359, 361,
- 365, 369, 373, 375, 379, 381, 385, 387, 389, 391,
- 393, 398, 402, 403, 407, 409, 411, 413, 415, 417,
- 419, 421, 423, 425, 429, 431, 433, 435, 437, 440,
- 442, 444, 446, 448, 451, 454, 456, 458, 461, 464,
- 466, 468, 470, 472, 474, 477, 479, 482, 484, 486,
- 488, 490, 492, 494, 496, 498, 500, 502, 504, 506,
- 508, 510, 512, 514, 516, 518, 520, 521, 523, 525,
- 530, 534, 539, 541, 545, 551, 553, 557, 561, 565,
- 569, 574, 578, 580, 582, 586, 590, 594, 598, 600,
- 602, 603, 609, 611, 614, 617, 621, 623, 625, 627,
- 629, 631, 633, 635, 637, 641, 647, 649, 653, 655,
- 659, 660, 662, 664, 666, 668, 670, 672, 676, 681,
- 683, 687, 690, 694, 696, 700, 701, 703, 705, 708,
- 711, 715, 717, 721, 723, 728, 733, 735, 737, 739,
- 741, 742, 744, 747, 752, 753, 755, 757, 759, 760,
- 762, 764, 766, 768, 770, 771, 773
+ 135, 139, 141, 145, 147, 148, 155, 157, 159, 163,
+ 167, 174, 176, 180, 182, 186, 190, 194, 196, 200,
+ 202, 204, 205, 207, 209, 213, 217, 220, 224, 226,
+ 228, 232, 235, 237, 239, 245, 246, 248, 250, 254,
+ 257, 262, 266, 270, 274, 278, 282, 283, 285, 286,
+ 293, 295, 298, 300, 302, 304, 308, 312, 316, 317,
+ 320, 322, 327, 332, 337, 344, 351, 353, 358, 363,
+ 365, 369, 371, 375, 379, 383, 385, 389, 391, 395,
+ 397, 399, 401, 403, 405, 409, 413, 415, 419, 424,
+ 428, 429, 433, 435, 437, 439, 441, 443, 445, 447,
+ 449, 451, 455, 457, 459, 461, 463, 466, 468, 470,
+ 472, 474, 477, 480, 482, 484, 487, 490, 492, 494,
+ 496, 498, 500, 503, 505, 508, 510, 512, 514, 516,
+ 518, 520, 522, 524, 526, 528, 530, 532, 534, 536,
+ 538, 540, 542, 544, 546, 547, 549, 551, 556, 560,
+ 565, 567, 571, 577, 579, 583, 587, 591, 595, 600,
+ 604, 606, 608, 612, 616, 620, 624, 626, 628, 629,
+ 635, 637, 640, 643, 647, 649, 651, 653, 655, 657,
+ 659, 661, 663, 667, 673, 675, 679, 681, 685, 686,
+ 688, 690, 692, 694, 696, 698, 702, 707, 709, 713,
+ 716, 720, 722, 726, 727, 729, 731, 734, 737, 741,
+ 743, 747, 749, 754, 759, 761, 763, 765, 767, 768,
+ 770, 773, 778, 779, 781, 783, 785, 786, 788, 790,
+ 792, 794, 796, 797, 799
};
static const short yyrhs[] = { 119,
- 0, 120, 0, 119, 120, 0, 219, 121, 36, 125,
+ 0, 120, 0, 119, 120, 0, 221, 121, 36, 125,
3, 23, 128, 41, 0, 0, 122, 0, 105, 123,
106, 0, 105, 106, 0, 124, 0, 123, 124, 0,
- 222, 0, 222, 107, 9, 108, 0, 9, 0, 0,
+ 224, 0, 224, 107, 9, 108, 0, 9, 0, 0,
126, 0, 127, 0, 126, 127, 0, 43, 86, 0,
54, 86, 0, 22, 86, 0, 45, 55, 0, 14,
59, 0, 0, 129, 0, 130, 0, 129, 130, 0,
- 132, 0, 138, 0, 144, 0, 173, 0, 141, 0,
- 0, 40, 14, 131, 0, 182, 0, 56, 133, 109,
+ 132, 0, 138, 0, 144, 0, 175, 0, 141, 0,
+ 0, 40, 14, 131, 0, 184, 0, 56, 133, 109,
0, 56, 48, 0, 135, 0, 133, 135, 0, 0,
- 122, 0, 136, 48, 219, 134, 0, 137, 0, 136,
- 110, 137, 0, 219, 0, 219, 105, 106, 0, 222,
+ 122, 0, 136, 48, 221, 134, 0, 137, 0, 136,
+ 110, 137, 0, 221, 0, 221, 105, 106, 0, 224,
0, 44, 139, 109, 0, 44, 19, 109, 0, 44,
- 109, 0, 140, 0, 139, 110, 140, 0, 219, 0,
- 219, 105, 106, 0, 222, 0, 0, 219, 143, 3,
- 105, 142, 178, 0, 168, 0, 179, 0, 219, 3,
- 214, 89, 0, 219, 3, 164, 0, 219, 3, 154,
- 0, 219, 105, 145, 106, 3, 164, 0, 146, 0,
- 145, 110, 146, 0, 219, 0, 219, 111, 222, 0,
- 219, 111, 219, 0, 179, 111, 222, 0, 148, 0,
- 147, 110, 148, 0, 164, 0, 222, 0, 0, 150,
- 0, 151, 0, 150, 110, 151, 0, 222, 164, 208,
- 0, 164, 208, 0, 32, 70, 164, 0, 163, 0,
- 153, 0, 152, 110, 153, 0, 222, 164, 0, 163,
- 0, 164, 0, 30, 105, 156, 106, 158, 0, 0,
- 90, 0, 157, 0, 156, 110, 157, 0, 171, 208,
- 0, 171, 164, 155, 208, 0, 171, 171, 155, 208,
+ 109, 0, 140, 0, 139, 110, 140, 0, 221, 0,
+ 221, 105, 106, 0, 224, 0, 0, 221, 143, 3,
+ 105, 142, 180, 0, 168, 0, 181, 0, 221, 3,
+ 164, 0, 221, 3, 154, 0, 221, 105, 145, 106,
+ 3, 164, 0, 146, 0, 145, 110, 146, 0, 221,
+ 0, 221, 111, 224, 0, 221, 111, 221, 0, 181,
+ 111, 224, 0, 148, 0, 147, 110, 148, 0, 164,
+ 0, 224, 0, 0, 150, 0, 151, 0, 150, 110,
+ 151, 0, 224, 164, 210, 0, 164, 210, 0, 32,
+ 70, 164, 0, 163, 0, 153, 0, 152, 110, 153,
+ 0, 224, 164, 0, 163, 0, 164, 0, 30, 105,
+ 156, 106, 158, 0, 0, 90, 0, 157, 0, 156,
+ 110, 157, 0, 15, 210, 0, 16, 164, 155, 210,
+ 0, 16, 173, 210, 0, 15, 173, 210, 0, 16,
+ 174, 210, 0, 15, 174, 210, 0, 15, 164, 210,
0, 0, 159, 0, 0, 97, 84, 105, 160, 161,
106, 0, 162, 0, 161, 162, 0, 4, 0, 171,
- 0, 104, 0, 104, 112, 176, 0, 104, 112, 213,
- 0, 214, 166, 186, 0, 0, 165, 167, 0, 181,
+ 0, 104, 0, 104, 112, 178, 0, 104, 112, 215,
+ 0, 216, 166, 188, 0, 0, 165, 167, 0, 183,
0, 29, 105, 152, 106, 0, 80, 105, 149, 106,
- 0, 81, 105, 149, 106, 0, 80, 186, 70, 221,
- 214, 166, 0, 81, 186, 70, 221, 214, 166, 0,
- 20, 0, 20, 37, 27, 222, 0, 219, 105, 147,
+ 0, 81, 105, 149, 106, 0, 80, 188, 70, 223,
+ 216, 166, 0, 81, 188, 70, 223, 216, 166, 0,
+ 20, 0, 20, 37, 27, 224, 0, 221, 105, 147,
106, 0, 168, 0, 58, 70, 168, 0, 13, 0,
- 13, 113, 219, 0, 220, 113, 219, 0, 13, 113,
- 222, 0, 220, 0, 220, 113, 169, 0, 170, 0,
+ 13, 113, 221, 0, 222, 113, 221, 0, 13, 113,
+ 224, 0, 222, 0, 222, 113, 169, 0, 170, 0,
169, 113, 170, 0, 172, 0, 172, 0, 15, 0,
- 16, 0, 222, 143, 3, 174, 0, 222, 111, 174,
- 0, 0, 105, 175, 178, 0, 65, 0, 47, 0,
- 88, 0, 5, 0, 7, 0, 177, 0, 213, 0,
- 176, 0, 222, 0, 219, 113, 222, 0, 6, 0,
- 10, 0, 11, 0, 4, 0, 178, 4, 0, 26,
- 0, 65, 0, 78, 0, 180, 0, 69, 83, 0,
- 67, 53, 0, 79, 0, 46, 0, 38, 73, 0,
- 28, 83, 0, 93, 0, 49, 0, 182, 0, 60,
- 0, 42, 0, 24, 83, 0, 179, 0, 180, 210,
- 0, 25, 0, 50, 0, 51, 0, 52, 0, 61,
- 0, 66, 0, 76, 0, 85, 0, 87, 0, 92,
- 0, 94, 0, 95, 0, 96, 0, 68, 0, 101,
- 0, 102, 0, 99, 0, 100, 0, 98, 0, 0,
- 187, 0, 188, 0, 82, 107, 189, 108, 0, 107,
- 189, 108, 0, 188, 107, 189, 108, 0, 190, 0,
- 190, 110, 104, 0, 190, 110, 104, 110, 190, 0,
- 191, 0, 19, 98, 191, 0, 190, 183, 191, 0,
- 190, 184, 191, 0, 191, 185, 191, 0, 194, 107,
- 189, 108, 0, 107, 189, 108, 0, 195, 0, 196,
- 0, 195, 193, 195, 0, 63, 193, 195, 0, 195,
- 193, 62, 0, 63, 193, 62, 0, 202, 0, 197,
- 0, 0, 33, 27, 105, 192, 178, 0, 103, 0,
- 103, 114, 0, 114, 103, 0, 114, 103, 114, 0,
- 82, 0, 48, 0, 47, 0, 88, 0, 213, 0,
- 177, 0, 222, 0, 219, 0, 97, 31, 188, 0,
- 97, 32, 105, 198, 106, 0, 199, 0, 198, 110,
- 199, 0, 104, 0, 222, 186, 200, 0, 0, 201,
- 0, 75, 0, 17, 0, 71, 0, 203, 0, 204,
- 0, 105, 219, 106, 0, 203, 105, 205, 106, 0,
- 206, 0, 205, 110, 206, 0, 115, 207, 0, 115,
- 113, 207, 0, 222, 0, 207, 113, 222, 0, 0,
- 209, 0, 71, 0, 35, 174, 0, 105, 106, 0,
- 105, 211, 106, 0, 212, 0, 211, 110, 212, 0,
- 222, 0, 222, 107, 213, 108, 0, 222, 107, 176,
- 108, 0, 213, 0, 104, 0, 9, 0, 12, 0,
- 0, 215, 0, 216, 218, 0, 116, 217, 9, 117,
- 0, 0, 91, 0, 21, 0, 77, 0, 0, 54,
- 0, 43, 0, 13, 0, 14, 0, 14, 0, 0,
- 222, 0, 8, 0
+ 16, 0, 15, 0, 173, 113, 15, 0, 173, 113,
+ 16, 0, 14, 0, 221, 113, 14, 0, 224, 143,
+ 3, 176, 0, 224, 111, 176, 0, 0, 105, 177,
+ 180, 0, 65, 0, 47, 0, 88, 0, 5, 0,
+ 7, 0, 179, 0, 215, 0, 178, 0, 224, 0,
+ 221, 113, 224, 0, 6, 0, 10, 0, 11, 0,
+ 4, 0, 180, 4, 0, 26, 0, 65, 0, 78,
+ 0, 182, 0, 69, 83, 0, 67, 53, 0, 79,
+ 0, 46, 0, 38, 73, 0, 28, 83, 0, 93,
+ 0, 49, 0, 184, 0, 60, 0, 42, 0, 24,
+ 83, 0, 181, 0, 182, 212, 0, 25, 0, 50,
+ 0, 51, 0, 52, 0, 61, 0, 66, 0, 76,
+ 0, 85, 0, 87, 0, 92, 0, 94, 0, 95,
+ 0, 96, 0, 68, 0, 101, 0, 102, 0, 99,
+ 0, 100, 0, 98, 0, 0, 189, 0, 190, 0,
+ 82, 107, 191, 108, 0, 107, 191, 108, 0, 190,
+ 107, 191, 108, 0, 192, 0, 192, 110, 104, 0,
+ 192, 110, 104, 110, 192, 0, 193, 0, 19, 98,
+ 193, 0, 192, 185, 193, 0, 192, 186, 193, 0,
+ 193, 187, 193, 0, 196, 107, 191, 108, 0, 107,
+ 191, 108, 0, 197, 0, 198, 0, 197, 195, 197,
+ 0, 63, 195, 197, 0, 197, 195, 62, 0, 63,
+ 195, 62, 0, 204, 0, 199, 0, 0, 33, 27,
+ 105, 194, 180, 0, 103, 0, 103, 114, 0, 114,
+ 103, 0, 114, 103, 114, 0, 82, 0, 48, 0,
+ 47, 0, 88, 0, 215, 0, 179, 0, 224, 0,
+ 221, 0, 97, 31, 190, 0, 97, 32, 105, 200,
+ 106, 0, 201, 0, 200, 110, 201, 0, 104, 0,
+ 224, 188, 202, 0, 0, 203, 0, 75, 0, 17,
+ 0, 71, 0, 205, 0, 206, 0, 105, 221, 106,
+ 0, 205, 105, 207, 106, 0, 208, 0, 207, 110,
+ 208, 0, 115, 209, 0, 115, 113, 209, 0, 224,
+ 0, 209, 113, 224, 0, 0, 211, 0, 71, 0,
+ 35, 176, 0, 105, 106, 0, 105, 213, 106, 0,
+ 214, 0, 213, 110, 214, 0, 224, 0, 224, 107,
+ 215, 108, 0, 224, 107, 178, 108, 0, 215, 0,
+ 104, 0, 9, 0, 12, 0, 0, 217, 0, 218,
+ 220, 0, 116, 219, 9, 117, 0, 0, 91, 0,
+ 21, 0, 77, 0, 0, 54, 0, 43, 0, 13,
+ 0, 14, 0, 14, 0, 0, 224, 0, 8, 0
};
#endif
#if YYDEBUG != 0
static const short yyrline[] = { 0,
- 320, 326, 332, 348, 373, 375, 378, 382, 387, 394,
- 402, 407, 411, 420, 422, 430, 434, 442, 446, 449,
- 452, 456, 476, 478, 486, 490, 522, 526, 535, 542,
- 555, 562, 564, 576, 588, 599, 604, 610, 616, 618,
- 621, 632, 638, 644, 651, 657, 665, 669, 672, 679,
- 685, 691, 698, 704, 713, 715, 724, 732, 746, 758,
- 764, 780, 789, 799, 809, 814, 821, 828, 838, 844,
- 850, 854, 877, 879, 881, 887, 893, 901, 907, 914,
- 919, 925, 931, 937, 940, 946, 956, 958, 961, 969,
- 975, 984, 990, 1007, 1009, 1014, 1018, 1023, 1028, 1034,
- 1038, 1049, 1058, 1067, 1078, 1100, 1107, 1126, 1130, 1136,
- 1142, 1148, 1158, 1168, 1174, 1188, 1212, 1219, 1233, 1242,
- 1252, 1262, 1272, 1280, 1301, 1310, 1319, 1320, 1322, 1329,
- 1341, 1351, 1359, 1359, 1364, 1369, 1374, 1379, 1383, 1387,
- 1390, 1393, 1398, 1410, 1427, 1432, 1437, 1470, 1480, 1494,
- 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505,
- 1506, 1507, 1513, 1515, 1516, 1519, 1526, 1538, 1540, 1544,
- 1548, 1549, 1550, 1551, 1552, 1556, 1557, 1558, 1559, 1563,
- 1564, 1571, 1571, 1572, 1572, 1573, 1575, 1577, 1582, 1586,
- 1595, 1599, 1604, 1608, 1614, 1624, 1628, 1631, 1634, 1637,
- 1642, 1651, 1659, 1665, 1671, 1678, 1686, 1694, 1703, 1706,
- 1709, 1710, 1720, 1722, 1723, 1724, 1727, 1731, 1736, 1742,
- 1747, 1750, 1753, 1766, 1780, 1784, 1789, 1793, 1798, 1805,
- 1818, 1820, 1823, 1827, 1830, 1835, 1839, 1847, 1862, 1868,
- 1875, 1888, 1900, 1915, 1919, 1936, 1941, 1944, 1949, 1971,
- 1976, 1981, 1987, 1993, 2001, 2009, 2017, 2024, 2034, 2039,
- 2069, 2071, 2074, 2081, 2087, 2089, 2090, 2091, 2094, 2096,
- 2097, 2100, 2105, 2112, 2119, 2121, 2126
+ 322, 328, 334, 350, 375, 377, 380, 384, 389, 396,
+ 404, 409, 413, 422, 424, 432, 436, 444, 448, 451,
+ 454, 458, 478, 480, 488, 492, 524, 528, 537, 544,
+ 557, 564, 566, 578, 590, 601, 606, 612, 618, 620,
+ 623, 634, 640, 646, 653, 659, 667, 671, 674, 681,
+ 687, 693, 700, 706, 715, 717, 726, 734, 748, 758,
+ 774, 783, 793, 803, 808, 815, 822, 832, 838, 844,
+ 848, 871, 873, 875, 881, 887, 895, 901, 908, 913,
+ 919, 925, 931, 934, 940, 950, 952, 955, 963, 970,
+ 983, 994, 1004, 1014, 1025, 1036, 1062, 1064, 1069, 1073,
+ 1078, 1083, 1089, 1093, 1104, 1113, 1122, 1133, 1155, 1162,
+ 1181, 1185, 1191, 1197, 1203, 1213, 1223, 1229, 1243, 1267,
+ 1274, 1288, 1297, 1307, 1317, 1327, 1335, 1356, 1365, 1374,
+ 1375, 1377, 1384, 1391, 1397, 1401, 1407, 1412, 1425, 1435,
+ 1443, 1443, 1448, 1453, 1458, 1463, 1467, 1471, 1474, 1477,
+ 1482, 1494, 1511, 1516, 1521, 1554, 1564, 1578, 1580, 1581,
+ 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591,
+ 1597, 1599, 1600, 1603, 1610, 1622, 1624, 1628, 1632, 1633,
+ 1634, 1635, 1636, 1640, 1641, 1642, 1643, 1647, 1648, 1655,
+ 1655, 1656, 1656, 1657, 1659, 1661, 1666, 1670, 1679, 1683,
+ 1688, 1692, 1698, 1708, 1712, 1715, 1718, 1721, 1726, 1735,
+ 1743, 1749, 1755, 1762, 1770, 1778, 1787, 1790, 1793, 1794,
+ 1804, 1806, 1807, 1808, 1811, 1815, 1820, 1826, 1831, 1834,
+ 1837, 1850, 1864, 1868, 1873, 1877, 1882, 1889, 1902, 1904,
+ 1907, 1911, 1914, 1919, 1923, 1931, 1946, 1952, 1959, 1972,
+ 1984, 1999, 2003, 2020, 2025, 2028, 2033, 2055, 2060, 2065,
+ 2071, 2077, 2085, 2093, 2101, 2108, 2118, 2123, 2153, 2155,
+ 2158, 2165, 2171, 2173, 2174, 2175, 2178, 2180, 2181, 2184,
+ 2189, 2196, 2203, 2205, 2210
};
#endif
@@ -446,21 +450,21 @@ static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ",
"ExportsElement","ValueSetDefinition","@2","DefinedTypeRef","DataTypeReference",
"ParameterArgumentList","ParameterArgumentName","ActualParameterList","ActualParameter",
"optComponentTypeLists","ComponentTypeLists","ComponentType","AlternativeTypeLists",
-"AlternativeType","ClassDeclaration","optUnique","ClassFieldList","ClassField",
-"optWithSyntax","WithSyntax","@3","WithSyntaxFormat","WithSyntaxFormatToken",
-"ExtensionAndException","Type","NSTD_IndirectMarker","TypeDeclaration","TypeDeclarationSet",
-"ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
-"ClassFieldIdentifier","ClassFieldName","ValueDefinition","Value","@4","DefinedValue",
-"RestrictedCharacterStringValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
-"BasicType","BasicString","Union","Intersection","Except","optConstraints","Constraints",
-"SetOfConstraints","ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement",
-"@5","ConstraintRangeSpec","ConstraintSpec","SingleValue","ContainedSubtype",
-"InnerTypeConstraint","WithComponentsList","WithComponentsElement","optPresenceConstraint",
-"PresenceConstraint","TableConstraint","SimpleTableConstraint","ComponentRelationConstraint",
-"AtNotationList","AtNotationElement","ComponentIdList","optMarker","Marker",
-"UniverationDefinition","UniverationList","UniverationElement","SignedNumber",
-"optTag","Tag","TagTypeValue","TagClass","TagPlicit","TypeRefName","ObjectClassReference",
-"optIdentifier","Identifier", NULL
+"AlternativeType","ObjectClass","optUnique","FieldSpec","ClassField","optWithSyntax",
+"WithSyntax","@3","WithSyntaxFormat","WithSyntaxFormatToken","ExtensionAndException",
+"Type","NSTD_IndirectMarker","TypeDeclaration","TypeDeclarationSet","ComplexTypeReference",
+"ComplexTypeReferenceAmpList","ComplexTypeReferenceElement","ClassFieldIdentifier",
+"ClassFieldName","FieldName","DefinedObjectClass","ValueDefinition","Value",
+"@4","DefinedValue","RestrictedCharacterStringValue","Opaque","BasicTypeId",
+"BasicTypeId_UniverationCompatible","BasicType","BasicString","Union","Intersection",
+"Except","optConstraints","Constraints","SetOfConstraints","ElementSetSpecs",
+"ElementSetSpec","ConstraintSubtypeElement","@5","ConstraintRangeSpec","ConstraintSpec",
+"SingleValue","ContainedSubtype","InnerTypeConstraint","WithComponentsList",
+"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
+"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
+"ComponentIdList","optMarker","Marker","UniverationDefinition","UniverationList",
+"UniverationElement","SignedNumber","optTag","Tag","TagTypeValue","TagClass",
+"TagPlicit","TypeRefName","ObjectClassReference","optIdentifier","Identifier", NULL
};
#endif
@@ -471,28 +475,29 @@ static const short yyr1[] = { 0,
130, 131, 130, 130, 132, 132, 133, 133, 134, 134,
135, 136, 136, 137, 137, 137, 138, 138, 138, 139,
139, 140, 140, 140, 142, 141, 143, 143, 144, 144,
- 144, 144, 145, 145, 146, 146, 146, 146, 147, 147,
- 148, 148, 149, 149, 150, 150, 151, 151, 151, 151,
- 152, 152, 153, 153, 153, 154, 155, 155, 156, 156,
- 157, 157, 157, 158, 158, 160, 159, 161, 161, 162,
- 162, 163, 163, 163, 164, 165, 166, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167, 168, 168,
- 168, 168, 168, 168, 169, 169, 170, 171, 172, 172,
- 173, 174, 175, 174, 174, 174, 174, 174, 174, 174,
- 174, 174, 176, 176, 177, 177, 177, 178, 178, 179,
- 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
- 179, 179, 180, 180, 180, 181, 181, 182, 182, 182,
- 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
- 182, 183, 183, 184, 184, 185, 186, 186, 187, 187,
- 188, 188, 189, 189, 189, 190, 190, 190, 190, 190,
- 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
- 192, 191, 193, 193, 193, 193, 194, 194, 195, 195,
- 195, 195, 195, 196, 197, 197, 198, 198, 199, 199,
- 200, 200, 201, 201, 201, 202, 202, 203, 204, 205,
- 205, 206, 206, 207, 207, 208, 208, 209, 209, 210,
- 210, 211, 211, 212, 212, 212, 212, 212, 213, 213,
- 214, 214, 215, 216, 217, 217, 217, 217, 218, 218,
- 218, 219, 219, 220, 221, 221, 222
+ 144, 145, 145, 146, 146, 146, 146, 147, 147, 148,
+ 148, 149, 149, 150, 150, 151, 151, 151, 151, 152,
+ 152, 153, 153, 153, 154, 155, 155, 156, 156, 157,
+ 157, 157, 157, 157, 157, 157, 158, 158, 160, 159,
+ 161, 161, 162, 162, 163, 163, 163, 164, 165, 166,
+ 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
+ 167, 168, 168, 168, 168, 168, 168, 169, 169, 170,
+ 171, 172, 172, 173, 173, 173, 174, 174, 175, 176,
+ 177, 176, 176, 176, 176, 176, 176, 176, 176, 176,
+ 178, 178, 179, 179, 179, 180, 180, 181, 181, 181,
+ 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
+ 182, 182, 182, 183, 183, 184, 184, 184, 184, 184,
+ 184, 184, 184, 184, 184, 184, 184, 184, 184, 185,
+ 185, 186, 186, 187, 188, 188, 189, 189, 190, 190,
+ 191, 191, 191, 192, 192, 192, 192, 192, 193, 193,
+ 193, 193, 193, 193, 193, 193, 193, 193, 194, 193,
+ 195, 195, 195, 195, 196, 196, 197, 197, 197, 197,
+ 197, 198, 199, 199, 200, 200, 201, 201, 202, 202,
+ 203, 203, 203, 204, 204, 205, 206, 207, 207, 208,
+ 208, 209, 209, 210, 210, 211, 211, 212, 212, 213,
+ 213, 214, 214, 214, 214, 214, 215, 215, 216, 216,
+ 217, 218, 219, 219, 219, 219, 220, 220, 220, 221,
+ 221, 222, 223, 223, 224
};
static const short yyr2[] = { 0,
@@ -501,216 +506,221 @@ static const short yyr2[] = { 0,
2, 2, 0, 1, 1, 2, 1, 1, 1, 1,
1, 0, 3, 1, 3, 2, 1, 2, 0, 1,
4, 1, 3, 1, 3, 1, 3, 3, 2, 1,
- 3, 1, 3, 1, 0, 6, 1, 1, 4, 3,
- 3, 6, 1, 3, 1, 3, 3, 3, 1, 3,
- 1, 1, 0, 1, 1, 3, 3, 2, 3, 1,
- 1, 3, 2, 1, 1, 5, 0, 1, 1, 3,
- 2, 4, 4, 0, 1, 0, 6, 1, 2, 1,
- 1, 1, 3, 3, 3, 0, 2, 1, 4, 4,
- 4, 6, 6, 1, 4, 4, 1, 3, 1, 3,
- 3, 3, 1, 3, 1, 3, 1, 1, 1, 1,
- 4, 3, 0, 3, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 3, 1, 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,
+ 3, 1, 3, 1, 0, 6, 1, 1, 3, 3,
+ 6, 1, 3, 1, 3, 3, 3, 1, 3, 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, 3, 3, 0, 2,
+ 1, 4, 4, 4, 6, 6, 1, 4, 4, 1,
+ 3, 1, 3, 3, 3, 1, 3, 1, 3, 1,
+ 1, 1, 1, 1, 3, 3, 1, 3, 4, 3,
+ 0, 3, 1, 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, 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, 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
};
static const short yydefact[] = { 0,
- 272, 273, 1, 2, 5, 3, 0, 0, 6, 277,
+ 280, 281, 1, 2, 5, 3, 0, 0, 6, 285,
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, 168, 0, 0,
- 169, 170, 171, 0, 172, 173, 181, 174, 175, 176,
- 177, 178, 179, 180, 0, 24, 25, 27, 28, 31,
+ 18, 21, 19, 0, 17, 12, 23, 176, 0, 0,
+ 177, 178, 179, 0, 180, 181, 189, 182, 183, 184,
+ 185, 186, 187, 188, 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, 261, 119, 274, 0, 150, 0, 0, 164, 157,
- 161, 163, 151, 0, 0, 152, 156, 160, 0, 0,
- 57, 58, 153, 162, 123, 0, 33, 48, 47, 0,
- 0, 35, 38, 0, 0, 0, 0, 265, 61, 60,
- 106, 262, 269, 0, 165, 159, 158, 155, 154, 0,
- 63, 0, 65, 0, 0, 0, 51, 53, 39, 43,
- 45, 0, 267, 268, 266, 0, 59, 0, 187, 271,
- 270, 263, 120, 122, 0, 0, 0, 0, 55, 129,
- 130, 124, 125, 127, 121, 138, 145, 139, 259, 146,
- 147, 260, 136, 135, 137, 133, 131, 142, 140, 141,
- 0, 143, 40, 41, 0, 89, 261, 128, 0, 119,
- 274, 114, 0, 0, 187, 187, 107, 117, 166, 153,
- 108, 0, 0, 0, 105, 188, 189, 261, 64, 68,
- 67, 66, 0, 0, 0, 0, 0, 94, 0, 0,
- 248, 87, 87, 91, 247, 106, 264, 0, 261, 0,
- 261, 0, 261, 0, 0, 167, 261, 0, 0, 0,
- 219, 218, 0, 217, 220, 0, 0, 0, 222, 0,
- 193, 196, 0, 203, 204, 210, 209, 236, 237, 221,
- 224, 223, 0, 62, 148, 56, 126, 134, 144, 132,
- 0, 86, 95, 90, 249, 88, 246, 246, 0, 102,
- 0, 81, 84, 85, 261, 118, 0, 0, 74, 75,
- 80, 246, 261, 275, 0, 275, 258, 250, 0, 252,
- 257, 254, 0, 69, 71, 72, 0, 0, 0, 213,
- 0, 0, 0, 0, 0, 0, 191, 184, 185, 182,
- 183, 0, 0, 0, 186, 0, 0, 0, 0, 0,
- 149, 0, 92, 93, 115, 0, 109, 261, 83, 261,
- 110, 261, 78, 246, 261, 276, 111, 261, 251, 0,
- 0, 116, 261, 190, 197, 211, 214, 215, 208, 206,
- 225, 0, 238, 202, 194, 198, 199, 200, 0, 207,
- 205, 0, 0, 240, 192, 96, 103, 104, 143, 82,
- 79, 76, 77, 106, 106, 253, 0, 0, 70, 0,
- 216, 229, 0, 227, 187, 0, 201, 0, 242, 244,
- 239, 0, 0, 112, 113, 256, 255, 212, 226, 0,
- 231, 195, 243, 0, 241, 100, 0, 98, 101, 228,
- 234, 235, 233, 230, 232, 245, 97, 99, 0, 0,
- 0
+ 26, 269, 122, 282, 0, 158, 0, 0, 172, 165,
+ 169, 171, 159, 0, 0, 160, 164, 168, 0, 0,
+ 57, 58, 161, 170, 126, 0, 33, 48, 47, 0,
+ 0, 35, 38, 0, 0, 0, 0, 273, 60, 59,
+ 109, 270, 277, 0, 173, 167, 166, 163, 162, 0,
+ 62, 0, 64, 0, 0, 0, 51, 53, 39, 43,
+ 45, 0, 275, 276, 274, 0, 0, 195, 279, 278,
+ 271, 123, 125, 0, 0, 0, 0, 55, 132, 133,
+ 127, 128, 130, 124, 146, 153, 147, 267, 154, 155,
+ 268, 144, 143, 145, 141, 139, 150, 148, 149, 0,
+ 151, 40, 41, 269, 269, 0, 88, 0, 122, 282,
+ 117, 0, 0, 195, 195, 110, 120, 174, 161, 111,
+ 0, 0, 0, 108, 196, 197, 269, 63, 67, 66,
+ 65, 0, 0, 0, 0, 0, 137, 134, 0, 256,
+ 254, 254, 254, 90, 255, 0, 86, 254, 254, 97,
+ 0, 272, 0, 269, 0, 269, 0, 269, 0, 0,
+ 175, 269, 0, 0, 0, 227, 226, 0, 225, 228,
+ 0, 0, 0, 230, 0, 201, 204, 0, 211, 212,
+ 218, 217, 244, 245, 229, 232, 231, 0, 61, 156,
+ 56, 129, 142, 152, 140, 257, 96, 0, 93, 95,
+ 0, 87, 254, 92, 94, 0, 85, 98, 89, 0,
+ 105, 0, 80, 83, 84, 269, 121, 0, 0, 73,
+ 74, 79, 254, 269, 283, 0, 283, 266, 258, 0,
+ 260, 265, 262, 0, 68, 70, 71, 0, 0, 0,
+ 221, 0, 0, 0, 0, 0, 0, 199, 192, 193,
+ 190, 191, 0, 0, 0, 194, 0, 0, 0, 0,
+ 0, 157, 135, 136, 138, 91, 0, 118, 0, 112,
+ 269, 82, 269, 113, 269, 77, 254, 269, 284, 114,
+ 269, 259, 0, 0, 119, 269, 198, 205, 219, 222,
+ 223, 216, 214, 233, 0, 246, 210, 202, 206, 207,
+ 208, 0, 215, 213, 0, 0, 248, 200, 99, 106,
+ 107, 151, 81, 78, 75, 76, 109, 109, 261, 0,
+ 0, 69, 0, 224, 237, 0, 235, 195, 0, 209,
+ 0, 250, 252, 247, 0, 0, 115, 116, 264, 263,
+ 220, 234, 0, 239, 203, 251, 0, 249, 103, 0,
+ 101, 104, 131, 236, 242, 243, 241, 238, 240, 253,
+ 100, 102, 0, 0, 0
};
-static const short yydefgoto[] = { 429,
+static const short yydefgoto[] = { 443,
3, 4, 8, 9, 13, 14, 25, 26, 27, 55,
- 56, 57, 107, 58, 74, 184, 75, 76, 77, 59,
- 69, 70, 60, 213, 100, 61, 130, 131, 303, 304,
- 288, 289, 290, 281, 282, 119, 277, 185, 186, 272,
- 273, 403, 417, 418, 291, 292, 148, 149, 197, 101,
- 162, 163, 187, 188, 62, 177, 215, 178, 249, 266,
- 102, 103, 201, 104, 323, 324, 326, 205, 206, 207,
- 250, 251, 252, 390, 312, 253, 254, 255, 256, 393,
- 394, 424, 425, 257, 258, 259, 373, 374, 399, 224,
- 225, 236, 299, 300, 260, 226, 122, 123, 146, 152,
- 261, 105, 345, 262
+ 56, 57, 107, 58, 74, 183, 75, 76, 77, 59,
+ 69, 70, 60, 212, 100, 61, 130, 131, 314, 315,
+ 299, 300, 301, 292, 293, 119, 283, 186, 187, 287,
+ 288, 416, 430, 431, 302, 303, 147, 148, 196, 101,
+ 161, 162, 432, 163, 222, 223, 62, 176, 214, 177,
+ 254, 271, 102, 103, 200, 104, 334, 335, 337, 204,
+ 205, 206, 255, 256, 257, 403, 323, 258, 259, 260,
+ 261, 406, 407, 438, 439, 262, 263, 264, 386, 387,
+ 412, 224, 225, 241, 310, 311, 265, 121, 122, 123,
+ 146, 151, 266, 105, 358, 267
};
-static const short yypact[] = { 9,
--32768,-32768, 9,-32768, -76,-32768, 47, 15,-32768,-32768,
--32768,-32768, 55,-32768, -24, 158,-32768,-32768, 130, 95,
- 81, 97, 162, 128, 228, 158,-32768, 141,-32768,-32768,
--32768,-32768,-32768, 213,-32768,-32768, 419,-32768, 224, 39,
--32768,-32768,-32768, 157,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768, 211, 419,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 344, 571,-32768, 151,-32768, 79,-32768,
- 164,-32768,-32768, 46,-32768, -36,-32768, 183,-32768,-32768,
--32768, -11, 173,-32768, 229,-32768, 235, 249,-32768,-32768,
--32768,-32768,-32768, 270, 241,-32768,-32768,-32768, 646, 322,
--32768,-32768,-32768,-32768, 214, 323,-32768,-32768,-32768, 168,
- 226,-32768,-32768, 9, 168, 234, 225, 4,-32768,-32768,
- 250,-32768, -22, 168,-32768,-32768,-32768,-32768,-32768, 96,
--32768, 230, 237, 240, 295, 185,-32768,-32768, -76,-32768,
--32768, 269,-32768,-32768,-32768, 333,-32768, 496, 0,-32768,
--32768,-32768,-32768,-32768, 347, 646, 343, 168,-32768,-32768,
--32768, 243,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+static const short yypact[] = { 200,
+-32768,-32768, 200,-32768, -83,-32768, 60, 10,-32768,-32768,
+-32768,-32768, 62,-32768, -48, 157,-32768,-32768, 20, 48,
+ 23, 44, 98, 89, 212, 157,-32768, 117,-32768,-32768,
+-32768,-32768,-32768, 207,-32768,-32768, 431,-32768, 226, 42,
+-32768,-32768,-32768, 126,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768, 208, 431,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 242, 591,-32768, 148,-32768, 94,-32768,
+ 146,-32768,-32768, 52,-32768, -24,-32768, 160,-32768,-32768,
+-32768, 5, 156,-32768, 196,-32768, 202, 214,-32768,-32768,
+-32768,-32768,-32768, 244, 216,-32768,-32768,-32768, 666, 298,
+-32768,-32768,-32768,-32768, 193, 309,-32768,-32768,-32768, 233,
+ 213,-32768,-32768, 200, 233, 218, 220, 11,-32768,-32768,
+-32768,-32768, -15, 233,-32768,-32768,-32768,-32768,-32768, -25,
+-32768, 219, 221, 228, 248, 423,-32768,-32768, -83,-32768,
+-32768, 243,-32768,-32768,-32768, 317, 516, 53,-32768,-32768,
+-32768,-32768,-32768, 328, 666, 331, 233,-32768,-32768,-32768,
+ 227,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 232,
+ 235,-32768,-32768, 49, 12, -19,-32768, 224, 105, 238,
+ 312, 246, 282, 82, 88,-32768,-32768,-32768, 250,-32768,
+ 253, 254, 361,-32768,-32768, 255, 237,-32768,-32768,-32768,
+-32768, 356, 274, 356, 331, 423, 251,-32768, 423,-32768,
+ 19, -18, 19,-32768,-32768, 263, 273, -18, 19, 269,
+ 243,-32768, 350, 15, 268, 8, 311, 8, 313, 39,
+-32768, 7, 361, 281, 355,-32768,-32768, 87,-32768,-32768,
+ 264, 200, 361,-32768, 276, 97, 288, 290, 87,-32768,
+-32768,-32768, 291,-32768,-32768,-32768,-32768, 361,-32768,-32768,
+ 391,-32768, 391,-32768,-32768,-32768,-32768, 289,-32768,-32768,
+ 384,-32768, 19,-32768,-32768, 315,-32768,-32768,-32768, 331,
+ 293, 36,-32768,-32768,-32768, 237,-32768, 330, 295, 292,
+-32768,-32768, 19, 237, 331, 297, 331,-32768,-32768, 63,
+-32768,-32768, 299, 122,-32768,-32768,-32768, 302, 379, 306,
+ 300, 304, 172, 308, 314, 307, 310,-32768,-32768,-32768,
+-32768,-32768, 318, 379, 379,-32768, 379, 361, 266, 323,
+ 332,-32768,-32768,-32768,-32768,-32768, 316,-32768, 230,-32768,
+ 15,-32768, 237,-32768, 2,-32768, 19, 237,-32768,-32768,
+ 237,-32768, 68, 230,-32768, 7,-32768,-32768,-32768,-32768,
+ 303,-32768,-32768, 255, 6,-32768,-32768, 336,-32768,-32768,
+-32768, 333,-32768,-32768, 13, 142,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 339,
+ 340,-32768, 356,-32768,-32768, 144,-32768, 53, 361,-32768,
+ 331, 337,-32768,-32768, 323, 190,-32768,-32768,-32768,-32768,
+ 391,-32768, 6, 3, 215, 337, 331,-32768,-32768, 27,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- 246, 242,-32768,-32768, 105,-32768, 63,-32768, 244, 73,
- 255, 317, 257, 293, -34, 51,-32768,-32768,-32768, 259,
--32768, 261, 260, 80,-32768,-32768, 264, 258,-32768,-32768,
--32768,-32768, 369, 269, 369, 343, 185, 279, 269, 185,
--32768, 288, 288,-32768,-32768,-32768,-32768, 350, 5, 233,
- 8, 309, 8, 310, 34,-32768, 6, 80, 283, 356,
--32768,-32768, 27,-32768,-32768, 271, 9, 80,-32768, 276,
- 181, 289, 278, 27,-32768,-32768,-32768, 284,-32768,-32768,
--32768,-32768, 80,-32768,-32768, 384,-32768, 384,-32768,-32768,
- 308,-32768,-32768,-32768,-32768,-32768, -9, -9, 343, 285,
- 117,-32768,-32768,-32768, 258,-32768, 328, 294, 291,-32768,
--32768, -9, 258, 343, 296, 343,-32768,-32768, 119,-32768,
--32768, 299, 152,-32768,-32768,-32768, 300, 231, 311, 301,
- 314, 245, 307, 313, 315, 316,-32768,-32768,-32768,-32768,
--32768, 321, 231, 231,-32768, 231, 80, 287, 304, 318,
--32768, 325,-32768,-32768,-32768, 292,-32768, 5,-32768, 258,
--32768, 2,-32768, -9, 258,-32768,-32768, 258,-32768, 60,
- 292,-32768, 6,-32768,-32768,-32768,-32768, 320,-32768,-32768,
- 264, 31,-32768,-32768, 331,-32768,-32768,-32768, 327,-32768,
--32768, 10, 160,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768, 334, 335,-32768, 369,
--32768,-32768, 161,-32768, 0, 80,-32768, 343, 286,-32768,
--32768, 304, 159,-32768,-32768,-32768,-32768, 384,-32768, 31,
- 129, 215, 286, 343,-32768,-32768, 20,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 428, 445,
--32768
+-32768,-32768, 425, 451,-32768
};
static const short yypgoto[] = {-32768,
--32768, 443,-32768, 312,-32768, 434,-32768,-32768, 422,-32768,
--32768, 394,-32768,-32768,-32768,-32768, 378,-32768, 338,-32768,
--32768, 345,-32768,-32768, 389,-32768,-32768, 302,-32768, 103,
- 227,-32768, 115,-32768, 123,-32768, 239,-32768, 247,-32768,
--32768,-32768,-32768, 48, -218, -77,-32768, -64,-32768, -133,
--32768, 253, -184, -118,-32768, -73,-32768, -266, -75, -206,
- -72, 324,-32768, -6,-32768,-32768,-32768, -188,-32768, 155,
- -161, 68, -49,-32768, 219,-32768, -284,-32768,-32768,-32768,
- 64,-32768,-32768,-32768,-32768,-32768,-32768, 74, 83, -212,
--32768,-32768,-32768, 127, -116, -80,-32768,-32768,-32768,-32768,
- 1,-32768, 182, -7
+-32768, 420,-32768, 320,-32768, 439,-32768,-32768, 427,-32768,
+-32768, 398,-32768,-32768,-32768,-32768, 381,-32768, 342,-32768,
+-32768, 352,-32768,-32768, 395,-32768,-32768, 319,-32768, 99,
+ 225,-32768, 109,-32768, 118,-32768,-32768,-32768, 241,-32768,
+-32768,-32768,-32768, 43, -229, -80,-32768, -75,-32768, -103,
+-32768, 265,-32768, -253, 294, 305,-32768, -28,-32768, -270,
+ -78, -211, -3, 338,-32768, 120,-32768,-32768,-32768, -187,
+-32768, 153, -171, 71, -236,-32768, 234,-32768, -287,-32768,
+-32768,-32768, 66,-32768,-32768,-32768,-32768,-32768,-32768, 76,
+ 83, -210,-32768,-32768,-32768, 132, -127, -135,-32768,-32768,
+-32768,-32768, 1,-32768, 189, -7
};
-#define YYLAST 742
+#define YYLAST 762
static const short yytable[] = { 15,
- 5, 121, 223, 5, 120, 15, 232, 234, 268, 10,
- 283, 114, 10, 10, 198, 10, 164, 10, 117, 180,
- 150, 1, 2, 416, 143, 220, 132, 360, 7, 65,
- 63, 151, 72, 287, 160, 161, 79, 64, 10, 287,
- 71, 10, 169, 371, 78, 172, 10, 203, 65, 63,
- 16, 1, 2, 10, 10, 11, 64, 67, 1, 2,
- 179, 221, 10, 11, 333, 334, 79, 10, 169, 377,
- 231, 172, 204, 115, 78, 199, 307, 160, 161, 343,
- 144, 203, 19, 132, 387, 167, 316, 10, 169, 170,
- 171, 172, 1, 2, 145, 164, 286, 220, 239, 133,
- 180, 330, 72, 180, 118, 280, 204, 79, 280, 222,
- 71, 280, 240, -73, 139, 78, 154, 118, 301, 283,
- 118, 118, 398, 118, 153, 427, 241, 242, 182, 310,
- 264, 383, 203, 221, 392, 165, 181, 297, 28, 298,
- 311, 179, 243, 270, 179, 421, 275, 68, 202, 210,
- 212, 284, 12, 29, 112, 233, 133, 204, 211, 305,
- 17, 244, 416, 297, 10, 369, 30, 245, -246, 1,
- 2, 20, -246, 160, 161, 10, 246, -272, 118, 21,
- 1, 2, 31, 408, 247, 124, 248, 109, 110, 166,
- 167, 168, 10, 169, 170, 171, 172, 1, 2, 422,
- 22, 155, 23, 423, 73, 156, 411, 339, 269, 182,
- 218, 24, 182, 33, 219, 344, 32, 181, 419, 378,
- 181, 285, 337, 293, 349, 293, 338, 302, 350, 306,
- 34, 173, 419, 301, 388, 37, 167, 66, 10, 169,
- 170, 171, 172, 1, 2, 83, 84, 315, 36, 174,
- 167, 80, 10, 169, 170, 171, 172, 352, 355, 108,
- 284, 353, 381, 240, 384, 401, 409, 385, 111, 402,
- 410, 335, 175, 366, 367, 305, 368, 241, 242, 318,
- 319, 320, 321, 160, 161, 124, 346, 116, 346, 176,
- 322, 241, 167, 243, 10, 169, 170, 171, 172, 10,
- 169, 313, 314, 172, 1, 2, 359, 1, 2, 160,
- 161, 125, 244, 318, 319, 320, 321, 126, 245, 404,
- 405, 127, 128, 129, 134, 136, 135, 246, 379, 142,
- 285, 138, 245, 241, 293, 247, 181, 248, 147, 141,
- 157, 189, 302, 379, 159, 306, 82, 158, 370, 208,
- 10, 181, 217, 228, 395, 214, 83, 84, 216, -273,
- 227, 229, 230, 235, 400, 237, 238, 85, 38, 86,
- 263, 87, 265, 118, 245, 271, 279, 276, 294, 296,
- 308, 88, 309, 317, 327, 89, 325, 331, 329, 90,
- 400, 332, 91, 41, 42, 43, 336, 340, 414, 341,
- 342, 347, 395, 92, 45, 351, 426, 354, 93, 46,
- 94, 47, 95, 204, 357, 356, 358, 362, 372, 48,
- 363, 96, 97, 364, 365, 375, 10, 430, 49, 376,
- 50, 1, 2, 391, 397, 51, 98, 52, 53, 54,
- 396, 406, 407, 38, 431, 6, 18, 35, 99, 81,
- 183, 113, 140, 106, 137, 389, 382, 209, 39, 295,
- 380, 278, 40, 412, 428, 274, 267, 361, 41, 42,
- 43, 200, 328, 420, 44, 415, 386, 348, 0, 45,
- 413, 0, 0, 0, 46, 0, 47, 0, 0, 0,
- 0, 0, 0, 0, 48, 0, 0, 0, 0, 0,
- 0, 0, 0, 49, 0, 50, 0, 0, 190, 191,
- 51, 0, 52, 53, 54, 192, 0, 0, 0, 85,
- 38, 86, 0, 87, 193, 0, 0, 0, 0, 0,
+ 5, 120, 273, 5, 294, 15, 237, 239, 179, 10,
+ 277, 279, 280, 10, 10, 10, 219, 284, 285, 435,
+ 10, 7, 10, 114, 1, 217, 218, 149, 28, 65,
+ 429, 143, 72, 298, 117, 373, 79, 64, 150, 298,
+ 71, 159, 160, 197, 78, 16, 10, 168, 65, 10,
+ 171, 384, 220, 219, 1, 2, 64, 178, 19, 10,
+ 67, 1, 217, 218, 1, 2, 79, 10, 11, 10,
+ 11, 318, 346, 436, 78, 10, 168, 437, 390, 171,
+ 154, 327, 368, 219, 155, 115, 230, 144, 179, 220,
+ 231, 179, 356, 400, 278, 132, 341, 379, 380, 133,
+ 381, 145, 72, 221, 227, 291, 29, 79, 30, 405,
+ 71, 291, 312, -72, 139, 78, 153, 118, 291, 220,
+ 118, 294, 118, 118, 152, 411, 269, 118, 181, 31,
+ 118, 297, 441, 10, 202, 164, 180, 178, 1, 2,
+ 178, 350, 308, 198, 309, 351, 396, 201, 209, 211,
+ 68, 132, 32, 295, -254, 133, 63, 210, -254, 203,
+ 112, 316, 433, 202, 118, 12, 382, 17, 362, 202,
+ 20, 308, 363, 73, 33, 63, 433, 166, 21, 10,
+ 168, 169, 170, 171, 226, 226, 236, 275, 203, 321,
+ 276, 421, 238, 429, 203, 329, 330, 331, 332, 22,
+ 322, 23, 109, 110, 159, 160, 333, 274, 181, -280,
+ 24, 181, 1, 2, 34, 352, 180, 124, 246, 180,
+ 424, 391, 397, 357, 36, 398, 296, 365, 304, 37,
+ 304, 366, 313, 372, 317, 312, 401, 10, 168, 66,
+ 10, 171, 1, 2, 82, 1, 2, 414, 80, 422,
+ 111, 415, 326, 423, 83, 84, 108, 184, 185, 250,
+ 1, 2, 159, 160, 116, 85, 38, 86, 124, 87,
+ 295, 166, 394, 10, 168, 169, 170, 171, 125, 88,
+ 83, 84, 348, 89, 126, 316, 127, 90, 159, 160,
+ 91, 41, 42, 43, 324, 325, 128, 359, 129, 359,
+ 134, 92, 45, 343, 344, 135, 93, 46, 94, 47,
+ 95, 136, 246, 329, 330, 331, 332, 48, 138, 96,
+ 97, 417, 418, 141, 142, 188, 49, 383, 50, 156,
+ 207, 157, 158, 51, 98, 52, 53, 54, 10, 213,
+ 232, 392, -281, 296, 215, 216, 99, 304, 233, 180,
+ 234, 235, 118, 250, 240, 313, 392, 242, 317, 270,
+ 243, 268, 282, -281, 180, 286, 166, 408, 10, 168,
+ 169, 170, 171, 1, 2, 281, 290, 413, 319, 244,
+ 305, 320, 307, 328, 166, 336, 10, 168, 169, 170,
+ 171, 1, 2, 245, 342, 340, 338, 345, 347, 353,
+ 354, 355, 360, 413, 349, 364, 371, 246, 247, 367,
+ 369, 245, 376, 370, 203, 408, 404, 377, 375, 440,
+ 389, 378, 6, 248, 444, 246, 247, 165, 166, 167,
+ 10, 168, 169, 170, 171, 1, 2, 385, 10, 388,
+ 410, 248, 249, 1, 2, 409, 419, 420, 250, 427,
+ 445, 18, 35, 81, 113, 38, 140, 251, 182, 106,
+ 249, 137, 306, 395, 402, 252, 250, 253, 393, 172,
+ 39, 289, 442, 208, 40, 251, 374, 272, 228, 425,
+ 41, 42, 43, 252, 199, 253, 44, 173, 434, 229,
+ 428, 45, 339, 426, 399, 361, 46, 0, 47, 0,
+ 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
+ 174, 0, 0, 0, 0, 49, 0, 50, 0, 0,
+ 0, 0, 51, 0, 52, 53, 54, 175, 189, 190,
+ 0, 0, 0, 0, 0, 191, 0, 0, 0, 85,
+ 38, 86, 0, 87, 192, 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, 194, 0, 92, 45, 0, 0, 0,
+ 0, 0, 0, 193, 0, 92, 45, 0, 0, 0,
93, 46, 94, 47, 95, 0, 0, 0, 0, 0,
- 0, 48, 0, 96, 97, 195, 196, 0, 0, 0,
+ 0, 48, 0, 96, 97, 194, 195, 0, 0, 0,
49, 0, 50, 83, 84, 0, 0, 51, 98, 52,
53, 54, 0, 0, 85, 38, 86, 0, 87, 0,
0, 0, 0, 0, 0, 0, 0, 0, 88, 0,
@@ -731,58 +741,60 @@ static const short yytable[] = { 15,
};
static const short yycheck[] = { 7,
- 0, 82, 187, 3, 82, 13, 195, 196, 215, 8,
- 229, 48, 8, 8, 148, 8, 135, 8, 30, 136,
- 43, 13, 14, 4, 21, 35, 99, 312, 105, 37,
- 37, 54, 40, 32, 15, 16, 44, 37, 8, 32,
- 40, 8, 9, 328, 44, 12, 8, 82, 56, 56,
- 36, 13, 14, 8, 8, 9, 56, 19, 13, 14,
- 136, 71, 8, 9, 277, 278, 74, 8, 9, 336,
- 105, 12, 107, 110, 74, 148, 238, 15, 16, 292,
- 77, 82, 107, 156, 351, 6, 248, 8, 9, 10,
- 11, 12, 13, 14, 91, 214, 230, 35, 19, 99,
- 217, 263, 110, 220, 116, 104, 107, 115, 104, 187,
- 110, 104, 33, 106, 114, 115, 124, 116, 235, 338,
- 116, 116, 113, 116, 124, 106, 47, 48, 136, 103,
- 208, 344, 82, 71, 104, 135, 136, 104, 9, 106,
- 114, 217, 63, 217, 220, 17, 220, 109, 148, 157,
- 158, 229, 106, 59, 109, 105, 156, 107, 158, 237,
- 106, 82, 4, 104, 8, 327, 86, 88, 106, 13,
- 14, 14, 110, 15, 16, 8, 97, 105, 116, 22,
- 13, 14, 86, 390, 105, 113, 107, 109, 110, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 71,
- 43, 106, 45, 75, 48, 110, 395, 285, 216, 217,
- 106, 54, 220, 86, 110, 293, 55, 217, 403, 336,
- 220, 229, 106, 231, 106, 233, 110, 235, 110, 237,
- 3, 47, 417, 350, 351, 23, 6, 14, 8, 9,
- 10, 11, 12, 13, 14, 13, 14, 247, 108, 65,
- 6, 41, 8, 9, 10, 11, 12, 106, 308, 109,
- 338, 110, 340, 33, 345, 106, 106, 348, 105, 110,
- 110, 279, 88, 323, 324, 353, 326, 47, 48, 99,
- 100, 101, 102, 15, 16, 113, 294, 105, 296, 105,
- 110, 47, 6, 63, 8, 9, 10, 11, 12, 8,
- 9, 31, 32, 12, 13, 14, 62, 13, 14, 15,
- 16, 83, 82, 99, 100, 101, 102, 83, 88, 384,
- 385, 73, 53, 83, 3, 3, 113, 97, 336, 105,
- 338, 106, 88, 47, 342, 105, 336, 107, 89, 106,
- 111, 9, 350, 351, 105, 353, 3, 111, 62, 3,
- 8, 351, 111, 37, 362, 113, 13, 14, 113, 105,
- 117, 105, 70, 105, 372, 105, 107, 24, 25, 26,
- 107, 28, 4, 116, 88, 97, 27, 90, 70, 70,
- 98, 38, 27, 108, 107, 42, 98, 4, 105, 46,
- 398, 84, 49, 50, 51, 52, 112, 70, 113, 106,
- 110, 106, 410, 60, 61, 107, 414, 108, 65, 66,
- 67, 68, 69, 107, 114, 105, 103, 105, 115, 76,
- 106, 78, 79, 108, 104, 108, 8, 0, 85, 105,
- 87, 13, 14, 114, 108, 92, 93, 94, 95, 96,
- 110, 108, 108, 25, 0, 3, 13, 26, 105, 56,
- 139, 74, 115, 65, 110, 353, 342, 156, 40, 233,
- 338, 223, 44, 396, 417, 219, 214, 313, 50, 51,
- 52, 148, 254, 410, 56, 402, 350, 296, -1, 61,
- 398, -1, -1, -1, 66, -1, 68, -1, -1, -1,
- -1, -1, -1, -1, 76, -1, -1, -1, -1, -1,
- -1, -1, -1, 85, -1, 87, -1, -1, 13, 14,
- 92, -1, 94, 95, 96, 20, -1, -1, -1, 24,
+ 0, 82, 214, 3, 234, 13, 194, 195, 136, 8,
+ 221, 222, 223, 8, 8, 8, 35, 228, 229, 17,
+ 8, 105, 8, 48, 13, 14, 15, 43, 9, 37,
+ 4, 21, 40, 32, 30, 323, 44, 37, 54, 32,
+ 40, 15, 16, 147, 44, 36, 8, 9, 56, 8,
+ 12, 339, 71, 35, 13, 14, 56, 136, 107, 8,
+ 19, 13, 14, 15, 13, 14, 74, 8, 9, 8,
+ 9, 243, 283, 71, 74, 8, 9, 75, 349, 12,
+ 106, 253, 319, 35, 110, 110, 106, 77, 216, 71,
+ 110, 219, 303, 364, 113, 99, 268, 334, 335, 99,
+ 337, 91, 110, 184, 185, 104, 59, 115, 86, 104,
+ 110, 104, 240, 106, 114, 115, 124, 116, 104, 71,
+ 116, 351, 116, 116, 124, 113, 207, 116, 136, 86,
+ 116, 235, 106, 8, 82, 135, 136, 216, 13, 14,
+ 219, 106, 104, 147, 106, 110, 357, 147, 156, 157,
+ 109, 155, 55, 234, 106, 155, 37, 157, 110, 107,
+ 109, 242, 416, 82, 116, 106, 338, 106, 106, 82,
+ 14, 104, 110, 48, 86, 56, 430, 6, 22, 8,
+ 9, 10, 11, 12, 184, 185, 105, 216, 107, 103,
+ 219, 403, 105, 4, 107, 99, 100, 101, 102, 43,
+ 114, 45, 109, 110, 15, 16, 110, 215, 216, 105,
+ 54, 219, 13, 14, 3, 296, 216, 113, 47, 219,
+ 408, 349, 358, 304, 108, 361, 234, 106, 236, 23,
+ 238, 110, 240, 62, 242, 363, 364, 8, 9, 14,
+ 8, 12, 13, 14, 3, 13, 14, 106, 41, 106,
+ 105, 110, 252, 110, 13, 14, 109, 15, 16, 88,
+ 13, 14, 15, 16, 105, 24, 25, 26, 113, 28,
+ 351, 6, 353, 8, 9, 10, 11, 12, 83, 38,
+ 13, 14, 290, 42, 83, 366, 73, 46, 15, 16,
+ 49, 50, 51, 52, 31, 32, 53, 305, 83, 307,
+ 3, 60, 61, 15, 16, 113, 65, 66, 67, 68,
+ 69, 3, 47, 99, 100, 101, 102, 76, 106, 78,
+ 79, 397, 398, 106, 105, 9, 85, 62, 87, 111,
+ 3, 111, 105, 92, 93, 94, 95, 96, 8, 113,
+ 117, 349, 105, 351, 113, 111, 105, 355, 37, 349,
+ 105, 70, 116, 88, 105, 363, 364, 105, 366, 4,
+ 107, 107, 90, 113, 364, 97, 6, 375, 8, 9,
+ 10, 11, 12, 13, 14, 113, 27, 385, 98, 19,
+ 70, 27, 70, 108, 6, 98, 8, 9, 10, 11,
+ 12, 13, 14, 33, 4, 105, 107, 14, 84, 70,
+ 106, 110, 106, 411, 112, 107, 103, 47, 48, 108,
+ 105, 33, 106, 114, 107, 423, 114, 108, 105, 427,
+ 105, 104, 3, 63, 0, 47, 48, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 115, 8, 108,
+ 108, 63, 82, 13, 14, 110, 108, 108, 88, 113,
+ 0, 13, 26, 56, 74, 25, 115, 97, 139, 65,
+ 82, 110, 238, 355, 366, 105, 88, 107, 351, 47,
+ 40, 231, 430, 155, 44, 97, 324, 213, 185, 409,
+ 50, 51, 52, 105, 147, 107, 56, 65, 423, 185,
+ 415, 61, 259, 411, 363, 307, 66, -1, 68, -1,
+ -1, -1, -1, -1, -1, -1, 76, -1, -1, -1,
+ 88, -1, -1, -1, -1, 85, -1, 87, -1, -1,
+ -1, -1, 92, -1, 94, 95, 96, 105, 13, 14,
+ -1, -1, -1, -1, -1, 20, -1, -1, -1, 24,
25, 26, -1, 28, 29, -1, -1, -1, -1, -1,
-1, -1, -1, 38, -1, -1, -1, 42, -1, -1,
-1, 46, -1, -1, 49, 50, 51, 52, -1, -1,
@@ -1351,13 +1363,13 @@ yyreduce:
switch (yyn) {
case 1:
-#line 321 "asn1p_y.y"
+#line 323 "asn1p_y.y"
{
*(void **)param = yyvsp[0].a_grammar;
;
break;}
case 2:
-#line 327 "asn1p_y.y"
+#line 329 "asn1p_y.y"
{
yyval.a_grammar = asn1p_new();
checkmem(yyval.a_grammar);
@@ -1365,14 +1377,14 @@ case 2:
;
break;}
case 3:
-#line 332 "asn1p_y.y"
+#line 334 "asn1p_y.y"
{
yyval.a_grammar = yyvsp[-1].a_grammar;
TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
;
break;}
case 4:
-#line 353 "asn1p_y.y"
+#line 355 "asn1p_y.y"
{
if(yyvsp[-1].a_module) {
@@ -1389,27 +1401,27 @@ case 4:
;
break;}
case 5:
-#line 374 "asn1p_y.y"
+#line 376 "asn1p_y.y"
{ yyval.a_oid = 0; ;
break;}
case 6:
-#line 375 "asn1p_y.y"
+#line 377 "asn1p_y.y"
{ yyval.a_oid = yyvsp[0].a_oid; ;
break;}
case 7:
-#line 379 "asn1p_y.y"
+#line 381 "asn1p_y.y"
{
yyval.a_oid = yyvsp[-1].a_oid;
;
break;}
case 8:
-#line 382 "asn1p_y.y"
+#line 384 "asn1p_y.y"
{
yyval.a_oid = 0;
;
break;}
case 9:
-#line 388 "asn1p_y.y"
+#line 390 "asn1p_y.y"
{
yyval.a_oid = asn1p_oid_new();
asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1418,7 +1430,7 @@ case 9:
;
break;}
case 10:
-#line 394 "asn1p_y.y"
+#line 396 "asn1p_y.y"
{
yyval.a_oid = yyvsp[-1].a_oid;
asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1427,74 +1439,74 @@ case 10:
;
break;}
case 11:
-#line 403 "asn1p_y.y"
+#line 405 "asn1p_y.y"
{ /* iso */
yyval.a_oid_arc.name = yyvsp[0].tv_str;
yyval.a_oid_arc.number = -1;
;
break;}
case 12:
-#line 407 "asn1p_y.y"
+#line 409 "asn1p_y.y"
{ /* iso(1) */
yyval.a_oid_arc.name = yyvsp[-3].tv_str;
yyval.a_oid_arc.number = yyvsp[-1].a_int;
;
break;}
case 13:
-#line 411 "asn1p_y.y"
+#line 413 "asn1p_y.y"
{ /* 1 */
yyval.a_oid_arc.name = 0;
yyval.a_oid_arc.number = yyvsp[0].a_int;
;
break;}
case 14:
-#line 421 "asn1p_y.y"
+#line 423 "asn1p_y.y"
{ yyval.a_module_flags = MSF_NOFLAGS; ;
break;}
case 15:
-#line 422 "asn1p_y.y"
+#line 424 "asn1p_y.y"
{
yyval.a_module_flags = yyvsp[0].a_module_flags;
;
break;}
case 16:
-#line 431 "asn1p_y.y"
+#line 433 "asn1p_y.y"
{
yyval.a_module_flags = yyvsp[0].a_module_flags;
;
break;}
case 17:
-#line 434 "asn1p_y.y"
+#line 436 "asn1p_y.y"
{
yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
;
break;}
case 18:
-#line 443 "asn1p_y.y"
+#line 445 "asn1p_y.y"
{
yyval.a_module_flags = MSF_EXPLICIT_TAGS;
;
break;}
case 19:
-#line 446 "asn1p_y.y"
+#line 448 "asn1p_y.y"
{
yyval.a_module_flags = MSF_IMPLICIT_TAGS;
;
break;}
case 20:
-#line 449 "asn1p_y.y"
+#line 451 "asn1p_y.y"
{
yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
;
break;}
case 21:
-#line 452 "asn1p_y.y"
+#line 454 "asn1p_y.y"
{
yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
;
break;}
case 22:
-#line 456 "asn1p_y.y"
+#line 458 "asn1p_y.y"
{
/* X.680Amd1 specifies TAG and XER */
if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
@@ -1512,23 +1524,23 @@ case 22:
;
break;}
case 23:
-#line 477 "asn1p_y.y"
+#line 479 "asn1p_y.y"
{ yyval.a_module = 0; ;
break;}
case 24:
-#line 478 "asn1p_y.y"
+#line 480 "asn1p_y.y"
{
yyval.a_module = yyvsp[0].a_module;
;
break;}
case 25:
-#line 487 "asn1p_y.y"
+#line 489 "asn1p_y.y"
{
yyval.a_module = yyvsp[0].a_module;
;
break;}
case 26:
-#line 490 "asn1p_y.y"
+#line 492 "asn1p_y.y"
{
yyval.a_module = yyvsp[-1].a_module;
@@ -1558,13 +1570,13 @@ case 26:
;
break;}
case 27:
-#line 523 "asn1p_y.y"
+#line 525 "asn1p_y.y"
{
yyval.a_module = yyvsp[0].a_module;
;
break;}
case 28:
-#line 526 "asn1p_y.y"
+#line 528 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
@@ -1576,7 +1588,7 @@ case 28:
;
break;}
case 29:
-#line 535 "asn1p_y.y"
+#line 537 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
@@ -1586,7 +1598,7 @@ case 29:
;
break;}
case 30:
-#line 542 "asn1p_y.y"
+#line 544 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
@@ -1596,7 +1608,7 @@ case 30:
;
break;}
case 31:
-#line 555 "asn1p_y.y"
+#line 557 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
@@ -1606,11 +1618,11 @@ case 31:
;
break;}
case 32:
-#line 563 "asn1p_y.y"
+#line 565 "asn1p_y.y"
{ asn1p_lexer_hack_push_encoding_control(); ;
break;}
case 33:
-#line 564 "asn1p_y.y"
+#line 566 "asn1p_y.y"
{
fprintf(stderr,
"WARNING: ENCODING-CONTROL %s "
@@ -1621,7 +1633,7 @@ case 33:
;
break;}
case 34:
-#line 576 "asn1p_y.y"
+#line 578 "asn1p_y.y"
{
return yyerror(
"Attempt to redefine a standard basic string type, "
@@ -1629,7 +1641,7 @@ case 34:
;
break;}
case 35:
-#line 589 "asn1p_y.y"
+#line 591 "asn1p_y.y"
{
if(!saved_aid && 0)
return yyerror("Unterminated IMPORTS FROM, "
@@ -1639,13 +1651,13 @@ case 35:
;
break;}
case 36:
-#line 599 "asn1p_y.y"
+#line 601 "asn1p_y.y"
{
return yyerror("Empty IMPORTS list");
;
break;}
case 37:
-#line 605 "asn1p_y.y"
+#line 607 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
@@ -1653,22 +1665,22 @@ case 37:
;
break;}
case 38:
-#line 610 "asn1p_y.y"
+#line 612 "asn1p_y.y"
{
yyval.a_module = yyvsp[-1].a_module;
TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
;
break;}
case 39:
-#line 617 "asn1p_y.y"
+#line 619 "asn1p_y.y"
{ memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); ;
break;}
case 40:
-#line 618 "asn1p_y.y"
+#line 620 "asn1p_y.y"
{ yyval.a_aid.oid = yyvsp[0].a_oid; ;
break;}
case 41:
-#line 622 "asn1p_y.y"
+#line 624 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-3].a_xports;
yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
@@ -1679,7 +1691,7 @@ case 41:
;
break;}
case 42:
-#line 633 "asn1p_y.y"
+#line 635 "asn1p_y.y"
{
yyval.a_xports = asn1p_xports_new();
checkmem(yyval.a_xports);
@@ -1687,14 +1699,14 @@ case 42:
;
break;}
case 43:
-#line 638 "asn1p_y.y"
+#line 640 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-2].a_xports;
TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
;
break;}
case 44:
-#line 645 "asn1p_y.y"
+#line 647 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1703,7 +1715,7 @@ case 44:
;
break;}
case 45:
-#line 651 "asn1p_y.y"
+#line 653 "asn1p_y.y"
{ /* Completely equivalent to above */
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1712,7 +1724,7 @@ case 45:
;
break;}
case 46:
-#line 657 "asn1p_y.y"
+#line 659 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1721,19 +1733,19 @@ case 46:
;
break;}
case 47:
-#line 666 "asn1p_y.y"
+#line 668 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-1].a_xports;
;
break;}
case 48:
-#line 669 "asn1p_y.y"
+#line 671 "asn1p_y.y"
{
yyval.a_xports = 0;
;
break;}
case 49:
-#line 672 "asn1p_y.y"
+#line 674 "asn1p_y.y"
{
/* Empty EXPORTS clause effectively prohibits export. */
yyval.a_xports = asn1p_xports_new();
@@ -1741,7 +1753,7 @@ case 49:
;
break;}
case 50:
-#line 680 "asn1p_y.y"
+#line 682 "asn1p_y.y"
{
yyval.a_xports = asn1p_xports_new();
assert(yyval.a_xports);
@@ -1749,14 +1761,14 @@ case 50:
;
break;}
case 51:
-#line 685 "asn1p_y.y"
+#line 687 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-2].a_xports;
TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
;
break;}
case 52:
-#line 692 "asn1p_y.y"
+#line 694 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1765,7 +1777,7 @@ case 52:
;
break;}
case 53:
-#line 698 "asn1p_y.y"
+#line 700 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1774,7 +1786,7 @@ case 53:
;
break;}
case 54:
-#line 704 "asn1p_y.y"
+#line 706 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1783,11 +1795,11 @@ case 54:
;
break;}
case 55:
-#line 715 "asn1p_y.y"
+#line 717 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
case 56:
-#line 715 "asn1p_y.y"
+#line 717 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-4].a_expr;
assert(yyval.a_expr->Identifier == 0);
@@ -1797,7 +1809,7 @@ case 56:
;
break;}
case 57:
-#line 725 "asn1p_y.y"
+#line 727 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1807,7 +1819,7 @@ case 57:
;
break;}
case 58:
-#line 732 "asn1p_y.y"
+#line 734 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1816,18 +1828,7 @@ case 58:
;
break;}
case 59:
-#line 750 "asn1p_y.y"
-{
- yyval.a_expr = asn1p_expr_new(yylineno);
- checkmem(yyval.a_expr);
- yyval.a_expr->Identifier = yyvsp[-3].tv_str;
- yyval.a_expr->tag = yyvsp[-1].a_tag;
- yyval.a_expr->expr_type = A1TC_TYPEID;
- yyval.a_expr->meta_type = AMT_TYPE;
- ;
- break;}
-case 60:
-#line 758 "asn1p_y.y"
+#line 752 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1835,17 +1836,17 @@ case 60:
assert(yyval.a_expr->meta_type);
;
break;}
-case 61:
-#line 764 "asn1p_y.y"
+case 60:
+#line 758 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
yyval.a_expr->Identifier = yyvsp[-2].tv_str;
assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
- assert(yyval.a_expr->meta_type == AMT_OBJECT);
+ assert(yyval.a_expr->meta_type == AMT_OBJECTCLASS);
;
break;}
-case 62:
-#line 780 "asn1p_y.y"
+case 61:
+#line 774 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
assert(yyval.a_expr->Identifier == 0);
@@ -1854,8 +1855,8 @@ case 62:
yyval.a_expr->meta_type = AMT_PARAMTYPE;
;
break;}
-case 63:
-#line 790 "asn1p_y.y"
+case 62:
+#line 784 "asn1p_y.y"
{
int ret;
yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -1866,8 +1867,8 @@ case 63:
if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
;
break;}
-case 64:
-#line 799 "asn1p_y.y"
+case 63:
+#line 793 "asn1p_y.y"
{
int ret;
yyval.a_plist = yyvsp[-2].a_plist;
@@ -1877,15 +1878,15 @@ case 64:
if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
;
break;}
-case 65:
-#line 810 "asn1p_y.y"
+case 64:
+#line 804 "asn1p_y.y"
{
yyval.a_parg.governor = NULL;
yyval.a_parg.argument = yyvsp[0].tv_str;
;
break;}
-case 66:
-#line 814 "asn1p_y.y"
+case 65:
+#line 808 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1894,8 +1895,8 @@ case 66:
yyval.a_parg.argument = yyvsp[0].tv_str;
;
break;}
-case 67:
-#line 821 "asn1p_y.y"
+case 66:
+#line 815 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1904,8 +1905,8 @@ case 67:
yyval.a_parg.argument = yyvsp[0].tv_str;
;
break;}
-case 68:
-#line 828 "asn1p_y.y"
+case 67:
+#line 822 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1915,29 +1916,29 @@ case 68:
yyval.a_parg.argument = yyvsp[0].tv_str;
;
break;}
-case 69:
-#line 839 "asn1p_y.y"
+case 68:
+#line 833 "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 844 "asn1p_y.y"
+case 69:
+#line 838 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 71:
-#line 851 "asn1p_y.y"
+case 70:
+#line 845 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
-case 72:
-#line 854 "asn1p_y.y"
+case 71:
+#line 848 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1946,31 +1947,31 @@ case 72:
yyval.a_expr->meta_type = AMT_VALUE;
;
break;}
-case 73:
-#line 878 "asn1p_y.y"
+case 72:
+#line 872 "asn1p_y.y"
{ yyval.a_expr = asn1p_expr_new(yylineno); ;
break;}
-case 74:
-#line 879 "asn1p_y.y"
+case 73:
+#line 873 "asn1p_y.y"
{ yyval.a_expr = yyvsp[0].a_expr; ;
break;}
-case 75:
-#line 882 "asn1p_y.y"
+case 74:
+#line 876 "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 76:
-#line 887 "asn1p_y.y"
+case 75:
+#line 881 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 77:
-#line 894 "asn1p_y.y"
+case 76:
+#line 888 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->Identifier == 0);
@@ -1979,8 +1980,8 @@ case 77:
yyval.a_expr->marker = yyvsp[0].a_marker;
;
break;}
-case 78:
-#line 901 "asn1p_y.y"
+case 77:
+#line 895 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
@@ -1988,8 +1989,8 @@ case 78:
_fixup_anonymous_identifier(yyval.a_expr);
;
break;}
-case 79:
-#line 907 "asn1p_y.y"
+case 78:
+#line 901 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1998,163 +1999,206 @@ case 79:
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 80:
-#line 914 "asn1p_y.y"
+case 79:
+#line 908 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
-case 81:
-#line 920 "asn1p_y.y"
+case 80:
+#line 914 "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 82:
-#line 925 "asn1p_y.y"
+case 81:
+#line 919 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 83:
-#line 932 "asn1p_y.y"
+case 82:
+#line 926 "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 84:
-#line 937 "asn1p_y.y"
+case 83:
+#line 931 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
-case 85:
-#line 940 "asn1p_y.y"
+case 84:
+#line 934 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
_fixup_anonymous_identifier(yyval.a_expr);
;
break;}
-case 86:
-#line 947 "asn1p_y.y"
+case 85:
+#line 941 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
checkmem(yyval.a_expr);
yyval.a_expr->with_syntax = yyvsp[0].a_wsynt;
assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
- assert(yyval.a_expr->meta_type == AMT_OBJECT);
+ assert(yyval.a_expr->meta_type == AMT_OBJECTCLASS);
;
break;}
-case 87:
-#line 957 "asn1p_y.y"
+case 86:
+#line 951 "asn1p_y.y"
{ yyval.a_int = 0; ;
break;}
-case 88:
-#line 958 "asn1p_y.y"
+case 87:
+#line 952 "asn1p_y.y"
{ yyval.a_int = 1; ;
break;}
-case 89:
-#line 962 "asn1p_y.y"
+case 88:
+#line 956 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
yyval.a_expr->expr_type = A1TC_CLASSDEF;
- yyval.a_expr->meta_type = AMT_OBJECT;
+ yyval.a_expr->meta_type = AMT_OBJECTCLASS;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 90:
-#line 969 "asn1p_y.y"
+case 89:
+#line 963 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 91:
-#line 976 "asn1p_y.y"
+case 90:
+#line 973 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
- yyval.a_expr->Identifier = yyvsp[-1].a_refcomp.name;
- yyval.a_expr->expr_type = A1TC_CLASSFIELD;
+ yyval.a_expr->Identifier = yyvsp[-1].tv_str;
+ yyval.a_expr->meta_type = AMT_OBJECTFIELD;
+ yyval.a_expr->expr_type = A1TC_CLASSFIELD_TFS; /* TypeFieldSpec */
+ yyval.a_expr->marker = yyvsp[0].a_marker;
+ ;
+ break;}
+case 91:
+#line 983 "asn1p_y.y"
+{
+ yyval.a_expr = asn1p_expr_new(yylineno);
+ yyval.a_expr->Identifier = yyvsp[-3].tv_str;
yyval.a_expr->meta_type = AMT_OBJECTFIELD;
+ yyval.a_expr->expr_type = A1TC_CLASSFIELD_FTVFS; /* FixedTypeValueFieldSpec */
+ yyval.a_expr->unique = yyvsp[-1].a_int;
yyval.a_expr->marker = yyvsp[0].a_marker;
+ asn1p_expr_add(yyval.a_expr, yyvsp[-2].a_expr);
;
break;}
case 92:
-#line 984 "asn1p_y.y"
+#line 994 "asn1p_y.y"
{
- yyval.a_expr = yyvsp[-2].a_expr;
- yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
+ yyval.a_expr = asn1p_expr_new(yylineno);
+ yyval.a_expr->Identifier = yyvsp[-2].tv_str;
+ yyval.a_expr->meta_type = AMT_OBJECTFIELD;
+ yyval.a_expr->expr_type = A1TC_CLASSFIELD_VTVFS;
+ yyval.a_expr->reference = yyvsp[-1].a_ref;
yyval.a_expr->marker = yyvsp[0].a_marker;
- yyval.a_expr->unique = yyvsp[-1].a_int;
;
break;}
case 93:
-#line 990 "asn1p_y.y"
+#line 1004 "asn1p_y.y"
{
- int ret;
yyval.a_expr = asn1p_expr_new(yylineno);
- checkmem(yyval.a_expr);
- yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
- yyval.a_expr->reference = asn1p_ref_new(yylineno);
- checkmem(yyval.a_expr->reference);
- ret = asn1p_ref_add_component(yyval.a_expr->reference,
- yyvsp[-2].a_refcomp.name, yyvsp[-2].a_refcomp.lex_type);
- checkmem(ret == 0);
- yyval.a_expr->expr_type = A1TC_CLASSFIELD;
+ yyval.a_expr->Identifier = yyvsp[-2].tv_str;
yyval.a_expr->meta_type = AMT_OBJECTFIELD;
+ yyval.a_expr->expr_type = A1TC_CLASSFIELD_VTVSFS;
+ yyval.a_expr->reference = yyvsp[-1].a_ref;
yyval.a_expr->marker = yyvsp[0].a_marker;
- yyval.a_expr->unique = yyvsp[-1].a_int;
;
break;}
case 94:
-#line 1008 "asn1p_y.y"
-{ yyval.a_wsynt = 0; ;
+#line 1014 "asn1p_y.y"
+{
+ yyval.a_expr = asn1p_expr_new(yylineno);
+ checkmem(yyval.a_expr);
+ yyval.a_expr->Identifier = yyvsp[-2].tv_str;
+ yyval.a_expr->reference = yyvsp[-1].a_ref;
+ yyval.a_expr->meta_type = AMT_OBJECTFIELD;
+ yyval.a_expr->expr_type = A1TC_CLASSFIELD_OFS;
+ yyval.a_expr->marker = yyvsp[0].a_marker;
+ ;
break;}
case 95:
-#line 1009 "asn1p_y.y"
+#line 1025 "asn1p_y.y"
{
- yyval.a_wsynt = yyvsp[0].a_wsynt;
+ yyval.a_expr = asn1p_expr_new(yylineno);
+ checkmem(yyval.a_expr);
+ yyval.a_expr->Identifier = yyvsp[-2].tv_str;
+ yyval.a_expr->reference = yyvsp[-1].a_ref;
+ yyval.a_expr->meta_type = AMT_OBJECTFIELD;
+ yyval.a_expr->expr_type = A1TC_CLASSFIELD_OSFS;
+ yyval.a_expr->marker = yyvsp[0].a_marker;
;
break;}
case 96:
-#line 1016 "asn1p_y.y"
-{ asn1p_lexer_hack_enable_with_syntax(); ;
+#line 1036 "asn1p_y.y"
+{
+ yyval.a_expr = asn1p_expr_new(yylineno);
+ checkmem(yyval.a_expr);
+ yyval.a_expr->Identifier = yyvsp[-2].tv_str;
+ yyval.a_expr->meta_type = AMT_OBJECTFIELD;
+ yyval.a_expr->expr_type = A1TC_CLASSFIELD_FTVSFS;
+ asn1p_expr_add(yyval.a_expr, yyvsp[-1].a_expr);
+ yyval.a_expr->marker = yyvsp[0].a_marker;
+ ;
break;}
case 97:
-#line 1018 "asn1p_y.y"
+#line 1063 "asn1p_y.y"
+{ yyval.a_wsynt = 0; ;
+ break;}
+case 98:
+#line 1064 "asn1p_y.y"
+{
+ yyval.a_wsynt = yyvsp[0].a_wsynt;
+ ;
+ break;}
+case 99:
+#line 1071 "asn1p_y.y"
+{ asn1p_lexer_hack_enable_with_syntax(); ;
+ break;}
+case 100:
+#line 1073 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[-1].a_wsynt;
;
break;}
-case 98:
-#line 1024 "asn1p_y.y"
+case 101:
+#line 1079 "asn1p_y.y"
{
yyval.a_wsynt = asn1p_wsyntx_new();
TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
;
break;}
-case 99:
-#line 1028 "asn1p_y.y"
+case 102:
+#line 1083 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[-1].a_wsynt;
TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
;
break;}
-case 100:
-#line 1035 "asn1p_y.y"
+case 103:
+#line 1090 "asn1p_y.y"
{
yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
;
break;}
-case 101:
-#line 1038 "asn1p_y.y"
+case 104:
+#line 1093 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -2165,8 +2209,8 @@ case 101:
yyval.a_wchunk = asn1p_wsyntx_chunk_fromref(ref, 0);
;
break;}
-case 102:
-#line 1050 "asn1p_y.y"
+case 105:
+#line 1105 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2176,8 +2220,8 @@ case 102:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 103:
-#line 1058 "asn1p_y.y"
+case 106:
+#line 1113 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2188,8 +2232,8 @@ case 103:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 104:
-#line 1067 "asn1p_y.y"
+case 107:
+#line 1122 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2200,8 +2244,8 @@ case 104:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 105:
-#line 1079 "asn1p_y.y"
+case 108:
+#line 1134 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2222,15 +2266,15 @@ case 105:
}
;
break;}
-case 106:
-#line 1101 "asn1p_y.y"
+case 109:
+#line 1156 "asn1p_y.y"
{
yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
asn1p_as_pointer = 0;
;
break;}
-case 107:
-#line 1108 "asn1p_y.y"
+case 110:
+#line 1163 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
yyval.a_expr->marker.flags |= yyvsp[-1].a_int;
@@ -2248,14 +2292,14 @@ case 107:
}
;
break;}
-case 108:
-#line 1127 "asn1p_y.y"
+case 111:
+#line 1182 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
-case 109:
-#line 1130 "asn1p_y.y"
+case 112:
+#line 1185 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2263,8 +2307,8 @@ case 109:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 110:
-#line 1136 "asn1p_y.y"
+case 113:
+#line 1191 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2272,8 +2316,8 @@ case 110:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 111:
-#line 1142 "asn1p_y.y"
+case 114:
+#line 1197 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2281,8 +2325,8 @@ case 111:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 112:
-#line 1148 "asn1p_y.y"
+case 115:
+#line 1203 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2294,8 +2338,8 @@ case 112:
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 113:
-#line 1158 "asn1p_y.y"
+case 116:
+#line 1213 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2307,8 +2351,8 @@ case 113:
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 114:
-#line 1168 "asn1p_y.y"
+case 117:
+#line 1223 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2316,8 +2360,8 @@ case 114:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 115:
-#line 1174 "asn1p_y.y"
+case 118:
+#line 1229 "asn1p_y.y"
{
int ret;
yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2330,8 +2374,8 @@ case 115:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 116:
-#line 1188 "asn1p_y.y"
+case 119:
+#line 1243 "asn1p_y.y"
{
int ret;
yyval.a_expr = yyvsp[-1].a_expr;
@@ -2347,8 +2391,8 @@ case 116:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 117:
-#line 1212 "asn1p_y.y"
+case 120:
+#line 1267 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2357,8 +2401,8 @@ case 117:
yyval.a_expr->meta_type = AMT_TYPEREF;
;
break;}
-case 118:
-#line 1219 "asn1p_y.y"
+case 121:
+#line 1274 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2367,8 +2411,8 @@ case 118:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 119:
-#line 1234 "asn1p_y.y"
+case 122:
+#line 1289 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2378,8 +2422,8 @@ case 119:
free(yyvsp[0].tv_str);
;
break;}
-case 120:
-#line 1242 "asn1p_y.y"
+case 123:
+#line 1297 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2391,8 +2435,8 @@ case 120:
free(yyvsp[-2].tv_str);
;
break;}
-case 121:
-#line 1252 "asn1p_y.y"
+case 124:
+#line 1307 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2404,8 +2448,8 @@ case 121:
free(yyvsp[-2].tv_str);
;
break;}
-case 122:
-#line 1262 "asn1p_y.y"
+case 125:
+#line 1317 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2417,8 +2461,8 @@ case 122:
free(yyvsp[-2].tv_str);
;
break;}
-case 123:
-#line 1272 "asn1p_y.y"
+case 126:
+#line 1327 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2428,8 +2472,8 @@ case 123:
checkmem(ret == 0);
;
break;}
-case 124:
-#line 1280 "asn1p_y.y"
+case 127:
+#line 1335 "asn1p_y.y"
{
int ret;
yyval.a_ref = yyvsp[0].a_ref;
@@ -2450,8 +2494,8 @@ case 124:
}
;
break;}
-case 125:
-#line 1302 "asn1p_y.y"
+case 128:
+#line 1357 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2461,8 +2505,8 @@ case 125:
checkmem(ret == 0);
;
break;}
-case 126:
-#line 1310 "asn1p_y.y"
+case 129:
+#line 1365 "asn1p_y.y"
{
int ret;
yyval.a_ref = yyvsp[-2].a_ref;
@@ -2471,22 +2515,58 @@ case 126:
checkmem(ret == 0);
;
break;}
-case 129:
-#line 1324 "asn1p_y.y"
+case 132:
+#line 1379 "asn1p_y.y"
{
yyval.a_refcomp.lex_type = RLT_AmpUppercase;
yyval.a_refcomp.name = yyvsp[0].tv_str;
;
break;}
-case 130:
-#line 1329 "asn1p_y.y"
+case 133:
+#line 1384 "asn1p_y.y"
{
yyval.a_refcomp.lex_type = RLT_Amplowercase;
yyval.a_refcomp.name = yyvsp[0].tv_str;
;
break;}
-case 131:
-#line 1342 "asn1p_y.y"
+case 134:
+#line 1393 "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 135:
+#line 1397 "asn1p_y.y"
+{
+ yyval.a_ref = yyval.a_ref;
+ asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
+ ;
+ break;}
+case 136:
+#line 1401 "asn1p_y.y"
+{
+ yyval.a_ref = yyval.a_ref;
+ asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
+ ;
+ break;}
+case 137:
+#line 1408 "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 138:
+#line 1412 "asn1p_y.y"
+{
+ yyval.a_ref = asn1p_ref_new(yylineno);
+ asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_AmpUppercase);
+ asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
+ ;
+ break;}
+case 139:
+#line 1426 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
assert(yyval.a_expr->Identifier == NULL);
@@ -2495,8 +2575,8 @@ case 131:
yyval.a_expr->value = yyvsp[0].a_value;
;
break;}
-case 132:
-#line 1352 "asn1p_y.y"
+case 140:
+#line 1436 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
@@ -2505,76 +2585,76 @@ case 132:
yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
;
break;}
-case 133:
-#line 1359 "asn1p_y.y"
+case 141:
+#line 1443 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
-case 134:
-#line 1359 "asn1p_y.y"
+case 142:
+#line 1443 "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 135:
-#line 1364 "asn1p_y.y"
+case 143:
+#line 1448 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_NULL;
;
break;}
-case 136:
-#line 1369 "asn1p_y.y"
+case 144:
+#line 1453 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_FALSE;
;
break;}
-case 137:
-#line 1374 "asn1p_y.y"
+case 145:
+#line 1458 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_TRUE;
;
break;}
-case 138:
-#line 1379 "asn1p_y.y"
+case 146:
+#line 1463 "asn1p_y.y"
{
yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
checkmem(yyval.a_value);
;
break;}
-case 139:
-#line 1383 "asn1p_y.y"
+case 147:
+#line 1467 "asn1p_y.y"
{
yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
checkmem(yyval.a_value);
;
break;}
-case 140:
-#line 1387 "asn1p_y.y"
+case 148:
+#line 1471 "asn1p_y.y"
{
yyval.a_value = yyval.a_value;
;
break;}
-case 141:
-#line 1390 "asn1p_y.y"
+case 149:
+#line 1474 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
-case 142:
-#line 1393 "asn1p_y.y"
+case 150:
+#line 1477 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
-case 143:
-#line 1399 "asn1p_y.y"
+case 151:
+#line 1483 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -2587,8 +2667,8 @@ case 143:
free(yyvsp[0].tv_str);
;
break;}
-case 144:
-#line 1410 "asn1p_y.y"
+case 152:
+#line 1494 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -2604,31 +2684,31 @@ case 144:
free(yyvsp[0].tv_str);
;
break;}
-case 145:
-#line 1428 "asn1p_y.y"
+case 153:
+#line 1512 "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 146:
-#line 1432 "asn1p_y.y"
+case 154:
+#line 1516 "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 147:
-#line 1437 "asn1p_y.y"
+case 155:
+#line 1521 "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 148:
-#line 1471 "asn1p_y.y"
+case 156:
+#line 1555 "asn1p_y.y"
{
yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2639,8 +2719,8 @@ case 148:
free(yyvsp[0].tv_opaque.buf);
;
break;}
-case 149:
-#line 1480 "asn1p_y.y"
+case 157:
+#line 1564 "asn1p_y.y"
{
int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
char *p = malloc(newsize + 1);
@@ -2654,72 +2734,72 @@ case 149:
yyval.tv_opaque.len = newsize;
;
break;}
-case 150:
-#line 1495 "asn1p_y.y"
+case 158:
+#line 1579 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
break;}
-case 151:
-#line 1496 "asn1p_y.y"
+case 159:
+#line 1580 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
break;}
-case 152:
-#line 1497 "asn1p_y.y"
+case 160:
+#line 1581 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
break;}
-case 153:
-#line 1498 "asn1p_y.y"
+case 161:
+#line 1582 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
break;}
-case 154:
-#line 1499 "asn1p_y.y"
+case 162:
+#line 1583 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
break;}
-case 155:
-#line 1500 "asn1p_y.y"
+case 163:
+#line 1584 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
break;}
-case 156:
-#line 1501 "asn1p_y.y"
+case 164:
+#line 1585 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
break;}
-case 157:
-#line 1502 "asn1p_y.y"
+case 165:
+#line 1586 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
break;}
-case 158:
-#line 1503 "asn1p_y.y"
+case 166:
+#line 1587 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
break;}
-case 159:
-#line 1504 "asn1p_y.y"
+case 167:
+#line 1588 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
break;}
-case 160:
-#line 1505 "asn1p_y.y"
+case 168:
+#line 1589 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
break;}
-case 161:
-#line 1506 "asn1p_y.y"
+case 169:
+#line 1590 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
break;}
-case 162:
-#line 1507 "asn1p_y.y"
+case 170:
+#line 1591 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
break;}
-case 163:
-#line 1514 "asn1p_y.y"
+case 171:
+#line 1598 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
break;}
-case 164:
-#line 1515 "asn1p_y.y"
+case 172:
+#line 1599 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
break;}
-case 165:
-#line 1516 "asn1p_y.y"
+case 173:
+#line 1600 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
break;}
-case 166:
-#line 1520 "asn1p_y.y"
+case 174:
+#line 1604 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2727,8 +2807,8 @@ case 166:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 167:
-#line 1526 "asn1p_y.y"
+case 175:
+#line 1610 "asn1p_y.y"
{
if(yyvsp[0].a_expr) {
yyval.a_expr = yyvsp[0].a_expr;
@@ -2740,92 +2820,92 @@ case 167:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 168:
-#line 1539 "asn1p_y.y"
+case 176:
+#line 1623 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
break;}
-case 169:
-#line 1540 "asn1p_y.y"
+case 177:
+#line 1624 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GeneralString;
fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
;
break;}
-case 170:
-#line 1544 "asn1p_y.y"
+case 178:
+#line 1628 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GraphicString;
fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
;
break;}
-case 171:
-#line 1548 "asn1p_y.y"
+case 179:
+#line 1632 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
break;}
-case 172:
-#line 1549 "asn1p_y.y"
+case 180:
+#line 1633 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
break;}
-case 173:
-#line 1550 "asn1p_y.y"
+case 181:
+#line 1634 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
break;}
-case 174:
-#line 1551 "asn1p_y.y"
+case 182:
+#line 1635 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
break;}
-case 175:
-#line 1552 "asn1p_y.y"
+case 183:
+#line 1636 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_T61String;
fprintf(stderr, "WARNING: T61String is not fully supported\n");
;
break;}
-case 176:
-#line 1556 "asn1p_y.y"
+case 184:
+#line 1640 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
break;}
-case 177:
-#line 1557 "asn1p_y.y"
+case 185:
+#line 1641 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
break;}
-case 178:
-#line 1558 "asn1p_y.y"
+case 186:
+#line 1642 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
break;}
-case 179:
-#line 1559 "asn1p_y.y"
+case 187:
+#line 1643 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_VideotexString;
fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
;
break;}
-case 180:
-#line 1563 "asn1p_y.y"
+case 188:
+#line 1647 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
break;}
-case 181:
-#line 1564 "asn1p_y.y"
+case 189:
+#line 1648 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
break;}
-case 187:
-#line 1576 "asn1p_y.y"
+case 195:
+#line 1660 "asn1p_y.y"
{ yyval.a_constr = 0; ;
break;}
-case 188:
-#line 1577 "asn1p_y.y"
+case 196:
+#line 1661 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 189:
-#line 1583 "asn1p_y.y"
+case 197:
+#line 1667 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
;
break;}
-case 190:
-#line 1586 "asn1p_y.y"
+case 198:
+#line 1670 "asn1p_y.y"
{
/*
* This is a special case, for compatibility purposes.
@@ -2834,26 +2914,26 @@ case 190:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
;
break;}
-case 191:
-#line 1596 "asn1p_y.y"
+case 199:
+#line 1680 "asn1p_y.y"
{
yyval.a_constr = yyvsp[-1].a_constr;
;
break;}
-case 192:
-#line 1599 "asn1p_y.y"
+case 200:
+#line 1683 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
-case 193:
-#line 1605 "asn1p_y.y"
+case 201:
+#line 1689 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 194:
-#line 1608 "asn1p_y.y"
+case 202:
+#line 1692 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
@@ -2861,8 +2941,8 @@ case 194:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
;
break;}
-case 195:
-#line 1614 "asn1p_y.y"
+case 203:
+#line 1698 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
@@ -2872,38 +2952,38 @@ case 195:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
;
break;}
-case 196:
-#line 1625 "asn1p_y.y"
+case 204:
+#line 1709 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 197:
-#line 1628 "asn1p_y.y"
+case 205:
+#line 1712 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
;
break;}
-case 198:
-#line 1631 "asn1p_y.y"
+case 206:
+#line 1715 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
-case 199:
-#line 1634 "asn1p_y.y"
+case 207:
+#line 1718 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
-case 200:
-#line 1637 "asn1p_y.y"
+case 208:
+#line 1721 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
-case 201:
-#line 1643 "asn1p_y.y"
+case 209:
+#line 1727 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2913,8 +2993,8 @@ case 201:
checkmem(ret == 0);
;
break;}
-case 202:
-#line 1651 "asn1p_y.y"
+case 210:
+#line 1735 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2924,8 +3004,8 @@ case 202:
checkmem(ret == 0);
;
break;}
-case 203:
-#line 1659 "asn1p_y.y"
+case 211:
+#line 1743 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2933,8 +3013,8 @@ case 203:
yyval.a_constr->value = yyvsp[0].a_value;
;
break;}
-case 204:
-#line 1665 "asn1p_y.y"
+case 212:
+#line 1749 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2942,8 +3022,8 @@ case 204:
yyval.a_constr->containedSubtype = yyvsp[0].a_value;
;
break;}
-case 205:
-#line 1671 "asn1p_y.y"
+case 213:
+#line 1755 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2952,8 +3032,8 @@ case 205:
yyval.a_constr->range_stop = yyvsp[0].a_value;
;
break;}
-case 206:
-#line 1678 "asn1p_y.y"
+case 214:
+#line 1762 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2963,8 +3043,8 @@ case 206:
yyval.a_constr->range_start->type = ATV_MIN;
;
break;}
-case 207:
-#line 1686 "asn1p_y.y"
+case 215:
+#line 1770 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2974,8 +3054,8 @@ case 207:
yyval.a_constr->range_stop->type = ATV_MAX;
;
break;}
-case 208:
-#line 1694 "asn1p_y.y"
+case 216:
+#line 1778 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2986,24 +3066,24 @@ case 208:
yyval.a_constr->range_stop->type = ATV_MAX;
;
break;}
-case 209:
-#line 1703 "asn1p_y.y"
+case 217:
+#line 1787 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 210:
-#line 1706 "asn1p_y.y"
+case 218:
+#line 1790 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 211:
-#line 1710 "asn1p_y.y"
+case 219:
+#line 1794 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
-case 212:
-#line 1710 "asn1p_y.y"
+case 220:
+#line 1794 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3013,64 +3093,64 @@ case 212:
yyval.a_constr->value->type = ATV_UNPARSED;
;
break;}
-case 213:
-#line 1721 "asn1p_y.y"
+case 221:
+#line 1805 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
break;}
-case 214:
-#line 1722 "asn1p_y.y"
+case 222:
+#line 1806 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
break;}
-case 215:
-#line 1723 "asn1p_y.y"
+case 223:
+#line 1807 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
break;}
-case 216:
-#line 1724 "asn1p_y.y"
+case 224:
+#line 1808 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
break;}
-case 217:
-#line 1728 "asn1p_y.y"
+case 225:
+#line 1812 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_SIZE;
;
break;}
-case 218:
-#line 1731 "asn1p_y.y"
+case 226:
+#line 1815 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_FROM;
;
break;}
-case 219:
-#line 1737 "asn1p_y.y"
+case 227:
+#line 1821 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_FALSE;
;
break;}
-case 220:
-#line 1742 "asn1p_y.y"
+case 228:
+#line 1826 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(1);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_TRUE;
;
break;}
-case 221:
-#line 1747 "asn1p_y.y"
+case 229:
+#line 1831 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
-case 222:
-#line 1750 "asn1p_y.y"
+case 230:
+#line 1834 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
-case 223:
-#line 1753 "asn1p_y.y"
+case 231:
+#line 1837 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -3083,8 +3163,8 @@ case 223:
free(yyvsp[0].tv_str);
;
break;}
-case 224:
-#line 1767 "asn1p_y.y"
+case 232:
+#line 1851 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -3097,32 +3177,32 @@ case 224:
free(yyvsp[0].tv_str);
;
break;}
-case 225:
-#line 1781 "asn1p_y.y"
+case 233:
+#line 1865 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
;
break;}
-case 226:
-#line 1784 "asn1p_y.y"
+case 234:
+#line 1868 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
;
break;}
-case 227:
-#line 1790 "asn1p_y.y"
+case 235:
+#line 1874 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 228:
-#line 1793 "asn1p_y.y"
+case 236:
+#line 1877 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
-case 229:
-#line 1799 "asn1p_y.y"
+case 237:
+#line 1883 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3130,8 +3210,8 @@ case 229:
yyval.a_constr->value = asn1p_value_frombuf("...", 3, 0);
;
break;}
-case 230:
-#line 1805 "asn1p_y.y"
+case 238:
+#line 1889 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3141,46 +3221,46 @@ case 230:
if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
;
break;}
-case 231:
-#line 1819 "asn1p_y.y"
+case 239:
+#line 1903 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
break;}
-case 232:
-#line 1820 "asn1p_y.y"
+case 240:
+#line 1904 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
break;}
-case 233:
-#line 1824 "asn1p_y.y"
+case 241:
+#line 1908 "asn1p_y.y"
{
yyval.a_pres = ACPRES_PRESENT;
;
break;}
-case 234:
-#line 1827 "asn1p_y.y"
+case 242:
+#line 1911 "asn1p_y.y"
{
yyval.a_pres = ACPRES_ABSENT;
;
break;}
-case 235:
-#line 1830 "asn1p_y.y"
+case 243:
+#line 1914 "asn1p_y.y"
{
yyval.a_pres = ACPRES_OPTIONAL;
;
break;}
-case 236:
-#line 1836 "asn1p_y.y"
+case 244:
+#line 1920 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 237:
-#line 1839 "asn1p_y.y"
+case 245:
+#line 1923 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 238:
-#line 1848 "asn1p_y.y"
+case 246:
+#line 1932 "asn1p_y.y"
{
asn1p_ref_t *ref = asn1p_ref_new(yylineno);
asn1p_constraint_t *ct;
@@ -3194,14 +3274,14 @@ case 238:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
;
break;}
-case 239:
-#line 1863 "asn1p_y.y"
+case 247:
+#line 1947 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
-case 240:
-#line 1869 "asn1p_y.y"
+case 248:
+#line 1953 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3209,8 +3289,8 @@ case 240:
yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
;
break;}
-case 241:
-#line 1875 "asn1p_y.y"
+case 249:
+#line 1959 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
@@ -3220,8 +3300,8 @@ case 241:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
;
break;}
-case 242:
-#line 1889 "asn1p_y.y"
+case 250:
+#line 1973 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
int ret;
@@ -3234,8 +3314,8 @@ case 242:
free(yyvsp[0].tv_str);
;
break;}
-case 243:
-#line 1900 "asn1p_y.y"
+case 251:
+#line 1984 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
int ret;
@@ -3249,14 +3329,14 @@ case 243:
free(yyvsp[0].tv_str);
;
break;}
-case 244:
-#line 1916 "asn1p_y.y"
+case 252:
+#line 2000 "asn1p_y.y"
{
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 245:
-#line 1919 "asn1p_y.y"
+case 253:
+#line 2003 "asn1p_y.y"
{
int l1 = strlen(yyvsp[-2].tv_str);
int l3 = strlen(yyvsp[0].tv_str);
@@ -3267,61 +3347,61 @@ case 245:
yyval.tv_str[l1 + 1 + l3] = '\0';
;
break;}
-case 246:
-#line 1937 "asn1p_y.y"
+case 254:
+#line 2021 "asn1p_y.y"
{
yyval.a_marker.flags = EM_NOMARK;
yyval.a_marker.default_value = 0;
;
break;}
-case 247:
-#line 1941 "asn1p_y.y"
+case 255:
+#line 2025 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
break;}
-case 248:
-#line 1945 "asn1p_y.y"
+case 256:
+#line 2029 "asn1p_y.y"
{
yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
yyval.a_marker.default_value = 0;
;
break;}
-case 249:
-#line 1949 "asn1p_y.y"
+case 257:
+#line 2033 "asn1p_y.y"
{
yyval.a_marker.flags = EM_DEFAULT;
yyval.a_marker.default_value = yyvsp[0].a_value;
;
break;}
-case 250:
-#line 1972 "asn1p_y.y"
+case 258:
+#line 2056 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
;
break;}
-case 251:
-#line 1976 "asn1p_y.y"
+case 259:
+#line 2060 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
;
break;}
-case 252:
-#line 1982 "asn1p_y.y"
+case 260:
+#line 2066 "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 253:
-#line 1987 "asn1p_y.y"
+case 261:
+#line 2071 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
-case 254:
-#line 1994 "asn1p_y.y"
+case 262:
+#line 2078 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3330,8 +3410,8 @@ case 254:
yyval.a_expr->Identifier = yyvsp[0].tv_str;
;
break;}
-case 255:
-#line 2001 "asn1p_y.y"
+case 263:
+#line 2085 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3341,8 +3421,8 @@ case 255:
yyval.a_expr->value = yyvsp[-1].a_value;
;
break;}
-case 256:
-#line 2009 "asn1p_y.y"
+case 264:
+#line 2093 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3352,8 +3432,8 @@ case 256:
yyval.a_expr->value = yyvsp[-1].a_value;
;
break;}
-case 257:
-#line 2017 "asn1p_y.y"
+case 265:
+#line 2101 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3362,8 +3442,8 @@ case 257:
yyval.a_expr->value = yyvsp[0].a_value;
;
break;}
-case 258:
-#line 2024 "asn1p_y.y"
+case 266:
+#line 2108 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3373,103 +3453,103 @@ case 258:
yyval.a_expr->meta_type = AMT_VALUE;
;
break;}
-case 259:
-#line 2035 "asn1p_y.y"
+case 267:
+#line 2119 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
-case 260:
-#line 2039 "asn1p_y.y"
+case 268:
+#line 2123 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
-case 261:
-#line 2070 "asn1p_y.y"
+case 269:
+#line 2154 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
break;}
-case 262:
-#line 2071 "asn1p_y.y"
+case 270:
+#line 2155 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
break;}
-case 263:
-#line 2075 "asn1p_y.y"
+case 271:
+#line 2159 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-1].a_tag;
yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
;
break;}
-case 264:
-#line 2082 "asn1p_y.y"
+case 272:
+#line 2166 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-2].a_tag;
yyval.a_tag.tag_value = yyvsp[-1].a_int;
;
break;}
-case 265:
-#line 2088 "asn1p_y.y"
+case 273:
+#line 2172 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
break;}
-case 266:
-#line 2089 "asn1p_y.y"
+case 274:
+#line 2173 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
break;}
-case 267:
-#line 2090 "asn1p_y.y"
+case 275:
+#line 2174 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_APPLICATION; ;
break;}
-case 268:
-#line 2091 "asn1p_y.y"
+case 276:
+#line 2175 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_PRIVATE; ;
break;}
-case 269:
-#line 2095 "asn1p_y.y"
+case 277:
+#line 2179 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
break;}
-case 270:
-#line 2096 "asn1p_y.y"
+case 278:
+#line 2180 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
break;}
-case 271:
-#line 2097 "asn1p_y.y"
+case 279:
+#line 2181 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
break;}
-case 272:
-#line 2101 "asn1p_y.y"
+case 280:
+#line 2185 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 273:
-#line 2105 "asn1p_y.y"
+case 281:
+#line 2189 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 274:
-#line 2113 "asn1p_y.y"
+case 282:
+#line 2197 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 275:
-#line 2120 "asn1p_y.y"
+case 283:
+#line 2204 "asn1p_y.y"
{ yyval.tv_str = 0; ;
break;}
-case 276:
-#line 2121 "asn1p_y.y"
+case 284:
+#line 2205 "asn1p_y.y"
{
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 277:
-#line 2127 "asn1p_y.y"
+case 285:
+#line 2211 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
@@ -3697,7 +3777,7 @@ yyerrhandle:
}
return 1;
}
-#line 2133 "asn1p_y.y"
+#line 2217 "asn1p_y.y"
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index b070f2af..41f566d7 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -242,9 +242,11 @@ static void _fixup_anonymous_identifier(asn1p_expr_t *expr);
%type <a_refcomp> ComplexTypeReferenceElement
%type <a_refcomp> ClassFieldIdentifier
%type <a_refcomp> ClassFieldName
-%type <a_expr> ClassFieldList
+%type <a_expr> FieldSpec
+%type <a_ref> FieldName
+%type <a_ref> DefinedObjectClass
%type <a_expr> ClassField
-%type <a_expr> ClassDeclaration
+%type <a_expr> ObjectClass
%type <a_expr> Type
%type <a_expr> DataTypeReference /* Type1 ::= Type2 */
%type <a_expr> DefinedTypeRef
@@ -747,25 +749,17 @@ DataTypeReference:
/*
* Optionally tagged type definition.
*/
- TypeRefName TOK_PPEQ optTag TOK_TYPE_IDENTIFIER {
- $$ = asn1p_expr_new(yylineno);
- checkmem($$);
- $$->Identifier = $1;
- $$->tag = $3;
- $$->expr_type = A1TC_TYPEID;
- $$->meta_type = AMT_TYPE;
- }
- | TypeRefName TOK_PPEQ Type {
+ TypeRefName TOK_PPEQ Type {
$$ = $3;
$$->Identifier = $1;
assert($$->expr_type);
assert($$->meta_type);
}
- | TypeRefName TOK_PPEQ ClassDeclaration {
+ | TypeRefName TOK_PPEQ ObjectClass {
$$ = $3;
$$->Identifier = $1;
assert($$->expr_type == A1TC_CLASSDEF);
- assert($$->meta_type == AMT_OBJECT);
+ assert($$->meta_type == AMT_OBJECTCLASS);
}
/*
* Parametrized <Type> declaration:
@@ -943,13 +937,13 @@ AlternativeType:
}
;
-ClassDeclaration:
- TOK_CLASS '{' ClassFieldList '}' optWithSyntax {
+ObjectClass:
+ TOK_CLASS '{' FieldSpec '}' optWithSyntax {
$$ = $3;
checkmem($$);
$$->with_syntax = $5;
assert($$->expr_type == A1TC_CLASSDEF);
- assert($$->meta_type == AMT_OBJECT);
+ assert($$->meta_type == AMT_OBJECTCLASS);
}
;
@@ -958,50 +952,111 @@ optUnique:
| TOK_UNIQUE { $$ = 1; }
;
-ClassFieldList:
+FieldSpec:
ClassField {
$$ = asn1p_expr_new(yylineno);
checkmem($$);
$$->expr_type = A1TC_CLASSDEF;
- $$->meta_type = AMT_OBJECT;
+ $$->meta_type = AMT_OBJECTCLASS;
asn1p_expr_add($$, $1);
}
- | ClassFieldList ',' ClassField {
+ | FieldSpec ',' ClassField {
$$ = $1;
asn1p_expr_add($$, $3);
}
;
+ /* X.681 */
ClassField:
- ClassFieldIdentifier optMarker {
+
+ /* TypeFieldSpec ::= typefieldreference TypeOptionalitySpec? */
+ TOK_typefieldreference optMarker {
$$ = asn1p_expr_new(yylineno);
checkmem($$);
- $$->Identifier = $1.name;
- $$->expr_type = A1TC_CLASSFIELD;
+ $$->Identifier = $1;
$$->meta_type = AMT_OBJECTFIELD;
+ $$->expr_type = A1TC_CLASSFIELD_TFS; /* TypeFieldSpec */
$$->marker = $2;
}
- | ClassFieldIdentifier Type optUnique optMarker {
- $$ = $2;
- $$->Identifier = $1.name;
- $$->marker = $4;
+
+ /* FixedTypeValueFieldSpec ::= valuefieldreference Type UNIQUE ? ValueOptionalitySpec ? */
+ | TOK_valuefieldreference Type optUnique optMarker {
+ $$ = asn1p_expr_new(yylineno);
+ $$->Identifier = $1;
+ $$->meta_type = AMT_OBJECTFIELD;
+ $$->expr_type = A1TC_CLASSFIELD_FTVFS; /* FixedTypeValueFieldSpec */
$$->unique = $3;
+ $$->marker = $4;
+ asn1p_expr_add($$, $2);
}
- | ClassFieldIdentifier ClassFieldIdentifier optUnique optMarker {
- int ret;
+
+ /* VariableTypeValueFieldSpec ::= valuefieldreference FieldName ValueOptionalitySpec ? */
+ | TOK_valuefieldreference FieldName optMarker {
+ $$ = asn1p_expr_new(yylineno);
+ $$->Identifier = $1;
+ $$->meta_type = AMT_OBJECTFIELD;
+ $$->expr_type = A1TC_CLASSFIELD_VTVFS;
+ $$->reference = $2;
+ $$->marker = $3;
+ }
+
+ /* VariableTypeValueSetFieldSpec ::= valuesetfieldreference FieldName ValueOptionalitySpec ? */
+ | TOK_typefieldreference FieldName optMarker {
+ $$ = asn1p_expr_new(yylineno);
+ $$->Identifier = $1;
+ $$->meta_type = AMT_OBJECTFIELD;
+ $$->expr_type = A1TC_CLASSFIELD_VTVSFS;
+ $$->reference = $2;
+ $$->marker = $3;
+ }
+
+ /* ObjectFieldSpec ::= objectfieldreference DefinedObjectClass ObjectOptionalitySpec ? */
+ | TOK_valuefieldreference DefinedObjectClass optMarker {
$$ = asn1p_expr_new(yylineno);
checkmem($$);
- $$->Identifier = $1.name;
- $$->reference = asn1p_ref_new(yylineno);
- checkmem($$->reference);
- ret = asn1p_ref_add_component($$->reference,
- $2.name, $2.lex_type);
- checkmem(ret == 0);
- $$->expr_type = A1TC_CLASSFIELD;
+ $$->Identifier = $1;
+ $$->reference = $2;
$$->meta_type = AMT_OBJECTFIELD;
- $$->marker = $4;
- $$->unique = $3;
+ $$->expr_type = A1TC_CLASSFIELD_OFS;
+ $$->marker = $3;
+ }
+
+ /* ObjectSetFieldSpec ::= objectsetfieldreference DefinedObjectClass ObjectOptionalitySpec ? */
+ | TOK_typefieldreference DefinedObjectClass optMarker {
+ $$ = asn1p_expr_new(yylineno);
+ checkmem($$);
+ $$->Identifier = $1;
+ $$->reference = $2;
+ $$->meta_type = AMT_OBJECTFIELD;
+ $$->expr_type = A1TC_CLASSFIELD_OSFS;
+ $$->marker = $3;
}
+
+ /* FixedTypeValueSetFieldSpec ::= valuesetfieldreference Type ValueSetOptionalitySpec ? */
+ | TOK_typefieldreference Type optMarker {
+ $$ = asn1p_expr_new(yylineno);
+ checkmem($$);
+ $$->Identifier = $1;
+ $$->meta_type = AMT_OBJECTFIELD;
+ $$->expr_type = A1TC_CLASSFIELD_FTVSFS;
+ asn1p_expr_add($$, $2);
+ $$->marker = $3;
+ }
+
+ /*
+ DefinedObjectClass:
+ TOK_capitalreference {
+ $$ = asn1p_ref_new(yylineno);
+ asn1p_ref_add_component($$, $1, RLT_CAPITALS);
+ }
+ | TypeRefName '.' TOK_capitalreference {
+ $$ = asn1p_ref_new(yylineno);
+ asn1p_ref_add_component($$, $1, RLT_AmpUppercase);
+ asn1p_ref_add_component($$, $3, RLT_CAPITALS);
+ }
+ ;
+ */
+
;
optWithSyntax:
@@ -1333,6 +1388,35 @@ ClassFieldName:
;
+FieldName:
+ /* "&Type1" */
+ TOK_typefieldreference {
+ $$ = asn1p_ref_new(yylineno);
+ asn1p_ref_add_component($$, $1, RLT_AmpUppercase);
+ }
+ | FieldName '.' TOK_typefieldreference {
+ $$ = $$;
+ asn1p_ref_add_component($$, $3, RLT_AmpUppercase);
+ }
+ | FieldName '.' TOK_valuefieldreference {
+ $$ = $$;
+ asn1p_ref_add_component($$, $3, RLT_Amplowercase);
+ }
+ ;
+
+DefinedObjectClass:
+ TOK_capitalreference {
+ $$ = asn1p_ref_new(yylineno);
+ asn1p_ref_add_component($$, $1, RLT_CAPITALS);
+ }
+ | TypeRefName '.' TOK_capitalreference {
+ $$ = asn1p_ref_new(yylineno);
+ asn1p_ref_add_component($$, $1, RLT_AmpUppercase);
+ asn1p_ref_add_component($$, $3, RLT_CAPITALS);
+ }
+ ;
+
+
/*
* === EXAMPLE ===
* value INTEGER ::= 1
diff --git a/libasn1print/asn1print.c b/libasn1print/asn1print.c
index 83c31a10..992a344b 100644
--- a/libasn1print/asn1print.c
+++ b/libasn1print/asn1print.c
@@ -562,7 +562,7 @@ asn1print_expr(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *tc, enum asn1pri
case A1TC_CLASSDEF:
printf(" CLASS");
break;
- case A1TC_CLASSFIELD:
+ case A1TC_CLASSFIELD_TFS ... A1TC_CLASSFIELD_OSFS:
/* Nothing to print here */
break;
case ASN_CONSTR_SET_OF:
@@ -604,10 +604,12 @@ asn1print_expr(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *tc, enum asn1pri
|| (tc->expr_type & ASN_CONSTR_MASK)
|| tc->meta_type == AMT_VALUESET
|| tc->meta_type == AMT_OBJECT
- || tc->meta_type == AMT_OBJECTSET
+ || tc->meta_type == AMT_OBJECTCLASS
+ || tc->meta_type == AMT_OBJECTFIELD
) {
asn1p_expr_t *se; /* SubExpression */
- int put_braces = !SEQ_OF; /* Don't need 'em, if SET OF... */
+ int put_braces = (!SEQ_OF) /* Don't need 'em, if SET OF... */
+ && (tc->meta_type != AMT_OBJECTFIELD);
if(put_braces) {
if(flags & APF_NOINDENT) {
diff --git a/tests/34-class-OK.asn1.-EF b/tests/34-class-OK.asn1.-EF
index 340f1275..8cc56eee 100644
--- a/tests/34-class-OK.asn1.-EF
+++ b/tests/34-class-OK.asn1.-EF
@@ -18,7 +18,7 @@ Ext1 ::= SEQUENCE {
EXTENSION-ATTRIBUTE ::= CLASS {
&id INTEGER (0..256) UNIQUE,
- &Type
+ &Type ANY
} WITH SYNTAX {&Type IDENTIFIED BY &id}
@@ -26,7 +26,7 @@ terminal-type EXTENSION-ATTRIBUTE ::= {TerminalType IDENTIFIED BY 23}
ExtensionAttribute ::= SEQUENCE {
extension-attribute-type [0] IMPLICIT EXTENSION-ATTRIBUTE.&id ({ExtensionAttributeTable}),
- extension-attribute-value [1] IMPLICIT EXTENSION-ATTRIBUTE.&Type ({ExtensionAttributeTable}{@extension-attribute-type})
+ extension-attribute-value [1] EXPLICIT EXTENSION-ATTRIBUTE.&Type ({ExtensionAttributeTable}{@extension-attribute-type})
}
ub-extension-attributes INTEGER ::= 256