Commit d370e9f5 authored by Lev Walkin's avatar Lev Walkin

parsing WITH SYNTAX clauses

parent 57074f10
......@@ -2,9 +2,9 @@
0.9.21: 2006-Mar-14
* skeletons/standard-modules directory is now used for standard types.
* Refactored system for parsing Information Object Classes.
* Fixed class field access problem (Test case 98)
(Severity: medim; Security impact: none)
* Refactored system for parsing Information Object Classes.
0.9.20: 2006-Mar-06
......
......@@ -129,8 +129,10 @@ main(int ac, char **av) {
exit(EX_USAGE);
}
asn1_compiler_flags |= A1C_PDU_AUTO;
} else if(strcmp(optarg, "rint-class-matrix") == 0) {
asn1_printer_flags |= APF_PRINT_CLASS_MATRIX;
} else if(strcmp(optarg, "rint-constraints") == 0) {
asn1_printer_flags |= APF_DEBUG_CONSTRAINTS;
asn1_printer_flags |= APF_PRINT_CONSTRAINTS;
} else if(strcmp(optarg, "rint-lines") == 0) {
asn1_printer_flags |= APF_LINE_COMMENTS;
} else {
......@@ -459,6 +461,7 @@ usage(const char *av0) {
"\n"
" -print-constraints Explain subtype constraints (debug)\n"
" -print-class-matrix Print out the collected object class matrix (debug)\n"
" -print-lines Generate \"-- #line\" comments in -E output\n"
,
......
......@@ -188,8 +188,9 @@ asn1f_fix_module__phase_1(arg_t *arg) {
/* Do not process the parametrized type just yet */
continue;
DEBUG("=== Now processing \"%s\" at line %d ===",
expr->Identifier, expr->_lineno);
DEBUG("=== Now processing \"%s\" (%d/0x%x) at line %d ===",
expr->Identifier, expr->meta_type, expr->expr_type,
expr->_lineno);
assert(expr->meta_type != AMT_INVALID);
/*
......@@ -223,9 +224,10 @@ asn1f_fix_module__phase_1(arg_t *arg) {
RET2RVAL(ret, rvalue);
/*
* Parse WITH SYNTAX in CLASSes.
* Parse class objects and fill up the object class with data.
*/
ret = asn1f_parse_class_with_syntax(arg);
ret = asn1f_parse_class_object(arg);
RET2RVAL(ret, rvalue);
/*
* Resolve references in constraints.
......@@ -293,6 +295,9 @@ asn1f_fix_module__phase_2(arg_t *arg) {
int rvalue = 0;
int ret;
TQ_FOR(expr, &(arg->mod->members), next) {
}
TQ_FOR(expr, &(arg->mod->members), next) {
arg->expr = expr;
......
#include "asn1fix_internal.h"
#include "asn1fix_cws.h"
static int _asn1f_parse_class_object_data(arg_t *, asn1p_expr_t *eclass,
struct asn1p_ioc_row_s *row, asn1p_wsyntx_t *syntax,
uint8_t *buf, const uint8_t *bend,
int optional_mode, uint8_t **newpos);
static int _asn1f_assign_cell_value(arg_t *arg, struct asn1p_ioc_row_s *row, struct asn1p_ioc_cell_s *cell, uint8_t *buf, const uint8_t *bend);
int
asn1f_parse_class_with_syntax(arg_t *arg) {
asn1f_parse_class_object(arg_t *arg) {
asn1p_expr_t *expr = arg->expr;
asn1p_expr_t *eclass;
asn1p_ioc_row_t *row;
void *new_rows_ptr;
int ret;
if(expr->meta_type != AMT_VALUE
|| expr->expr_type != A1TC_REFERENCE
|| !expr->value
|| expr->value->type != ATV_UNPARSED)
return 0;
/*
* Find the governing class.
*/
eclass = asn1f_find_terminal_type(arg, expr);
if(!eclass
|| eclass->meta_type != AMT_OBJECTCLASS
|| eclass->expr_type != A1TC_CLASSDEF) {
return 0;
}
DEBUG("Value %s of CLASS %s found at line %d",
expr->Identifier, eclass->Identifier, expr->_lineno);
if(expr->expr_type != A1TC_CLASSDEF
|| expr->with_syntax == NULL)
if(!eclass->with_syntax) {
DEBUG("Can't process classes without WITH SYNTAX just yet");
return 0;
}
row = asn1p_ioc_row_new(eclass);
assert(row);
ret = _asn1f_parse_class_object_data(arg, eclass, row,
eclass->with_syntax,
expr->value->value.string.buf + 1,
expr->value->value.string.buf
+ expr->value->value.string.size - 1,
0, 0);
if(ret) {
LOG((ret < 0),
"Cannot parse %s of CLASS %s found at line %d",
expr->Identifier, eclass->Identifier, expr->_lineno);
asn1p_ioc_row_delete(row);
return ret;
}
new_rows_ptr = realloc(eclass->object_class_matrix.row,
(eclass->object_class_matrix.rows + 1)
* sizeof(eclass->object_class_matrix.row[0]));
assert(new_rows_ptr);
eclass->object_class_matrix.row = new_rows_ptr;
eclass->object_class_matrix.row[eclass->object_class_matrix.rows] = row;
eclass->object_class_matrix.rows++;
/* Propagate max identifier length */
if(eclass->object_class_matrix.max_identifier_length
< row->max_identifier_length)
eclass->object_class_matrix.max_identifier_length
= row->max_identifier_length;
return 0;
}
#define SKIPSPACES for(; buf < bend && isspace(*buf); buf++)
static int
_asn1f_parse_class_object_data(arg_t *arg, asn1p_expr_t *eclass,
struct asn1p_ioc_row_s *row, asn1p_wsyntx_t *syntax,
uint8_t *buf, const uint8_t *bend,
int optional_mode, uint8_t **newpos) {
struct asn1p_wsyntx_chunk_s *chunk;
int ret;
TQ_FOR(chunk, (&syntax->chunks), next) {
switch(chunk->type) {
case WC_LITERAL: {
int token_len = strlen(chunk->content.token);
SKIPSPACES;
if(bend - buf < token_len
|| memcmp(buf, chunk->content.token, token_len)) {
if(!optional_mode) {
FATAL("While parsing object class value %s at line %d: Expected: \"%s\", found: \"%s\"",
arg->expr->Identifier, arg->expr->_lineno, chunk->content.token, buf);
}
if(newpos) *newpos = buf;
return -1;
}
buf += token_len;
} break;
case WC_WHITESPACE: break; /* Ignore whitespace */
case WC_FIELD: {
struct asn1p_ioc_cell_s *cell;
uint8_t *p;
SKIPSPACES;
int lbraces = 0;
p = buf;
if(p < bend && *p == '{')
lbraces = 1, p++;
for(; p < bend; p++) {
if(lbraces) {
/* Search the terminating brace */
switch(*p) {
case '}': lbraces--; break;
case '{': lbraces++; break;
}
} else if(isspace(*p)) {
break;
}
}
if(lbraces) {
FATAL("Field reference %s found in class value definition for %s at line %d can not be satisfied by broken value \"%s\"",
chunk->content.token,
arg->expr->Identifier, arg->expr->_lineno, buf);
if(newpos) *newpos = buf;
return -1;
}
cell = asn1p_ioc_row_cell_fetch(row,
chunk->content.token);
if(cell == NULL) {
FATAL("Field reference %s found in WITH SYNAX {} clause does not match actual field in Object Class %s",
chunk->content.token,
eclass->Identifier, eclass->_lineno);
if(newpos) *newpos = buf;
return -1;
}
DEBUG("Reference %s satisfied by %s (%d)",
chunk->content.token,
buf, p - buf);
ret = _asn1f_assign_cell_value(arg, row, cell, buf, p);
if(ret) {
if(newpos) *newpos = buf;
return ret;
}
buf = p;
} break;
case WC_OPTIONALGROUP: {
uint8_t *np = 0;
SKIPSPACES;
ret = _asn1f_parse_class_object_data(arg, eclass, row,
chunk->content.syntax, buf, bend, 1, &np);
if(newpos) *newpos = np;
if(ret && np != buf)
return ret;
} break;
}
}
DEBUG("Class %s: checking WITH SYNTAX", expr->Identifier);
if(newpos) *newpos = buf;
return 0;
}
static int
_asn1f_assign_cell_value(arg_t *arg, struct asn1p_ioc_row_s *row, struct asn1p_ioc_cell_s *cell,
uint8_t *buf, const uint8_t *bend) {
asn1p_expr_t *expr;
asn1p_ref_t *ref;
char *p;
if((bend - buf) <= 0) {
FATAL("Assignment warning: empty string is being assigned into %s for %s at line %d",
cell->field->Identifier,
arg->expr->Identifier, arg->expr->_lineno);
return -1;
}
p = malloc(bend - buf + 1);
assert(p);
memcpy(p, buf, bend - buf);
p[bend - buf] = '\0';
if(!isalpha(*p)) {
if(isdigit(*p)) {
asn1c_integer_t value;
if(asn1p_atoi(p, &value)) {
FATAL("Value %s at line %d is too large for this compiler! Please contact the asn1c author.\n", p, arg->expr->_lineno);
return -1;
}
expr = asn1p_expr_new(arg->expr->_lineno);
expr->Identifier = p;
expr->meta_type = AMT_VALUE;
expr->expr_type = ASN_BASIC_INTEGER;
expr->value = asn1p_value_fromint(value);
} else {
WARNING("asn1c is not yet able to parse arbitrary direct values; please convert %s at line %d to a reference.", p, arg->expr->_lineno);
free(p);
return 1;
}
} else {
ref = asn1p_ref_new(arg->expr->_lineno);
asn1p_ref_add_component(ref, p, RLT_UNKNOWN);
assert(ref);
expr = asn1f_lookup_symbol(arg, arg->mod, ref);
if(!expr) {
FATAL("Cannot find %s referenced by %s at line %d",
p, arg->expr->Identifier,
arg->expr->_lineno);
return -1;
}
}
DEBUG("Field %s assignment of %s got %s",
cell->field->Identifier, p, expr->Identifier);
cell->value = expr;
if(row->max_identifier_length < strlen(expr->Identifier))
row->max_identifier_length = strlen(expr->Identifier);
return 0;
}
......@@ -2,9 +2,8 @@
#define _ASN1FIX_CLASS_WITH_SYNTAX_H_
/*
* CLASS may contain the "WITH SYNTAX" clause, in which case we are
* going to parse it.
* Parse class objects
*/
int asn1f_parse_class_with_syntax(arg_t *arg);
int asn1f_parse_class_object(arg_t *arg);
#endif /* _ASN1FIX_CLASS_WITH_SYNTAX_H_ */
......@@ -6,6 +6,61 @@
#include "asn1parser.h"
asn1p_ioc_row_t *
asn1p_ioc_row_new(asn1p_expr_t *oclass) {
asn1p_ioc_row_t *row;
asn1p_expr_t *field;
int columns = 0;
assert(oclass->expr_type == A1TC_CLASSDEF);
row = calloc(1, sizeof *row);
if(!row) return NULL;
TQ_FOR(field, &oclass->members, next)
columns++;
row->column = calloc(columns, sizeof *row->column);
if(!row->column) {
free(row);
return NULL;
}
row->columns = columns;
columns = 0;
TQ_FOR(field, &oclass->members, next) {
int fieldIdLen = strlen(field->Identifier);
if(fieldIdLen > row->max_identifier_length)
row->max_identifier_length = fieldIdLen;
row->column[columns].field = field;
row->column[columns].value = NULL;
columns++;
}
return row;
}
void
asn1p_ioc_row_delete(asn1p_ioc_row_t *row) {
if(row) {
if(row->column) {
free(row->column);
}
free(row);
}
}
struct asn1p_ioc_cell_s *
asn1p_ioc_row_cell_fetch(asn1p_ioc_row_t *row, const char *fieldname) {
int i;
for(i = 0; i < row->columns; i++) {
if(strcmp(row->column[i].field->Identifier, fieldname) == 0)
return &row->column[i];
}
errno = ESRCH;
return NULL;
}
asn1p_wsyntx_chunk_t *
asn1p_wsyntx_chunk_new() {
asn1p_wsyntx_chunk_t *wc;
......@@ -21,8 +76,8 @@ asn1p_wsyntx_chunk_free(asn1p_wsyntx_chunk_t *wc) {
switch(wc->type) {
case WC_LITERAL:
case WC_WHITESPACE:
case WC_FIELD:
free(wc->content.token); break;
case WC_REFERENCE: asn1p_ref_free(wc->content.ref); break;
case WC_OPTIONALGROUP:
asn1p_wsyntx_free(wc->content.syntax);
break;
......@@ -41,12 +96,10 @@ asn1p_wsyntx_chunk_clone(asn1p_wsyntx_chunk_t *wc) {
switch(wc->type) {
case WC_LITERAL:
case WC_WHITESPACE:
case WC_FIELD:
nc->content.token = malloc(strlen(wc->content.token)+1);
strcpy(nc->content.token, wc->content.token);
break;
case WC_REFERENCE:
nc->content.ref = asn1p_ref_clone(wc->content.ref);
break;
case WC_OPTIONALGROUP:
nc->content.syntax = asn1p_wsyntx_clone(wc->content.syntax);
break;
......@@ -100,26 +153,6 @@ asn1p_wsyntx_clone(asn1p_wsyntx_t *wx) {
return nw;
}
asn1p_wsyntx_chunk_t *
asn1p_wsyntx_chunk_fromref(asn1p_ref_t *ref, int do_copy) {
asn1p_wsyntx_chunk_t *wc;
if(do_copy) {
static asn1p_wsyntx_chunk_t tmp;
tmp.type = WC_REFERENCE;
tmp.content.ref = ref;
wc = asn1p_wsyntx_chunk_clone(&tmp);
} else {
wc = asn1p_wsyntx_chunk_new();
if(wc) {
wc->type = WC_REFERENCE;
wc->content.ref = ref;
}
}
return wc;
}
asn1p_wsyntx_chunk_t *
asn1p_wsyntx_chunk_frombuf(char *buf, int len, int do_copy) {
asn1p_wsyntx_chunk_t *wc;
......
......@@ -6,6 +6,22 @@
#include "asn1p_ref.h"
struct asn1p_expr_s; /* Forward declaration */
typedef struct asn1p_ioc_row_s {
struct asn1p_ioc_cell_s {
struct asn1p_expr_s *field; /* may never be NULL */
struct asn1p_expr_s *value; /* may be left uninitialized */
} *column;
int columns;
int max_identifier_length;
} asn1p_ioc_row_t;
asn1p_ioc_row_t *asn1p_ioc_row_new(struct asn1p_expr_s *oclass);
void asn1p_ioc_row_delete(asn1p_ioc_row_t *);
struct asn1p_ioc_cell_s *asn1p_ioc_row_cell_fetch(asn1p_ioc_row_t *,
const char *fieldname);
/*
* WITH SYNTAX free-form chunks.
*/
......@@ -13,18 +29,17 @@ typedef struct asn1p_wsyntx_chunk_s {
enum {
WC_LITERAL,
WC_WHITESPACE,
WC_REFERENCE,
WC_FIELD,
WC_OPTIONALGROUP
} type;
/*
* WC_LITERAL -> {token}
* WC_WHITESPACE -> {token}
* WC_REFERENCE -> {ref}
* WC_FIELD -> {token}
* WC_OPTIONALGROUP -> {syntax}
*/
union {
char *token;
asn1p_ref_t *ref;
struct asn1p_wsyntx_s *syntax;
} content;
......@@ -54,7 +69,6 @@ asn1p_wsyntx_t *asn1p_wsyntx_clone(asn1p_wsyntx_t *);
* 0: Component has been added
* -1: Failure to add component (refer to errno)
*/
asn1p_wsyntx_chunk_t *asn1p_wsyntx_chunk_fromref(asn1p_ref_t *ref, int do_copy);
asn1p_wsyntx_chunk_t *asn1p_wsyntx_chunk_frombuf(char *buf, int len, int _copy);
asn1p_wsyntx_chunk_t *asn1p_wsyntx_chunk_fromsyntax(asn1p_wsyntx_t *syntax);
......
......@@ -163,6 +163,13 @@ typedef struct asn1p_expr_s {
*/
asn1p_wsyntx_t *with_syntax;
/* Information Object Class matrix, specific for this class */
struct asn1p_ioc_matrix_s {
asn1p_ioc_row_t **row;
int rows;
int max_identifier_length;
} object_class_matrix;
/*
* A tag.
*/
......
......@@ -1763,21 +1763,21 @@ int yy_flex_debug = 1;
static yyconst short int yy_rule_linenum[137] =
{ 0,
94, 95, 97, 100, 102, 105, 107, 108, 109, 112,
114, 115, 116, 128, 135, 142, 148, 157, 165, 173,
174, 176, 195, 201, 202, 203, 204, 205, 208, 214,
221, 228, 235, 242, 243, 244, 252, 253, 254, 255,
256, 261, 262, 263, 264, 265, 266, 267, 268, 269,
270, 271, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
342, 343, 348, 349, 350, 353, 358, 364, 372, 382,
387, 389, 390, 394, 399, 404, 410, 411, 413, 419,
432, 435, 460, 504, 506, 517
95, 96, 98, 101, 103, 106, 108, 109, 110, 113,
115, 116, 117, 129, 136, 143, 149, 158, 166, 174,
175, 177, 196, 202, 203, 204, 205, 206, 209, 215,
222, 229, 236, 243, 244, 245, 253, 254, 255, 256,
257, 262, 263, 264, 265, 266, 267, 268, 269, 270,
271, 272, 281, 282, 283, 284, 285, 286, 287, 288,
289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
343, 344, 349, 350, 351, 354, 359, 365, 373, 383,
388, 390, 391, 395, 400, 405, 411, 412, 414, 420,
433, 436, 461, 505, 507, 518
} ;
static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
......@@ -1821,10 +1821,11 @@ void asn1p_lexer_hack_push_encoding_control(void); /* Used in .y */
int asn1p_lexer_pedantic_1990 = 0;
int asn1p_lexer_types_year = 0;
int asn1p_lexer_constructs_year = 0;
static asn1c_integer_t asn1p_atoi(char *ptr); /* errno is either 0 or ERANGE */
int asn1p_as_pointer;
static asn1c_integer_t _lex_atoi(const char *ptr);
/*
* Check that the type is defined in the year of the standard choosen.
*/
......@@ -1883,7 +1884,7 @@ int asn1p_as_pointer;
/* Newline */
/* White-space */
#line 1887 "asn1p_l.c"
#line 1888 "asn1p_l.c"
/* Macros after this point can all be overridden by user definitions in
* section 1.
......@@ -2034,10 +2035,10 @@ YY_DECL
register char *yy_cp, *yy_bp;
register int yy_act;
#line 92 "asn1p_l.l"
#line 93 "asn1p_l.l"
#line 2041 "asn1p_l.c"
#line 2042 "asn1p_l.c"
if ( yy_init )
{
......@@ -2148,7 +2149,7 @@ case 1:
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 94 "asn1p_l.l"
#line 95 "asn1p_l.l"
/* Immediately terminated long comment */
YY_BREAK
case 2:
......@@ -2156,67 +2157,67 @@ case 2:
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 95 "asn1p_l.l"
#line 96 "asn1p_l.l"
yy_push_state(idash_comment); /* Incorrect, but acceptable */
YY_BREAK
case 3:
YY_RULE_SETUP
#line 97 "asn1p_l.l"
#line 98 "asn1p_l.l"
yy_pop_state(); /* Acceptable end of comment */
YY_BREAK
case 4:
YY_RULE_SETUP
#line 100 "asn1p_l.l"
#line 101 "asn1p_l.l"
asn1p_as_pointer = 1;
YY_BREAK
case 5:
YY_RULE_SETUP
#line 102 "asn1p_l.l"
#line 103 "asn1p_l.l"
yy_push_state(dash_comment);
YY_BREAK
case 6:
YY_RULE_SETUP
#line 105 "asn1p_l.l"
#line 106 "asn1p_l.l"
yy_pop_state();
YY_BREAK
case 7:
YY_RULE_SETUP
#line 107 "asn1p_l.l"
#line 108 "asn1p_l.l"
yy_pop_state(); /* End of comment */
YY_BREAK
case 8:
YY_RULE_SETUP
#line 108 "asn1p_l.l"
#line 109 "asn1p_l.l"
/* Eat single dash */
YY_BREAK
case 9:
YY_RULE_SETUP
#line 109 "asn1p_l.l"
#line 110 "asn1p_l.l"
/* Eat */
YY_BREAK
case 10:
YY_RULE_SETUP
#line 112 "asn1p_l.l"
#line 113 "asn1p_l.l"
yy_push_state(cpp_comment);
YY_BREAK
case 11:
YY_RULE_SETUP
#line 114 "asn1p_l.l"
#line 115 "asn1p_l.l"
/* Eat */
YY_BREAK
case 12:
YY_RULE_SETUP
#line 115 "asn1p_l.l"
#line 116 "asn1p_l.l"
yy_pop_state();
YY_BREAK
case 13:
YY_RULE_SETUP
#line 116 "asn1p_l.l"
#line 117 "asn1p_l.l"
/* Eat */
YY_BREAK
......@@ -2229,7 +2230,7 @@ YY_RULE_SETUP
case 14:
YY_RULE_SETUP
#line 128 "asn1p_l.l"
#line 129 "asn1p_l.l"
{
yy_push_state(opaque);
asn1p_lval.tv_opaque.buf = strdup(yytext);
......@@ -2239,7 +2240,7 @@ YY_RULE_SETUP
YY_BREAK
case 15:
YY_RULE_SETUP
#line 135 "asn1p_l.l"
#line 136 "asn1p_l.l"
{
yy_pop_state();
asn1p_lval.tv_opaque.buf = strdup(yytext);
......@@ -2249,7 +2250,7 @@ YY_RULE_SETUP
YY_BREAK
case 16:
YY_RULE_SETUP
#line 142 "asn1p_l.l"
#line 143 "asn1p_l.l"
{
asn1p_lval.tv_opaque.buf = strdup(yytext);
asn1p_lval.tv_opaque.len = yyleng;
......@@ -2258,7 +2259,7 @@ YY_RULE_SETUP
YY_BREAK
case 17:
YY_RULE_SETUP
#line 148 "asn1p_l.l"
#line 149 "asn1p_l.l"
{
fprintf(stderr,
"ASN.1 Parser syncronization failure: "
......@@ -2270,7 +2271,7 @@ YY_RULE_SETUP
YY_BREAK
case 18:
YY_RULE_SETUP
#line 157 "asn1p_l.l"
#line 158 "asn1p_l.l"
{
asn1p_lval.tv_opaque.buf = strdup(yytext);
asn1p_lval.tv_opaque.len = yyleng;
......@@ -2280,7 +2281,7 @@ YY_RULE_SETUP
case 19:
YY_RULE_SETUP
#line 165 "asn1p_l.l"
#line 166 "asn1p_l.l"
{
asn1p_lval.tv_opaque.buf = 0;
asn1p_lval.tv_opaque.len = 0;
......@@ -2291,17 +2292,17 @@ YY_RULE_SETUP
case 20:
YY_RULE_SETUP
#line 173 "asn1p_l.l"
#line 174 "asn1p_l.l"
{ QAPPEND(yytext, yyleng-1); } /* Add a single quote */
YY_BREAK
case 21:
YY_RULE_SETUP
#line 174 "asn1p_l.l"
#line 175 "asn1p_l.l"
{ QAPPEND(yytext, yyleng); }
YY_BREAK
case 22:
YY_RULE_SETUP
#line 176 "asn1p_l.l"
#line 177 "asn1p_l.l"
{
yy_pop_state();
/* Do not append last quote:
......@@ -2322,7 +2323,7 @@ YY_RULE_SETUP
case 23:
YY_RULE_SETUP
#line 195 "asn1p_l.l"
#line 196 "asn1p_l.l"
{
const char *s = "ENCODING-CONTROL";
const char *p = s + sizeof("ENCODING-CONTROL") - 2;
......@@ -2332,33 +2333,33 @@ YY_RULE_SETUP
YY_BREAK
case 24:
YY_RULE_SETUP
#line 201 "asn1p_l.l"
#line 202 "asn1p_l.l"
unput('D'); unput('N'); unput('E'); yy_pop_state();
YY_BREAK
case 25:
YY_RULE_SETUP
#line 202 "asn1p_l.l"
#line 203 "asn1p_l.l"
YY_BREAK
case 26:
YY_RULE_SETUP
#line 203 "asn1p_l.l"
#line 204 "asn1p_l.l"
YY_BREAK
case 27:
YY_RULE_SETUP
#line 204 "asn1p_l.l"
#line 205 "asn1p_l.l"
/* Eat everything else */
YY_BREAK
case 28:
YY_RULE_SETUP
#line 205 "asn1p_l.l"
#line 206 "asn1p_l.l"
YY_BREAK
case 29:
YY_RULE_SETUP
#line 208 "asn1p_l.l"
#line 209 "asn1p_l.l"
{
/* " \t\r\n" weren't allowed in ASN.1:1990. */
asn1p_lval.tv_str = yytext;
......@@ -2367,7 +2368,7 @@ YY_RULE_SETUP
YY_BREAK
case 30:
YY_RULE_SETUP
#line 214 "asn1p_l.l"
#line 215 "asn1p_l.l"
{
/* " \t\r\n" weren't allowed in ASN.1:1990. */
asn1p_lval.tv_str = strdup(yytext);
......@@ -2376,9 +2377,9 @@ YY_RULE_SETUP
YY_BREAK
case 31:
YY_RULE_SETUP
#line 221 "asn1p_l.l"
#line 222 "asn1p_l.l"
{
asn1p_lval.a_int = asn1p_atoi(yytext);
asn1p_lval.a_int = _lex_atoi(yytext);
if(errno == ERANGE)
return -1;
return TOK_number_negative;
......@@ -2386,9 +2387,9 @@ YY_RULE_SETUP
YY_BREAK
case 32:
YY_RULE_SETUP
#line 228 "asn1p_l.l"
#line 229 "asn1p_l.l"
{
asn1p_lval.a_int = asn1p_atoi(yytext);
asn1p_lval.a_int = _lex_atoi(yytext);
if(errno == ERANGE)
return -1;
return TOK_number;
......@@ -2396,9 +2397,9 @@ YY_RULE_SETUP
YY_BREAK
case 33:
YY_RULE_SETUP
#line 235 "asn1p_l.l"
#line 236 "asn1p_l.l"
{
asn1p_lval.a_int = asn1p_atoi(yytext);
asn1p_lval.a_int = _lex_atoi(yytext);
if(errno == ERANGE)
return -1;
return TOK_number;
......@@ -2406,17 +2407,17 @@ YY_RULE_SETUP
YY_BREAK
case 34:
YY_RULE_SETUP
#line 242 "asn1p_l.l"
#line 243 "asn1p_l.l"
return TOK_ABSENT;
YY_BREAK
case 35:
YY_RULE_SETUP
#line 243 "asn1p_l.l"
#line 244 "asn1p_l.l"
return TOK_ALL;
YY_BREAK
case 36:
YY_RULE_SETUP
#line 244 "asn1p_l.l"
#line 245 "asn1p_l.l"
{
/* Appeared in 1990, removed in 1997 */
if(TYPE_LIFETIME(1990, 1997))
......@@ -2428,27 +2429,27 @@ YY_RULE_SETUP
YY_BREAK
case 37:
YY_RULE_SETUP
#line 252 "asn1p_l.l"
#line 253 "asn1p_l.l"
return TOK_APPLICATION;
YY_BREAK
case 38:
YY_RULE_SETUP
#line 253 "asn1p_l.l"
#line 254 "asn1p_l.l"
return TOK_AUTOMATIC;
YY_BREAK
case 39:
YY_RULE_SETUP
#line 254 "asn1p_l.l"
#line 255 "asn1p_l.l"
return TOK_BEGIN;
YY_BREAK
case 40:
YY_RULE_SETUP
#line 255 "asn1p_l.l"
#line 256 "asn1p_l.l"
return TOK_BIT;
YY_BREAK
case 41:
YY_RULE_SETUP
#line 256 "asn1p_l.l"
#line 257 "asn1p_l.l"
{
if(TYPE_LIFETIME(1994, 0))
return TOK_BMPString;
......@@ -2457,57 +2458,57 @@ YY_RULE_SETUP
YY_BREAK
case 42:
YY_RULE_SETUP
#line 261 "asn1p_l.l"
#line 262 "asn1p_l.l"
return TOK_BOOLEAN;
YY_BREAK
case 43:
YY_RULE_SETUP
#line 262 "asn1p_l.l"
#line 263 "asn1p_l.l"
return TOK_BY;
YY_BREAK
case 44:
YY_RULE_SETUP
#line 263 "asn1p_l.l"
#line 264 "asn1p_l.l"
return TOK_CHARACTER;
YY_BREAK
case 45:
YY_RULE_SETUP
#line 264 "asn1p_l.l"
#line 265 "asn1p_l.l"
return TOK_CHOICE;
YY_BREAK
case 46:
YY_RULE_SETUP
#line 265 "asn1p_l.l"
#line 266 "asn1p_l.l"
return TOK_CLASS;
YY_BREAK
case 47:
YY_RULE_SETUP
#line 266 "asn1p_l.l"
#line 267 "asn1p_l.l"
return TOK_COMPONENT;
YY_BREAK
case 48:
YY_RULE_SETUP
#line 267 "asn1p_l.l"
#line 268 "asn1p_l.l"
return TOK_COMPONENTS;
YY_BREAK
case 49:
YY_RULE_SETUP
#line 268 "asn1p_l.l"
#line 269 "asn1p_l.l"
return TOK_CONSTRAINED;
YY_BREAK
case 50:
YY_RULE_SETUP
#line 269 "asn1p_l.l"
#line 270 "asn1p_l.l"
return TOK_CONTAINING;
YY_BREAK
case 51:
YY_RULE_SETUP
#line 270 "asn1p_l.l"
#line 271 "asn1p_l.l"
return TOK_DEFAULT;
YY_BREAK
case 52:
YY_RULE_SETUP
#line 271 "asn1p_l.l"
#line 272 "asn1p_l.l"
{
/* Appeared in 1990, removed in 1997 */
if(TYPE_LIFETIME(1990, 1997))
......@@ -2520,292 +2521,292 @@ YY_RULE_SETUP
YY_BREAK
case 53:
YY_RULE_SETUP
#line 280 "asn1p_l.l"
#line 281 "asn1p_l.l"
return TOK_DEFINITIONS;
YY_BREAK
case 54:
YY_RULE_SETUP
#line 281 "asn1p_l.l"
#line 282 "asn1p_l.l"
return TOK_EMBEDDED;
YY_BREAK
case 55:
YY_RULE_SETUP
#line 282 "asn1p_l.l"
#line 283 "asn1p_l.l"
return TOK_ENCODED;
YY_BREAK
case 56:
YY_RULE_SETUP
#line 283 "asn1p_l.l"
#line 284 "asn1p_l.l"
return TOK_ENCODING_CONTROL;
YY_BREAK
case 57:
YY_RULE_SETUP
#line 284 "asn1p_l.l"
#line 285 "asn1p_l.l"
return TOK_END;
YY_BREAK
case 58:
YY_RULE_SETUP
#line 285 "asn1p_l.l"
#line 286 "asn1p_l.l"
return TOK_ENUMERATED;
YY_BREAK
case 59:
YY_RULE_SETUP
#line 286 "asn1p_l.l"
#line 287 "asn1p_l.l"
return TOK_EXCEPT;
YY_BREAK
case 60:
YY_RULE_SETUP
#line 287 "asn1p_l.l"
#line 288 "asn1p_l.l"
return TOK_EXPLICIT;
YY_BREAK
case 61:
YY_RULE_SETUP
#line 288 "asn1p_l.l"
#line 289 "asn1p_l.l"
return TOK_EXPORTS;
YY_BREAK
case 62:
YY_RULE_SETUP
#line 289 "asn1p_l.l"
#line 290 "asn1p_l.l"
return TOK_EXTENSIBILITY;
YY_BREAK
case 63:
YY_RULE_SETUP
#line 290 "asn1p_l.l"
#line 291 "asn1p_l.l"
return TOK_EXTERNAL;
YY_BREAK
case 64:
YY_RULE_SETUP
#line 291 "asn1p_l.l"
#line 292 "asn1p_l.l"
return TOK_FALSE;
YY_BREAK
case 65:
YY_RULE_SETUP
#line 292 "asn1p_l.l"
#line 293 "asn1p_l.l"
return TOK_FROM;
YY_BREAK
case 66:
YY_RULE_SETUP
#line 293 "asn1p_l.l"
#line 294 "asn1p_l.l"
return TOK_GeneralizedTime;
YY_BREAK
case 67:
YY_RULE_SETUP
#line 294 "asn1p_l.l"
#line 295 "asn1p_l.l"
return TOK_GeneralString;
YY_BREAK
case 68:
YY_RULE_SETUP
#line 295 "asn1p_l.l"
#line 296 "asn1p_l.l"
return TOK_GraphicString;
YY_BREAK
case 69:
YY_RULE_SETUP
#line 296 "asn1p_l.l"
#line 297 "asn1p_l.l"
return TOK_IA5String;
YY_BREAK
case 70:
YY_RULE_SETUP
#line 297 "asn1p_l.l"
#line 298 "asn1p_l.l"
return TOK_IDENTIFIER;
YY_BREAK
case 71:
YY_RULE_SETUP
#line 298 "asn1p_l.l"
#line 299 "asn1p_l.l"
return TOK_IMPLICIT;
YY_BREAK
case 72:
YY_RULE_SETUP
#line 299 "asn1p_l.l"
#line 300 "asn1p_l.l"
return TOK_IMPLIED;
YY_BREAK
case 73:
YY_RULE_SETUP
#line 300 "asn1p_l.l"
#line 301 "asn1p_l.l"
return TOK_IMPORTS;
YY_BREAK
case 74:
YY_RULE_SETUP
#line 301 "asn1p_l.l"
#line 302 "asn1p_l.l"
return TOK_INCLUDES;
YY_BREAK
case 75:
YY_RULE_SETUP
#line 302 "asn1p_l.l"
#line 303 "asn1p_l.l"
return TOK_INSTANCE;
YY_BREAK
case 76:
YY_RULE_SETUP
#line 303 "asn1p_l.l"
#line 304 "asn1p_l.l"
return TOK_INSTRUCTIONS;
YY_BREAK
case 77:
YY_RULE_SETUP
#line 304 "asn1p_l.l"
#line 305 "asn1p_l.l"
return TOK_INTEGER;
YY_BREAK
case 78:
YY_RULE_SETUP
#line 305 "asn1p_l.l"
#line 306 "asn1p_l.l"
return TOK_INTERSECTION;
YY_BREAK
case 79:
YY_RULE_SETUP
#line 306 "asn1p_l.l"
#line 307 "asn1p_l.l"
return TOK_ISO646String;
YY_BREAK
case 80:
YY_RULE_SETUP
#line 307 "asn1p_l.l"
#line 308 "asn1p_l.l"
return TOK_MAX;
YY_BREAK
case 81:
YY_RULE_SETUP
#line 308 "asn1p_l.l"
#line 309 "asn1p_l.l"
return TOK_MIN;
YY_BREAK
case 82:
YY_RULE_SETUP
#line 309 "asn1p_l.l"
#line 310 "asn1p_l.l"
return TOK_MINUS_INFINITY;
YY_BREAK
case 83:
YY_RULE_SETUP
#line 310 "asn1p_l.l"
#line 311 "asn1p_l.l"
return TOK_NULL;
YY_BREAK
case 84:
YY_RULE_SETUP
#line 311 "asn1p_l.l"
#line 312 "asn1p_l.l"
return TOK_NumericString;
YY_BREAK
case 85:
YY_RULE_SETUP
#line 312 "asn1p_l.l"
#line 313 "asn1p_l.l"
return TOK_OBJECT;
YY_BREAK
case 86:
YY_RULE_SETUP
#line 313 "asn1p_l.l"
#line 314 "asn1p_l.l"
return TOK_ObjectDescriptor;
YY_BREAK
case 87:
YY_RULE_SETUP
#line 314 "asn1p_l.l"
#line 315 "asn1p_l.l"
return TOK_OCTET;
YY_BREAK
case 88:
YY_RULE_SETUP
#line 315 "asn1p_l.l"
#line 316 "asn1p_l.l"
return TOK_OF;
YY_BREAK
case 89:
YY_RULE_SETUP
#line 316 "asn1p_l.l"
#line 317 "asn1p_l.l"
return TOK_OPTIONAL;
YY_BREAK
case 90:
YY_RULE_SETUP
#line 317 "asn1p_l.l"
#line 318 "asn1p_l.l"
return TOK_PATTERN;
YY_BREAK
case 91:
YY_RULE_SETUP
#line 318 "asn1p_l.l"
#line 319 "asn1p_l.l"
return TOK_PDV;
YY_BREAK
case 92:
YY_RULE_SETUP
#line 319 "asn1p_l.l"
#line 320 "asn1p_l.l"
return TOK_PLUS_INFINITY;
YY_BREAK
case 93:
YY_RULE_SETUP
#line 320 "asn1p_l.l"
#line 321 "asn1p_l.l"
return TOK_PRESENT;
YY_BREAK
case 94:
YY_RULE_SETUP
#line 321 "asn1p_l.l"
#line 322 "asn1p_l.l"
return TOK_PrintableString;
YY_BREAK
case 95:
YY_RULE_SETUP
#line 322 "asn1p_l.l"
#line 323 "asn1p_l.l"
return TOK_PRIVATE;
YY_BREAK
case 96:
YY_RULE_SETUP
#line 323 "asn1p_l.l"
#line 324 "asn1p_l.l"
return TOK_REAL;
YY_BREAK
case 97:
YY_RULE_SETUP
#line 324 "asn1p_l.l"
#line 325 "asn1p_l.l"
return TOK_RELATIVE_OID;
YY_BREAK
case 98:
YY_RULE_SETUP
#line 325 "asn1p_l.l"
#line 326 "asn1p_l.l"
return TOK_SEQUENCE;
YY_BREAK
case 99:
YY_RULE_SETUP
#line 326 "asn1p_l.l"
#line 327 "asn1p_l.l"
return TOK_SET;
YY_BREAK
case 100:
YY_RULE_SETUP
#line 327 "asn1p_l.l"
#line 328 "asn1p_l.l"
return TOK_SIZE;
YY_BREAK
case 101:
YY_RULE_SETUP
#line 328 "asn1p_l.l"
#line 329 "asn1p_l.l"
return TOK_STRING;
YY_BREAK
case 102:
YY_RULE_SETUP
#line 329 "asn1p_l.l"
#line 330 "asn1p_l.l"
return TOK_SYNTAX;
YY_BREAK
case 103:
YY_RULE_SETUP
#line 330 "asn1p_l.l"
#line 331 "asn1p_l.l"
return TOK_T61String;
YY_BREAK
case 104:
YY_RULE_SETUP
#line 331 "asn1p_l.l"
#line 332 "asn1p_l.l"
return TOK_TAGS;
YY_BREAK
case 105:
YY_RULE_SETUP
#line 332 "asn1p_l.l"
#line 333 "asn1p_l.l"
return TOK_TeletexString;
YY_BREAK
case 106:
YY_RULE_SETUP
#line 333 "asn1p_l.l"
#line 334 "asn1p_l.l"
return TOK_TRUE;
YY_BREAK
case 107:
YY_RULE_SETUP
#line 334 "asn1p_l.l"
#line 335 "asn1p_l.l"
return TOK_UNION;
YY_BREAK
case 108:
YY_RULE_SETUP
#line 335 "asn1p_l.l"
#line 336 "asn1p_l.l"
return TOK_UNIQUE;
YY_BREAK
case 109:
YY_RULE_SETUP
#line 336 "asn1p_l.l"
#line 337 "asn1p_l.l"
return TOK_UNIVERSAL;
YY_BREAK
case 110:
YY_RULE_SETUP
#line 337 "asn1p_l.l"
#line 338 "asn1p_l.l"
{
if(TYPE_LIFETIME(1994, 0))
return TOK_UniversalString;
......@@ -2814,12 +2815,12 @@ YY_RULE_SETUP
YY_BREAK
case 111:
YY_RULE_SETUP
#line 342 "asn1p_l.l"
#line 343 "asn1p_l.l"
return TOK_UTCTime;
YY_BREAK
case 112:
YY_RULE_SETUP
#line 343 "asn1p_l.l"
#line 344 "asn1p_l.l"
{
if(TYPE_LIFETIME(1994, 0))
return TOK_UTF8String;
......@@ -2828,22 +2829,22 @@ YY_RULE_SETUP
YY_BREAK
case 113:
YY_RULE_SETUP
#line 348 "asn1p_l.l"
#line 349 "asn1p_l.l"
return TOK_VideotexString;
YY_BREAK
case 114:
YY_RULE_SETUP
#line 349 "asn1p_l.l"
#line 350 "asn1p_l.l"
return TOK_VisibleString;
YY_BREAK
case 115:
YY_RULE_SETUP
#line 350 "asn1p_l.l"
#line 351 "asn1p_l.l"
return TOK_WITH;
YY_BREAK
case 116:
YY_RULE_SETUP
#line 353 "asn1p_l.l"
#line 354 "asn1p_l.l"
{
asn1p_lval.tv_str = strdup(yytext);
return TOK_typefieldreference;
......@@ -2851,7 +2852,7 @@ YY_RULE_SETUP
YY_BREAK
case 117:
YY_RULE_SETUP
#line 358 "asn1p_l.l"
#line 359 "asn1p_l.l"
{
asn1p_lval.tv_str = strdup(yytext);
return TOK_valuefieldreference;
......@@ -2859,7 +2860,7 @@ YY_RULE_SETUP
YY_BREAK
case 118:
YY_RULE_SETUP
#line 364 "asn1p_l.l"
#line 365 "asn1p_l.l"
{
asn1p_lval.tv_str = strdup(yytext);
return TOK_identifier;
......@@ -2870,7 +2871,7 @@ YY_RULE_SETUP
*/
case 119:
YY_RULE_SETUP
#line 372 "asn1p_l.l"
#line 373 "asn1p_l.l"
{
asn1p_lval.tv_str = strdup(yytext);
return TOK_capitalreference;
......@@ -2883,7 +2884,7 @@ YY_RULE_SETUP
*/
case 120:
YY_RULE_SETUP
#line 382 "asn1p_l.l"
#line 383 "asn1p_l.l"
{
asn1p_lval.tv_str = strdup(yytext);
return TOK_typereference;
......@@ -2891,23 +2892,23 @@ YY_RULE_SETUP
YY_BREAK
case 121:
YY_RULE_SETUP
#line 387 "asn1p_l.l"
#line 388 "asn1p_l.l"
return TOK_PPEQ;
YY_BREAK
case 122:
YY_RULE_SETUP
#line 389 "asn1p_l.l"
#line 390 "asn1p_l.l"
return TOK_ThreeDots;
YY_BREAK
case 123:
YY_RULE_SETUP
#line 390 "asn1p_l.l"
#line 391 "asn1p_l.l"
return TOK_TwoDots;
YY_BREAK
case 124:
YY_RULE_SETUP
#line 394 "asn1p_l.l"
#line 395 "asn1p_l.l"
{
asn1p_lval.tv_str = strdup(yytext);
return TOK_Literal;
......@@ -2915,7 +2916,7 @@ YY_RULE_SETUP
YY_BREAK
case 125:
YY_RULE_SETUP
#line 399 "asn1p_l.l"
#line 400 "asn1p_l.l"
{
asn1p_lval.tv_str = strdup(yytext);
return TOK_Literal;
......@@ -2923,7 +2924,7 @@ YY_RULE_SETUP
YY_BREAK
case 126:
YY_RULE_SETUP
#line 404 "asn1p_l.l"
#line 405 "asn1p_l.l"
{
yy_push_state(with_syntax);
asn1p_lval.tv_str = strdup(yytext);
......@@ -2932,17 +2933,17 @@ YY_RULE_SETUP
YY_BREAK
case 127:
YY_RULE_SETUP
#line 410 "asn1p_l.l"
#line 411 "asn1p_l.l"
return '[';
YY_BREAK
case 128:
YY_RULE_SETUP
#line 411 "asn1p_l.l"
#line 412 "asn1p_l.l"
return ']';
YY_BREAK
case 129:
YY_RULE_SETUP
#line 413 "asn1p_l.l"
#line 414 "asn1p_l.l"
{
asn1p_lval.tv_opaque.buf = strdup(yytext);
asn1p_lval.tv_opaque.len = yyleng;
......@@ -2951,7 +2952,7 @@ YY_RULE_SETUP
YY_BREAK
case 130:
YY_RULE_SETUP
#line 419 "asn1p_l.l"
#line 420 "asn1p_l.l"
{
yy_pop_state();
if(YYSTATE == with_syntax) {
......@@ -2965,21 +2966,21 @@ YY_RULE_SETUP
case 131:
YY_RULE_SETUP
#line 432 "asn1p_l.l"
#line 433 "asn1p_l.l"
/* Ignore whitespace */
YY_BREAK
case 132:
YY_RULE_SETUP
#line 435 "asn1p_l.l"
#line 436 "asn1p_l.l"
{
asn1c_integer_t v1 = -1, v2 = -1;
char *p;
for(p = yytext; *p; p++)
if(*p >= '0' && *p <= '9')
{ v1 = asn1p_atoi(p); break; }
{ v1 = _lex_atoi(p); break; }
while(*p >= '0' && *p <= '9') p++; /* Skip digits */
for(; *p; p++) if(*p >= '0' && *p <= '9')
{ v2 = asn1p_atoi(p); break; }
{ v2 = _lex_atoi(p); break; }
if(v1 < 0 || v1 > 7) {
fprintf(stderr, "%s at line %d: X.680:2003, #37.14 "
"mandates 0..7 range for Tuple's TableColumn\n",
......@@ -2998,22 +2999,22 @@ YY_RULE_SETUP
YY_BREAK
case 133:
YY_RULE_SETUP
#line 460 "asn1p_l.l"
#line 461 "asn1p_l.l"
{
asn1c_integer_t v1 = -1, v2 = -1, v3 = -1, v4 = -1;
char *p;
for(p = yytext; *p; p++)
if(*p >= '0' && *p <= '9')
{ v1 = asn1p_atoi(p); break; }
{ v1 = _lex_atoi(p); break; }
while(*p >= '0' && *p <= '9') p++; /* Skip digits */
for(; *p; p++) if(*p >= '0' && *p <= '9')
{ v2 = asn1p_atoi(p); break; }
{ v2 = _lex_atoi(p); break; }
while(*p >= '0' && *p <= '9') p++;
for(; *p; p++) if(*p >= '0' && *p <= '9')
{ v3 = asn1p_atoi(p); break; }
{ v3 = _lex_atoi(p); break; }
while(*p >= '0' && *p <= '9') p++;
for(; *p; p++) if(*p >= '0' && *p <= '9')
{ v4 = asn1p_atoi(p); break; }
{ v4 = _lex_atoi(p); break; }
if(v1 < 0 || v1 > 127) {
fprintf(stderr, "%s at line %d: X.680:2003, #37.12 "
"mandates 0..127 range for Quadruple's Group\n",
......@@ -3044,12 +3045,12 @@ YY_RULE_SETUP
YY_BREAK
case 134:
YY_RULE_SETUP
#line 504 "asn1p_l.l"
#line 505 "asn1p_l.l"
return yytext[0];
YY_BREAK
case 135:
YY_RULE_SETUP
#line 506 "asn1p_l.l"
#line 507 "asn1p_l.l"
{
if(TYPE_LIFETIME(1994, 0))
fprintf(stderr, "ERROR: ");
......@@ -3063,7 +3064,7 @@ YY_RULE_SETUP
YY_BREAK
case 136:
YY_RULE_SETUP
#line 517 "asn1p_l.l"
#line 518 "asn1p_l.l"
{
fprintf(stderr,
"Unexpected token at line %d: \"%s\"\n",
......@@ -3085,7 +3086,7 @@ case YY_STATE_EOF(quoted):
case YY_STATE_EOF(opaque):
case YY_STATE_EOF(encoding_control):
case YY_STATE_EOF(with_syntax):
#line 530 "asn1p_l.l"
#line 531 "asn1p_l.l"
{
while(YYSTATE != INITIAL)
yy_pop_state();
......@@ -3094,10 +3095,10 @@ case YY_STATE_EOF(with_syntax):
YY_BREAK
case 137:
YY_RULE_SETUP
#line 537 "asn1p_l.l"
#line 538 "asn1p_l.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
#line 3101 "asn1p_l.c"
#line 3102 "asn1p_l.c"
case YY_END_OF_BUFFER:
{
......@@ -3979,7 +3980,7 @@ int main()
return 0;
}
#endif
#line 537 "asn1p_l.l"
#line 538 "asn1p_l.l"
/*
......@@ -3998,30 +3999,14 @@ void asn1p_lexer_hack_push_encoding_control() {
}
static asn1c_integer_t
asn1p_atoi(char *ptr) {
_lex_atoi(const char *ptr) {
asn1c_integer_t value;
errno = 0; /* Clear the error code */
if(sizeof(value) <= sizeof(int)) {
value = strtol(ptr, 0, 10);
} else {
#ifdef HAVE_STRTOIMAX
value = strtoimax(ptr, 0, 10);
#elif HAVE_STRTOLL
value = strtoll(ptr, 0, 10);
#else
value = strtol(ptr, 0, 10);
#endif
}
if(errno == ERANGE) {
if(asn1p_atoi(ptr, &value)) {
fprintf(stderr,
"Value \"%s\" at line %d is too large "
"for this compiler! Please contact the asn1c author.\n",
ptr, yylineno);
errno = ERANGE; /* Restore potentially clobbered errno */
errno = ERANGE;
}
return value;
}
......@@ -23,10 +23,11 @@ void asn1p_lexer_hack_push_encoding_control(void); /* Used in .y */
int asn1p_lexer_pedantic_1990 = 0;
int asn1p_lexer_types_year = 0;
int asn1p_lexer_constructs_year = 0;
static asn1c_integer_t asn1p_atoi(char *ptr); /* errno is either 0 or ERANGE */
int asn1p_as_pointer;
static asn1c_integer_t _lex_atoi(const char *ptr);
/*
* Check that the type is defined in the year of the standard choosen.
*/
......@@ -219,21 +220,21 @@ WSP [\t\r\v\f\n ]
-[1-9][0-9]* {
asn1p_lval.a_int = asn1p_atoi(yytext);
asn1p_lval.a_int = _lex_atoi(yytext);
if(errno == ERANGE)
return -1;
return TOK_number_negative;
}
[1-9][0-9]* {
asn1p_lval.a_int = asn1p_atoi(yytext);
asn1p_lval.a_int = _lex_atoi(yytext);
if(errno == ERANGE)
return -1;
return TOK_number;
}
"0" {
asn1p_lval.a_int = asn1p_atoi(yytext);
asn1p_lval.a_int = _lex_atoi(yytext);
if(errno == ERANGE)
return -1;
return TOK_number;
......@@ -437,10 +438,10 @@ WITH return TOK_WITH;
char *p;
for(p = yytext; *p; p++)
if(*p >= '0' && *p <= '9')
{ v1 = asn1p_atoi(p); break; }
{ v1 = _lex_atoi(p); break; }
while(*p >= '0' && *p <= '9') p++; /* Skip digits */
for(; *p; p++) if(*p >= '0' && *p <= '9')
{ v2 = asn1p_atoi(p); break; }
{ v2 = _lex_atoi(p); break; }
if(v1 < 0 || v1 > 7) {
fprintf(stderr, "%s at line %d: X.680:2003, #37.14 "
"mandates 0..7 range for Tuple's TableColumn\n",
......@@ -462,16 +463,16 @@ WITH return TOK_WITH;
char *p;
for(p = yytext; *p; p++)
if(*p >= '0' && *p <= '9')
{ v1 = asn1p_atoi(p); break; }
{ v1 = _lex_atoi(p); break; }
while(*p >= '0' && *p <= '9') p++; /* Skip digits */
for(; *p; p++) if(*p >= '0' && *p <= '9')
{ v2 = asn1p_atoi(p); break; }
{ v2 = _lex_atoi(p); break; }
while(*p >= '0' && *p <= '9') p++;
for(; *p; p++) if(*p >= '0' && *p <= '9')
{ v3 = asn1p_atoi(p); break; }
{ v3 = _lex_atoi(p); break; }
while(*p >= '0' && *p <= '9') p++;
for(; *p; p++) if(*p >= '0' && *p <= '9')
{ v4 = asn1p_atoi(p); break; }
{ v4 = _lex_atoi(p); break; }
if(v1 < 0 || v1 > 127) {
fprintf(stderr, "%s at line %d: X.680:2003, #37.12 "
"mandates 0..127 range for Quadruple's Group\n",
......@@ -552,30 +553,14 @@ void asn1p_lexer_hack_push_encoding_control() {
}
static asn1c_integer_t
asn1p_atoi(char *ptr) {
_lex_atoi(const char *ptr) {
asn1c_integer_t value;
errno = 0; /* Clear the error code */
if(sizeof(value) <= sizeof(int)) {
value = strtol(ptr, 0, 10);
} else {
#ifdef HAVE_STRTOIMAX
value = strtoimax(ptr, 0, 10);
#elif HAVE_STRTOLL
value = strtoll(ptr, 0, 10);
#else
value = strtol(ptr, 0, 10);
#endif
}
if(errno == ERANGE) {
if(asn1p_atoi(ptr, &value)) {
fprintf(stderr,
"Value \"%s\" at line %d is too large "
"for this compiler! Please contact the asn1c author.\n",
ptr, yylineno);
errno = ERANGE; /* Restore potentially clobbered errno */
errno = ERANGE;
}
return value;
}
......@@ -223,11 +223,11 @@ typedef union {
#define YYFINAL 446
#define YYFINAL 445
#define YYFLAG -32768
#define YYNTBASE 120
#define YYTRANSLATE(x) ((unsigned)(x) <= 358 ? yytranslate[x] : 227)
#define YYTRANSLATE(x) ((unsigned)(x) <= 358 ? yytranslate[x] : 226)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
......@@ -283,141 +283,140 @@ static const short yyprhs[] = { 0,
293, 295, 298, 300, 302, 304, 308, 310, 314, 318,
322, 323, 326, 328, 333, 338, 343, 350, 357, 359,
364, 369, 371, 375, 377, 381, 385, 389, 391, 395,
397, 401, 403, 405, 407, 409, 411, 415, 419, 421,
426, 430, 431, 435, 437, 439, 441, 443, 445, 447,
449, 451, 453, 457, 459, 461, 463, 465, 468, 470,
472, 474, 476, 479, 482, 484, 486, 489, 492, 494,
496, 498, 500, 502, 505, 507, 510, 512, 514, 516,
397, 401, 403, 405, 407, 409, 413, 417, 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, 548, 549, 551, 553, 558,
562, 567, 569, 573, 579, 581, 585, 589, 593, 597,
602, 606, 608, 610, 614, 618, 622, 626, 628, 630,
631, 637, 639, 642, 645, 649, 651, 653, 655, 657,
659, 661, 663, 665, 669, 675, 677, 681, 683, 687,
688, 690, 692, 694, 696, 698, 700, 704, 709, 711,
715, 718, 722, 724, 728, 729, 731, 733, 736, 739,
743, 745, 749, 751, 756, 761, 763, 765, 767, 769,
770, 772, 775, 780, 781, 783, 785, 787, 788, 790,
792, 794, 796, 798, 799, 801
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[] = { 121,
0, 122, 0, 121, 122, 0, 223, 123, 38, 127,
0, 122, 0, 121, 122, 0, 222, 123, 38, 127,
3, 25, 130, 43, 0, 0, 124, 0, 107, 125,
108, 0, 107, 108, 0, 126, 0, 125, 126, 0,
226, 0, 226, 109, 10, 110, 0, 10, 0, 0,
225, 0, 225, 109, 10, 110, 0, 10, 0, 0,
128, 0, 129, 0, 128, 129, 0, 45, 88, 0,
56, 88, 0, 24, 88, 0, 47, 57, 0, 15,
61, 0, 0, 131, 0, 132, 0, 131, 132, 0,
134, 0, 140, 0, 146, 0, 177, 0, 143, 0,
0, 42, 15, 133, 0, 186, 0, 58, 135, 111,
134, 0, 140, 0, 146, 0, 176, 0, 143, 0,
0, 42, 15, 133, 0, 185, 0, 58, 135, 111,
0, 58, 50, 0, 137, 0, 135, 137, 0, 0,
124, 0, 138, 50, 223, 136, 0, 139, 0, 138,
112, 139, 0, 223, 0, 223, 107, 108, 0, 226,
124, 0, 138, 50, 222, 136, 0, 139, 0, 138,
112, 139, 0, 222, 0, 222, 107, 108, 0, 225,
0, 46, 141, 111, 0, 46, 21, 111, 0, 46,
111, 0, 142, 0, 141, 112, 142, 0, 223, 0,
223, 107, 108, 0, 226, 0, 0, 223, 145, 3,
107, 144, 182, 0, 170, 0, 183, 0, 223, 3,
166, 0, 223, 3, 156, 0, 223, 107, 147, 108,
3, 166, 0, 148, 0, 147, 112, 148, 0, 223,
0, 223, 113, 226, 0, 223, 113, 223, 0, 183,
113, 226, 0, 150, 0, 149, 112, 150, 0, 166,
0, 226, 0, 0, 152, 0, 153, 0, 152, 112,
153, 0, 226, 166, 212, 0, 166, 212, 0, 34,
111, 0, 142, 0, 141, 112, 142, 0, 222, 0,
222, 107, 108, 0, 225, 0, 0, 222, 145, 3,
107, 144, 181, 0, 170, 0, 182, 0, 222, 3,
166, 0, 222, 3, 156, 0, 222, 107, 147, 108,
3, 166, 0, 148, 0, 147, 112, 148, 0, 222,
0, 222, 113, 225, 0, 222, 113, 222, 0, 182,
113, 225, 0, 150, 0, 149, 112, 150, 0, 166,
0, 225, 0, 0, 152, 0, 153, 0, 152, 112,
153, 0, 225, 166, 211, 0, 166, 211, 0, 34,
72, 166, 0, 165, 0, 155, 0, 154, 112, 155,
0, 226, 166, 0, 165, 0, 166, 0, 32, 107,
0, 225, 166, 0, 165, 0, 166, 0, 32, 107,
158, 108, 160, 0, 0, 92, 0, 159, 0, 158,
112, 159, 0, 16, 212, 0, 17, 166, 157, 212,
0, 17, 175, 212, 0, 17, 176, 212, 0, 16,
175, 212, 0, 16, 166, 212, 0, 16, 176, 212,
112, 159, 0, 16, 211, 0, 17, 166, 157, 211,
0, 17, 174, 211, 0, 17, 175, 211, 0, 16,
174, 211, 0, 16, 166, 211, 0, 16, 175, 211,
0, 0, 161, 0, 0, 99, 86, 107, 162, 163,
108, 0, 164, 0, 163, 164, 0, 4, 0, 18,
0, 173, 0, 114, 163, 115, 0, 106, 0, 106,
116, 180, 0, 106, 116, 217, 0, 218, 168, 190,
0, 0, 167, 169, 0, 185, 0, 31, 107, 154,
116, 179, 0, 106, 116, 216, 0, 217, 168, 189,
0, 0, 167, 169, 0, 184, 0, 31, 107, 154,
108, 0, 82, 107, 151, 108, 0, 83, 107, 151,
108, 0, 82, 190, 72, 225, 218, 168, 0, 83,
190, 72, 225, 218, 168, 0, 22, 0, 22, 39,
29, 226, 0, 223, 107, 149, 108, 0, 170, 0,
60, 72, 170, 0, 14, 0, 14, 117, 223, 0,
224, 117, 223, 0, 14, 117, 226, 0, 224, 0,
224, 117, 171, 0, 172, 0, 171, 117, 172, 0,
174, 0, 174, 0, 16, 0, 17, 0, 16, 0,
175, 117, 16, 0, 175, 117, 17, 0, 15, 0,
226, 145, 3, 178, 0, 226, 113, 178, 0, 0,
107, 179, 182, 0, 67, 0, 49, 0, 90, 0,
6, 0, 8, 0, 181, 0, 217, 0, 180, 0,
226, 0, 223, 117, 226, 0, 7, 0, 11, 0,
12, 0, 5, 0, 182, 5, 0, 28, 0, 67,
0, 80, 0, 184, 0, 71, 85, 0, 69, 55,
0, 81, 0, 48, 0, 40, 75, 0, 30, 85,
0, 95, 0, 51, 0, 186, 0, 62, 0, 44,
0, 26, 85, 0, 183, 0, 184, 214, 0, 27,
0, 52, 0, 53, 0, 54, 0, 63, 0, 68,
0, 78, 0, 87, 0, 89, 0, 94, 0, 96,
0, 97, 0, 98, 0, 70, 0, 103, 0, 104,
0, 101, 0, 102, 0, 100, 0, 0, 191, 0,
192, 0, 84, 109, 193, 110, 0, 109, 193, 110,
0, 192, 109, 193, 110, 0, 194, 0, 194, 112,
106, 0, 194, 112, 106, 112, 194, 0, 195, 0,
21, 100, 195, 0, 194, 187, 195, 0, 194, 188,
195, 0, 195, 189, 195, 0, 198, 109, 193, 110,
0, 109, 193, 110, 0, 199, 0, 200, 0, 199,
197, 199, 0, 65, 197, 199, 0, 199, 197, 64,
0, 65, 197, 64, 0, 206, 0, 201, 0, 0,
35, 29, 107, 196, 182, 0, 105, 0, 105, 118,
0, 118, 105, 0, 118, 105, 118, 0, 84, 0,
50, 0, 49, 0, 90, 0, 217, 0, 181, 0,
226, 0, 223, 0, 99, 33, 192, 0, 99, 34,
107, 202, 108, 0, 203, 0, 202, 112, 203, 0,
106, 0, 226, 190, 204, 0, 0, 205, 0, 77,
0, 19, 0, 73, 0, 207, 0, 208, 0, 107,
223, 108, 0, 207, 107, 209, 108, 0, 210, 0,
209, 112, 210, 0, 119, 211, 0, 119, 117, 211,
0, 226, 0, 211, 117, 226, 0, 0, 213, 0,
73, 0, 37, 178, 0, 107, 108, 0, 107, 215,
108, 0, 216, 0, 215, 112, 216, 0, 226, 0,
226, 109, 217, 110, 0, 226, 109, 180, 110, 0,
217, 0, 106, 0, 10, 0, 13, 0, 0, 219,
0, 220, 222, 0, 114, 221, 10, 115, 0, 0,
93, 0, 23, 0, 79, 0, 0, 56, 0, 45,
0, 14, 0, 15, 0, 15, 0, 0, 226, 0,
9, 0
108, 0, 82, 189, 72, 224, 217, 168, 0, 83,
189, 72, 224, 217, 168, 0, 22, 0, 22, 39,
29, 225, 0, 222, 107, 149, 108, 0, 170, 0,
60, 72, 170, 0, 14, 0, 14, 117, 222, 0,
223, 117, 222, 0, 14, 117, 225, 0, 223, 0,
223, 117, 171, 0, 172, 0, 171, 117, 172, 0,
173, 0, 16, 0, 17, 0, 16, 0, 174, 117,
16, 0, 174, 117, 17, 0, 15, 0, 225, 145,
3, 177, 0, 225, 113, 177, 0, 0, 107, 178,
181, 0, 67, 0, 49, 0, 90, 0, 6, 0,
8, 0, 180, 0, 216, 0, 179, 0, 225, 0,
222, 117, 225, 0, 7, 0, 11, 0, 12, 0,
5, 0, 181, 5, 0, 28, 0, 67, 0, 80,
0, 183, 0, 71, 85, 0, 69, 55, 0, 81,
0, 48, 0, 40, 75, 0, 30, 85, 0, 95,
0, 51, 0, 185, 0, 62, 0, 44, 0, 26,
85, 0, 182, 0, 183, 213, 0, 27, 0, 52,
0, 53, 0, 54, 0, 63, 0, 68, 0, 78,
0, 87, 0, 89, 0, 94, 0, 96, 0, 97,
0, 98, 0, 70, 0, 103, 0, 104, 0, 101,
0, 102, 0, 100, 0, 0, 190, 0, 191, 0,
84, 109, 192, 110, 0, 109, 192, 110, 0, 191,
109, 192, 110, 0, 193, 0, 193, 112, 106, 0,
193, 112, 106, 112, 193, 0, 194, 0, 21, 100,
194, 0, 193, 186, 194, 0, 193, 187, 194, 0,
194, 188, 194, 0, 197, 109, 192, 110, 0, 109,
192, 110, 0, 198, 0, 199, 0, 198, 196, 198,
0, 65, 196, 198, 0, 198, 196, 64, 0, 65,
196, 64, 0, 205, 0, 200, 0, 0, 35, 29,
107, 195, 181, 0, 105, 0, 105, 118, 0, 118,
105, 0, 118, 105, 118, 0, 84, 0, 50, 0,
49, 0, 90, 0, 216, 0, 180, 0, 225, 0,
222, 0, 99, 33, 191, 0, 99, 34, 107, 201,
108, 0, 202, 0, 201, 112, 202, 0, 106, 0,
225, 189, 203, 0, 0, 204, 0, 77, 0, 19,
0, 73, 0, 206, 0, 207, 0, 107, 222, 108,
0, 206, 107, 208, 108, 0, 209, 0, 208, 112,
209, 0, 119, 210, 0, 119, 117, 210, 0, 225,
0, 210, 117, 225, 0, 0, 212, 0, 73, 0,
37, 177, 0, 107, 108, 0, 107, 214, 108, 0,
215, 0, 214, 112, 215, 0, 225, 0, 225, 109,
216, 110, 0, 225, 109, 179, 110, 0, 216, 0,
106, 0, 10, 0, 13, 0, 0, 218, 0, 219,
221, 0, 114, 220, 10, 115, 0, 0, 93, 0,
23, 0, 79, 0, 0, 56, 0, 45, 0, 14,
0, 15, 0, 15, 0, 0, 225, 0, 9, 0
};
#endif
#if YYDEBUG != 0
static const short yyrline[] = { 0,
324, 330, 336, 352, 377, 379, 382, 386, 391, 398,
406, 411, 415, 424, 426, 434, 438, 446, 450, 453,
456, 460, 480, 482, 490, 494, 526, 530, 539, 546,
559, 566, 568, 580, 592, 603, 608, 614, 620, 622,
625, 636, 642, 648, 655, 661, 669, 673, 676, 683,
689, 695, 702, 708, 717, 719, 728, 736, 750, 760,
776, 785, 795, 805, 810, 817, 824, 834, 840, 846,
850, 873, 875, 877, 883, 889, 897, 903, 910, 915,
921, 927, 933, 936, 942, 952, 954, 957, 965, 972,
985, 996, 1006, 1017, 1027, 1038, 1049, 1051, 1056, 1060,
1065, 1070, 1076, 1081, 1084, 1093, 1098, 1107, 1116, 1127,
1149, 1156, 1175, 1179, 1185, 1191, 1197, 1207, 1217, 1223,
1237, 1261, 1268, 1282, 1291, 1301, 1311, 1321, 1329, 1350,
1359, 1368, 1369, 1371, 1378, 1385, 1391, 1395, 1401, 1421,
1431, 1439, 1439, 1444, 1449, 1454, 1459, 1463, 1467, 1470,
1473, 1478, 1490, 1507, 1512, 1517, 1550, 1560, 1574, 1576,
1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586,
1587, 1593, 1595, 1596, 1599, 1606, 1618, 1620, 1624, 1628,
1629, 1630, 1631, 1632, 1636, 1637, 1638, 1639, 1643, 1644,
1651, 1651, 1652, 1652, 1653, 1655, 1657, 1662, 1666, 1675,
1679, 1684, 1688, 1694, 1704, 1708, 1711, 1714, 1717, 1722,
1731, 1739, 1745, 1751, 1758, 1766, 1774, 1783, 1786, 1789,
1790, 1800, 1802, 1803, 1804, 1807, 1811, 1816, 1822, 1827,
1830, 1833, 1846, 1860, 1864, 1869, 1873, 1878, 1885, 1898,
1900, 1903, 1907, 1910, 1915, 1919, 1927, 1942, 1948, 1955,
1968, 1980, 1995, 1999, 2016, 2021, 2024, 2029, 2051, 2056,
2061, 2067, 2073, 2081, 2089, 2097, 2104, 2114, 2119, 2149,
2151, 2154, 2161, 2167, 2169, 2170, 2171, 2174, 2176, 2177,
2180, 2185, 2192, 2199, 2201, 2206
323, 329, 335, 351, 376, 378, 381, 385, 390, 397,
405, 410, 414, 423, 425, 433, 437, 445, 449, 452,
455, 459, 479, 481, 489, 493, 525, 529, 538, 545,
558, 565, 567, 579, 591, 602, 607, 613, 619, 621,
624, 635, 641, 647, 654, 660, 668, 672, 675, 682,
688, 694, 701, 707, 716, 718, 727, 735, 749, 759,
775, 784, 794, 804, 809, 816, 823, 833, 839, 845,
849, 872, 874, 876, 882, 888, 896, 902, 909, 914,
920, 926, 932, 935, 941, 951, 953, 956, 964, 971,
984, 995, 1005, 1016, 1026, 1037, 1048, 1050, 1055, 1059,
1064, 1069, 1075, 1080, 1083, 1087, 1092, 1101, 1110, 1121,
1143, 1150, 1169, 1173, 1179, 1185, 1191, 1201, 1211, 1217,
1231, 1255, 1262, 1276, 1285, 1295, 1305, 1315, 1323, 1344,
1353, 1362, 1364, 1371, 1378, 1384, 1388, 1394, 1414, 1424,
1432, 1432, 1437, 1442, 1447, 1452, 1456, 1460, 1463, 1466,
1471, 1483, 1500, 1505, 1510, 1543, 1553, 1567, 1569, 1570,
1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580,
1586, 1588, 1589, 1592, 1599, 1611, 1613, 1617, 1621, 1622,
1623, 1624, 1625, 1629, 1630, 1631, 1632, 1636, 1637, 1644,
1644, 1645, 1645, 1646, 1648, 1650, 1655, 1659, 1668, 1672,
1677, 1681, 1687, 1697, 1701, 1704, 1707, 1710, 1715, 1724,
1732, 1738, 1744, 1751, 1759, 1767, 1776, 1779, 1782, 1783,
1793, 1795, 1796, 1797, 1800, 1804, 1809, 1815, 1820, 1823,
1826, 1839, 1853, 1857, 1862, 1866, 1871, 1878, 1891, 1893,
1896, 1900, 1903, 1908, 1912, 1920, 1935, 1941, 1948, 1961,
1973, 1988, 1992, 2009, 2014, 2017, 2022, 2044, 2049, 2054,
2060, 2066, 2074, 2082, 2090, 2097, 2107, 2112, 2142, 2144,
2147, 2154, 2160, 2162, 2163, 2164, 2167, 2169, 2170, 2173,
2178, 2185, 2192, 2194, 2199
};
#endif
......@@ -457,7 +456,7 @@ static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ",
"FieldSpec","ClassField","optWithSyntax","WithSyntax","@3","WithSyntaxList",
"WithSyntaxToken","ExtensionAndException","Type","NSTD_IndirectMarker","TypeDeclaration",
"TypeDeclarationSet","ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
"ClassFieldIdentifier","ClassFieldName","FieldName","DefinedObjectClass","ValueDefinition",
"PrimitiveFieldReference","FieldName","DefinedObjectClass","ValueDefinition",
"Value","@4","DefinedValue","RestrictedCharacterStringValue","Opaque","BasicTypeId",
"BasicTypeId_UniverationCompatible","BasicType","BasicString","Union","Intersection",
"Except","optConstraints","Constraints","SetOfConstraints","ElementSetSpecs",
......@@ -485,22 +484,22 @@ static const short yyr1[] = { 0,
163, 163, 164, 164, 164, 164, 165, 165, 165, 166,
167, 168, 169, 169, 169, 169, 169, 169, 169, 169,
169, 169, 169, 170, 170, 170, 170, 170, 170, 171,
171, 172, 173, 174, 174, 175, 175, 175, 176, 177,
178, 179, 178, 178, 178, 178, 178, 178, 178, 178,
178, 180, 180, 181, 181, 181, 182, 182, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 184, 184, 184, 185, 185, 186, 186, 186, 186,
186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
187, 187, 188, 188, 189, 190, 190, 191, 191, 192,
192, 193, 193, 193, 194, 194, 194, 194, 194, 195,
195, 195, 195, 195, 195, 195, 195, 195, 195, 196,
195, 197, 197, 197, 197, 198, 198, 199, 199, 199,
199, 199, 200, 201, 201, 202, 202, 203, 203, 204,
204, 205, 205, 205, 206, 206, 207, 208, 209, 209,
210, 210, 211, 211, 212, 212, 213, 213, 214, 214,
215, 215, 216, 216, 216, 216, 216, 217, 217, 218,
218, 219, 220, 221, 221, 221, 221, 222, 222, 222,
223, 223, 224, 225, 225, 226
171, 172, 173, 173, 174, 174, 174, 175, 176, 177,
178, 177, 177, 177, 177, 177, 177, 177, 177, 177,
179, 179, 180, 180, 180, 181, 181, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
183, 183, 183, 184, 184, 185, 185, 185, 185, 185,
185, 185, 185, 185, 185, 185, 185, 185, 185, 186,
186, 187, 187, 188, 189, 189, 190, 190, 191, 191,
192, 192, 192, 193, 193, 193, 193, 193, 194, 194,
194, 194, 194, 194, 194, 194, 194, 194, 195, 194,
196, 196, 196, 196, 197, 197, 198, 198, 198, 198,
198, 199, 200, 200, 201, 201, 202, 202, 203, 203,
204, 204, 204, 205, 205, 206, 207, 208, 208, 209,
209, 210, 210, 211, 211, 212, 212, 213, 213, 214,
214, 215, 215, 215, 215, 215, 216, 216, 217, 217,
218, 219, 220, 220, 220, 220, 221, 221, 221, 222,
222, 223, 224, 224, 225
};
static const short yyr2[] = { 0,
......@@ -517,146 +516,146 @@ static const short yyr2[] = { 0,
1, 2, 1, 1, 1, 3, 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, 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,
3, 1, 1, 1, 1, 3, 3, 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, 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,
281, 282, 1, 2, 5, 3, 0, 0, 6, 286,
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, 177, 0, 0,
178, 179, 180, 0, 181, 182, 190, 183, 184, 185,
186, 187, 188, 189, 0, 24, 25, 27, 28, 31,
18, 21, 19, 0, 17, 12, 23, 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, 270, 124, 283, 0, 159, 0, 0, 173, 166,
170, 172, 160, 0, 0, 161, 165, 169, 0, 0,
57, 58, 162, 171, 128, 0, 33, 48, 47, 0,
0, 35, 38, 0, 0, 0, 0, 274, 60, 59,
111, 271, 278, 0, 174, 168, 167, 164, 163, 0,
26, 269, 124, 282, 0, 158, 0, 0, 172, 165,
169, 171, 159, 0, 0, 160, 164, 168, 0, 0,
57, 58, 161, 170, 128, 0, 33, 48, 47, 0,
0, 35, 38, 0, 0, 0, 0, 273, 60, 59,
111, 270, 277, 0, 173, 167, 166, 163, 162, 0,
62, 0, 64, 0, 0, 0, 51, 53, 39, 43,
45, 0, 276, 277, 275, 0, 0, 196, 280, 279,
272, 125, 127, 0, 0, 0, 0, 55, 134, 135,
129, 130, 132, 126, 147, 154, 148, 268, 155, 156,
269, 145, 144, 146, 142, 140, 151, 149, 150, 0,
152, 40, 41, 270, 270, 0, 88, 0, 124, 283,
119, 0, 0, 196, 196, 112, 122, 175, 162, 113,
0, 0, 0, 110, 197, 198, 270, 63, 67, 66,
65, 0, 0, 0, 0, 0, 139, 136, 0, 257,
255, 255, 255, 90, 256, 86, 255, 255, 97, 0,
273, 0, 270, 0, 270, 0, 270, 0, 0, 176,
270, 0, 0, 0, 228, 227, 0, 226, 229, 0,
0, 0, 231, 0, 202, 205, 0, 212, 213, 219,
218, 245, 246, 230, 233, 232, 0, 61, 157, 56,
131, 143, 153, 141, 258, 95, 0, 94, 96, 87,
255, 92, 93, 0, 85, 98, 89, 0, 107, 0,
80, 83, 84, 270, 123, 0, 0, 73, 74, 79,
255, 270, 284, 0, 284, 267, 259, 0, 261, 266,
263, 0, 68, 70, 71, 0, 0, 0, 222, 0,
0, 0, 0, 0, 0, 200, 193, 194, 191, 192,
0, 0, 0, 195, 0, 0, 0, 0, 0, 158,
137, 138, 91, 0, 120, 0, 114, 270, 82, 270,
115, 270, 77, 255, 270, 285, 116, 270, 260, 0,
0, 121, 270, 199, 206, 220, 223, 224, 217, 215,
234, 0, 247, 211, 203, 207, 208, 209, 0, 216,
214, 0, 0, 249, 201, 99, 108, 109, 152, 81,
78, 75, 76, 111, 111, 262, 0, 0, 69, 0,
225, 238, 0, 236, 196, 0, 210, 0, 251, 253,
248, 0, 0, 117, 118, 265, 264, 221, 235, 0,
240, 204, 252, 0, 250, 103, 104, 0, 0, 101,
105, 133, 237, 243, 244, 242, 239, 241, 254, 0,
100, 102, 106, 0, 0, 0
45, 0, 275, 276, 274, 0, 0, 195, 279, 278,
271, 125, 127, 0, 0, 0, 0, 55, 133, 134,
129, 130, 132, 126, 146, 153, 147, 267, 154, 155,
268, 144, 143, 145, 141, 139, 150, 148, 149, 0,
151, 40, 41, 269, 269, 0, 88, 0, 124, 282,
119, 0, 0, 195, 195, 112, 122, 174, 161, 113,
0, 0, 0, 110, 196, 197, 269, 63, 67, 66,
65, 0, 0, 0, 0, 0, 138, 135, 0, 256,
254, 254, 254, 90, 255, 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,
131, 142, 152, 140, 257, 95, 0, 94, 96, 87,
254, 92, 93, 0, 85, 98, 89, 0, 107, 0,
80, 83, 84, 269, 123, 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,
136, 137, 91, 0, 120, 0, 114, 269, 82, 269,
115, 269, 77, 254, 269, 284, 116, 269, 259, 0,
0, 121, 269, 198, 205, 219, 222, 223, 216, 214,
233, 0, 246, 210, 202, 206, 207, 208, 0, 215,
213, 0, 0, 248, 200, 99, 108, 109, 151, 81,
78, 75, 76, 111, 111, 261, 0, 0, 69, 0,
224, 237, 0, 235, 195, 0, 209, 0, 250, 252,
247, 0, 0, 117, 118, 264, 263, 220, 234, 0,
239, 203, 251, 0, 249, 103, 104, 0, 0, 101,
105, 236, 242, 243, 241, 238, 240, 253, 0, 100,
102, 106, 0, 0, 0
};
static const short yydefgoto[] = { 444,
static const short yydefgoto[] = { 443,
3, 4, 8, 9, 13, 14, 25, 26, 27, 55,
56, 57, 107, 58, 74, 183, 75, 76, 77, 59,
69, 70, 60, 212, 100, 61, 130, 131, 312, 313,
297, 298, 299, 290, 291, 119, 281, 186, 187, 285,
286, 413, 429, 430, 300, 301, 147, 148, 196, 101,
161, 162, 431, 432, 222, 223, 62, 176, 214, 177,
253, 270, 102, 103, 200, 104, 332, 333, 335, 204,
205, 206, 254, 255, 256, 400, 321, 257, 258, 259,
260, 403, 404, 437, 438, 261, 262, 263, 383, 384,
409, 224, 225, 240, 308, 309, 264, 121, 122, 123,
146, 151, 265, 105, 355, 266
161, 162, 431, 222, 223, 62, 176, 214, 177, 253,
270, 102, 103, 200, 104, 332, 333, 335, 204, 205,
206, 254, 255, 256, 400, 321, 257, 258, 259, 260,
403, 404, 436, 437, 261, 262, 263, 383, 384, 409,
224, 225, 240, 308, 309, 264, 121, 122, 123, 146,
151, 265, 105, 355, 266
};
static const short yypact[] = { 223,
-32768,-32768, 223,-32768, -76,-32768, 30, 24,-32768,-32768,
-32768,-32768, 34,-32768, -61, 247,-32768,-32768, 61, 27,
52, 71, 55, 77, 99, 247,-32768, 76,-32768,-32768,
-32768,-32768,-32768, 181,-32768,-32768, 428,-32768, 187, 49,
71, 84, 145, 118, 210, 247,-32768, 109,-32768,-32768,
-32768,-32768,-32768, 199,-32768,-32768, 428,-32768, 212, 49,
-32768,-32768,-32768, 154,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768, 176, 428,-32768,-32768,-32768,-32768,
-32768,-32768,-32768, 352, 581,-32768, 102,-32768, 199,-32768,
117,-32768,-32768, 59,-32768, -26,-32768, 120,-32768,-32768,
-32768, -15, 112,-32768, 179,-32768, 193, 165,-32768,-32768,
-32768,-32768,-32768, 211, 208,-32768,-32768,-32768, 657, 266,
-32768,-32768,-32768,-32768, 169, 299,-32768,-32768,-32768, 286,
200,-32768,-32768, 223, 286, 206, 210, 3,-32768,-32768,
-32768,-32768,-32768,-32768, 186, 428,-32768,-32768,-32768,-32768,
-32768,-32768,-32768, 352, 581,-32768, 129,-32768, 174,-32768,
157,-32768,-32768, 59,-32768, -26,-32768, 159,-32768,-32768,
-32768, -15, 152,-32768, 193,-32768, 204, 218,-32768,-32768,
-32768,-32768,-32768, 262, 217,-32768,-32768,-32768, 657, 337,
-32768,-32768,-32768,-32768, 220, 343,-32768,-32768,-32768, 286,
244,-32768,-32768, 223, 286, 249, 256, 3,-32768,-32768,
-32768,-32768, 45, 286,-32768,-32768,-32768,-32768,-32768, -23,
-32768, 224, 227, 239, 319, 184,-32768,-32768, -76,-32768,
-32768, 312,-32768,-32768,-32768, 340, 505, 57,-32768,-32768,
-32768,-32768,-32768, 354, 657, 355, 286,-32768,-32768,-32768,
246,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 259,
264,-32768,-32768, 168, 37, 35,-32768, 268, 65, 274,
-32768, 251, 255, 263, 294, 184,-32768,-32768, -76,-32768,
-32768, 297,-32768,-32768,-32768, 359, 505, 57,-32768,-32768,
-32768,-32768,-32768, 368, 657, 363, 286,-32768,-32768,-32768,
259,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 260,
268,-32768,-32768, 168, 37, 32,-32768, 258, 48, 276,
345, 278, 314, 116, 170,-32768,-32768,-32768, 280,-32768,
281, 282, 166,-32768,-32768, 285, 275,-32768,-32768,-32768,
-32768, 385, 326, 385, 355, 184,-32768,-32768, 184,-32768,
98, 94, 98,-32768,-32768, 303, 94, 98, 298, 312,
-32768, 369, 7, 334, 16, 330, 16, 335, 56,-32768,
14, 166, 310, 380,-32768,-32768, -25,-32768,-32768, 318,
-32768, 385, 312, 385, 363, 184,-32768,-32768, 184,-32768,
98, 94, 98,-32768,-32768, 303, 94, 98, 298, 297,
-32768, 369, 7, 328, 16, 330, 16, 335, 56,-32768,
14, 166, 310, 380,-32768,-32768, -25,-32768,-32768, 315,
223, 166,-32768, 301, 203, 324, 316, -25,-32768,-32768,
-32768, 305,-32768,-32768,-32768,-32768, 166,-32768,-32768, 421,
-32768, 421,-32768,-32768,-32768,-32768, 344,-32768,-32768,-32768,
98,-32768,-32768, 341,-32768,-32768,-32768, 355, 313, 131,
-32768, 421,-32768,-32768,-32768,-32768, 334,-32768,-32768,-32768,
98,-32768,-32768, 341,-32768,-32768,-32768, 363, 313, 35,
-32768,-32768,-32768, 275,-32768, 356, 323, 322,-32768,-32768,
98, 275, 355, 327, 355,-32768,-32768, 141,-32768,-32768,
329, 155,-32768,-32768,-32768, 342, 309, 333, 336, 331,
235, 347, 337, 343, 348,-32768,-32768,-32768,-32768,-32768,
339, 309, 309,-32768, 309, 166, 248, 338, 350,-32768,
-32768,-32768,-32768, 346,-32768, 317,-32768, 7,-32768, 275,
98, 275, 363, 327, 363,-32768,-32768, 74,-32768,-32768,
329, 131,-32768,-32768,-32768, 326, 309, 333, 336, 339,
235, 342, 338, 344, 346,-32768,-32768,-32768,-32768,-32768,
347, 309, 309,-32768, 309, 166, 248, 348, 350,-32768,
-32768,-32768,-32768, 351,-32768, 317,-32768, 7,-32768, 275,
-32768, 12,-32768, 98, 275,-32768,-32768, 275,-32768, 68,
317,-32768, 14,-32768,-32768,-32768,-32768, 349,-32768,-32768,
285, 0,-32768,-32768, 351,-32768,-32768,-32768, 358,-32768,
-32768, 6, 177,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768, 359, 361,-32768, 385,
-32768,-32768, 201,-32768, 57, 166,-32768, 355, 360,-32768,
-32768, 338, 43,-32768,-32768,-32768,-32768, 421,-32768, 0,
10, 267, 360, 355,-32768,-32768,-32768, 43, 38,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 18,
-32768,-32768,-32768, 461, 462,-32768
317,-32768, 14,-32768,-32768,-32768,-32768, 353,-32768,-32768,
285, 0,-32768,-32768, 349,-32768,-32768,-32768, 354,-32768,
-32768, 6, 141,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768, 355, 358,-32768, 385,
-32768,-32768, 155,-32768, 57, 166,-32768, 363, 340,-32768,
-32768, 348, 43,-32768,-32768,-32768,-32768, 421,-32768, 0,
10, 232, 340, 363,-32768,-32768,-32768, 43, 38,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 18,-32768,
-32768,-32768, 462, 463,-32768
};
static const short yypgoto[] = {-32768,
-32768, 463,-32768, 325,-32768, 452,-32768,-32768, 446,-32768,
-32768, 417,-32768,-32768,-32768,-32768, 401,-32768, 363,-32768,
-32768, 366,-32768,-32768, 414,-32768,-32768, 328,-32768, 121,
250,-32768, 133,-32768, 140,-32768,-32768,-32768, 260,-32768,
-32768,-32768, 64, -285, -228, -80,-32768, -22,-32768, -137,
-32768, 276,-32768, -115, 308, 315,-32768, -31,-32768, -207,
-109, -211, -71, 357,-32768, -5,-32768,-32768,-32768, -187,
-32768, 172, -133, 89, -45,-32768, 241,-32768, -242,-32768,
-32768,-32768, 81,-32768,-32768,-32768,-32768,-32768,-32768, 85,
95, -209,-32768,-32768,-32768, 142, -125, -148,-32768,-32768,
-32768,-32768, 1,-32768, 202, -7
-32768, 466,-32768, 360,-32768, 453,-32768,-32768, 446,-32768,
-32768, 417,-32768,-32768,-32768,-32768, 401,-32768, 361,-32768,
-32768, 367,-32768,-32768, 413,-32768,-32768, 332,-32768, 120,
242,-32768, 132,-32768, 137,-32768,-32768,-32768, 264,-32768,
-32768,-32768, 60, -327, -228, -80,-32768, -34,-32768, -137,
-32768, 277, -115, 304, 307,-32768, -31,-32768, -207, -109,
-211, -71, 357,-32768, -5,-32768,-32768,-32768, -187,-32768,
171, -133, 89, -45,-32768, 239,-32768, -242,-32768,-32768,
-32768, 80,-32768,-32768,-32768,-32768,-32768,-32768, 90, 93,
-209,-32768,-32768,-32768, 143, -125, -148,-32768,-32768,-32768,
-32768, 1,-32768, 200, -7
};
......@@ -666,55 +665,55 @@ static const short yypgoto[] = {-32768,
static const short yytable[] = { 15,
5, 120, 272, 5, 292, 15, 236, 238, 10, 197,
179, 276, 278, 279, 10, 10, 117, 282, 283, 163,
10, 426, 10, 114, 10, 143, 178, 132, 434, 65,
10, 426, 10, 114, 10, 143, 178, 132, 433, 65,
7, 63, 72, 159, 160, 427, 79, 64, 10, 11,
71, 426, 10, 11, 78, 296, 426, 19, 65, 296,
63, 217, 218, 159, 160, 427, 64, 10, 159, 160,
427, 16, 1, 2, 10, 168, 79, 10, 171, 67,
28, 343, 1, 2, 78, 198, 10, 168, 370, 319,
171, 144, 435, 132, 154, 115, 436, 29, 155, 149,
171, 144, 434, 132, 154, 115, 435, 29, 155, 149,
179, 353, 320, 179, 381, 145, 295, 163, 118, 133,
150, 34, 72, 221, 226, 402, 178, 79, 316, 178,
71, 32, 289, 310, 139, 78, 153, 289, 325, 292,
150, 441, 72, 221, 226, 402, 178, 79, 316, 178,
71, 441, 289, 310, 139, 78, 153, 289, 325, 292,
118, 289, 408, -72, 152, 118, 268, 118, 181, 118,
219, 428, 443, 339, 219, 164, 180, 12, 387, 30,
202, 17, 229, 442, 393, 441, 230, 201, 209, 211,
118, 428, 293, 397, 442, 133, 428, 210, 31, 68,
314, 306, 10, 307, 33, 203, 220, 1, 2, 112,
220, -281, 166, 306, 10, 168, 169, 170, 171, 1,
2, 124, 217, 218, 274, 36, 243, 275, 418, 165,
219, 428, 442, 339, 219, 164, 180, 12, 387, 229,
202, 17, 347, 230, 393, 440, 348, 201, 209, 211,
118, 428, 293, 397, -280, 133, 428, 210, 30, 68,
314, 306, 10, 307, 124, 203, 220, 1, 2, 112,
220, 31, 166, 306, 10, 168, 169, 170, 171, 1,
2, 359, 217, 218, 274, 360, 243, 275, 418, 165,
166, 167, 10, 168, 169, 170, 171, 1, 2, 202,
244, 66, 379, 73, 219, 37, 394, 273, 181, 395,
277, 181, 108, 349, 245, 246, 180, 421, 80, 180,
388, 354, 235, 111, 203, 294, 116, 302, 124, 302,
247, 311, 172, 315, 310, 398, 1, 2, 347, 127,
220, 166, 348, 10, 168, 169, 170, 171, 359, 248,
173, 324, 360, 202, 166, 249, 10, 168, 169, 170,
171, 20, 362, 125, 250, 128, 363, 293, 134, 391,
21, 365, 251, 174, 252, -255, 237, 126, 203, -255,
345, 118, 314, 245, 411, 135, 376, 377, 412, 378,
175, 22, 129, 23, 10, 356, 245, 356, 369, 1,
2, 136, 24, 327, 328, 329, 330, 138, 419, 109,
110, 380, 420, 141, 331, 166, 142, 10, 168, 169,
170, 171, 1, 2, 249, 10, 168, 184, 185, 171,
1, 2, 1, 2, 159, 160, 156, 249, 389, 157,
294, 159, 160, 244, 302, 158, 180, 83, 84, 188,
322, 323, 311, 389, 82, 315, 207, 245, 246, 341,
342, 180, 213, 10, 405, 83, 84, 327, 328, 329,
330, 414, 415, 247, 410, 215, 216, 85, 38, 86,
-282, 87, 231, 232, 233, 234, 239, 241, 118, 269,
244, 32, 379, 73, 219, 33, 394, 273, 181, 395,
277, 181, 34, 349, 245, 246, 180, 421, 36, 180,
388, 354, 235, 37, 203, 294, 66, 302, 80, 302,
247, 311, 172, 315, 310, 398, 1, 2, 362, 108,
220, 166, 363, 10, 168, 169, 170, 171, 411, 248,
173, 324, 412, 202, 166, 249, 10, 168, 169, 170,
171, 20, 419, 111, 250, 116, 420, 293, 124, 391,
21, 365, 251, 174, 252, -254, 237, 125, 203, -254,
345, 118, 314, 245, 109, 110, 376, 377, 126, 378,
175, 22, 127, 23, 10, 356, 245, 356, 369, 1,
2, 129, 24, 327, 328, 329, 330, 1, 2, 159,
160, 380, 184, 185, 331, 166, 128, 10, 168, 169,
170, 171, 1, 2, 249, 10, 168, 159, 160, 171,
1, 2, 327, 328, 329, 330, 135, 249, 389, 134,
294, 83, 84, 244, 302, 136, 180, 322, 323, 341,
342, 138, 311, 389, 82, 315, 141, 245, 246, 414,
415, 180, 142, 156, 405, 83, 84, 157, 188, 158,
207, 10, 231, 247, 410, 213, 215, 85, 38, 86,
216, 87, -281, 232, 233, 234, 239, 241, 118, 269,
242, 88, 248, 267, 280, 89, 284, 288, 249, 90,
410, 303, 91, 41, 42, 43, 305, 250, 318, 317,
326, 338, 405, 92, 45, 251, 439, 252, 93, 46,
326, 338, 405, 92, 45, 251, 438, 252, 93, 46,
94, 47, 95, 334, 336, 340, 344, 350, 346, 48,
351, 96, 97, 352, 357, 368, 10, 361, 49, 366,
50, 1, 2, 372, 375, 51, 98, 52, 53, 54,
373, 364, 386, 367, 38, 203, 382, 374, 99, 385,
445, 446, 406, 182, 18, 6, 401, 407, 416, 39,
417, 35, 81, 40, 113, 137, 424, 140, 106, 41,
42, 43, 208, 399, 392, 44, 304, 390, 271, 287,
45, 440, 227, 371, 422, 46, 425, 47, 337, 228,
433, 396, 423, 199, 0, 48, 358, 0, 0, 0,
351, 96, 97, 352, 357, 364, 10, 361, 49, 366,
50, 1, 2, 368, 372, 51, 98, 52, 53, 54,
203, 373, 375, 367, 38, 374, 424, 386, 99, 385,
406, 444, 445, 407, 416, 18, 382, 417, 6, 39,
401, 35, 81, 40, 113, 140, 137, 106, 304, 41,
42, 43, 399, 392, 390, 44, 208, 439, 227, 271,
45, 228, 371, 287, 422, 46, 337, 47, 182, 432,
423, 425, 396, 199, 358, 48, 0, 0, 0, 0,
0, 0, 0, 0, 49, 0, 50, 0, 189, 190,
0, 51, 0, 52, 53, 54, 191, 0, 0, 0,
85, 38, 86, 0, 87, 192, 0, 0, 0, 0,
......@@ -753,47 +752,47 @@ static const short yycheck[] = { 7,
10, 281, 14, 15, 74, 147, 9, 10, 321, 105,
13, 79, 73, 155, 108, 112, 77, 61, 112, 45,
216, 301, 118, 219, 337, 93, 234, 213, 114, 99,
56, 3, 110, 184, 185, 106, 216, 115, 242, 219,
110, 57, 106, 239, 114, 115, 124, 106, 252, 348,
56, 429, 110, 184, 185, 106, 216, 115, 242, 219,
110, 439, 106, 239, 114, 115, 124, 106, 252, 348,
114, 106, 117, 108, 124, 114, 207, 114, 136, 114,
37, 114, 115, 267, 37, 135, 136, 108, 346, 88,
84, 108, 108, 429, 354, 108, 112, 147, 156, 157,
114, 114, 233, 361, 440, 155, 114, 157, 88, 111,
241, 106, 9, 108, 88, 109, 73, 14, 15, 111,
73, 107, 7, 106, 9, 10, 11, 12, 13, 14,
15, 117, 15, 16, 216, 110, 21, 219, 400, 6,
37, 114, 115, 267, 37, 135, 136, 108, 346, 108,
84, 108, 108, 112, 354, 108, 112, 147, 156, 157,
114, 114, 233, 361, 107, 155, 114, 157, 88, 111,
241, 106, 9, 108, 117, 109, 73, 14, 15, 111,
73, 88, 7, 106, 9, 10, 11, 12, 13, 14,
15, 108, 15, 16, 216, 112, 21, 219, 400, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 84,
35, 15, 336, 50, 37, 25, 355, 215, 216, 358,
117, 219, 111, 294, 49, 50, 216, 405, 43, 219,
346, 302, 107, 107, 109, 233, 107, 235, 117, 237,
65, 239, 49, 241, 360, 361, 14, 15, 108, 75,
35, 57, 336, 50, 37, 88, 355, 215, 216, 358,
117, 219, 3, 294, 49, 50, 216, 405, 110, 219,
346, 302, 107, 25, 109, 233, 15, 235, 43, 237,
65, 239, 49, 241, 360, 361, 14, 15, 108, 111,
73, 7, 112, 9, 10, 11, 12, 13, 108, 84,
67, 251, 112, 84, 7, 90, 9, 10, 11, 12,
13, 15, 108, 85, 99, 55, 112, 348, 3, 350,
13, 15, 108, 107, 99, 107, 112, 348, 117, 350,
24, 317, 107, 90, 109, 108, 107, 85, 109, 112,
288, 114, 363, 49, 108, 117, 332, 333, 112, 335,
107, 45, 85, 47, 9, 303, 49, 305, 64, 14,
15, 3, 56, 101, 102, 103, 104, 108, 108, 111,
112, 64, 112, 108, 112, 7, 107, 9, 10, 11,
288, 114, 363, 49, 111, 112, 332, 333, 85, 335,
107, 45, 75, 47, 9, 303, 49, 305, 64, 14,
15, 85, 56, 101, 102, 103, 104, 14, 15, 16,
17, 64, 16, 17, 112, 7, 55, 9, 10, 11,
12, 13, 14, 15, 90, 9, 10, 16, 17, 13,
14, 15, 14, 15, 16, 17, 113, 90, 346, 113,
348, 16, 17, 35, 352, 107, 346, 14, 15, 10,
33, 34, 360, 361, 3, 363, 3, 49, 50, 16,
17, 361, 117, 9, 372, 14, 15, 101, 102, 103,
104, 394, 395, 65, 382, 117, 113, 26, 27, 28,
107, 30, 115, 39, 107, 72, 107, 107, 114, 5,
14, 15, 101, 102, 103, 104, 117, 90, 346, 3,
348, 14, 15, 35, 352, 3, 346, 33, 34, 16,
17, 108, 360, 361, 3, 363, 108, 49, 50, 394,
395, 361, 107, 113, 372, 14, 15, 113, 10, 107,
3, 9, 115, 65, 382, 117, 117, 26, 27, 28,
113, 30, 107, 39, 107, 72, 107, 107, 114, 5,
109, 40, 84, 109, 92, 44, 99, 29, 90, 48,
408, 72, 51, 52, 53, 54, 72, 99, 29, 100,
110, 107, 420, 62, 63, 107, 424, 109, 67, 68,
69, 70, 71, 100, 109, 5, 86, 72, 116, 78,
108, 80, 81, 112, 108, 105, 9, 109, 87, 107,
89, 14, 15, 107, 106, 94, 95, 96, 97, 98,
108, 110, 107, 118, 27, 109, 119, 110, 107, 110,
0, 0, 112, 139, 13, 3, 118, 110, 110, 42,
110, 26, 56, 46, 74, 110, 117, 115, 65, 52,
53, 54, 155, 363, 352, 58, 237, 348, 213, 230,
63, 428, 185, 322, 406, 68, 412, 70, 258, 185,
420, 360, 408, 147, -1, 78, 305, -1, -1, -1,
108, 80, 81, 112, 108, 110, 9, 109, 87, 107,
89, 14, 15, 105, 107, 94, 95, 96, 97, 98,
109, 108, 106, 118, 27, 110, 117, 107, 107, 110,
112, 0, 0, 110, 110, 13, 119, 110, 3, 42,
118, 26, 56, 46, 74, 115, 110, 65, 237, 52,
53, 54, 363, 352, 348, 58, 155, 428, 185, 213,
63, 185, 322, 230, 406, 68, 258, 70, 139, 420,
408, 412, 360, 147, 305, 78, -1, -1, -1, -1,
-1, -1, -1, -1, 87, -1, 89, -1, 14, 15,
-1, 94, -1, 96, 97, 98, 22, -1, -1, -1,
26, 27, 28, -1, 30, 31, -1, -1, -1, -1,
......@@ -1364,13 +1363,13 @@ yyreduce:
switch (yyn) {
case 1:
#line 325 "asn1p_y.y"
#line 324 "asn1p_y.y"
{
*(void **)param = yyvsp[0].a_grammar;
;
break;}
case 2:
#line 331 "asn1p_y.y"
#line 330 "asn1p_y.y"
{
yyval.a_grammar = asn1p_new();
checkmem(yyval.a_grammar);
......@@ -1378,14 +1377,14 @@ case 2:
;
break;}
case 3:
#line 336 "asn1p_y.y"
#line 335 "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 357 "asn1p_y.y"
#line 356 "asn1p_y.y"
{
if(yyvsp[-1].a_module) {
......@@ -1402,27 +1401,27 @@ case 4:
;
break;}
case 5:
#line 378 "asn1p_y.y"
#line 377 "asn1p_y.y"
{ yyval.a_oid = 0; ;
break;}
case 6:
#line 379 "asn1p_y.y"
#line 378 "asn1p_y.y"
{ yyval.a_oid = yyvsp[0].a_oid; ;
break;}
case 7:
#line 383 "asn1p_y.y"
#line 382 "asn1p_y.y"
{
yyval.a_oid = yyvsp[-1].a_oid;
;
break;}
case 8:
#line 386 "asn1p_y.y"
#line 385 "asn1p_y.y"
{
yyval.a_oid = 0;
;
break;}
case 9:
#line 392 "asn1p_y.y"
#line 391 "asn1p_y.y"
{
yyval.a_oid = asn1p_oid_new();
asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
......@@ -1431,7 +1430,7 @@ case 9:
;
break;}
case 10:
#line 398 "asn1p_y.y"
#line 397 "asn1p_y.y"
{
yyval.a_oid = yyvsp[-1].a_oid;
asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
......@@ -1440,74 +1439,74 @@ case 10:
;
break;}
case 11:
#line 407 "asn1p_y.y"
#line 406 "asn1p_y.y"
{ /* iso */
yyval.a_oid_arc.name = yyvsp[0].tv_str;
yyval.a_oid_arc.number = -1;
;
break;}
case 12:
#line 411 "asn1p_y.y"
#line 410 "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 415 "asn1p_y.y"
#line 414 "asn1p_y.y"
{ /* 1 */
yyval.a_oid_arc.name = 0;
yyval.a_oid_arc.number = yyvsp[0].a_int;
;
break;}
case 14:
#line 425 "asn1p_y.y"
#line 424 "asn1p_y.y"
{ yyval.a_module_flags = MSF_NOFLAGS; ;
break;}
case 15:
#line 426 "asn1p_y.y"
#line 425 "asn1p_y.y"
{
yyval.a_module_flags = yyvsp[0].a_module_flags;
;
break;}
case 16:
#line 435 "asn1p_y.y"
#line 434 "asn1p_y.y"
{
yyval.a_module_flags = yyvsp[0].a_module_flags;
;
break;}
case 17:
#line 438 "asn1p_y.y"
#line 437 "asn1p_y.y"
{
yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
;
break;}
case 18:
#line 447 "asn1p_y.y"
#line 446 "asn1p_y.y"
{
yyval.a_module_flags = MSF_EXPLICIT_TAGS;
;
break;}
case 19:
#line 450 "asn1p_y.y"
#line 449 "asn1p_y.y"
{
yyval.a_module_flags = MSF_IMPLICIT_TAGS;
;
break;}
case 20:
#line 453 "asn1p_y.y"
#line 452 "asn1p_y.y"
{
yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
;
break;}
case 21:
#line 456 "asn1p_y.y"
#line 455 "asn1p_y.y"
{
yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
;
break;}
case 22:
#line 460 "asn1p_y.y"
#line 459 "asn1p_y.y"
{
/* X.680Amd1 specifies TAG and XER */
if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
......@@ -1525,23 +1524,23 @@ case 22:
;
break;}
case 23:
#line 481 "asn1p_y.y"
#line 480 "asn1p_y.y"
{ yyval.a_module = 0; ;
break;}
case 24:
#line 482 "asn1p_y.y"
#line 481 "asn1p_y.y"
{
yyval.a_module = yyvsp[0].a_module;
;
break;}
case 25:
#line 491 "asn1p_y.y"
#line 490 "asn1p_y.y"
{
yyval.a_module = yyvsp[0].a_module;
;
break;}
case 26:
#line 494 "asn1p_y.y"
#line 493 "asn1p_y.y"
{
yyval.a_module = yyvsp[-1].a_module;
......@@ -1571,13 +1570,13 @@ case 26:
;
break;}
case 27:
#line 527 "asn1p_y.y"
#line 526 "asn1p_y.y"
{
yyval.a_module = yyvsp[0].a_module;
;
break;}
case 28:
#line 530 "asn1p_y.y"
#line 529 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
......@@ -1589,7 +1588,7 @@ case 28:
;
break;}
case 29:
#line 539 "asn1p_y.y"
#line 538 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
......@@ -1599,7 +1598,7 @@ case 29:
;
break;}
case 30:
#line 546 "asn1p_y.y"
#line 545 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
......@@ -1609,7 +1608,7 @@ case 30:
;
break;}
case 31:
#line 559 "asn1p_y.y"
#line 558 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
......@@ -1619,11 +1618,11 @@ case 31:
;
break;}
case 32:
#line 567 "asn1p_y.y"
#line 566 "asn1p_y.y"
{ asn1p_lexer_hack_push_encoding_control(); ;
break;}
case 33:
#line 568 "asn1p_y.y"
#line 567 "asn1p_y.y"
{
fprintf(stderr,
"WARNING: ENCODING-CONTROL %s "
......@@ -1634,7 +1633,7 @@ case 33:
;
break;}
case 34:
#line 580 "asn1p_y.y"
#line 579 "asn1p_y.y"
{
return yyerror(
"Attempt to redefine a standard basic string type, "
......@@ -1642,7 +1641,7 @@ case 34:
;
break;}
case 35:
#line 593 "asn1p_y.y"
#line 592 "asn1p_y.y"
{
if(!saved_aid && 0)
return yyerror("Unterminated IMPORTS FROM, "
......@@ -1652,13 +1651,13 @@ case 35:
;
break;}
case 36:
#line 603 "asn1p_y.y"
#line 602 "asn1p_y.y"
{
return yyerror("Empty IMPORTS list");
;
break;}
case 37:
#line 609 "asn1p_y.y"
#line 608 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
......@@ -1666,22 +1665,22 @@ case 37:
;
break;}
case 38:
#line 614 "asn1p_y.y"
#line 613 "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 621 "asn1p_y.y"
#line 620 "asn1p_y.y"
{ memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); ;
break;}
case 40:
#line 622 "asn1p_y.y"
#line 621 "asn1p_y.y"
{ yyval.a_aid.oid = yyvsp[0].a_oid; ;
break;}
case 41:
#line 626 "asn1p_y.y"
#line 625 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-3].a_xports;
yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
......@@ -1692,7 +1691,7 @@ case 41:
;
break;}
case 42:
#line 637 "asn1p_y.y"
#line 636 "asn1p_y.y"
{
yyval.a_xports = asn1p_xports_new();
checkmem(yyval.a_xports);
......@@ -1700,14 +1699,14 @@ case 42:
;
break;}
case 43:
#line 642 "asn1p_y.y"
#line 641 "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 649 "asn1p_y.y"
#line 648 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1716,7 +1715,7 @@ case 44:
;
break;}
case 45:
#line 655 "asn1p_y.y"
#line 654 "asn1p_y.y"
{ /* Completely equivalent to above */
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1725,7 +1724,7 @@ case 45:
;
break;}
case 46:
#line 661 "asn1p_y.y"
#line 660 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1734,19 +1733,19 @@ case 46:
;
break;}
case 47:
#line 670 "asn1p_y.y"
#line 669 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-1].a_xports;
;
break;}
case 48:
#line 673 "asn1p_y.y"
#line 672 "asn1p_y.y"
{
yyval.a_xports = 0;
;
break;}
case 49:
#line 676 "asn1p_y.y"
#line 675 "asn1p_y.y"
{
/* Empty EXPORTS clause effectively prohibits export. */
yyval.a_xports = asn1p_xports_new();
......@@ -1754,7 +1753,7 @@ case 49:
;
break;}
case 50:
#line 684 "asn1p_y.y"
#line 683 "asn1p_y.y"
{
yyval.a_xports = asn1p_xports_new();
assert(yyval.a_xports);
......@@ -1762,14 +1761,14 @@ case 50:
;
break;}
case 51:
#line 689 "asn1p_y.y"
#line 688 "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 696 "asn1p_y.y"
#line 695 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1778,7 +1777,7 @@ case 52:
;
break;}
case 53:
#line 702 "asn1p_y.y"
#line 701 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1787,7 +1786,7 @@ case 53:
;
break;}
case 54:
#line 708 "asn1p_y.y"
#line 707 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1796,11 +1795,11 @@ case 54:
;
break;}
case 55:
#line 719 "asn1p_y.y"
#line 718 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
case 56:
#line 719 "asn1p_y.y"
#line 718 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-4].a_expr;
assert(yyval.a_expr->Identifier == 0);
......@@ -1810,7 +1809,7 @@ case 56:
;
break;}
case 57:
#line 729 "asn1p_y.y"
#line 728 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1820,7 +1819,7 @@ case 57:
;
break;}
case 58:
#line 736 "asn1p_y.y"
#line 735 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1829,7 +1828,7 @@ case 58:
;
break;}
case 59:
#line 754 "asn1p_y.y"
#line 753 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
yyval.a_expr->Identifier = yyvsp[-2].tv_str;
......@@ -1838,7 +1837,7 @@ case 59:
;
break;}
case 60:
#line 760 "asn1p_y.y"
#line 759 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
yyval.a_expr->Identifier = yyvsp[-2].tv_str;
......@@ -1847,7 +1846,7 @@ case 60:
;
break;}
case 61:
#line 776 "asn1p_y.y"
#line 775 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
assert(yyval.a_expr->Identifier == 0);
......@@ -1857,7 +1856,7 @@ case 61:
;
break;}
case 62:
#line 786 "asn1p_y.y"
#line 785 "asn1p_y.y"
{
int ret;
yyval.a_plist = asn1p_paramlist_new(yylineno);
......@@ -1869,7 +1868,7 @@ case 62:
;
break;}
case 63:
#line 795 "asn1p_y.y"
#line 794 "asn1p_y.y"
{
int ret;
yyval.a_plist = yyvsp[-2].a_plist;
......@@ -1880,14 +1879,14 @@ case 63:
;
break;}
case 64:
#line 806 "asn1p_y.y"
#line 805 "asn1p_y.y"
{
yyval.a_parg.governor = NULL;
yyval.a_parg.argument = yyvsp[0].tv_str;
;
break;}
case 65:
#line 810 "asn1p_y.y"
#line 809 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
......@@ -1897,7 +1896,7 @@ case 65:
;
break;}
case 66:
#line 817 "asn1p_y.y"
#line 816 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
......@@ -1907,7 +1906,7 @@ case 66:
;
break;}
case 67:
#line 824 "asn1p_y.y"
#line 823 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
......@@ -1918,7 +1917,7 @@ case 67:
;
break;}
case 68:
#line 835 "asn1p_y.y"
#line 834 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1926,20 +1925,20 @@ case 68:
;
break;}
case 69:
#line 840 "asn1p_y.y"
#line 839 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 70:
#line 847 "asn1p_y.y"
#line 846 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
case 71:
#line 850 "asn1p_y.y"
#line 849 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1949,15 +1948,15 @@ case 71:
;
break;}
case 72:
#line 874 "asn1p_y.y"
#line 873 "asn1p_y.y"
{ yyval.a_expr = asn1p_expr_new(yylineno); ;
break;}
case 73:
#line 875 "asn1p_y.y"
#line 874 "asn1p_y.y"
{ yyval.a_expr = yyvsp[0].a_expr; ;
break;}
case 74:
#line 878 "asn1p_y.y"
#line 877 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1965,14 +1964,14 @@ case 74:
;
break;}
case 75:
#line 883 "asn1p_y.y"
#line 882 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 76:
#line 890 "asn1p_y.y"
#line 889 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->Identifier == 0);
......@@ -1982,7 +1981,7 @@ case 76:
;
break;}
case 77:
#line 897 "asn1p_y.y"
#line 896 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
......@@ -1991,7 +1990,7 @@ case 77:
;
break;}
case 78:
#line 903 "asn1p_y.y"
#line 902 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2001,13 +2000,13 @@ case 78:
;
break;}
case 79:
#line 910 "asn1p_y.y"
#line 909 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
case 80:
#line 916 "asn1p_y.y"
#line 915 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2015,14 +2014,14 @@ case 80:
;
break;}
case 81:
#line 921 "asn1p_y.y"
#line 920 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 82:
#line 928 "asn1p_y.y"
#line 927 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
assert(yyval.a_expr->Identifier == 0);
......@@ -2030,20 +2029,20 @@ case 82:
;
break;}
case 83:
#line 933 "asn1p_y.y"
#line 932 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
case 84:
#line 936 "asn1p_y.y"
#line 935 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
_fixup_anonymous_identifier(yyval.a_expr);
;
break;}
case 85:
#line 943 "asn1p_y.y"
#line 942 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
checkmem(yyval.a_expr);
......@@ -2053,15 +2052,15 @@ case 85:
;
break;}
case 86:
#line 953 "asn1p_y.y"
#line 952 "asn1p_y.y"
{ yyval.a_int = 0; ;
break;}
case 87:
#line 954 "asn1p_y.y"
#line 953 "asn1p_y.y"
{ yyval.a_int = 1; ;
break;}
case 88:
#line 958 "asn1p_y.y"
#line 957 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2071,14 +2070,14 @@ case 88:
;
break;}
case 89:
#line 965 "asn1p_y.y"
#line 964 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 90:
#line 975 "asn1p_y.y"
#line 974 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2089,7 +2088,7 @@ case 90:
;
break;}
case 91:
#line 985 "asn1p_y.y"
#line 984 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
yyval.a_expr->Identifier = yyvsp[-3].tv_str;
......@@ -2101,7 +2100,7 @@ case 91:
;
break;}
case 92:
#line 996 "asn1p_y.y"
#line 995 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
yyval.a_expr->Identifier = yyvsp[-2].tv_str;
......@@ -2112,7 +2111,7 @@ case 92:
;
break;}
case 93:
#line 1006 "asn1p_y.y"
#line 1005 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2124,7 +2123,7 @@ case 93:
;
break;}
case 94:
#line 1017 "asn1p_y.y"
#line 1016 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
yyval.a_expr->Identifier = yyvsp[-2].tv_str;
......@@ -2135,7 +2134,7 @@ case 94:
;
break;}
case 95:
#line 1027 "asn1p_y.y"
#line 1026 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2147,7 +2146,7 @@ case 95:
;
break;}
case 96:
#line 1038 "asn1p_y.y"
#line 1037 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2159,72 +2158,67 @@ case 96:
;
break;}
case 97:
#line 1050 "asn1p_y.y"
#line 1049 "asn1p_y.y"
{ yyval.a_wsynt = 0; ;
break;}
case 98:
#line 1051 "asn1p_y.y"
#line 1050 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[0].a_wsynt;
;
break;}
case 99:
#line 1058 "asn1p_y.y"
#line 1057 "asn1p_y.y"
{ asn1p_lexer_hack_enable_with_syntax(); ;
break;}
case 100:
#line 1060 "asn1p_y.y"
#line 1059 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[-1].a_wsynt;
;
break;}
case 101:
#line 1066 "asn1p_y.y"
#line 1065 "asn1p_y.y"
{
yyval.a_wsynt = asn1p_wsyntx_new();
TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
;
break;}
case 102:
#line 1070 "asn1p_y.y"
#line 1069 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[-1].a_wsynt;
TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
;
break;}
case 103:
#line 1077 "asn1p_y.y"
#line 1076 "asn1p_y.y"
{
yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
yyval.a_wchunk->type = WC_WHITESPACE;
;
break;}
case 104:
#line 1081 "asn1p_y.y"
#line 1080 "asn1p_y.y"
{
yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_str, strlen(yyvsp[0].tv_str), 0);
;
break;}
case 105:
#line 1084 "asn1p_y.y"
#line 1083 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
ref = asn1p_ref_new(yylineno);
checkmem(ref);
ret = asn1p_ref_add_component(ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
checkmem(ret == 0);
yyval.a_wchunk = asn1p_wsyntx_chunk_fromref(ref, 0);
yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].a_refcomp.name, strlen(yyvsp[0].a_refcomp.name), 0);
yyval.a_wchunk->type = WC_FIELD;
;
break;}
case 106:
#line 1093 "asn1p_y.y"
#line 1087 "asn1p_y.y"
{
yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt);
;
break;}
case 107:
#line 1099 "asn1p_y.y"
#line 1093 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2235,7 +2229,7 @@ case 107:
;
break;}
case 108:
#line 1107 "asn1p_y.y"
#line 1101 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2247,7 +2241,7 @@ case 108:
;
break;}
case 109:
#line 1116 "asn1p_y.y"
#line 1110 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2259,7 +2253,7 @@ case 109:
;
break;}
case 110:
#line 1128 "asn1p_y.y"
#line 1122 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
yyval.a_expr->tag = yyvsp[-2].a_tag;
......@@ -2281,14 +2275,14 @@ case 110:
;
break;}
case 111:
#line 1150 "asn1p_y.y"
#line 1144 "asn1p_y.y"
{
yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
asn1p_as_pointer = 0;
;
break;}
case 112:
#line 1157 "asn1p_y.y"
#line 1151 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
yyval.a_expr->marker.flags |= yyvsp[-1].a_int;
......@@ -2307,13 +2301,13 @@ case 112:
;
break;}
case 113:
#line 1176 "asn1p_y.y"
#line 1170 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
case 114:
#line 1179 "asn1p_y.y"
#line 1173 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
......@@ -2322,7 +2316,7 @@ case 114:
;
break;}
case 115:
#line 1185 "asn1p_y.y"
#line 1179 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
......@@ -2331,7 +2325,7 @@ case 115:
;
break;}
case 116:
#line 1191 "asn1p_y.y"
#line 1185 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
......@@ -2340,7 +2334,7 @@ case 116:
;
break;}
case 117:
#line 1197 "asn1p_y.y"
#line 1191 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2353,7 +2347,7 @@ case 117:
;
break;}
case 118:
#line 1207 "asn1p_y.y"
#line 1201 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2366,7 +2360,7 @@ case 118:
;
break;}
case 119:
#line 1217 "asn1p_y.y"
#line 1211 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2375,7 +2369,7 @@ case 119:
;
break;}
case 120:
#line 1223 "asn1p_y.y"
#line 1217 "asn1p_y.y"
{
int ret;
yyval.a_expr = asn1p_expr_new(yylineno);
......@@ -2389,7 +2383,7 @@ case 120:
;
break;}
case 121:
#line 1237 "asn1p_y.y"
#line 1231 "asn1p_y.y"
{
int ret;
yyval.a_expr = yyvsp[-1].a_expr;
......@@ -2406,7 +2400,7 @@ case 121:
;
break;}
case 122:
#line 1261 "asn1p_y.y"
#line 1255 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2416,7 +2410,7 @@ case 122:
;
break;}
case 123:
#line 1268 "asn1p_y.y"
#line 1262 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2426,7 +2420,7 @@ case 123:
;
break;}
case 124:
#line 1283 "asn1p_y.y"
#line 1277 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
......@@ -2437,7 +2431,7 @@ case 124:
;
break;}
case 125:
#line 1291 "asn1p_y.y"
#line 1285 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
......@@ -2450,7 +2444,7 @@ case 125:
;
break;}
case 126:
#line 1301 "asn1p_y.y"
#line 1295 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
......@@ -2463,7 +2457,7 @@ case 126:
;
break;}
case 127:
#line 1311 "asn1p_y.y"
#line 1305 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
......@@ -2476,7 +2470,7 @@ case 127:
;
break;}
case 128:
#line 1321 "asn1p_y.y"
#line 1315 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
......@@ -2487,7 +2481,7 @@ case 128:
;
break;}
case 129:
#line 1329 "asn1p_y.y"
#line 1323 "asn1p_y.y"
{
int ret;
yyval.a_ref = yyvsp[0].a_ref;
......@@ -2509,7 +2503,7 @@ case 129:
;
break;}
case 130:
#line 1351 "asn1p_y.y"
#line 1345 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
......@@ -2520,7 +2514,7 @@ case 130:
;
break;}
case 131:
#line 1359 "asn1p_y.y"
#line 1353 "asn1p_y.y"
{
int ret;
yyval.a_ref = yyvsp[-2].a_ref;
......@@ -2529,50 +2523,50 @@ case 131:
checkmem(ret == 0);
;
break;}
case 134:
#line 1373 "asn1p_y.y"
case 133:
#line 1366 "asn1p_y.y"
{
yyval.a_refcomp.lex_type = RLT_AmpUppercase;
yyval.a_refcomp.name = yyvsp[0].tv_str;
;
break;}
case 135:
#line 1378 "asn1p_y.y"
case 134:
#line 1371 "asn1p_y.y"
{
yyval.a_refcomp.lex_type = RLT_Amplowercase;
yyval.a_refcomp.name = yyvsp[0].tv_str;
;
break;}
case 136:
#line 1387 "asn1p_y.y"
case 135:
#line 1380 "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 137:
#line 1391 "asn1p_y.y"
case 136:
#line 1384 "asn1p_y.y"
{
yyval.a_ref = yyval.a_ref;
asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
;
break;}
case 138:
#line 1395 "asn1p_y.y"
case 137:
#line 1388 "asn1p_y.y"
{
yyval.a_ref = yyval.a_ref;
asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
;
break;}
case 139:
#line 1402 "asn1p_y.y"
case 138:
#line 1395 "asn1p_y.y"
{
yyval.a_ref = asn1p_ref_new(yylineno);
asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
;
break;}
case 140:
#line 1422 "asn1p_y.y"
case 139:
#line 1415 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
assert(yyval.a_expr->Identifier == NULL);
......@@ -2581,8 +2575,8 @@ case 140:
yyval.a_expr->value = yyvsp[0].a_value;
;
break;}
case 141:
#line 1432 "asn1p_y.y"
case 140:
#line 1425 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
......@@ -2591,76 +2585,76 @@ case 141:
yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
;
break;}
case 142:
#line 1439 "asn1p_y.y"
case 141:
#line 1432 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
case 143:
#line 1439 "asn1p_y.y"
case 142:
#line 1432 "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 144:
#line 1444 "asn1p_y.y"
case 143:
#line 1437 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_NULL;
;
break;}
case 145:
#line 1449 "asn1p_y.y"
case 144:
#line 1442 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_FALSE;
;
break;}
case 146:
#line 1454 "asn1p_y.y"
case 145:
#line 1447 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_TRUE;
;
break;}
case 147:
#line 1459 "asn1p_y.y"
case 146:
#line 1452 "asn1p_y.y"
{
yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
checkmem(yyval.a_value);
;
break;}
case 148:
#line 1463 "asn1p_y.y"
case 147:
#line 1456 "asn1p_y.y"
{
yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
checkmem(yyval.a_value);
;
break;}
case 149:
#line 1467 "asn1p_y.y"
case 148:
#line 1460 "asn1p_y.y"
{
yyval.a_value = yyval.a_value;
;
break;}
case 150:
#line 1470 "asn1p_y.y"
case 149:
#line 1463 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 151:
#line 1473 "asn1p_y.y"
case 150:
#line 1466 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 152:
#line 1479 "asn1p_y.y"
case 151:
#line 1472 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
......@@ -2673,8 +2667,8 @@ case 152:
free(yyvsp[0].tv_str);
;
break;}
case 153:
#line 1490 "asn1p_y.y"
case 152:
#line 1483 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
......@@ -2690,31 +2684,31 @@ case 153:
free(yyvsp[0].tv_str);
;
break;}
case 154:
#line 1508 "asn1p_y.y"
case 153:
#line 1501 "asn1p_y.y"
{
yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
checkmem(yyval.a_value);
;
break;}
case 155:
#line 1512 "asn1p_y.y"
case 154:
#line 1505 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_TUPLE;
;
break;}
case 156:
#line 1517 "asn1p_y.y"
case 155:
#line 1510 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_QUADRUPLE;
;
break;}
case 157:
#line 1551 "asn1p_y.y"
case 156:
#line 1544 "asn1p_y.y"
{
yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
......@@ -2725,8 +2719,8 @@ case 157:
free(yyvsp[0].tv_opaque.buf);
;
break;}
case 158:
#line 1560 "asn1p_y.y"
case 157:
#line 1553 "asn1p_y.y"
{
int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
char *p = malloc(newsize + 1);
......@@ -2740,72 +2734,72 @@ case 158:
yyval.tv_opaque.len = newsize;
;
break;}
case 159:
#line 1575 "asn1p_y.y"
case 158:
#line 1568 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
break;}
case 160:
#line 1576 "asn1p_y.y"
case 159:
#line 1569 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
break;}
case 161:
#line 1577 "asn1p_y.y"
case 160:
#line 1570 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
break;}
case 162:
#line 1578 "asn1p_y.y"
case 161:
#line 1571 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
break;}
case 163:
#line 1579 "asn1p_y.y"
case 162:
#line 1572 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
break;}
case 164:
#line 1580 "asn1p_y.y"
case 163:
#line 1573 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
break;}
case 165:
#line 1581 "asn1p_y.y"
case 164:
#line 1574 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
break;}
case 166:
#line 1582 "asn1p_y.y"
case 165:
#line 1575 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
break;}
case 167:
#line 1583 "asn1p_y.y"
case 166:
#line 1576 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
break;}
case 168:
#line 1584 "asn1p_y.y"
case 167:
#line 1577 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
break;}
case 169:
#line 1585 "asn1p_y.y"
case 168:
#line 1578 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
break;}
case 170:
#line 1586 "asn1p_y.y"
case 169:
#line 1579 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
break;}
case 171:
#line 1587 "asn1p_y.y"
case 170:
#line 1580 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
break;}
case 172:
#line 1594 "asn1p_y.y"
case 171:
#line 1587 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
break;}
case 173:
#line 1595 "asn1p_y.y"
case 172:
#line 1588 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
break;}
case 174:
#line 1596 "asn1p_y.y"
case 173:
#line 1589 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
break;}
case 175:
#line 1600 "asn1p_y.y"
case 174:
#line 1593 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2813,8 +2807,8 @@ case 175:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
case 176:
#line 1606 "asn1p_y.y"
case 175:
#line 1599 "asn1p_y.y"
{
if(yyvsp[0].a_expr) {
yyval.a_expr = yyvsp[0].a_expr;
......@@ -2826,92 +2820,92 @@ case 176:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
case 177:
#line 1619 "asn1p_y.y"
case 176:
#line 1612 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
break;}
case 178:
#line 1620 "asn1p_y.y"
case 177:
#line 1613 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GeneralString;
fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
;
break;}
case 179:
#line 1624 "asn1p_y.y"
case 178:
#line 1617 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GraphicString;
fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
;
break;}
case 180:
#line 1628 "asn1p_y.y"
case 179:
#line 1621 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
break;}
case 181:
#line 1629 "asn1p_y.y"
case 180:
#line 1622 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
break;}
case 182:
#line 1630 "asn1p_y.y"
case 181:
#line 1623 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
break;}
case 183:
#line 1631 "asn1p_y.y"
case 182:
#line 1624 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
break;}
case 184:
#line 1632 "asn1p_y.y"
case 183:
#line 1625 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_T61String;
fprintf(stderr, "WARNING: T61String is not fully supported\n");
;
break;}
case 185:
#line 1636 "asn1p_y.y"
case 184:
#line 1629 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
break;}
case 186:
#line 1637 "asn1p_y.y"
case 185:
#line 1630 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
break;}
case 187:
#line 1638 "asn1p_y.y"
case 186:
#line 1631 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
break;}
case 188:
#line 1639 "asn1p_y.y"
case 187:
#line 1632 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_VideotexString;
fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
;
break;}
case 189:
#line 1643 "asn1p_y.y"
case 188:
#line 1636 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
break;}
case 190:
#line 1644 "asn1p_y.y"
case 189:
#line 1637 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
break;}
case 196:
#line 1656 "asn1p_y.y"
case 195:
#line 1649 "asn1p_y.y"
{ yyval.a_constr = 0; ;
break;}
case 197:
#line 1657 "asn1p_y.y"
case 196:
#line 1650 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 198:
#line 1663 "asn1p_y.y"
case 197:
#line 1656 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
;
break;}
case 199:
#line 1666 "asn1p_y.y"
case 198:
#line 1659 "asn1p_y.y"
{
/*
* This is a special case, for compatibility purposes.
......@@ -2920,26 +2914,26 @@ case 199:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
;
break;}
case 200:
#line 1676 "asn1p_y.y"
case 199:
#line 1669 "asn1p_y.y"
{
yyval.a_constr = yyvsp[-1].a_constr;
;
break;}
case 201:
#line 1679 "asn1p_y.y"
case 200:
#line 1672 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
case 202:
#line 1685 "asn1p_y.y"
case 201:
#line 1678 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 203:
#line 1688 "asn1p_y.y"
case 202:
#line 1681 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
......@@ -2947,8 +2941,8 @@ case 203:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
;
break;}
case 204:
#line 1694 "asn1p_y.y"
case 203:
#line 1687 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
......@@ -2958,38 +2952,38 @@ case 204:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
;
break;}
case 205:
#line 1705 "asn1p_y.y"
case 204:
#line 1698 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 206:
#line 1708 "asn1p_y.y"
case 205:
#line 1701 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
;
break;}
case 207:
#line 1711 "asn1p_y.y"
case 206:
#line 1704 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 208:
#line 1714 "asn1p_y.y"
case 207:
#line 1707 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 209:
#line 1717 "asn1p_y.y"
case 208:
#line 1710 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 210:
#line 1723 "asn1p_y.y"
case 209:
#line 1716 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
......@@ -2999,8 +2993,8 @@ case 210:
checkmem(ret == 0);
;
break;}
case 211:
#line 1731 "asn1p_y.y"
case 210:
#line 1724 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
......@@ -3010,8 +3004,8 @@ case 211:
checkmem(ret == 0);
;
break;}
case 212:
#line 1739 "asn1p_y.y"
case 211:
#line 1732 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -3019,8 +3013,8 @@ case 212:
yyval.a_constr->value = yyvsp[0].a_value;
;
break;}
case 213:
#line 1745 "asn1p_y.y"
case 212:
#line 1738 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -3028,8 +3022,8 @@ case 213:
yyval.a_constr->containedSubtype = yyvsp[0].a_value;
;
break;}
case 214:
#line 1751 "asn1p_y.y"
case 213:
#line 1744 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -3038,8 +3032,8 @@ case 214:
yyval.a_constr->range_stop = yyvsp[0].a_value;
;
break;}
case 215:
#line 1758 "asn1p_y.y"
case 214:
#line 1751 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -3049,8 +3043,8 @@ case 215:
yyval.a_constr->range_start->type = ATV_MIN;
;
break;}
case 216:
#line 1766 "asn1p_y.y"
case 215:
#line 1759 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -3060,8 +3054,8 @@ case 216:
yyval.a_constr->range_stop->type = ATV_MAX;
;
break;}
case 217:
#line 1774 "asn1p_y.y"
case 216:
#line 1767 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -3072,24 +3066,24 @@ case 217:
yyval.a_constr->range_stop->type = ATV_MAX;
;
break;}
case 218:
#line 1783 "asn1p_y.y"
case 217:
#line 1776 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 219:
#line 1786 "asn1p_y.y"
case 218:
#line 1779 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 220:
#line 1790 "asn1p_y.y"
case 219:
#line 1783 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
case 221:
#line 1790 "asn1p_y.y"
case 220:
#line 1783 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -3099,64 +3093,64 @@ case 221:
yyval.a_constr->value->type = ATV_UNPARSED;
;
break;}
case 222:
#line 1801 "asn1p_y.y"
case 221:
#line 1794 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
break;}
case 223:
#line 1802 "asn1p_y.y"
case 222:
#line 1795 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
break;}
case 224:
#line 1803 "asn1p_y.y"
case 223:
#line 1796 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
break;}
case 225:
#line 1804 "asn1p_y.y"
case 224:
#line 1797 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
break;}
case 226:
#line 1808 "asn1p_y.y"
case 225:
#line 1801 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_SIZE;
;
break;}
case 227:
#line 1811 "asn1p_y.y"
case 226:
#line 1804 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_FROM;
;
break;}
case 228:
#line 1817 "asn1p_y.y"
case 227:
#line 1810 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_FALSE;
;
break;}
case 229:
#line 1822 "asn1p_y.y"
case 228:
#line 1815 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(1);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_TRUE;
;
break;}
case 230:
#line 1827 "asn1p_y.y"
case 229:
#line 1820 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 231:
#line 1830 "asn1p_y.y"
case 230:
#line 1823 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 232:
#line 1833 "asn1p_y.y"
case 231:
#line 1826 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
......@@ -3169,8 +3163,8 @@ case 232:
free(yyvsp[0].tv_str);
;
break;}
case 233:
#line 1847 "asn1p_y.y"
case 232:
#line 1840 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
......@@ -3183,32 +3177,32 @@ case 233:
free(yyvsp[0].tv_str);
;
break;}
case 234:
#line 1861 "asn1p_y.y"
case 233:
#line 1854 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
;
break;}
case 235:
#line 1864 "asn1p_y.y"
case 234:
#line 1857 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
;
break;}
case 236:
#line 1870 "asn1p_y.y"
case 235:
#line 1863 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 237:
#line 1873 "asn1p_y.y"
case 236:
#line 1866 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 238:
#line 1879 "asn1p_y.y"
case 237:
#line 1872 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -3216,8 +3210,8 @@ case 238:
yyval.a_constr->value = asn1p_value_frombuf("...", 3, 0);
;
break;}
case 239:
#line 1885 "asn1p_y.y"
case 238:
#line 1878 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -3227,46 +3221,46 @@ case 239:
if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
;
break;}
case 240:
#line 1899 "asn1p_y.y"
case 239:
#line 1892 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
break;}
case 241:
#line 1900 "asn1p_y.y"
case 240:
#line 1893 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
break;}
case 242:
#line 1904 "asn1p_y.y"
case 241:
#line 1897 "asn1p_y.y"
{
yyval.a_pres = ACPRES_PRESENT;
;
break;}
case 243:
#line 1907 "asn1p_y.y"
case 242:
#line 1900 "asn1p_y.y"
{
yyval.a_pres = ACPRES_ABSENT;
;
break;}
case 244:
#line 1910 "asn1p_y.y"
case 243:
#line 1903 "asn1p_y.y"
{
yyval.a_pres = ACPRES_OPTIONAL;
;
break;}
case 245:
#line 1916 "asn1p_y.y"
case 244:
#line 1909 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 246:
#line 1919 "asn1p_y.y"
case 245:
#line 1912 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 247:
#line 1928 "asn1p_y.y"
case 246:
#line 1921 "asn1p_y.y"
{
asn1p_ref_t *ref = asn1p_ref_new(yylineno);
asn1p_constraint_t *ct;
......@@ -3280,14 +3274,14 @@ case 247:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
;
break;}
case 248:
#line 1943 "asn1p_y.y"
case 247:
#line 1936 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
case 249:
#line 1949 "asn1p_y.y"
case 248:
#line 1942 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -3295,8 +3289,8 @@ case 249:
yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
;
break;}
case 250:
#line 1955 "asn1p_y.y"
case 249:
#line 1948 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
......@@ -3306,8 +3300,8 @@ case 250:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
;
break;}
case 251:
#line 1969 "asn1p_y.y"
case 250:
#line 1962 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
int ret;
......@@ -3320,8 +3314,8 @@ case 251:
free(yyvsp[0].tv_str);
;
break;}
case 252:
#line 1980 "asn1p_y.y"
case 251:
#line 1973 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
int ret;
......@@ -3335,14 +3329,14 @@ case 252:
free(yyvsp[0].tv_str);
;
break;}
case 253:
#line 1996 "asn1p_y.y"
case 252:
#line 1989 "asn1p_y.y"
{
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 254:
#line 1999 "asn1p_y.y"
case 253:
#line 1992 "asn1p_y.y"
{
int l1 = strlen(yyvsp[-2].tv_str);
int l3 = strlen(yyvsp[0].tv_str);
......@@ -3353,61 +3347,61 @@ case 254:
yyval.tv_str[l1 + 1 + l3] = '\0';
;
break;}
case 255:
#line 2017 "asn1p_y.y"
case 254:
#line 2010 "asn1p_y.y"
{
yyval.a_marker.flags = EM_NOMARK;
yyval.a_marker.default_value = 0;
;
break;}
case 256:
#line 2021 "asn1p_y.y"
case 255:
#line 2014 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
break;}
case 257:
#line 2025 "asn1p_y.y"
case 256:
#line 2018 "asn1p_y.y"
{
yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
yyval.a_marker.default_value = 0;
;
break;}
case 258:
#line 2029 "asn1p_y.y"
case 257:
#line 2022 "asn1p_y.y"
{
yyval.a_marker.flags = EM_DEFAULT;
yyval.a_marker.default_value = yyvsp[0].a_value;
;
break;}
case 259:
#line 2052 "asn1p_y.y"
case 258:
#line 2045 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
;
break;}
case 260:
#line 2056 "asn1p_y.y"
case 259:
#line 2049 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
;
break;}
case 261:
#line 2062 "asn1p_y.y"
case 260:
#line 2055 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 262:
#line 2067 "asn1p_y.y"
case 261:
#line 2060 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 263:
#line 2074 "asn1p_y.y"
case 262:
#line 2067 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3416,8 +3410,8 @@ case 263:
yyval.a_expr->Identifier = yyvsp[0].tv_str;
;
break;}
case 264:
#line 2081 "asn1p_y.y"
case 263:
#line 2074 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3427,8 +3421,8 @@ case 264:
yyval.a_expr->value = yyvsp[-1].a_value;
;
break;}
case 265:
#line 2089 "asn1p_y.y"
case 264:
#line 2082 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3438,8 +3432,8 @@ case 265:
yyval.a_expr->value = yyvsp[-1].a_value;
;
break;}
case 266:
#line 2097 "asn1p_y.y"
case 265:
#line 2090 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3448,8 +3442,8 @@ case 266:
yyval.a_expr->value = yyvsp[0].a_value;
;
break;}
case 267:
#line 2104 "asn1p_y.y"
case 266:
#line 2097 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3459,103 +3453,103 @@ case 267:
yyval.a_expr->meta_type = AMT_VALUE;
;
break;}
case 268:
#line 2115 "asn1p_y.y"
case 267:
#line 2108 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
case 269:
#line 2119 "asn1p_y.y"
case 268:
#line 2112 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
case 270:
#line 2150 "asn1p_y.y"
case 269:
#line 2143 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
break;}
case 271:
#line 2151 "asn1p_y.y"
case 270:
#line 2144 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
break;}
case 272:
#line 2155 "asn1p_y.y"
case 271:
#line 2148 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-1].a_tag;
yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
;
break;}
case 273:
#line 2162 "asn1p_y.y"
case 272:
#line 2155 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-2].a_tag;
yyval.a_tag.tag_value = yyvsp[-1].a_int;
;
break;}
case 274:
#line 2168 "asn1p_y.y"
case 273:
#line 2161 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
break;}
case 275:
#line 2169 "asn1p_y.y"
case 274:
#line 2162 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
break;}
case 276:
#line 2170 "asn1p_y.y"
case 275:
#line 2163 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_APPLICATION; ;
break;}
case 277:
#line 2171 "asn1p_y.y"
case 276:
#line 2164 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_PRIVATE; ;
break;}
case 278:
#line 2175 "asn1p_y.y"
case 277:
#line 2168 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
break;}
case 279:
#line 2176 "asn1p_y.y"
case 278:
#line 2169 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
break;}
case 280:
#line 2177 "asn1p_y.y"
case 279:
#line 2170 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
break;}
case 281:
#line 2181 "asn1p_y.y"
case 280:
#line 2174 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 282:
#line 2185 "asn1p_y.y"
case 281:
#line 2178 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 283:
#line 2193 "asn1p_y.y"
case 282:
#line 2186 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 284:
#line 2200 "asn1p_y.y"
case 283:
#line 2193 "asn1p_y.y"
{ yyval.tv_str = 0; ;
break;}
case 285:
#line 2201 "asn1p_y.y"
case 284:
#line 2194 "asn1p_y.y"
{
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 286:
#line 2207 "asn1p_y.y"
case 285:
#line 2200 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
......@@ -3783,7 +3777,7 @@ yyerrhandle:
}
return 1;
}
#line 2213 "asn1p_y.y"
#line 2206 "asn1p_y.y"
......
......@@ -242,8 +242,7 @@ static void _fixup_anonymous_identifier(asn1p_expr_t *expr);
%type <a_ref> ComplexTypeReference
%type <a_ref> ComplexTypeReferenceAmpList
%type <a_refcomp> ComplexTypeReferenceElement
%type <a_refcomp> ClassFieldIdentifier
%type <a_refcomp> ClassFieldName
%type <a_refcomp> PrimitiveFieldReference
%type <a_expr> FieldSpec
%type <a_ref> FieldName
%type <a_ref> DefinedObjectClass
......@@ -1081,14 +1080,9 @@ WithSyntaxToken:
| TOK_Literal {
$$ = asn1p_wsyntx_chunk_frombuf($1, strlen($1), 0);
}
| ClassFieldIdentifier {
asn1p_ref_t *ref;
int ret;
ref = asn1p_ref_new(yylineno);
checkmem(ref);
ret = asn1p_ref_add_component(ref, $1.name, $1.lex_type);
checkmem(ret == 0);
$$ = asn1p_wsyntx_chunk_fromref(ref, 0);
| PrimitiveFieldReference {
$$ = asn1p_wsyntx_chunk_frombuf($1.name, strlen($1.name), 0);
$$->type = WC_FIELD;
}
| '[' WithSyntaxList ']' {
$$ = asn1p_wsyntx_chunk_fromsyntax($2);
......@@ -1365,10 +1359,9 @@ ComplexTypeReferenceAmpList:
}
;
ComplexTypeReferenceElement: ClassFieldName;
ClassFieldIdentifier: ClassFieldName;
ComplexTypeReferenceElement: PrimitiveFieldReference;
ClassFieldName:
PrimitiveFieldReference:
/* "&Type1" */
TOK_typefieldreference {
$$.lex_type = RLT_AmpUppercase;
......
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <assert.h>
......@@ -184,3 +185,21 @@ _asn1p_fix_modules(asn1p_t *a, const char *fname) {
}
int
asn1p_atoi(const char *ptr, asn1c_integer_t *value) {
errno = 0; /* Clear the error code */
if(sizeof(*value) <= sizeof(int)) {
*value = strtol(ptr, 0, 10);
} else {
#ifdef HAVE_STRTOIMAX
*value = strtoimax(ptr, 0, 10);
#elif HAVE_STRTOLL
*value = strtoll(ptr, 0, 10);
#else
*value = strtol(ptr, 0, 10);
#endif
}
return errno == 0 ? 0 : -1;
}
......@@ -69,4 +69,6 @@ asn1p_t *asn1p_parse_file(const char *filename,
asn1p_t *asn1p_parse_buffer(const char *buffer, int size /* = -1 */,
enum asn1p_flags);
int asn1p_atoi(const char *ptr, asn1c_integer_t *r_value);
#endif /* ASN1PARSER_H */
......@@ -106,7 +106,7 @@ asn1print_module(asn1p_t *asn, asn1p_module_t *mod, enum asn1print_flags flags)
TQ_FOR(tc, &(mod->members), next) {
asn1print_expr(asn, mod, tc, flags, 0);
if(flags & APF_DEBUG_CONSTRAINTS)
if(flags & APF_PRINT_CONSTRAINTS)
printf("\n");
else
printf("\n\n");
......@@ -416,11 +416,9 @@ asn1print_with_syntax(asn1p_wsyntx_t *wx, enum asn1print_flags flags) {
switch(wc->type) {
case WC_LITERAL:
case WC_WHITESPACE:
case WC_FIELD:
printf("%s", wc->content.token);
break;
case WC_REFERENCE:
asn1print_ref(wc->content.ref, flags);
break;
case WC_OPTIONALGROUP:
printf("[");
asn1print_with_syntax(wc->content.syntax,flags);
......@@ -690,7 +688,7 @@ asn1print_expr(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *tc, enum asn1pri
/*
* The following section exists entirely for debugging.
*/
if(flags & APF_DEBUG_CONSTRAINTS
if(flags & APF_PRINT_CONSTRAINTS
&& tc->expr_type != A1TC_EXTENSIBLE) {
asn1p_expr_t *top_parent;
......@@ -713,6 +711,41 @@ asn1print_expr(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *tc, enum asn1pri
printf("\n");
}
if(flags & APF_PRINT_CLASS_MATRIX
&& tc->expr_type == A1TC_CLASSDEF) do {
int r, col, maxidlen;
if(tc->object_class_matrix.rows == 0) {
printf("\n-- Class matrix is empty");
break;
}
printf("\n-- Class matrix has %d entr%s:\n",
tc->object_class_matrix.rows,
tc->object_class_matrix.rows==1 ? "y" : "ies");
maxidlen = tc->object_class_matrix.max_identifier_length;
for(r = -1; r < tc->object_class_matrix.rows; r++) {
struct asn1p_ioc_row_s *row;
row = tc->object_class_matrix.row[r<0?0:r];
if(r < 0) printf("-- %s", r > 9 ? " " : "");
else printf("-- [%*d]", r > 9 ? 2 : 1, r+1);
for(col = 0; col < row->columns; col++) {
struct asn1p_ioc_cell_s *cell;
cell = &row->column[col];
if(r < 0) {
printf("[%*s]", maxidlen,
cell->field->Identifier);
continue;
}
if(!cell->value) {
printf(" %*s ", maxidlen, "<no entry>");
continue;
}
printf(" %*s ", maxidlen,
cell->value->Identifier);
}
printf("\n");
}
} while(0);
return 0;
}
......
......@@ -3,10 +3,11 @@
enum asn1print_flags {
APF_NOFLAGS,
APF_LINE_COMMENTS = 0x01, /* Include line comments */
APF_DEBUG_CONSTRAINTS = 0x02, /* Explain constraints */
APF_NOINDENT = 0x01, /* Disable indentation */
APF_LINE_COMMENTS = 0x02, /* Include line comments */
APF_PRINT_XML_DTD = 0x04, /* Generate XML DTD */
APF_NOINDENT = 0x08, /* Disable indentation */
APF_PRINT_CONSTRAINTS = 0x08, /* Explain constraints */
APF_PRINT_CLASS_MATRIX = 0x10, /* Dump class matrix */
};
/*
......
......@@ -14,7 +14,7 @@ BEGIN
-- First CLASS
EXTENSION ::= CLASS {
&id [PRIVATE 0] OBJECT IDENTIFIER UNIQUE,
&id [PRIVATE 0] INTEGER UNIQUE,
&ExtnType
} WITH SYNTAX {
SYNTAX &ExtnType
......@@ -35,6 +35,8 @@ BEGIN
terminal-type EXTENSION-ATTRIBUTE ::= {TerminalType IDENTIFIED BY 23}
TerminalType ::= INTEGER { terminal(0) }
-- Advanced CLASS extraction
ExtensionAttribute ::= SEQUENCE {
......
......@@ -4,7 +4,7 @@ DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXTENSION ::= CLASS {
&id [PRIVATE 0] OBJECT IDENTIFIER UNIQUE,
&id [PRIVATE 0] INTEGER UNIQUE,
&ExtnType
} WITH SYNTAX {
SYNTAX &ExtnType
......@@ -24,6 +24,10 @@ EXTENSION-ATTRIBUTE ::= CLASS {
terminal-type EXTENSION-ATTRIBUTE ::= {TerminalType IDENTIFIED BY 23}
TerminalType ::= INTEGER {
terminal(0)
}
ExtensionAttribute ::= SEQUENCE {
extension-attribute-type [0] IMPLICIT EXTENSION-ATTRIBUTE.&id ({ExtensionAttributeTable}),
extension-attribute-value [1] EXPLICIT EXTENSION-ATTRIBUTE.&Type ({ExtensionAttributeTable}{@extension-attribute-type})
......
ModuleTestClassSimple { iso org(3) dod(6) internet(1) private(4) enterprise(1)
spelio(9363) software(1) asn1c(5) test(1) 34 }
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXTENSION ::= CLASS {
&id [PRIVATE 0] INTEGER UNIQUE,
&ExtnType
} WITH SYNTAX {
SYNTAX &ExtnType
IDENTIFIED BY &id
}
-- Class matrix is empty
Ext1 ::= SEQUENCE {
extnId EXTENSION.&id
}
EXTENSION-ATTRIBUTE ::= CLASS {
&id INTEGER (0..256) UNIQUE,
&Type ANY
} WITH SYNTAX {&Type IDENTIFIED BY &id}
-- Class matrix has 1 entry:
-- [ &id][ &Type]
-- [1] 23 TerminalType
terminal-type EXTENSION-ATTRIBUTE ::= {TerminalType IDENTIFIED BY 23}
TerminalType ::= INTEGER {
terminal(0)
}
ExtensionAttribute ::= SEQUENCE {
extension-attribute-type [0] IMPLICIT EXTENSION-ATTRIBUTE.&id ({ExtensionAttributeTable}),
extension-attribute-value [1] EXPLICIT EXTENSION-ATTRIBUTE.&Type ({ExtensionAttributeTable}{@extension-attribute-type})
}
ub-extension-attributes INTEGER ::= 256
END
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment