blob: e8cdfb243e79fca541aace0f1e488f13bf570911 [file] [log] [blame]
vlmfa67ddc2004-06-03 03:38:44 +00001
vlm6f5eb0b2004-08-13 12:35:09 +00002/* A Bison parser, made from asn1p_y.y
3 by GNU Bison version 1.28 */
vlmfa67ddc2004-06-03 03:38:44 +00004
vlm6f5eb0b2004-08-13 12:35:09 +00005#define YYBISON 1 /* Identify Bison output. */
vlmfa67ddc2004-06-03 03:38:44 +00006
7#define yyparse asn1p_parse
vlm6f5eb0b2004-08-13 12:35:09 +00008#define yylex asn1p_lex
vlmfa67ddc2004-06-03 03:38:44 +00009#define yyerror asn1p_error
vlm6f5eb0b2004-08-13 12:35:09 +000010#define yylval asn1p_lval
11#define yychar asn1p_char
vlmfa67ddc2004-06-03 03:38:44 +000012#define yydebug asn1p_debug
13#define yynerrs asn1p_nerrs
vlm6f5eb0b2004-08-13 12:35:09 +000014#define TOK_PPEQ 257
15#define TOK_opaque 258
16#define TOK_bstring 259
17#define TOK_cstring 260
18#define TOK_hstring 261
19#define TOK_identifier 262
20#define TOK_number 263
21#define TOK_number_negative 264
22#define TOK_typereference 265
vlm9283dbe2004-08-18 04:59:12 +000023#define TOK_capitalreference 266
vlm6f5eb0b2004-08-13 12:35:09 +000024#define TOK_typefieldreference 267
25#define TOK_valuefieldreference 268
26#define TOK_ABSENT 269
27#define TOK_ABSTRACT_SYNTAX 270
28#define TOK_ALL 271
29#define TOK_ANY 272
30#define TOK_APPLICATION 273
31#define TOK_AUTOMATIC 274
32#define TOK_BEGIN 275
33#define TOK_BIT 276
34#define TOK_BMPString 277
35#define TOK_BOOLEAN 278
36#define TOK_BY 279
37#define TOK_CHARACTER 280
38#define TOK_CHOICE 281
39#define TOK_CLASS 282
40#define TOK_COMPONENT 283
41#define TOK_COMPONENTS 284
42#define TOK_CONSTRAINED 285
43#define TOK_CONTAINING 286
44#define TOK_DEFAULT 287
45#define TOK_DEFINITIONS 288
46#define TOK_DEFINED 289
47#define TOK_EMBEDDED 290
48#define TOK_ENCODED 291
vlm9283dbe2004-08-18 04:59:12 +000049#define TOK_ENCODING_CONTROL 292
50#define TOK_END 293
51#define TOK_ENUMERATED 294
52#define TOK_EXPLICIT 295
53#define TOK_EXPORTS 296
54#define TOK_EXTENSIBILITY 297
55#define TOK_EXTERNAL 298
56#define TOK_FALSE 299
57#define TOK_FROM 300
58#define TOK_GeneralizedTime 301
59#define TOK_GeneralString 302
60#define TOK_GraphicString 303
61#define TOK_IA5String 304
62#define TOK_IDENTIFIER 305
63#define TOK_IMPLICIT 306
64#define TOK_IMPLIED 307
65#define TOK_IMPORTS 308
66#define TOK_INCLUDES 309
67#define TOK_INSTANCE 310
68#define TOK_INSTRUCTIONS 311
69#define TOK_INTEGER 312
70#define TOK_ISO646String 313
71#define TOK_MAX 314
72#define TOK_MIN 315
73#define TOK_MINUS_INFINITY 316
74#define TOK_NULL 317
75#define TOK_NumericString 318
76#define TOK_OBJECT 319
77#define TOK_ObjectDescriptor 320
78#define TOK_OCTET 321
79#define TOK_OF 322
80#define TOK_OPTIONAL 323
81#define TOK_PATTERN 324
82#define TOK_PDV 325
83#define TOK_PLUS_INFINITY 326
84#define TOK_PRESENT 327
85#define TOK_PrintableString 328
86#define TOK_PRIVATE 329
87#define TOK_REAL 330
88#define TOK_RELATIVE_OID 331
89#define TOK_SEQUENCE 332
90#define TOK_SET 333
91#define TOK_SIZE 334
92#define TOK_STRING 335
93#define TOK_SYNTAX 336
94#define TOK_T61String 337
95#define TOK_TAGS 338
96#define TOK_TeletexString 339
97#define TOK_TRUE 340
98#define TOK_TYPE_IDENTIFIER 341
99#define TOK_UNIQUE 342
100#define TOK_UNIVERSAL 343
101#define TOK_UniversalString 344
102#define TOK_UTCTime 345
103#define TOK_UTF8String 346
104#define TOK_VideotexString 347
105#define TOK_VisibleString 348
106#define TOK_WITH 349
vlm6f5eb0b2004-08-13 12:35:09 +0000107#define TOK_EXCEPT 350
vlm9283dbe2004-08-18 04:59:12 +0000108#define TOK_INTERSECTION 351
109#define TOK_UNION 352
110#define TOK_TwoDots 353
111#define TOK_ThreeDots 354
112#define TOK_tag 355
vlmfa67ddc2004-06-03 03:38:44 +0000113
114#line 1 "asn1p_y.y"
115
116
117#include <stdlib.h>
118#include <stdio.h>
119#include <string.h>
120#include <errno.h>
121#include <assert.h>
122
123#include "asn1parser.h"
124
125#define YYPARSE_PARAM param
126#define YYERROR_VERBOSE
127
128int yylex(void);
129int yyerror(const char *msg);
130void asn1p_lexer_hack_push_opaque_state(void);
131void asn1p_lexer_hack_enable_with_syntax(void);
vlm9283dbe2004-08-18 04:59:12 +0000132void asn1p_lexer_hack_push_encoding_control(void);
vlmfa67ddc2004-06-03 03:38:44 +0000133#define yylineno asn1p_lineno
134extern int asn1p_lineno;
135
136
137static asn1p_value_t *
138 _convert_bitstring2binary(char *str, int base);
139
140#define checkmem(ptr) do { \
141 if(!(ptr)) \
142 return yyerror("Memory failure"); \
143 } while(0)
144
145#define CONSTRAINT_INSERT(root, constr_type, arg1, arg2) do { \
146 if(arg1->type != constr_type) { \
147 int __ret; \
148 root = asn1p_constraint_new(yylineno); \
149 checkmem(root); \
150 root->type = constr_type; \
151 __ret = asn1p_constraint_insert(root, \
152 arg1); \
153 checkmem(__ret == 0); \
154 } else { \
155 root = arg1; \
156 } \
157 if(arg2) { \
158 int __ret \
159 = asn1p_constraint_insert(root, arg2); \
160 checkmem(__ret == 0); \
161 } \
162 } while(0)
163
164
vlm9283dbe2004-08-18 04:59:12 +0000165#line 58 "asn1p_y.y"
vlmfa67ddc2004-06-03 03:38:44 +0000166typedef union {
167 asn1p_t *a_grammar;
168 asn1p_module_flags_e a_module_flags;
169 asn1p_module_t *a_module;
170 asn1p_expr_type_e a_type; /* ASN.1 Type */
171 asn1p_expr_t *a_expr; /* Constructed collection */
172 asn1p_constraint_t *a_constr; /* Constraint */
173 enum asn1p_constraint_type_e a_ctype;/* Constraint type */
174 asn1p_xports_t *a_xports; /* IMports/EXports */
175 asn1p_oid_t *a_oid; /* Object Identifier */
176 asn1p_oid_arc_t a_oid_arc; /* Single OID's arc */
177 struct asn1p_type_tag_s a_tag; /* A tag */
178 asn1p_ref_t *a_ref; /* Reference to custom type */
179 asn1p_wsyntx_t *a_wsynt; /* WITH SYNTAX contents */
180 asn1p_wsyntx_chunk_t *a_wchunk; /* WITH SYNTAX chunk */
181 struct asn1p_ref_component_s a_refcomp; /* Component of a reference */
182 asn1p_value_t *a_value; /* Number, DefinedValue, etc */
183 struct asn1p_param_s a_parg; /* A parameter argument */
184 asn1p_paramlist_t *a_plist; /* A pargs list */
185 enum asn1p_expr_marker_e a_marker; /* OPTIONAL/DEFAULT */
186 enum asn1p_constr_pres_e a_pres; /* PRESENT/ABSENT/OPTIONAL */
187 asn1_integer_t a_int;
188 char *tv_str;
189 struct {
190 char *buf;
191 int len;
192 } tv_opaque;
193 struct {
194 char *name;
195 struct asn1p_type_tag_s tag;
196 } tv_nametag;
vlm6f5eb0b2004-08-13 12:35:09 +0000197} YYSTYPE;
198#include <stdio.h>
199
200#ifndef __cplusplus
201#ifndef __STDC__
202#define const
203#endif
vlmfa67ddc2004-06-03 03:38:44 +0000204#endif
205
206
207
vlmec8f6812004-08-22 03:19:54 +0000208#define YYFINAL 391
vlm6f5eb0b2004-08-13 12:35:09 +0000209#define YYFLAG -32768
vlm9283dbe2004-08-18 04:59:12 +0000210#define YYNTBASE 115
vlmfa67ddc2004-06-03 03:38:44 +0000211
vlm5f0128b2004-08-20 13:25:29 +0000212#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 212)
vlmfa67ddc2004-06-03 03:38:44 +0000213
vlm6f5eb0b2004-08-13 12:35:09 +0000214static const char yytranslate[] = { 0,
215 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
216 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
217 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
vlm9283dbe2004-08-18 04:59:12 +0000218 2, 2, 111, 2, 2, 2, 2, 2, 2, 106,
219 107, 2, 2, 109, 2, 112, 2, 2, 2, 2,
220 2, 2, 2, 2, 2, 2, 2, 110, 108, 113,
221 2, 2, 2, 114, 2, 2, 2, 2, 2, 2,
vlm6f5eb0b2004-08-13 12:35:09 +0000222 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
223 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
vlm9283dbe2004-08-18 04:59:12 +0000224 2, 2, 2, 97, 2, 2, 2, 2, 2, 2,
vlm6f5eb0b2004-08-13 12:35:09 +0000225 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
226 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
vlm9283dbe2004-08-18 04:59:12 +0000227 2, 2, 104, 99, 105, 2, 2, 2, 2, 2,
vlm6f5eb0b2004-08-13 12:35:09 +0000228 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
229 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
230 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
231 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
232 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
233 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
234 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
235 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
236 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
237 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
238 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
239 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
240 2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
241 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
242 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
243 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
244 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
245 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
246 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
247 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
248 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
vlm9283dbe2004-08-18 04:59:12 +0000249 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
250 98, 100, 101, 102, 103
vlm6f5eb0b2004-08-13 12:35:09 +0000251};
vlmfa67ddc2004-06-03 03:38:44 +0000252
vlm6f5eb0b2004-08-13 12:35:09 +0000253#if YYDEBUG != 0
254static const short yyprhs[] = { 0,
255 0, 2, 4, 7, 16, 17, 19, 23, 26, 28,
256 31, 33, 38, 40, 41, 43, 45, 48, 51, 54,
vlm9283dbe2004-08-18 04:59:12 +0000257 57, 60, 63, 64, 66, 68, 71, 73, 75, 77,
258 79, 81, 82, 86, 88, 92, 95, 97, 100, 105,
259 107, 111, 113, 115, 119, 123, 126, 128, 132, 134,
260 136, 143, 145, 147, 148, 150, 155, 160, 164, 171,
261 173, 177, 179, 183, 187, 189, 193, 195, 197, 199,
vlmec8f6812004-08-22 03:19:54 +0000262 203, 207, 211, 213, 215, 219, 222, 224, 230, 231,
263 233, 235, 239, 242, 247, 252, 253, 255, 256, 263,
264 265, 268, 270, 272, 274, 278, 282, 285, 287, 289,
265 294, 299, 304, 309, 314, 316, 321, 326, 328, 332,
266 334, 338, 342, 344, 348, 350, 354, 356, 358, 360,
267 362, 367, 368, 372, 374, 376, 378, 380, 382, 384,
268 388, 390, 393, 395, 397, 399, 401, 404, 407, 409,
269 411, 414, 417, 419, 421, 423, 425, 428, 430, 433,
270 435, 437, 439, 441, 443, 445, 447, 449, 451, 453,
271 455, 457, 459, 461, 463, 465, 467, 469, 471, 472,
272 474, 476, 481, 485, 490, 492, 496, 502, 504, 508,
273 512, 516, 521, 525, 527, 531, 535, 539, 543, 545,
274 547, 549, 552, 555, 559, 561, 563, 565, 567, 569,
275 571, 573, 579, 581, 585, 587, 591, 592, 594, 596,
276 598, 600, 602, 604, 608, 613, 615, 619, 622, 626,
277 628, 632, 633, 635, 637, 640, 642, 644, 645, 649,
278 652, 656, 658, 662, 664, 669, 674, 676, 678, 680,
279 682, 683, 685, 687, 690, 693, 695, 697, 699, 701,
280 703
vlm6f5eb0b2004-08-13 12:35:09 +0000281};
vlmfa67ddc2004-06-03 03:38:44 +0000282
vlm9283dbe2004-08-18 04:59:12 +0000283static const short yyrhs[] = { 116,
vlm5f0128b2004-08-20 13:25:29 +0000284 0, 117, 0, 116, 117, 0, 208, 118, 34, 122,
vlm9283dbe2004-08-18 04:59:12 +0000285 3, 21, 125, 39, 0, 0, 119, 0, 104, 120,
286 105, 0, 104, 105, 0, 121, 0, 120, 121, 0,
vlm5f0128b2004-08-20 13:25:29 +0000287 210, 0, 210, 106, 9, 107, 0, 9, 0, 0,
vlm9283dbe2004-08-18 04:59:12 +0000288 123, 0, 124, 0, 123, 124, 0, 41, 84, 0,
289 52, 84, 0, 20, 84, 0, 43, 53, 0, 12,
290 57, 0, 0, 126, 0, 127, 0, 126, 127, 0,
vlmec8f6812004-08-22 03:19:54 +0000291 129, 0, 134, 0, 140, 0, 166, 0, 137, 0,
292 0, 38, 12, 128, 0, 174, 0, 54, 130, 108,
vlm9283dbe2004-08-18 04:59:12 +0000293 0, 54, 46, 0, 131, 0, 130, 131, 0, 132,
vlm5f0128b2004-08-20 13:25:29 +0000294 46, 208, 118, 0, 133, 0, 132, 109, 133, 0,
295 208, 0, 210, 0, 42, 135, 108, 0, 42, 17,
vlm9283dbe2004-08-18 04:59:12 +0000296 108, 0, 42, 108, 0, 136, 0, 135, 109, 136,
vlm5f0128b2004-08-20 13:25:29 +0000297 0, 208, 0, 210, 0, 208, 138, 3, 104, 139,
vlmec8f6812004-08-22 03:19:54 +0000298 105, 0, 161, 0, 171, 0, 0, 181, 0, 208,
299 3, 206, 87, 0, 208, 3, 206, 159, 0, 208,
300 3, 149, 0, 208, 104, 141, 105, 3, 159, 0,
vlm5f0128b2004-08-20 13:25:29 +0000301 142, 0, 141, 109, 142, 0, 208, 0, 208, 110,
vlmec8f6812004-08-22 03:19:54 +0000302 210, 0, 171, 110, 210, 0, 144, 0, 143, 109,
303 144, 0, 159, 0, 210, 0, 146, 0, 145, 109,
304 146, 0, 211, 159, 198, 0, 30, 68, 159, 0,
305 158, 0, 148, 0, 147, 109, 148, 0, 211, 159,
306 0, 158, 0, 28, 104, 151, 105, 153, 0, 0,
307 88, 0, 152, 0, 151, 109, 152, 0, 164, 198,
308 0, 164, 159, 198, 150, 0, 164, 164, 198, 150,
309 0, 0, 154, 0, 0, 95, 82, 104, 155, 156,
310 105, 0, 157, 0, 156, 157, 0, 4, 0, 164,
311 0, 102, 0, 102, 111, 169, 0, 102, 111, 205,
312 0, 160, 178, 0, 173, 0, 174, 0, 27, 104,
313 147, 105, 0, 78, 104, 145, 105, 0, 79, 104,
314 145, 105, 0, 78, 178, 68, 160, 0, 79, 178,
315 68, 160, 0, 18, 0, 18, 35, 25, 210, 0,
316 208, 104, 143, 105, 0, 161, 0, 56, 68, 161,
317 0, 11, 0, 11, 112, 208, 0, 11, 112, 210,
318 0, 209, 0, 209, 112, 162, 0, 163, 0, 162,
319 112, 163, 0, 165, 0, 165, 0, 13, 0, 14,
320 0, 210, 138, 3, 167, 0, 0, 104, 168, 170,
321 0, 5, 0, 7, 0, 6, 0, 205, 0, 169,
322 0, 210, 0, 208, 112, 210, 0, 4, 0, 170,
323 4, 0, 24, 0, 63, 0, 76, 0, 172, 0,
324 67, 81, 0, 65, 51, 0, 77, 0, 44, 0,
325 36, 71, 0, 26, 81, 0, 91, 0, 47, 0,
326 58, 0, 40, 0, 22, 81, 0, 171, 0, 172,
327 202, 0, 23, 0, 48, 0, 49, 0, 50, 0,
328 59, 0, 64, 0, 74, 0, 83, 0, 85, 0,
329 90, 0, 92, 0, 93, 0, 94, 0, 66, 0,
330 99, 0, 100, 0, 97, 0, 98, 0, 96, 0,
331 0, 179, 0, 180, 0, 80, 106, 181, 107, 0,
332 106, 181, 107, 0, 180, 106, 181, 107, 0, 182,
333 0, 182, 109, 102, 0, 182, 109, 102, 109, 182,
334 0, 183, 0, 182, 175, 183, 0, 182, 176, 183,
335 0, 183, 177, 183, 0, 185, 106, 181, 107, 0,
336 106, 181, 107, 0, 186, 0, 186, 184, 186, 0,
337 61, 184, 186, 0, 186, 184, 60, 0, 61, 184,
338 60, 0, 192, 0, 187, 0, 101, 0, 101, 113,
339 0, 113, 101, 0, 113, 101, 113, 0, 80, 0,
340 46, 0, 205, 0, 210, 0, 6, 0, 45, 0,
341 86, 0, 95, 30, 104, 188, 105, 0, 189, 0,
342 188, 109, 189, 0, 102, 0, 210, 178, 190, 0,
343 0, 191, 0, 73, 0, 15, 0, 69, 0, 193,
344 0, 194, 0, 104, 208, 105, 0, 193, 104, 195,
345 105, 0, 196, 0, 195, 109, 196, 0, 114, 197,
346 0, 114, 112, 197, 0, 210, 0, 197, 112, 210,
347 0, 0, 199, 0, 69, 0, 33, 200, 0, 186,
348 0, 171, 0, 0, 104, 201, 170, 0, 104, 105,
349 0, 104, 203, 105, 0, 204, 0, 203, 109, 204,
350 0, 210, 0, 210, 106, 205, 107, 0, 210, 106,
351 169, 107, 0, 205, 0, 102, 0, 9, 0, 10,
352 0, 0, 207, 0, 103, 0, 103, 52, 0, 103,
353 41, 0, 11, 0, 12, 0, 12, 0, 8, 0,
354 210, 0, 210, 207, 0
vlm6f5eb0b2004-08-13 12:35:09 +0000355};
vlmfa67ddc2004-06-03 03:38:44 +0000356
357#endif
358
vlm6f5eb0b2004-08-13 12:35:09 +0000359#if YYDEBUG != 0
360static const short yyrline[] = { 0,
vlm5f0128b2004-08-20 13:25:29 +0000361 298, 304, 310, 326, 351, 353, 356, 360, 365, 372,
362 380, 385, 389, 398, 400, 408, 412, 420, 424, 427,
363 430, 434, 454, 456, 464, 468, 500, 504, 513, 520,
364 533, 540, 542, 554, 567, 574, 579, 585, 591, 600,
365 606, 612, 619, 627, 631, 634, 641, 647, 653, 660,
vlmec8f6812004-08-22 03:19:54 +0000366 669, 679, 687, 695, 697, 709, 721, 728, 744, 753,
367 763, 773, 778, 785, 795, 801, 807, 811, 823, 829,
368 835, 843, 850, 855, 861, 867, 874, 879, 889, 891,
369 894, 902, 908, 917, 923, 940, 942, 947, 951, 956,
370 961, 967, 971, 982, 991, 1000, 1011, 1032, 1036, 1042,
371 1048, 1054, 1060, 1068, 1076, 1082, 1097, 1121, 1128, 1142,
372 1151, 1161, 1171, 1179, 1200, 1209, 1218, 1219, 1221, 1228,
373 1240, 1250, 1252, 1257, 1261, 1265, 1269, 1272, 1277, 1289,
374 1305, 1316, 1330, 1332, 1333, 1334, 1335, 1336, 1337, 1338,
375 1339, 1340, 1341, 1342, 1348, 1350, 1351, 1354, 1361, 1373,
376 1375, 1379, 1383, 1384, 1385, 1386, 1387, 1391, 1392, 1393,
377 1394, 1398, 1399, 1406, 1406, 1407, 1407, 1408, 1410, 1412,
378 1417, 1421, 1430, 1434, 1439, 1443, 1449, 1459, 1463, 1466,
379 1469, 1474, 1483, 1491, 1497, 1504, 1512, 1520, 1529, 1532,
380 1537, 1539, 1540, 1541, 1544, 1548, 1553, 1557, 1568, 1573,
381 1578, 1585, 1591, 1595, 1600, 1606, 1618, 1620, 1623, 1627,
382 1630, 1635, 1639, 1647, 1662, 1668, 1675, 1688, 1700, 1715,
383 1719, 1736, 1738, 1741, 1745, 1751, 1754, 1756, 1756, 1776,
384 1781, 1786, 1792, 1798, 1806, 1814, 1822, 1829, 1839, 1844,
385 1874, 1876, 1879, 1884, 1888, 1894, 1899, 1906, 1913, 1920,
386 1925
vlm6f5eb0b2004-08-13 12:35:09 +0000387};
388#endif
389
390
391#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
392
393static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ",
394"TOK_opaque","TOK_bstring","TOK_cstring","TOK_hstring","TOK_identifier","TOK_number",
vlm9283dbe2004-08-18 04:59:12 +0000395"TOK_number_negative","TOK_typereference","TOK_capitalreference","TOK_typefieldreference",
vlm6f5eb0b2004-08-13 12:35:09 +0000396"TOK_valuefieldreference","TOK_ABSENT","TOK_ABSTRACT_SYNTAX","TOK_ALL","TOK_ANY",
397"TOK_APPLICATION","TOK_AUTOMATIC","TOK_BEGIN","TOK_BIT","TOK_BMPString","TOK_BOOLEAN",
398"TOK_BY","TOK_CHARACTER","TOK_CHOICE","TOK_CLASS","TOK_COMPONENT","TOK_COMPONENTS",
399"TOK_CONSTRAINED","TOK_CONTAINING","TOK_DEFAULT","TOK_DEFINITIONS","TOK_DEFINED",
vlm9283dbe2004-08-18 04:59:12 +0000400"TOK_EMBEDDED","TOK_ENCODED","TOK_ENCODING_CONTROL","TOK_END","TOK_ENUMERATED",
401"TOK_EXPLICIT","TOK_EXPORTS","TOK_EXTENSIBILITY","TOK_EXTERNAL","TOK_FALSE",
402"TOK_FROM","TOK_GeneralizedTime","TOK_GeneralString","TOK_GraphicString","TOK_IA5String",
403"TOK_IDENTIFIER","TOK_IMPLICIT","TOK_IMPLIED","TOK_IMPORTS","TOK_INCLUDES","TOK_INSTANCE",
404"TOK_INSTRUCTIONS","TOK_INTEGER","TOK_ISO646String","TOK_MAX","TOK_MIN","TOK_MINUS_INFINITY",
405"TOK_NULL","TOK_NumericString","TOK_OBJECT","TOK_ObjectDescriptor","TOK_OCTET",
406"TOK_OF","TOK_OPTIONAL","TOK_PATTERN","TOK_PDV","TOK_PLUS_INFINITY","TOK_PRESENT",
407"TOK_PrintableString","TOK_PRIVATE","TOK_REAL","TOK_RELATIVE_OID","TOK_SEQUENCE",
408"TOK_SET","TOK_SIZE","TOK_STRING","TOK_SYNTAX","TOK_T61String","TOK_TAGS","TOK_TeletexString",
409"TOK_TRUE","TOK_TYPE_IDENTIFIER","TOK_UNIQUE","TOK_UNIVERSAL","TOK_UniversalString",
410"TOK_UTCTime","TOK_UTF8String","TOK_VideotexString","TOK_VisibleString","TOK_WITH",
411"TOK_EXCEPT","'^'","TOK_INTERSECTION","'|'","TOK_UNION","TOK_TwoDots","TOK_ThreeDots",
412"TOK_tag","'{'","'}'","'('","')'","';'","','","':'","'!'","'.'","'<'","'@'",
413"ParsedGrammar","ModuleList","ModuleSpecification","optObjectIdentifier","ObjectIdentifier",
vlm6f5eb0b2004-08-13 12:35:09 +0000414"ObjectIdentifierBody","ObjectIdentifierElement","optModuleSpecificationFlags",
415"ModuleSpecificationFlags","ModuleSpecificationFlag","optModuleSpecificationBody",
vlm9283dbe2004-08-18 04:59:12 +0000416"ModuleSpecificationBody","ModuleSpecificationElement","@1","ImportsDefinition",
417"ImportsBundleSet","ImportsBundle","ImportsList","ImportsElement","ExportsDefinition",
418"ExportsBody","ExportsElement","ValueSetDefinition","DefinedTypeRef","optValueSetBody",
419"DataTypeReference","ParameterArgumentList","ParameterArgumentName","ActualParameterList",
vlmec8f6812004-08-22 03:19:54 +0000420"ActualParameter","ComponentTypeLists","ComponentType","AlternativeTypeLists",
421"AlternativeType","ClassDeclaration","optUnique","ClassFieldList","ClassField",
422"optWithSyntax","WithSyntax","@2","WithSyntaxFormat","WithSyntaxFormatToken",
423"ExtensionAndException","Type","TypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList",
vlm5f0128b2004-08-20 13:25:29 +0000424"ComplexTypeReferenceElement","ClassFieldIdentifier","ClassFieldName","ValueDefinition",
425"InlineOrDefinedValue","@3","DefinedValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
vlmec8f6812004-08-22 03:19:54 +0000426"BasicType","BasicString","Union","Intersection","Except","optConstraints","Constraints",
427"SetOfConstraints","ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement",
428"ConstraintRangeSpec","ConstraintSpec","ConstraintValue","WithComponents","WithComponentsList",
429"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
430"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
431"ComponentIdList","optMarker","Marker","DefaultValue","@4","UniverationDefinition",
432"UniverationList","UniverationElement","SignedNumber","optTag","Tag","TypeRefName",
433"ObjectClassReference","Identifier","TaggedIdentifier", NULL
vlm6f5eb0b2004-08-13 12:35:09 +0000434};
435#endif
436
437static const short yyr1[] = { 0,
vlm9283dbe2004-08-18 04:59:12 +0000438 115, 116, 116, 117, 118, 118, 119, 119, 120, 120,
439 121, 121, 121, 122, 122, 123, 123, 124, 124, 124,
440 124, 124, 125, 125, 126, 126, 127, 127, 127, 127,
441 127, 128, 127, 127, 129, 129, 130, 130, 131, 132,
442 132, 133, 133, 134, 134, 134, 135, 135, 136, 136,
443 137, 138, 138, 139, 139, 140, 140, 140, 140, 141,
444 141, 142, 142, 142, 143, 143, 144, 144, 145, 145,
vlmec8f6812004-08-22 03:19:54 +0000445 146, 146, 146, 147, 147, 148, 148, 149, 150, 150,
446 151, 151, 152, 152, 152, 153, 153, 155, 154, 156,
447 156, 157, 157, 158, 158, 158, 159, 160, 160, 160,
448 160, 160, 160, 160, 160, 160, 160, 160, 160, 161,
449 161, 161, 161, 161, 162, 162, 163, 164, 165, 165,
450 166, 168, 167, 167, 167, 167, 167, 167, 169, 169,
451 170, 170, 171, 171, 171, 171, 171, 171, 171, 171,
452 171, 171, 171, 171, 172, 172, 172, 173, 173, 174,
453 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
454 174, 174, 174, 175, 175, 176, 176, 177, 178, 178,
455 179, 179, 180, 180, 181, 181, 181, 182, 182, 182,
456 182, 183, 183, 183, 183, 183, 183, 183, 183, 183,
457 184, 184, 184, 184, 185, 185, 186, 186, 186, 186,
458 186, 187, 188, 188, 189, 189, 190, 190, 191, 191,
459 191, 192, 192, 193, 194, 195, 195, 196, 196, 197,
460 197, 198, 198, 199, 199, 200, 200, 201, 200, 202,
461 202, 203, 203, 204, 204, 204, 204, 204, 205, 205,
462 206, 206, 207, 207, 207, 208, 208, 209, 210, 211,
463 211
vlm6f5eb0b2004-08-13 12:35:09 +0000464};
465
466static const short yyr2[] = { 0,
467 1, 1, 2, 8, 0, 1, 3, 2, 1, 2,
468 1, 4, 1, 0, 1, 1, 2, 2, 2, 2,
vlm9283dbe2004-08-18 04:59:12 +0000469 2, 2, 0, 1, 1, 2, 1, 1, 1, 1,
470 1, 0, 3, 1, 3, 2, 1, 2, 4, 1,
471 3, 1, 1, 3, 3, 2, 1, 3, 1, 1,
472 6, 1, 1, 0, 1, 4, 4, 3, 6, 1,
473 3, 1, 3, 3, 1, 3, 1, 1, 1, 3,
vlmec8f6812004-08-22 03:19:54 +0000474 3, 3, 1, 1, 3, 2, 1, 5, 0, 1,
475 1, 3, 2, 4, 4, 0, 1, 0, 6, 1,
476 2, 1, 1, 1, 3, 3, 2, 1, 1, 4,
477 4, 4, 4, 4, 1, 4, 4, 1, 3, 1,
vlm5f0128b2004-08-20 13:25:29 +0000478 3, 3, 1, 3, 1, 3, 1, 1, 1, 1,
479 4, 0, 3, 1, 1, 1, 1, 1, 1, 3,
480 1, 2, 1, 1, 1, 1, 2, 2, 1, 1,
481 2, 2, 1, 1, 1, 1, 2, 1, 2, 1,
vlm9283dbe2004-08-18 04:59:12 +0000482 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
vlmec8f6812004-08-22 03:19:54 +0000483 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
484 1, 4, 3, 4, 1, 3, 5, 1, 3, 3,
485 3, 4, 3, 1, 3, 3, 3, 3, 1, 1,
486 1, 2, 2, 3, 1, 1, 1, 1, 1, 1,
487 1, 5, 1, 3, 1, 3, 0, 1, 1, 1,
488 1, 1, 1, 3, 4, 1, 3, 2, 3, 1,
489 3, 0, 1, 1, 2, 1, 1, 0, 3, 2,
490 3, 1, 3, 1, 4, 4, 1, 1, 1, 1,
491 0, 1, 1, 2, 2, 1, 1, 1, 1, 1,
492 2
vlm6f5eb0b2004-08-13 12:35:09 +0000493};
494
495static const short yydefact[] = { 0,
vlmec8f6812004-08-22 03:19:54 +0000496 246, 247, 1, 2, 5, 3, 0, 0, 6, 249,
vlm6f5eb0b2004-08-13 12:35:09 +0000497 13, 8, 0, 9, 11, 14, 7, 10, 0, 0,
vlm9283dbe2004-08-18 04:59:12 +0000498 0, 0, 0, 0, 0, 15, 16, 0, 22, 20,
vlmec8f6812004-08-22 03:19:54 +0000499 18, 21, 19, 0, 17, 12, 23, 150, 0, 0,
500 151, 152, 153, 0, 154, 155, 163, 156, 157, 158,
501 159, 160, 161, 162, 0, 24, 25, 27, 28, 31,
vlm9283dbe2004-08-18 04:59:12 +0000502 29, 30, 34, 0, 0, 32, 0, 46, 0, 47,
503 49, 50, 36, 0, 37, 0, 40, 42, 43, 4,
vlmec8f6812004-08-22 03:19:54 +0000504 26, 241, 110, 248, 0, 133, 0, 0, 146, 140,
505 144, 145, 134, 0, 0, 135, 139, 143, 0, 0,
506 52, 53, 136, 113, 0, 33, 45, 44, 0, 35,
507 38, 0, 0, 0, 243, 58, 0, 242, 0, 147,
508 142, 141, 138, 137, 0, 60, 0, 62, 0, 0,
509 0, 48, 5, 41, 0, 245, 244, 110, 248, 105,
510 0, 0, 169, 169, 56, 57, 169, 108, 148, 136,
511 98, 99, 0, 111, 112, 0, 0, 0, 0, 54,
512 119, 120, 114, 115, 117, 124, 126, 125, 239, 240,
513 122, 121, 128, 127, 0, 129, 39, 0, 81, 222,
514 118, 0, 0, 0, 0, 0, 0, 0, 170, 171,
515 0, 0, 97, 0, 149, 0, 0, 61, 64, 63,
516 199, 200, 196, 0, 195, 201, 0, 0, 0, 0,
517 55, 175, 178, 0, 184, 190, 189, 212, 213, 197,
518 198, 0, 0, 0, 86, 0, 0, 224, 222, 222,
519 83, 223, 0, 94, 0, 74, 77, 250, 0, 109,
520 0, 0, 0, 69, 73, 0, 0, 0, 0, 0,
521 0, 238, 230, 0, 232, 237, 234, 0, 65, 67,
522 68, 59, 191, 0, 0, 0, 0, 0, 51, 166,
523 167, 164, 165, 0, 0, 0, 168, 0, 0, 0,
524 0, 116, 131, 123, 130, 0, 78, 87, 82, 228,
525 227, 226, 225, 79, 79, 106, 0, 100, 0, 251,
526 76, 0, 0, 101, 0, 222, 173, 103, 0, 102,
527 104, 231, 0, 0, 107, 0, 192, 193, 188, 186,
528 0, 214, 183, 176, 179, 180, 181, 0, 187, 185,
529 0, 0, 216, 132, 0, 0, 80, 84, 85, 95,
530 96, 75, 172, 72, 70, 71, 174, 233, 0, 0,
531 66, 194, 205, 0, 203, 169, 0, 182, 0, 218,
532 220, 215, 0, 88, 229, 236, 235, 202, 0, 207,
533 177, 219, 0, 217, 0, 204, 210, 211, 209, 206,
534 208, 221, 92, 0, 90, 93, 89, 91, 0, 0,
535 0
vlm6f5eb0b2004-08-13 12:35:09 +0000536};
537
vlmec8f6812004-08-22 03:19:54 +0000538static const short yydefgoto[] = { 389,
vlm9283dbe2004-08-18 04:59:12 +0000539 3, 4, 8, 9, 13, 14, 25, 26, 27, 55,
540 56, 57, 106, 58, 74, 75, 76, 77, 59, 69,
vlmec8f6812004-08-22 03:19:54 +0000541 70, 60, 100, 210, 61, 125, 126, 258, 259, 243,
542 244, 235, 236, 116, 338, 178, 179, 287, 288, 375,
543 384, 385, 245, 260, 147, 148, 163, 164, 180, 181,
544 62, 172, 223, 173, 284, 149, 150, 151, 152, 275,
545 276, 278, 188, 189, 190, 211, 212, 213, 265, 214,
546 215, 216, 354, 355, 380, 381, 217, 218, 219, 332,
547 333, 360, 231, 232, 293, 336, 195, 254, 255, 220,
548 117, 118, 153, 104, 221, 246
vlm6f5eb0b2004-08-13 12:35:09 +0000549};
550
vlmec8f6812004-08-22 03:19:54 +0000551static const short yypact[] = { 174,
552-32768,-32768, 174,-32768, -76,-32768, 35, 104,-32768,-32768,
553-32768,-32768, 45,-32768, -49, 182,-32768,-32768, 70, 86,
554 62, 71, 119, 112, 196, 182,-32768, 115,-32768,-32768,
555-32768,-32768,-32768, 188,-32768,-32768, 431,-32768, 207, 23,
556-32768,-32768,-32768, 159,-32768,-32768,-32768,-32768,-32768,-32768,
557-32768,-32768,-32768,-32768, 185, 431,-32768,-32768,-32768,-32768,
558-32768,-32768,-32768, 192, 209,-32768, 129,-32768, 103,-32768,
559-32768,-32768,-32768, 40,-32768, -5,-32768,-32768,-32768,-32768,
560-32768, -6, 134,-32768, 146,-32768, 179, 194,-32768,-32768,
561-32768,-32768,-32768, 220, 201,-32768,-32768,-32768, 729, 272,
562-32768,-32768,-32768, 172, 286,-32768,-32768,-32768, 232,-32768,
563-32768, 174, 232, 187, 37,-32768, 592,-32768, 232,-32768,
564-32768,-32768,-32768,-32768, 32,-32768, 183, 184, 191, 216,
565 54,-32768, -76,-32768, 216,-32768,-32768, -31, 193, 270,
566 206, 240, 77, 102,-32768,-32768, 50,-32768,-32768, 208,
567-32768,-32768, 217,-32768,-32768, 308, 729, 305, 305, 74,
568-32768,-32768, 214,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
569-32768,-32768,-32768,-32768, 215,-32768,-32768, 57,-32768, 515,
570-32768, 295, 21, 276, 222, 42, 74, 261,-32768, 224,
571 42, 264,-32768, 11,-32768, 370, 669,-32768,-32768,-32768,
572-32768,-32768,-32768, -15,-32768,-32768, 304, 174, 74, 231,
573-32768, 164, 241, 233, -15,-32768,-32768, 234,-32768,-32768,
574-32768, 216, 336, 305, 246, 216, 309,-32768, 5, 5,
575-32768,-32768, 305, 235, 83,-32768,-32768, 239, 669,-32768,
576 74, 275, 92,-32768,-32768, 669, 237, 669, 74, 133,
577 669,-32768,-32768, 142,-32768,-32768, 242, 143,-32768,-32768,
578-32768,-32768, 238, 249, 82, 243, 250, 251,-32768,-32768,
579-32768,-32768,-32768, 255, 74, 74,-32768, 74, 74, 155,
580 245,-32768,-32768, 356,-32768, 279,-32768,-32768,-32768,-32768,
581-32768,-32768,-32768, 277, 277,-32768, 269,-32768, 21,-32768,
582-32768, 256, 669,-32768, 42, 5,-32768,-32768, 257,-32768,
583-32768,-32768, 15, 269,-32768, 370,-32768, 258,-32768,-32768,
584 24,-32768,-32768, 259,-32768,-32768,-32768, 262,-32768,-32768,
585 10, 149,-32768,-32768, 266, 336,-32768,-32768,-32768,-32768,
586-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 268, 273,
587-32768,-32768,-32768, 161,-32768, 50, 74,-32768, 305, 265,
588-32768,-32768, 245,-32768, 356,-32768,-32768,-32768, 24, 80,
589 204, 265, 305,-32768, 96,-32768,-32768,-32768,-32768,-32768,
590-32768,-32768,-32768, 13,-32768,-32768,-32768,-32768, 373, 379,
591-32768
vlm6f5eb0b2004-08-13 12:35:09 +0000592};
593
594static const short yypgoto[] = {-32768,
vlmec8f6812004-08-22 03:19:54 +0000595-32768, 380, 254,-32768,-32768, 371,-32768,-32768, 363,-32768,
596-32768, 334,-32768,-32768,-32768, 317,-32768, 285,-32768,-32768,
597 290,-32768, 337,-32768,-32768,-32768, 244,-32768, 87, 213,
598 100,-32768, 108,-32768, 113,-32768, 186,-32768,-32768,-32768,
599-32768, 25, -174, -110, -152, -50,-32768, 189, -177, -94,
600-32768,-32768,-32768, -220, 79, -54, -52,-32768, 19,-32768,
601-32768,-32768, -143,-32768,-32768, -102, 59, 47, 210,-32768,
602 -172,-32768,-32768, 52,-32768,-32768,-32768,-32768,-32768,-32768,
603 60, 63, -161,-32768,-32768,-32768,-32768,-32768, 111, -123,
604-32768, 200, 2,-32768, -7, -167
vlm6f5eb0b2004-08-13 12:35:09 +0000605};
606
607
vlmec8f6812004-08-22 03:19:54 +0000608#define YYLAST 820
vlm6f5eb0b2004-08-13 12:35:09 +0000609
610
611static const short yytable[] = { 15,
vlmec8f6812004-08-22 03:19:54 +0000612 192, 5, 230, 193, 5, 15, 146, 174, 237, 102,
613 102, 103, 103, 101, 101, 239, 383, 10, 10, 169,
614 170, 114, 10, 169, 170, 161, 162, 7, 10, 65,
615 10, 10, 72, 1, 2, 165, 79, 227, 64, 67,
616 112, 71, 10, 11, 127, 78, 103, 10, 65, 10,
617 1, 2, 10, 11, 292, 63, 19, 64, 166, 167,
618 168, 10, 169, 170, 1, 2, 79, 294, 295, 229,
619 256, 242, -246, 228, 63, 78, 340, 136, 28, 201,
620 119, 10, 169, 170, 247, 263, 262, 201, 137, 10,
621 169, 170, 320, 349, 377, 308, 115, 264, 311, 383,
622 128, 72, 127, 113, 103, 79, 268, 330, 161, 162,
623 71, 155, 252, 133, 78, 253, 252, 387, 202, 203,
624 154, 359, 234, 176, 237, 353, 202, 165, 301, 185,
625 68, 239, 175, 240, 204, 306, 156, 16, 302, 12,
626 157, 319, 29, 234, 346, 30, 309, 110, 378, 17,
627 199, 200, 379, 205, 31, 187, 185, 171, 128, 206,
628 201, 225, 10, 169, 170, 226, 10, 206, 207, 1,
629 2, 32, 291, 341, 103, 238, 328, 208, 238, 209,
630 186, 185, 187, 238, 1, 2, 257, 298, 261, 256,
631 350, 299, 344, 20, 82, 33, 304, 386, 34, 202,
632 305, 21, 83, 84, 73, 191, 386, 187, 37, 267,
633 108, 109, 370, 85, 329, 86, 285, 87, 66, 83,
634 84, 36, 22, 80, 23, 296, 120, 88, 161, 162,
635 85, 89, 86, 24, 87, 90, 107, 310, 91, 10,
636 206, 305, 1, 2, 88, 119, 312, 315, 89, 92,
637 313, 316, 90, 362, 93, 91, 94, 363, 95, 121,
638 270, 271, 272, 273, 122, 368, 92, 96, 97, 369,
639 123, 93, 274, 94, 129, 95, 10, 169, 170, 1,
640 2, 124, 98, 130, 96, 97, 83, 84, 131, 176,
641 135, 238, 158, 159, 160, 99, -247, 238, 175, 98,
642 270, 271, 272, 273, 182, 257, 176, 184, 261, 183,
643 197, 194, 10, 356, 201, 175, 10, 169, 170, 233,
644 196, 325, 326, 361, 327, 222, 224, 241, 248, 249,
645 85, 251, 86, 266, 87, 269, 277, 281, 279, 283,
646 286, 115, 303, 307, 88, 297, 321, 314, 89, 318,
647 317, 361, 90, 202, 322, 91, 324, 323, 331, 334,
648 335, 356, 343, 347, 337, 382, 92, 357, 358, 364,
649 352, 93, 390, 94, 366, 95, 373, 10, 391, 367,
650 138, 139, 6, 18, 96, 97, 177, 140, 35, 81,
651 111, 85, 38, 86, 206, 87, 141, 134, 132, 98,
652 198, 105, 351, 250, 345, 88, 342, 339, 388, 89,
653 282, 289, 290, 90, 365, 371, 91, 41, 42, 43,
654 376, 372, 374, 348, 280, 142, 0, 92, 45, 0,
655 0, 0, 93, 46, 94, 47, 95, 300, 10, 0,
656 0, 1, 2, 48, 0, 96, 97, 143, 144, 0,
657 0, 0, 49, 38, 50, 0, 0, 0, 0, 51,
658 98, 52, 53, 54, 0, 0, 0, 0, 39, 0,
659 0, 0, 40, 0, 0, 0, 0, 0, 41, 42,
660 43, 0, 0, 0, 44, 0, 0, 0, 0, 45,
661 0, 0, 0, 0, 46, 0, 47, 0, 0, 0,
662 0, 0, 0, 0, 48, 0, 0, 0, 0, 0,
663 0, 0, 0, 49, 0, 50, 0, 0, 0, 0,
664 51, 0, 52, 53, 54, 138, 139, 161, 162, 0,
665 0, 0, 140, 0, 0, 0, 85, 38, 86, 0,
666 87, 141, 0, 0, 0, 0, 0, 227, 0, 0,
667 88, 0, 0, 0, 89, 0, 0, 0, 90, 0,
668 0, 91, 41, 42, 43, 0, 0, 0, 0, 0,
669 142, 0, 92, 45, 0, 0, 0, 93, 46, 94,
670 47, 95, 0, 228, 0, 0, 0, 0, 48, 0,
671 96, 97, 143, 144, 0, 0, 0, 49, 0, 50,
672 0, 0, 138, 139, 51, 98, 52, 53, 54, 140,
673 0, 0, 0, 85, 38, 86, 0, 87, 141, 0,
674 0, 0, 0, 0, 0, 0, 0, 88, 0, 0,
675 0, 89, 0, 0, 0, 90, 0, 0, 91, 41,
676 42, 43, 0, 0, 0, 0, 0, 142, 0, 92,
677 45, 0, 0, 0, 93, 46, 94, 47, 95, 0,
678 0, 0, 0, 0, 0, 48, 0, 96, 97, 143,
679 144, 0, 0, 0, 49, 0, 50, 0, 145, 138,
680 139, 51, 98, 52, 53, 54, 140, 0, 0, 0,
vlm9283dbe2004-08-18 04:59:12 +0000681 85, 38, 86, 0, 87, 141, 0, 0, 0, 0,
vlmec8f6812004-08-22 03:19:54 +0000682 0, 0, 0, 0, 88, 0, 0, 0, 89, 0,
vlm9283dbe2004-08-18 04:59:12 +0000683 0, 0, 90, 0, 0, 91, 41, 42, 43, 0,
684 0, 0, 0, 0, 142, 0, 92, 45, 0, 0,
vlmec8f6812004-08-22 03:19:54 +0000685 0, 93, 46, 94, 47, 95, 0, 0, 0, 1,
686 2, 0, 48, 0, 96, 97, 143, 144, 0, 0,
687 85, 49, 86, 50, 87, 0, 0, 0, 51, 98,
688 52, 53, 54, 0, 88, 0, 0, 0, 89, 0,
689 0, 0, 90, 0, 0, 91, 0, 0, 0, 0,
690 0, 0, 0, 0, 0, 0, 92, 0, 0, 0,
691 0, 93, 0, 94, 0, 95, 0, 0, 0, 0,
692 0, 0, 0, 0, 96, 97, 0, 0, 0, 0,
693 0, 0, 0, 0, 0, 0, 0, 0, 0, 98
vlm6f5eb0b2004-08-13 12:35:09 +0000694};
695
696static const short yycheck[] = { 7,
vlmec8f6812004-08-22 03:19:54 +0000697 144, 0, 180, 147, 3, 13, 117, 131, 183, 64,
698 65, 64, 65, 64, 65, 183, 4, 8, 8, 9,
699 10, 28, 8, 9, 10, 13, 14, 104, 8, 37,
700 8, 8, 40, 11, 12, 130, 44, 33, 37, 17,
701 46, 40, 8, 9, 99, 44, 99, 8, 56, 8,
702 11, 12, 8, 9, 227, 37, 106, 56, 5, 6,
703 7, 8, 9, 10, 11, 12, 74, 229, 230, 180,
704 194, 30, 104, 69, 56, 74, 297, 41, 9, 6,
705 112, 8, 9, 10, 187, 101, 197, 6, 52, 8,
706 9, 10, 265, 314, 15, 248, 103, 113, 251, 4,
707 99, 109, 157, 109, 157, 113, 209, 280, 13, 14,
708 109, 119, 102, 112, 113, 105, 102, 105, 45, 46,
709 119, 112, 102, 131, 299, 102, 45, 222, 239, 80,
710 108, 299, 131, 184, 61, 246, 105, 34, 241, 105,
711 109, 60, 57, 102, 306, 84, 249, 108, 69, 105,
712 158, 159, 73, 80, 84, 106, 80, 104, 157, 86,
713 6, 105, 8, 9, 10, 109, 8, 86, 95, 11,
714 12, 53, 227, 297, 227, 183, 279, 104, 186, 106,
715 104, 80, 106, 191, 11, 12, 194, 105, 196, 313,
716 314, 109, 303, 12, 3, 84, 105, 375, 3, 45,
717 109, 20, 11, 12, 46, 104, 384, 106, 21, 208,
718 108, 109, 356, 22, 60, 24, 224, 26, 12, 11,
719 12, 107, 41, 39, 43, 233, 81, 36, 13, 14,
720 22, 40, 24, 52, 26, 44, 108, 105, 47, 8,
721 86, 109, 11, 12, 36, 112, 105, 105, 40, 58,
722 109, 109, 44, 105, 63, 47, 65, 109, 67, 81,
723 97, 98, 99, 100, 71, 105, 58, 76, 77, 109,
724 51, 63, 109, 65, 3, 67, 8, 9, 10, 11,
725 12, 81, 91, 112, 76, 77, 11, 12, 3, 297,
726 104, 299, 110, 110, 104, 104, 104, 305, 297, 91,
727 97, 98, 99, 100, 35, 313, 314, 68, 316, 104,
728 3, 104, 8, 321, 6, 314, 8, 9, 10, 25,
729 104, 275, 276, 331, 278, 112, 112, 106, 68, 106,
730 22, 68, 24, 30, 26, 105, 96, 104, 106, 4,
731 95, 103, 68, 107, 36, 111, 104, 106, 40, 101,
732 113, 359, 44, 45, 105, 47, 102, 107, 114, 4,
733 82, 369, 107, 107, 88, 373, 58, 109, 107, 104,
734 113, 63, 0, 65, 107, 67, 112, 8, 0, 107,
735 11, 12, 3, 13, 76, 77, 133, 18, 26, 56,
736 74, 22, 23, 24, 86, 26, 27, 113, 109, 91,
737 157, 65, 316, 191, 305, 36, 299, 295, 384, 40,
738 222, 226, 104, 44, 336, 357, 47, 48, 49, 50,
739 369, 359, 363, 313, 215, 56, -1, 58, 59, -1,
740 -1, -1, 63, 64, 65, 66, 67, 238, 8, -1,
741 -1, 11, 12, 74, -1, 76, 77, 78, 79, -1,
742 -1, -1, 83, 23, 85, -1, -1, -1, -1, 90,
743 91, 92, 93, 94, -1, -1, -1, -1, 38, -1,
744 -1, -1, 42, -1, -1, -1, -1, -1, 48, 49,
745 50, -1, -1, -1, 54, -1, -1, -1, -1, 59,
746 -1, -1, -1, -1, 64, -1, 66, -1, -1, -1,
747 -1, -1, -1, -1, 74, -1, -1, -1, -1, -1,
748 -1, -1, -1, 83, -1, 85, -1, -1, -1, -1,
749 90, -1, 92, 93, 94, 11, 12, 13, 14, -1,
750 -1, -1, 18, -1, -1, -1, 22, 23, 24, -1,
751 26, 27, -1, -1, -1, -1, -1, 33, -1, -1,
752 36, -1, -1, -1, 40, -1, -1, -1, 44, -1,
753 -1, 47, 48, 49, 50, -1, -1, -1, -1, -1,
754 56, -1, 58, 59, -1, -1, -1, 63, 64, 65,
755 66, 67, -1, 69, -1, -1, -1, -1, 74, -1,
756 76, 77, 78, 79, -1, -1, -1, 83, -1, 85,
757 -1, -1, 11, 12, 90, 91, 92, 93, 94, 18,
758 -1, -1, -1, 22, 23, 24, -1, 26, 27, -1,
759 -1, -1, -1, -1, -1, -1, -1, 36, -1, -1,
760 -1, 40, -1, -1, -1, 44, -1, -1, 47, 48,
761 49, 50, -1, -1, -1, -1, -1, 56, -1, 58,
762 59, -1, -1, -1, 63, 64, 65, 66, 67, -1,
763 -1, -1, -1, -1, -1, 74, -1, 76, 77, 78,
764 79, -1, -1, -1, 83, -1, 85, -1, 87, 11,
765 12, 90, 91, 92, 93, 94, 18, -1, -1, -1,
vlm6f5eb0b2004-08-13 12:35:09 +0000766 22, 23, 24, -1, 26, 27, -1, -1, -1, -1,
vlmec8f6812004-08-22 03:19:54 +0000767 -1, -1, -1, -1, 36, -1, -1, -1, 40, -1,
vlm9283dbe2004-08-18 04:59:12 +0000768 -1, -1, 44, -1, -1, 47, 48, 49, 50, -1,
769 -1, -1, -1, -1, 56, -1, 58, 59, -1, -1,
vlmec8f6812004-08-22 03:19:54 +0000770 -1, 63, 64, 65, 66, 67, -1, -1, -1, 11,
771 12, -1, 74, -1, 76, 77, 78, 79, -1, -1,
772 22, 83, 24, 85, 26, -1, -1, -1, 90, 91,
773 92, 93, 94, -1, 36, -1, -1, -1, 40, -1,
774 -1, -1, 44, -1, -1, 47, -1, -1, -1, -1,
775 -1, -1, -1, -1, -1, -1, 58, -1, -1, -1,
776 -1, 63, -1, 65, -1, 67, -1, -1, -1, -1,
777 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
778 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91
vlm6f5eb0b2004-08-13 12:35:09 +0000779};
780/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
781#line 3 "/usr/share/bison.simple"
782/* This file comes from bison-1.28. */
783
784/* Skeleton output parser for bison,
785 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
786
787 This program is free software; you can redistribute it and/or modify
788 it under the terms of the GNU General Public License as published by
789 the Free Software Foundation; either version 2, or (at your option)
790 any later version.
791
792 This program is distributed in the hope that it will be useful,
793 but WITHOUT ANY WARRANTY; without even the implied warranty of
794 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
795 GNU General Public License for more details.
796
797 You should have received a copy of the GNU General Public License
798 along with this program; if not, write to the Free Software
799 Foundation, Inc., 59 Temple Place - Suite 330,
800 Boston, MA 02111-1307, USA. */
801
802/* As a special exception, when this file is copied by Bison into a
803 Bison output file, you may use that output file without restriction.
804 This special exception was added by the Free Software Foundation
805 in version 1.24 of Bison. */
806
807/* This is the parser code that is written into each bison parser
808 when the %semantic_parser declaration is not specified in the grammar.
809 It was written by Richard Stallman by simplifying the hairy parser
810 used when %semantic_parser is specified. */
811
812#ifndef YYSTACK_USE_ALLOCA
813#ifdef alloca
814#define YYSTACK_USE_ALLOCA
815#else /* alloca not defined */
816#ifdef __GNUC__
817#define YYSTACK_USE_ALLOCA
818#define alloca __builtin_alloca
819#else /* not GNU C. */
820#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
821#define YYSTACK_USE_ALLOCA
822#include <alloca.h>
823#else /* not sparc */
824/* We think this test detects Watcom and Microsoft C. */
825/* This used to test MSDOS, but that is a bad idea
826 since that symbol is in the user namespace. */
827#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
828#if 0 /* No need for malloc.h, which pollutes the namespace;
829 instead, just don't use alloca. */
830#include <malloc.h>
831#endif
832#else /* not MSDOS, or __TURBOC__ */
833#if defined(_AIX)
834/* I don't know what this was needed for, but it pollutes the namespace.
835 So I turned it off. rms, 2 May 1997. */
836/* #include <malloc.h> */
837 #pragma alloca
838#define YYSTACK_USE_ALLOCA
839#else /* not MSDOS, or __TURBOC__, or _AIX */
840#if 0
841#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
842 and on HPUX 10. Eventually we can turn this on. */
843#define YYSTACK_USE_ALLOCA
844#define alloca __builtin_alloca
845#endif /* __hpux */
846#endif
847#endif /* not _AIX */
848#endif /* not MSDOS, or __TURBOC__ */
849#endif /* not sparc */
850#endif /* not GNU C */
851#endif /* alloca not defined */
852#endif /* YYSTACK_USE_ALLOCA not defined */
853
854#ifdef YYSTACK_USE_ALLOCA
855#define YYSTACK_ALLOC alloca
vlmfa67ddc2004-06-03 03:38:44 +0000856#else
vlm6f5eb0b2004-08-13 12:35:09 +0000857#define YYSTACK_ALLOC malloc
vlmfa67ddc2004-06-03 03:38:44 +0000858#endif
859
vlm6f5eb0b2004-08-13 12:35:09 +0000860/* Note: there must be only one dollar sign in this file.
861 It is replaced by the list of actions, each action
862 as one case of the switch. */
vlmfa67ddc2004-06-03 03:38:44 +0000863
864#define yyerrok (yyerrstatus = 0)
865#define yyclearin (yychar = YYEMPTY)
866#define YYEMPTY -2
867#define YYEOF 0
868#define YYACCEPT goto yyacceptlab
vlm6f5eb0b2004-08-13 12:35:09 +0000869#define YYABORT goto yyabortlab
vlmfa67ddc2004-06-03 03:38:44 +0000870#define YYERROR goto yyerrlab1
vlm6f5eb0b2004-08-13 12:35:09 +0000871/* Like YYERROR except do call yyerror.
872 This remains here temporarily to ease the
873 transition to the new meaning of YYERROR, for GCC.
vlmfa67ddc2004-06-03 03:38:44 +0000874 Once GCC version 2 has supplanted version 1, this can go. */
875#define YYFAIL goto yyerrlab
876#define YYRECOVERING() (!!yyerrstatus)
vlm6f5eb0b2004-08-13 12:35:09 +0000877#define YYBACKUP(token, value) \
vlmfa67ddc2004-06-03 03:38:44 +0000878do \
879 if (yychar == YYEMPTY && yylen == 1) \
vlm6f5eb0b2004-08-13 12:35:09 +0000880 { yychar = (token), yylval = (value); \
vlmfa67ddc2004-06-03 03:38:44 +0000881 yychar1 = YYTRANSLATE (yychar); \
882 YYPOPSTACK; \
883 goto yybackup; \
884 } \
885 else \
vlm6f5eb0b2004-08-13 12:35:09 +0000886 { yyerror ("syntax error: cannot back up"); YYERROR; } \
vlmfa67ddc2004-06-03 03:38:44 +0000887while (0)
888
889#define YYTERROR 1
890#define YYERRCODE 256
891
vlm6f5eb0b2004-08-13 12:35:09 +0000892#ifndef YYPURE
893#define YYLEX yylex()
vlmfa67ddc2004-06-03 03:38:44 +0000894#endif
895
vlm6f5eb0b2004-08-13 12:35:09 +0000896#ifdef YYPURE
897#ifdef YYLSP_NEEDED
898#ifdef YYLEX_PARAM
899#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
900#else
901#define YYLEX yylex(&yylval, &yylloc)
902#endif
903#else /* not YYLSP_NEEDED */
904#ifdef YYLEX_PARAM
905#define YYLEX yylex(&yylval, YYLEX_PARAM)
906#else
907#define YYLEX yylex(&yylval)
908#endif
909#endif /* not YYLSP_NEEDED */
910#endif
vlmfa67ddc2004-06-03 03:38:44 +0000911
vlm6f5eb0b2004-08-13 12:35:09 +0000912/* If nonreentrant, generate the variables here */
vlmfa67ddc2004-06-03 03:38:44 +0000913
vlm6f5eb0b2004-08-13 12:35:09 +0000914#ifndef YYPURE
vlmfa67ddc2004-06-03 03:38:44 +0000915
vlm6f5eb0b2004-08-13 12:35:09 +0000916int yychar; /* the lookahead symbol */
917YYSTYPE yylval; /* the semantic value of the */
918 /* lookahead symbol */
vlmfa67ddc2004-06-03 03:38:44 +0000919
vlm6f5eb0b2004-08-13 12:35:09 +0000920#ifdef YYLSP_NEEDED
921YYLTYPE yylloc; /* location data for the lookahead */
922 /* symbol */
923#endif
vlmfa67ddc2004-06-03 03:38:44 +0000924
vlm6f5eb0b2004-08-13 12:35:09 +0000925int yynerrs; /* number of parse errors so far */
926#endif /* not YYPURE */
927
928#if YYDEBUG != 0
929int yydebug; /* nonzero means print parse trace */
930/* Since this is uninitialized, it does not stop multiple parsers
931 from coexisting. */
932#endif
933
934/* YYINITDEPTH indicates the initial size of the parser's stacks */
935
vlmfa67ddc2004-06-03 03:38:44 +0000936#ifndef YYINITDEPTH
vlm6f5eb0b2004-08-13 12:35:09 +0000937#define YYINITDEPTH 200
vlmfa67ddc2004-06-03 03:38:44 +0000938#endif
939
vlm6f5eb0b2004-08-13 12:35:09 +0000940/* YYMAXDEPTH is the maximum size the stacks can grow to
941 (effective only if the built-in stack extension method is used). */
vlmfa67ddc2004-06-03 03:38:44 +0000942
943#if YYMAXDEPTH == 0
vlm6f5eb0b2004-08-13 12:35:09 +0000944#undef YYMAXDEPTH
vlmfa67ddc2004-06-03 03:38:44 +0000945#endif
946
947#ifndef YYMAXDEPTH
vlm6f5eb0b2004-08-13 12:35:09 +0000948#define YYMAXDEPTH 10000
vlmfa67ddc2004-06-03 03:38:44 +0000949#endif
950
vlm6f5eb0b2004-08-13 12:35:09 +0000951/* Define __yy_memcpy. Note that the size argument
952 should be passed with type unsigned int, because that is what the non-GCC
953 definitions require. With GCC, __builtin_memcpy takes an arg
954 of type size_t, but it can handle unsigned int. */
vlmfa67ddc2004-06-03 03:38:44 +0000955
vlm6f5eb0b2004-08-13 12:35:09 +0000956#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
957#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
958#else /* not GNU C or C++ */
959#ifndef __cplusplus
vlmfa67ddc2004-06-03 03:38:44 +0000960
vlm6f5eb0b2004-08-13 12:35:09 +0000961/* This is the most reliable way to avoid incompatibilities
962 in available built-in functions on various systems. */
vlm827ac182004-06-03 05:07:41 +0000963static void
vlm6f5eb0b2004-08-13 12:35:09 +0000964__yy_memcpy (to, from, count)
965 char *to;
966 char *from;
967 unsigned int count;
vlm827ac182004-06-03 05:07:41 +0000968{
vlm6f5eb0b2004-08-13 12:35:09 +0000969 register char *f = from;
970 register char *t = to;
971 register int i = count;
vlm827ac182004-06-03 05:07:41 +0000972
vlm6f5eb0b2004-08-13 12:35:09 +0000973 while (i-- > 0)
974 *t++ = *f++;
vlm827ac182004-06-03 05:07:41 +0000975}
vlm827ac182004-06-03 05:07:41 +0000976
vlm6f5eb0b2004-08-13 12:35:09 +0000977#else /* __cplusplus */
vlm827ac182004-06-03 05:07:41 +0000978
vlm6f5eb0b2004-08-13 12:35:09 +0000979/* This is the most reliable way to avoid incompatibilities
980 in available built-in functions on various systems. */
vlm827ac182004-06-03 05:07:41 +0000981static void
vlm6f5eb0b2004-08-13 12:35:09 +0000982__yy_memcpy (char *to, char *from, unsigned int count)
vlm827ac182004-06-03 05:07:41 +0000983{
vlm6f5eb0b2004-08-13 12:35:09 +0000984 register char *t = to;
985 register char *f = from;
986 register int i = count;
vlm827ac182004-06-03 05:07:41 +0000987
vlm6f5eb0b2004-08-13 12:35:09 +0000988 while (i-- > 0)
989 *t++ = *f++;
vlmfa67ddc2004-06-03 03:38:44 +0000990}
991
vlm6f5eb0b2004-08-13 12:35:09 +0000992#endif
993#endif
vlmfa67ddc2004-06-03 03:38:44 +0000994
vlm6f5eb0b2004-08-13 12:35:09 +0000995#line 217 "/usr/share/bison.simple"
vlmfa67ddc2004-06-03 03:38:44 +0000996
997/* The user can define YYPARSE_PARAM as the name of an argument to be passed
998 into yyparse. The argument should have type void *.
999 It should actually point to an object.
1000 Grammar actions can access the variable by casting it
1001 to the proper pointer type. */
1002
1003#ifdef YYPARSE_PARAM
vlm6f5eb0b2004-08-13 12:35:09 +00001004#ifdef __cplusplus
1005#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
1006#define YYPARSE_PARAM_DECL
1007#else /* not __cplusplus */
1008#define YYPARSE_PARAM_ARG YYPARSE_PARAM
1009#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1010#endif /* not __cplusplus */
1011#else /* not YYPARSE_PARAM */
1012#define YYPARSE_PARAM_ARG
1013#define YYPARSE_PARAM_DECL
1014#endif /* not YYPARSE_PARAM */
vlmfa67ddc2004-06-03 03:38:44 +00001015
1016/* Prevent warning if -Wstrict-prototypes. */
1017#ifdef __GNUC__
vlm6f5eb0b2004-08-13 12:35:09 +00001018#ifdef YYPARSE_PARAM
vlmfa67ddc2004-06-03 03:38:44 +00001019int yyparse (void *);
vlm6f5eb0b2004-08-13 12:35:09 +00001020#else
vlmfa67ddc2004-06-03 03:38:44 +00001021int yyparse (void);
vlm6f5eb0b2004-08-13 12:35:09 +00001022#endif
vlmfa67ddc2004-06-03 03:38:44 +00001023#endif
vlm827ac182004-06-03 05:07:41 +00001024
vlmfa67ddc2004-06-03 03:38:44 +00001025int
vlm6f5eb0b2004-08-13 12:35:09 +00001026yyparse(YYPARSE_PARAM_ARG)
vlmfa67ddc2004-06-03 03:38:44 +00001027 YYPARSE_PARAM_DECL
1028{
1029 register int yystate;
1030 register int yyn;
1031 register short *yyssp;
1032 register YYSTYPE *yyvsp;
vlm6f5eb0b2004-08-13 12:35:09 +00001033 int yyerrstatus; /* number of tokens to shift before error messages enabled */
1034 int yychar1 = 0; /* lookahead token as an internal (translated) token number */
vlmfa67ddc2004-06-03 03:38:44 +00001035
vlm6f5eb0b2004-08-13 12:35:09 +00001036 short yyssa[YYINITDEPTH]; /* the state stack */
1037 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
vlmfa67ddc2004-06-03 03:38:44 +00001038
vlm6f5eb0b2004-08-13 12:35:09 +00001039 short *yyss = yyssa; /* refer to the stacks thru separate pointers */
1040 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
vlmfa67ddc2004-06-03 03:38:44 +00001041
vlm6f5eb0b2004-08-13 12:35:09 +00001042#ifdef YYLSP_NEEDED
1043 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
1044 YYLTYPE *yyls = yylsa;
1045 YYLTYPE *yylsp;
1046
1047#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1048#else
vlmfa67ddc2004-06-03 03:38:44 +00001049#define YYPOPSTACK (yyvsp--, yyssp--)
vlm6f5eb0b2004-08-13 12:35:09 +00001050#endif
vlmfa67ddc2004-06-03 03:38:44 +00001051
vlm6f5eb0b2004-08-13 12:35:09 +00001052 int yystacksize = YYINITDEPTH;
1053 int yyfree_stacks = 0;
vlmfa67ddc2004-06-03 03:38:44 +00001054
vlm6f5eb0b2004-08-13 12:35:09 +00001055#ifdef YYPURE
1056 int yychar;
1057 YYSTYPE yylval;
1058 int yynerrs;
1059#ifdef YYLSP_NEEDED
1060 YYLTYPE yylloc;
1061#endif
1062#endif
vlmfa67ddc2004-06-03 03:38:44 +00001063
vlm6f5eb0b2004-08-13 12:35:09 +00001064 YYSTYPE yyval; /* the variable used to return */
1065 /* semantic values from the action */
1066 /* routines */
vlmfa67ddc2004-06-03 03:38:44 +00001067
1068 int yylen;
1069
vlm6f5eb0b2004-08-13 12:35:09 +00001070#if YYDEBUG != 0
1071 if (yydebug)
1072 fprintf(stderr, "Starting parse\n");
1073#endif
vlmfa67ddc2004-06-03 03:38:44 +00001074
1075 yystate = 0;
1076 yyerrstatus = 0;
1077 yynerrs = 0;
1078 yychar = YYEMPTY; /* Cause a token to be read. */
1079
1080 /* Initialize stack pointers.
1081 Waste one element of value and location stack
1082 so that they stay on the same level as the state stack.
1083 The wasted elements are never initialized. */
1084
vlm6f5eb0b2004-08-13 12:35:09 +00001085 yyssp = yyss - 1;
vlmfa67ddc2004-06-03 03:38:44 +00001086 yyvsp = yyvs;
vlm6f5eb0b2004-08-13 12:35:09 +00001087#ifdef YYLSP_NEEDED
1088 yylsp = yyls;
1089#endif
vlmfa67ddc2004-06-03 03:38:44 +00001090
vlm6f5eb0b2004-08-13 12:35:09 +00001091/* Push a new state, which is found in yystate . */
1092/* In all cases, when you get here, the value and location stacks
1093 have just been pushed. so pushing a state here evens the stacks. */
1094yynewstate:
vlmfa67ddc2004-06-03 03:38:44 +00001095
vlm6f5eb0b2004-08-13 12:35:09 +00001096 *++yyssp = yystate;
vlmfa67ddc2004-06-03 03:38:44 +00001097
1098 if (yyssp >= yyss + yystacksize - 1)
1099 {
vlm6f5eb0b2004-08-13 12:35:09 +00001100 /* Give user a chance to reallocate the stack */
1101 /* Use copies of these so that the &'s don't force the real ones into memory. */
1102 YYSTYPE *yyvs1 = yyvs;
1103 short *yyss1 = yyss;
1104#ifdef YYLSP_NEEDED
1105 YYLTYPE *yyls1 = yyls;
1106#endif
1107
vlmfa67ddc2004-06-03 03:38:44 +00001108 /* Get the current used size of the three stacks, in elements. */
vlm6f5eb0b2004-08-13 12:35:09 +00001109 int size = yyssp - yyss + 1;
vlmfa67ddc2004-06-03 03:38:44 +00001110
1111#ifdef yyoverflow
vlm6f5eb0b2004-08-13 12:35:09 +00001112 /* Each stack pointer address is followed by the size of
1113 the data in use in that stack, in bytes. */
1114#ifdef YYLSP_NEEDED
1115 /* This used to be a conditional around just the two extra args,
1116 but that might be undefined if yyoverflow is a macro. */
1117 yyoverflow("parser stack overflow",
1118 &yyss1, size * sizeof (*yyssp),
1119 &yyvs1, size * sizeof (*yyvsp),
1120 &yyls1, size * sizeof (*yylsp),
1121 &yystacksize);
1122#else
1123 yyoverflow("parser stack overflow",
1124 &yyss1, size * sizeof (*yyssp),
1125 &yyvs1, size * sizeof (*yyvsp),
1126 &yystacksize);
1127#endif
vlmfa67ddc2004-06-03 03:38:44 +00001128
vlm6f5eb0b2004-08-13 12:35:09 +00001129 yyss = yyss1; yyvs = yyvs1;
1130#ifdef YYLSP_NEEDED
1131 yyls = yyls1;
1132#endif
vlmfa67ddc2004-06-03 03:38:44 +00001133#else /* no yyoverflow */
1134 /* Extend the stack our own way. */
1135 if (yystacksize >= YYMAXDEPTH)
vlm6f5eb0b2004-08-13 12:35:09 +00001136 {
1137 yyerror("parser stack overflow");
1138 if (yyfree_stacks)
1139 {
1140 free (yyss);
1141 free (yyvs);
1142#ifdef YYLSP_NEEDED
1143 free (yyls);
1144#endif
1145 }
1146 return 2;
1147 }
vlmfa67ddc2004-06-03 03:38:44 +00001148 yystacksize *= 2;
1149 if (yystacksize > YYMAXDEPTH)
1150 yystacksize = YYMAXDEPTH;
vlm6f5eb0b2004-08-13 12:35:09 +00001151#ifndef YYSTACK_USE_ALLOCA
1152 yyfree_stacks = 1;
1153#endif
1154 yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
1155 __yy_memcpy ((char *)yyss, (char *)yyss1,
1156 size * (unsigned int) sizeof (*yyssp));
1157 yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
1158 __yy_memcpy ((char *)yyvs, (char *)yyvs1,
1159 size * (unsigned int) sizeof (*yyvsp));
1160#ifdef YYLSP_NEEDED
1161 yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
1162 __yy_memcpy ((char *)yyls, (char *)yyls1,
1163 size * (unsigned int) sizeof (*yylsp));
1164#endif
vlmfa67ddc2004-06-03 03:38:44 +00001165#endif /* no yyoverflow */
1166
vlm6f5eb0b2004-08-13 12:35:09 +00001167 yyssp = yyss + size - 1;
1168 yyvsp = yyvs + size - 1;
1169#ifdef YYLSP_NEEDED
1170 yylsp = yyls + size - 1;
1171#endif
vlmfa67ddc2004-06-03 03:38:44 +00001172
vlm6f5eb0b2004-08-13 12:35:09 +00001173#if YYDEBUG != 0
1174 if (yydebug)
1175 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1176#endif
vlmfa67ddc2004-06-03 03:38:44 +00001177
1178 if (yyssp >= yyss + yystacksize - 1)
1179 YYABORT;
1180 }
1181
vlm6f5eb0b2004-08-13 12:35:09 +00001182#if YYDEBUG != 0
1183 if (yydebug)
1184 fprintf(stderr, "Entering state %d\n", yystate);
1185#endif
vlmfa67ddc2004-06-03 03:38:44 +00001186
1187 goto yybackup;
vlm6f5eb0b2004-08-13 12:35:09 +00001188 yybackup:
vlmfa67ddc2004-06-03 03:38:44 +00001189
1190/* Do appropriate processing given the current state. */
1191/* Read a lookahead token if we need one and don't already have one. */
1192/* yyresume: */
1193
1194 /* First try to decide what to do without reference to lookahead token. */
1195
1196 yyn = yypact[yystate];
vlm6f5eb0b2004-08-13 12:35:09 +00001197 if (yyn == YYFLAG)
vlmfa67ddc2004-06-03 03:38:44 +00001198 goto yydefault;
1199
1200 /* Not known => get a lookahead token if don't already have one. */
1201
1202 /* yychar is either YYEMPTY or YYEOF
1203 or a valid token in external form. */
1204
1205 if (yychar == YYEMPTY)
1206 {
vlm6f5eb0b2004-08-13 12:35:09 +00001207#if YYDEBUG != 0
1208 if (yydebug)
1209 fprintf(stderr, "Reading a token: ");
1210#endif
vlmfa67ddc2004-06-03 03:38:44 +00001211 yychar = YYLEX;
1212 }
1213
vlm6f5eb0b2004-08-13 12:35:09 +00001214 /* Convert token to internal form (in yychar1) for indexing tables with */
vlmfa67ddc2004-06-03 03:38:44 +00001215
vlm6f5eb0b2004-08-13 12:35:09 +00001216 if (yychar <= 0) /* This means end of input. */
vlmfa67ddc2004-06-03 03:38:44 +00001217 {
1218 yychar1 = 0;
vlm6f5eb0b2004-08-13 12:35:09 +00001219 yychar = YYEOF; /* Don't call YYLEX any more */
vlmfa67ddc2004-06-03 03:38:44 +00001220
vlm6f5eb0b2004-08-13 12:35:09 +00001221#if YYDEBUG != 0
1222 if (yydebug)
1223 fprintf(stderr, "Now at end of input.\n");
1224#endif
vlmfa67ddc2004-06-03 03:38:44 +00001225 }
1226 else
1227 {
vlm6f5eb0b2004-08-13 12:35:09 +00001228 yychar1 = YYTRANSLATE(yychar);
vlmfa67ddc2004-06-03 03:38:44 +00001229
vlm6f5eb0b2004-08-13 12:35:09 +00001230#if YYDEBUG != 0
1231 if (yydebug)
1232 {
1233 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
1234 /* Give the individual parser a way to print the precise meaning
1235 of a token, for further debugging info. */
1236#ifdef YYPRINT
1237 YYPRINT (stderr, yychar, yylval);
1238#endif
1239 fprintf (stderr, ")\n");
1240 }
1241#endif
vlmfa67ddc2004-06-03 03:38:44 +00001242 }
1243
1244 yyn += yychar1;
vlm6f5eb0b2004-08-13 12:35:09 +00001245 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
vlmfa67ddc2004-06-03 03:38:44 +00001246 goto yydefault;
vlm6f5eb0b2004-08-13 12:35:09 +00001247
vlmfa67ddc2004-06-03 03:38:44 +00001248 yyn = yytable[yyn];
vlm6f5eb0b2004-08-13 12:35:09 +00001249
1250 /* yyn is what to do for this token type in this state.
1251 Negative => reduce, -yyn is rule number.
1252 Positive => shift, yyn is new state.
1253 New state is final state => don't bother to shift,
1254 just return success.
1255 0, or most negative number => error. */
1256
1257 if (yyn < 0)
vlmfa67ddc2004-06-03 03:38:44 +00001258 {
vlm6f5eb0b2004-08-13 12:35:09 +00001259 if (yyn == YYFLAG)
vlmfa67ddc2004-06-03 03:38:44 +00001260 goto yyerrlab;
1261 yyn = -yyn;
1262 goto yyreduce;
1263 }
vlm6f5eb0b2004-08-13 12:35:09 +00001264 else if (yyn == 0)
1265 goto yyerrlab;
vlmfa67ddc2004-06-03 03:38:44 +00001266
1267 if (yyn == YYFINAL)
1268 YYACCEPT;
1269
1270 /* Shift the lookahead token. */
vlm6f5eb0b2004-08-13 12:35:09 +00001271
1272#if YYDEBUG != 0
1273 if (yydebug)
1274 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
1275#endif
vlmfa67ddc2004-06-03 03:38:44 +00001276
1277 /* Discard the token being shifted unless it is eof. */
1278 if (yychar != YYEOF)
1279 yychar = YYEMPTY;
1280
1281 *++yyvsp = yylval;
vlm6f5eb0b2004-08-13 12:35:09 +00001282#ifdef YYLSP_NEEDED
1283 *++yylsp = yylloc;
1284#endif
vlmfa67ddc2004-06-03 03:38:44 +00001285
vlm6f5eb0b2004-08-13 12:35:09 +00001286 /* count tokens shifted since error; after three, turn off error status. */
1287 if (yyerrstatus) yyerrstatus--;
vlmfa67ddc2004-06-03 03:38:44 +00001288
1289 yystate = yyn;
1290 goto yynewstate;
1291
vlm6f5eb0b2004-08-13 12:35:09 +00001292/* Do the default action for the current state. */
vlm827ac182004-06-03 05:07:41 +00001293yydefault:
vlm6f5eb0b2004-08-13 12:35:09 +00001294
vlmfa67ddc2004-06-03 03:38:44 +00001295 yyn = yydefact[yystate];
1296 if (yyn == 0)
1297 goto yyerrlab;
1298
vlm6f5eb0b2004-08-13 12:35:09 +00001299/* Do a reduction. yyn is the number of a rule to reduce with. */
vlmfa67ddc2004-06-03 03:38:44 +00001300yyreduce:
1301 yylen = yyr2[yyn];
vlm6f5eb0b2004-08-13 12:35:09 +00001302 if (yylen > 0)
1303 yyval = yyvsp[1-yylen]; /* implement default value of the action */
vlmfa67ddc2004-06-03 03:38:44 +00001304
vlm6f5eb0b2004-08-13 12:35:09 +00001305#if YYDEBUG != 0
vlmfa67ddc2004-06-03 03:38:44 +00001306 if (yydebug)
1307 {
vlm6f5eb0b2004-08-13 12:35:09 +00001308 int i;
vlmfa67ddc2004-06-03 03:38:44 +00001309
vlm6f5eb0b2004-08-13 12:35:09 +00001310 fprintf (stderr, "Reducing via rule %d (line %d), ",
1311 yyn, yyrline[yyn]);
vlmfa67ddc2004-06-03 03:38:44 +00001312
1313 /* Print the symbols being reduced, and their result. */
vlm6f5eb0b2004-08-13 12:35:09 +00001314 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
1315 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
1316 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
vlmfa67ddc2004-06-03 03:38:44 +00001317 }
1318#endif
vlm827ac182004-06-03 05:07:41 +00001319
vlm6f5eb0b2004-08-13 12:35:09 +00001320
1321 switch (yyn) {
1322
1323case 1:
vlm5f0128b2004-08-20 13:25:29 +00001324#line 299 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001325{
1326 *(void **)param = yyvsp[0].a_grammar;
1327 ;
1328 break;}
1329case 2:
vlm5f0128b2004-08-20 13:25:29 +00001330#line 305 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001331{
vlmfa67ddc2004-06-03 03:38:44 +00001332 yyval.a_grammar = asn1p_new();
1333 checkmem(yyval.a_grammar);
1334 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm6f5eb0b2004-08-13 12:35:09 +00001335 ;
1336 break;}
1337case 3:
vlm5f0128b2004-08-20 13:25:29 +00001338#line 310 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001339{
vlmfa67ddc2004-06-03 03:38:44 +00001340 yyval.a_grammar = yyvsp[-1].a_grammar;
1341 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm6f5eb0b2004-08-13 12:35:09 +00001342 ;
1343 break;}
1344case 4:
vlm5f0128b2004-08-20 13:25:29 +00001345#line 331 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001346{
vlmfa67ddc2004-06-03 03:38:44 +00001347
1348 if(yyvsp[-1].a_module) {
1349 yyval.a_module = yyvsp[-1].a_module;
1350 } else {
1351 /* There's a chance that a module is just plain empty */
1352 yyval.a_module = asn1p_module_new();
1353 }
1354 checkmem(yyval.a_module);
1355
1356 yyval.a_module->Identifier = yyvsp[-7].tv_str;
1357 yyval.a_module->module_oid = yyvsp[-6].a_oid;
1358 yyval.a_module->module_flags = yyvsp[-4].a_module_flags;
vlm6f5eb0b2004-08-13 12:35:09 +00001359 ;
1360 break;}
1361case 5:
vlm5f0128b2004-08-20 13:25:29 +00001362#line 352 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001363{ yyval.a_oid = 0; ;
1364 break;}
1365case 6:
vlm5f0128b2004-08-20 13:25:29 +00001366#line 353 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001367{ yyval.a_oid = yyvsp[0].a_oid; ;
1368 break;}
1369case 7:
vlm5f0128b2004-08-20 13:25:29 +00001370#line 357 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001371{
vlmfa67ddc2004-06-03 03:38:44 +00001372 yyval.a_oid = yyvsp[-1].a_oid;
vlm6f5eb0b2004-08-13 12:35:09 +00001373 ;
1374 break;}
1375case 8:
vlm5f0128b2004-08-20 13:25:29 +00001376#line 360 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001377{
vlmfa67ddc2004-06-03 03:38:44 +00001378 yyval.a_oid = 0;
vlm6f5eb0b2004-08-13 12:35:09 +00001379 ;
1380 break;}
1381case 9:
vlm5f0128b2004-08-20 13:25:29 +00001382#line 366 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001383{
vlmfa67ddc2004-06-03 03:38:44 +00001384 yyval.a_oid = asn1p_oid_new();
1385 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1386 if(yyvsp[0].a_oid_arc.name)
1387 free(yyvsp[0].a_oid_arc.name);
vlm6f5eb0b2004-08-13 12:35:09 +00001388 ;
1389 break;}
1390case 10:
vlm5f0128b2004-08-20 13:25:29 +00001391#line 372 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001392{
vlmfa67ddc2004-06-03 03:38:44 +00001393 yyval.a_oid = yyvsp[-1].a_oid;
1394 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1395 if(yyvsp[0].a_oid_arc.name)
1396 free(yyvsp[0].a_oid_arc.name);
vlm6f5eb0b2004-08-13 12:35:09 +00001397 ;
1398 break;}
1399case 11:
vlm5f0128b2004-08-20 13:25:29 +00001400#line 381 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001401{ /* iso */
vlmfa67ddc2004-06-03 03:38:44 +00001402 yyval.a_oid_arc.name = yyvsp[0].tv_str;
1403 yyval.a_oid_arc.number = -1;
vlm6f5eb0b2004-08-13 12:35:09 +00001404 ;
1405 break;}
1406case 12:
vlm5f0128b2004-08-20 13:25:29 +00001407#line 385 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001408{ /* iso(1) */
vlmfa67ddc2004-06-03 03:38:44 +00001409 yyval.a_oid_arc.name = yyvsp[-3].tv_str;
1410 yyval.a_oid_arc.number = yyvsp[-1].a_int;
vlm6f5eb0b2004-08-13 12:35:09 +00001411 ;
1412 break;}
1413case 13:
vlm5f0128b2004-08-20 13:25:29 +00001414#line 389 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001415{ /* 1 */
vlmfa67ddc2004-06-03 03:38:44 +00001416 yyval.a_oid_arc.name = 0;
1417 yyval.a_oid_arc.number = yyvsp[0].a_int;
vlm6f5eb0b2004-08-13 12:35:09 +00001418 ;
1419 break;}
1420case 14:
vlm5f0128b2004-08-20 13:25:29 +00001421#line 399 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001422{ yyval.a_module_flags = MSF_NOFLAGS; ;
1423 break;}
1424case 15:
vlm5f0128b2004-08-20 13:25:29 +00001425#line 400 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001426{
vlmfa67ddc2004-06-03 03:38:44 +00001427 yyval.a_module_flags = yyvsp[0].a_module_flags;
vlm6f5eb0b2004-08-13 12:35:09 +00001428 ;
1429 break;}
1430case 16:
vlm5f0128b2004-08-20 13:25:29 +00001431#line 409 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001432{
vlmfa67ddc2004-06-03 03:38:44 +00001433 yyval.a_module_flags = yyvsp[0].a_module_flags;
vlm6f5eb0b2004-08-13 12:35:09 +00001434 ;
1435 break;}
1436case 17:
vlm5f0128b2004-08-20 13:25:29 +00001437#line 412 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001438{
vlmfa67ddc2004-06-03 03:38:44 +00001439 yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
vlm6f5eb0b2004-08-13 12:35:09 +00001440 ;
1441 break;}
1442case 18:
vlm5f0128b2004-08-20 13:25:29 +00001443#line 421 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001444{
vlmfa67ddc2004-06-03 03:38:44 +00001445 yyval.a_module_flags = MSF_EXPLICIT_TAGS;
vlm6f5eb0b2004-08-13 12:35:09 +00001446 ;
1447 break;}
1448case 19:
vlm5f0128b2004-08-20 13:25:29 +00001449#line 424 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001450{
vlmfa67ddc2004-06-03 03:38:44 +00001451 yyval.a_module_flags = MSF_IMPLICIT_TAGS;
vlm6f5eb0b2004-08-13 12:35:09 +00001452 ;
1453 break;}
1454case 20:
vlm5f0128b2004-08-20 13:25:29 +00001455#line 427 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001456{
vlmfa67ddc2004-06-03 03:38:44 +00001457 yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
vlm6f5eb0b2004-08-13 12:35:09 +00001458 ;
1459 break;}
1460case 21:
vlm5f0128b2004-08-20 13:25:29 +00001461#line 430 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001462{
vlmfa67ddc2004-06-03 03:38:44 +00001463 yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
vlm6f5eb0b2004-08-13 12:35:09 +00001464 ;
1465 break;}
1466case 22:
vlm5f0128b2004-08-20 13:25:29 +00001467#line 434 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001468{
vlm9283dbe2004-08-18 04:59:12 +00001469 /* X.680Amd1 specifies TAG and XER */
1470 if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
1471 yyval.a_module_flags = MSF_TAG_INSTRUCTIONS;
1472 } else if(strcmp(yyvsp[-1].tv_str, "XER") == 0) {
1473 yyval.a_module_flags = MSF_XER_INSTRUCTIONS;
1474 } else {
1475 fprintf(stderr,
1476 "WARNING: %s INSTRUCTIONS at line %d: "
1477 "Unrecognized encoding reference\n",
1478 yyvsp[-1].tv_str, yylineno);
1479 yyval.a_module_flags = MSF_unk_INSTRUCTIONS;
1480 }
1481 free(yyvsp[-1].tv_str);
vlm6f5eb0b2004-08-13 12:35:09 +00001482 ;
1483 break;}
vlm9283dbe2004-08-18 04:59:12 +00001484case 23:
vlm5f0128b2004-08-20 13:25:29 +00001485#line 455 "asn1p_y.y"
vlm9283dbe2004-08-18 04:59:12 +00001486{ yyval.a_module = 0; ;
1487 break;}
vlm6f5eb0b2004-08-13 12:35:09 +00001488case 24:
vlm5f0128b2004-08-20 13:25:29 +00001489#line 456 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001490{
vlmfa67ddc2004-06-03 03:38:44 +00001491 yyval.a_module = yyvsp[0].a_module;
vlm6f5eb0b2004-08-13 12:35:09 +00001492 ;
1493 break;}
1494case 25:
vlm5f0128b2004-08-20 13:25:29 +00001495#line 465 "asn1p_y.y"
vlm9283dbe2004-08-18 04:59:12 +00001496{
1497 yyval.a_module = yyvsp[0].a_module;
1498 ;
1499 break;}
1500case 26:
vlm5f0128b2004-08-20 13:25:29 +00001501#line 468 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001502{
vlmfa67ddc2004-06-03 03:38:44 +00001503 yyval.a_module = yyvsp[-1].a_module;
1504
vlm9283dbe2004-08-18 04:59:12 +00001505 /* Behave well when one of them is skipped. */
1506 if(!(yyvsp[-1].a_module)) {
1507 if(yyvsp[0].a_module) yyval.a_module = yyvsp[0].a_module;
1508 break;
1509 }
1510
vlmfa67ddc2004-06-03 03:38:44 +00001511#ifdef MY_IMPORT
1512#error MY_IMPORT DEFINED ELSEWHERE!
1513#endif
1514#define MY_IMPORT(foo,field) do { \
vlm97ed7152004-08-13 12:31:09 +00001515 while(TQ_FIRST(&(yyvsp[0].a_module->foo))) { \
vlmfa67ddc2004-06-03 03:38:44 +00001516 TQ_ADD(&(yyval.a_module->foo), \
1517 TQ_REMOVE(&(yyvsp[0].a_module->foo), field), \
1518 field); \
vlm97ed7152004-08-13 12:31:09 +00001519 } \
1520 assert(TQ_FIRST(&(yyvsp[0].a_module->foo)) == 0); \
1521 } while(0)
vlmfa67ddc2004-06-03 03:38:44 +00001522
1523 MY_IMPORT(imports, xp_next);
1524 MY_IMPORT(exports, xp_next);
1525 MY_IMPORT(members, next);
1526#undef MY_IMPORT
1527
vlm6f5eb0b2004-08-13 12:35:09 +00001528 ;
1529 break;}
vlm9283dbe2004-08-18 04:59:12 +00001530case 27:
vlm5f0128b2004-08-20 13:25:29 +00001531#line 501 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001532{
vlmfa67ddc2004-06-03 03:38:44 +00001533 yyval.a_module = yyvsp[0].a_module;
vlm6f5eb0b2004-08-13 12:35:09 +00001534 ;
1535 break;}
vlm9283dbe2004-08-18 04:59:12 +00001536case 28:
vlm5f0128b2004-08-20 13:25:29 +00001537#line 504 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001538{
vlmfa67ddc2004-06-03 03:38:44 +00001539 yyval.a_module = asn1p_module_new();
1540 checkmem(yyval.a_module);
1541 if(yyvsp[0].a_xports) {
1542 TQ_ADD(&(yyval.a_module->exports), yyvsp[0].a_xports, xp_next);
1543 } else {
1544 /* "EXPORTS ALL;" ? */
1545 }
vlm6f5eb0b2004-08-13 12:35:09 +00001546 ;
1547 break;}
vlm6f5eb0b2004-08-13 12:35:09 +00001548case 29:
vlm5f0128b2004-08-20 13:25:29 +00001549#line 513 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001550{
vlmfa67ddc2004-06-03 03:38:44 +00001551 yyval.a_module = asn1p_module_new();
1552 checkmem(yyval.a_module);
1553 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1554 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1555 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm6f5eb0b2004-08-13 12:35:09 +00001556 ;
1557 break;}
vlm9283dbe2004-08-18 04:59:12 +00001558case 30:
vlm5f0128b2004-08-20 13:25:29 +00001559#line 520 "asn1p_y.y"
vlm9283dbe2004-08-18 04:59:12 +00001560{
1561 yyval.a_module = asn1p_module_new();
1562 checkmem(yyval.a_module);
1563 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1564 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1565 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
1566 ;
1567 break;}
vlm6f5eb0b2004-08-13 12:35:09 +00001568case 31:
vlm5f0128b2004-08-20 13:25:29 +00001569#line 533 "asn1p_y.y"
vlm9283dbe2004-08-18 04:59:12 +00001570{
1571 yyval.a_module = asn1p_module_new();
1572 checkmem(yyval.a_module);
1573 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1574 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1575 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
1576 ;
1577 break;}
1578case 32:
vlm5f0128b2004-08-20 13:25:29 +00001579#line 541 "asn1p_y.y"
vlm9283dbe2004-08-18 04:59:12 +00001580{ asn1p_lexer_hack_push_encoding_control(); ;
1581 break;}
1582case 33:
vlm5f0128b2004-08-20 13:25:29 +00001583#line 542 "asn1p_y.y"
vlm9283dbe2004-08-18 04:59:12 +00001584{
1585 fprintf(stderr,
1586 "WARNING: ENCODING-CONTROL %s "
1587 "specification at line %d ignored\n",
1588 yyvsp[-1].tv_str, yylineno);
1589 free(yyvsp[-1].tv_str);
1590 yyval.a_module = 0;
1591 ;
1592 break;}
1593case 34:
vlm5f0128b2004-08-20 13:25:29 +00001594#line 554 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001595{
vlmfa67ddc2004-06-03 03:38:44 +00001596 return yyerror(
1597 "Attempt to redefine a standard basic type, "
1598 "use -ftypesXY to switch back "
1599 "to older version of ASN.1 standard");
vlm6f5eb0b2004-08-13 12:35:09 +00001600 ;
1601 break;}
vlm9283dbe2004-08-18 04:59:12 +00001602case 35:
vlm5f0128b2004-08-20 13:25:29 +00001603#line 568 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001604{
vlmfa67ddc2004-06-03 03:38:44 +00001605 yyval.a_module = yyvsp[-1].a_module;
vlm6f5eb0b2004-08-13 12:35:09 +00001606 ;
1607 break;}
vlm9283dbe2004-08-18 04:59:12 +00001608case 36:
vlm5f0128b2004-08-20 13:25:29 +00001609#line 574 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001610{
vlmfa67ddc2004-06-03 03:38:44 +00001611 return yyerror("Empty IMPORTS list");
vlm6f5eb0b2004-08-13 12:35:09 +00001612 ;
1613 break;}
vlm9283dbe2004-08-18 04:59:12 +00001614case 37:
vlm5f0128b2004-08-20 13:25:29 +00001615#line 580 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001616{
vlmfa67ddc2004-06-03 03:38:44 +00001617 yyval.a_module = asn1p_module_new();
1618 checkmem(yyval.a_module);
1619 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm6f5eb0b2004-08-13 12:35:09 +00001620 ;
1621 break;}
vlm9283dbe2004-08-18 04:59:12 +00001622case 38:
vlm5f0128b2004-08-20 13:25:29 +00001623#line 585 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001624{
vlmfa67ddc2004-06-03 03:38:44 +00001625 yyval.a_module = yyvsp[-1].a_module;
1626 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm6f5eb0b2004-08-13 12:35:09 +00001627 ;
1628 break;}
vlm9283dbe2004-08-18 04:59:12 +00001629case 39:
vlm5f0128b2004-08-20 13:25:29 +00001630#line 592 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001631{
vlmfa67ddc2004-06-03 03:38:44 +00001632 yyval.a_xports = yyvsp[-3].a_xports;
1633 yyval.a_xports->from = yyvsp[-1].tv_str;
1634 yyval.a_xports->from_oid = yyvsp[0].a_oid;
1635 checkmem(yyval.a_xports);
vlm6f5eb0b2004-08-13 12:35:09 +00001636 ;
1637 break;}
vlm9283dbe2004-08-18 04:59:12 +00001638case 40:
vlm5f0128b2004-08-20 13:25:29 +00001639#line 601 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001640{
vlmfa67ddc2004-06-03 03:38:44 +00001641 yyval.a_xports = asn1p_xports_new();
1642 checkmem(yyval.a_xports);
1643 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6f5eb0b2004-08-13 12:35:09 +00001644 ;
1645 break;}
vlm9283dbe2004-08-18 04:59:12 +00001646case 41:
vlm5f0128b2004-08-20 13:25:29 +00001647#line 606 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001648{
vlmfa67ddc2004-06-03 03:38:44 +00001649 yyval.a_xports = yyvsp[-2].a_xports;
1650 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6f5eb0b2004-08-13 12:35:09 +00001651 ;
1652 break;}
vlm9283dbe2004-08-18 04:59:12 +00001653case 42:
vlm5f0128b2004-08-20 13:25:29 +00001654#line 613 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001655{
vlmfa67ddc2004-06-03 03:38:44 +00001656 yyval.a_expr = asn1p_expr_new(yylineno);
1657 checkmem(yyval.a_expr);
1658 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1659 yyval.a_expr->expr_type = A1TC_REFERENCE;
vlm6f5eb0b2004-08-13 12:35:09 +00001660 ;
1661 break;}
vlm9283dbe2004-08-18 04:59:12 +00001662case 43:
vlm5f0128b2004-08-20 13:25:29 +00001663#line 619 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001664{
vlmfa67ddc2004-06-03 03:38:44 +00001665 yyval.a_expr = asn1p_expr_new(yylineno);
1666 checkmem(yyval.a_expr);
1667 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1668 yyval.a_expr->expr_type = A1TC_REFERENCE;
vlm6f5eb0b2004-08-13 12:35:09 +00001669 ;
1670 break;}
vlm9283dbe2004-08-18 04:59:12 +00001671case 44:
vlm5f0128b2004-08-20 13:25:29 +00001672#line 628 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001673{
vlmfa67ddc2004-06-03 03:38:44 +00001674 yyval.a_xports = yyvsp[-1].a_xports;
vlm6f5eb0b2004-08-13 12:35:09 +00001675 ;
1676 break;}
vlm9283dbe2004-08-18 04:59:12 +00001677case 45:
vlm5f0128b2004-08-20 13:25:29 +00001678#line 631 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001679{
vlmfa67ddc2004-06-03 03:38:44 +00001680 yyval.a_xports = 0;
vlm6f5eb0b2004-08-13 12:35:09 +00001681 ;
1682 break;}
vlm9283dbe2004-08-18 04:59:12 +00001683case 46:
vlm5f0128b2004-08-20 13:25:29 +00001684#line 634 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001685{
vlmfa67ddc2004-06-03 03:38:44 +00001686 /* Empty EXPORTS clause effectively prohibits export. */
1687 yyval.a_xports = asn1p_xports_new();
1688 checkmem(yyval.a_xports);
vlm6f5eb0b2004-08-13 12:35:09 +00001689 ;
1690 break;}
vlm9283dbe2004-08-18 04:59:12 +00001691case 47:
vlm5f0128b2004-08-20 13:25:29 +00001692#line 642 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001693{
vlmfa67ddc2004-06-03 03:38:44 +00001694 yyval.a_xports = asn1p_xports_new();
1695 assert(yyval.a_xports);
1696 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6f5eb0b2004-08-13 12:35:09 +00001697 ;
1698 break;}
vlm9283dbe2004-08-18 04:59:12 +00001699case 48:
vlm5f0128b2004-08-20 13:25:29 +00001700#line 647 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001701{
vlmfa67ddc2004-06-03 03:38:44 +00001702 yyval.a_xports = yyvsp[-2].a_xports;
1703 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6f5eb0b2004-08-13 12:35:09 +00001704 ;
1705 break;}
vlm9283dbe2004-08-18 04:59:12 +00001706case 49:
vlm5f0128b2004-08-20 13:25:29 +00001707#line 654 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001708{
vlmfa67ddc2004-06-03 03:38:44 +00001709 yyval.a_expr = asn1p_expr_new(yylineno);
1710 checkmem(yyval.a_expr);
1711 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1712 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
vlm6f5eb0b2004-08-13 12:35:09 +00001713 ;
1714 break;}
vlm9283dbe2004-08-18 04:59:12 +00001715case 50:
vlm5f0128b2004-08-20 13:25:29 +00001716#line 660 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001717{
vlmfa67ddc2004-06-03 03:38:44 +00001718 yyval.a_expr = asn1p_expr_new(yylineno);
1719 checkmem(yyval.a_expr);
1720 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1721 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
vlm6f5eb0b2004-08-13 12:35:09 +00001722 ;
1723 break;}
vlm9283dbe2004-08-18 04:59:12 +00001724case 51:
vlm5f0128b2004-08-20 13:25:29 +00001725#line 670 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001726{
vlmfa67ddc2004-06-03 03:38:44 +00001727 yyval.a_expr = yyvsp[-4].a_expr;
1728 assert(yyval.a_expr->Identifier == 0);
1729 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
1730 yyval.a_expr->meta_type = AMT_VALUESET;
1731 // take care of optValueSetBody
vlm6f5eb0b2004-08-13 12:35:09 +00001732 ;
1733 break;}
vlm9283dbe2004-08-18 04:59:12 +00001734case 52:
vlm5f0128b2004-08-20 13:25:29 +00001735#line 680 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001736{
vlmfa67ddc2004-06-03 03:38:44 +00001737 yyval.a_expr = asn1p_expr_new(yylineno);
1738 checkmem(yyval.a_expr);
1739 yyval.a_expr->reference = yyvsp[0].a_ref;
1740 yyval.a_expr->expr_type = A1TC_REFERENCE;
1741 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm6f5eb0b2004-08-13 12:35:09 +00001742 ;
1743 break;}
vlm9283dbe2004-08-18 04:59:12 +00001744case 53:
vlm5f0128b2004-08-20 13:25:29 +00001745#line 687 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001746{
vlmfa67ddc2004-06-03 03:38:44 +00001747 yyval.a_expr = asn1p_expr_new(yylineno);
1748 checkmem(yyval.a_expr);
1749 yyval.a_expr->expr_type = yyvsp[0].a_type;
1750 yyval.a_expr->meta_type = AMT_TYPE;
vlm6f5eb0b2004-08-13 12:35:09 +00001751 ;
1752 break;}
vlm9283dbe2004-08-18 04:59:12 +00001753case 54:
vlm5f0128b2004-08-20 13:25:29 +00001754#line 696 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001755{ ;
1756 break;}
vlm9283dbe2004-08-18 04:59:12 +00001757case 55:
vlm5f0128b2004-08-20 13:25:29 +00001758#line 697 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001759{
1760 ;
1761 break;}
vlm9283dbe2004-08-18 04:59:12 +00001762case 56:
vlm5f0128b2004-08-20 13:25:29 +00001763#line 713 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001764{
vlmfa67ddc2004-06-03 03:38:44 +00001765 yyval.a_expr = asn1p_expr_new(yylineno);
1766 checkmem(yyval.a_expr);
1767 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
1768 yyval.a_expr->tag = yyvsp[-1].a_tag;
1769 yyval.a_expr->expr_type = A1TC_TYPEID;
1770 yyval.a_expr->meta_type = AMT_TYPE;
vlm6f5eb0b2004-08-13 12:35:09 +00001771 ;
1772 break;}
vlm9283dbe2004-08-18 04:59:12 +00001773case 57:
vlm5f0128b2004-08-20 13:25:29 +00001774#line 721 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001775{
vlmfa67ddc2004-06-03 03:38:44 +00001776 yyval.a_expr = yyvsp[0].a_expr;
1777 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
1778 yyval.a_expr->tag = yyvsp[-1].a_tag;
1779 assert(yyval.a_expr->expr_type);
1780 assert(yyval.a_expr->meta_type);
vlm6f5eb0b2004-08-13 12:35:09 +00001781 ;
1782 break;}
vlm9283dbe2004-08-18 04:59:12 +00001783case 58:
vlm5f0128b2004-08-20 13:25:29 +00001784#line 728 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001785{
vlmfa67ddc2004-06-03 03:38:44 +00001786 yyval.a_expr = yyvsp[0].a_expr;
1787 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
1788 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
1789 assert(yyval.a_expr->meta_type == AMT_OBJECT);
vlm6f5eb0b2004-08-13 12:35:09 +00001790 ;
1791 break;}
vlm9283dbe2004-08-18 04:59:12 +00001792case 59:
vlmec8f6812004-08-22 03:19:54 +00001793#line 744 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001794{
vlmfa67ddc2004-06-03 03:38:44 +00001795 yyval.a_expr = yyvsp[0].a_expr;
1796 assert(yyval.a_expr->Identifier == 0);
1797 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
1798 yyval.a_expr->params = yyvsp[-3].a_plist;
1799 yyval.a_expr->meta_type = AMT_PARAMTYPE;
vlm6f5eb0b2004-08-13 12:35:09 +00001800 ;
1801 break;}
vlm9283dbe2004-08-18 04:59:12 +00001802case 60:
vlmec8f6812004-08-22 03:19:54 +00001803#line 754 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001804{
vlmfa67ddc2004-06-03 03:38:44 +00001805 int ret;
1806 yyval.a_plist = asn1p_paramlist_new(yylineno);
1807 checkmem(yyval.a_plist);
1808 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
1809 checkmem(ret == 0);
1810 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
1811 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm6f5eb0b2004-08-13 12:35:09 +00001812 ;
1813 break;}
vlm9283dbe2004-08-18 04:59:12 +00001814case 61:
vlmec8f6812004-08-22 03:19:54 +00001815#line 763 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001816{
vlmfa67ddc2004-06-03 03:38:44 +00001817 int ret;
1818 yyval.a_plist = yyvsp[-2].a_plist;
1819 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
1820 checkmem(ret == 0);
1821 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
1822 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm6f5eb0b2004-08-13 12:35:09 +00001823 ;
1824 break;}
vlm9283dbe2004-08-18 04:59:12 +00001825case 62:
vlmec8f6812004-08-22 03:19:54 +00001826#line 774 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001827{
vlmfa67ddc2004-06-03 03:38:44 +00001828 yyval.a_parg.governor = NULL;
1829 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6f5eb0b2004-08-13 12:35:09 +00001830 ;
1831 break;}
vlm9283dbe2004-08-18 04:59:12 +00001832case 63:
vlmec8f6812004-08-22 03:19:54 +00001833#line 778 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001834{
vlmfa67ddc2004-06-03 03:38:44 +00001835 int ret;
1836 yyval.a_parg.governor = asn1p_ref_new(yylineno);
1837 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
1838 checkmem(ret == 0);
1839 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6f5eb0b2004-08-13 12:35:09 +00001840 ;
1841 break;}
vlm9283dbe2004-08-18 04:59:12 +00001842case 64:
vlmec8f6812004-08-22 03:19:54 +00001843#line 785 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001844{
vlmfa67ddc2004-06-03 03:38:44 +00001845 int ret;
1846 yyval.a_parg.governor = asn1p_ref_new(yylineno);
1847 ret = asn1p_ref_add_component(yyval.a_parg.governor,
1848 ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
1849 checkmem(ret == 0);
1850 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6f5eb0b2004-08-13 12:35:09 +00001851 ;
1852 break;}
vlm9283dbe2004-08-18 04:59:12 +00001853case 65:
vlmec8f6812004-08-22 03:19:54 +00001854#line 796 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001855{
vlmfa67ddc2004-06-03 03:38:44 +00001856 yyval.a_expr = asn1p_expr_new(yylineno);
1857 checkmem(yyval.a_expr);
1858 TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
vlm6f5eb0b2004-08-13 12:35:09 +00001859 ;
1860 break;}
vlm9283dbe2004-08-18 04:59:12 +00001861case 66:
vlmec8f6812004-08-22 03:19:54 +00001862#line 801 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001863{
vlmfa67ddc2004-06-03 03:38:44 +00001864 yyval.a_expr = yyvsp[-2].a_expr;
1865 TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
vlm6f5eb0b2004-08-13 12:35:09 +00001866 ;
1867 break;}
vlm9283dbe2004-08-18 04:59:12 +00001868case 67:
vlmec8f6812004-08-22 03:19:54 +00001869#line 808 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001870{
vlmfa67ddc2004-06-03 03:38:44 +00001871 yyval.a_expr = yyvsp[0].a_expr;
vlm6f5eb0b2004-08-13 12:35:09 +00001872 ;
1873 break;}
vlm9283dbe2004-08-18 04:59:12 +00001874case 68:
vlmec8f6812004-08-22 03:19:54 +00001875#line 811 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001876{
vlmfa67ddc2004-06-03 03:38:44 +00001877 yyval.a_expr = asn1p_expr_new(yylineno);
1878 checkmem(yyval.a_expr);
1879 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1880 yyval.a_expr->expr_type = A1TC_REFERENCE;
1881 yyval.a_expr->meta_type = AMT_VALUE;
vlm6f5eb0b2004-08-13 12:35:09 +00001882 ;
1883 break;}
vlm9283dbe2004-08-18 04:59:12 +00001884case 69:
vlmec8f6812004-08-22 03:19:54 +00001885#line 824 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001886{
vlmfa67ddc2004-06-03 03:38:44 +00001887 yyval.a_expr = asn1p_expr_new(yylineno);
1888 checkmem(yyval.a_expr);
1889 TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
vlm6f5eb0b2004-08-13 12:35:09 +00001890 ;
1891 break;}
vlm9283dbe2004-08-18 04:59:12 +00001892case 70:
vlmec8f6812004-08-22 03:19:54 +00001893#line 829 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001894{
vlmfa67ddc2004-06-03 03:38:44 +00001895 yyval.a_expr = yyvsp[-2].a_expr;
1896 TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
vlm6f5eb0b2004-08-13 12:35:09 +00001897 ;
1898 break;}
vlm9283dbe2004-08-18 04:59:12 +00001899case 71:
vlmec8f6812004-08-22 03:19:54 +00001900#line 836 "asn1p_y.y"
1901{
1902 yyval.a_expr = yyvsp[-1].a_expr;
1903 assert(yyval.a_expr->Identifier == 0);
1904 yyval.a_expr->Identifier = yyvsp[-2].tv_nametag.name;
1905 yyval.a_expr->tag = yyvsp[-2].tv_nametag.tag;
1906 yyval.a_expr->marker = yyvsp[0].a_marker;
1907 ;
1908 break;}
1909case 72:
1910#line 843 "asn1p_y.y"
1911{
1912 yyval.a_expr = asn1p_expr_new(yylineno);
1913 checkmem(yyval.a_expr);
1914 yyval.a_expr->meta_type = yyvsp[0].a_expr->meta_type;
1915 yyval.a_expr->expr_type = A1TC_COMPONENTS_OF;
1916 TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
1917 ;
1918 break;}
1919case 73:
1920#line 850 "asn1p_y.y"
1921{
1922 yyval.a_expr = yyvsp[0].a_expr;
1923 ;
1924 break;}
1925case 74:
1926#line 856 "asn1p_y.y"
1927{
1928 yyval.a_expr = asn1p_expr_new(yylineno);
1929 checkmem(yyval.a_expr);
1930 TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
1931 ;
1932 break;}
1933case 75:
1934#line 861 "asn1p_y.y"
1935{
1936 yyval.a_expr = yyvsp[-2].a_expr;
1937 TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
1938 ;
1939 break;}
1940case 76:
1941#line 868 "asn1p_y.y"
1942{
1943 yyval.a_expr = yyvsp[0].a_expr;
1944 assert(yyval.a_expr->Identifier == 0);
1945 yyval.a_expr->Identifier = yyvsp[-1].tv_nametag.name;
1946 yyval.a_expr->tag = yyvsp[-1].tv_nametag.tag;
1947 ;
1948 break;}
1949case 77:
1950#line 874 "asn1p_y.y"
1951{
1952 yyval.a_expr = yyvsp[0].a_expr;
1953 ;
1954 break;}
1955case 78:
1956#line 880 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001957{
vlmfa67ddc2004-06-03 03:38:44 +00001958 yyval.a_expr = yyvsp[-2].a_expr;
1959 checkmem(yyval.a_expr);
1960 yyval.a_expr->with_syntax = yyvsp[0].a_wsynt;
1961 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
1962 assert(yyval.a_expr->meta_type == AMT_OBJECT);
vlm6f5eb0b2004-08-13 12:35:09 +00001963 ;
1964 break;}
vlmec8f6812004-08-22 03:19:54 +00001965case 79:
1966#line 890 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001967{ yyval.a_int = 0; ;
1968 break;}
vlmec8f6812004-08-22 03:19:54 +00001969case 80:
1970#line 891 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001971{ yyval.a_int = 1; ;
1972 break;}
vlmec8f6812004-08-22 03:19:54 +00001973case 81:
1974#line 895 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001975{
vlmfa67ddc2004-06-03 03:38:44 +00001976 yyval.a_expr = asn1p_expr_new(yylineno);
1977 checkmem(yyval.a_expr);
1978 yyval.a_expr->expr_type = A1TC_CLASSDEF;
1979 yyval.a_expr->meta_type = AMT_OBJECT;
1980 TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
vlm6f5eb0b2004-08-13 12:35:09 +00001981 ;
1982 break;}
vlmec8f6812004-08-22 03:19:54 +00001983case 82:
1984#line 902 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001985{
vlmfa67ddc2004-06-03 03:38:44 +00001986 yyval.a_expr = yyvsp[-2].a_expr;
1987 TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
vlm6f5eb0b2004-08-13 12:35:09 +00001988 ;
1989 break;}
vlmec8f6812004-08-22 03:19:54 +00001990case 83:
1991#line 909 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00001992{
vlmfa67ddc2004-06-03 03:38:44 +00001993 yyval.a_expr = asn1p_expr_new(yylineno);
1994 checkmem(yyval.a_expr);
1995 yyval.a_expr->Identifier = yyvsp[-1].a_refcomp.name;
1996 yyval.a_expr->expr_type = A1TC_CLASSFIELD;
1997 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
1998 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm6f5eb0b2004-08-13 12:35:09 +00001999 ;
2000 break;}
vlmec8f6812004-08-22 03:19:54 +00002001case 84:
2002#line 917 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002003{
vlmec8f6812004-08-22 03:19:54 +00002004 yyval.a_expr = yyvsp[-2].a_expr;
2005 yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
2006 yyval.a_expr->marker = yyvsp[-1].a_marker;
vlmfa67ddc2004-06-03 03:38:44 +00002007 yyval.a_expr->unique = yyvsp[0].a_int;
vlm6f5eb0b2004-08-13 12:35:09 +00002008 ;
2009 break;}
vlmec8f6812004-08-22 03:19:54 +00002010case 85:
2011#line 923 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002012{
vlmfa67ddc2004-06-03 03:38:44 +00002013 int ret;
2014 yyval.a_expr = asn1p_expr_new(yylineno);
2015 checkmem(yyval.a_expr);
2016 yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
2017 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2018 checkmem(yyval.a_expr->reference);
2019 ret = asn1p_ref_add_component(yyval.a_expr->reference,
2020 yyvsp[-2].a_refcomp.name, yyvsp[-2].a_refcomp.lex_type);
2021 checkmem(ret == 0);
2022 yyval.a_expr->expr_type = A1TC_CLASSFIELD;
2023 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2024 yyval.a_expr->marker = yyvsp[-1].a_marker;
2025 yyval.a_expr->unique = yyvsp[0].a_int;
vlm6f5eb0b2004-08-13 12:35:09 +00002026 ;
2027 break;}
vlmec8f6812004-08-22 03:19:54 +00002028case 86:
2029#line 941 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002030{ yyval.a_wsynt = 0; ;
2031 break;}
vlmec8f6812004-08-22 03:19:54 +00002032case 87:
2033#line 942 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002034{
vlmfa67ddc2004-06-03 03:38:44 +00002035 yyval.a_wsynt = yyvsp[0].a_wsynt;
vlm6f5eb0b2004-08-13 12:35:09 +00002036 ;
2037 break;}
vlmec8f6812004-08-22 03:19:54 +00002038case 88:
2039#line 949 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002040{ asn1p_lexer_hack_enable_with_syntax(); ;
2041 break;}
vlmec8f6812004-08-22 03:19:54 +00002042case 89:
2043#line 951 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002044{
vlmfa67ddc2004-06-03 03:38:44 +00002045 yyval.a_wsynt = yyvsp[-1].a_wsynt;
vlm6f5eb0b2004-08-13 12:35:09 +00002046 ;
2047 break;}
vlmec8f6812004-08-22 03:19:54 +00002048case 90:
2049#line 957 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002050{
vlmfa67ddc2004-06-03 03:38:44 +00002051 yyval.a_wsynt = asn1p_wsyntx_new();
2052 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm6f5eb0b2004-08-13 12:35:09 +00002053 ;
2054 break;}
vlmec8f6812004-08-22 03:19:54 +00002055case 91:
2056#line 961 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002057{
vlmfa67ddc2004-06-03 03:38:44 +00002058 yyval.a_wsynt = yyvsp[-1].a_wsynt;
2059 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm6f5eb0b2004-08-13 12:35:09 +00002060 ;
2061 break;}
vlmec8f6812004-08-22 03:19:54 +00002062case 92:
2063#line 968 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002064{
vlmfa67ddc2004-06-03 03:38:44 +00002065 yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
vlm6f5eb0b2004-08-13 12:35:09 +00002066 ;
2067 break;}
vlmec8f6812004-08-22 03:19:54 +00002068case 93:
2069#line 971 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002070{
vlmfa67ddc2004-06-03 03:38:44 +00002071 asn1p_ref_t *ref;
2072 int ret;
2073 ref = asn1p_ref_new(yylineno);
2074 checkmem(ref);
2075 ret = asn1p_ref_add_component(ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2076 checkmem(ret == 0);
2077 yyval.a_wchunk = asn1p_wsyntx_chunk_fromref(ref, 0);
vlm6f5eb0b2004-08-13 12:35:09 +00002078 ;
2079 break;}
vlmec8f6812004-08-22 03:19:54 +00002080case 94:
vlm5f0128b2004-08-20 13:25:29 +00002081#line 983 "asn1p_y.y"
vlm9283dbe2004-08-18 04:59:12 +00002082{
2083 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
2084 checkmem(yyval.a_expr);
2085 yyval.a_expr->Identifier = strdup("...");
2086 checkmem(yyval.a_expr->Identifier);
vlm9283dbe2004-08-18 04:59:12 +00002087 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2088 yyval.a_expr->meta_type = AMT_TYPE;
2089 ;
2090 break;}
vlmec8f6812004-08-22 03:19:54 +00002091case 95:
vlm5f0128b2004-08-20 13:25:29 +00002092#line 991 "asn1p_y.y"
vlm9283dbe2004-08-18 04:59:12 +00002093{
2094 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
2095 checkmem(yyval.a_expr);
2096 yyval.a_expr->Identifier = strdup("...");
vlm9283dbe2004-08-18 04:59:12 +00002097 checkmem(yyval.a_expr->Identifier);
vlm5f0128b2004-08-20 13:25:29 +00002098 yyval.a_expr->value = yyvsp[0].a_value;
vlm9283dbe2004-08-18 04:59:12 +00002099 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2100 yyval.a_expr->meta_type = AMT_TYPE;
2101 ;
2102 break;}
vlmec8f6812004-08-22 03:19:54 +00002103case 96:
vlm9283dbe2004-08-18 04:59:12 +00002104#line 1000 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002105{
vlm5f0128b2004-08-20 13:25:29 +00002106 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
2107 checkmem(yyval.a_expr);
2108 yyval.a_expr->Identifier = strdup("...");
2109 yyval.a_expr->value = yyvsp[0].a_value;
2110 checkmem(yyval.a_expr->Identifier);
2111 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2112 yyval.a_expr->meta_type = AMT_TYPE;
vlm6f5eb0b2004-08-13 12:35:09 +00002113 ;
2114 break;}
vlmec8f6812004-08-22 03:19:54 +00002115case 97:
vlm5f0128b2004-08-20 13:25:29 +00002116#line 1012 "asn1p_y.y"
2117{
vlmec8f6812004-08-22 03:19:54 +00002118 yyval.a_expr = yyvsp[-1].a_expr;
2119 /*
2120 * Outer constraint for SEQUENCE OF and SET OF applies
2121 * to the inner type.
2122 */
2123 if(yyval.a_expr->expr_type == ASN_CONSTR_SEQUENCE_OF
2124 || yyval.a_expr->expr_type == ASN_CONSTR_SET_OF) {
2125 assert(!TQ_FIRST(&(yyval.a_expr->members))->constraints);
2126 TQ_FIRST(&(yyval.a_expr->members))->constraints = yyvsp[0].a_constr;
2127 } else {
2128 if(yyval.a_expr->constraints) {
2129 assert(!yyvsp[0].a_constr);
2130 } else {
2131 yyval.a_expr->constraints = yyvsp[0].a_constr;
2132 }
2133 }
2134 ;
2135 break;}
2136case 98:
2137#line 1033 "asn1p_y.y"
2138{
vlm5f0128b2004-08-20 13:25:29 +00002139 yyval.a_expr = yyvsp[0].a_expr;
2140 ;
2141 break;}
vlmec8f6812004-08-22 03:19:54 +00002142case 99:
2143#line 1036 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002144{
vlmfa67ddc2004-06-03 03:38:44 +00002145 yyval.a_expr = asn1p_expr_new(yylineno);
2146 checkmem(yyval.a_expr);
2147 yyval.a_expr->expr_type = yyvsp[0].a_type;
2148 yyval.a_expr->meta_type = AMT_TYPE;
vlm6f5eb0b2004-08-13 12:35:09 +00002149 ;
2150 break;}
vlmec8f6812004-08-22 03:19:54 +00002151case 100:
2152#line 1042 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002153{
vlmec8f6812004-08-22 03:19:54 +00002154 yyval.a_expr = yyvsp[-1].a_expr;
2155 assert(yyval.a_expr->expr_type == A1TC_INVALID);
2156 yyval.a_expr->expr_type = ASN_CONSTR_CHOICE;
2157 yyval.a_expr->meta_type = AMT_TYPE;
vlm6f5eb0b2004-08-13 12:35:09 +00002158 ;
2159 break;}
vlmec8f6812004-08-22 03:19:54 +00002160case 101:
2161#line 1048 "asn1p_y.y"
2162{
2163 yyval.a_expr = yyvsp[-1].a_expr;
2164 assert(yyval.a_expr->expr_type == A1TC_INVALID);
2165 yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE;
2166 yyval.a_expr->meta_type = AMT_TYPE;
2167 ;
2168 break;}
2169case 102:
2170#line 1054 "asn1p_y.y"
2171{
2172 yyval.a_expr = yyvsp[-1].a_expr;
2173 assert(yyval.a_expr->expr_type == A1TC_INVALID);
2174 yyval.a_expr->expr_type = ASN_CONSTR_SET;
2175 yyval.a_expr->meta_type = AMT_TYPE;
2176 ;
2177 break;}
2178case 103:
2179#line 1060 "asn1p_y.y"
2180{
2181 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
2182 checkmem(yyval.a_expr);
2183 yyval.a_expr->constraints = yyvsp[-2].a_constr;
2184 yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE_OF;
2185 yyval.a_expr->meta_type = AMT_TYPE;
2186 TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
2187 ;
2188 break;}
2189case 104:
2190#line 1068 "asn1p_y.y"
2191{
2192 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
2193 checkmem(yyval.a_expr);
2194 yyval.a_expr->constraints = yyvsp[-2].a_constr;
2195 yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
2196 yyval.a_expr->meta_type = AMT_TYPE;
2197 TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
2198 ;
2199 break;}
2200case 105:
2201#line 1076 "asn1p_y.y"
2202{
2203 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
2204 checkmem(yyval.a_expr);
2205 yyval.a_expr->expr_type = ASN_CONSTR_ANY;
2206 yyval.a_expr->meta_type = AMT_TYPE;
2207 ;
2208 break;}
2209case 106:
2210#line 1082 "asn1p_y.y"
2211{
2212 int ret;
2213 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
2214 checkmem(yyval.a_expr);
2215 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2216 ret = asn1p_ref_add_component(yyval.a_expr->reference,
2217 yyvsp[0].tv_str, RLT_lowercase);
2218 checkmem(ret == 0);
2219 yyval.a_expr->expr_type = ASN_CONSTR_ANY;
2220 yyval.a_expr->meta_type = AMT_TYPE;
2221 ;
2222 break;}
2223case 107:
2224#line 1097 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002225{
vlmfa67ddc2004-06-03 03:38:44 +00002226 int ret;
2227 yyval.a_expr = yyvsp[-1].a_expr;
2228 assert(yyval.a_expr->expr_type == 0);
2229 assert(yyval.a_expr->meta_type == 0);
2230 assert(yyval.a_expr->reference == 0);
2231 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2232 checkmem(yyval.a_expr->reference);
2233 ret = asn1p_ref_add_component(yyval.a_expr->reference, yyvsp[-3].tv_str, RLT_UNKNOWN);
2234 checkmem(ret == 0);
2235 free(yyvsp[-3].tv_str);
2236 yyval.a_expr->expr_type = A1TC_PARAMETRIZED;
2237 yyval.a_expr->meta_type = AMT_TYPE;
vlm6f5eb0b2004-08-13 12:35:09 +00002238 ;
2239 break;}
vlmec8f6812004-08-22 03:19:54 +00002240case 108:
2241#line 1121 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002242{
vlmfa67ddc2004-06-03 03:38:44 +00002243 yyval.a_expr = asn1p_expr_new(yylineno);
2244 checkmem(yyval.a_expr);
2245 yyval.a_expr->reference = yyvsp[0].a_ref;
2246 yyval.a_expr->expr_type = A1TC_REFERENCE;
2247 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm6f5eb0b2004-08-13 12:35:09 +00002248 ;
2249 break;}
vlmec8f6812004-08-22 03:19:54 +00002250case 109:
2251#line 1128 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002252{
vlmfa67ddc2004-06-03 03:38:44 +00002253 yyval.a_expr = asn1p_expr_new(yylineno);
2254 checkmem(yyval.a_expr);
2255 yyval.a_expr->reference = yyvsp[0].a_ref;
2256 yyval.a_expr->expr_type = A1TC_INSTANCE;
2257 yyval.a_expr->meta_type = AMT_TYPE;
vlm6f5eb0b2004-08-13 12:35:09 +00002258 ;
2259 break;}
vlmec8f6812004-08-22 03:19:54 +00002260case 110:
2261#line 1143 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002262{
vlmfa67ddc2004-06-03 03:38:44 +00002263 int ret;
2264 yyval.a_ref = asn1p_ref_new(yylineno);
2265 checkmem(yyval.a_ref);
2266 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
2267 checkmem(ret == 0);
2268 free(yyvsp[0].tv_str);
vlm6f5eb0b2004-08-13 12:35:09 +00002269 ;
2270 break;}
vlmec8f6812004-08-22 03:19:54 +00002271case 111:
2272#line 1151 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002273{
vlmfa67ddc2004-06-03 03:38:44 +00002274 int ret;
2275 yyval.a_ref = asn1p_ref_new(yylineno);
2276 checkmem(yyval.a_ref);
2277 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2278 checkmem(ret == 0);
2279 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
2280 checkmem(ret == 0);
2281 free(yyvsp[-2].tv_str);
vlm6f5eb0b2004-08-13 12:35:09 +00002282 ;
2283 break;}
vlmec8f6812004-08-22 03:19:54 +00002284case 112:
2285#line 1161 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002286{
vlmfa67ddc2004-06-03 03:38:44 +00002287 int ret;
2288 yyval.a_ref = asn1p_ref_new(yylineno);
2289 checkmem(yyval.a_ref);
2290 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2291 checkmem(ret == 0);
2292 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
2293 checkmem(ret == 0);
2294 free(yyvsp[-2].tv_str);
vlm6f5eb0b2004-08-13 12:35:09 +00002295 ;
2296 break;}
vlmec8f6812004-08-22 03:19:54 +00002297case 113:
2298#line 1171 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002299{
vlmfa67ddc2004-06-03 03:38:44 +00002300 int ret;
2301 yyval.a_ref = asn1p_ref_new(yylineno);
2302 checkmem(yyval.a_ref);
2303 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
2304 free(yyvsp[0].tv_str);
2305 checkmem(ret == 0);
vlm6f5eb0b2004-08-13 12:35:09 +00002306 ;
2307 break;}
vlmec8f6812004-08-22 03:19:54 +00002308case 114:
2309#line 1179 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002310{
vlmfa67ddc2004-06-03 03:38:44 +00002311 int ret;
2312 yyval.a_ref = yyvsp[0].a_ref;
2313 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_CAPITALS);
2314 free(yyvsp[-2].tv_str);
2315 checkmem(ret == 0);
2316 /*
2317 * Move the last element infront.
2318 */
2319 {
2320 struct asn1p_ref_component_s tmp_comp;
2321 tmp_comp = yyval.a_ref->components[yyval.a_ref->comp_count-1];
2322 memmove(&yyval.a_ref->components[1],
2323 &yyval.a_ref->components[0],
2324 sizeof(yyval.a_ref->components[0])
2325 * (yyval.a_ref->comp_count - 1));
2326 yyval.a_ref->components[0] = tmp_comp;
2327 }
vlm6f5eb0b2004-08-13 12:35:09 +00002328 ;
2329 break;}
vlmec8f6812004-08-22 03:19:54 +00002330case 115:
2331#line 1201 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002332{
vlmfa67ddc2004-06-03 03:38:44 +00002333 int ret;
2334 yyval.a_ref = asn1p_ref_new(yylineno);
2335 checkmem(yyval.a_ref);
2336 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2337 free(yyvsp[0].a_refcomp.name);
2338 checkmem(ret == 0);
vlm6f5eb0b2004-08-13 12:35:09 +00002339 ;
2340 break;}
vlmec8f6812004-08-22 03:19:54 +00002341case 116:
2342#line 1209 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002343{
vlmfa67ddc2004-06-03 03:38:44 +00002344 int ret;
2345 yyval.a_ref = yyvsp[-2].a_ref;
2346 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2347 free(yyvsp[0].a_refcomp.name);
2348 checkmem(ret == 0);
vlm6f5eb0b2004-08-13 12:35:09 +00002349 ;
2350 break;}
vlmec8f6812004-08-22 03:19:54 +00002351case 119:
2352#line 1223 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002353{
vlmfa67ddc2004-06-03 03:38:44 +00002354 yyval.a_refcomp.lex_type = RLT_AmpUppercase;
2355 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm6f5eb0b2004-08-13 12:35:09 +00002356 ;
2357 break;}
vlmec8f6812004-08-22 03:19:54 +00002358case 120:
2359#line 1228 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002360{
vlmfa67ddc2004-06-03 03:38:44 +00002361 yyval.a_refcomp.lex_type = RLT_Amplowercase;
2362 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm6f5eb0b2004-08-13 12:35:09 +00002363 ;
2364 break;}
vlmec8f6812004-08-22 03:19:54 +00002365case 121:
2366#line 1241 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002367{
vlmfa67ddc2004-06-03 03:38:44 +00002368 yyval.a_expr = yyvsp[-2].a_expr;
2369 assert(yyval.a_expr->Identifier == NULL);
2370 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
2371 yyval.a_expr->meta_type = AMT_VALUE;
2372 yyval.a_expr->value = yyvsp[0].a_value;
vlm6f5eb0b2004-08-13 12:35:09 +00002373 ;
2374 break;}
vlmec8f6812004-08-22 03:19:54 +00002375case 122:
2376#line 1251 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002377{ asn1p_lexer_hack_push_opaque_state(); ;
2378 break;}
vlmec8f6812004-08-22 03:19:54 +00002379case 123:
2380#line 1252 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002381{
vlmfa67ddc2004-06-03 03:38:44 +00002382 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2383 checkmem(yyval.a_value);
2384 yyval.a_value->type = ATV_UNPARSED;
vlm6f5eb0b2004-08-13 12:35:09 +00002385 ;
2386 break;}
vlmec8f6812004-08-22 03:19:54 +00002387case 124:
2388#line 1257 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002389{
vlmfa67ddc2004-06-03 03:38:44 +00002390 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
2391 checkmem(yyval.a_value);
vlm6f5eb0b2004-08-13 12:35:09 +00002392 ;
2393 break;}
vlmec8f6812004-08-22 03:19:54 +00002394case 125:
2395#line 1261 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002396{
vlmfa67ddc2004-06-03 03:38:44 +00002397 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
2398 checkmem(yyval.a_value);
vlm6f5eb0b2004-08-13 12:35:09 +00002399 ;
2400 break;}
vlmec8f6812004-08-22 03:19:54 +00002401case 126:
2402#line 1265 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002403{
vlmfa67ddc2004-06-03 03:38:44 +00002404 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2405 checkmem(yyval.a_value);
vlm6f5eb0b2004-08-13 12:35:09 +00002406 ;
2407 break;}
vlmec8f6812004-08-22 03:19:54 +00002408case 127:
2409#line 1269 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002410{
vlmfa67ddc2004-06-03 03:38:44 +00002411 yyval.a_value = yyvsp[0].a_value;
vlm6f5eb0b2004-08-13 12:35:09 +00002412 ;
2413 break;}
vlmec8f6812004-08-22 03:19:54 +00002414case 128:
2415#line 1272 "asn1p_y.y"
vlm5f0128b2004-08-20 13:25:29 +00002416{
2417 yyval.a_value = yyvsp[0].a_value;
2418 ;
2419 break;}
vlmec8f6812004-08-22 03:19:54 +00002420case 129:
2421#line 1278 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002422{
vlmfa67ddc2004-06-03 03:38:44 +00002423 asn1p_ref_t *ref;
2424 int ret;
2425 ref = asn1p_ref_new(yylineno);
2426 checkmem(ref);
2427 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
2428 checkmem(ret == 0);
2429 yyval.a_value = asn1p_value_fromref(ref, 0);
2430 checkmem(yyval.a_value);
2431 free(yyvsp[0].tv_str);
vlm6f5eb0b2004-08-13 12:35:09 +00002432 ;
2433 break;}
vlmec8f6812004-08-22 03:19:54 +00002434case 130:
2435#line 1289 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002436{
vlmfa67ddc2004-06-03 03:38:44 +00002437 asn1p_ref_t *ref;
2438 int ret;
2439 ref = asn1p_ref_new(yylineno);
2440 checkmem(ref);
2441 ret = asn1p_ref_add_component(ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2442 checkmem(ret == 0);
2443 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
2444 checkmem(ret == 0);
2445 yyval.a_value = asn1p_value_fromref(ref, 0);
2446 checkmem(yyval.a_value);
2447 free(yyvsp[-2].tv_str);
2448 free(yyvsp[0].tv_str);
vlm6f5eb0b2004-08-13 12:35:09 +00002449 ;
2450 break;}
vlmec8f6812004-08-22 03:19:54 +00002451case 131:
2452#line 1306 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002453{
vlmfa67ddc2004-06-03 03:38:44 +00002454 yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 2;
2455 yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
2456 checkmem(yyval.tv_opaque.buf);
2457 yyval.tv_opaque.buf[0] = '{';
2458 yyval.tv_opaque.buf[1] = ' ';
2459 memcpy(yyval.tv_opaque.buf + 2, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
2460 yyval.tv_opaque.buf[yyval.tv_opaque.len] = '\0';
2461 free(yyvsp[0].tv_opaque.buf);
vlm6f5eb0b2004-08-13 12:35:09 +00002462 ;
2463 break;}
vlmec8f6812004-08-22 03:19:54 +00002464case 132:
2465#line 1316 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002466{
vlmfa67ddc2004-06-03 03:38:44 +00002467 int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
2468 char *p = malloc(newsize + 1);
2469 checkmem(p);
2470 memcpy(p , yyvsp[-1].tv_opaque.buf, yyvsp[-1].tv_opaque.len);
2471 memcpy(p + yyvsp[-1].tv_opaque.len, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
2472 p[newsize] = '\0';
2473 free(yyvsp[-1].tv_opaque.buf);
2474 free(yyvsp[0].tv_opaque.buf);
2475 yyval.tv_opaque.buf = p;
2476 yyval.tv_opaque.len = newsize;
vlm6f5eb0b2004-08-13 12:35:09 +00002477 ;
2478 break;}
vlmec8f6812004-08-22 03:19:54 +00002479case 133:
2480#line 1331 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002481{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
2482 break;}
vlmec8f6812004-08-22 03:19:54 +00002483case 134:
2484#line 1332 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002485{ yyval.a_type = ASN_BASIC_NULL; ;
2486 break;}
vlmec8f6812004-08-22 03:19:54 +00002487case 135:
2488#line 1333 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002489{ yyval.a_type = ASN_BASIC_REAL; ;
2490 break;}
vlmec8f6812004-08-22 03:19:54 +00002491case 136:
2492#line 1334 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002493{ yyval.a_type = yyvsp[0].a_type; ;
2494 break;}
vlmec8f6812004-08-22 03:19:54 +00002495case 137:
2496#line 1335 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002497{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
2498 break;}
vlmec8f6812004-08-22 03:19:54 +00002499case 138:
2500#line 1336 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002501{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
2502 break;}
vlmec8f6812004-08-22 03:19:54 +00002503case 139:
2504#line 1337 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002505{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
2506 break;}
vlmec8f6812004-08-22 03:19:54 +00002507case 140:
2508#line 1338 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002509{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
2510 break;}
vlmec8f6812004-08-22 03:19:54 +00002511case 141:
2512#line 1339 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002513{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
2514 break;}
vlmec8f6812004-08-22 03:19:54 +00002515case 142:
2516#line 1340 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002517{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
2518 break;}
vlmec8f6812004-08-22 03:19:54 +00002519case 143:
2520#line 1341 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002521{ yyval.a_type = ASN_BASIC_UTCTime; ;
2522 break;}
vlmec8f6812004-08-22 03:19:54 +00002523case 144:
2524#line 1342 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002525{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
2526 break;}
vlmec8f6812004-08-22 03:19:54 +00002527case 145:
2528#line 1349 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002529{ yyval.a_type = ASN_BASIC_INTEGER; ;
2530 break;}
vlmec8f6812004-08-22 03:19:54 +00002531case 146:
2532#line 1350 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002533{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
2534 break;}
vlmec8f6812004-08-22 03:19:54 +00002535case 147:
2536#line 1351 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002537{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
2538 break;}
vlmec8f6812004-08-22 03:19:54 +00002539case 148:
2540#line 1355 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002541{
vlmfa67ddc2004-06-03 03:38:44 +00002542 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
2543 checkmem(yyval.a_expr);
2544 yyval.a_expr->expr_type = yyvsp[0].a_type;
2545 yyval.a_expr->meta_type = AMT_TYPE;
vlm6f5eb0b2004-08-13 12:35:09 +00002546 ;
2547 break;}
vlmec8f6812004-08-22 03:19:54 +00002548case 149:
2549#line 1361 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002550{
vlmfa67ddc2004-06-03 03:38:44 +00002551 if(yyvsp[0].a_expr) {
2552 yyval.a_expr = yyvsp[0].a_expr;
2553 } else {
2554 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
2555 checkmem(yyval.a_expr);
2556 }
2557 yyval.a_expr->expr_type = yyvsp[-1].a_type;
2558 yyval.a_expr->meta_type = AMT_TYPE;
vlm6f5eb0b2004-08-13 12:35:09 +00002559 ;
2560 break;}
vlmec8f6812004-08-22 03:19:54 +00002561case 150:
2562#line 1374 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002563{ yyval.a_type = ASN_STRING_BMPString; ;
2564 break;}
vlmec8f6812004-08-22 03:19:54 +00002565case 151:
2566#line 1375 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002567{
vlmfa67ddc2004-06-03 03:38:44 +00002568 yyval.a_type = ASN_STRING_GeneralString;
2569 return yyerror("GeneralString is not supported");
vlm6f5eb0b2004-08-13 12:35:09 +00002570 ;
2571 break;}
vlmec8f6812004-08-22 03:19:54 +00002572case 152:
2573#line 1379 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002574{
vlmfa67ddc2004-06-03 03:38:44 +00002575 yyval.a_type = ASN_STRING_GraphicString;
2576 return yyerror("GraphicString is not supported");
vlm6f5eb0b2004-08-13 12:35:09 +00002577 ;
2578 break;}
vlmec8f6812004-08-22 03:19:54 +00002579case 153:
2580#line 1383 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002581{ yyval.a_type = ASN_STRING_IA5String; ;
2582 break;}
vlmec8f6812004-08-22 03:19:54 +00002583case 154:
2584#line 1384 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002585{ yyval.a_type = ASN_STRING_ISO646String; ;
2586 break;}
vlmec8f6812004-08-22 03:19:54 +00002587case 155:
2588#line 1385 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002589{ yyval.a_type = ASN_STRING_NumericString; ;
2590 break;}
vlmec8f6812004-08-22 03:19:54 +00002591case 156:
2592#line 1386 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002593{ yyval.a_type = ASN_STRING_PrintableString; ;
2594 break;}
vlmec8f6812004-08-22 03:19:54 +00002595case 157:
2596#line 1387 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002597{
vlmfa67ddc2004-06-03 03:38:44 +00002598 yyval.a_type = ASN_STRING_T61String;
2599 return yyerror("T61String not implemented yet");
vlm6f5eb0b2004-08-13 12:35:09 +00002600 ;
2601 break;}
vlmec8f6812004-08-22 03:19:54 +00002602case 158:
2603#line 1391 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002604{ yyval.a_type = ASN_STRING_TeletexString; ;
2605 break;}
vlmec8f6812004-08-22 03:19:54 +00002606case 159:
2607#line 1392 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002608{ yyval.a_type = ASN_STRING_UniversalString; ;
2609 break;}
vlmec8f6812004-08-22 03:19:54 +00002610case 160:
2611#line 1393 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002612{ yyval.a_type = ASN_STRING_UTF8String; ;
2613 break;}
vlmec8f6812004-08-22 03:19:54 +00002614case 161:
2615#line 1394 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002616{
vlmfa67ddc2004-06-03 03:38:44 +00002617 yyval.a_type = ASN_STRING_VideotexString;
2618 return yyerror("VideotexString is no longer supported");
vlm6f5eb0b2004-08-13 12:35:09 +00002619 ;
2620 break;}
vlmec8f6812004-08-22 03:19:54 +00002621case 162:
2622#line 1398 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002623{ yyval.a_type = ASN_STRING_VisibleString; ;
2624 break;}
vlmec8f6812004-08-22 03:19:54 +00002625case 163:
2626#line 1399 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002627{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
2628 break;}
vlmec8f6812004-08-22 03:19:54 +00002629case 169:
2630#line 1411 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002631{ yyval.a_constr = 0; ;
2632 break;}
vlmec8f6812004-08-22 03:19:54 +00002633case 170:
2634#line 1412 "asn1p_y.y"
vlm5f0128b2004-08-20 13:25:29 +00002635{
2636 yyval.a_constr = yyvsp[0].a_constr;
2637 ;
2638 break;}
vlmec8f6812004-08-22 03:19:54 +00002639case 171:
2640#line 1418 "asn1p_y.y"
vlm9283dbe2004-08-18 04:59:12 +00002641{
2642 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
2643 ;
vlm6f5eb0b2004-08-13 12:35:09 +00002644 break;}
vlmec8f6812004-08-22 03:19:54 +00002645case 172:
2646#line 1421 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002647{
vlmfa67ddc2004-06-03 03:38:44 +00002648 /*
2649 * This is a special case, for compatibility purposes.
vlm9283dbe2004-08-18 04:59:12 +00002650 * It goes without parentheses.
vlmfa67ddc2004-06-03 03:38:44 +00002651 */
vlm5f0128b2004-08-20 13:25:29 +00002652 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
vlm6f5eb0b2004-08-13 12:35:09 +00002653 ;
2654 break;}
vlmec8f6812004-08-22 03:19:54 +00002655case 173:
2656#line 1431 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002657{
vlmfa67ddc2004-06-03 03:38:44 +00002658 yyval.a_constr = yyvsp[-1].a_constr;
vlm6f5eb0b2004-08-13 12:35:09 +00002659 ;
2660 break;}
vlmec8f6812004-08-22 03:19:54 +00002661case 174:
2662#line 1434 "asn1p_y.y"
vlm9283dbe2004-08-18 04:59:12 +00002663{
2664 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
2665 ;
2666 break;}
vlmec8f6812004-08-22 03:19:54 +00002667case 175:
2668#line 1440 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002669{
vlmfa67ddc2004-06-03 03:38:44 +00002670 yyval.a_constr = yyvsp[0].a_constr;
vlm6f5eb0b2004-08-13 12:35:09 +00002671 ;
2672 break;}
vlmec8f6812004-08-22 03:19:54 +00002673case 176:
2674#line 1443 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002675{
vlmfa67ddc2004-06-03 03:38:44 +00002676 asn1p_constraint_t *ct;
2677 ct = asn1p_constraint_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00002678 ct->type = ACT_EL_EXT;
2679 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm6f5eb0b2004-08-13 12:35:09 +00002680 ;
2681 break;}
vlmec8f6812004-08-22 03:19:54 +00002682case 177:
2683#line 1449 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002684{
vlmfa67ddc2004-06-03 03:38:44 +00002685 asn1p_constraint_t *ct;
2686 ct = asn1p_constraint_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00002687 ct->type = ACT_EL_EXT;
2688 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-4].a_constr, ct);
vlm6f5eb0b2004-08-13 12:35:09 +00002689 ct = yyval.a_constr;
2690 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
2691 ;
2692 break;}
vlmec8f6812004-08-22 03:19:54 +00002693case 178:
2694#line 1460 "asn1p_y.y"
vlm9283dbe2004-08-18 04:59:12 +00002695{
2696 yyval.a_constr = yyvsp[0].a_constr;
2697 ;
vlm6f5eb0b2004-08-13 12:35:09 +00002698 break;}
vlmec8f6812004-08-22 03:19:54 +00002699case 179:
2700#line 1463 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002701{
vlmfa67ddc2004-06-03 03:38:44 +00002702 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6f5eb0b2004-08-13 12:35:09 +00002703 ;
2704 break;}
vlmec8f6812004-08-22 03:19:54 +00002705case 180:
2706#line 1466 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002707{
vlmfa67ddc2004-06-03 03:38:44 +00002708 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6f5eb0b2004-08-13 12:35:09 +00002709 ;
2710 break;}
vlmec8f6812004-08-22 03:19:54 +00002711case 181:
2712#line 1469 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002713{
vlmfa67ddc2004-06-03 03:38:44 +00002714 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6f5eb0b2004-08-13 12:35:09 +00002715 ;
2716 break;}
vlmec8f6812004-08-22 03:19:54 +00002717case 182:
2718#line 1475 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002719{
vlmfa67ddc2004-06-03 03:38:44 +00002720 int ret;
2721 yyval.a_constr = asn1p_constraint_new(yylineno);
2722 checkmem(yyval.a_constr);
2723 yyval.a_constr->type = yyvsp[-3].a_ctype;
2724 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
2725 checkmem(ret == 0);
vlm6f5eb0b2004-08-13 12:35:09 +00002726 ;
2727 break;}
vlmec8f6812004-08-22 03:19:54 +00002728case 183:
2729#line 1483 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002730{
vlm9283dbe2004-08-18 04:59:12 +00002731 int ret;
2732 yyval.a_constr = asn1p_constraint_new(yylineno);
2733 checkmem(yyval.a_constr);
2734 yyval.a_constr->type = ACT_CA_SET;
2735 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
2736 checkmem(ret == 0);
2737 ;
2738 break;}
vlmec8f6812004-08-22 03:19:54 +00002739case 184:
2740#line 1491 "asn1p_y.y"
vlm9283dbe2004-08-18 04:59:12 +00002741{
2742 yyval.a_constr = asn1p_constraint_new(yylineno);
2743 checkmem(yyval.a_constr);
2744 yyval.a_constr->type = ACT_EL_VALUE;
2745 yyval.a_constr->value = yyvsp[0].a_value;
2746 ;
2747 break;}
vlm6f5eb0b2004-08-13 12:35:09 +00002748case 185:
vlmec8f6812004-08-22 03:19:54 +00002749#line 1497 "asn1p_y.y"
vlm5f0128b2004-08-20 13:25:29 +00002750{
2751 yyval.a_constr = asn1p_constraint_new(yylineno);
2752 checkmem(yyval.a_constr);
2753 yyval.a_constr->type = yyvsp[-1].a_ctype;
vlmec8f6812004-08-22 03:19:54 +00002754 yyval.a_constr->range_start = yyvsp[-2].a_value;
2755 yyval.a_constr->range_stop = yyvsp[0].a_value;
vlm5f0128b2004-08-20 13:25:29 +00002756 ;
2757 break;}
2758case 186:
vlmec8f6812004-08-22 03:19:54 +00002759#line 1504 "asn1p_y.y"
vlm9283dbe2004-08-18 04:59:12 +00002760{
vlmec8f6812004-08-22 03:19:54 +00002761 yyval.a_constr = asn1p_constraint_new(yylineno);
2762 checkmem(yyval.a_constr);
2763 yyval.a_constr->type = yyvsp[-1].a_ctype;
2764 yyval.a_constr->range_start = asn1p_value_fromint(-123);
2765 yyval.a_constr->range_stop = yyvsp[0].a_value;
2766 yyval.a_constr->range_start->type = ATV_MIN;
vlm9283dbe2004-08-18 04:59:12 +00002767 ;
vlm6f5eb0b2004-08-13 12:35:09 +00002768 break;}
vlm6f5eb0b2004-08-13 12:35:09 +00002769case 187:
vlmec8f6812004-08-22 03:19:54 +00002770#line 1512 "asn1p_y.y"
2771{
2772 yyval.a_constr = asn1p_constraint_new(yylineno);
2773 checkmem(yyval.a_constr);
2774 yyval.a_constr->type = yyvsp[-1].a_ctype;
2775 yyval.a_constr->range_start = yyvsp[-2].a_value;
2776 yyval.a_constr->range_stop = asn1p_value_fromint(321);
2777 yyval.a_constr->range_stop->type = ATV_MAX;
2778 ;
2779 break;}
2780case 188:
2781#line 1520 "asn1p_y.y"
2782{
2783 yyval.a_constr = asn1p_constraint_new(yylineno);
2784 checkmem(yyval.a_constr);
2785 yyval.a_constr->type = yyvsp[-1].a_ctype;
2786 yyval.a_constr->range_start = asn1p_value_fromint(-123);
2787 yyval.a_constr->range_stop = asn1p_value_fromint(321);
2788 yyval.a_constr->range_start->type = ATV_MIN;
2789 yyval.a_constr->range_stop->type = ATV_MAX;
2790 ;
2791 break;}
2792case 189:
2793#line 1529 "asn1p_y.y"
vlm5f0128b2004-08-20 13:25:29 +00002794{
2795 yyval.a_constr = yyvsp[0].a_constr;
2796 ;
vlm6f5eb0b2004-08-13 12:35:09 +00002797 break;}
vlm9283dbe2004-08-18 04:59:12 +00002798case 190:
vlmec8f6812004-08-22 03:19:54 +00002799#line 1532 "asn1p_y.y"
2800{
2801 yyval.a_constr = yyvsp[0].a_constr;
2802 ;
vlm5f0128b2004-08-20 13:25:29 +00002803 break;}
2804case 191:
vlmec8f6812004-08-22 03:19:54 +00002805#line 1538 "asn1p_y.y"
2806{ yyval.a_ctype = ACT_EL_RANGE; ;
vlm5f0128b2004-08-20 13:25:29 +00002807 break;}
2808case 192:
vlmec8f6812004-08-22 03:19:54 +00002809#line 1539 "asn1p_y.y"
2810{ yyval.a_ctype = ACT_EL_RLRANGE; ;
2811 break;}
2812case 193:
2813#line 1540 "asn1p_y.y"
2814{ yyval.a_ctype = ACT_EL_LLRANGE; ;
2815 break;}
2816case 194:
2817#line 1541 "asn1p_y.y"
2818{ yyval.a_ctype = ACT_EL_ULRANGE; ;
2819 break;}
2820case 195:
2821#line 1545 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002822{
vlmfa67ddc2004-06-03 03:38:44 +00002823 yyval.a_ctype = ACT_CT_SIZE;
vlm6f5eb0b2004-08-13 12:35:09 +00002824 ;
2825 break;}
vlmec8f6812004-08-22 03:19:54 +00002826case 196:
2827#line 1548 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002828{
vlmfa67ddc2004-06-03 03:38:44 +00002829 yyval.a_ctype = ACT_CT_FROM;
vlm6f5eb0b2004-08-13 12:35:09 +00002830 ;
2831 break;}
vlmec8f6812004-08-22 03:19:54 +00002832case 197:
2833#line 1554 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002834{
vlmfa67ddc2004-06-03 03:38:44 +00002835 yyval.a_value = yyvsp[0].a_value;
vlm6f5eb0b2004-08-13 12:35:09 +00002836 ;
2837 break;}
vlmec8f6812004-08-22 03:19:54 +00002838case 198:
2839#line 1557 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002840{
vlmfa67ddc2004-06-03 03:38:44 +00002841 asn1p_ref_t *ref;
2842 int ret;
2843 ref = asn1p_ref_new(yylineno);
2844 checkmem(ref);
2845 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
2846 checkmem(ret == 0);
2847 yyval.a_value = asn1p_value_fromref(ref, 0);
2848 checkmem(yyval.a_value);
2849 free(yyvsp[0].tv_str);
vlm6f5eb0b2004-08-13 12:35:09 +00002850 ;
2851 break;}
vlmec8f6812004-08-22 03:19:54 +00002852case 199:
2853#line 1568 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002854{
vlmfa67ddc2004-06-03 03:38:44 +00002855 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2856 checkmem(yyval.a_value);
vlm6f5eb0b2004-08-13 12:35:09 +00002857 ;
2858 break;}
vlmec8f6812004-08-22 03:19:54 +00002859case 200:
2860#line 1573 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002861{
vlmfa67ddc2004-06-03 03:38:44 +00002862 yyval.a_value = asn1p_value_fromint(0);
2863 checkmem(yyval.a_value);
2864 yyval.a_value->type = ATV_FALSE;
vlm6f5eb0b2004-08-13 12:35:09 +00002865 ;
2866 break;}
vlmec8f6812004-08-22 03:19:54 +00002867case 201:
2868#line 1578 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002869{
vlmfa67ddc2004-06-03 03:38:44 +00002870 yyval.a_value = asn1p_value_fromint(1);
2871 checkmem(yyval.a_value);
2872 yyval.a_value->type = ATV_TRUE;
vlm6f5eb0b2004-08-13 12:35:09 +00002873 ;
2874 break;}
vlmec8f6812004-08-22 03:19:54 +00002875case 202:
2876#line 1586 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002877{
vlmfa67ddc2004-06-03 03:38:44 +00002878 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
vlm6f5eb0b2004-08-13 12:35:09 +00002879 ;
2880 break;}
vlmec8f6812004-08-22 03:19:54 +00002881case 203:
2882#line 1592 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002883{
vlmfa67ddc2004-06-03 03:38:44 +00002884 yyval.a_constr = yyvsp[0].a_constr;
vlm6f5eb0b2004-08-13 12:35:09 +00002885 ;
2886 break;}
vlmec8f6812004-08-22 03:19:54 +00002887case 204:
2888#line 1595 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002889{
vlmfa67ddc2004-06-03 03:38:44 +00002890 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6f5eb0b2004-08-13 12:35:09 +00002891 ;
2892 break;}
vlmec8f6812004-08-22 03:19:54 +00002893case 205:
2894#line 1601 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002895{
vlmfa67ddc2004-06-03 03:38:44 +00002896 yyval.a_constr = asn1p_constraint_new(yylineno);
2897 checkmem(yyval.a_constr);
2898 yyval.a_constr->type = ACT_EL_EXT;
vlm6f5eb0b2004-08-13 12:35:09 +00002899 ;
2900 break;}
vlmec8f6812004-08-22 03:19:54 +00002901case 206:
2902#line 1606 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002903{
vlmfa67ddc2004-06-03 03:38:44 +00002904 yyval.a_constr = asn1p_constraint_new(yylineno);
2905 checkmem(yyval.a_constr);
2906 yyval.a_constr->type = ACT_EL_VALUE;
2907 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[-2].tv_str, strlen(yyvsp[-2].tv_str), 0);
2908 yyval.a_constr->presence = yyvsp[0].a_pres;
vlm6f5eb0b2004-08-13 12:35:09 +00002909 ;
2910 break;}
vlmec8f6812004-08-22 03:19:54 +00002911case 207:
2912#line 1619 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002913{ yyval.a_pres = ACPRES_DEFAULT; ;
2914 break;}
vlmec8f6812004-08-22 03:19:54 +00002915case 208:
2916#line 1620 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002917{ yyval.a_pres = yyvsp[0].a_pres; ;
2918 break;}
vlmec8f6812004-08-22 03:19:54 +00002919case 209:
2920#line 1624 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002921{
vlmfa67ddc2004-06-03 03:38:44 +00002922 yyval.a_pres = ACPRES_PRESENT;
vlm6f5eb0b2004-08-13 12:35:09 +00002923 ;
2924 break;}
vlmec8f6812004-08-22 03:19:54 +00002925case 210:
2926#line 1627 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002927{
vlmfa67ddc2004-06-03 03:38:44 +00002928 yyval.a_pres = ACPRES_ABSENT;
vlm6f5eb0b2004-08-13 12:35:09 +00002929 ;
2930 break;}
vlmec8f6812004-08-22 03:19:54 +00002931case 211:
2932#line 1630 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002933{
vlmfa67ddc2004-06-03 03:38:44 +00002934 yyval.a_pres = ACPRES_OPTIONAL;
vlm6f5eb0b2004-08-13 12:35:09 +00002935 ;
2936 break;}
vlmec8f6812004-08-22 03:19:54 +00002937case 212:
2938#line 1636 "asn1p_y.y"
vlm5f0128b2004-08-20 13:25:29 +00002939{
2940 yyval.a_constr = yyvsp[0].a_constr;
2941 ;
2942 break;}
vlmec8f6812004-08-22 03:19:54 +00002943case 213:
2944#line 1639 "asn1p_y.y"
vlm5f0128b2004-08-20 13:25:29 +00002945{
2946 yyval.a_constr = yyvsp[0].a_constr;
2947 ;
2948 break;}
vlmec8f6812004-08-22 03:19:54 +00002949case 214:
2950#line 1648 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002951{
vlmfa67ddc2004-06-03 03:38:44 +00002952 asn1p_ref_t *ref = asn1p_ref_new(yylineno);
2953 asn1p_constraint_t *ct;
2954 int ret;
2955 ret = asn1p_ref_add_component(ref, yyvsp[-1].tv_str, 0);
2956 checkmem(ret == 0);
2957 ct = asn1p_constraint_new(yylineno);
2958 checkmem(yyval.a_constr);
2959 ct->type = ACT_EL_VALUE;
2960 ct->value = asn1p_value_fromref(ref, 0);
2961 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
vlm6f5eb0b2004-08-13 12:35:09 +00002962 ;
2963 break;}
vlmec8f6812004-08-22 03:19:54 +00002964case 215:
2965#line 1663 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002966{
vlmfa67ddc2004-06-03 03:38:44 +00002967 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
vlm6f5eb0b2004-08-13 12:35:09 +00002968 ;
2969 break;}
vlmec8f6812004-08-22 03:19:54 +00002970case 216:
2971#line 1669 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002972{
vlmfa67ddc2004-06-03 03:38:44 +00002973 yyval.a_constr = asn1p_constraint_new(yylineno);
2974 checkmem(yyval.a_constr);
2975 yyval.a_constr->type = ACT_EL_VALUE;
2976 yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
vlm6f5eb0b2004-08-13 12:35:09 +00002977 ;
2978 break;}
vlmec8f6812004-08-22 03:19:54 +00002979case 217:
2980#line 1675 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002981{
vlmfa67ddc2004-06-03 03:38:44 +00002982 asn1p_constraint_t *ct;
2983 ct = asn1p_constraint_new(yylineno);
2984 checkmem(ct);
2985 ct->type = ACT_EL_VALUE;
2986 ct->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
2987 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm6f5eb0b2004-08-13 12:35:09 +00002988 ;
2989 break;}
vlmec8f6812004-08-22 03:19:54 +00002990case 218:
2991#line 1689 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00002992{
vlmfa67ddc2004-06-03 03:38:44 +00002993 char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
2994 int ret;
2995 *p = '@';
2996 strcpy(p + 1, yyvsp[0].tv_str);
2997 yyval.a_ref = asn1p_ref_new(yylineno);
2998 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
2999 checkmem(ret == 0);
3000 free(p);
3001 free(yyvsp[0].tv_str);
vlm6f5eb0b2004-08-13 12:35:09 +00003002 ;
3003 break;}
vlmec8f6812004-08-22 03:19:54 +00003004case 219:
3005#line 1700 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003006{
vlmfa67ddc2004-06-03 03:38:44 +00003007 char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
3008 int ret;
3009 p[0] = '@';
3010 p[1] = '.';
3011 strcpy(p + 2, yyvsp[0].tv_str);
3012 yyval.a_ref = asn1p_ref_new(yylineno);
3013 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
3014 checkmem(ret == 0);
3015 free(p);
3016 free(yyvsp[0].tv_str);
vlm6f5eb0b2004-08-13 12:35:09 +00003017 ;
3018 break;}
vlmec8f6812004-08-22 03:19:54 +00003019case 220:
3020#line 1716 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003021{
vlmfa67ddc2004-06-03 03:38:44 +00003022 yyval.tv_str = yyvsp[0].tv_str;
vlm6f5eb0b2004-08-13 12:35:09 +00003023 ;
3024 break;}
vlmec8f6812004-08-22 03:19:54 +00003025case 221:
3026#line 1719 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003027{
vlmfa67ddc2004-06-03 03:38:44 +00003028 int l1 = strlen(yyvsp[-2].tv_str);
3029 int l3 = strlen(yyvsp[0].tv_str);
3030 yyval.tv_str = malloc(l1 + 1 + l3 + 1);
3031 memcpy(yyval.tv_str, yyvsp[-2].tv_str, l1);
3032 yyval.tv_str[l1] = '.';
3033 memcpy(yyval.tv_str + l1 + 1, yyvsp[0].tv_str, l3);
3034 yyval.tv_str[l1 + 1 + l3] = '\0';
vlm6f5eb0b2004-08-13 12:35:09 +00003035 ;
3036 break;}
vlmec8f6812004-08-22 03:19:54 +00003037case 222:
3038#line 1737 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003039{ yyval.a_marker = EM_NOMARK; ;
3040 break;}
vlmec8f6812004-08-22 03:19:54 +00003041case 223:
3042#line 1738 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003043{ yyval.a_marker = yyvsp[0].a_marker; ;
3044 break;}
vlmec8f6812004-08-22 03:19:54 +00003045case 224:
3046#line 1742 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003047{
vlmfa67ddc2004-06-03 03:38:44 +00003048 yyval.a_marker = EM_OPTIONAL;
vlm6f5eb0b2004-08-13 12:35:09 +00003049 ;
3050 break;}
vlmec8f6812004-08-22 03:19:54 +00003051case 225:
3052#line 1745 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003053{
vlmfa67ddc2004-06-03 03:38:44 +00003054 yyval.a_marker = EM_DEFAULT;
3055 /* FIXME: store DefaultValue somewhere */
vlm6f5eb0b2004-08-13 12:35:09 +00003056 ;
3057 break;}
vlm5f0128b2004-08-20 13:25:29 +00003058case 226:
vlmec8f6812004-08-22 03:19:54 +00003059#line 1752 "asn1p_y.y"
vlm5f0128b2004-08-20 13:25:29 +00003060{
3061 ;
3062 break;}
3063case 227:
vlmec8f6812004-08-22 03:19:54 +00003064#line 1754 "asn1p_y.y"
3065{
3066 ;
3067 break;}
3068case 228:
3069#line 1756 "asn1p_y.y"
3070{ asn1p_lexer_hack_push_opaque_state(); ;
3071 break;}
3072case 229:
3073#line 1756 "asn1p_y.y"
3074{
3075 ;
3076 break;}
3077case 230:
3078#line 1777 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003079{
vlmfa67ddc2004-06-03 03:38:44 +00003080 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
3081 checkmem(yyval.a_expr);
vlm6f5eb0b2004-08-13 12:35:09 +00003082 ;
3083 break;}
vlmec8f6812004-08-22 03:19:54 +00003084case 231:
3085#line 1781 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003086{
vlmfa67ddc2004-06-03 03:38:44 +00003087 yyval.a_expr = yyvsp[-1].a_expr;
vlm6f5eb0b2004-08-13 12:35:09 +00003088 ;
3089 break;}
vlmec8f6812004-08-22 03:19:54 +00003090case 232:
3091#line 1787 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003092{
vlmfa67ddc2004-06-03 03:38:44 +00003093 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
3094 checkmem(yyval.a_expr);
3095 TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
vlm6f5eb0b2004-08-13 12:35:09 +00003096 ;
3097 break;}
vlmec8f6812004-08-22 03:19:54 +00003098case 233:
3099#line 1792 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003100{
vlmfa67ddc2004-06-03 03:38:44 +00003101 yyval.a_expr = yyvsp[-2].a_expr;
3102 TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
vlm6f5eb0b2004-08-13 12:35:09 +00003103 ;
3104 break;}
vlmec8f6812004-08-22 03:19:54 +00003105case 234:
3106#line 1799 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003107{
vlmfa67ddc2004-06-03 03:38:44 +00003108 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
3109 checkmem(yyval.a_expr);
3110 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3111 yyval.a_expr->meta_type = AMT_VALUE;
3112 yyval.a_expr->Identifier = yyvsp[0].tv_str;
vlm6f5eb0b2004-08-13 12:35:09 +00003113 ;
3114 break;}
vlmec8f6812004-08-22 03:19:54 +00003115case 235:
3116#line 1806 "asn1p_y.y"
vlm5f0128b2004-08-20 13:25:29 +00003117{
3118 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
3119 checkmem(yyval.a_expr);
3120 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3121 yyval.a_expr->meta_type = AMT_VALUE;
3122 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
3123 yyval.a_expr->value = yyvsp[-1].a_value;
3124 ;
3125 break;}
vlmec8f6812004-08-22 03:19:54 +00003126case 236:
3127#line 1814 "asn1p_y.y"
vlm5f0128b2004-08-20 13:25:29 +00003128{
3129 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
3130 checkmem(yyval.a_expr);
3131 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3132 yyval.a_expr->meta_type = AMT_VALUE;
3133 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
3134 yyval.a_expr->value = yyvsp[-1].a_value;
3135 ;
3136 break;}
vlmec8f6812004-08-22 03:19:54 +00003137case 237:
3138#line 1822 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003139{
vlmfa67ddc2004-06-03 03:38:44 +00003140 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
3141 checkmem(yyval.a_expr);
3142 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3143 yyval.a_expr->meta_type = AMT_VALUE;
3144 yyval.a_expr->value = yyvsp[0].a_value;
vlm6f5eb0b2004-08-13 12:35:09 +00003145 ;
3146 break;}
vlmec8f6812004-08-22 03:19:54 +00003147case 238:
3148#line 1829 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003149{
vlmfa67ddc2004-06-03 03:38:44 +00003150 yyval.a_expr = asn1p_expr_new(asn1p_lineno);
3151 checkmem(yyval.a_expr);
3152 yyval.a_expr->Identifier = strdup("...");
3153 checkmem(yyval.a_expr->Identifier);
3154 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
3155 yyval.a_expr->meta_type = AMT_VALUE;
vlm6f5eb0b2004-08-13 12:35:09 +00003156 ;
3157 break;}
vlm5f0128b2004-08-20 13:25:29 +00003158case 239:
vlmec8f6812004-08-22 03:19:54 +00003159#line 1840 "asn1p_y.y"
3160{
3161 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3162 checkmem(yyval.a_value);
3163 ;
vlm5f0128b2004-08-20 13:25:29 +00003164 break;}
3165case 240:
vlmec8f6812004-08-22 03:19:54 +00003166#line 1844 "asn1p_y.y"
3167{
3168 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3169 checkmem(yyval.a_value);
3170 ;
3171 break;}
3172case 241:
3173#line 1875 "asn1p_y.y"
3174{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
3175 break;}
3176case 242:
3177#line 1876 "asn1p_y.y"
3178{ yyval.a_tag = yyvsp[0].a_tag; ;
3179 break;}
3180case 243:
3181#line 1880 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003182{
vlmfa67ddc2004-06-03 03:38:44 +00003183 yyval.a_tag = yyvsp[0].a_tag;
3184 yyval.a_tag.tag_mode = TM_DEFAULT;
vlm6f5eb0b2004-08-13 12:35:09 +00003185 ;
3186 break;}
vlmec8f6812004-08-22 03:19:54 +00003187case 244:
3188#line 1884 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003189{
vlmfa67ddc2004-06-03 03:38:44 +00003190 yyval.a_tag = yyvsp[-1].a_tag;
3191 yyval.a_tag.tag_mode = TM_IMPLICIT;
vlm6f5eb0b2004-08-13 12:35:09 +00003192 ;
3193 break;}
vlmec8f6812004-08-22 03:19:54 +00003194case 245:
3195#line 1888 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003196{
vlmfa67ddc2004-06-03 03:38:44 +00003197 yyval.a_tag = yyvsp[-1].a_tag;
3198 yyval.a_tag.tag_mode = TM_EXPLICIT;
vlm6f5eb0b2004-08-13 12:35:09 +00003199 ;
3200 break;}
vlm5f0128b2004-08-20 13:25:29 +00003201case 246:
vlmec8f6812004-08-22 03:19:54 +00003202#line 1895 "asn1p_y.y"
vlm5f0128b2004-08-20 13:25:29 +00003203{
3204 checkmem(yyvsp[0].tv_str);
3205 yyval.tv_str = yyvsp[0].tv_str;
3206 ;
3207 break;}
3208case 247:
vlmec8f6812004-08-22 03:19:54 +00003209#line 1899 "asn1p_y.y"
3210{
3211 checkmem(yyvsp[0].tv_str);
3212 yyval.tv_str = yyvsp[0].tv_str;
3213 ;
3214 break;}
3215case 248:
3216#line 1907 "asn1p_y.y"
3217{
3218 checkmem(yyvsp[0].tv_str);
3219 yyval.tv_str = yyvsp[0].tv_str;
3220 ;
3221 break;}
3222case 249:
3223#line 1914 "asn1p_y.y"
3224{
3225 checkmem(yyvsp[0].tv_str);
3226 yyval.tv_str = yyvsp[0].tv_str;
3227 ;
3228 break;}
3229case 250:
3230#line 1921 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003231{
vlmfa67ddc2004-06-03 03:38:44 +00003232 memset(&yyval.tv_nametag, 0, sizeof(yyval.tv_nametag));
3233 yyval.tv_nametag.name = yyvsp[0].tv_str;
vlm6f5eb0b2004-08-13 12:35:09 +00003234 ;
3235 break;}
vlmec8f6812004-08-22 03:19:54 +00003236case 251:
3237#line 1925 "asn1p_y.y"
vlm6f5eb0b2004-08-13 12:35:09 +00003238{
vlmfa67ddc2004-06-03 03:38:44 +00003239 yyval.tv_nametag.name = yyvsp[-1].tv_str;
3240 yyval.tv_nametag.tag = yyvsp[0].a_tag;
vlm6f5eb0b2004-08-13 12:35:09 +00003241 ;
3242 break;}
3243}
3244 /* the action file gets copied in in place of this dollarsign */
3245#line 543 "/usr/share/bison.simple"
vlmfa67ddc2004-06-03 03:38:44 +00003246
3247 yyvsp -= yylen;
3248 yyssp -= yylen;
vlm6f5eb0b2004-08-13 12:35:09 +00003249#ifdef YYLSP_NEEDED
3250 yylsp -= yylen;
3251#endif
vlmfa67ddc2004-06-03 03:38:44 +00003252
vlm6f5eb0b2004-08-13 12:35:09 +00003253#if YYDEBUG != 0
vlmfa67ddc2004-06-03 03:38:44 +00003254 if (yydebug)
3255 {
vlm6f5eb0b2004-08-13 12:35:09 +00003256 short *ssp1 = yyss - 1;
3257 fprintf (stderr, "state stack now");
3258 while (ssp1 != yyssp)
3259 fprintf (stderr, " %d", *++ssp1);
3260 fprintf (stderr, "\n");
vlmfa67ddc2004-06-03 03:38:44 +00003261 }
3262#endif
3263
3264 *++yyvsp = yyval;
3265
vlm6f5eb0b2004-08-13 12:35:09 +00003266#ifdef YYLSP_NEEDED
3267 yylsp++;
3268 if (yylen == 0)
3269 {
3270 yylsp->first_line = yylloc.first_line;
3271 yylsp->first_column = yylloc.first_column;
3272 yylsp->last_line = (yylsp-1)->last_line;
3273 yylsp->last_column = (yylsp-1)->last_column;
3274 yylsp->text = 0;
3275 }
3276 else
3277 {
3278 yylsp->last_line = (yylsp+yylen-1)->last_line;
3279 yylsp->last_column = (yylsp+yylen-1)->last_column;
3280 }
3281#endif
vlmfa67ddc2004-06-03 03:38:44 +00003282
vlm6f5eb0b2004-08-13 12:35:09 +00003283 /* Now "shift" the result of the reduction.
3284 Determine what state that goes to,
3285 based on the state we popped back to
3286 and the rule number reduced by. */
vlmfa67ddc2004-06-03 03:38:44 +00003287
3288 yyn = yyr1[yyn];
3289
vlm6f5eb0b2004-08-13 12:35:09 +00003290 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
3291 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
vlmfa67ddc2004-06-03 03:38:44 +00003292 yystate = yytable[yystate];
3293 else
vlm6f5eb0b2004-08-13 12:35:09 +00003294 yystate = yydefgoto[yyn - YYNTBASE];
vlmfa67ddc2004-06-03 03:38:44 +00003295
3296 goto yynewstate;
3297
vlm6f5eb0b2004-08-13 12:35:09 +00003298yyerrlab: /* here on detecting error */
vlmfa67ddc2004-06-03 03:38:44 +00003299
vlm6f5eb0b2004-08-13 12:35:09 +00003300 if (! yyerrstatus)
3301 /* If not already recovering from an error, report this error. */
vlmfa67ddc2004-06-03 03:38:44 +00003302 {
3303 ++yynerrs;
vlm6f5eb0b2004-08-13 12:35:09 +00003304
3305#ifdef YYERROR_VERBOSE
vlmfa67ddc2004-06-03 03:38:44 +00003306 yyn = yypact[yystate];
3307
vlm6f5eb0b2004-08-13 12:35:09 +00003308 if (yyn > YYFLAG && yyn < YYLAST)
vlmfa67ddc2004-06-03 03:38:44 +00003309 {
vlm6f5eb0b2004-08-13 12:35:09 +00003310 int size = 0;
3311 char *msg;
3312 int x, count;
vlmfa67ddc2004-06-03 03:38:44 +00003313
vlm6f5eb0b2004-08-13 12:35:09 +00003314 count = 0;
3315 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
3316 for (x = (yyn < 0 ? -yyn : 0);
3317 x < (ssize_t)(sizeof(yytname) / sizeof(char *)); x++)
3318 if (yycheck[x + yyn] == x)
3319 size += strlen(yytname[x]) + 15, count++;
3320 msg = (char *) malloc(size + 15);
3321 if (msg != 0)
vlmfa67ddc2004-06-03 03:38:44 +00003322 {
vlm6f5eb0b2004-08-13 12:35:09 +00003323 strcpy(msg, "parse error");
vlmfa67ddc2004-06-03 03:38:44 +00003324
vlm6f5eb0b2004-08-13 12:35:09 +00003325 if (count < 5)
vlmfa67ddc2004-06-03 03:38:44 +00003326 {
vlm6f5eb0b2004-08-13 12:35:09 +00003327 count = 0;
3328 for (x = (yyn < 0 ? -yyn : 0);
3329 x < (ssize_t)(sizeof(yytname) / sizeof(char *)); x++)
3330 if (yycheck[x + yyn] == x)
vlmfa67ddc2004-06-03 03:38:44 +00003331 {
vlm6f5eb0b2004-08-13 12:35:09 +00003332 strcat(msg, count == 0 ? ", expecting `" : " or `");
3333 strcat(msg, yytname[x]);
3334 strcat(msg, "'");
3335 count++;
vlmfa67ddc2004-06-03 03:38:44 +00003336 }
3337 }
vlm6f5eb0b2004-08-13 12:35:09 +00003338 yyerror(msg);
3339 free(msg);
vlmfa67ddc2004-06-03 03:38:44 +00003340 }
3341 else
vlm6f5eb0b2004-08-13 12:35:09 +00003342 yyerror ("parse error; also virtual memory exceeded");
vlmfa67ddc2004-06-03 03:38:44 +00003343 }
3344 else
3345#endif /* YYERROR_VERBOSE */
vlm6f5eb0b2004-08-13 12:35:09 +00003346 yyerror("parse error");
vlmfa67ddc2004-06-03 03:38:44 +00003347 }
vlm6f5eb0b2004-08-13 12:35:09 +00003348
vlmfa67ddc2004-06-03 03:38:44 +00003349 goto yyerrlab1;
vlm6f5eb0b2004-08-13 12:35:09 +00003350yyerrlab1: /* here on error raised explicitly by an action */
vlmfa67ddc2004-06-03 03:38:44 +00003351
3352 if (yyerrstatus == 3)
3353 {
vlm6f5eb0b2004-08-13 12:35:09 +00003354 /* if just tried and failed to reuse lookahead token after an error, discard it. */
vlmfa67ddc2004-06-03 03:38:44 +00003355
vlm6f5eb0b2004-08-13 12:35:09 +00003356 /* return failure if at end of input */
vlmfa67ddc2004-06-03 03:38:44 +00003357 if (yychar == YYEOF)
vlm6f5eb0b2004-08-13 12:35:09 +00003358 YYABORT;
vlmfa67ddc2004-06-03 03:38:44 +00003359
vlm6f5eb0b2004-08-13 12:35:09 +00003360#if YYDEBUG != 0
3361 if (yydebug)
3362 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
3363#endif
3364
vlmfa67ddc2004-06-03 03:38:44 +00003365 yychar = YYEMPTY;
3366 }
3367
vlm6f5eb0b2004-08-13 12:35:09 +00003368 /* Else will try to reuse lookahead token
3369 after shifting the error token. */
vlmfa67ddc2004-06-03 03:38:44 +00003370
vlm6f5eb0b2004-08-13 12:35:09 +00003371 yyerrstatus = 3; /* Each real token shifted decrements this */
vlmfa67ddc2004-06-03 03:38:44 +00003372
vlm6f5eb0b2004-08-13 12:35:09 +00003373 goto yyerrhandle;
vlm827ac182004-06-03 05:07:41 +00003374
vlm6f5eb0b2004-08-13 12:35:09 +00003375yyerrdefault: /* current state does not do anything special for the error token. */
vlm827ac182004-06-03 05:07:41 +00003376
vlm6f5eb0b2004-08-13 12:35:09 +00003377#if 0
3378 /* This is wrong; only states that explicitly want error tokens
3379 should shift them. */
3380 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
3381 if (yyn) goto yydefault;
vlmfa67ddc2004-06-03 03:38:44 +00003382#endif
vlm6f5eb0b2004-08-13 12:35:09 +00003383
3384yyerrpop: /* pop the current state because it cannot handle the error token */
3385
3386 if (yyssp == yyss) YYABORT;
3387 yyvsp--;
3388 yystate = *--yyssp;
3389#ifdef YYLSP_NEEDED
3390 yylsp--;
3391#endif
3392
3393#if YYDEBUG != 0
3394 if (yydebug)
3395 {
3396 short *ssp1 = yyss - 1;
3397 fprintf (stderr, "Error: state stack now");
3398 while (ssp1 != yyssp)
3399 fprintf (stderr, " %d", *++ssp1);
3400 fprintf (stderr, "\n");
vlmfa67ddc2004-06-03 03:38:44 +00003401 }
vlm6f5eb0b2004-08-13 12:35:09 +00003402#endif
3403
3404yyerrhandle:
3405
3406 yyn = yypact[yystate];
3407 if (yyn == YYFLAG)
3408 goto yyerrdefault;
3409
3410 yyn += YYTERROR;
3411 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
3412 goto yyerrdefault;
3413
3414 yyn = yytable[yyn];
3415 if (yyn < 0)
3416 {
3417 if (yyn == YYFLAG)
3418 goto yyerrpop;
3419 yyn = -yyn;
3420 goto yyreduce;
3421 }
3422 else if (yyn == 0)
3423 goto yyerrpop;
vlmfa67ddc2004-06-03 03:38:44 +00003424
3425 if (yyn == YYFINAL)
3426 YYACCEPT;
3427
vlm6f5eb0b2004-08-13 12:35:09 +00003428#if YYDEBUG != 0
3429 if (yydebug)
3430 fprintf(stderr, "Shifting error token, ");
3431#endif
vlmfa67ddc2004-06-03 03:38:44 +00003432
3433 *++yyvsp = yylval;
vlm6f5eb0b2004-08-13 12:35:09 +00003434#ifdef YYLSP_NEEDED
3435 *++yylsp = yylloc;
3436#endif
vlmfa67ddc2004-06-03 03:38:44 +00003437
3438 yystate = yyn;
3439 goto yynewstate;
3440
vlm6f5eb0b2004-08-13 12:35:09 +00003441 yyacceptlab:
3442 /* YYACCEPT comes here. */
3443 if (yyfree_stacks)
3444 {
3445 free (yyss);
3446 free (yyvs);
3447#ifdef YYLSP_NEEDED
3448 free (yyls);
vlmfa67ddc2004-06-03 03:38:44 +00003449#endif
vlm6f5eb0b2004-08-13 12:35:09 +00003450 }
3451 return 0;
vlm827ac182004-06-03 05:07:41 +00003452
vlm6f5eb0b2004-08-13 12:35:09 +00003453 yyabortlab:
3454 /* YYABORT comes here. */
3455 if (yyfree_stacks)
3456 {
3457 free (yyss);
3458 free (yyvs);
3459#ifdef YYLSP_NEEDED
3460 free (yyls);
vlm827ac182004-06-03 05:07:41 +00003461#endif
vlm6f5eb0b2004-08-13 12:35:09 +00003462 }
3463 return 1;
vlmfa67ddc2004-06-03 03:38:44 +00003464}
vlmec8f6812004-08-22 03:19:54 +00003465#line 1932 "asn1p_y.y"
vlmfa67ddc2004-06-03 03:38:44 +00003466
3467
3468
3469/*
3470 * Convert Xstring ('0101'B or '5'H) to the binary vector.
3471 */
3472static asn1p_value_t *
3473_convert_bitstring2binary(char *str, int base) {
3474 asn1p_value_t *val;
3475 int slen;
3476 int memlen;
3477 int baselen;
3478 int bits;
3479 uint8_t *binary_vector;
3480 uint8_t *bv_ptr;
3481 uint8_t cur_val;
3482
3483 assert(str);
3484 assert(str[0] == '\'');
3485
3486 switch(base) {
3487 case 'B':
3488 baselen = 1;
3489 break;
3490 case 'H':
3491 baselen = 4;
3492 break;
3493 default:
3494 assert(base == 'B' || base == 'H');
3495 errno = EINVAL;
3496 return NULL;
3497 }
3498
3499 slen = strlen(str);
3500 assert(str[slen - 1] == base);
3501 assert(str[slen - 2] == '\'');
3502
3503 memlen = slen / (8 / baselen); /* Conservative estimate */
3504
3505 bv_ptr = binary_vector = malloc(memlen + 1);
3506 if(bv_ptr == NULL)
3507 /* ENOMEM */
3508 return NULL;
3509
3510 cur_val = 0;
3511 bits = 0;
3512 while(*(++str) != '\'') {
3513 switch(baselen) {
3514 case 1:
3515 switch(*str) {
3516 case '1':
3517 cur_val |= 1 << (7 - (bits % 8));
3518 case '0':
3519 break;
3520 default:
3521 assert(!"_y UNREACH1");
3522 case ' ': case '\r': case '\n':
3523 continue;
3524 }
3525 break;
3526 case 4:
3527 switch(*str) {
3528 case '0': case '1': case '2': case '3': case '4':
3529 case '5': case '6': case '7': case '8': case '9':
3530 cur_val |= (*str - '0') << (4 - (bits % 8));
3531 break;
3532 case 'A': case 'B': case 'C':
3533 case 'D': case 'E': case 'F':
3534 cur_val |= ((*str - 'A') + 10)
3535 << (4 - (bits % 8));
3536 break;
3537 default:
3538 assert(!"_y UNREACH2");
3539 case ' ': case '\r': case '\n':
3540 continue;
3541 }
3542 break;
3543 }
3544
3545 bits += baselen;
3546 if((bits % 8) == 0) {
3547 *bv_ptr++ = cur_val;
3548 cur_val = 0;
3549 }
3550 }
3551
3552 *bv_ptr = cur_val;
3553 assert((bv_ptr - binary_vector) <= memlen);
3554
3555 val = asn1p_value_frombits(binary_vector, bits, 0);
3556 if(val == NULL) {
3557 free(binary_vector);
3558 }
3559
3560 return val;
3561}
3562
3563extern char *asn1p_text;
3564
3565int
3566yyerror(const char *msg) {
3567 fprintf(stderr,
3568 "ASN.1 grammar parse error "
3569 "near line %d (token \"%s\"): %s\n",
3570 asn1p_lineno, asn1p_text, msg);
3571 return -1;
3572}
3573
3574