blob: ae4e31a43f281003bb297ce4abffcabc8c7dee22 [file] [log] [blame]
vlmfa67ddc2004-06-03 03:38:44 +00001
vlm6a02a8a2004-09-08 00:28:11 +00002/* A Bison parser, made from asn1p_y.y
3 by GNU Bison version 1.28 */
vlmfa67ddc2004-06-03 03:38:44 +00004
vlm6a02a8a2004-09-08 00:28:11 +00005#define YYBISON 1 /* Identify Bison output. */
vlmfa67ddc2004-06-03 03:38:44 +00006
7#define yyparse asn1p_parse
vlm6a02a8a2004-09-08 00:28:11 +00008#define yylex asn1p_lex
vlmfa67ddc2004-06-03 03:38:44 +00009#define yyerror asn1p_error
vlm6a02a8a2004-09-08 00:28:11 +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
vlm6a02a8a2004-09-08 00:28:11 +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
vlm2c8c44d2005-03-24 16:22:35 +000021#define TOK_tuple 264
22#define TOK_quadruple 265
23#define TOK_number_negative 266
24#define TOK_typereference 267
25#define TOK_capitalreference 268
26#define TOK_typefieldreference 269
27#define TOK_valuefieldreference 270
28#define TOK_ABSENT 271
29#define TOK_ABSTRACT_SYNTAX 272
30#define TOK_ALL 273
31#define TOK_ANY 274
32#define TOK_APPLICATION 275
33#define TOK_AUTOMATIC 276
34#define TOK_BEGIN 277
35#define TOK_BIT 278
36#define TOK_BMPString 279
37#define TOK_BOOLEAN 280
38#define TOK_BY 281
39#define TOK_CHARACTER 282
40#define TOK_CHOICE 283
41#define TOK_CLASS 284
42#define TOK_COMPONENT 285
43#define TOK_COMPONENTS 286
44#define TOK_CONSTRAINED 287
45#define TOK_CONTAINING 288
46#define TOK_DEFAULT 289
47#define TOK_DEFINITIONS 290
48#define TOK_DEFINED 291
49#define TOK_EMBEDDED 292
50#define TOK_ENCODED 293
51#define TOK_ENCODING_CONTROL 294
52#define TOK_END 295
53#define TOK_ENUMERATED 296
54#define TOK_EXPLICIT 297
55#define TOK_EXPORTS 298
56#define TOK_EXTENSIBILITY 299
57#define TOK_EXTERNAL 300
58#define TOK_FALSE 301
59#define TOK_FROM 302
60#define TOK_GeneralizedTime 303
61#define TOK_GeneralString 304
62#define TOK_GraphicString 305
63#define TOK_IA5String 306
64#define TOK_IDENTIFIER 307
65#define TOK_IMPLICIT 308
66#define TOK_IMPLIED 309
67#define TOK_IMPORTS 310
68#define TOK_INCLUDES 311
69#define TOK_INSTANCE 312
70#define TOK_INSTRUCTIONS 313
71#define TOK_INTEGER 314
72#define TOK_ISO646String 315
73#define TOK_MAX 316
74#define TOK_MIN 317
75#define TOK_MINUS_INFINITY 318
76#define TOK_NULL 319
77#define TOK_NumericString 320
78#define TOK_OBJECT 321
79#define TOK_ObjectDescriptor 322
80#define TOK_OCTET 323
81#define TOK_OF 324
82#define TOK_OPTIONAL 325
83#define TOK_PATTERN 326
84#define TOK_PDV 327
85#define TOK_PLUS_INFINITY 328
86#define TOK_PRESENT 329
87#define TOK_PrintableString 330
88#define TOK_PRIVATE 331
89#define TOK_REAL 332
90#define TOK_RELATIVE_OID 333
91#define TOK_SEQUENCE 334
92#define TOK_SET 335
93#define TOK_SIZE 336
94#define TOK_STRING 337
95#define TOK_SYNTAX 338
96#define TOK_T61String 339
97#define TOK_TAGS 340
98#define TOK_TeletexString 341
99#define TOK_TRUE 342
100#define TOK_TYPE_IDENTIFIER 343
101#define TOK_UNIQUE 344
102#define TOK_UNIVERSAL 345
103#define TOK_UniversalString 346
104#define TOK_UTCTime 347
105#define TOK_UTF8String 348
106#define TOK_VideotexString 349
107#define TOK_VisibleString 350
108#define TOK_WITH 351
109#define TOK_EXCEPT 352
110#define TOK_INTERSECTION 353
111#define TOK_UNION 354
112#define TOK_TwoDots 355
113#define TOK_ThreeDots 356
vlmfa67ddc2004-06-03 03:38:44 +0000114
115#line 1 "asn1p_y.y"
116
117
118#include <stdlib.h>
119#include <stdio.h>
120#include <string.h>
121#include <errno.h>
122#include <assert.h>
123
124#include "asn1parser.h"
125
126#define YYPARSE_PARAM param
127#define YYERROR_VERBOSE
128
129int yylex(void);
130int yyerror(const char *msg);
131void asn1p_lexer_hack_push_opaque_state(void);
132void asn1p_lexer_hack_enable_with_syntax(void);
vlm9283dbe2004-08-18 04:59:12 +0000133void asn1p_lexer_hack_push_encoding_control(void);
vlmfa67ddc2004-06-03 03:38:44 +0000134#define yylineno asn1p_lineno
135extern int asn1p_lineno;
136
137
138static asn1p_value_t *
139 _convert_bitstring2binary(char *str, int base);
140
vlm6a02a8a2004-09-08 00:28:11 +0000141#define checkmem(ptr) do { \
142 if(!(ptr)) \
143 return yyerror("Memory failure"); \
vlmfa67ddc2004-06-03 03:38:44 +0000144 } while(0)
145
146#define CONSTRAINT_INSERT(root, constr_type, arg1, arg2) do { \
147 if(arg1->type != constr_type) { \
148 int __ret; \
149 root = asn1p_constraint_new(yylineno); \
150 checkmem(root); \
151 root->type = constr_type; \
152 __ret = asn1p_constraint_insert(root, \
153 arg1); \
154 checkmem(__ret == 0); \
155 } else { \
156 root = arg1; \
157 } \
158 if(arg2) { \
159 int __ret \
160 = asn1p_constraint_insert(root, arg2); \
161 checkmem(__ret == 0); \
162 } \
163 } while(0)
164
165
vlm9283dbe2004-08-18 04:59:12 +0000166#line 58 "asn1p_y.y"
vlmfa67ddc2004-06-03 03:38:44 +0000167typedef union {
168 asn1p_t *a_grammar;
169 asn1p_module_flags_e a_module_flags;
170 asn1p_module_t *a_module;
171 asn1p_expr_type_e a_type; /* ASN.1 Type */
172 asn1p_expr_t *a_expr; /* Constructed collection */
173 asn1p_constraint_t *a_constr; /* Constraint */
174 enum asn1p_constraint_type_e a_ctype;/* Constraint type */
175 asn1p_xports_t *a_xports; /* IMports/EXports */
176 asn1p_oid_t *a_oid; /* Object Identifier */
177 asn1p_oid_arc_t a_oid_arc; /* Single OID's arc */
178 struct asn1p_type_tag_s a_tag; /* A tag */
179 asn1p_ref_t *a_ref; /* Reference to custom type */
180 asn1p_wsyntx_t *a_wsynt; /* WITH SYNTAX contents */
181 asn1p_wsyntx_chunk_t *a_wchunk; /* WITH SYNTAX chunk */
182 struct asn1p_ref_component_s a_refcomp; /* Component of a reference */
183 asn1p_value_t *a_value; /* Number, DefinedValue, etc */
184 struct asn1p_param_s a_parg; /* A parameter argument */
185 asn1p_paramlist_t *a_plist; /* A pargs list */
vlmc94e28f2004-09-15 11:59:51 +0000186 struct asn1p_expr_marker_s a_marker; /* OPTIONAL/DEFAULT */
vlmfa67ddc2004-06-03 03:38:44 +0000187 enum asn1p_constr_pres_e a_pres; /* PRESENT/ABSENT/OPTIONAL */
vlmec6acd42004-09-29 13:18:09 +0000188 asn1c_integer_t a_int;
vlmfa67ddc2004-06-03 03:38:44 +0000189 char *tv_str;
190 struct {
191 char *buf;
192 int len;
193 } tv_opaque;
194 struct {
195 char *name;
196 struct asn1p_type_tag_s tag;
197 } tv_nametag;
vlm6a02a8a2004-09-08 00:28:11 +0000198} YYSTYPE;
199#include <stdio.h>
200
201#ifndef __cplusplus
202#ifndef __STDC__
203#define const
204#endif
vlmfa67ddc2004-06-03 03:38:44 +0000205#endif
206
207
208
vlm7bbdc9f2005-03-28 15:01:27 +0000209#define YYFINAL 431
vlm6a02a8a2004-09-08 00:28:11 +0000210#define YYFLAG -32768
vlm2c8c44d2005-03-24 16:22:35 +0000211#define YYNTBASE 118
vlmfa67ddc2004-06-03 03:38:44 +0000212
vlm2c8c44d2005-03-24 16:22:35 +0000213#define YYTRANSLATE(x) ((unsigned)(x) <= 356 ? yytranslate[x] : 222)
vlmfa67ddc2004-06-03 03:38:44 +0000214
vlm6a02a8a2004-09-08 00:28:11 +0000215static const char yytranslate[] = { 0,
216 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
217 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
218 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
vlm2c8c44d2005-03-24 16:22:35 +0000219 2, 2, 112, 2, 2, 2, 2, 2, 2, 107,
220 108, 2, 2, 110, 2, 113, 2, 2, 2, 2,
221 2, 2, 2, 2, 2, 2, 2, 111, 109, 114,
222 2, 2, 2, 115, 2, 2, 2, 2, 2, 2,
vlm6a02a8a2004-09-08 00:28:11 +0000223 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
224 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
vlm2c8c44d2005-03-24 16:22:35 +0000225 116, 2, 117, 99, 2, 2, 2, 2, 2, 2,
vlm6a02a8a2004-09-08 00:28:11 +0000226 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
227 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
vlm2c8c44d2005-03-24 16:22:35 +0000228 2, 2, 105, 101, 106, 2, 2, 2, 2, 2,
vlm6a02a8a2004-09-08 00:28:11 +0000229 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, 2, 2, 2, 2, 2,
241 2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
242 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
243 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
244 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
245 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
246 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
247 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
248 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
249 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
250 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
vlm2c8c44d2005-03-24 16:22:35 +0000251 97, 98, 100, 102, 103, 104
vlm6a02a8a2004-09-08 00:28:11 +0000252};
vlmfa67ddc2004-06-03 03:38:44 +0000253
vlm6a02a8a2004-09-08 00:28:11 +0000254#if YYDEBUG != 0
255static const short yyprhs[] = { 0,
256 0, 2, 4, 7, 16, 17, 19, 23, 26, 28,
257 31, 33, 38, 40, 41, 43, 45, 48, 51, 54,
258 57, 60, 63, 64, 66, 68, 71, 73, 75, 77,
259 79, 81, 82, 86, 88, 92, 95, 97, 100, 105,
vlm0aa86902004-10-12 23:26:53 +0000260 107, 111, 113, 117, 119, 123, 127, 130, 132, 136,
261 138, 142, 144, 151, 153, 155, 156, 158, 160, 164,
262 166, 168, 173, 177, 181, 188, 190, 194, 196, 200,
vlm4053ca52005-02-18 16:34:21 +0000263 204, 208, 210, 214, 216, 218, 219, 221, 223, 227,
264 231, 235, 237, 239, 243, 246, 248, 254, 255, 257,
265 259, 263, 266, 271, 276, 277, 279, 280, 287, 289,
vlm5e2c4b92005-03-20 11:12:40 +0000266 292, 294, 296, 298, 302, 306, 310, 312, 317, 322,
267 327, 334, 341, 343, 348, 353, 355, 359, 361, 365,
268 369, 373, 375, 379, 381, 385, 387, 389, 391, 393,
269 398, 402, 403, 407, 409, 411, 413, 415, 417, 419,
vlm2c8c44d2005-03-24 16:22:35 +0000270 421, 423, 425, 429, 431, 433, 435, 437, 440, 442,
271 444, 446, 448, 451, 454, 456, 458, 461, 464, 466,
272 468, 470, 472, 474, 477, 479, 482, 484, 486, 488,
273 490, 492, 494, 496, 498, 500, 502, 504, 506, 508,
274 510, 512, 514, 516, 518, 520, 521, 523, 525, 530,
275 534, 539, 541, 545, 551, 553, 557, 561, 565, 569,
276 574, 578, 580, 582, 586, 590, 594, 598, 600, 602,
277 603, 609, 611, 614, 617, 621, 623, 625, 627, 629,
vlm7bbdc9f2005-03-28 15:01:27 +0000278 631, 633, 635, 637, 641, 647, 649, 653, 655, 659,
279 660, 662, 664, 666, 668, 670, 672, 676, 681, 683,
280 687, 690, 694, 696, 700, 701, 703, 705, 708, 711,
281 715, 717, 721, 723, 728, 733, 735, 737, 739, 741,
282 742, 744, 747, 752, 753, 755, 757, 759, 760, 762,
283 764, 766, 768, 770, 771, 773
vlm6a02a8a2004-09-08 00:28:11 +0000284};
vlmfa67ddc2004-06-03 03:38:44 +0000285
vlm2c8c44d2005-03-24 16:22:35 +0000286static const short yyrhs[] = { 119,
287 0, 120, 0, 119, 120, 0, 218, 121, 36, 125,
288 3, 23, 128, 41, 0, 0, 122, 0, 105, 123,
289 106, 0, 105, 106, 0, 124, 0, 123, 124, 0,
290 221, 0, 221, 107, 9, 108, 0, 9, 0, 0,
291 126, 0, 127, 0, 126, 127, 0, 43, 86, 0,
292 54, 86, 0, 22, 86, 0, 45, 55, 0, 14,
293 59, 0, 0, 129, 0, 130, 0, 129, 130, 0,
294 132, 0, 137, 0, 145, 0, 172, 0, 140, 0,
295 0, 40, 14, 131, 0, 181, 0, 56, 133, 109,
296 0, 56, 48, 0, 134, 0, 133, 134, 0, 135,
297 48, 218, 121, 0, 136, 0, 135, 110, 136, 0,
298 218, 0, 218, 105, 106, 0, 221, 0, 44, 138,
299 109, 0, 44, 19, 109, 0, 44, 109, 0, 139,
300 0, 138, 110, 139, 0, 218, 0, 218, 105, 106,
301 0, 221, 0, 218, 141, 3, 105, 142, 106, 0,
302 167, 0, 178, 0, 0, 143, 0, 144, 0, 143,
303 110, 144, 0, 104, 0, 189, 0, 218, 3, 213,
304 89, 0, 218, 3, 165, 0, 218, 3, 155, 0,
305 218, 105, 146, 106, 3, 165, 0, 147, 0, 146,
306 110, 147, 0, 218, 0, 218, 111, 221, 0, 218,
307 111, 218, 0, 178, 111, 221, 0, 149, 0, 148,
308 110, 149, 0, 165, 0, 221, 0, 0, 151, 0,
309 152, 0, 151, 110, 152, 0, 221, 165, 207, 0,
310 32, 70, 165, 0, 164, 0, 154, 0, 153, 110,
311 154, 0, 221, 165, 0, 164, 0, 30, 105, 157,
312 106, 159, 0, 0, 90, 0, 158, 0, 157, 110,
313 158, 0, 170, 207, 0, 170, 165, 156, 207, 0,
314 170, 170, 156, 207, 0, 0, 160, 0, 0, 97,
315 84, 105, 161, 162, 106, 0, 163, 0, 162, 163,
316 0, 4, 0, 170, 0, 104, 0, 104, 112, 175,
317 0, 104, 112, 212, 0, 213, 166, 185, 0, 180,
318 0, 29, 105, 153, 106, 0, 80, 105, 150, 106,
319 0, 81, 105, 150, 106, 0, 80, 185, 70, 220,
320 213, 166, 0, 81, 185, 70, 220, 213, 166, 0,
321 20, 0, 20, 37, 27, 221, 0, 218, 105, 148,
322 106, 0, 167, 0, 58, 70, 167, 0, 13, 0,
323 13, 113, 218, 0, 219, 113, 218, 0, 13, 113,
324 221, 0, 219, 0, 219, 113, 168, 0, 169, 0,
325 168, 113, 169, 0, 171, 0, 171, 0, 15, 0,
326 16, 0, 221, 141, 3, 173, 0, 221, 111, 173,
327 0, 0, 105, 174, 177, 0, 65, 0, 47, 0,
328 88, 0, 5, 0, 7, 0, 176, 0, 212, 0,
329 175, 0, 221, 0, 218, 113, 221, 0, 6, 0,
330 10, 0, 11, 0, 4, 0, 177, 4, 0, 26,
331 0, 65, 0, 78, 0, 179, 0, 69, 83, 0,
332 67, 53, 0, 79, 0, 46, 0, 38, 73, 0,
333 28, 83, 0, 93, 0, 49, 0, 181, 0, 60,
334 0, 42, 0, 24, 83, 0, 178, 0, 179, 209,
335 0, 25, 0, 50, 0, 51, 0, 52, 0, 61,
336 0, 66, 0, 76, 0, 85, 0, 87, 0, 92,
337 0, 94, 0, 95, 0, 96, 0, 68, 0, 101,
338 0, 102, 0, 99, 0, 100, 0, 98, 0, 0,
339 186, 0, 187, 0, 82, 107, 188, 108, 0, 107,
340 188, 108, 0, 187, 107, 188, 108, 0, 189, 0,
341 189, 110, 104, 0, 189, 110, 104, 110, 189, 0,
342 190, 0, 19, 98, 190, 0, 189, 182, 190, 0,
343 189, 183, 190, 0, 190, 184, 190, 0, 193, 107,
344 188, 108, 0, 107, 188, 108, 0, 194, 0, 195,
345 0, 194, 192, 194, 0, 63, 192, 194, 0, 194,
346 192, 62, 0, 63, 192, 62, 0, 201, 0, 196,
347 0, 0, 33, 27, 105, 191, 177, 0, 103, 0,
348 103, 114, 0, 114, 103, 0, 114, 103, 114, 0,
349 82, 0, 48, 0, 47, 0, 88, 0, 212, 0,
vlm7bbdc9f2005-03-28 15:01:27 +0000350 176, 0, 221, 0, 218, 0, 97, 31, 187, 0,
351 97, 32, 105, 197, 106, 0, 198, 0, 197, 110,
352 198, 0, 104, 0, 221, 185, 199, 0, 0, 200,
353 0, 75, 0, 17, 0, 71, 0, 202, 0, 203,
354 0, 105, 218, 106, 0, 202, 105, 204, 106, 0,
355 205, 0, 204, 110, 205, 0, 115, 206, 0, 115,
356 113, 206, 0, 221, 0, 206, 113, 221, 0, 0,
357 208, 0, 71, 0, 35, 173, 0, 105, 106, 0,
358 105, 210, 106, 0, 211, 0, 210, 110, 211, 0,
359 221, 0, 221, 107, 212, 108, 0, 221, 107, 175,
360 108, 0, 212, 0, 104, 0, 9, 0, 12, 0,
361 0, 214, 0, 215, 217, 0, 116, 216, 9, 117,
362 0, 0, 91, 0, 21, 0, 77, 0, 0, 54,
363 0, 43, 0, 13, 0, 14, 0, 14, 0, 0,
364 221, 0, 8, 0
vlm6a02a8a2004-09-08 00:28:11 +0000365};
vlmfa67ddc2004-06-03 03:38:44 +0000366
367#endif
368
vlm6a02a8a2004-09-08 00:28:11 +0000369#if YYDEBUG != 0
370static const short yyrline[] = { 0,
vlm2c8c44d2005-03-24 16:22:35 +0000371 305, 311, 317, 333, 358, 360, 363, 367, 372, 379,
372 387, 392, 396, 405, 407, 415, 419, 427, 431, 434,
373 437, 441, 461, 463, 471, 475, 507, 511, 520, 527,
374 540, 547, 549, 561, 574, 581, 586, 592, 598, 607,
375 613, 619, 626, 632, 640, 644, 647, 654, 660, 666,
376 673, 679, 688, 698, 706, 714, 716, 726, 729, 733,
377 736, 748, 760, 766, 782, 791, 801, 811, 816, 823,
378 830, 840, 846, 852, 856, 879, 881, 883, 889, 895,
379 902, 909, 914, 920, 926, 932, 937, 947, 949, 952,
380 960, 966, 975, 981, 998, 1000, 1005, 1009, 1014, 1019,
381 1025, 1029, 1040, 1049, 1058, 1069, 1091, 1095, 1101, 1107,
382 1113, 1123, 1133, 1139, 1153, 1177, 1184, 1198, 1207, 1217,
383 1227, 1237, 1245, 1266, 1275, 1284, 1285, 1287, 1294, 1306,
384 1316, 1324, 1324, 1329, 1334, 1339, 1344, 1348, 1352, 1355,
385 1358, 1363, 1375, 1392, 1397, 1402, 1435, 1445, 1459, 1461,
386 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471,
387 1472, 1478, 1480, 1481, 1484, 1491, 1503, 1505, 1509, 1513,
388 1514, 1515, 1516, 1517, 1521, 1522, 1523, 1524, 1528, 1529,
389 1536, 1536, 1537, 1537, 1538, 1540, 1542, 1547, 1551, 1560,
390 1564, 1569, 1573, 1579, 1589, 1593, 1596, 1599, 1602, 1607,
391 1616, 1624, 1630, 1636, 1643, 1651, 1659, 1668, 1671, 1674,
392 1675, 1685, 1687, 1688, 1689, 1692, 1696, 1701, 1707, 1712,
vlm7bbdc9f2005-03-28 15:01:27 +0000393 1715, 1718, 1731, 1745, 1749, 1754, 1758, 1763, 1770, 1783,
394 1785, 1788, 1792, 1795, 1800, 1804, 1812, 1827, 1833, 1840,
395 1853, 1865, 1880, 1884, 1901, 1906, 1909, 1914, 1936, 1941,
396 1946, 1952, 1958, 1966, 1974, 1982, 1989, 1999, 2004, 2034,
397 2036, 2039, 2046, 2052, 2054, 2055, 2056, 2059, 2061, 2062,
398 2065, 2070, 2077, 2084, 2086, 2090
vlm6a02a8a2004-09-08 00:28:11 +0000399};
400#endif
401
402
403#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
404
405static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ",
406"TOK_opaque","TOK_bstring","TOK_cstring","TOK_hstring","TOK_identifier","TOK_number",
vlm2c8c44d2005-03-24 16:22:35 +0000407"TOK_tuple","TOK_quadruple","TOK_number_negative","TOK_typereference","TOK_capitalreference",
408"TOK_typefieldreference","TOK_valuefieldreference","TOK_ABSENT","TOK_ABSTRACT_SYNTAX",
409"TOK_ALL","TOK_ANY","TOK_APPLICATION","TOK_AUTOMATIC","TOK_BEGIN","TOK_BIT",
410"TOK_BMPString","TOK_BOOLEAN","TOK_BY","TOK_CHARACTER","TOK_CHOICE","TOK_CLASS",
411"TOK_COMPONENT","TOK_COMPONENTS","TOK_CONSTRAINED","TOK_CONTAINING","TOK_DEFAULT",
412"TOK_DEFINITIONS","TOK_DEFINED","TOK_EMBEDDED","TOK_ENCODED","TOK_ENCODING_CONTROL",
413"TOK_END","TOK_ENUMERATED","TOK_EXPLICIT","TOK_EXPORTS","TOK_EXTENSIBILITY",
414"TOK_EXTERNAL","TOK_FALSE","TOK_FROM","TOK_GeneralizedTime","TOK_GeneralString",
415"TOK_GraphicString","TOK_IA5String","TOK_IDENTIFIER","TOK_IMPLICIT","TOK_IMPLIED",
416"TOK_IMPORTS","TOK_INCLUDES","TOK_INSTANCE","TOK_INSTRUCTIONS","TOK_INTEGER",
417"TOK_ISO646String","TOK_MAX","TOK_MIN","TOK_MINUS_INFINITY","TOK_NULL","TOK_NumericString",
418"TOK_OBJECT","TOK_ObjectDescriptor","TOK_OCTET","TOK_OF","TOK_OPTIONAL","TOK_PATTERN",
419"TOK_PDV","TOK_PLUS_INFINITY","TOK_PRESENT","TOK_PrintableString","TOK_PRIVATE",
420"TOK_REAL","TOK_RELATIVE_OID","TOK_SEQUENCE","TOK_SET","TOK_SIZE","TOK_STRING",
421"TOK_SYNTAX","TOK_T61String","TOK_TAGS","TOK_TeletexString","TOK_TRUE","TOK_TYPE_IDENTIFIER",
422"TOK_UNIQUE","TOK_UNIVERSAL","TOK_UniversalString","TOK_UTCTime","TOK_UTF8String",
423"TOK_VideotexString","TOK_VisibleString","TOK_WITH","TOK_EXCEPT","'^'","TOK_INTERSECTION",
424"'|'","TOK_UNION","TOK_TwoDots","TOK_ThreeDots","'{'","'}'","'('","')'","';'",
425"','","':'","'!'","'.'","'<'","'@'","'['","']'","ParsedGrammar","ModuleList",
426"ModuleSpecification","optObjectIdentifier","ObjectIdentifier","ObjectIdentifierBody",
427"ObjectIdentifierElement","optModuleSpecificationFlags","ModuleSpecificationFlags",
428"ModuleSpecificationFlag","optModuleSpecificationBody","ModuleSpecificationBody",
429"ModuleSpecificationElement","@1","ImportsDefinition","ImportsBundleSet","ImportsBundle",
430"ImportsList","ImportsElement","ExportsDefinition","ExportsBody","ExportsElement",
431"ValueSetDefinition","DefinedTypeRef","optValueSetBody","ValueSetBody","ValueSetElement",
432"DataTypeReference","ParameterArgumentList","ParameterArgumentName","ActualParameterList",
433"ActualParameter","optComponentTypeLists","ComponentTypeLists","ComponentType",
434"AlternativeTypeLists","AlternativeType","ClassDeclaration","optUnique","ClassFieldList",
435"ClassField","optWithSyntax","WithSyntax","@2","WithSyntaxFormat","WithSyntaxFormatToken",
436"ExtensionAndException","Type","TypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList",
vlm0aa86902004-10-12 23:26:53 +0000437"ComplexTypeReferenceElement","ClassFieldIdentifier","ClassFieldName","ValueDefinition",
vlme1e6ed82005-03-24 14:26:38 +0000438"Value","@3","DefinedValue","RestrictedCharacterStringValue","Opaque","BasicTypeId",
439"BasicTypeId_UniverationCompatible","BasicType","BasicString","Union","Intersection",
440"Except","optConstraints","Constraints","SetOfConstraints","ElementSetSpecs",
441"ElementSetSpec","ConstraintSubtypeElement","@4","ConstraintRangeSpec","ConstraintSpec",
vlm7bbdc9f2005-03-28 15:01:27 +0000442"SingleValue","ContainedSubtype","InnerTypeConstraint","WithComponentsList",
443"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
444"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
445"ComponentIdList","optMarker","Marker","UniverationDefinition","UniverationList",
446"UniverationElement","SignedNumber","optTag","Tag","TagTypeValue","TagClass",
447"TagPlicit","TypeRefName","ObjectClassReference","optIdentifier","Identifier", NULL
vlm6a02a8a2004-09-08 00:28:11 +0000448};
449#endif
450
451static const short yyr1[] = { 0,
vlm2c8c44d2005-03-24 16:22:35 +0000452 118, 119, 119, 120, 121, 121, 122, 122, 123, 123,
453 124, 124, 124, 125, 125, 126, 126, 127, 127, 127,
454 127, 127, 128, 128, 129, 129, 130, 130, 130, 130,
455 130, 131, 130, 130, 132, 132, 133, 133, 134, 135,
456 135, 136, 136, 136, 137, 137, 137, 138, 138, 139,
457 139, 139, 140, 141, 141, 142, 142, 143, 143, 144,
458 144, 145, 145, 145, 145, 146, 146, 147, 147, 147,
459 147, 148, 148, 149, 149, 150, 150, 151, 151, 152,
460 152, 152, 153, 153, 154, 154, 155, 156, 156, 157,
461 157, 158, 158, 158, 159, 159, 161, 160, 162, 162,
462 163, 163, 164, 164, 164, 165, 166, 166, 166, 166,
463 166, 166, 166, 166, 166, 166, 166, 167, 167, 167,
464 167, 167, 167, 168, 168, 169, 170, 171, 171, 172,
465 173, 174, 173, 173, 173, 173, 173, 173, 173, 173,
466 173, 175, 175, 176, 176, 176, 177, 177, 178, 178,
467 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
468 178, 179, 179, 179, 180, 180, 181, 181, 181, 181,
469 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
470 182, 182, 183, 183, 184, 185, 185, 186, 186, 187,
471 187, 188, 188, 188, 189, 189, 189, 189, 189, 190,
472 190, 190, 190, 190, 190, 190, 190, 190, 190, 191,
473 190, 192, 192, 192, 192, 193, 193, 194, 194, 194,
vlm7bbdc9f2005-03-28 15:01:27 +0000474 194, 194, 195, 196, 196, 197, 197, 198, 198, 199,
475 199, 200, 200, 200, 201, 201, 202, 203, 204, 204,
476 205, 205, 206, 206, 207, 207, 208, 208, 209, 209,
477 210, 210, 211, 211, 211, 211, 211, 212, 212, 213,
478 213, 214, 215, 216, 216, 216, 216, 217, 217, 217,
479 218, 218, 219, 220, 220, 221
vlm6a02a8a2004-09-08 00:28:11 +0000480};
481
482static const short yyr2[] = { 0,
483 1, 1, 2, 8, 0, 1, 3, 2, 1, 2,
484 1, 4, 1, 0, 1, 1, 2, 2, 2, 2,
485 2, 2, 0, 1, 1, 2, 1, 1, 1, 1,
486 1, 0, 3, 1, 3, 2, 1, 2, 4, 1,
vlm0aa86902004-10-12 23:26:53 +0000487 3, 1, 3, 1, 3, 3, 2, 1, 3, 1,
488 3, 1, 6, 1, 1, 0, 1, 1, 3, 1,
489 1, 4, 3, 3, 6, 1, 3, 1, 3, 3,
vlm4053ca52005-02-18 16:34:21 +0000490 3, 1, 3, 1, 1, 0, 1, 1, 3, 3,
491 3, 1, 1, 3, 2, 1, 5, 0, 1, 1,
492 3, 2, 4, 4, 0, 1, 0, 6, 1, 2,
vlm5e2c4b92005-03-20 11:12:40 +0000493 1, 1, 1, 3, 3, 3, 1, 4, 4, 4,
494 6, 6, 1, 4, 4, 1, 3, 1, 3, 3,
495 3, 1, 3, 1, 3, 1, 1, 1, 1, 4,
496 3, 0, 3, 1, 1, 1, 1, 1, 1, 1,
vlm2c8c44d2005-03-24 16:22:35 +0000497 1, 1, 3, 1, 1, 1, 1, 2, 1, 1,
vlme1e6ed82005-03-24 14:26:38 +0000498 1, 1, 2, 2, 1, 1, 2, 2, 1, 1,
499 1, 1, 1, 2, 1, 2, 1, 1, 1, 1,
vlm6a02a8a2004-09-08 00:28:11 +0000500 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
vlme1e6ed82005-03-24 14:26:38 +0000501 1, 1, 1, 1, 1, 0, 1, 1, 4, 3,
502 4, 1, 3, 5, 1, 3, 3, 3, 3, 4,
503 3, 1, 1, 3, 3, 3, 3, 1, 1, 0,
504 5, 1, 2, 2, 3, 1, 1, 1, 1, 1,
vlm7bbdc9f2005-03-28 15:01:27 +0000505 1, 1, 1, 3, 5, 1, 3, 1, 3, 0,
506 1, 1, 1, 1, 1, 1, 3, 4, 1, 3,
507 2, 3, 1, 3, 0, 1, 1, 2, 2, 3,
508 1, 3, 1, 4, 4, 1, 1, 1, 1, 0,
509 1, 2, 4, 0, 1, 1, 1, 0, 1, 1,
510 1, 1, 1, 0, 1, 1
vlm6a02a8a2004-09-08 00:28:11 +0000511};
512
513static const short yydefact[] = { 0,
vlm7bbdc9f2005-03-28 15:01:27 +0000514 271, 272, 1, 2, 5, 3, 0, 0, 6, 276,
vlm6a02a8a2004-09-08 00:28:11 +0000515 13, 8, 0, 9, 11, 14, 7, 10, 0, 0,
516 0, 0, 0, 0, 0, 15, 16, 0, 22, 20,
vlme1e6ed82005-03-24 14:26:38 +0000517 18, 21, 19, 0, 17, 12, 23, 167, 0, 0,
518 168, 169, 170, 0, 171, 172, 180, 173, 174, 175,
519 176, 177, 178, 179, 0, 24, 25, 27, 28, 31,
vlm0aa86902004-10-12 23:26:53 +0000520 29, 30, 34, 0, 0, 32, 0, 47, 0, 48,
521 50, 52, 36, 0, 37, 0, 40, 42, 44, 4,
vlm7bbdc9f2005-03-28 15:01:27 +0000522 26, 260, 118, 273, 0, 149, 0, 0, 163, 156,
vlme1e6ed82005-03-24 14:26:38 +0000523 160, 162, 150, 0, 0, 151, 155, 159, 0, 0,
524 54, 55, 152, 161, 122, 0, 33, 46, 45, 0,
vlm7bbdc9f2005-03-28 15:01:27 +0000525 0, 35, 38, 0, 0, 0, 0, 264, 64, 63,
526 0, 261, 268, 0, 164, 158, 157, 154, 153, 0,
vlm5e2c4b92005-03-20 11:12:40 +0000527 66, 0, 68, 0, 0, 0, 49, 51, 5, 41,
vlm7bbdc9f2005-03-28 15:01:27 +0000528 43, 0, 266, 267, 265, 0, 118, 273, 113, 0,
vlme1e6ed82005-03-24 14:26:38 +0000529 0, 186, 186, 62, 186, 116, 165, 152, 107, 0,
vlm7bbdc9f2005-03-28 15:01:27 +0000530 270, 269, 262, 119, 121, 0, 0, 0, 0, 56,
531 128, 129, 123, 124, 126, 120, 137, 144, 138, 258,
532 145, 146, 259, 135, 134, 136, 132, 130, 141, 139,
533 140, 0, 142, 39, 0, 90, 260, 127, 0, 0,
vlm2c8c44d2005-03-24 16:22:35 +0000534 0, 0, 0, 76, 0, 0, 187, 188, 76, 0,
vlm7bbdc9f2005-03-28 15:01:27 +0000535 106, 0, 166, 260, 260, 67, 71, 70, 69, 0,
vlm2c8c44d2005-03-24 16:22:35 +0000536 0, 218, 217, 0, 216, 219, 0, 60, 0, 0,
537 0, 57, 58, 221, 61, 195, 0, 202, 203, 209,
vlm7bbdc9f2005-03-28 15:01:27 +0000538 208, 235, 236, 220, 223, 222, 0, 0, 0, 0,
539 95, 0, 0, 247, 88, 88, 92, 246, 0, 263,
540 0, 103, 0, 83, 86, 260, 117, 0, 0, 0,
541 77, 78, 82, 260, 0, 192, 274, 0, 0, 274,
542 257, 249, 0, 251, 256, 253, 0, 72, 74, 75,
543 65, 0, 0, 212, 0, 0, 0, 0, 0, 0,
544 53, 0, 183, 184, 181, 182, 0, 0, 185, 0,
545 0, 0, 0, 125, 147, 133, 143, 131, 0, 87,
546 96, 91, 248, 89, 245, 245, 114, 0, 108, 0,
547 85, 0, 260, 109, 0, 245, 190, 0, 260, 275,
548 0, 110, 260, 250, 0, 0, 115, 260, 196, 210,
549 213, 214, 207, 205, 224, 0, 237, 201, 59, 197,
550 198, 199, 0, 206, 204, 0, 0, 239, 148, 0,
551 93, 94, 104, 105, 142, 84, 189, 81, 79, 80,
552 193, 0, 191, 0, 252, 0, 0, 73, 0, 215,
553 228, 0, 226, 186, 200, 0, 241, 243, 238, 0,
554 97, 0, 111, 112, 255, 254, 211, 225, 0, 230,
555 242, 0, 240, 0, 194, 227, 233, 234, 232, 229,
556 231, 244, 101, 0, 99, 102, 98, 100, 0, 0,
557 0
vlm6a02a8a2004-09-08 00:28:11 +0000558};
559
vlm7bbdc9f2005-03-28 15:01:27 +0000560static const short yydefgoto[] = { 429,
vlm6a02a8a2004-09-08 00:28:11 +0000561 3, 4, 8, 9, 13, 14, 25, 26, 27, 55,
vlm5e2c4b92005-03-20 11:12:40 +0000562 56, 57, 107, 58, 74, 75, 76, 77, 59, 69,
vlm2c8c44d2005-03-24 16:22:35 +0000563 70, 60, 100, 231, 232, 233, 61, 130, 131, 287,
vlm7bbdc9f2005-03-28 15:01:27 +0000564 288, 270, 271, 272, 263, 264, 119, 325, 195, 196,
565 320, 321, 414, 424, 425, 273, 289, 155, 156, 173,
566 174, 197, 198, 62, 188, 248, 189, 234, 316, 157,
567 103, 159, 104, 307, 308, 310, 206, 207, 208, 275,
568 276, 236, 389, 296, 237, 238, 239, 240, 392, 393,
569 420, 421, 241, 242, 243, 367, 368, 397, 257, 258,
vlm2c8c44d2005-03-24 16:22:35 +0000570 213, 283, 284, 244, 259, 122, 123, 146, 163, 245,
vlm7bbdc9f2005-03-28 15:01:27 +0000571 105, 339, 246
vlm6a02a8a2004-09-08 00:28:11 +0000572};
573
vlm7bbdc9f2005-03-28 15:01:27 +0000574static const short yypact[] = { 166,
575-32768,-32768, 166,-32768, -69,-32768, 32, 14,-32768,-32768,
576-32768,-32768, 60,-32768, -62, 132,-32768,-32768, 55, 42,
577 -13, 58, 65, 64, 125, 132,-32768, 96,-32768,-32768,
578-32768,-32768,-32768, 135,-32768,-32768, 507,-32768, 158, 9,
579-32768,-32768,-32768, 38,-32768,-32768,-32768,-32768,-32768,-32768,
580-32768,-32768,-32768,-32768, 122, 507,-32768,-32768,-32768,-32768,
581-32768,-32768,-32768, 357, 736,-32768, 100,-32768, 80,-32768,
582 146,-32768,-32768, 34,-32768, -17,-32768, 147,-32768,-32768,
583-32768, -4, 140,-32768, 178,-32768, 184, 159,-32768,-32768,
584-32768,-32768,-32768, 215, 188,-32768,-32768,-32768, 811, 269,
585-32768,-32768,-32768,-32768, 170, 282,-32768,-32768,-32768, 168,
586 180,-32768,-32768, 166, 168, 182, 186, 8,-32768,-32768,
587 584,-32768, 44, 168,-32768,-32768,-32768,-32768,-32768, -10,
588-32768, 189, 191, 198, 225, 465,-32768,-32768, -69,-32768,
589-32768, 204,-32768,-32768,-32768, 280, -8, 199, 256, 200,
590 238, -25, -24,-32768, -44,-32768,-32768, 205,-32768, 206,
591-32768,-32768,-32768,-32768,-32768, 309, 811, 305, 168, 202,
592-32768,-32768, 201,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
vlme1e6ed82005-03-24 14:26:38 +0000593-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
vlm7bbdc9f2005-03-28 15:01:27 +0000594-32768, 207, 208,-32768, 50,-32768, 39,-32768, 209, 290,
595 12, 217, 211, 7, 268, 252,-32768, 218, 7, 254,
596-32768, 53,-32768, 5, 213,-32768,-32768,-32768,-32768, 229,
597 303,-32768,-32768, -1,-32768,-32768, 216,-32768, 166, 268,
598 226, 224,-32768,-32768, 156, 237, 230, -1,-32768,-32768,
599-32768, 231,-32768,-32768,-32768,-32768, 204, 336, 305, 465,
600 245, 204, 465,-32768, 253, 253,-32768,-32768, 661,-32768,
601 305, 233, 81,-32768,-32768, 213,-32768, 268, 276, 241,
602 242,-32768,-32768, 213, 243, 68, 305, 268, 247, 305,
603-32768,-32768, 82,-32768,-32768, 248, 89,-32768,-32768,-32768,
604-32768, 455, 249, 244, 258, 286, 250, 259, 257, 260,
605-32768, 202,-32768,-32768,-32768,-32768, 455, 455,-32768, 455,
606 268, 448, 251,-32768,-32768, 363,-32768,-32768, 285,-32768,
607-32768,-32768,-32768,-32768, 0, 0,-32768, 214,-32768, 12,
608-32768, 264, 213,-32768, 7, 0,-32768, 272, 213,-32768,
609 270,-32768, 213,-32768, 67, 214,-32768, 5,-32768,-32768,
610-32768, 263,-32768,-32768, 218, 19,-32768,-32768,-32768,-32768,
611-32768,-32768, 271,-32768,-32768, 6, 119,-32768,-32768, 275,
612-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
613 274, 661,-32768, 661,-32768, 278, 279,-32768, 336,-32768,
614-32768, 127,-32768, -44,-32768, 305, 277,-32768,-32768, 251,
615-32768, 268,-32768,-32768,-32768,-32768, 363,-32768, 19, 17,
616 277, 305,-32768, 149, 156,-32768,-32768,-32768,-32768,-32768,
617-32768,-32768,-32768, 28,-32768,-32768,-32768,-32768, 388, 391,
618-32768
vlm6a02a8a2004-09-08 00:28:11 +0000619};
620
621static const short yypgoto[] = {-32768,
vlm7bbdc9f2005-03-28 15:01:27 +0000622-32768, 389, 255,-32768,-32768, 380,-32768,-32768, 370,-32768,
623-32768, 341,-32768,-32768,-32768, 327,-32768, 289,-32768,-32768,
624 300,-32768, 346,-32768,-32768, 110,-32768,-32768, 246,-32768,
625 66, 210,-32768, 85,-32768, 86,-32768, 165,-32768, 163,
626-32768,-32768,-32768,-32768, 3, -189, -73, -186, -54,-32768,
627 181, -190, -114,-32768, -47,-32768, -251, -118, 40, -40,
628 -120,-32768, 33,-32768,-32768,-32768, -150,-32768, 133, -164,
629 -166, -201,-32768, 193,-32768, -218,-32768,-32768,-32768, 23,
630-32768,-32768,-32768,-32768,-32768,-32768, 37, 43, -152,-32768,
631-32768,-32768, 93, -128, -80,-32768,-32768,-32768,-32768, 16,
632-32768, 154, -7
vlm6a02a8a2004-09-08 00:28:11 +0000633};
634
635
vlm7bbdc9f2005-03-28 15:01:27 +0000636#define YYLAST 907
vlm6a02a8a2004-09-08 00:28:11 +0000637
638
639static const short yytable[] = { 15,
vlm7bbdc9f2005-03-28 15:01:27 +0000640 158, 121, 210, 235, 211, 15, 256, 191, 120, 101,
641 101, 265, 10, 10, 10, 5, 10, 190, 5, 10,
642 175, 1, 2, 102, 102, 117, 10, 67, 143, 65,
643 114, 423, 72, 417, 253, 7, 79, 203, 269, 10,
644 11, 10, 171, 172, 19, 10, 1, 2, 65, 16,
645 1, 2, 64, 171, 172, 71, 203, 203, 132, 78,
646 10, 180, 205, 28, 183, 300, 79, 10, 11, 63,
647 254, 64, 30, 253, 10, 180, 373, 354, 183, 204,
648 209, 205, 205, 285, 144, 73, 161, 418, 63, 78,
649 349, 419, 115, 365, 386, 166, -271, 162, 145, 167,
650 29, 294, 72, 332, 124, 360, 361, 79, 362, 254,
651 262, 118, 295, 341, 133, 262, 165, 68, 396, 32,
652 118, 191, 391, 255, 191, 71, 132, 34, 193, 139,
653 78, 190, 175, 427, 190, 235, 160, 12, 158, 164,
654 265, 291, 112, 31, -245, 20, 363, 267, -245, 33,
655 176, 192, 423, 21, 118, 251, 281, 37, 282, 252,
656 217, 219, 80, 171, 172, 17, 303, 304, 305, 306,
657 281, 66, 371, 372, 22, 10, 23, 338, 1, 2,
658 1, 2, 133, 380, 218, 24, 329, 344, 109, 110,
659 330, 345, 331, 266, 347, 403, 274, 404, 348, 374,
660 336, 274, 318, 36, 286, 323, 290, 178, 108, 10,
661 180, 181, 182, 183, 1, 2, 285, 387, 171, 172,
662 220, 10, 180, 426, 399, 183, 1, 2, 400, 83,
663 84, 127, 408, 426, 221, 415, 409, 1, 2, 171,
664 172, 317, 193, 410, 299, 193, 297, 298, 222, 223,
665 111, 116, 124, 327, 303, 304, 305, 306, 382, 378,
666 125, 158, 384, 158, 224, 192, 126, 128, 192, 340,
667 129, 134, 340, 178, 160, 10, 180, 181, 182, 183,
668 1, 2, 135, 225, 136, 138, 220, 141, 199, 226,
669 142, 178, 200, 10, 180, 181, 182, 183, 227, 168,
670 221, 169, 170, -272, 201, 228, 229, 202, 230, 212,
671 214, 215, 10, 247, 222, 223, 261, 268, 250, 249,
672 375, 277, 266, 280, 278, 260, 292, 274, 118, 293,
673 224, 301, 222, 302, 309, 313, 311, 286, 375, 315,
674 290, 319, 324, 192, 328, 333, 334, 353, 394, 225,
675 337, 335, 342, 350, 346, 226, 205, 351, 398, 82,
676 352, 192, 357, 356, 227, 366, 369, 358, 370, 83,
677 84, 377, 229, 226, 230, 381, 390, 383, 395, 401,
678 85, 38, 86, 402, 87, 405, 406, 430, 398, 412,
679 431, 6, 18, 194, 88, 35, 81, 160, 89, 160,
680 113, 394, 90, 140, 422, 91, 41, 42, 43, 137,
681 106, 359, 216, 388, 322, 376, 92, 45, 279, 379,
682 326, 93, 46, 94, 47, 95, 428, 314, 407, 355,
683 312, 416, 48, 343, 96, 97, 413, 385, 411, 0,
684 0, 49, 0, 50, 0, 0, 0, 0, 51, 98,
685 52, 53, 54, 178, 0, 10, 180, 181, 182, 183,
686 178, 99, 10, 180, 181, 182, 183, 1, 2, 177,
687 178, 179, 10, 180, 181, 182, 183, 1, 2, 0,
688 0, 0, 0, 0, 0, 0, 0, 221, 0, 0,
689 0, 0, 0, 0, 222, 0, 0, 0, 0, 0,
690 0, 222, 223, 0, 0, 0, 0, 0, 0, 364,
691 0, 184, 0, 0, 10, 0, 0, 224, 0, 1,
692 2, 0, 0, 0, 0, 0, 0, 0, 0, 185,
693 0, 38, 0, 0, 0, 226, 225, 0, 0, 0,
694 0, 0, 226, 0, 0, 0, 39, 0, 0, 0,
695 40, 227, 186, 0, 0, 0, 41, 42, 43, 229,
696 0, 230, 44, 0, 0, 0, 0, 45, 0, 187,
vlm2c8c44d2005-03-24 16:22:35 +0000697 0, 0, 46, 0, 47, 0, 0, 0, 0, 0,
698 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
699 0, 49, 0, 50, 0, 0, 147, 148, 51, 0,
700 52, 53, 54, 149, 0, 0, 0, 85, 38, 86,
701 0, 87, 150, 0, 0, 0, 0, 0, 0, 0,
702 0, 88, 0, 0, 0, 89, 0, 0, 0, 90,
703 0, 0, 91, 41, 42, 43, 0, 0, 0, 0,
704 0, 151, 0, 92, 45, 0, 0, 0, 93, 46,
705 94, 47, 95, 0, 0, 0, 0, 0, 0, 48,
706 0, 96, 97, 152, 153, 0, 0, 0, 49, 0,
707 50, 0, 154, 147, 148, 51, 98, 52, 53, 54,
708 149, 0, 0, 0, 85, 38, 86, 0, 87, 150,
709 0, 0, 0, 0, 0, 0, 0, 0, 88, 0,
710 0, 0, 89, 0, 0, 0, 90, 0, 0, 91,
711 41, 42, 43, 0, 0, 0, 0, 0, 151, 0,
712 92, 45, 0, 0, 0, 93, 46, 94, 47, 95,
713 0, 0, 0, 0, 0, 0, 48, 0, 96, 97,
714 152, 153, 0, 0, 0, 49, 0, 50, 83, 84,
715 0, 0, 51, 98, 52, 53, 54, 0, 0, 85,
716 38, 86, 0, 87, 0, 0, 0, 0, 0, 0,
717 0, 0, 0, 88, 0, 0, 0, 89, 0, 0,
718 0, 90, 0, 0, 91, 41, 42, 43, 0, 0,
719 0, 0, 0, 0, 0, 92, 45, 0, 0, 0,
720 93, 46, 94, 47, 95, 0, 0, 0, 0, 0,
721 0, 48, 0, 96, 97, 0, 0, 0, 0, 0,
722 49, 0, 50, 1, 2, 0, 0, 51, 98, 52,
723 53, 54, 0, 0, 85, 38, 86, 0, 87, 0,
724 0, 0, 0, 0, 0, 0, 0, 0, 88, 0,
725 0, 0, 89, 0, 0, 0, 90, 0, 0, 91,
726 41, 42, 43, 0, 0, 0, 0, 0, 0, 0,
727 92, 45, 0, 0, 0, 93, 46, 94, 47, 95,
728 0, 0, 0, 0, 0, 0, 48, 0, 96, 97,
729 0, 0, 0, 0, 0, 49, 0, 50, 0, 0,
730 0, 0, 51, 98, 52, 53, 54
vlm6a02a8a2004-09-08 00:28:11 +0000731};
732
733static const short yycheck[] = { 7,
vlm7bbdc9f2005-03-28 15:01:27 +0000734 121, 82, 153, 170, 155, 13, 197, 136, 82, 64,
735 65, 201, 8, 8, 8, 0, 8, 136, 3, 8,
736 135, 13, 14, 64, 65, 30, 8, 19, 21, 37,
737 48, 4, 40, 17, 35, 105, 44, 82, 32, 8,
738 9, 8, 15, 16, 107, 8, 13, 14, 56, 36,
739 13, 14, 37, 15, 16, 40, 82, 82, 99, 44,
740 8, 9, 107, 9, 12, 230, 74, 8, 9, 37,
741 71, 56, 86, 35, 8, 9, 328, 296, 12, 105,
742 105, 107, 107, 212, 77, 48, 43, 71, 56, 74,
743 292, 75, 110, 312, 346, 106, 105, 54, 91, 110,
744 59, 103, 110, 268, 113, 307, 308, 115, 310, 71,
745 104, 116, 114, 278, 99, 104, 124, 109, 113, 55,
746 116, 250, 104, 197, 253, 110, 167, 3, 136, 114,
747 115, 250, 247, 106, 253, 302, 121, 106, 259, 124,
748 330, 215, 109, 86, 106, 14, 311, 202, 110, 86,
749 135, 136, 4, 22, 116, 106, 104, 23, 106, 110,
750 168, 169, 41, 15, 16, 106, 99, 100, 101, 102,
751 104, 14, 325, 326, 43, 8, 45, 110, 13, 14,
752 13, 14, 167, 336, 169, 54, 106, 106, 109, 110,
753 110, 110, 266, 201, 106, 382, 204, 384, 110, 328,
754 274, 209, 250, 108, 212, 253, 214, 6, 109, 8,
755 9, 10, 11, 12, 13, 14, 345, 346, 15, 16,
756 19, 8, 9, 414, 106, 12, 13, 14, 110, 13,
757 14, 73, 106, 424, 33, 402, 110, 13, 14, 15,
758 16, 249, 250, 394, 229, 253, 31, 32, 47, 48,
759 105, 105, 113, 261, 99, 100, 101, 102, 339, 333,
760 83, 382, 343, 384, 63, 250, 83, 53, 253, 277,
761 83, 3, 280, 6, 259, 8, 9, 10, 11, 12,
762 13, 14, 113, 82, 3, 106, 19, 106, 9, 88,
763 105, 6, 37, 8, 9, 10, 11, 12, 97, 111,
764 33, 111, 105, 105, 105, 104, 105, 70, 107, 105,
765 105, 3, 8, 113, 47, 48, 27, 107, 111, 113,
766 328, 70, 330, 70, 107, 117, 98, 335, 116, 27,
767 63, 106, 47, 110, 98, 105, 107, 345, 346, 4,
768 348, 97, 90, 328, 112, 70, 106, 62, 356, 82,
769 108, 110, 106, 105, 107, 88, 107, 114, 366, 3,
770 103, 346, 106, 105, 97, 115, 4, 108, 84, 13,
771 14, 108, 105, 88, 107, 104, 114, 108, 108, 105,
772 24, 25, 26, 110, 28, 108, 108, 0, 396, 113,
773 0, 3, 13, 139, 38, 26, 56, 382, 42, 384,
774 74, 409, 46, 115, 412, 49, 50, 51, 52, 110,
775 65, 302, 167, 348, 252, 330, 60, 61, 209, 335,
776 256, 65, 66, 67, 68, 69, 424, 247, 389, 297,
777 238, 409, 76, 280, 78, 79, 400, 345, 396, -1,
778 -1, 85, -1, 87, -1, -1, -1, -1, 92, 93,
779 94, 95, 96, 6, -1, 8, 9, 10, 11, 12,
780 6, 105, 8, 9, 10, 11, 12, 13, 14, 5,
781 6, 7, 8, 9, 10, 11, 12, 13, 14, -1,
782 -1, -1, -1, -1, -1, -1, -1, 33, -1, -1,
783 -1, -1, -1, -1, 47, -1, -1, -1, -1, -1,
784 -1, 47, 48, -1, -1, -1, -1, -1, -1, 62,
785 -1, 47, -1, -1, 8, -1, -1, 63, -1, 13,
786 14, -1, -1, -1, -1, -1, -1, -1, -1, 65,
787 -1, 25, -1, -1, -1, 88, 82, -1, -1, -1,
788 -1, -1, 88, -1, -1, -1, 40, -1, -1, -1,
789 44, 97, 88, -1, -1, -1, 50, 51, 52, 105,
790 -1, 107, 56, -1, -1, -1, -1, 61, -1, 105,
vlm2c8c44d2005-03-24 16:22:35 +0000791 -1, -1, 66, -1, 68, -1, -1, -1, -1, -1,
792 -1, -1, 76, -1, -1, -1, -1, -1, -1, -1,
793 -1, 85, -1, 87, -1, -1, 13, 14, 92, -1,
794 94, 95, 96, 20, -1, -1, -1, 24, 25, 26,
795 -1, 28, 29, -1, -1, -1, -1, -1, -1, -1,
796 -1, 38, -1, -1, -1, 42, -1, -1, -1, 46,
797 -1, -1, 49, 50, 51, 52, -1, -1, -1, -1,
798 -1, 58, -1, 60, 61, -1, -1, -1, 65, 66,
799 67, 68, 69, -1, -1, -1, -1, -1, -1, 76,
800 -1, 78, 79, 80, 81, -1, -1, -1, 85, -1,
801 87, -1, 89, 13, 14, 92, 93, 94, 95, 96,
802 20, -1, -1, -1, 24, 25, 26, -1, 28, 29,
803 -1, -1, -1, -1, -1, -1, -1, -1, 38, -1,
804 -1, -1, 42, -1, -1, -1, 46, -1, -1, 49,
805 50, 51, 52, -1, -1, -1, -1, -1, 58, -1,
806 60, 61, -1, -1, -1, 65, 66, 67, 68, 69,
807 -1, -1, -1, -1, -1, -1, 76, -1, 78, 79,
808 80, 81, -1, -1, -1, 85, -1, 87, 13, 14,
809 -1, -1, 92, 93, 94, 95, 96, -1, -1, 24,
810 25, 26, -1, 28, -1, -1, -1, -1, -1, -1,
811 -1, -1, -1, 38, -1, -1, -1, 42, -1, -1,
812 -1, 46, -1, -1, 49, 50, 51, 52, -1, -1,
813 -1, -1, -1, -1, -1, 60, 61, -1, -1, -1,
814 65, 66, 67, 68, 69, -1, -1, -1, -1, -1,
815 -1, 76, -1, 78, 79, -1, -1, -1, -1, -1,
816 85, -1, 87, 13, 14, -1, -1, 92, 93, 94,
817 95, 96, -1, -1, 24, 25, 26, -1, 28, -1,
818 -1, -1, -1, -1, -1, -1, -1, -1, 38, -1,
819 -1, -1, 42, -1, -1, -1, 46, -1, -1, 49,
820 50, 51, 52, -1, -1, -1, -1, -1, -1, -1,
821 60, 61, -1, -1, -1, 65, 66, 67, 68, 69,
822 -1, -1, -1, -1, -1, -1, 76, -1, 78, 79,
823 -1, -1, -1, -1, -1, 85, -1, 87, -1, -1,
824 -1, -1, 92, 93, 94, 95, 96
vlm6a02a8a2004-09-08 00:28:11 +0000825};
826/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
827#line 3 "/usr/share/bison.simple"
828/* This file comes from bison-1.28. */
829
830/* Skeleton output parser for bison,
831 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
832
833 This program is free software; you can redistribute it and/or modify
834 it under the terms of the GNU General Public License as published by
835 the Free Software Foundation; either version 2, or (at your option)
836 any later version.
837
838 This program is distributed in the hope that it will be useful,
839 but WITHOUT ANY WARRANTY; without even the implied warranty of
840 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
841 GNU General Public License for more details.
842
843 You should have received a copy of the GNU General Public License
844 along with this program; if not, write to the Free Software
845 Foundation, Inc., 59 Temple Place - Suite 330,
846 Boston, MA 02111-1307, USA. */
847
848/* As a special exception, when this file is copied by Bison into a
849 Bison output file, you may use that output file without restriction.
850 This special exception was added by the Free Software Foundation
851 in version 1.24 of Bison. */
852
853/* This is the parser code that is written into each bison parser
854 when the %semantic_parser declaration is not specified in the grammar.
855 It was written by Richard Stallman by simplifying the hairy parser
856 used when %semantic_parser is specified. */
857
858#ifndef YYSTACK_USE_ALLOCA
859#ifdef alloca
860#define YYSTACK_USE_ALLOCA
861#else /* alloca not defined */
862#ifdef __GNUC__
863#define YYSTACK_USE_ALLOCA
864#define alloca __builtin_alloca
865#else /* not GNU C. */
866#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
867#define YYSTACK_USE_ALLOCA
868#include <alloca.h>
869#else /* not sparc */
870/* We think this test detects Watcom and Microsoft C. */
871/* This used to test MSDOS, but that is a bad idea
872 since that symbol is in the user namespace. */
873#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
874#if 0 /* No need for malloc.h, which pollutes the namespace;
875 instead, just don't use alloca. */
876#include <malloc.h>
877#endif
878#else /* not MSDOS, or __TURBOC__ */
879#if defined(_AIX)
880/* I don't know what this was needed for, but it pollutes the namespace.
881 So I turned it off. rms, 2 May 1997. */
882/* #include <malloc.h> */
883 #pragma alloca
884#define YYSTACK_USE_ALLOCA
885#else /* not MSDOS, or __TURBOC__, or _AIX */
886#if 0
887#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
888 and on HPUX 10. Eventually we can turn this on. */
889#define YYSTACK_USE_ALLOCA
890#define alloca __builtin_alloca
891#endif /* __hpux */
892#endif
893#endif /* not _AIX */
894#endif /* not MSDOS, or __TURBOC__ */
895#endif /* not sparc */
896#endif /* not GNU C */
897#endif /* alloca not defined */
898#endif /* YYSTACK_USE_ALLOCA not defined */
899
900#ifdef YYSTACK_USE_ALLOCA
901#define YYSTACK_ALLOC alloca
vlmfa67ddc2004-06-03 03:38:44 +0000902#else
vlm6a02a8a2004-09-08 00:28:11 +0000903#define YYSTACK_ALLOC malloc
vlmfa67ddc2004-06-03 03:38:44 +0000904#endif
905
vlm6a02a8a2004-09-08 00:28:11 +0000906/* Note: there must be only one dollar sign in this file.
907 It is replaced by the list of actions, each action
908 as one case of the switch. */
vlmfa67ddc2004-06-03 03:38:44 +0000909
910#define yyerrok (yyerrstatus = 0)
911#define yyclearin (yychar = YYEMPTY)
912#define YYEMPTY -2
913#define YYEOF 0
914#define YYACCEPT goto yyacceptlab
vlm6a02a8a2004-09-08 00:28:11 +0000915#define YYABORT goto yyabortlab
vlmfa67ddc2004-06-03 03:38:44 +0000916#define YYERROR goto yyerrlab1
vlm6a02a8a2004-09-08 00:28:11 +0000917/* Like YYERROR except do call yyerror.
918 This remains here temporarily to ease the
919 transition to the new meaning of YYERROR, for GCC.
vlmfa67ddc2004-06-03 03:38:44 +0000920 Once GCC version 2 has supplanted version 1, this can go. */
921#define YYFAIL goto yyerrlab
922#define YYRECOVERING() (!!yyerrstatus)
vlm6a02a8a2004-09-08 00:28:11 +0000923#define YYBACKUP(token, value) \
vlmfa67ddc2004-06-03 03:38:44 +0000924do \
925 if (yychar == YYEMPTY && yylen == 1) \
vlm6a02a8a2004-09-08 00:28:11 +0000926 { yychar = (token), yylval = (value); \
vlmfa67ddc2004-06-03 03:38:44 +0000927 yychar1 = YYTRANSLATE (yychar); \
928 YYPOPSTACK; \
929 goto yybackup; \
930 } \
931 else \
vlm6a02a8a2004-09-08 00:28:11 +0000932 { yyerror ("syntax error: cannot back up"); YYERROR; } \
vlmfa67ddc2004-06-03 03:38:44 +0000933while (0)
934
935#define YYTERROR 1
936#define YYERRCODE 256
937
vlm6a02a8a2004-09-08 00:28:11 +0000938#ifndef YYPURE
939#define YYLEX yylex()
vlmfa67ddc2004-06-03 03:38:44 +0000940#endif
941
vlm6a02a8a2004-09-08 00:28:11 +0000942#ifdef YYPURE
943#ifdef YYLSP_NEEDED
944#ifdef YYLEX_PARAM
945#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
946#else
947#define YYLEX yylex(&yylval, &yylloc)
948#endif
949#else /* not YYLSP_NEEDED */
950#ifdef YYLEX_PARAM
951#define YYLEX yylex(&yylval, YYLEX_PARAM)
952#else
953#define YYLEX yylex(&yylval)
954#endif
955#endif /* not YYLSP_NEEDED */
956#endif
vlmfa67ddc2004-06-03 03:38:44 +0000957
vlm6a02a8a2004-09-08 00:28:11 +0000958/* If nonreentrant, generate the variables here */
vlmfa67ddc2004-06-03 03:38:44 +0000959
vlm6a02a8a2004-09-08 00:28:11 +0000960#ifndef YYPURE
vlmfa67ddc2004-06-03 03:38:44 +0000961
vlm6a02a8a2004-09-08 00:28:11 +0000962int yychar; /* the lookahead symbol */
963YYSTYPE yylval; /* the semantic value of the */
964 /* lookahead symbol */
vlmfa67ddc2004-06-03 03:38:44 +0000965
vlm6a02a8a2004-09-08 00:28:11 +0000966#ifdef YYLSP_NEEDED
967YYLTYPE yylloc; /* location data for the lookahead */
968 /* symbol */
969#endif
vlmfa67ddc2004-06-03 03:38:44 +0000970
vlm6a02a8a2004-09-08 00:28:11 +0000971int yynerrs; /* number of parse errors so far */
972#endif /* not YYPURE */
973
974#if YYDEBUG != 0
975int yydebug; /* nonzero means print parse trace */
976/* Since this is uninitialized, it does not stop multiple parsers
977 from coexisting. */
978#endif
979
980/* YYINITDEPTH indicates the initial size of the parser's stacks */
981
vlmfa67ddc2004-06-03 03:38:44 +0000982#ifndef YYINITDEPTH
vlm6a02a8a2004-09-08 00:28:11 +0000983#define YYINITDEPTH 200
vlmfa67ddc2004-06-03 03:38:44 +0000984#endif
985
vlm6a02a8a2004-09-08 00:28:11 +0000986/* YYMAXDEPTH is the maximum size the stacks can grow to
987 (effective only if the built-in stack extension method is used). */
vlmfa67ddc2004-06-03 03:38:44 +0000988
989#if YYMAXDEPTH == 0
vlm6a02a8a2004-09-08 00:28:11 +0000990#undef YYMAXDEPTH
vlmfa67ddc2004-06-03 03:38:44 +0000991#endif
992
993#ifndef YYMAXDEPTH
vlm6a02a8a2004-09-08 00:28:11 +0000994#define YYMAXDEPTH 10000
vlmfa67ddc2004-06-03 03:38:44 +0000995#endif
996
vlm6a02a8a2004-09-08 00:28:11 +0000997/* Define __yy_memcpy. Note that the size argument
998 should be passed with type unsigned int, because that is what the non-GCC
999 definitions require. With GCC, __builtin_memcpy takes an arg
1000 of type size_t, but it can handle unsigned int. */
vlmfa67ddc2004-06-03 03:38:44 +00001001
vlm6a02a8a2004-09-08 00:28:11 +00001002#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
1003#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
1004#else /* not GNU C or C++ */
1005#ifndef __cplusplus
vlmfa67ddc2004-06-03 03:38:44 +00001006
vlm6a02a8a2004-09-08 00:28:11 +00001007/* This is the most reliable way to avoid incompatibilities
1008 in available built-in functions on various systems. */
vlm80103492004-09-07 10:39:09 +00001009static void
vlm6a02a8a2004-09-08 00:28:11 +00001010__yy_memcpy (to, from, count)
1011 char *to;
1012 char *from;
1013 unsigned int count;
vlm80103492004-09-07 10:39:09 +00001014{
vlm6a02a8a2004-09-08 00:28:11 +00001015 register char *f = from;
1016 register char *t = to;
1017 register int i = count;
vlm80103492004-09-07 10:39:09 +00001018
vlm6a02a8a2004-09-08 00:28:11 +00001019 while (i-- > 0)
1020 *t++ = *f++;
vlm80103492004-09-07 10:39:09 +00001021}
vlm80103492004-09-07 10:39:09 +00001022
vlm6a02a8a2004-09-08 00:28:11 +00001023#else /* __cplusplus */
vlm80103492004-09-07 10:39:09 +00001024
vlm6a02a8a2004-09-08 00:28:11 +00001025/* This is the most reliable way to avoid incompatibilities
1026 in available built-in functions on various systems. */
vlm80103492004-09-07 10:39:09 +00001027static void
vlm6a02a8a2004-09-08 00:28:11 +00001028__yy_memcpy (char *to, char *from, unsigned int count)
vlm80103492004-09-07 10:39:09 +00001029{
vlm6a02a8a2004-09-08 00:28:11 +00001030 register char *t = to;
1031 register char *f = from;
1032 register int i = count;
vlm80103492004-09-07 10:39:09 +00001033
vlm6a02a8a2004-09-08 00:28:11 +00001034 while (i-- > 0)
1035 *t++ = *f++;
vlm044f7442004-09-04 04:49:21 +00001036}
vlm044f7442004-09-04 04:49:21 +00001037
vlm6a02a8a2004-09-08 00:28:11 +00001038#endif
1039#endif
vlmfa67ddc2004-06-03 03:38:44 +00001040
vlm6a02a8a2004-09-08 00:28:11 +00001041#line 217 "/usr/share/bison.simple"
vlmfa67ddc2004-06-03 03:38:44 +00001042
1043/* The user can define YYPARSE_PARAM as the name of an argument to be passed
1044 into yyparse. The argument should have type void *.
1045 It should actually point to an object.
1046 Grammar actions can access the variable by casting it
1047 to the proper pointer type. */
1048
1049#ifdef YYPARSE_PARAM
vlm6a02a8a2004-09-08 00:28:11 +00001050#ifdef __cplusplus
1051#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
1052#define YYPARSE_PARAM_DECL
1053#else /* not __cplusplus */
1054#define YYPARSE_PARAM_ARG YYPARSE_PARAM
1055#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1056#endif /* not __cplusplus */
1057#else /* not YYPARSE_PARAM */
1058#define YYPARSE_PARAM_ARG
1059#define YYPARSE_PARAM_DECL
1060#endif /* not YYPARSE_PARAM */
vlmfa67ddc2004-06-03 03:38:44 +00001061
1062/* Prevent warning if -Wstrict-prototypes. */
1063#ifdef __GNUC__
vlm6a02a8a2004-09-08 00:28:11 +00001064#ifdef YYPARSE_PARAM
vlmfa67ddc2004-06-03 03:38:44 +00001065int yyparse (void *);
vlm6a02a8a2004-09-08 00:28:11 +00001066#else
vlmfa67ddc2004-06-03 03:38:44 +00001067int yyparse (void);
vlm6a02a8a2004-09-08 00:28:11 +00001068#endif
vlm39e5ed72004-09-05 10:40:41 +00001069#endif
vlm80103492004-09-07 10:39:09 +00001070
vlmfa67ddc2004-06-03 03:38:44 +00001071int
vlm6a02a8a2004-09-08 00:28:11 +00001072yyparse(YYPARSE_PARAM_ARG)
vlmfa67ddc2004-06-03 03:38:44 +00001073 YYPARSE_PARAM_DECL
1074{
1075 register int yystate;
1076 register int yyn;
1077 register short *yyssp;
1078 register YYSTYPE *yyvsp;
vlm6a02a8a2004-09-08 00:28:11 +00001079 int yyerrstatus; /* number of tokens to shift before error messages enabled */
1080 int yychar1 = 0; /* lookahead token as an internal (translated) token number */
vlmfa67ddc2004-06-03 03:38:44 +00001081
vlm6a02a8a2004-09-08 00:28:11 +00001082 short yyssa[YYINITDEPTH]; /* the state stack */
1083 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
vlmfa67ddc2004-06-03 03:38:44 +00001084
vlm6a02a8a2004-09-08 00:28:11 +00001085 short *yyss = yyssa; /* refer to the stacks thru separate pointers */
1086 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
vlmfa67ddc2004-06-03 03:38:44 +00001087
vlm6a02a8a2004-09-08 00:28:11 +00001088#ifdef YYLSP_NEEDED
1089 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
1090 YYLTYPE *yyls = yylsa;
1091 YYLTYPE *yylsp;
1092
1093#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1094#else
vlmfa67ddc2004-06-03 03:38:44 +00001095#define YYPOPSTACK (yyvsp--, yyssp--)
vlm6a02a8a2004-09-08 00:28:11 +00001096#endif
vlmfa67ddc2004-06-03 03:38:44 +00001097
vlm6a02a8a2004-09-08 00:28:11 +00001098 int yystacksize = YYINITDEPTH;
1099 int yyfree_stacks = 0;
vlmfa67ddc2004-06-03 03:38:44 +00001100
vlm6a02a8a2004-09-08 00:28:11 +00001101#ifdef YYPURE
1102 int yychar;
1103 YYSTYPE yylval;
1104 int yynerrs;
1105#ifdef YYLSP_NEEDED
1106 YYLTYPE yylloc;
1107#endif
1108#endif
vlmfa67ddc2004-06-03 03:38:44 +00001109
vlm6a02a8a2004-09-08 00:28:11 +00001110 YYSTYPE yyval; /* the variable used to return */
1111 /* semantic values from the action */
1112 /* routines */
vlmfa67ddc2004-06-03 03:38:44 +00001113
1114 int yylen;
1115
vlm6a02a8a2004-09-08 00:28:11 +00001116#if YYDEBUG != 0
1117 if (yydebug)
1118 fprintf(stderr, "Starting parse\n");
1119#endif
vlmfa67ddc2004-06-03 03:38:44 +00001120
1121 yystate = 0;
1122 yyerrstatus = 0;
1123 yynerrs = 0;
1124 yychar = YYEMPTY; /* Cause a token to be read. */
1125
1126 /* Initialize stack pointers.
1127 Waste one element of value and location stack
1128 so that they stay on the same level as the state stack.
1129 The wasted elements are never initialized. */
1130
vlm6a02a8a2004-09-08 00:28:11 +00001131 yyssp = yyss - 1;
vlmfa67ddc2004-06-03 03:38:44 +00001132 yyvsp = yyvs;
vlm6a02a8a2004-09-08 00:28:11 +00001133#ifdef YYLSP_NEEDED
1134 yylsp = yyls;
1135#endif
vlmfa67ddc2004-06-03 03:38:44 +00001136
vlm6a02a8a2004-09-08 00:28:11 +00001137/* Push a new state, which is found in yystate . */
1138/* In all cases, when you get here, the value and location stacks
1139 have just been pushed. so pushing a state here evens the stacks. */
1140yynewstate:
vlmfa67ddc2004-06-03 03:38:44 +00001141
vlm6a02a8a2004-09-08 00:28:11 +00001142 *++yyssp = yystate;
vlmfa67ddc2004-06-03 03:38:44 +00001143
1144 if (yyssp >= yyss + yystacksize - 1)
1145 {
vlm6a02a8a2004-09-08 00:28:11 +00001146 /* Give user a chance to reallocate the stack */
1147 /* Use copies of these so that the &'s don't force the real ones into memory. */
1148 YYSTYPE *yyvs1 = yyvs;
1149 short *yyss1 = yyss;
1150#ifdef YYLSP_NEEDED
1151 YYLTYPE *yyls1 = yyls;
1152#endif
1153
vlmfa67ddc2004-06-03 03:38:44 +00001154 /* Get the current used size of the three stacks, in elements. */
vlm6a02a8a2004-09-08 00:28:11 +00001155 int size = yyssp - yyss + 1;
vlmfa67ddc2004-06-03 03:38:44 +00001156
1157#ifdef yyoverflow
vlm6a02a8a2004-09-08 00:28:11 +00001158 /* Each stack pointer address is followed by the size of
1159 the data in use in that stack, in bytes. */
1160#ifdef YYLSP_NEEDED
1161 /* This used to be a conditional around just the two extra args,
1162 but that might be undefined if yyoverflow is a macro. */
1163 yyoverflow("parser stack overflow",
1164 &yyss1, size * sizeof (*yyssp),
1165 &yyvs1, size * sizeof (*yyvsp),
1166 &yyls1, size * sizeof (*yylsp),
1167 &yystacksize);
1168#else
1169 yyoverflow("parser stack overflow",
1170 &yyss1, size * sizeof (*yyssp),
1171 &yyvs1, size * sizeof (*yyvsp),
1172 &yystacksize);
1173#endif
vlmfa67ddc2004-06-03 03:38:44 +00001174
vlm6a02a8a2004-09-08 00:28:11 +00001175 yyss = yyss1; yyvs = yyvs1;
1176#ifdef YYLSP_NEEDED
1177 yyls = yyls1;
1178#endif
vlmfa67ddc2004-06-03 03:38:44 +00001179#else /* no yyoverflow */
1180 /* Extend the stack our own way. */
1181 if (yystacksize >= YYMAXDEPTH)
vlm6a02a8a2004-09-08 00:28:11 +00001182 {
1183 yyerror("parser stack overflow");
1184 if (yyfree_stacks)
1185 {
1186 free (yyss);
1187 free (yyvs);
1188#ifdef YYLSP_NEEDED
1189 free (yyls);
1190#endif
1191 }
1192 return 2;
1193 }
vlmfa67ddc2004-06-03 03:38:44 +00001194 yystacksize *= 2;
1195 if (yystacksize > YYMAXDEPTH)
1196 yystacksize = YYMAXDEPTH;
vlm6a02a8a2004-09-08 00:28:11 +00001197#ifndef YYSTACK_USE_ALLOCA
1198 yyfree_stacks = 1;
1199#endif
1200 yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
1201 __yy_memcpy ((char *)yyss, (char *)yyss1,
1202 size * (unsigned int) sizeof (*yyssp));
1203 yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
1204 __yy_memcpy ((char *)yyvs, (char *)yyvs1,
1205 size * (unsigned int) sizeof (*yyvsp));
1206#ifdef YYLSP_NEEDED
1207 yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
1208 __yy_memcpy ((char *)yyls, (char *)yyls1,
1209 size * (unsigned int) sizeof (*yylsp));
1210#endif
vlmfa67ddc2004-06-03 03:38:44 +00001211#endif /* no yyoverflow */
1212
vlm6a02a8a2004-09-08 00:28:11 +00001213 yyssp = yyss + size - 1;
1214 yyvsp = yyvs + size - 1;
1215#ifdef YYLSP_NEEDED
1216 yylsp = yyls + size - 1;
1217#endif
vlmfa67ddc2004-06-03 03:38:44 +00001218
vlm6a02a8a2004-09-08 00:28:11 +00001219#if YYDEBUG != 0
1220 if (yydebug)
1221 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1222#endif
vlmfa67ddc2004-06-03 03:38:44 +00001223
1224 if (yyssp >= yyss + yystacksize - 1)
1225 YYABORT;
1226 }
1227
vlm6a02a8a2004-09-08 00:28:11 +00001228#if YYDEBUG != 0
1229 if (yydebug)
1230 fprintf(stderr, "Entering state %d\n", yystate);
1231#endif
vlmfa67ddc2004-06-03 03:38:44 +00001232
1233 goto yybackup;
vlm6a02a8a2004-09-08 00:28:11 +00001234 yybackup:
vlmfa67ddc2004-06-03 03:38:44 +00001235
1236/* Do appropriate processing given the current state. */
1237/* Read a lookahead token if we need one and don't already have one. */
1238/* yyresume: */
1239
1240 /* First try to decide what to do without reference to lookahead token. */
1241
1242 yyn = yypact[yystate];
vlm6a02a8a2004-09-08 00:28:11 +00001243 if (yyn == YYFLAG)
vlmfa67ddc2004-06-03 03:38:44 +00001244 goto yydefault;
1245
1246 /* Not known => get a lookahead token if don't already have one. */
1247
1248 /* yychar is either YYEMPTY or YYEOF
1249 or a valid token in external form. */
1250
1251 if (yychar == YYEMPTY)
1252 {
vlm6a02a8a2004-09-08 00:28:11 +00001253#if YYDEBUG != 0
1254 if (yydebug)
1255 fprintf(stderr, "Reading a token: ");
1256#endif
vlmfa67ddc2004-06-03 03:38:44 +00001257 yychar = YYLEX;
1258 }
1259
vlm6a02a8a2004-09-08 00:28:11 +00001260 /* Convert token to internal form (in yychar1) for indexing tables with */
vlmfa67ddc2004-06-03 03:38:44 +00001261
vlm6a02a8a2004-09-08 00:28:11 +00001262 if (yychar <= 0) /* This means end of input. */
vlmfa67ddc2004-06-03 03:38:44 +00001263 {
1264 yychar1 = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001265 yychar = YYEOF; /* Don't call YYLEX any more */
vlmfa67ddc2004-06-03 03:38:44 +00001266
vlm6a02a8a2004-09-08 00:28:11 +00001267#if YYDEBUG != 0
1268 if (yydebug)
1269 fprintf(stderr, "Now at end of input.\n");
1270#endif
vlmfa67ddc2004-06-03 03:38:44 +00001271 }
1272 else
1273 {
vlm6a02a8a2004-09-08 00:28:11 +00001274 yychar1 = YYTRANSLATE(yychar);
vlmfa67ddc2004-06-03 03:38:44 +00001275
vlm6a02a8a2004-09-08 00:28:11 +00001276#if YYDEBUG != 0
1277 if (yydebug)
1278 {
1279 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
1280 /* Give the individual parser a way to print the precise meaning
1281 of a token, for further debugging info. */
1282#ifdef YYPRINT
1283 YYPRINT (stderr, yychar, yylval);
1284#endif
1285 fprintf (stderr, ")\n");
1286 }
1287#endif
vlmfa67ddc2004-06-03 03:38:44 +00001288 }
1289
1290 yyn += yychar1;
vlm6a02a8a2004-09-08 00:28:11 +00001291 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
vlmfa67ddc2004-06-03 03:38:44 +00001292 goto yydefault;
vlm6a02a8a2004-09-08 00:28:11 +00001293
vlmfa67ddc2004-06-03 03:38:44 +00001294 yyn = yytable[yyn];
vlm6a02a8a2004-09-08 00:28:11 +00001295
1296 /* yyn is what to do for this token type in this state.
1297 Negative => reduce, -yyn is rule number.
1298 Positive => shift, yyn is new state.
1299 New state is final state => don't bother to shift,
1300 just return success.
1301 0, or most negative number => error. */
1302
1303 if (yyn < 0)
vlmfa67ddc2004-06-03 03:38:44 +00001304 {
vlm6a02a8a2004-09-08 00:28:11 +00001305 if (yyn == YYFLAG)
vlmfa67ddc2004-06-03 03:38:44 +00001306 goto yyerrlab;
1307 yyn = -yyn;
1308 goto yyreduce;
1309 }
vlm6a02a8a2004-09-08 00:28:11 +00001310 else if (yyn == 0)
1311 goto yyerrlab;
vlmfa67ddc2004-06-03 03:38:44 +00001312
1313 if (yyn == YYFINAL)
1314 YYACCEPT;
1315
1316 /* Shift the lookahead token. */
vlm6a02a8a2004-09-08 00:28:11 +00001317
1318#if YYDEBUG != 0
1319 if (yydebug)
1320 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
1321#endif
vlmfa67ddc2004-06-03 03:38:44 +00001322
1323 /* Discard the token being shifted unless it is eof. */
1324 if (yychar != YYEOF)
1325 yychar = YYEMPTY;
1326
1327 *++yyvsp = yylval;
vlm6a02a8a2004-09-08 00:28:11 +00001328#ifdef YYLSP_NEEDED
1329 *++yylsp = yylloc;
1330#endif
vlmfa67ddc2004-06-03 03:38:44 +00001331
vlm6a02a8a2004-09-08 00:28:11 +00001332 /* count tokens shifted since error; after three, turn off error status. */
1333 if (yyerrstatus) yyerrstatus--;
vlmfa67ddc2004-06-03 03:38:44 +00001334
1335 yystate = yyn;
1336 goto yynewstate;
1337
vlm6a02a8a2004-09-08 00:28:11 +00001338/* Do the default action for the current state. */
vlm80103492004-09-07 10:39:09 +00001339yydefault:
vlm6a02a8a2004-09-08 00:28:11 +00001340
vlmfa67ddc2004-06-03 03:38:44 +00001341 yyn = yydefact[yystate];
1342 if (yyn == 0)
1343 goto yyerrlab;
1344
vlm6a02a8a2004-09-08 00:28:11 +00001345/* Do a reduction. yyn is the number of a rule to reduce with. */
vlmfa67ddc2004-06-03 03:38:44 +00001346yyreduce:
1347 yylen = yyr2[yyn];
vlm6a02a8a2004-09-08 00:28:11 +00001348 if (yylen > 0)
1349 yyval = yyvsp[1-yylen]; /* implement default value of the action */
vlmfa67ddc2004-06-03 03:38:44 +00001350
vlm6a02a8a2004-09-08 00:28:11 +00001351#if YYDEBUG != 0
vlmfa67ddc2004-06-03 03:38:44 +00001352 if (yydebug)
1353 {
vlm6a02a8a2004-09-08 00:28:11 +00001354 int i;
vlmfa67ddc2004-06-03 03:38:44 +00001355
vlm6a02a8a2004-09-08 00:28:11 +00001356 fprintf (stderr, "Reducing via rule %d (line %d), ",
1357 yyn, yyrline[yyn]);
vlmfa67ddc2004-06-03 03:38:44 +00001358
1359 /* Print the symbols being reduced, and their result. */
vlm6a02a8a2004-09-08 00:28:11 +00001360 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
1361 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
1362 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
vlmfa67ddc2004-06-03 03:38:44 +00001363 }
1364#endif
vlm80103492004-09-07 10:39:09 +00001365
vlm6a02a8a2004-09-08 00:28:11 +00001366
1367 switch (yyn) {
1368
1369case 1:
vlm2c8c44d2005-03-24 16:22:35 +00001370#line 306 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001371{
1372 *(void **)param = yyvsp[0].a_grammar;
1373 ;
1374 break;}
1375case 2:
vlm2c8c44d2005-03-24 16:22:35 +00001376#line 312 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001377{
vlmfa67ddc2004-06-03 03:38:44 +00001378 yyval.a_grammar = asn1p_new();
1379 checkmem(yyval.a_grammar);
1380 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm6a02a8a2004-09-08 00:28:11 +00001381 ;
1382 break;}
1383case 3:
vlm2c8c44d2005-03-24 16:22:35 +00001384#line 317 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001385{
vlmfa67ddc2004-06-03 03:38:44 +00001386 yyval.a_grammar = yyvsp[-1].a_grammar;
1387 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm6a02a8a2004-09-08 00:28:11 +00001388 ;
1389 break;}
1390case 4:
vlm2c8c44d2005-03-24 16:22:35 +00001391#line 338 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001392{
vlmfa67ddc2004-06-03 03:38:44 +00001393
1394 if(yyvsp[-1].a_module) {
1395 yyval.a_module = yyvsp[-1].a_module;
1396 } else {
1397 /* There's a chance that a module is just plain empty */
1398 yyval.a_module = asn1p_module_new();
1399 }
1400 checkmem(yyval.a_module);
1401
1402 yyval.a_module->Identifier = yyvsp[-7].tv_str;
1403 yyval.a_module->module_oid = yyvsp[-6].a_oid;
1404 yyval.a_module->module_flags = yyvsp[-4].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001405 ;
1406 break;}
1407case 5:
vlm2c8c44d2005-03-24 16:22:35 +00001408#line 359 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001409{ yyval.a_oid = 0; ;
1410 break;}
1411case 6:
vlm2c8c44d2005-03-24 16:22:35 +00001412#line 360 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001413{ yyval.a_oid = yyvsp[0].a_oid; ;
1414 break;}
1415case 7:
vlm2c8c44d2005-03-24 16:22:35 +00001416#line 364 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001417{
vlmfa67ddc2004-06-03 03:38:44 +00001418 yyval.a_oid = yyvsp[-1].a_oid;
vlm6a02a8a2004-09-08 00:28:11 +00001419 ;
1420 break;}
1421case 8:
vlm2c8c44d2005-03-24 16:22:35 +00001422#line 367 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001423{
vlmfa67ddc2004-06-03 03:38:44 +00001424 yyval.a_oid = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001425 ;
1426 break;}
1427case 9:
vlm2c8c44d2005-03-24 16:22:35 +00001428#line 373 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001429{
vlmfa67ddc2004-06-03 03:38:44 +00001430 yyval.a_oid = asn1p_oid_new();
1431 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1432 if(yyvsp[0].a_oid_arc.name)
1433 free(yyvsp[0].a_oid_arc.name);
vlm6a02a8a2004-09-08 00:28:11 +00001434 ;
1435 break;}
1436case 10:
vlm2c8c44d2005-03-24 16:22:35 +00001437#line 379 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001438{
vlmfa67ddc2004-06-03 03:38:44 +00001439 yyval.a_oid = yyvsp[-1].a_oid;
1440 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1441 if(yyvsp[0].a_oid_arc.name)
1442 free(yyvsp[0].a_oid_arc.name);
vlm6a02a8a2004-09-08 00:28:11 +00001443 ;
1444 break;}
1445case 11:
vlm2c8c44d2005-03-24 16:22:35 +00001446#line 388 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001447{ /* iso */
vlmfa67ddc2004-06-03 03:38:44 +00001448 yyval.a_oid_arc.name = yyvsp[0].tv_str;
1449 yyval.a_oid_arc.number = -1;
vlm6a02a8a2004-09-08 00:28:11 +00001450 ;
1451 break;}
1452case 12:
vlm2c8c44d2005-03-24 16:22:35 +00001453#line 392 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001454{ /* iso(1) */
vlmfa67ddc2004-06-03 03:38:44 +00001455 yyval.a_oid_arc.name = yyvsp[-3].tv_str;
1456 yyval.a_oid_arc.number = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00001457 ;
1458 break;}
1459case 13:
vlm2c8c44d2005-03-24 16:22:35 +00001460#line 396 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001461{ /* 1 */
vlmfa67ddc2004-06-03 03:38:44 +00001462 yyval.a_oid_arc.name = 0;
1463 yyval.a_oid_arc.number = yyvsp[0].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00001464 ;
1465 break;}
1466case 14:
vlm2c8c44d2005-03-24 16:22:35 +00001467#line 406 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001468{ yyval.a_module_flags = MSF_NOFLAGS; ;
1469 break;}
1470case 15:
vlm2c8c44d2005-03-24 16:22:35 +00001471#line 407 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001472{
vlmfa67ddc2004-06-03 03:38:44 +00001473 yyval.a_module_flags = yyvsp[0].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001474 ;
1475 break;}
1476case 16:
vlm2c8c44d2005-03-24 16:22:35 +00001477#line 416 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001478{
vlmfa67ddc2004-06-03 03:38:44 +00001479 yyval.a_module_flags = yyvsp[0].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001480 ;
1481 break;}
1482case 17:
vlm2c8c44d2005-03-24 16:22:35 +00001483#line 419 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001484{
vlmfa67ddc2004-06-03 03:38:44 +00001485 yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001486 ;
1487 break;}
1488case 18:
vlm2c8c44d2005-03-24 16:22:35 +00001489#line 428 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001490{
vlmfa67ddc2004-06-03 03:38:44 +00001491 yyval.a_module_flags = MSF_EXPLICIT_TAGS;
vlm6a02a8a2004-09-08 00:28:11 +00001492 ;
1493 break;}
1494case 19:
vlm2c8c44d2005-03-24 16:22:35 +00001495#line 431 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001496{
vlmfa67ddc2004-06-03 03:38:44 +00001497 yyval.a_module_flags = MSF_IMPLICIT_TAGS;
vlm6a02a8a2004-09-08 00:28:11 +00001498 ;
1499 break;}
1500case 20:
vlm2c8c44d2005-03-24 16:22:35 +00001501#line 434 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001502{
vlmfa67ddc2004-06-03 03:38:44 +00001503 yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
vlm6a02a8a2004-09-08 00:28:11 +00001504 ;
1505 break;}
1506case 21:
vlm2c8c44d2005-03-24 16:22:35 +00001507#line 437 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001508{
vlmfa67ddc2004-06-03 03:38:44 +00001509 yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
vlm6a02a8a2004-09-08 00:28:11 +00001510 ;
1511 break;}
1512case 22:
vlm2c8c44d2005-03-24 16:22:35 +00001513#line 441 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001514{
vlm9283dbe2004-08-18 04:59:12 +00001515 /* X.680Amd1 specifies TAG and XER */
1516 if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
1517 yyval.a_module_flags = MSF_TAG_INSTRUCTIONS;
1518 } else if(strcmp(yyvsp[-1].tv_str, "XER") == 0) {
1519 yyval.a_module_flags = MSF_XER_INSTRUCTIONS;
1520 } else {
1521 fprintf(stderr,
1522 "WARNING: %s INSTRUCTIONS at line %d: "
1523 "Unrecognized encoding reference\n",
1524 yyvsp[-1].tv_str, yylineno);
1525 yyval.a_module_flags = MSF_unk_INSTRUCTIONS;
1526 }
1527 free(yyvsp[-1].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00001528 ;
1529 break;}
1530case 23:
vlm2c8c44d2005-03-24 16:22:35 +00001531#line 462 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001532{ yyval.a_module = 0; ;
1533 break;}
1534case 24:
vlm2c8c44d2005-03-24 16:22:35 +00001535#line 463 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001536{
vlmfa67ddc2004-06-03 03:38:44 +00001537 yyval.a_module = yyvsp[0].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001538 ;
1539 break;}
1540case 25:
vlm2c8c44d2005-03-24 16:22:35 +00001541#line 472 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001542{
vlm9283dbe2004-08-18 04:59:12 +00001543 yyval.a_module = yyvsp[0].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001544 ;
1545 break;}
1546case 26:
vlm2c8c44d2005-03-24 16:22:35 +00001547#line 475 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001548{
vlmfa67ddc2004-06-03 03:38:44 +00001549 yyval.a_module = yyvsp[-1].a_module;
1550
vlm9283dbe2004-08-18 04:59:12 +00001551 /* Behave well when one of them is skipped. */
1552 if(!(yyvsp[-1].a_module)) {
1553 if(yyvsp[0].a_module) yyval.a_module = yyvsp[0].a_module;
1554 break;
1555 }
1556
vlmfa67ddc2004-06-03 03:38:44 +00001557#ifdef MY_IMPORT
1558#error MY_IMPORT DEFINED ELSEWHERE!
1559#endif
1560#define MY_IMPORT(foo,field) do { \
vlm97ed7152004-08-13 12:31:09 +00001561 while(TQ_FIRST(&(yyvsp[0].a_module->foo))) { \
vlmfa67ddc2004-06-03 03:38:44 +00001562 TQ_ADD(&(yyval.a_module->foo), \
1563 TQ_REMOVE(&(yyvsp[0].a_module->foo), field), \
1564 field); \
vlm97ed7152004-08-13 12:31:09 +00001565 } \
1566 assert(TQ_FIRST(&(yyvsp[0].a_module->foo)) == 0); \
1567 } while(0)
vlmfa67ddc2004-06-03 03:38:44 +00001568
1569 MY_IMPORT(imports, xp_next);
1570 MY_IMPORT(exports, xp_next);
1571 MY_IMPORT(members, next);
1572#undef MY_IMPORT
1573
vlm6a02a8a2004-09-08 00:28:11 +00001574 ;
1575 break;}
1576case 27:
vlm2c8c44d2005-03-24 16:22:35 +00001577#line 508 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001578{
vlmfa67ddc2004-06-03 03:38:44 +00001579 yyval.a_module = yyvsp[0].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001580 ;
1581 break;}
1582case 28:
vlm2c8c44d2005-03-24 16:22:35 +00001583#line 511 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001584{
vlmfa67ddc2004-06-03 03:38:44 +00001585 yyval.a_module = asn1p_module_new();
1586 checkmem(yyval.a_module);
1587 if(yyvsp[0].a_xports) {
1588 TQ_ADD(&(yyval.a_module->exports), yyvsp[0].a_xports, xp_next);
1589 } else {
1590 /* "EXPORTS ALL;" ? */
1591 }
vlm6a02a8a2004-09-08 00:28:11 +00001592 ;
1593 break;}
1594case 29:
vlm2c8c44d2005-03-24 16:22:35 +00001595#line 520 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001596{
vlmfa67ddc2004-06-03 03:38:44 +00001597 yyval.a_module = asn1p_module_new();
1598 checkmem(yyval.a_module);
1599 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1600 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1601 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001602 ;
1603 break;}
1604case 30:
vlm2c8c44d2005-03-24 16:22:35 +00001605#line 527 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001606{
vlm9283dbe2004-08-18 04:59:12 +00001607 yyval.a_module = asn1p_module_new();
1608 checkmem(yyval.a_module);
1609 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1610 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1611 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001612 ;
1613 break;}
1614case 31:
vlm2c8c44d2005-03-24 16:22:35 +00001615#line 540 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001616{
vlm9283dbe2004-08-18 04:59:12 +00001617 yyval.a_module = asn1p_module_new();
1618 checkmem(yyval.a_module);
1619 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1620 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1621 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001622 ;
1623 break;}
1624case 32:
vlm2c8c44d2005-03-24 16:22:35 +00001625#line 548 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001626{ asn1p_lexer_hack_push_encoding_control(); ;
1627 break;}
1628case 33:
vlm2c8c44d2005-03-24 16:22:35 +00001629#line 549 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001630{
vlm9283dbe2004-08-18 04:59:12 +00001631 fprintf(stderr,
1632 "WARNING: ENCODING-CONTROL %s "
1633 "specification at line %d ignored\n",
1634 yyvsp[-1].tv_str, yylineno);
1635 free(yyvsp[-1].tv_str);
1636 yyval.a_module = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001637 ;
1638 break;}
1639case 34:
vlm2c8c44d2005-03-24 16:22:35 +00001640#line 561 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001641{
vlmfa67ddc2004-06-03 03:38:44 +00001642 return yyerror(
1643 "Attempt to redefine a standard basic type, "
1644 "use -ftypesXY to switch back "
1645 "to older version of ASN.1 standard");
vlm6a02a8a2004-09-08 00:28:11 +00001646 ;
1647 break;}
1648case 35:
vlm2c8c44d2005-03-24 16:22:35 +00001649#line 575 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001650{
vlmfa67ddc2004-06-03 03:38:44 +00001651 yyval.a_module = yyvsp[-1].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001652 ;
1653 break;}
1654case 36:
vlm2c8c44d2005-03-24 16:22:35 +00001655#line 581 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001656{
vlmfa67ddc2004-06-03 03:38:44 +00001657 return yyerror("Empty IMPORTS list");
vlm6a02a8a2004-09-08 00:28:11 +00001658 ;
1659 break;}
1660case 37:
vlm2c8c44d2005-03-24 16:22:35 +00001661#line 587 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001662{
vlmfa67ddc2004-06-03 03:38:44 +00001663 yyval.a_module = asn1p_module_new();
1664 checkmem(yyval.a_module);
1665 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm6a02a8a2004-09-08 00:28:11 +00001666 ;
1667 break;}
1668case 38:
vlm2c8c44d2005-03-24 16:22:35 +00001669#line 592 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001670{
vlmfa67ddc2004-06-03 03:38:44 +00001671 yyval.a_module = yyvsp[-1].a_module;
1672 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm6a02a8a2004-09-08 00:28:11 +00001673 ;
1674 break;}
1675case 39:
vlm2c8c44d2005-03-24 16:22:35 +00001676#line 599 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001677{
vlmfa67ddc2004-06-03 03:38:44 +00001678 yyval.a_xports = yyvsp[-3].a_xports;
1679 yyval.a_xports->from = yyvsp[-1].tv_str;
1680 yyval.a_xports->from_oid = yyvsp[0].a_oid;
1681 checkmem(yyval.a_xports);
vlm6a02a8a2004-09-08 00:28:11 +00001682 ;
1683 break;}
1684case 40:
vlm2c8c44d2005-03-24 16:22:35 +00001685#line 608 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001686{
vlmfa67ddc2004-06-03 03:38:44 +00001687 yyval.a_xports = asn1p_xports_new();
1688 checkmem(yyval.a_xports);
1689 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001690 ;
1691 break;}
1692case 41:
vlm2c8c44d2005-03-24 16:22:35 +00001693#line 613 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001694{
vlmfa67ddc2004-06-03 03:38:44 +00001695 yyval.a_xports = yyvsp[-2].a_xports;
1696 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001697 ;
1698 break;}
1699case 42:
vlm2c8c44d2005-03-24 16:22:35 +00001700#line 620 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001701{
vlmfa67ddc2004-06-03 03:38:44 +00001702 yyval.a_expr = asn1p_expr_new(yylineno);
1703 checkmem(yyval.a_expr);
1704 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1705 yyval.a_expr->expr_type = A1TC_REFERENCE;
vlm6a02a8a2004-09-08 00:28:11 +00001706 ;
1707 break;}
1708case 43:
vlm2c8c44d2005-03-24 16:22:35 +00001709#line 626 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001710{ /* Completely equivalent to above */
1711 yyval.a_expr = asn1p_expr_new(yylineno);
1712 checkmem(yyval.a_expr);
1713 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
1714 yyval.a_expr->expr_type = A1TC_REFERENCE;
1715 ;
1716 break;}
1717case 44:
vlm2c8c44d2005-03-24 16:22:35 +00001718#line 632 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001719{
vlmfa67ddc2004-06-03 03:38:44 +00001720 yyval.a_expr = asn1p_expr_new(yylineno);
1721 checkmem(yyval.a_expr);
1722 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1723 yyval.a_expr->expr_type = A1TC_REFERENCE;
vlm6a02a8a2004-09-08 00:28:11 +00001724 ;
1725 break;}
vlm0aa86902004-10-12 23:26:53 +00001726case 45:
vlm2c8c44d2005-03-24 16:22:35 +00001727#line 641 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001728{
vlmfa67ddc2004-06-03 03:38:44 +00001729 yyval.a_xports = yyvsp[-1].a_xports;
vlm6a02a8a2004-09-08 00:28:11 +00001730 ;
1731 break;}
vlm0aa86902004-10-12 23:26:53 +00001732case 46:
vlm2c8c44d2005-03-24 16:22:35 +00001733#line 644 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001734{
vlmfa67ddc2004-06-03 03:38:44 +00001735 yyval.a_xports = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001736 ;
1737 break;}
vlm0aa86902004-10-12 23:26:53 +00001738case 47:
vlm2c8c44d2005-03-24 16:22:35 +00001739#line 647 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001740{
vlmfa67ddc2004-06-03 03:38:44 +00001741 /* Empty EXPORTS clause effectively prohibits export. */
1742 yyval.a_xports = asn1p_xports_new();
1743 checkmem(yyval.a_xports);
vlm6a02a8a2004-09-08 00:28:11 +00001744 ;
1745 break;}
vlm0aa86902004-10-12 23:26:53 +00001746case 48:
vlm2c8c44d2005-03-24 16:22:35 +00001747#line 655 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001748{
vlmfa67ddc2004-06-03 03:38:44 +00001749 yyval.a_xports = asn1p_xports_new();
1750 assert(yyval.a_xports);
1751 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001752 ;
1753 break;}
vlm0aa86902004-10-12 23:26:53 +00001754case 49:
vlm2c8c44d2005-03-24 16:22:35 +00001755#line 660 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001756{
vlmfa67ddc2004-06-03 03:38:44 +00001757 yyval.a_xports = yyvsp[-2].a_xports;
1758 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001759 ;
1760 break;}
vlm6a02a8a2004-09-08 00:28:11 +00001761case 50:
vlm2c8c44d2005-03-24 16:22:35 +00001762#line 667 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001763{
vlmfa67ddc2004-06-03 03:38:44 +00001764 yyval.a_expr = asn1p_expr_new(yylineno);
1765 checkmem(yyval.a_expr);
1766 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1767 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
vlm6a02a8a2004-09-08 00:28:11 +00001768 ;
1769 break;}
1770case 51:
vlm2c8c44d2005-03-24 16:22:35 +00001771#line 673 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001772{
1773 yyval.a_expr = asn1p_expr_new(yylineno);
1774 checkmem(yyval.a_expr);
1775 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
1776 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
1777 ;
1778 break;}
1779case 52:
vlm2c8c44d2005-03-24 16:22:35 +00001780#line 679 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001781{
1782 yyval.a_expr = asn1p_expr_new(yylineno);
1783 checkmem(yyval.a_expr);
1784 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1785 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
1786 ;
1787 break;}
1788case 53:
vlm2c8c44d2005-03-24 16:22:35 +00001789#line 689 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001790{
vlmfa67ddc2004-06-03 03:38:44 +00001791 yyval.a_expr = yyvsp[-4].a_expr;
1792 assert(yyval.a_expr->Identifier == 0);
1793 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
1794 yyval.a_expr->meta_type = AMT_VALUESET;
1795 // take care of optValueSetBody
vlm6a02a8a2004-09-08 00:28:11 +00001796 ;
1797 break;}
vlm0aa86902004-10-12 23:26:53 +00001798case 54:
vlm2c8c44d2005-03-24 16:22:35 +00001799#line 699 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001800{
vlmfa67ddc2004-06-03 03:38:44 +00001801 yyval.a_expr = asn1p_expr_new(yylineno);
1802 checkmem(yyval.a_expr);
1803 yyval.a_expr->reference = yyvsp[0].a_ref;
1804 yyval.a_expr->expr_type = A1TC_REFERENCE;
1805 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm6a02a8a2004-09-08 00:28:11 +00001806 ;
1807 break;}
vlm0aa86902004-10-12 23:26:53 +00001808case 55:
vlm2c8c44d2005-03-24 16:22:35 +00001809#line 706 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001810{
vlmfa67ddc2004-06-03 03:38:44 +00001811 yyval.a_expr = asn1p_expr_new(yylineno);
1812 checkmem(yyval.a_expr);
1813 yyval.a_expr->expr_type = yyvsp[0].a_type;
1814 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00001815 ;
1816 break;}
vlm6a02a8a2004-09-08 00:28:11 +00001817case 56:
vlm2c8c44d2005-03-24 16:22:35 +00001818#line 715 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001819{ ;
vlm6a02a8a2004-09-08 00:28:11 +00001820 break;}
1821case 57:
vlm2c8c44d2005-03-24 16:22:35 +00001822#line 716 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001823{
1824 ;
1825 break;}
1826case 58:
vlme1e6ed82005-03-24 14:26:38 +00001827#line 727 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001828{
1829 ;
1830 break;}
vlm2c8c44d2005-03-24 16:22:35 +00001831case 59:
1832#line 729 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001833{
1834 ;
1835 break;}
vlm2c8c44d2005-03-24 16:22:35 +00001836case 60:
vlme1e6ed82005-03-24 14:26:38 +00001837#line 734 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001838{
1839 ;
1840 break;}
vlm2c8c44d2005-03-24 16:22:35 +00001841case 61:
1842#line 736 "asn1p_y.y"
1843{
1844 ;
1845 break;}
vlm0aa86902004-10-12 23:26:53 +00001846case 62:
vlm2c8c44d2005-03-24 16:22:35 +00001847#line 752 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001848{
vlmfa67ddc2004-06-03 03:38:44 +00001849 yyval.a_expr = asn1p_expr_new(yylineno);
1850 checkmem(yyval.a_expr);
1851 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
1852 yyval.a_expr->tag = yyvsp[-1].a_tag;
1853 yyval.a_expr->expr_type = A1TC_TYPEID;
1854 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00001855 ;
1856 break;}
vlm0aa86902004-10-12 23:26:53 +00001857case 63:
vlm2c8c44d2005-03-24 16:22:35 +00001858#line 760 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001859{
vlmfa67ddc2004-06-03 03:38:44 +00001860 yyval.a_expr = yyvsp[0].a_expr;
vlmfce48a42004-09-14 02:36:39 +00001861 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
vlmfa67ddc2004-06-03 03:38:44 +00001862 assert(yyval.a_expr->expr_type);
1863 assert(yyval.a_expr->meta_type);
vlm6a02a8a2004-09-08 00:28:11 +00001864 ;
1865 break;}
vlm0aa86902004-10-12 23:26:53 +00001866case 64:
vlm2c8c44d2005-03-24 16:22:35 +00001867#line 766 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001868{
vlmfa67ddc2004-06-03 03:38:44 +00001869 yyval.a_expr = yyvsp[0].a_expr;
1870 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
1871 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
1872 assert(yyval.a_expr->meta_type == AMT_OBJECT);
vlm6a02a8a2004-09-08 00:28:11 +00001873 ;
1874 break;}
vlm0aa86902004-10-12 23:26:53 +00001875case 65:
vlm2c8c44d2005-03-24 16:22:35 +00001876#line 782 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001877{
vlmfa67ddc2004-06-03 03:38:44 +00001878 yyval.a_expr = yyvsp[0].a_expr;
1879 assert(yyval.a_expr->Identifier == 0);
1880 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
1881 yyval.a_expr->params = yyvsp[-3].a_plist;
1882 yyval.a_expr->meta_type = AMT_PARAMTYPE;
vlm6a02a8a2004-09-08 00:28:11 +00001883 ;
1884 break;}
vlm0aa86902004-10-12 23:26:53 +00001885case 66:
vlm2c8c44d2005-03-24 16:22:35 +00001886#line 792 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001887{
vlmfa67ddc2004-06-03 03:38:44 +00001888 int ret;
1889 yyval.a_plist = asn1p_paramlist_new(yylineno);
1890 checkmem(yyval.a_plist);
1891 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
1892 checkmem(ret == 0);
1893 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
1894 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm6a02a8a2004-09-08 00:28:11 +00001895 ;
1896 break;}
vlm0aa86902004-10-12 23:26:53 +00001897case 67:
vlm2c8c44d2005-03-24 16:22:35 +00001898#line 801 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001899{
vlmfa67ddc2004-06-03 03:38:44 +00001900 int ret;
1901 yyval.a_plist = yyvsp[-2].a_plist;
1902 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
1903 checkmem(ret == 0);
1904 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
1905 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm6a02a8a2004-09-08 00:28:11 +00001906 ;
1907 break;}
vlm0aa86902004-10-12 23:26:53 +00001908case 68:
vlm2c8c44d2005-03-24 16:22:35 +00001909#line 812 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001910{
vlmfa67ddc2004-06-03 03:38:44 +00001911 yyval.a_parg.governor = NULL;
1912 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00001913 ;
1914 break;}
vlm0aa86902004-10-12 23:26:53 +00001915case 69:
vlm2c8c44d2005-03-24 16:22:35 +00001916#line 816 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001917{
vlmfa67ddc2004-06-03 03:38:44 +00001918 int ret;
1919 yyval.a_parg.governor = asn1p_ref_new(yylineno);
1920 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
1921 checkmem(ret == 0);
1922 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00001923 ;
1924 break;}
vlm0aa86902004-10-12 23:26:53 +00001925case 70:
vlm2c8c44d2005-03-24 16:22:35 +00001926#line 823 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001927{
vlmfa67ddc2004-06-03 03:38:44 +00001928 int ret;
1929 yyval.a_parg.governor = asn1p_ref_new(yylineno);
vlm4053ca52005-02-18 16:34:21 +00001930 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
1931 checkmem(ret == 0);
1932 yyval.a_parg.argument = yyvsp[0].tv_str;
1933 ;
1934 break;}
1935case 71:
vlm2c8c44d2005-03-24 16:22:35 +00001936#line 830 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00001937{
1938 int ret;
1939 yyval.a_parg.governor = asn1p_ref_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00001940 ret = asn1p_ref_add_component(yyval.a_parg.governor,
1941 ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
1942 checkmem(ret == 0);
1943 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00001944 ;
1945 break;}
vlm4053ca52005-02-18 16:34:21 +00001946case 72:
vlm2c8c44d2005-03-24 16:22:35 +00001947#line 841 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001948{
vlmfa67ddc2004-06-03 03:38:44 +00001949 yyval.a_expr = asn1p_expr_new(yylineno);
1950 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00001951 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1952 ;
1953 break;}
vlm4053ca52005-02-18 16:34:21 +00001954case 73:
vlm2c8c44d2005-03-24 16:22:35 +00001955#line 846 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001956{
vlmfa67ddc2004-06-03 03:38:44 +00001957 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00001958 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1959 ;
1960 break;}
vlm4053ca52005-02-18 16:34:21 +00001961case 74:
vlm2c8c44d2005-03-24 16:22:35 +00001962#line 853 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001963{
vlmfa67ddc2004-06-03 03:38:44 +00001964 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00001965 ;
1966 break;}
vlm4053ca52005-02-18 16:34:21 +00001967case 75:
vlm2c8c44d2005-03-24 16:22:35 +00001968#line 856 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001969{
vlmfa67ddc2004-06-03 03:38:44 +00001970 yyval.a_expr = asn1p_expr_new(yylineno);
1971 checkmem(yyval.a_expr);
1972 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1973 yyval.a_expr->expr_type = A1TC_REFERENCE;
1974 yyval.a_expr->meta_type = AMT_VALUE;
vlm6a02a8a2004-09-08 00:28:11 +00001975 ;
1976 break;}
vlm4053ca52005-02-18 16:34:21 +00001977case 76:
vlm2c8c44d2005-03-24 16:22:35 +00001978#line 880 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001979{ yyval.a_expr = asn1p_expr_new(yylineno); ;
1980 break;}
vlm4053ca52005-02-18 16:34:21 +00001981case 77:
vlm2c8c44d2005-03-24 16:22:35 +00001982#line 881 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001983{ yyval.a_expr = yyvsp[0].a_expr; ;
1984 break;}
vlm4053ca52005-02-18 16:34:21 +00001985case 78:
vlm2c8c44d2005-03-24 16:22:35 +00001986#line 884 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001987{
vlmfa67ddc2004-06-03 03:38:44 +00001988 yyval.a_expr = asn1p_expr_new(yylineno);
1989 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00001990 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1991 ;
1992 break;}
vlm4053ca52005-02-18 16:34:21 +00001993case 79:
vlm2c8c44d2005-03-24 16:22:35 +00001994#line 889 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001995{
vlmfa67ddc2004-06-03 03:38:44 +00001996 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00001997 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1998 ;
1999 break;}
vlm4053ca52005-02-18 16:34:21 +00002000case 80:
vlm2c8c44d2005-03-24 16:22:35 +00002001#line 896 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002002{
vlmec8f6812004-08-22 03:19:54 +00002003 yyval.a_expr = yyvsp[-1].a_expr;
2004 assert(yyval.a_expr->Identifier == 0);
vlmfce48a42004-09-14 02:36:39 +00002005 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
vlmec8f6812004-08-22 03:19:54 +00002006 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm6a02a8a2004-09-08 00:28:11 +00002007 ;
2008 break;}
vlm4053ca52005-02-18 16:34:21 +00002009case 81:
vlm2c8c44d2005-03-24 16:22:35 +00002010#line 902 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002011{
vlmec8f6812004-08-22 03:19:54 +00002012 yyval.a_expr = asn1p_expr_new(yylineno);
2013 checkmem(yyval.a_expr);
2014 yyval.a_expr->meta_type = yyvsp[0].a_expr->meta_type;
2015 yyval.a_expr->expr_type = A1TC_COMPONENTS_OF;
vlm6a02a8a2004-09-08 00:28:11 +00002016 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2017 ;
2018 break;}
vlm4053ca52005-02-18 16:34:21 +00002019case 82:
vlm2c8c44d2005-03-24 16:22:35 +00002020#line 909 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002021{
vlmec8f6812004-08-22 03:19:54 +00002022 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002023 ;
2024 break;}
vlm4053ca52005-02-18 16:34:21 +00002025case 83:
vlm2c8c44d2005-03-24 16:22:35 +00002026#line 915 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002027{
vlmec8f6812004-08-22 03:19:54 +00002028 yyval.a_expr = asn1p_expr_new(yylineno);
2029 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00002030 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2031 ;
2032 break;}
vlm4053ca52005-02-18 16:34:21 +00002033case 84:
vlm2c8c44d2005-03-24 16:22:35 +00002034#line 920 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002035{
vlmec8f6812004-08-22 03:19:54 +00002036 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002037 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2038 ;
2039 break;}
vlm4053ca52005-02-18 16:34:21 +00002040case 85:
vlm2c8c44d2005-03-24 16:22:35 +00002041#line 927 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002042{
vlmec8f6812004-08-22 03:19:54 +00002043 yyval.a_expr = yyvsp[0].a_expr;
2044 assert(yyval.a_expr->Identifier == 0);
vlmfce48a42004-09-14 02:36:39 +00002045 yyval.a_expr->Identifier = yyvsp[-1].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00002046 ;
2047 break;}
vlm4053ca52005-02-18 16:34:21 +00002048case 86:
vlm2c8c44d2005-03-24 16:22:35 +00002049#line 932 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002050{
vlmec8f6812004-08-22 03:19:54 +00002051 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002052 ;
2053 break;}
vlm4053ca52005-02-18 16:34:21 +00002054case 87:
vlm2c8c44d2005-03-24 16:22:35 +00002055#line 938 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002056{
vlmfa67ddc2004-06-03 03:38:44 +00002057 yyval.a_expr = yyvsp[-2].a_expr;
2058 checkmem(yyval.a_expr);
2059 yyval.a_expr->with_syntax = yyvsp[0].a_wsynt;
2060 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
2061 assert(yyval.a_expr->meta_type == AMT_OBJECT);
vlm6a02a8a2004-09-08 00:28:11 +00002062 ;
2063 break;}
vlm4053ca52005-02-18 16:34:21 +00002064case 88:
vlm2c8c44d2005-03-24 16:22:35 +00002065#line 948 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002066{ yyval.a_int = 0; ;
2067 break;}
vlm4053ca52005-02-18 16:34:21 +00002068case 89:
vlm2c8c44d2005-03-24 16:22:35 +00002069#line 949 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002070{ yyval.a_int = 1; ;
2071 break;}
vlm4053ca52005-02-18 16:34:21 +00002072case 90:
vlm2c8c44d2005-03-24 16:22:35 +00002073#line 953 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002074{
vlmfa67ddc2004-06-03 03:38:44 +00002075 yyval.a_expr = asn1p_expr_new(yylineno);
2076 checkmem(yyval.a_expr);
2077 yyval.a_expr->expr_type = A1TC_CLASSDEF;
2078 yyval.a_expr->meta_type = AMT_OBJECT;
vlm6a02a8a2004-09-08 00:28:11 +00002079 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2080 ;
2081 break;}
vlm4053ca52005-02-18 16:34:21 +00002082case 91:
vlm2c8c44d2005-03-24 16:22:35 +00002083#line 960 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002084{
vlmfa67ddc2004-06-03 03:38:44 +00002085 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002086 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2087 ;
2088 break;}
vlm4053ca52005-02-18 16:34:21 +00002089case 92:
vlm2c8c44d2005-03-24 16:22:35 +00002090#line 967 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002091{
vlmfa67ddc2004-06-03 03:38:44 +00002092 yyval.a_expr = asn1p_expr_new(yylineno);
2093 checkmem(yyval.a_expr);
2094 yyval.a_expr->Identifier = yyvsp[-1].a_refcomp.name;
2095 yyval.a_expr->expr_type = A1TC_CLASSFIELD;
2096 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2097 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm6a02a8a2004-09-08 00:28:11 +00002098 ;
2099 break;}
vlm4053ca52005-02-18 16:34:21 +00002100case 93:
vlm2c8c44d2005-03-24 16:22:35 +00002101#line 975 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002102{
vlmec8f6812004-08-22 03:19:54 +00002103 yyval.a_expr = yyvsp[-2].a_expr;
2104 yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
vlmbde35d42004-11-24 17:43:29 +00002105 yyval.a_expr->marker = yyvsp[0].a_marker;
2106 yyval.a_expr->unique = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00002107 ;
2108 break;}
vlm4053ca52005-02-18 16:34:21 +00002109case 94:
vlm2c8c44d2005-03-24 16:22:35 +00002110#line 981 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002111{
vlmfa67ddc2004-06-03 03:38:44 +00002112 int ret;
2113 yyval.a_expr = asn1p_expr_new(yylineno);
2114 checkmem(yyval.a_expr);
2115 yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
2116 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2117 checkmem(yyval.a_expr->reference);
2118 ret = asn1p_ref_add_component(yyval.a_expr->reference,
2119 yyvsp[-2].a_refcomp.name, yyvsp[-2].a_refcomp.lex_type);
2120 checkmem(ret == 0);
2121 yyval.a_expr->expr_type = A1TC_CLASSFIELD;
2122 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
vlmbde35d42004-11-24 17:43:29 +00002123 yyval.a_expr->marker = yyvsp[0].a_marker;
2124 yyval.a_expr->unique = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00002125 ;
2126 break;}
vlm4053ca52005-02-18 16:34:21 +00002127case 95:
vlm2c8c44d2005-03-24 16:22:35 +00002128#line 999 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002129{ yyval.a_wsynt = 0; ;
2130 break;}
vlm4053ca52005-02-18 16:34:21 +00002131case 96:
vlm2c8c44d2005-03-24 16:22:35 +00002132#line 1000 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002133{
vlmfa67ddc2004-06-03 03:38:44 +00002134 yyval.a_wsynt = yyvsp[0].a_wsynt;
vlm6a02a8a2004-09-08 00:28:11 +00002135 ;
2136 break;}
vlm4053ca52005-02-18 16:34:21 +00002137case 97:
vlm2c8c44d2005-03-24 16:22:35 +00002138#line 1007 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002139{ asn1p_lexer_hack_enable_with_syntax(); ;
2140 break;}
vlm4053ca52005-02-18 16:34:21 +00002141case 98:
vlm2c8c44d2005-03-24 16:22:35 +00002142#line 1009 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002143{
vlmfa67ddc2004-06-03 03:38:44 +00002144 yyval.a_wsynt = yyvsp[-1].a_wsynt;
vlm6a02a8a2004-09-08 00:28:11 +00002145 ;
2146 break;}
vlm4053ca52005-02-18 16:34:21 +00002147case 99:
vlm2c8c44d2005-03-24 16:22:35 +00002148#line 1015 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002149{
vlmfa67ddc2004-06-03 03:38:44 +00002150 yyval.a_wsynt = asn1p_wsyntx_new();
2151 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm6a02a8a2004-09-08 00:28:11 +00002152 ;
2153 break;}
vlm4053ca52005-02-18 16:34:21 +00002154case 100:
vlm2c8c44d2005-03-24 16:22:35 +00002155#line 1019 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002156{
vlmfa67ddc2004-06-03 03:38:44 +00002157 yyval.a_wsynt = yyvsp[-1].a_wsynt;
2158 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm6a02a8a2004-09-08 00:28:11 +00002159 ;
2160 break;}
vlm4053ca52005-02-18 16:34:21 +00002161case 101:
vlm2c8c44d2005-03-24 16:22:35 +00002162#line 1026 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002163{
vlmfa67ddc2004-06-03 03:38:44 +00002164 yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
vlm6a02a8a2004-09-08 00:28:11 +00002165 ;
2166 break;}
vlm4053ca52005-02-18 16:34:21 +00002167case 102:
vlm2c8c44d2005-03-24 16:22:35 +00002168#line 1029 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002169{
vlmfa67ddc2004-06-03 03:38:44 +00002170 asn1p_ref_t *ref;
2171 int ret;
2172 ref = asn1p_ref_new(yylineno);
2173 checkmem(ref);
2174 ret = asn1p_ref_add_component(ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2175 checkmem(ret == 0);
2176 yyval.a_wchunk = asn1p_wsyntx_chunk_fromref(ref, 0);
vlm6a02a8a2004-09-08 00:28:11 +00002177 ;
2178 break;}
vlm0aa86902004-10-12 23:26:53 +00002179case 103:
vlm2c8c44d2005-03-24 16:22:35 +00002180#line 1041 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00002181{
2182 yyval.a_expr = asn1p_expr_new(yylineno);
2183 checkmem(yyval.a_expr);
2184 yyval.a_expr->Identifier = strdup("...");
2185 checkmem(yyval.a_expr->Identifier);
vlm0aa86902004-10-12 23:26:53 +00002186 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2187 yyval.a_expr->meta_type = AMT_TYPE;
2188 ;
2189 break;}
2190case 104:
vlm2c8c44d2005-03-24 16:22:35 +00002191#line 1049 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002192{
2193 yyval.a_expr = asn1p_expr_new(yylineno);
2194 checkmem(yyval.a_expr);
2195 yyval.a_expr->Identifier = strdup("...");
2196 checkmem(yyval.a_expr->Identifier);
2197 yyval.a_expr->value = yyvsp[0].a_value;
2198 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2199 yyval.a_expr->meta_type = AMT_TYPE;
2200 ;
2201 break;}
2202case 105:
vlm2c8c44d2005-03-24 16:22:35 +00002203#line 1058 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00002204{
2205 yyval.a_expr = asn1p_expr_new(yylineno);
2206 checkmem(yyval.a_expr);
2207 yyval.a_expr->Identifier = strdup("...");
vlm5f0128b2004-08-20 13:25:29 +00002208 yyval.a_expr->value = yyvsp[0].a_value;
2209 checkmem(yyval.a_expr->Identifier);
2210 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2211 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002212 ;
2213 break;}
vlm4053ca52005-02-18 16:34:21 +00002214case 106:
vlm2c8c44d2005-03-24 16:22:35 +00002215#line 1070 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002216{
vlmec8f6812004-08-22 03:19:54 +00002217 yyval.a_expr = yyvsp[-1].a_expr;
vlmfce48a42004-09-14 02:36:39 +00002218 yyval.a_expr->tag = yyvsp[-2].a_tag;
vlmec8f6812004-08-22 03:19:54 +00002219 /*
2220 * Outer constraint for SEQUENCE OF and SET OF applies
2221 * to the inner type.
2222 */
2223 if(yyval.a_expr->expr_type == ASN_CONSTR_SEQUENCE_OF
2224 || yyval.a_expr->expr_type == ASN_CONSTR_SET_OF) {
2225 assert(!TQ_FIRST(&(yyval.a_expr->members))->constraints);
2226 TQ_FIRST(&(yyval.a_expr->members))->constraints = yyvsp[0].a_constr;
2227 } else {
2228 if(yyval.a_expr->constraints) {
vlmfce48a42004-09-14 02:36:39 +00002229 assert(!yyvsp[-1].a_expr);
vlmec8f6812004-08-22 03:19:54 +00002230 } else {
2231 yyval.a_expr->constraints = yyvsp[0].a_constr;
2232 }
2233 }
vlm6a02a8a2004-09-08 00:28:11 +00002234 ;
2235 break;}
vlm4053ca52005-02-18 16:34:21 +00002236case 107:
vlm2c8c44d2005-03-24 16:22:35 +00002237#line 1092 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002238{
vlm5f0128b2004-08-20 13:25:29 +00002239 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002240 ;
2241 break;}
vlm4053ca52005-02-18 16:34:21 +00002242case 108:
vlm2c8c44d2005-03-24 16:22:35 +00002243#line 1095 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002244{
vlm5e2c4b92005-03-20 11:12:40 +00002245 yyval.a_expr = yyvsp[-1].a_expr;
2246 assert(yyval.a_expr->expr_type == A1TC_INVALID);
2247 yyval.a_expr->expr_type = ASN_CONSTR_CHOICE;
vlmfa67ddc2004-06-03 03:38:44 +00002248 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002249 ;
2250 break;}
vlm4053ca52005-02-18 16:34:21 +00002251case 109:
vlm2c8c44d2005-03-24 16:22:35 +00002252#line 1101 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002253{
vlmec8f6812004-08-22 03:19:54 +00002254 yyval.a_expr = yyvsp[-1].a_expr;
2255 assert(yyval.a_expr->expr_type == A1TC_INVALID);
vlm5e2c4b92005-03-20 11:12:40 +00002256 yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE;
vlmec8f6812004-08-22 03:19:54 +00002257 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002258 ;
2259 break;}
vlm4053ca52005-02-18 16:34:21 +00002260case 110:
vlm2c8c44d2005-03-24 16:22:35 +00002261#line 1107 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002262{
vlmec8f6812004-08-22 03:19:54 +00002263 yyval.a_expr = yyvsp[-1].a_expr;
2264 assert(yyval.a_expr->expr_type == A1TC_INVALID);
vlm5e2c4b92005-03-20 11:12:40 +00002265 yyval.a_expr->expr_type = ASN_CONSTR_SET;
vlmec8f6812004-08-22 03:19:54 +00002266 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002267 ;
2268 break;}
vlm4053ca52005-02-18 16:34:21 +00002269case 111:
vlm2c8c44d2005-03-24 16:22:35 +00002270#line 1113 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002271{
vlm39e5ed72004-09-05 10:40:41 +00002272 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002273 checkmem(yyval.a_expr);
vlm151c0b22004-09-22 16:03:36 +00002274 yyval.a_expr->constraints = yyvsp[-4].a_constr;
vlmec8f6812004-08-22 03:19:54 +00002275 yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE_OF;
2276 yyval.a_expr->meta_type = AMT_TYPE;
vlm151c0b22004-09-22 16:03:36 +00002277 yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
vlma2374a02004-09-14 02:44:07 +00002278 yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
vlm6a02a8a2004-09-08 00:28:11 +00002279 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2280 ;
2281 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002282case 112:
vlm2c8c44d2005-03-24 16:22:35 +00002283#line 1123 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002284{
vlm39e5ed72004-09-05 10:40:41 +00002285 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002286 checkmem(yyval.a_expr);
vlm151c0b22004-09-22 16:03:36 +00002287 yyval.a_expr->constraints = yyvsp[-4].a_constr;
vlmec8f6812004-08-22 03:19:54 +00002288 yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
2289 yyval.a_expr->meta_type = AMT_TYPE;
vlm151c0b22004-09-22 16:03:36 +00002290 yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
vlma2374a02004-09-14 02:44:07 +00002291 yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
vlm6a02a8a2004-09-08 00:28:11 +00002292 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2293 ;
2294 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002295case 113:
vlm2c8c44d2005-03-24 16:22:35 +00002296#line 1133 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002297{
vlm39e5ed72004-09-05 10:40:41 +00002298 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002299 checkmem(yyval.a_expr);
vlm044f7442004-09-04 04:49:21 +00002300 yyval.a_expr->expr_type = ASN_TYPE_ANY;
vlmec8f6812004-08-22 03:19:54 +00002301 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002302 ;
2303 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002304case 114:
vlm2c8c44d2005-03-24 16:22:35 +00002305#line 1139 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002306{
vlmec8f6812004-08-22 03:19:54 +00002307 int ret;
vlm39e5ed72004-09-05 10:40:41 +00002308 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002309 checkmem(yyval.a_expr);
2310 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2311 ret = asn1p_ref_add_component(yyval.a_expr->reference,
2312 yyvsp[0].tv_str, RLT_lowercase);
2313 checkmem(ret == 0);
vlm044f7442004-09-04 04:49:21 +00002314 yyval.a_expr->expr_type = ASN_TYPE_ANY;
vlmec8f6812004-08-22 03:19:54 +00002315 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002316 ;
2317 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002318case 115:
vlm2c8c44d2005-03-24 16:22:35 +00002319#line 1153 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002320{
vlmfa67ddc2004-06-03 03:38:44 +00002321 int ret;
2322 yyval.a_expr = yyvsp[-1].a_expr;
2323 assert(yyval.a_expr->expr_type == 0);
2324 assert(yyval.a_expr->meta_type == 0);
2325 assert(yyval.a_expr->reference == 0);
2326 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2327 checkmem(yyval.a_expr->reference);
2328 ret = asn1p_ref_add_component(yyval.a_expr->reference, yyvsp[-3].tv_str, RLT_UNKNOWN);
2329 checkmem(ret == 0);
2330 free(yyvsp[-3].tv_str);
2331 yyval.a_expr->expr_type = A1TC_PARAMETRIZED;
2332 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002333 ;
2334 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002335case 116:
vlm2c8c44d2005-03-24 16:22:35 +00002336#line 1177 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002337{
vlmfa67ddc2004-06-03 03:38:44 +00002338 yyval.a_expr = asn1p_expr_new(yylineno);
2339 checkmem(yyval.a_expr);
2340 yyval.a_expr->reference = yyvsp[0].a_ref;
2341 yyval.a_expr->expr_type = A1TC_REFERENCE;
2342 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm6a02a8a2004-09-08 00:28:11 +00002343 ;
2344 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002345case 117:
vlm2c8c44d2005-03-24 16:22:35 +00002346#line 1184 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002347{
vlmfa67ddc2004-06-03 03:38:44 +00002348 yyval.a_expr = asn1p_expr_new(yylineno);
2349 checkmem(yyval.a_expr);
2350 yyval.a_expr->reference = yyvsp[0].a_ref;
2351 yyval.a_expr->expr_type = A1TC_INSTANCE;
2352 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002353 ;
2354 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002355case 118:
vlm2c8c44d2005-03-24 16:22:35 +00002356#line 1199 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002357{
vlmfa67ddc2004-06-03 03:38:44 +00002358 int ret;
2359 yyval.a_ref = asn1p_ref_new(yylineno);
2360 checkmem(yyval.a_ref);
2361 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
2362 checkmem(ret == 0);
2363 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002364 ;
2365 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002366case 119:
vlm2c8c44d2005-03-24 16:22:35 +00002367#line 1207 "asn1p_y.y"
vlm5e2c4b92005-03-20 11:12:40 +00002368{
2369 int ret;
2370 yyval.a_ref = asn1p_ref_new(yylineno);
2371 checkmem(yyval.a_ref);
2372 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2373 checkmem(ret == 0);
2374 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
2375 checkmem(ret == 0);
2376 free(yyvsp[-2].tv_str);
2377 ;
2378 break;}
vlm0aa86902004-10-12 23:26:53 +00002379case 120:
vlm2c8c44d2005-03-24 16:22:35 +00002380#line 1217 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002381{
vlmfa67ddc2004-06-03 03:38:44 +00002382 int ret;
2383 yyval.a_ref = asn1p_ref_new(yylineno);
2384 checkmem(yyval.a_ref);
2385 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2386 checkmem(ret == 0);
vlmc94e28f2004-09-15 11:59:51 +00002387 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
vlmfa67ddc2004-06-03 03:38:44 +00002388 checkmem(ret == 0);
2389 free(yyvsp[-2].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002390 ;
2391 break;}
vlm0aa86902004-10-12 23:26:53 +00002392case 121:
vlm2c8c44d2005-03-24 16:22:35 +00002393#line 1227 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002394{
vlmfa67ddc2004-06-03 03:38:44 +00002395 int ret;
2396 yyval.a_ref = asn1p_ref_new(yylineno);
2397 checkmem(yyval.a_ref);
vlmc94e28f2004-09-15 11:59:51 +00002398 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2399 checkmem(ret == 0);
2400 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
2401 checkmem(ret == 0);
2402 free(yyvsp[-2].tv_str);
2403 ;
2404 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002405case 122:
vlm2c8c44d2005-03-24 16:22:35 +00002406#line 1237 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002407{
2408 int ret;
2409 yyval.a_ref = asn1p_ref_new(yylineno);
2410 checkmem(yyval.a_ref);
vlmfa67ddc2004-06-03 03:38:44 +00002411 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
2412 free(yyvsp[0].tv_str);
2413 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002414 ;
2415 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002416case 123:
vlm2c8c44d2005-03-24 16:22:35 +00002417#line 1245 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002418{
vlmfa67ddc2004-06-03 03:38:44 +00002419 int ret;
2420 yyval.a_ref = yyvsp[0].a_ref;
2421 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_CAPITALS);
2422 free(yyvsp[-2].tv_str);
2423 checkmem(ret == 0);
2424 /*
2425 * Move the last element infront.
2426 */
2427 {
2428 struct asn1p_ref_component_s tmp_comp;
2429 tmp_comp = yyval.a_ref->components[yyval.a_ref->comp_count-1];
2430 memmove(&yyval.a_ref->components[1],
2431 &yyval.a_ref->components[0],
2432 sizeof(yyval.a_ref->components[0])
2433 * (yyval.a_ref->comp_count - 1));
2434 yyval.a_ref->components[0] = tmp_comp;
2435 }
vlm6a02a8a2004-09-08 00:28:11 +00002436 ;
2437 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002438case 124:
vlm2c8c44d2005-03-24 16:22:35 +00002439#line 1267 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002440{
vlmfa67ddc2004-06-03 03:38:44 +00002441 int ret;
2442 yyval.a_ref = asn1p_ref_new(yylineno);
2443 checkmem(yyval.a_ref);
2444 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2445 free(yyvsp[0].a_refcomp.name);
2446 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002447 ;
2448 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002449case 125:
vlm2c8c44d2005-03-24 16:22:35 +00002450#line 1275 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002451{
vlmfa67ddc2004-06-03 03:38:44 +00002452 int ret;
2453 yyval.a_ref = yyvsp[-2].a_ref;
2454 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2455 free(yyvsp[0].a_refcomp.name);
2456 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002457 ;
2458 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002459case 128:
vlm2c8c44d2005-03-24 16:22:35 +00002460#line 1289 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002461{
vlmfa67ddc2004-06-03 03:38:44 +00002462 yyval.a_refcomp.lex_type = RLT_AmpUppercase;
2463 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00002464 ;
2465 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002466case 129:
vlm2c8c44d2005-03-24 16:22:35 +00002467#line 1294 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002468{
vlmfa67ddc2004-06-03 03:38:44 +00002469 yyval.a_refcomp.lex_type = RLT_Amplowercase;
2470 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00002471 ;
2472 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002473case 130:
vlm2c8c44d2005-03-24 16:22:35 +00002474#line 1307 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002475{
vlmfa67ddc2004-06-03 03:38:44 +00002476 yyval.a_expr = yyvsp[-2].a_expr;
2477 assert(yyval.a_expr->Identifier == NULL);
2478 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
2479 yyval.a_expr->meta_type = AMT_VALUE;
2480 yyval.a_expr->value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00002481 ;
2482 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002483case 131:
vlm2c8c44d2005-03-24 16:22:35 +00002484#line 1317 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002485{
2486 yyval.a_value = asn1p_value_fromint(0);
2487 checkmem(yyval.a_value);
2488 yyval.a_value->type = ATV_CHOICE_IDENTIFIER;
2489 yyval.a_value->value.choice_identifier.identifier = yyvsp[-2].tv_str;
2490 yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
2491 ;
2492 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002493case 132:
vlm2c8c44d2005-03-24 16:22:35 +00002494#line 1324 "asn1p_y.y"
vlmd30bc6c2005-03-24 16:27:02 +00002495{ asn1p_lexer_hack_push_opaque_state(); ;
vlm6a02a8a2004-09-08 00:28:11 +00002496 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002497case 133:
vlm2c8c44d2005-03-24 16:22:35 +00002498#line 1324 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002499{
vlmfa67ddc2004-06-03 03:38:44 +00002500 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2501 checkmem(yyval.a_value);
2502 yyval.a_value->type = ATV_UNPARSED;
vlm6a02a8a2004-09-08 00:28:11 +00002503 ;
2504 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002505case 134:
vlm2c8c44d2005-03-24 16:22:35 +00002506#line 1329 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002507{
2508 yyval.a_value = asn1p_value_fromint(0);
2509 checkmem(yyval.a_value);
2510 yyval.a_value->type = ATV_NULL;
2511 ;
2512 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002513case 135:
vlm2c8c44d2005-03-24 16:22:35 +00002514#line 1334 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002515{
2516 yyval.a_value = asn1p_value_fromint(0);
2517 checkmem(yyval.a_value);
2518 yyval.a_value->type = ATV_FALSE;
2519 ;
2520 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002521case 136:
vlm2c8c44d2005-03-24 16:22:35 +00002522#line 1339 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002523{
2524 yyval.a_value = asn1p_value_fromint(0);
2525 checkmem(yyval.a_value);
2526 yyval.a_value->type = ATV_TRUE;
2527 ;
2528 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002529case 137:
vlm2c8c44d2005-03-24 16:22:35 +00002530#line 1344 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002531{
vlmfa67ddc2004-06-03 03:38:44 +00002532 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
2533 checkmem(yyval.a_value);
vlm6a02a8a2004-09-08 00:28:11 +00002534 ;
2535 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002536case 138:
vlm2c8c44d2005-03-24 16:22:35 +00002537#line 1348 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002538{
vlmfa67ddc2004-06-03 03:38:44 +00002539 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
2540 checkmem(yyval.a_value);
vlm6a02a8a2004-09-08 00:28:11 +00002541 ;
2542 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002543case 139:
vlm2c8c44d2005-03-24 16:22:35 +00002544#line 1352 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002545{
vlme1e6ed82005-03-24 14:26:38 +00002546 yyval.a_value = yyval.a_value;
vlm6a02a8a2004-09-08 00:28:11 +00002547 ;
2548 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002549case 140:
vlm2c8c44d2005-03-24 16:22:35 +00002550#line 1355 "asn1p_y.y"
vlm5e2c4b92005-03-20 11:12:40 +00002551{
2552 yyval.a_value = yyvsp[0].a_value;
2553 ;
2554 break;}
vlm0aa86902004-10-12 23:26:53 +00002555case 141:
vlm2c8c44d2005-03-24 16:22:35 +00002556#line 1358 "asn1p_y.y"
vlm151c0b22004-09-22 16:03:36 +00002557{
2558 yyval.a_value = yyvsp[0].a_value;
2559 ;
2560 break;}
vlm0aa86902004-10-12 23:26:53 +00002561case 142:
vlm2c8c44d2005-03-24 16:22:35 +00002562#line 1364 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002563{
vlmfa67ddc2004-06-03 03:38:44 +00002564 asn1p_ref_t *ref;
2565 int ret;
2566 ref = asn1p_ref_new(yylineno);
2567 checkmem(ref);
2568 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
2569 checkmem(ret == 0);
2570 yyval.a_value = asn1p_value_fromref(ref, 0);
2571 checkmem(yyval.a_value);
2572 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002573 ;
2574 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002575case 143:
vlm2c8c44d2005-03-24 16:22:35 +00002576#line 1375 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002577{
vlmfa67ddc2004-06-03 03:38:44 +00002578 asn1p_ref_t *ref;
2579 int ret;
2580 ref = asn1p_ref_new(yylineno);
2581 checkmem(ref);
2582 ret = asn1p_ref_add_component(ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2583 checkmem(ret == 0);
2584 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
2585 checkmem(ret == 0);
2586 yyval.a_value = asn1p_value_fromref(ref, 0);
2587 checkmem(yyval.a_value);
2588 free(yyvsp[-2].tv_str);
2589 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002590 ;
2591 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002592case 144:
vlm2c8c44d2005-03-24 16:22:35 +00002593#line 1393 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002594{
2595 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2596 checkmem(yyval.a_value);
2597 ;
2598 break;}
2599case 145:
vlm2c8c44d2005-03-24 16:22:35 +00002600#line 1397 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002601{
vlm2c8c44d2005-03-24 16:22:35 +00002602 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
vlme1e6ed82005-03-24 14:26:38 +00002603 checkmem(yyval.a_value);
2604 yyval.a_value->type = ATV_TUPLE;
2605 ;
2606 break;}
2607case 146:
vlm2c8c44d2005-03-24 16:22:35 +00002608#line 1402 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002609{
vlm2c8c44d2005-03-24 16:22:35 +00002610 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
vlme1e6ed82005-03-24 14:26:38 +00002611 checkmem(yyval.a_value);
2612 yyval.a_value->type = ATV_QUADRUPLE;
2613 ;
2614 break;}
2615case 147:
vlm2c8c44d2005-03-24 16:22:35 +00002616#line 1436 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002617{
vlm6611add2005-03-20 14:28:32 +00002618 yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
vlmfa67ddc2004-06-03 03:38:44 +00002619 yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
2620 checkmem(yyval.tv_opaque.buf);
2621 yyval.tv_opaque.buf[0] = '{';
vlm6611add2005-03-20 14:28:32 +00002622 memcpy(yyval.tv_opaque.buf + 1, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
vlmfa67ddc2004-06-03 03:38:44 +00002623 yyval.tv_opaque.buf[yyval.tv_opaque.len] = '\0';
2624 free(yyvsp[0].tv_opaque.buf);
vlm6a02a8a2004-09-08 00:28:11 +00002625 ;
2626 break;}
vlme1e6ed82005-03-24 14:26:38 +00002627case 148:
vlm2c8c44d2005-03-24 16:22:35 +00002628#line 1445 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002629{
vlmfa67ddc2004-06-03 03:38:44 +00002630 int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
2631 char *p = malloc(newsize + 1);
2632 checkmem(p);
2633 memcpy(p , yyvsp[-1].tv_opaque.buf, yyvsp[-1].tv_opaque.len);
2634 memcpy(p + yyvsp[-1].tv_opaque.len, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
2635 p[newsize] = '\0';
2636 free(yyvsp[-1].tv_opaque.buf);
2637 free(yyvsp[0].tv_opaque.buf);
2638 yyval.tv_opaque.buf = p;
2639 yyval.tv_opaque.len = newsize;
vlm6a02a8a2004-09-08 00:28:11 +00002640 ;
2641 break;}
vlme1e6ed82005-03-24 14:26:38 +00002642case 149:
vlm2c8c44d2005-03-24 16:22:35 +00002643#line 1460 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002644{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
2645 break;}
vlme1e6ed82005-03-24 14:26:38 +00002646case 150:
vlm2c8c44d2005-03-24 16:22:35 +00002647#line 1461 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002648{ yyval.a_type = ASN_BASIC_NULL; ;
2649 break;}
vlme1e6ed82005-03-24 14:26:38 +00002650case 151:
vlm2c8c44d2005-03-24 16:22:35 +00002651#line 1462 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002652{ yyval.a_type = ASN_BASIC_REAL; ;
2653 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002654case 152:
vlm2c8c44d2005-03-24 16:22:35 +00002655#line 1463 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002656{ yyval.a_type = yyvsp[0].a_type; ;
vlm6a02a8a2004-09-08 00:28:11 +00002657 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002658case 153:
vlm2c8c44d2005-03-24 16:22:35 +00002659#line 1464 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002660{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
vlm6a02a8a2004-09-08 00:28:11 +00002661 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002662case 154:
vlm2c8c44d2005-03-24 16:22:35 +00002663#line 1465 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002664{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
vlm6a02a8a2004-09-08 00:28:11 +00002665 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002666case 155:
vlm2c8c44d2005-03-24 16:22:35 +00002667#line 1466 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002668{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
vlm6a02a8a2004-09-08 00:28:11 +00002669 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002670case 156:
vlm2c8c44d2005-03-24 16:22:35 +00002671#line 1467 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002672{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
vlm6a02a8a2004-09-08 00:28:11 +00002673 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002674case 157:
vlm2c8c44d2005-03-24 16:22:35 +00002675#line 1468 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002676{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
vlm6a02a8a2004-09-08 00:28:11 +00002677 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002678case 158:
vlm2c8c44d2005-03-24 16:22:35 +00002679#line 1469 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002680{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
vlm5e2c4b92005-03-20 11:12:40 +00002681 break;}
vlm4053ca52005-02-18 16:34:21 +00002682case 159:
vlm2c8c44d2005-03-24 16:22:35 +00002683#line 1470 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002684{ yyval.a_type = ASN_BASIC_UTCTime; ;
vlm6a02a8a2004-09-08 00:28:11 +00002685 break;}
vlm4053ca52005-02-18 16:34:21 +00002686case 160:
vlm2c8c44d2005-03-24 16:22:35 +00002687#line 1471 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002688{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
vlm6a02a8a2004-09-08 00:28:11 +00002689 break;}
vlm4053ca52005-02-18 16:34:21 +00002690case 161:
vlm2c8c44d2005-03-24 16:22:35 +00002691#line 1472 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002692{ yyval.a_type = yyvsp[0].a_type; ;
vlm6a02a8a2004-09-08 00:28:11 +00002693 break;}
vlm4053ca52005-02-18 16:34:21 +00002694case 162:
vlm2c8c44d2005-03-24 16:22:35 +00002695#line 1479 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002696{ yyval.a_type = ASN_BASIC_INTEGER; ;
2697 break;}
2698case 163:
vlm2c8c44d2005-03-24 16:22:35 +00002699#line 1480 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002700{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
2701 break;}
2702case 164:
vlm2c8c44d2005-03-24 16:22:35 +00002703#line 1481 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002704{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
2705 break;}
2706case 165:
vlm2c8c44d2005-03-24 16:22:35 +00002707#line 1485 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002708{
vlm39e5ed72004-09-05 10:40:41 +00002709 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00002710 checkmem(yyval.a_expr);
2711 yyval.a_expr->expr_type = yyvsp[0].a_type;
2712 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002713 ;
2714 break;}
vlme1e6ed82005-03-24 14:26:38 +00002715case 166:
vlm2c8c44d2005-03-24 16:22:35 +00002716#line 1491 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002717{
vlmfa67ddc2004-06-03 03:38:44 +00002718 if(yyvsp[0].a_expr) {
2719 yyval.a_expr = yyvsp[0].a_expr;
2720 } else {
vlm39e5ed72004-09-05 10:40:41 +00002721 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00002722 checkmem(yyval.a_expr);
2723 }
2724 yyval.a_expr->expr_type = yyvsp[-1].a_type;
2725 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002726 ;
2727 break;}
vlme1e6ed82005-03-24 14:26:38 +00002728case 167:
vlm2c8c44d2005-03-24 16:22:35 +00002729#line 1504 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002730{ yyval.a_type = ASN_STRING_BMPString; ;
2731 break;}
vlme1e6ed82005-03-24 14:26:38 +00002732case 168:
vlm2c8c44d2005-03-24 16:22:35 +00002733#line 1505 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002734{
vlmfa67ddc2004-06-03 03:38:44 +00002735 yyval.a_type = ASN_STRING_GeneralString;
vlmc94e28f2004-09-15 11:59:51 +00002736 fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
vlm6a02a8a2004-09-08 00:28:11 +00002737 ;
2738 break;}
vlme1e6ed82005-03-24 14:26:38 +00002739case 169:
vlm2c8c44d2005-03-24 16:22:35 +00002740#line 1509 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002741{
vlmc94e28f2004-09-15 11:59:51 +00002742 yyval.a_type = ASN_STRING_GraphicString;
2743 fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
vlm6a02a8a2004-09-08 00:28:11 +00002744 ;
2745 break;}
vlme1e6ed82005-03-24 14:26:38 +00002746case 170:
vlm2c8c44d2005-03-24 16:22:35 +00002747#line 1513 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002748{ yyval.a_type = ASN_STRING_IA5String; ;
vlm6a02a8a2004-09-08 00:28:11 +00002749 break;}
vlme1e6ed82005-03-24 14:26:38 +00002750case 171:
vlm2c8c44d2005-03-24 16:22:35 +00002751#line 1514 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002752{ yyval.a_type = ASN_STRING_ISO646String; ;
vlm6a02a8a2004-09-08 00:28:11 +00002753 break;}
vlme1e6ed82005-03-24 14:26:38 +00002754case 172:
vlm2c8c44d2005-03-24 16:22:35 +00002755#line 1515 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002756{ yyval.a_type = ASN_STRING_NumericString; ;
vlm6a02a8a2004-09-08 00:28:11 +00002757 break;}
vlme1e6ed82005-03-24 14:26:38 +00002758case 173:
vlm2c8c44d2005-03-24 16:22:35 +00002759#line 1516 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002760{ yyval.a_type = ASN_STRING_PrintableString; ;
vlm6a02a8a2004-09-08 00:28:11 +00002761 break;}
vlme1e6ed82005-03-24 14:26:38 +00002762case 174:
vlm2c8c44d2005-03-24 16:22:35 +00002763#line 1517 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002764{
2765 yyval.a_type = ASN_STRING_T61String;
2766 fprintf(stderr, "WARNING: T61String is not fully supported\n");
2767 ;
vlm6a02a8a2004-09-08 00:28:11 +00002768 break;}
vlme1e6ed82005-03-24 14:26:38 +00002769case 175:
vlm2c8c44d2005-03-24 16:22:35 +00002770#line 1521 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002771{ yyval.a_type = ASN_STRING_TeletexString; ;
2772 break;}
vlme1e6ed82005-03-24 14:26:38 +00002773case 176:
vlm2c8c44d2005-03-24 16:22:35 +00002774#line 1522 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002775{ yyval.a_type = ASN_STRING_UniversalString; ;
2776 break;}
vlme1e6ed82005-03-24 14:26:38 +00002777case 177:
vlm2c8c44d2005-03-24 16:22:35 +00002778#line 1523 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002779{ yyval.a_type = ASN_STRING_UTF8String; ;
2780 break;}
vlme1e6ed82005-03-24 14:26:38 +00002781case 178:
vlm2c8c44d2005-03-24 16:22:35 +00002782#line 1524 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002783{
2784 yyval.a_type = ASN_STRING_VideotexString;
2785 fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
2786 ;
2787 break;}
vlme1e6ed82005-03-24 14:26:38 +00002788case 179:
vlm2c8c44d2005-03-24 16:22:35 +00002789#line 1528 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002790{ yyval.a_type = ASN_STRING_VisibleString; ;
2791 break;}
vlme1e6ed82005-03-24 14:26:38 +00002792case 180:
vlm2c8c44d2005-03-24 16:22:35 +00002793#line 1529 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002794{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
2795 break;}
vlme1e6ed82005-03-24 14:26:38 +00002796case 186:
vlm2c8c44d2005-03-24 16:22:35 +00002797#line 1541 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002798{ yyval.a_constr = 0; ;
2799 break;}
vlme1e6ed82005-03-24 14:26:38 +00002800case 187:
vlm2c8c44d2005-03-24 16:22:35 +00002801#line 1542 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002802{
vlm39e5ed72004-09-05 10:40:41 +00002803 yyval.a_constr = yyvsp[0].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00002804 ;
2805 break;}
vlme1e6ed82005-03-24 14:26:38 +00002806case 188:
vlm2c8c44d2005-03-24 16:22:35 +00002807#line 1548 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002808{
vlm39e5ed72004-09-05 10:40:41 +00002809 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
vlm6a02a8a2004-09-08 00:28:11 +00002810 ;
2811 break;}
vlme1e6ed82005-03-24 14:26:38 +00002812case 189:
vlm2c8c44d2005-03-24 16:22:35 +00002813#line 1551 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002814{
vlmfa67ddc2004-06-03 03:38:44 +00002815 /*
2816 * This is a special case, for compatibility purposes.
vlm9283dbe2004-08-18 04:59:12 +00002817 * It goes without parentheses.
vlmfa67ddc2004-06-03 03:38:44 +00002818 */
vlm5f0128b2004-08-20 13:25:29 +00002819 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
vlm6a02a8a2004-09-08 00:28:11 +00002820 ;
2821 break;}
vlme1e6ed82005-03-24 14:26:38 +00002822case 190:
vlm2c8c44d2005-03-24 16:22:35 +00002823#line 1561 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002824{
vlmfa67ddc2004-06-03 03:38:44 +00002825 yyval.a_constr = yyvsp[-1].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00002826 ;
2827 break;}
vlme1e6ed82005-03-24 14:26:38 +00002828case 191:
vlm2c8c44d2005-03-24 16:22:35 +00002829#line 1564 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002830{
vlm9283dbe2004-08-18 04:59:12 +00002831 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002832 ;
2833 break;}
vlme1e6ed82005-03-24 14:26:38 +00002834case 192:
vlm2c8c44d2005-03-24 16:22:35 +00002835#line 1570 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002836{
vlmfa67ddc2004-06-03 03:38:44 +00002837 yyval.a_constr = yyvsp[0].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00002838 ;
2839 break;}
vlme1e6ed82005-03-24 14:26:38 +00002840case 193:
vlm2c8c44d2005-03-24 16:22:35 +00002841#line 1573 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002842{
vlmfa67ddc2004-06-03 03:38:44 +00002843 asn1p_constraint_t *ct;
2844 ct = asn1p_constraint_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00002845 ct->type = ACT_EL_EXT;
2846 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm6a02a8a2004-09-08 00:28:11 +00002847 ;
2848 break;}
vlme1e6ed82005-03-24 14:26:38 +00002849case 194:
vlm2c8c44d2005-03-24 16:22:35 +00002850#line 1579 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002851{
vlmfa67ddc2004-06-03 03:38:44 +00002852 asn1p_constraint_t *ct;
2853 ct = asn1p_constraint_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00002854 ct->type = ACT_EL_EXT;
2855 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-4].a_constr, ct);
vlm6f5eb0b2004-08-13 12:35:09 +00002856 ct = yyval.a_constr;
2857 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002858 ;
2859 break;}
vlme1e6ed82005-03-24 14:26:38 +00002860case 195:
vlm2c8c44d2005-03-24 16:22:35 +00002861#line 1590 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002862{
vlm9283dbe2004-08-18 04:59:12 +00002863 yyval.a_constr = yyvsp[0].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00002864 ;
2865 break;}
vlme1e6ed82005-03-24 14:26:38 +00002866case 196:
vlm2c8c44d2005-03-24 16:22:35 +00002867#line 1593 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002868{
2869 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
2870 ;
2871 break;}
2872case 197:
vlm2c8c44d2005-03-24 16:22:35 +00002873#line 1596 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002874{
vlmfa67ddc2004-06-03 03:38:44 +00002875 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002876 ;
2877 break;}
vlme1e6ed82005-03-24 14:26:38 +00002878case 198:
vlm2c8c44d2005-03-24 16:22:35 +00002879#line 1599 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002880{
vlmfa67ddc2004-06-03 03:38:44 +00002881 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002882 ;
2883 break;}
vlme1e6ed82005-03-24 14:26:38 +00002884case 199:
vlm2c8c44d2005-03-24 16:22:35 +00002885#line 1602 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002886{
vlmfa67ddc2004-06-03 03:38:44 +00002887 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002888 ;
2889 break;}
vlme1e6ed82005-03-24 14:26:38 +00002890case 200:
vlm2c8c44d2005-03-24 16:22:35 +00002891#line 1608 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002892{
vlmfa67ddc2004-06-03 03:38:44 +00002893 int ret;
2894 yyval.a_constr = asn1p_constraint_new(yylineno);
2895 checkmem(yyval.a_constr);
2896 yyval.a_constr->type = yyvsp[-3].a_ctype;
2897 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
2898 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002899 ;
2900 break;}
vlme1e6ed82005-03-24 14:26:38 +00002901case 201:
vlm2c8c44d2005-03-24 16:22:35 +00002902#line 1616 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002903{
vlm9283dbe2004-08-18 04:59:12 +00002904 int ret;
2905 yyval.a_constr = asn1p_constraint_new(yylineno);
2906 checkmem(yyval.a_constr);
2907 yyval.a_constr->type = ACT_CA_SET;
2908 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
2909 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002910 ;
2911 break;}
vlme1e6ed82005-03-24 14:26:38 +00002912case 202:
vlm2c8c44d2005-03-24 16:22:35 +00002913#line 1624 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002914{
vlm9283dbe2004-08-18 04:59:12 +00002915 yyval.a_constr = asn1p_constraint_new(yylineno);
2916 checkmem(yyval.a_constr);
2917 yyval.a_constr->type = ACT_EL_VALUE;
2918 yyval.a_constr->value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00002919 ;
2920 break;}
vlme1e6ed82005-03-24 14:26:38 +00002921case 203:
vlm2c8c44d2005-03-24 16:22:35 +00002922#line 1630 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002923{
vlm0aa86902004-10-12 23:26:53 +00002924 yyval.a_constr = asn1p_constraint_new(yylineno);
2925 checkmem(yyval.a_constr);
vlma6a12e32005-03-20 12:58:00 +00002926 yyval.a_constr->type = ACT_EL_TYPE;
2927 yyval.a_constr->containedSubtype = yyvsp[0].a_value;
vlmc94e28f2004-09-15 11:59:51 +00002928 ;
2929 break;}
vlmc94e28f2004-09-15 11:59:51 +00002930case 204:
vlm2c8c44d2005-03-24 16:22:35 +00002931#line 1636 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002932{
vlme1e6ed82005-03-24 14:26:38 +00002933 yyval.a_constr = asn1p_constraint_new(yylineno);
2934 checkmem(yyval.a_constr);
2935 yyval.a_constr->type = yyvsp[-1].a_ctype;
2936 yyval.a_constr->range_start = yyvsp[-2].a_value;
2937 yyval.a_constr->range_stop = yyvsp[0].a_value;
vlm4053ca52005-02-18 16:34:21 +00002938 ;
vlm0aa86902004-10-12 23:26:53 +00002939 break;}
2940case 205:
vlm2c8c44d2005-03-24 16:22:35 +00002941#line 1643 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002942{
2943 yyval.a_constr = asn1p_constraint_new(yylineno);
2944 checkmem(yyval.a_constr);
2945 yyval.a_constr->type = yyvsp[-1].a_ctype;
2946 yyval.a_constr->range_start = asn1p_value_fromint(-123);
2947 yyval.a_constr->range_stop = yyvsp[0].a_value;
2948 yyval.a_constr->range_start->type = ATV_MIN;
2949 ;
2950 break;}
2951case 206:
vlm2c8c44d2005-03-24 16:22:35 +00002952#line 1651 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002953{
2954 yyval.a_constr = asn1p_constraint_new(yylineno);
2955 checkmem(yyval.a_constr);
2956 yyval.a_constr->type = yyvsp[-1].a_ctype;
2957 yyval.a_constr->range_start = yyvsp[-2].a_value;
2958 yyval.a_constr->range_stop = asn1p_value_fromint(321);
2959 yyval.a_constr->range_stop->type = ATV_MAX;
2960 ;
2961 break;}
2962case 207:
vlm2c8c44d2005-03-24 16:22:35 +00002963#line 1659 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002964{
2965 yyval.a_constr = asn1p_constraint_new(yylineno);
2966 checkmem(yyval.a_constr);
2967 yyval.a_constr->type = yyvsp[-1].a_ctype;
2968 yyval.a_constr->range_start = asn1p_value_fromint(-123);
2969 yyval.a_constr->range_stop = asn1p_value_fromint(321);
2970 yyval.a_constr->range_start->type = ATV_MIN;
2971 yyval.a_constr->range_stop->type = ATV_MAX;
2972 ;
2973 break;}
2974case 208:
vlm2c8c44d2005-03-24 16:22:35 +00002975#line 1668 "asn1p_y.y"
vlma6a12e32005-03-20 12:58:00 +00002976{
2977 yyval.a_constr = yyvsp[0].a_constr;
2978 ;
vlm0aa86902004-10-12 23:26:53 +00002979 break;}
vlme1e6ed82005-03-24 14:26:38 +00002980case 209:
vlm2c8c44d2005-03-24 16:22:35 +00002981#line 1671 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002982{
2983 yyval.a_constr = yyvsp[0].a_constr;
2984 ;
2985 break;}
2986case 210:
vlm2c8c44d2005-03-24 16:22:35 +00002987#line 1675 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00002988{ asn1p_lexer_hack_push_opaque_state(); ;
vlm0aa86902004-10-12 23:26:53 +00002989 break;}
vlme1e6ed82005-03-24 14:26:38 +00002990case 211:
vlm2c8c44d2005-03-24 16:22:35 +00002991#line 1675 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00002992{
2993 yyval.a_constr = asn1p_constraint_new(yylineno);
2994 checkmem(yyval.a_constr);
2995 yyval.a_constr->type = ACT_CT_CTDBY;
2996 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2997 checkmem(yyval.a_constr->value);
2998 yyval.a_constr->value->type = ATV_UNPARSED;
2999 ;
vlm0aa86902004-10-12 23:26:53 +00003000 break;}
vlme1e6ed82005-03-24 14:26:38 +00003001case 212:
vlm2c8c44d2005-03-24 16:22:35 +00003002#line 1686 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003003{ yyval.a_ctype = ACT_EL_RANGE; ;
vlm4053ca52005-02-18 16:34:21 +00003004 break;}
vlme1e6ed82005-03-24 14:26:38 +00003005case 213:
vlm2c8c44d2005-03-24 16:22:35 +00003006#line 1687 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003007{ yyval.a_ctype = ACT_EL_RLRANGE; ;
vlma6a12e32005-03-20 12:58:00 +00003008 break;}
vlme1e6ed82005-03-24 14:26:38 +00003009case 214:
vlm2c8c44d2005-03-24 16:22:35 +00003010#line 1688 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003011{ yyval.a_ctype = ACT_EL_LLRANGE; ;
3012 break;}
vlme1e6ed82005-03-24 14:26:38 +00003013case 215:
vlm2c8c44d2005-03-24 16:22:35 +00003014#line 1689 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003015{ yyval.a_ctype = ACT_EL_ULRANGE; ;
3016 break;}
vlme1e6ed82005-03-24 14:26:38 +00003017case 216:
vlm2c8c44d2005-03-24 16:22:35 +00003018#line 1693 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003019{
vlm39e5ed72004-09-05 10:40:41 +00003020 yyval.a_ctype = ACT_CT_SIZE;
vlm6a02a8a2004-09-08 00:28:11 +00003021 ;
3022 break;}
vlme1e6ed82005-03-24 14:26:38 +00003023case 217:
vlm2c8c44d2005-03-24 16:22:35 +00003024#line 1696 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003025{
vlm39e5ed72004-09-05 10:40:41 +00003026 yyval.a_ctype = ACT_CT_FROM;
vlm6a02a8a2004-09-08 00:28:11 +00003027 ;
3028 break;}
vlme1e6ed82005-03-24 14:26:38 +00003029case 218:
vlm2c8c44d2005-03-24 16:22:35 +00003030#line 1702 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00003031{
3032 yyval.a_value = asn1p_value_fromint(0);
3033 checkmem(yyval.a_value);
3034 yyval.a_value->type = ATV_FALSE;
3035 ;
3036 break;}
vlme1e6ed82005-03-24 14:26:38 +00003037case 219:
vlm2c8c44d2005-03-24 16:22:35 +00003038#line 1707 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00003039{
3040 yyval.a_value = asn1p_value_fromint(1);
3041 checkmem(yyval.a_value);
3042 yyval.a_value->type = ATV_TRUE;
3043 ;
3044 break;}
vlme1e6ed82005-03-24 14:26:38 +00003045case 220:
vlm2c8c44d2005-03-24 16:22:35 +00003046#line 1712 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003047{
vlmfa67ddc2004-06-03 03:38:44 +00003048 yyval.a_value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00003049 ;
3050 break;}
vlme1e6ed82005-03-24 14:26:38 +00003051case 221:
vlm2c8c44d2005-03-24 16:22:35 +00003052#line 1715 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00003053{
vlme1e6ed82005-03-24 14:26:38 +00003054 yyval.a_value = yyvsp[0].a_value;
vlm4053ca52005-02-18 16:34:21 +00003055 ;
3056 break;}
vlme1e6ed82005-03-24 14:26:38 +00003057case 222:
vlm2c8c44d2005-03-24 16:22:35 +00003058#line 1718 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003059{
vlmfa67ddc2004-06-03 03:38:44 +00003060 asn1p_ref_t *ref;
3061 int ret;
3062 ref = asn1p_ref_new(yylineno);
3063 checkmem(ref);
3064 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
3065 checkmem(ret == 0);
3066 yyval.a_value = asn1p_value_fromref(ref, 0);
3067 checkmem(yyval.a_value);
3068 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003069 ;
3070 break;}
vlme1e6ed82005-03-24 14:26:38 +00003071case 223:
vlm2c8c44d2005-03-24 16:22:35 +00003072#line 1732 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003073{
vlm4053ca52005-02-18 16:34:21 +00003074 asn1p_ref_t *ref;
3075 int ret;
3076 ref = asn1p_ref_new(yylineno);
3077 checkmem(ref);
3078 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_UNKNOWN);
3079 checkmem(ret == 0);
3080 yyval.a_value = asn1p_value_fromref(ref, 0);
vlmfa67ddc2004-06-03 03:38:44 +00003081 checkmem(yyval.a_value);
vlm4053ca52005-02-18 16:34:21 +00003082 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003083 ;
3084 break;}
vlme1e6ed82005-03-24 14:26:38 +00003085case 224:
vlm2c8c44d2005-03-24 16:22:35 +00003086#line 1746 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003087{
vlm7bbdc9f2005-03-28 15:01:27 +00003088 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003089 ;
3090 break;}
vlme1e6ed82005-03-24 14:26:38 +00003091case 225:
vlm7bbdc9f2005-03-28 15:01:27 +00003092#line 1749 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003093{
vlm7bbdc9f2005-03-28 15:01:27 +00003094 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003095 ;
3096 break;}
vlme1e6ed82005-03-24 14:26:38 +00003097case 226:
vlm2c8c44d2005-03-24 16:22:35 +00003098#line 1755 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003099{
vlm7bbdc9f2005-03-28 15:01:27 +00003100 yyval.a_constr = yyvsp[0].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00003101 ;
3102 break;}
vlme1e6ed82005-03-24 14:26:38 +00003103case 227:
vlm7bbdc9f2005-03-28 15:01:27 +00003104#line 1758 "asn1p_y.y"
3105{
3106 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
3107 ;
3108 break;}
3109case 228:
3110#line 1764 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003111{
vlmfa67ddc2004-06-03 03:38:44 +00003112 yyval.a_constr = asn1p_constraint_new(yylineno);
3113 checkmem(yyval.a_constr);
3114 yyval.a_constr->type = ACT_EL_EXT;
vlm7bbdc9f2005-03-28 15:01:27 +00003115 yyval.a_constr->value = asn1p_value_frombuf("...", 3, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003116 ;
3117 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003118case 229:
3119#line 1770 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003120{
vlmfa67ddc2004-06-03 03:38:44 +00003121 yyval.a_constr = asn1p_constraint_new(yylineno);
3122 checkmem(yyval.a_constr);
3123 yyval.a_constr->type = ACT_EL_VALUE;
3124 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[-2].tv_str, strlen(yyvsp[-2].tv_str), 0);
3125 yyval.a_constr->presence = yyvsp[0].a_pres;
vlm7bbdc9f2005-03-28 15:01:27 +00003126 if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00003127 ;
3128 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003129case 230:
3130#line 1784 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003131{ yyval.a_pres = ACPRES_DEFAULT; ;
3132 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003133case 231:
3134#line 1785 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003135{ yyval.a_pres = yyvsp[0].a_pres; ;
3136 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003137case 232:
3138#line 1789 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003139{
vlmfa67ddc2004-06-03 03:38:44 +00003140 yyval.a_pres = ACPRES_PRESENT;
vlm6a02a8a2004-09-08 00:28:11 +00003141 ;
3142 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003143case 233:
3144#line 1792 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003145{
vlmfa67ddc2004-06-03 03:38:44 +00003146 yyval.a_pres = ACPRES_ABSENT;
vlm6a02a8a2004-09-08 00:28:11 +00003147 ;
3148 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003149case 234:
3150#line 1795 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003151{
vlmfa67ddc2004-06-03 03:38:44 +00003152 yyval.a_pres = ACPRES_OPTIONAL;
vlm6a02a8a2004-09-08 00:28:11 +00003153 ;
3154 break;}
vlme1e6ed82005-03-24 14:26:38 +00003155case 235:
vlm7bbdc9f2005-03-28 15:01:27 +00003156#line 1801 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003157{
3158 yyval.a_constr = yyvsp[0].a_constr;
3159 ;
3160 break;}
vlme1e6ed82005-03-24 14:26:38 +00003161case 236:
vlm7bbdc9f2005-03-28 15:01:27 +00003162#line 1804 "asn1p_y.y"
3163{
3164 yyval.a_constr = yyvsp[0].a_constr;
3165 ;
3166 break;}
3167case 237:
3168#line 1813 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003169{
vlmfa67ddc2004-06-03 03:38:44 +00003170 asn1p_ref_t *ref = asn1p_ref_new(yylineno);
3171 asn1p_constraint_t *ct;
3172 int ret;
3173 ret = asn1p_ref_add_component(ref, yyvsp[-1].tv_str, 0);
3174 checkmem(ret == 0);
3175 ct = asn1p_constraint_new(yylineno);
3176 checkmem(yyval.a_constr);
3177 ct->type = ACT_EL_VALUE;
3178 ct->value = asn1p_value_fromref(ref, 0);
3179 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003180 ;
3181 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003182case 238:
3183#line 1828 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003184{
vlmfa67ddc2004-06-03 03:38:44 +00003185 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00003186 ;
3187 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003188case 239:
3189#line 1834 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003190{
vlmfa67ddc2004-06-03 03:38:44 +00003191 yyval.a_constr = asn1p_constraint_new(yylineno);
3192 checkmem(yyval.a_constr);
3193 yyval.a_constr->type = ACT_EL_VALUE;
3194 yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003195 ;
3196 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003197case 240:
3198#line 1840 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003199{
vlmfa67ddc2004-06-03 03:38:44 +00003200 asn1p_constraint_t *ct;
3201 ct = asn1p_constraint_new(yylineno);
3202 checkmem(ct);
3203 ct->type = ACT_EL_VALUE;
3204 ct->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
3205 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm6a02a8a2004-09-08 00:28:11 +00003206 ;
3207 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003208case 241:
3209#line 1854 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003210{
vlmfa67ddc2004-06-03 03:38:44 +00003211 char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
3212 int ret;
3213 *p = '@';
3214 strcpy(p + 1, yyvsp[0].tv_str);
3215 yyval.a_ref = asn1p_ref_new(yylineno);
3216 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
3217 checkmem(ret == 0);
3218 free(p);
3219 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003220 ;
3221 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003222case 242:
3223#line 1865 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003224{
vlmfa67ddc2004-06-03 03:38:44 +00003225 char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
3226 int ret;
3227 p[0] = '@';
3228 p[1] = '.';
3229 strcpy(p + 2, yyvsp[0].tv_str);
3230 yyval.a_ref = asn1p_ref_new(yylineno);
3231 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
3232 checkmem(ret == 0);
3233 free(p);
3234 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003235 ;
3236 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003237case 243:
3238#line 1881 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003239{
vlmfa67ddc2004-06-03 03:38:44 +00003240 yyval.tv_str = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00003241 ;
3242 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003243case 244:
3244#line 1884 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003245{
vlmfa67ddc2004-06-03 03:38:44 +00003246 int l1 = strlen(yyvsp[-2].tv_str);
3247 int l3 = strlen(yyvsp[0].tv_str);
3248 yyval.tv_str = malloc(l1 + 1 + l3 + 1);
3249 memcpy(yyval.tv_str, yyvsp[-2].tv_str, l1);
3250 yyval.tv_str[l1] = '.';
3251 memcpy(yyval.tv_str + l1 + 1, yyvsp[0].tv_str, l3);
3252 yyval.tv_str[l1 + 1 + l3] = '\0';
vlm6a02a8a2004-09-08 00:28:11 +00003253 ;
3254 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003255case 245:
3256#line 1902 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003257{
vlmc94e28f2004-09-15 11:59:51 +00003258 yyval.a_marker.flags = EM_NOMARK;
3259 yyval.a_marker.default_value = 0;
vlm6a02a8a2004-09-08 00:28:11 +00003260 ;
3261 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003262case 246:
3263#line 1906 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00003264{ yyval.a_marker = yyvsp[0].a_marker; ;
vlma2374a02004-09-14 02:44:07 +00003265 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003266case 247:
3267#line 1910 "asn1p_y.y"
vlma2374a02004-09-14 02:44:07 +00003268{
vlmc94e28f2004-09-15 11:59:51 +00003269 yyval.a_marker.flags = EM_OPTIONAL;
3270 yyval.a_marker.default_value = 0;
vlma2374a02004-09-14 02:44:07 +00003271 ;
3272 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003273case 248:
3274#line 1914 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00003275{
3276 yyval.a_marker.flags = EM_DEFAULT;
3277 yyval.a_marker.default_value = yyvsp[0].a_value;
3278 ;
3279 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003280case 249:
3281#line 1937 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003282{
vlm39e5ed72004-09-05 10:40:41 +00003283 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003284 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00003285 ;
3286 break;}
vlme1e6ed82005-03-24 14:26:38 +00003287case 250:
vlm7bbdc9f2005-03-28 15:01:27 +00003288#line 1941 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003289{
vlm7bbdc9f2005-03-28 15:01:27 +00003290 yyval.a_expr = yyvsp[-1].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00003291 ;
3292 break;}
vlme1e6ed82005-03-24 14:26:38 +00003293case 251:
vlm2c8c44d2005-03-24 16:22:35 +00003294#line 1947 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003295{
vlm7bbdc9f2005-03-28 15:01:27 +00003296 yyval.a_expr = asn1p_expr_new(yylineno);
3297 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00003298 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
3299 ;
3300 break;}
vlme1e6ed82005-03-24 14:26:38 +00003301case 252:
vlm7bbdc9f2005-03-28 15:01:27 +00003302#line 1952 "asn1p_y.y"
3303{
3304 yyval.a_expr = yyvsp[-2].a_expr;
3305 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
3306 ;
3307 break;}
3308case 253:
3309#line 1959 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003310{
vlm39e5ed72004-09-05 10:40:41 +00003311 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003312 checkmem(yyval.a_expr);
3313 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3314 yyval.a_expr->meta_type = AMT_VALUE;
3315 yyval.a_expr->Identifier = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00003316 ;
3317 break;}
vlme1e6ed82005-03-24 14:26:38 +00003318case 254:
vlm7bbdc9f2005-03-28 15:01:27 +00003319#line 1966 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003320{
vlm39e5ed72004-09-05 10:40:41 +00003321 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003322 checkmem(yyval.a_expr);
3323 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3324 yyval.a_expr->meta_type = AMT_VALUE;
vlm6611add2005-03-20 14:28:32 +00003325 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
3326 yyval.a_expr->value = yyvsp[-1].a_value;
3327 ;
3328 break;}
vlme1e6ed82005-03-24 14:26:38 +00003329case 255:
vlm7bbdc9f2005-03-28 15:01:27 +00003330#line 1974 "asn1p_y.y"
3331{
3332 yyval.a_expr = asn1p_expr_new(yylineno);
3333 checkmem(yyval.a_expr);
3334 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3335 yyval.a_expr->meta_type = AMT_VALUE;
3336 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
3337 yyval.a_expr->value = yyvsp[-1].a_value;
3338 ;
3339 break;}
3340case 256:
3341#line 1982 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003342{
3343 yyval.a_expr = asn1p_expr_new(yylineno);
3344 checkmem(yyval.a_expr);
3345 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3346 yyval.a_expr->meta_type = AMT_VALUE;
vlmfa67ddc2004-06-03 03:38:44 +00003347 yyval.a_expr->value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00003348 ;
3349 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003350case 257:
3351#line 1989 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003352{
vlm39e5ed72004-09-05 10:40:41 +00003353 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003354 checkmem(yyval.a_expr);
3355 yyval.a_expr->Identifier = strdup("...");
3356 checkmem(yyval.a_expr->Identifier);
3357 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
3358 yyval.a_expr->meta_type = AMT_VALUE;
vlm6a02a8a2004-09-08 00:28:11 +00003359 ;
3360 break;}
vlme1e6ed82005-03-24 14:26:38 +00003361case 258:
vlm7bbdc9f2005-03-28 15:01:27 +00003362#line 2000 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003363{
3364 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3365 checkmem(yyval.a_value);
3366 ;
vlma6a12e32005-03-20 12:58:00 +00003367 break;}
vlme1e6ed82005-03-24 14:26:38 +00003368case 259:
vlm7bbdc9f2005-03-28 15:01:27 +00003369#line 2004 "asn1p_y.y"
3370{
3371 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3372 checkmem(yyval.a_value);
3373 ;
vlm6611add2005-03-20 14:28:32 +00003374 break;}
vlme1e6ed82005-03-24 14:26:38 +00003375case 260:
vlm7bbdc9f2005-03-28 15:01:27 +00003376#line 2035 "asn1p_y.y"
3377{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
vlm6611add2005-03-20 14:28:32 +00003378 break;}
vlme1e6ed82005-03-24 14:26:38 +00003379case 261:
vlm7bbdc9f2005-03-28 15:01:27 +00003380#line 2036 "asn1p_y.y"
3381{ yyval.a_tag = yyvsp[0].a_tag; ;
3382 break;}
3383case 262:
3384#line 2040 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003385{
vlm2728a8d2005-01-23 09:51:44 +00003386 yyval.a_tag = yyvsp[-1].a_tag;
3387 yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
vlm6a02a8a2004-09-08 00:28:11 +00003388 ;
3389 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003390case 263:
3391#line 2047 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003392{
vlm2728a8d2005-01-23 09:51:44 +00003393 yyval.a_tag = yyvsp[-2].a_tag;
3394 yyval.a_tag.tag_value = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00003395 ;
3396 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003397case 264:
3398#line 2053 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003399{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
vlm6a02a8a2004-09-08 00:28:11 +00003400 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003401case 265:
3402#line 2054 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003403{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
vlm151c0b22004-09-22 16:03:36 +00003404 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003405case 266:
3406#line 2055 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003407{ yyval.a_tag.tag_class = TC_APPLICATION; ;
vlm0aa86902004-10-12 23:26:53 +00003408 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003409case 267:
3410#line 2056 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003411{ yyval.a_tag.tag_class = TC_PRIVATE; ;
3412 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003413case 268:
3414#line 2060 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003415{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
3416 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003417case 269:
3418#line 2061 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003419{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
vlm0aa86902004-10-12 23:26:53 +00003420 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003421case 270:
3422#line 2062 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003423{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
vlm0aa86902004-10-12 23:26:53 +00003424 break;}
vlm6611add2005-03-20 14:28:32 +00003425case 271:
vlm7bbdc9f2005-03-28 15:01:27 +00003426#line 2066 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00003427{
3428 checkmem(yyvsp[0].tv_str);
3429 yyval.tv_str = yyvsp[0].tv_str;
3430 ;
3431 break;}
3432case 272:
vlm7bbdc9f2005-03-28 15:01:27 +00003433#line 2070 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00003434{
3435 checkmem(yyvsp[0].tv_str);
3436 yyval.tv_str = yyvsp[0].tv_str;
3437 ;
3438 break;}
3439case 273:
vlm7bbdc9f2005-03-28 15:01:27 +00003440#line 2078 "asn1p_y.y"
3441{
3442 checkmem(yyvsp[0].tv_str);
3443 yyval.tv_str = yyvsp[0].tv_str;
3444 ;
vlme1e6ed82005-03-24 14:26:38 +00003445 break;}
3446case 274:
vlm7bbdc9f2005-03-28 15:01:27 +00003447#line 2085 "asn1p_y.y"
3448{ yyval.tv_str = 0; ;
3449 break;}
3450case 275:
3451#line 2086 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00003452{
3453 yyval.tv_str = yyvsp[0].tv_str;
3454 ;
3455 break;}
vlm7bbdc9f2005-03-28 15:01:27 +00003456case 276:
3457#line 2091 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003458{
vlm39e5ed72004-09-05 10:40:41 +00003459 checkmem(yyvsp[0].tv_str);
3460 yyval.tv_str = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00003461 ;
3462 break;}
vlm6a02a8a2004-09-08 00:28:11 +00003463}
3464 /* the action file gets copied in in place of this dollarsign */
3465#line 543 "/usr/share/bison.simple"
vlmfa67ddc2004-06-03 03:38:44 +00003466
3467 yyvsp -= yylen;
3468 yyssp -= yylen;
vlm6a02a8a2004-09-08 00:28:11 +00003469#ifdef YYLSP_NEEDED
3470 yylsp -= yylen;
3471#endif
vlmfa67ddc2004-06-03 03:38:44 +00003472
vlm6a02a8a2004-09-08 00:28:11 +00003473#if YYDEBUG != 0
vlmfa67ddc2004-06-03 03:38:44 +00003474 if (yydebug)
3475 {
vlm6a02a8a2004-09-08 00:28:11 +00003476 short *ssp1 = yyss - 1;
3477 fprintf (stderr, "state stack now");
3478 while (ssp1 != yyssp)
3479 fprintf (stderr, " %d", *++ssp1);
3480 fprintf (stderr, "\n");
vlmfa67ddc2004-06-03 03:38:44 +00003481 }
3482#endif
3483
3484 *++yyvsp = yyval;
3485
vlm6a02a8a2004-09-08 00:28:11 +00003486#ifdef YYLSP_NEEDED
3487 yylsp++;
3488 if (yylen == 0)
3489 {
3490 yylsp->first_line = yylloc.first_line;
3491 yylsp->first_column = yylloc.first_column;
3492 yylsp->last_line = (yylsp-1)->last_line;
3493 yylsp->last_column = (yylsp-1)->last_column;
3494 yylsp->text = 0;
3495 }
3496 else
3497 {
3498 yylsp->last_line = (yylsp+yylen-1)->last_line;
3499 yylsp->last_column = (yylsp+yylen-1)->last_column;
3500 }
3501#endif
vlmfa67ddc2004-06-03 03:38:44 +00003502
vlm6a02a8a2004-09-08 00:28:11 +00003503 /* Now "shift" the result of the reduction.
3504 Determine what state that goes to,
3505 based on the state we popped back to
3506 and the rule number reduced by. */
vlmfa67ddc2004-06-03 03:38:44 +00003507
3508 yyn = yyr1[yyn];
3509
vlm6a02a8a2004-09-08 00:28:11 +00003510 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
3511 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
vlmfa67ddc2004-06-03 03:38:44 +00003512 yystate = yytable[yystate];
3513 else
vlm6a02a8a2004-09-08 00:28:11 +00003514 yystate = yydefgoto[yyn - YYNTBASE];
vlmfa67ddc2004-06-03 03:38:44 +00003515
3516 goto yynewstate;
3517
vlm6a02a8a2004-09-08 00:28:11 +00003518yyerrlab: /* here on detecting error */
vlmfa67ddc2004-06-03 03:38:44 +00003519
vlm6a02a8a2004-09-08 00:28:11 +00003520 if (! yyerrstatus)
3521 /* If not already recovering from an error, report this error. */
vlmfa67ddc2004-06-03 03:38:44 +00003522 {
3523 ++yynerrs;
vlm6a02a8a2004-09-08 00:28:11 +00003524
3525#ifdef YYERROR_VERBOSE
vlmfa67ddc2004-06-03 03:38:44 +00003526 yyn = yypact[yystate];
3527
vlm6a02a8a2004-09-08 00:28:11 +00003528 if (yyn > YYFLAG && yyn < YYLAST)
vlmfa67ddc2004-06-03 03:38:44 +00003529 {
vlm6a02a8a2004-09-08 00:28:11 +00003530 int size = 0;
3531 char *msg;
3532 int x, count;
vlmfa67ddc2004-06-03 03:38:44 +00003533
vlm6a02a8a2004-09-08 00:28:11 +00003534 count = 0;
3535 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
3536 for (x = (yyn < 0 ? -yyn : 0);
3537 x < (ssize_t)(sizeof(yytname) / sizeof(char *)); x++)
3538 if (yycheck[x + yyn] == x)
3539 size += strlen(yytname[x]) + 15, count++;
3540 msg = (char *) malloc(size + 15);
3541 if (msg != 0)
vlmfa67ddc2004-06-03 03:38:44 +00003542 {
vlm6a02a8a2004-09-08 00:28:11 +00003543 strcpy(msg, "parse error");
vlmfa67ddc2004-06-03 03:38:44 +00003544
vlm6a02a8a2004-09-08 00:28:11 +00003545 if (count < 5)
vlmfa67ddc2004-06-03 03:38:44 +00003546 {
vlm6a02a8a2004-09-08 00:28:11 +00003547 count = 0;
3548 for (x = (yyn < 0 ? -yyn : 0);
3549 x < (ssize_t)(sizeof(yytname) / sizeof(char *)); x++)
3550 if (yycheck[x + yyn] == x)
vlmfa67ddc2004-06-03 03:38:44 +00003551 {
vlm6a02a8a2004-09-08 00:28:11 +00003552 strcat(msg, count == 0 ? ", expecting `" : " or `");
3553 strcat(msg, yytname[x]);
3554 strcat(msg, "'");
3555 count++;
vlmfa67ddc2004-06-03 03:38:44 +00003556 }
3557 }
vlm6a02a8a2004-09-08 00:28:11 +00003558 yyerror(msg);
3559 free(msg);
vlmfa67ddc2004-06-03 03:38:44 +00003560 }
3561 else
vlm6a02a8a2004-09-08 00:28:11 +00003562 yyerror ("parse error; also virtual memory exceeded");
vlmfa67ddc2004-06-03 03:38:44 +00003563 }
3564 else
3565#endif /* YYERROR_VERBOSE */
vlm6a02a8a2004-09-08 00:28:11 +00003566 yyerror("parse error");
vlmfa67ddc2004-06-03 03:38:44 +00003567 }
vlm6a02a8a2004-09-08 00:28:11 +00003568
vlmfa67ddc2004-06-03 03:38:44 +00003569 goto yyerrlab1;
vlm6a02a8a2004-09-08 00:28:11 +00003570yyerrlab1: /* here on error raised explicitly by an action */
vlmfa67ddc2004-06-03 03:38:44 +00003571
3572 if (yyerrstatus == 3)
3573 {
vlm6a02a8a2004-09-08 00:28:11 +00003574 /* if just tried and failed to reuse lookahead token after an error, discard it. */
vlmfa67ddc2004-06-03 03:38:44 +00003575
vlm6a02a8a2004-09-08 00:28:11 +00003576 /* return failure if at end of input */
vlmfa67ddc2004-06-03 03:38:44 +00003577 if (yychar == YYEOF)
vlm6a02a8a2004-09-08 00:28:11 +00003578 YYABORT;
vlmfa67ddc2004-06-03 03:38:44 +00003579
vlm6a02a8a2004-09-08 00:28:11 +00003580#if YYDEBUG != 0
3581 if (yydebug)
3582 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
3583#endif
3584
vlmfa67ddc2004-06-03 03:38:44 +00003585 yychar = YYEMPTY;
3586 }
3587
vlm6a02a8a2004-09-08 00:28:11 +00003588 /* Else will try to reuse lookahead token
3589 after shifting the error token. */
vlmfa67ddc2004-06-03 03:38:44 +00003590
vlm6a02a8a2004-09-08 00:28:11 +00003591 yyerrstatus = 3; /* Each real token shifted decrements this */
vlmfa67ddc2004-06-03 03:38:44 +00003592
vlm6a02a8a2004-09-08 00:28:11 +00003593 goto yyerrhandle;
vlm80103492004-09-07 10:39:09 +00003594
vlm6a02a8a2004-09-08 00:28:11 +00003595yyerrdefault: /* current state does not do anything special for the error token. */
vlm80103492004-09-07 10:39:09 +00003596
vlm6a02a8a2004-09-08 00:28:11 +00003597#if 0
3598 /* This is wrong; only states that explicitly want error tokens
3599 should shift them. */
3600 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
3601 if (yyn) goto yydefault;
vlm39e5ed72004-09-05 10:40:41 +00003602#endif
vlm6a02a8a2004-09-08 00:28:11 +00003603
3604yyerrpop: /* pop the current state because it cannot handle the error token */
3605
3606 if (yyssp == yyss) YYABORT;
3607 yyvsp--;
3608 yystate = *--yyssp;
3609#ifdef YYLSP_NEEDED
3610 yylsp--;
3611#endif
3612
3613#if YYDEBUG != 0
3614 if (yydebug)
3615 {
3616 short *ssp1 = yyss - 1;
3617 fprintf (stderr, "Error: state stack now");
3618 while (ssp1 != yyssp)
3619 fprintf (stderr, " %d", *++ssp1);
3620 fprintf (stderr, "\n");
vlm39e5ed72004-09-05 10:40:41 +00003621 }
vlm6a02a8a2004-09-08 00:28:11 +00003622#endif
3623
3624yyerrhandle:
3625
3626 yyn = yypact[yystate];
3627 if (yyn == YYFLAG)
3628 goto yyerrdefault;
3629
3630 yyn += YYTERROR;
3631 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
3632 goto yyerrdefault;
3633
3634 yyn = yytable[yyn];
3635 if (yyn < 0)
3636 {
3637 if (yyn == YYFLAG)
3638 goto yyerrpop;
3639 yyn = -yyn;
3640 goto yyreduce;
3641 }
3642 else if (yyn == 0)
3643 goto yyerrpop;
vlmfa67ddc2004-06-03 03:38:44 +00003644
3645 if (yyn == YYFINAL)
3646 YYACCEPT;
3647
vlm6a02a8a2004-09-08 00:28:11 +00003648#if YYDEBUG != 0
3649 if (yydebug)
3650 fprintf(stderr, "Shifting error token, ");
3651#endif
vlmfa67ddc2004-06-03 03:38:44 +00003652
3653 *++yyvsp = yylval;
vlm6a02a8a2004-09-08 00:28:11 +00003654#ifdef YYLSP_NEEDED
3655 *++yylsp = yylloc;
3656#endif
vlmfa67ddc2004-06-03 03:38:44 +00003657
3658 yystate = yyn;
3659 goto yynewstate;
3660
vlm6a02a8a2004-09-08 00:28:11 +00003661 yyacceptlab:
3662 /* YYACCEPT comes here. */
3663 if (yyfree_stacks)
3664 {
3665 free (yyss);
3666 free (yyvs);
3667#ifdef YYLSP_NEEDED
3668 free (yyls);
vlm044f7442004-09-04 04:49:21 +00003669#endif
vlm6a02a8a2004-09-08 00:28:11 +00003670 }
3671 return 0;
vlm80103492004-09-07 10:39:09 +00003672
vlm6a02a8a2004-09-08 00:28:11 +00003673 yyabortlab:
3674 /* YYABORT comes here. */
3675 if (yyfree_stacks)
3676 {
3677 free (yyss);
3678 free (yyvs);
3679#ifdef YYLSP_NEEDED
3680 free (yyls);
vlm80103492004-09-07 10:39:09 +00003681#endif
vlm6a02a8a2004-09-08 00:28:11 +00003682 }
3683 return 1;
vlmfa67ddc2004-06-03 03:38:44 +00003684}
vlm7bbdc9f2005-03-28 15:01:27 +00003685#line 2097 "asn1p_y.y"
vlmfa67ddc2004-06-03 03:38:44 +00003686
3687
3688
3689/*
3690 * Convert Xstring ('0101'B or '5'H) to the binary vector.
3691 */
3692static asn1p_value_t *
3693_convert_bitstring2binary(char *str, int base) {
3694 asn1p_value_t *val;
3695 int slen;
3696 int memlen;
3697 int baselen;
3698 int bits;
3699 uint8_t *binary_vector;
3700 uint8_t *bv_ptr;
3701 uint8_t cur_val;
3702
3703 assert(str);
3704 assert(str[0] == '\'');
3705
3706 switch(base) {
3707 case 'B':
3708 baselen = 1;
3709 break;
3710 case 'H':
3711 baselen = 4;
3712 break;
3713 default:
3714 assert(base == 'B' || base == 'H');
3715 errno = EINVAL;
3716 return NULL;
3717 }
3718
3719 slen = strlen(str);
3720 assert(str[slen - 1] == base);
3721 assert(str[slen - 2] == '\'');
3722
3723 memlen = slen / (8 / baselen); /* Conservative estimate */
3724
3725 bv_ptr = binary_vector = malloc(memlen + 1);
3726 if(bv_ptr == NULL)
3727 /* ENOMEM */
3728 return NULL;
3729
3730 cur_val = 0;
3731 bits = 0;
3732 while(*(++str) != '\'') {
3733 switch(baselen) {
3734 case 1:
3735 switch(*str) {
3736 case '1':
3737 cur_val |= 1 << (7 - (bits % 8));
3738 case '0':
3739 break;
3740 default:
3741 assert(!"_y UNREACH1");
3742 case ' ': case '\r': case '\n':
3743 continue;
3744 }
3745 break;
3746 case 4:
3747 switch(*str) {
3748 case '0': case '1': case '2': case '3': case '4':
3749 case '5': case '6': case '7': case '8': case '9':
3750 cur_val |= (*str - '0') << (4 - (bits % 8));
3751 break;
3752 case 'A': case 'B': case 'C':
3753 case 'D': case 'E': case 'F':
3754 cur_val |= ((*str - 'A') + 10)
3755 << (4 - (bits % 8));
3756 break;
3757 default:
3758 assert(!"_y UNREACH2");
3759 case ' ': case '\r': case '\n':
3760 continue;
3761 }
3762 break;
3763 }
3764
3765 bits += baselen;
3766 if((bits % 8) == 0) {
3767 *bv_ptr++ = cur_val;
3768 cur_val = 0;
3769 }
3770 }
3771
3772 *bv_ptr = cur_val;
3773 assert((bv_ptr - binary_vector) <= memlen);
3774
3775 val = asn1p_value_frombits(binary_vector, bits, 0);
3776 if(val == NULL) {
3777 free(binary_vector);
3778 }
3779
3780 return val;
3781}
3782
3783extern char *asn1p_text;
3784
3785int
3786yyerror(const char *msg) {
3787 fprintf(stderr,
3788 "ASN.1 grammar parse error "
3789 "near line %d (token \"%s\"): %s\n",
vlm39e5ed72004-09-05 10:40:41 +00003790 yylineno, asn1p_text, msg);
vlmfa67ddc2004-06-03 03:38:44 +00003791 return -1;
3792}
3793
3794