blob: 1f90ec3505a2b683e37c636fdbfa383f43db2c30 [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
vlm2c8c44d2005-03-24 16:22:35 +0000209#define YYFINAL 429
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,
278 631, 633, 635, 637, 643, 645, 649, 651, 655, 656,
279 658, 660, 662, 664, 666, 668, 672, 677, 679, 683,
280 686, 690, 692, 696, 697, 699, 701, 704, 707, 711,
281 713, 717, 719, 724, 729, 731, 733, 735, 737, 738,
282 740, 743, 748, 749, 751, 753, 755, 756, 758, 760,
283 762, 764, 766, 767, 769
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,
350 176, 0, 221, 0, 218, 0, 97, 32, 105, 197,
351 106, 0, 198, 0, 197, 110, 198, 0, 104, 0,
352 221, 185, 199, 0, 0, 200, 0, 75, 0, 17,
353 0, 71, 0, 202, 0, 203, 0, 105, 218, 106,
354 0, 202, 105, 204, 106, 0, 205, 0, 204, 110,
355 205, 0, 115, 206, 0, 115, 113, 206, 0, 221,
356 0, 206, 113, 221, 0, 0, 208, 0, 71, 0,
357 35, 173, 0, 105, 106, 0, 105, 210, 106, 0,
358 211, 0, 210, 110, 211, 0, 221, 0, 221, 107,
359 212, 108, 0, 221, 107, 175, 108, 0, 212, 0,
360 104, 0, 9, 0, 12, 0, 0, 214, 0, 215,
361 217, 0, 116, 216, 9, 117, 0, 0, 91, 0,
362 21, 0, 77, 0, 0, 54, 0, 43, 0, 13,
363 0, 14, 0, 14, 0, 0, 221, 0, 8, 0
vlm6a02a8a2004-09-08 00:28:11 +0000364};
vlmfa67ddc2004-06-03 03:38:44 +0000365
366#endif
367
vlm6a02a8a2004-09-08 00:28:11 +0000368#if YYDEBUG != 0
369static const short yyrline[] = { 0,
vlm2c8c44d2005-03-24 16:22:35 +0000370 305, 311, 317, 333, 358, 360, 363, 367, 372, 379,
371 387, 392, 396, 405, 407, 415, 419, 427, 431, 434,
372 437, 441, 461, 463, 471, 475, 507, 511, 520, 527,
373 540, 547, 549, 561, 574, 581, 586, 592, 598, 607,
374 613, 619, 626, 632, 640, 644, 647, 654, 660, 666,
375 673, 679, 688, 698, 706, 714, 716, 726, 729, 733,
376 736, 748, 760, 766, 782, 791, 801, 811, 816, 823,
377 830, 840, 846, 852, 856, 879, 881, 883, 889, 895,
378 902, 909, 914, 920, 926, 932, 937, 947, 949, 952,
379 960, 966, 975, 981, 998, 1000, 1005, 1009, 1014, 1019,
380 1025, 1029, 1040, 1049, 1058, 1069, 1091, 1095, 1101, 1107,
381 1113, 1123, 1133, 1139, 1153, 1177, 1184, 1198, 1207, 1217,
382 1227, 1237, 1245, 1266, 1275, 1284, 1285, 1287, 1294, 1306,
383 1316, 1324, 1324, 1329, 1334, 1339, 1344, 1348, 1352, 1355,
384 1358, 1363, 1375, 1392, 1397, 1402, 1435, 1445, 1459, 1461,
385 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471,
386 1472, 1478, 1480, 1481, 1484, 1491, 1503, 1505, 1509, 1513,
387 1514, 1515, 1516, 1517, 1521, 1522, 1523, 1524, 1528, 1529,
388 1536, 1536, 1537, 1537, 1538, 1540, 1542, 1547, 1551, 1560,
389 1564, 1569, 1573, 1579, 1589, 1593, 1596, 1599, 1602, 1607,
390 1616, 1624, 1630, 1636, 1643, 1651, 1659, 1668, 1671, 1674,
391 1675, 1685, 1687, 1688, 1689, 1692, 1696, 1701, 1707, 1712,
392 1715, 1718, 1731, 1745, 1751, 1755, 1760, 1766, 1778, 1780,
393 1783, 1787, 1790, 1795, 1799, 1807, 1822, 1828, 1835, 1848,
394 1860, 1875, 1879, 1896, 1901, 1904, 1909, 1931, 1936, 1941,
395 1947, 1953, 1961, 1969, 1977, 1984, 1994, 1999, 2029, 2031,
396 2034, 2041, 2047, 2049, 2050, 2051, 2054, 2056, 2057, 2060,
397 2065, 2072, 2079, 2081, 2085
vlm6a02a8a2004-09-08 00:28:11 +0000398};
399#endif
400
401
402#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
403
404static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ",
405"TOK_opaque","TOK_bstring","TOK_cstring","TOK_hstring","TOK_identifier","TOK_number",
vlm2c8c44d2005-03-24 16:22:35 +0000406"TOK_tuple","TOK_quadruple","TOK_number_negative","TOK_typereference","TOK_capitalreference",
407"TOK_typefieldreference","TOK_valuefieldreference","TOK_ABSENT","TOK_ABSTRACT_SYNTAX",
408"TOK_ALL","TOK_ANY","TOK_APPLICATION","TOK_AUTOMATIC","TOK_BEGIN","TOK_BIT",
409"TOK_BMPString","TOK_BOOLEAN","TOK_BY","TOK_CHARACTER","TOK_CHOICE","TOK_CLASS",
410"TOK_COMPONENT","TOK_COMPONENTS","TOK_CONSTRAINED","TOK_CONTAINING","TOK_DEFAULT",
411"TOK_DEFINITIONS","TOK_DEFINED","TOK_EMBEDDED","TOK_ENCODED","TOK_ENCODING_CONTROL",
412"TOK_END","TOK_ENUMERATED","TOK_EXPLICIT","TOK_EXPORTS","TOK_EXTENSIBILITY",
413"TOK_EXTERNAL","TOK_FALSE","TOK_FROM","TOK_GeneralizedTime","TOK_GeneralString",
414"TOK_GraphicString","TOK_IA5String","TOK_IDENTIFIER","TOK_IMPLICIT","TOK_IMPLIED",
415"TOK_IMPORTS","TOK_INCLUDES","TOK_INSTANCE","TOK_INSTRUCTIONS","TOK_INTEGER",
416"TOK_ISO646String","TOK_MAX","TOK_MIN","TOK_MINUS_INFINITY","TOK_NULL","TOK_NumericString",
417"TOK_OBJECT","TOK_ObjectDescriptor","TOK_OCTET","TOK_OF","TOK_OPTIONAL","TOK_PATTERN",
418"TOK_PDV","TOK_PLUS_INFINITY","TOK_PRESENT","TOK_PrintableString","TOK_PRIVATE",
419"TOK_REAL","TOK_RELATIVE_OID","TOK_SEQUENCE","TOK_SET","TOK_SIZE","TOK_STRING",
420"TOK_SYNTAX","TOK_T61String","TOK_TAGS","TOK_TeletexString","TOK_TRUE","TOK_TYPE_IDENTIFIER",
421"TOK_UNIQUE","TOK_UNIVERSAL","TOK_UniversalString","TOK_UTCTime","TOK_UTF8String",
422"TOK_VideotexString","TOK_VisibleString","TOK_WITH","TOK_EXCEPT","'^'","TOK_INTERSECTION",
423"'|'","TOK_UNION","TOK_TwoDots","TOK_ThreeDots","'{'","'}'","'('","')'","';'",
424"','","':'","'!'","'.'","'<'","'@'","'['","']'","ParsedGrammar","ModuleList",
425"ModuleSpecification","optObjectIdentifier","ObjectIdentifier","ObjectIdentifierBody",
426"ObjectIdentifierElement","optModuleSpecificationFlags","ModuleSpecificationFlags",
427"ModuleSpecificationFlag","optModuleSpecificationBody","ModuleSpecificationBody",
428"ModuleSpecificationElement","@1","ImportsDefinition","ImportsBundleSet","ImportsBundle",
429"ImportsList","ImportsElement","ExportsDefinition","ExportsBody","ExportsElement",
430"ValueSetDefinition","DefinedTypeRef","optValueSetBody","ValueSetBody","ValueSetElement",
431"DataTypeReference","ParameterArgumentList","ParameterArgumentName","ActualParameterList",
432"ActualParameter","optComponentTypeLists","ComponentTypeLists","ComponentType",
433"AlternativeTypeLists","AlternativeType","ClassDeclaration","optUnique","ClassFieldList",
434"ClassField","optWithSyntax","WithSyntax","@2","WithSyntaxFormat","WithSyntaxFormatToken",
435"ExtensionAndException","Type","TypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList",
vlm0aa86902004-10-12 23:26:53 +0000436"ComplexTypeReferenceElement","ClassFieldIdentifier","ClassFieldName","ValueDefinition",
vlme1e6ed82005-03-24 14:26:38 +0000437"Value","@3","DefinedValue","RestrictedCharacterStringValue","Opaque","BasicTypeId",
438"BasicTypeId_UniverationCompatible","BasicType","BasicString","Union","Intersection",
439"Except","optConstraints","Constraints","SetOfConstraints","ElementSetSpecs",
440"ElementSetSpec","ConstraintSubtypeElement","@4","ConstraintRangeSpec","ConstraintSpec",
441"SingleValue","ContainedSubtype","WithComponents","WithComponentsList","WithComponentsElement",
442"optPresenceConstraint","PresenceConstraint","TableConstraint","SimpleTableConstraint",
443"ComponentRelationConstraint","AtNotationList","AtNotationElement","ComponentIdList",
444"optMarker","Marker","UniverationDefinition","UniverationList","UniverationElement",
445"SignedNumber","optTag","Tag","TagTypeValue","TagClass","TagPlicit","TypeRefName",
446"ObjectClassReference","optIdentifier","Identifier", NULL
vlm6a02a8a2004-09-08 00:28:11 +0000447};
448#endif
449
450static const short yyr1[] = { 0,
vlm2c8c44d2005-03-24 16:22:35 +0000451 118, 119, 119, 120, 121, 121, 122, 122, 123, 123,
452 124, 124, 124, 125, 125, 126, 126, 127, 127, 127,
453 127, 127, 128, 128, 129, 129, 130, 130, 130, 130,
454 130, 131, 130, 130, 132, 132, 133, 133, 134, 135,
455 135, 136, 136, 136, 137, 137, 137, 138, 138, 139,
456 139, 139, 140, 141, 141, 142, 142, 143, 143, 144,
457 144, 145, 145, 145, 145, 146, 146, 147, 147, 147,
458 147, 148, 148, 149, 149, 150, 150, 151, 151, 152,
459 152, 152, 153, 153, 154, 154, 155, 156, 156, 157,
460 157, 158, 158, 158, 159, 159, 161, 160, 162, 162,
461 163, 163, 164, 164, 164, 165, 166, 166, 166, 166,
462 166, 166, 166, 166, 166, 166, 166, 167, 167, 167,
463 167, 167, 167, 168, 168, 169, 170, 171, 171, 172,
464 173, 174, 173, 173, 173, 173, 173, 173, 173, 173,
465 173, 175, 175, 176, 176, 176, 177, 177, 178, 178,
466 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
467 178, 179, 179, 179, 180, 180, 181, 181, 181, 181,
468 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
469 182, 182, 183, 183, 184, 185, 185, 186, 186, 187,
470 187, 188, 188, 188, 189, 189, 189, 189, 189, 190,
471 190, 190, 190, 190, 190, 190, 190, 190, 190, 191,
472 190, 192, 192, 192, 192, 193, 193, 194, 194, 194,
473 194, 194, 195, 196, 197, 197, 198, 198, 199, 199,
474 200, 200, 200, 201, 201, 202, 203, 204, 204, 205,
475 205, 206, 206, 207, 207, 208, 208, 209, 209, 210,
476 210, 211, 211, 211, 211, 211, 212, 212, 213, 213,
477 214, 215, 216, 216, 216, 216, 217, 217, 217, 218,
478 218, 219, 220, 220, 221
vlm6a02a8a2004-09-08 00:28:11 +0000479};
480
481static const short yyr2[] = { 0,
482 1, 1, 2, 8, 0, 1, 3, 2, 1, 2,
483 1, 4, 1, 0, 1, 1, 2, 2, 2, 2,
484 2, 2, 0, 1, 1, 2, 1, 1, 1, 1,
485 1, 0, 3, 1, 3, 2, 1, 2, 4, 1,
vlm0aa86902004-10-12 23:26:53 +0000486 3, 1, 3, 1, 3, 3, 2, 1, 3, 1,
487 3, 1, 6, 1, 1, 0, 1, 1, 3, 1,
488 1, 4, 3, 3, 6, 1, 3, 1, 3, 3,
vlm4053ca52005-02-18 16:34:21 +0000489 3, 1, 3, 1, 1, 0, 1, 1, 3, 3,
490 3, 1, 1, 3, 2, 1, 5, 0, 1, 1,
491 3, 2, 4, 4, 0, 1, 0, 6, 1, 2,
vlm5e2c4b92005-03-20 11:12:40 +0000492 1, 1, 1, 3, 3, 3, 1, 4, 4, 4,
493 6, 6, 1, 4, 4, 1, 3, 1, 3, 3,
494 3, 1, 3, 1, 3, 1, 1, 1, 1, 4,
495 3, 0, 3, 1, 1, 1, 1, 1, 1, 1,
vlm2c8c44d2005-03-24 16:22:35 +0000496 1, 1, 3, 1, 1, 1, 1, 2, 1, 1,
vlme1e6ed82005-03-24 14:26:38 +0000497 1, 1, 2, 2, 1, 1, 2, 2, 1, 1,
498 1, 1, 1, 2, 1, 2, 1, 1, 1, 1,
vlm6a02a8a2004-09-08 00:28:11 +0000499 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
vlme1e6ed82005-03-24 14:26:38 +0000500 1, 1, 1, 1, 1, 0, 1, 1, 4, 3,
501 4, 1, 3, 5, 1, 3, 3, 3, 3, 4,
502 3, 1, 1, 3, 3, 3, 3, 1, 1, 0,
503 5, 1, 2, 2, 3, 1, 1, 1, 1, 1,
504 1, 1, 1, 5, 1, 3, 1, 3, 0, 1,
505 1, 1, 1, 1, 1, 3, 4, 1, 3, 2,
506 3, 1, 3, 0, 1, 1, 2, 2, 3, 1,
507 3, 1, 4, 4, 1, 1, 1, 1, 0, 1,
508 2, 4, 0, 1, 1, 1, 0, 1, 1, 1,
509 1, 1, 0, 1, 1
vlm6a02a8a2004-09-08 00:28:11 +0000510};
511
512static const short yydefact[] = { 0,
vlme1e6ed82005-03-24 14:26:38 +0000513 270, 271, 1, 2, 5, 3, 0, 0, 6, 275,
vlm6a02a8a2004-09-08 00:28:11 +0000514 13, 8, 0, 9, 11, 14, 7, 10, 0, 0,
515 0, 0, 0, 0, 0, 15, 16, 0, 22, 20,
vlme1e6ed82005-03-24 14:26:38 +0000516 18, 21, 19, 0, 17, 12, 23, 167, 0, 0,
517 168, 169, 170, 0, 171, 172, 180, 173, 174, 175,
518 176, 177, 178, 179, 0, 24, 25, 27, 28, 31,
vlm0aa86902004-10-12 23:26:53 +0000519 29, 30, 34, 0, 0, 32, 0, 47, 0, 48,
520 50, 52, 36, 0, 37, 0, 40, 42, 44, 4,
vlme1e6ed82005-03-24 14:26:38 +0000521 26, 259, 118, 272, 0, 149, 0, 0, 163, 156,
522 160, 162, 150, 0, 0, 151, 155, 159, 0, 0,
523 54, 55, 152, 161, 122, 0, 33, 46, 45, 0,
524 0, 35, 38, 0, 0, 0, 0, 263, 64, 63,
525 0, 260, 267, 0, 164, 158, 157, 154, 153, 0,
vlm5e2c4b92005-03-20 11:12:40 +0000526 66, 0, 68, 0, 0, 0, 49, 51, 5, 41,
vlme1e6ed82005-03-24 14:26:38 +0000527 43, 0, 265, 266, 264, 0, 118, 272, 113, 0,
528 0, 186, 186, 62, 186, 116, 165, 152, 107, 0,
529 269, 268, 261, 119, 121, 0, 0, 0, 0, 56,
530 128, 129, 123, 124, 126, 120, 137, 144, 138, 257,
vlm2c8c44d2005-03-24 16:22:35 +0000531 145, 146, 258, 135, 134, 136, 132, 130, 141, 139,
532 140, 0, 142, 39, 0, 90, 259, 127, 0, 0,
533 0, 0, 0, 76, 0, 0, 187, 188, 76, 0,
534 106, 0, 166, 259, 259, 67, 71, 70, 69, 0,
535 0, 218, 217, 0, 216, 219, 0, 60, 0, 0,
536 0, 57, 58, 221, 61, 195, 0, 202, 203, 209,
537 208, 234, 235, 220, 223, 222, 0, 0, 0, 0,
538 95, 0, 0, 246, 88, 88, 92, 245, 0, 262,
539 0, 103, 0, 83, 86, 259, 117, 0, 0, 0,
540 77, 78, 82, 259, 0, 192, 273, 0, 0, 273,
541 256, 248, 0, 250, 255, 252, 0, 72, 74, 75,
542 65, 0, 0, 212, 0, 0, 0, 0, 0, 53,
543 0, 183, 184, 181, 182, 0, 0, 185, 0, 0,
544 0, 0, 125, 147, 133, 143, 131, 0, 87, 96,
vlme1e6ed82005-03-24 14:26:38 +0000545 91, 247, 89, 244, 244, 114, 0, 108, 0, 85,
546 0, 259, 109, 0, 244, 190, 0, 259, 274, 0,
547 110, 259, 249, 0, 0, 115, 259, 196, 210, 213,
vlm2c8c44d2005-03-24 16:22:35 +0000548 214, 207, 205, 0, 236, 201, 59, 197, 198, 199,
549 0, 206, 204, 0, 0, 238, 148, 0, 93, 94,
550 104, 105, 142, 84, 189, 81, 79, 80, 193, 0,
551 191, 0, 251, 0, 0, 73, 0, 215, 227, 0,
552 225, 186, 200, 0, 240, 242, 237, 0, 97, 0,
553 111, 112, 254, 253, 211, 224, 0, 229, 241, 0,
554 239, 0, 194, 226, 232, 233, 231, 228, 230, 243,
555 101, 0, 99, 102, 98, 100, 0, 0, 0
vlm6a02a8a2004-09-08 00:28:11 +0000556};
557
vlm2c8c44d2005-03-24 16:22:35 +0000558static const short yydefgoto[] = { 427,
vlm6a02a8a2004-09-08 00:28:11 +0000559 3, 4, 8, 9, 13, 14, 25, 26, 27, 55,
vlm5e2c4b92005-03-20 11:12:40 +0000560 56, 57, 107, 58, 74, 75, 76, 77, 59, 69,
vlm2c8c44d2005-03-24 16:22:35 +0000561 70, 60, 100, 231, 232, 233, 61, 130, 131, 287,
562 288, 270, 271, 272, 263, 264, 119, 324, 195, 196,
563 319, 320, 412, 422, 423, 273, 289, 155, 156, 173,
564 174, 197, 198, 62, 188, 248, 189, 234, 315, 157,
565 103, 159, 104, 306, 307, 309, 206, 207, 208, 275,
566 276, 236, 387, 296, 237, 238, 239, 240, 390, 391,
567 418, 419, 241, 242, 243, 365, 366, 395, 257, 258,
568 213, 283, 284, 244, 259, 122, 123, 146, 163, 245,
569 105, 338, 246
vlm6a02a8a2004-09-08 00:28:11 +0000570};
571
vlm2c8c44d2005-03-24 16:22:35 +0000572static const short yypact[] = { 131,
573-32768,-32768, 131,-32768, -60,-32768, 15, 25,-32768,-32768,
574-32768,-32768, 27,-32768, -1, 141,-32768,-32768, 88, 79,
575 62, 71, 65, 89, 188, 141,-32768, 101,-32768,-32768,
576-32768,-32768,-32768, 200,-32768,-32768, 517,-32768, 215, 38,
577-32768,-32768,-32768, 61,-32768,-32768,-32768,-32768,-32768,-32768,
578-32768,-32768,-32768,-32768, 190, 517,-32768,-32768,-32768,-32768,
579-32768,-32768,-32768, 355, 746,-32768, 146,-32768, 72,-32768,
580 152,-32768,-32768, 34,-32768, -10,-32768, 156,-32768,-32768,
581-32768, -3, 158,-32768, 182,-32768, 189, 216,-32768,-32768,
582-32768,-32768,-32768, 242, 213,-32768,-32768,-32768, 821, 294,
583-32768,-32768,-32768,-32768, 185, 296,-32768,-32768,-32768, 145,
584 194,-32768,-32768, 131, 145, 196, 198, 5,-32768,-32768,
585 594,-32768, 64, 145,-32768,-32768,-32768,-32768,-32768, -66,
586-32768, 193, 195, 202, 235, 159,-32768,-32768, -60,-32768,
587-32768, 237,-32768,-32768,-32768, 299, -11, 204, 273, 206,
588 243, -27, -12,-32768, -6,-32768,-32768, 207,-32768, 209,
589-32768,-32768,-32768,-32768,-32768, 302, 821, 309, 145, 268,
590-32768,-32768, 205,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
vlme1e6ed82005-03-24 14:26:38 +0000591-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
vlm2c8c44d2005-03-24 16:22:35 +0000592-32768, 208, 212,-32768, -19,-32768, 6,-32768, 211, 292,
593 42, 254, 217, 7, 453, 255,-32768, 219, 7, 260,
594-32768, 50,-32768, 12, 218,-32768,-32768,-32768,-32768, 234,
595 306,-32768,-32768, -4,-32768,-32768, 303,-32768, 131, 453,
596 230, 229,-32768,-32768, 184, 244, 238, -4,-32768,-32768,
597-32768, 236,-32768,-32768,-32768,-32768, 237, 342, 309, 159,
598 251, 237, 159,-32768, 259, 259,-32768,-32768, 671,-32768,
599 309, 239, 83,-32768,-32768, 218,-32768, 453, 283, 246,
600 245,-32768,-32768, 218, 252, 126, 309, 453, 248, 309,
601-32768,-32768, 102,-32768,-32768, 256, 110,-32768,-32768,-32768,
602-32768, 465, 257, 250, 263, 168, 262, 253, 266,-32768,
603 268,-32768,-32768,-32768,-32768, 465, 465,-32768, 465, 453,
604 282, 261,-32768,-32768, 367,-32768,-32768, 293,-32768,-32768,
605-32768,-32768,-32768, 8, 8,-32768, 225,-32768, 42,-32768,
606 270, 218,-32768, 7, 8,-32768, 278, 218,-32768, 276,
607-32768, 218,-32768, 56, 225,-32768, 12,-32768,-32768,-32768,
608 271,-32768,-32768, 46,-32768,-32768,-32768,-32768,-32768,-32768,
609 280,-32768,-32768, 1, 111,-32768,-32768, 281,-32768,-32768,
610-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 279, 671,
611-32768, 671,-32768, 284, 286,-32768, 342,-32768,-32768, 134,
612-32768, -6,-32768, 309, 277,-32768,-32768, 261,-32768, 453,
613-32768,-32768,-32768,-32768, 367,-32768, 46, 17, 277, 309,
614-32768, 183, 184,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
615-32768, 13,-32768,-32768,-32768,-32768, 391, 395,-32768
vlm6a02a8a2004-09-08 00:28:11 +0000616};
617
618static const short yypgoto[] = {-32768,
vlm2c8c44d2005-03-24 16:22:35 +0000619-32768, 396, 269,-32768,-32768, 389,-32768,-32768, 383,-32768,
620-32768, 354,-32768,-32768,-32768, 337,-32768, 297,-32768,-32768,
621 304,-32768, 348,-32768,-32768, 116,-32768,-32768, 258,-32768,
622 80, 210,-32768, 84,-32768, 97,-32768, 172,-32768, 177,
623-32768,-32768,-32768,-32768, 10, -187, -74, -192, -53,-32768,
624 191, -190, -122,-32768, -169,-32768, -256, -118, 43, -33,
625 -120,-32768, 48,-32768,-32768,-32768, -151,-32768,-32768, -205,
626 -165, -96,-32768, 197,-32768, -213,-32768,-32768,-32768, 29,
627-32768,-32768,-32768,-32768,-32768,-32768, 39, 45, -121,-32768,
628-32768,-32768, 99, -126, -79,-32768,-32768,-32768,-32768, 16,
629-32768, 161, -7
vlm6a02a8a2004-09-08 00:28:11 +0000630};
631
632
vlm2c8c44d2005-03-24 16:22:35 +0000633#define YYLAST 917
vlm6a02a8a2004-09-08 00:28:11 +0000634
635
636static const short yytable[] = { 15,
vlm2c8c44d2005-03-24 16:22:35 +0000637 158, 210, 121, 211, 235, 15, 256, 120, 10, 191,
638 101, 101, 175, 265, 10, 5, 421, 190, 5, 10,
639 171, 172, 10, 11, 299, 143, 117, 171, 172, 65,
640 102, 102, 72, 415, 10, 11, 79, 114, 269, 166,
641 253, 10, 253, 167, 7, 10, 1, 2, 65, 10,
642 1, 2, 64, 10, 203, 71, 67, 10, 180, 78,
643 16, 183, 331, 10, 180, 132, 79, 183, 10, 203,
644 371, 64, 340, 1, 2, 203, 254, 204, 254, 205,
645 317, 144, 353, 322, 63, 285, 251, 416, 384, 78,
646 252, 417, 209, -270, 205, 145, 28, 363, 294, 115,
647 205, 124, 72, 63, 361, 19, 161, 79, 73, 295,
648 262, -244, 118, 394, 133, -244, 165, 162, 425, 32,
649 12, 118, 255, 191, 175, 71, 191, 118, 193, 139,
650 78, 190, 17, 132, 190, 235, 160, 29, 158, 164,
651 291, 265, 112, 1, 2, 262, 68, 30, 267, 389,
652 176, 192, 10, 281, 20, 282, 31, 1, 2, 281,
653 217, 219, 21, 177, 178, 179, 10, 180, 181, 182,
654 183, 1, 2, 178, 33, 10, 180, 181, 182, 183,
655 109, 110, 133, 22, 218, 23, 421, 401, 328, 402,
656 34, 330, 329, 266, 24, 348, 274, 171, 172, 335,
657 372, 274, 369, 370, 286, 184, 290, 343, 36, 358,
658 359, 344, 360, 378, 222, 346, 397, 285, 385, 347,
659 398, 424, 37, 185, 302, 303, 304, 305, 66, 352,
660 80, 424, 10, 180, 413, 337, 183, 1, 2, 406,
661 408, 316, 193, 407, 298, 193, 186, 1, 2, 171,
662 172, 171, 172, 326, 108, 226, 111, 376, 380, 158,
663 116, 158, 382, 187, 125, 192, 83, 84, 192, 339,
664 124, 126, 339, 178, 160, 10, 180, 181, 182, 183,
665 1, 2, 302, 303, 304, 305, 220, 178, 127, 10,
666 180, 181, 182, 183, 128, 129, 134, 135, 136, 138,
667 221, 141, 142, 168, 215, 169, 170, 199, -271, 200,
668 201, 212, 202, 214, 222, 223, 10, 247, 261, 373,
669 249, 266, 250, 268, 277, 278, 274, 260, 222, 280,
670 224, 292, 293, 118, 297, 300, 286, 373, 301, 290,
671 312, 308, 192, 362, 310, 314, 392, 318, 323, 225,
672 327, 333, 332, 341, 334, 226, 396, 82, 355, 336,
673 192, 349, 345, 350, 227, 351, 354, 83, 84, 226,
674 367, 228, 229, 356, 230, 364, 368, 375, 85, 38,
675 86, 379, 87, 381, 388, 399, 396, 393, 400, 410,
676 428, 403, 88, 404, 429, 160, 89, 160, 6, 392,
677 90, 18, 420, 91, 41, 42, 43, 194, 35, 81,
678 113, 140, 106, 137, 92, 45, 357, 377, 279, 93,
679 46, 94, 47, 95, 216, 374, 386, 325, 321, 405,
680 48, 426, 96, 97, 311, 414, 411, 313, 409, 49,
681 342, 50, 383, 0, 0, 0, 51, 98, 52, 53,
682 54, 0, 0, 0, 0, 0, 0, 0, 178, 99,
683 10, 180, 181, 182, 183, 1, 2, 0, 0, 0,
684 178, 220, 10, 180, 181, 182, 183, 1, 2, 0,
685 0, 0, 0, 0, 0, 221, 0, 0, 0, 0,
686 0, 0, 0, 0, 0, 0, 0, 221, 0, 222,
687 223, 0, 0, 0, 0, 0, 0, 0, 0, 0,
688 0, 222, 223, 0, 0, 224, 0, 0, 0, 0,
689 0, 0, 0, 0, 10, 0, 0, 224, 0, 1,
690 2, 0, 0, 0, 225, 0, 0, 0, 0, 0,
691 226, 38, 0, 0, 0, 0, 225, 0, 0, 227,
692 0, 0, 226, 0, 0, 0, 39, 229, 0, 230,
693 40, 227, 0, 0, 0, 0, 41, 42, 43, 229,
694 0, 230, 44, 0, 0, 0, 0, 45, 0, 0,
695 0, 0, 46, 0, 47, 0, 0, 0, 0, 0,
696 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
697 0, 49, 0, 50, 0, 0, 147, 148, 51, 0,
698 52, 53, 54, 149, 0, 0, 0, 85, 38, 86,
699 0, 87, 150, 0, 0, 0, 0, 0, 0, 0,
700 0, 88, 0, 0, 0, 89, 0, 0, 0, 90,
701 0, 0, 91, 41, 42, 43, 0, 0, 0, 0,
702 0, 151, 0, 92, 45, 0, 0, 0, 93, 46,
703 94, 47, 95, 0, 0, 0, 0, 0, 0, 48,
704 0, 96, 97, 152, 153, 0, 0, 0, 49, 0,
705 50, 0, 154, 147, 148, 51, 98, 52, 53, 54,
706 149, 0, 0, 0, 85, 38, 86, 0, 87, 150,
707 0, 0, 0, 0, 0, 0, 0, 0, 88, 0,
708 0, 0, 89, 0, 0, 0, 90, 0, 0, 91,
709 41, 42, 43, 0, 0, 0, 0, 0, 151, 0,
710 92, 45, 0, 0, 0, 93, 46, 94, 47, 95,
711 0, 0, 0, 0, 0, 0, 48, 0, 96, 97,
712 152, 153, 0, 0, 0, 49, 0, 50, 83, 84,
713 0, 0, 51, 98, 52, 53, 54, 0, 0, 85,
714 38, 86, 0, 87, 0, 0, 0, 0, 0, 0,
715 0, 0, 0, 88, 0, 0, 0, 89, 0, 0,
716 0, 90, 0, 0, 91, 41, 42, 43, 0, 0,
717 0, 0, 0, 0, 0, 92, 45, 0, 0, 0,
718 93, 46, 94, 47, 95, 0, 0, 0, 0, 0,
719 0, 48, 0, 96, 97, 0, 0, 0, 0, 0,
720 49, 0, 50, 1, 2, 0, 0, 51, 98, 52,
721 53, 54, 0, 0, 85, 38, 86, 0, 87, 0,
722 0, 0, 0, 0, 0, 0, 0, 0, 88, 0,
723 0, 0, 89, 0, 0, 0, 90, 0, 0, 91,
724 41, 42, 43, 0, 0, 0, 0, 0, 0, 0,
725 92, 45, 0, 0, 0, 93, 46, 94, 47, 95,
726 0, 0, 0, 0, 0, 0, 48, 0, 96, 97,
727 0, 0, 0, 0, 0, 49, 0, 50, 0, 0,
728 0, 0, 51, 98, 52, 53, 54
vlm6a02a8a2004-09-08 00:28:11 +0000729};
730
731static const short yycheck[] = { 7,
vlm2c8c44d2005-03-24 16:22:35 +0000732 121, 153, 82, 155, 170, 13, 197, 82, 8, 136,
733 64, 65, 135, 201, 8, 0, 4, 136, 3, 8,
734 15, 16, 8, 9, 230, 21, 30, 15, 16, 37,
735 64, 65, 40, 17, 8, 9, 44, 48, 32, 106,
736 35, 8, 35, 110, 105, 8, 13, 14, 56, 8,
737 13, 14, 37, 8, 82, 40, 19, 8, 9, 44,
738 36, 12, 268, 8, 9, 99, 74, 12, 8, 82,
739 327, 56, 278, 13, 14, 82, 71, 105, 71, 107,
740 250, 77, 296, 253, 37, 212, 106, 71, 345, 74,
741 110, 75, 105, 105, 107, 91, 9, 311, 103, 110,
742 107, 113, 110, 56, 310, 107, 43, 115, 48, 114,
743 104, 106, 116, 113, 99, 110, 124, 54, 106, 55,
744 106, 116, 197, 250, 247, 110, 253, 116, 136, 114,
745 115, 250, 106, 167, 253, 301, 121, 59, 259, 124,
746 215, 329, 109, 13, 14, 104, 109, 86, 202, 104,
747 135, 136, 8, 104, 14, 106, 86, 13, 14, 104,
748 168, 169, 22, 5, 6, 7, 8, 9, 10, 11,
749 12, 13, 14, 6, 86, 8, 9, 10, 11, 12,
750 109, 110, 167, 43, 169, 45, 4, 380, 106, 382,
751 3, 266, 110, 201, 54, 292, 204, 15, 16, 274,
752 327, 209, 324, 325, 212, 47, 214, 106, 108, 306,
753 307, 110, 309, 335, 47, 106, 106, 344, 345, 110,
754 110, 412, 23, 65, 99, 100, 101, 102, 14, 62,
755 41, 422, 8, 9, 400, 110, 12, 13, 14, 106,
756 392, 249, 250, 110, 229, 253, 88, 13, 14, 15,
757 16, 15, 16, 261, 109, 88, 105, 332, 338, 380,
758 105, 382, 342, 105, 83, 250, 13, 14, 253, 277,
759 113, 83, 280, 6, 259, 8, 9, 10, 11, 12,
760 13, 14, 99, 100, 101, 102, 19, 6, 73, 8,
761 9, 10, 11, 12, 53, 83, 3, 113, 3, 106,
762 33, 106, 105, 111, 3, 111, 105, 9, 105, 37,
763 105, 105, 70, 105, 47, 48, 8, 113, 27, 327,
764 113, 329, 111, 107, 70, 107, 334, 117, 47, 70,
765 63, 98, 27, 116, 32, 106, 344, 345, 110, 347,
766 105, 98, 327, 62, 107, 4, 354, 97, 90, 82,
767 112, 106, 70, 106, 110, 88, 364, 3, 106, 108,
768 345, 105, 107, 114, 97, 103, 105, 13, 14, 88,
769 4, 104, 105, 108, 107, 115, 84, 108, 24, 25,
770 26, 104, 28, 108, 114, 105, 394, 108, 110, 113,
771 0, 108, 38, 108, 0, 380, 42, 382, 3, 407,
772 46, 13, 410, 49, 50, 51, 52, 139, 26, 56,
773 74, 115, 65, 110, 60, 61, 301, 334, 209, 65,
774 66, 67, 68, 69, 167, 329, 347, 256, 252, 387,
775 76, 422, 78, 79, 238, 407, 398, 247, 394, 85,
776 280, 87, 344, -1, -1, -1, 92, 93, 94, 95,
777 96, -1, -1, -1, -1, -1, -1, -1, 6, 105,
778 8, 9, 10, 11, 12, 13, 14, -1, -1, -1,
779 6, 19, 8, 9, 10, 11, 12, 13, 14, -1,
780 -1, -1, -1, -1, -1, 33, -1, -1, -1, -1,
781 -1, -1, -1, -1, -1, -1, -1, 33, -1, 47,
782 48, -1, -1, -1, -1, -1, -1, -1, -1, -1,
783 -1, 47, 48, -1, -1, 63, -1, -1, -1, -1,
784 -1, -1, -1, -1, 8, -1, -1, 63, -1, 13,
785 14, -1, -1, -1, 82, -1, -1, -1, -1, -1,
786 88, 25, -1, -1, -1, -1, 82, -1, -1, 97,
787 -1, -1, 88, -1, -1, -1, 40, 105, -1, 107,
788 44, 97, -1, -1, -1, -1, 50, 51, 52, 105,
789 -1, 107, 56, -1, -1, -1, -1, 61, -1, -1,
790 -1, -1, 66, -1, 68, -1, -1, -1, -1, -1,
791 -1, -1, 76, -1, -1, -1, -1, -1, -1, -1,
792 -1, 85, -1, 87, -1, -1, 13, 14, 92, -1,
793 94, 95, 96, 20, -1, -1, -1, 24, 25, 26,
794 -1, 28, 29, -1, -1, -1, -1, -1, -1, -1,
795 -1, 38, -1, -1, -1, 42, -1, -1, -1, 46,
796 -1, -1, 49, 50, 51, 52, -1, -1, -1, -1,
797 -1, 58, -1, 60, 61, -1, -1, -1, 65, 66,
798 67, 68, 69, -1, -1, -1, -1, -1, -1, 76,
799 -1, 78, 79, 80, 81, -1, -1, -1, 85, -1,
800 87, -1, 89, 13, 14, 92, 93, 94, 95, 96,
801 20, -1, -1, -1, 24, 25, 26, -1, 28, 29,
802 -1, -1, -1, -1, -1, -1, -1, -1, 38, -1,
803 -1, -1, 42, -1, -1, -1, 46, -1, -1, 49,
804 50, 51, 52, -1, -1, -1, -1, -1, 58, -1,
805 60, 61, -1, -1, -1, 65, 66, 67, 68, 69,
806 -1, -1, -1, -1, -1, -1, 76, -1, 78, 79,
807 80, 81, -1, -1, -1, 85, -1, 87, 13, 14,
808 -1, -1, 92, 93, 94, 95, 96, -1, -1, 24,
809 25, 26, -1, 28, -1, -1, -1, -1, -1, -1,
810 -1, -1, -1, 38, -1, -1, -1, 42, -1, -1,
811 -1, 46, -1, -1, 49, 50, 51, 52, -1, -1,
812 -1, -1, -1, -1, -1, 60, 61, -1, -1, -1,
813 65, 66, 67, 68, 69, -1, -1, -1, -1, -1,
814 -1, 76, -1, 78, 79, -1, -1, -1, -1, -1,
815 85, -1, 87, 13, 14, -1, -1, 92, 93, 94,
816 95, 96, -1, -1, 24, 25, 26, -1, 28, -1,
817 -1, -1, -1, -1, -1, -1, -1, -1, 38, -1,
818 -1, -1, 42, -1, -1, -1, 46, -1, -1, 49,
819 50, 51, 52, -1, -1, -1, -1, -1, -1, -1,
820 60, 61, -1, -1, -1, 65, 66, 67, 68, 69,
821 -1, -1, -1, -1, -1, -1, 76, -1, 78, 79,
822 -1, -1, -1, -1, -1, 85, -1, 87, -1, -1,
823 -1, -1, 92, 93, 94, 95, 96
vlm6a02a8a2004-09-08 00:28:11 +0000824};
825/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
826#line 3 "/usr/share/bison.simple"
827/* This file comes from bison-1.28. */
828
829/* Skeleton output parser for bison,
830 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
831
832 This program is free software; you can redistribute it and/or modify
833 it under the terms of the GNU General Public License as published by
834 the Free Software Foundation; either version 2, or (at your option)
835 any later version.
836
837 This program is distributed in the hope that it will be useful,
838 but WITHOUT ANY WARRANTY; without even the implied warranty of
839 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
840 GNU General Public License for more details.
841
842 You should have received a copy of the GNU General Public License
843 along with this program; if not, write to the Free Software
844 Foundation, Inc., 59 Temple Place - Suite 330,
845 Boston, MA 02111-1307, USA. */
846
847/* As a special exception, when this file is copied by Bison into a
848 Bison output file, you may use that output file without restriction.
849 This special exception was added by the Free Software Foundation
850 in version 1.24 of Bison. */
851
852/* This is the parser code that is written into each bison parser
853 when the %semantic_parser declaration is not specified in the grammar.
854 It was written by Richard Stallman by simplifying the hairy parser
855 used when %semantic_parser is specified. */
856
857#ifndef YYSTACK_USE_ALLOCA
858#ifdef alloca
859#define YYSTACK_USE_ALLOCA
860#else /* alloca not defined */
861#ifdef __GNUC__
862#define YYSTACK_USE_ALLOCA
863#define alloca __builtin_alloca
864#else /* not GNU C. */
865#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
866#define YYSTACK_USE_ALLOCA
867#include <alloca.h>
868#else /* not sparc */
869/* We think this test detects Watcom and Microsoft C. */
870/* This used to test MSDOS, but that is a bad idea
871 since that symbol is in the user namespace. */
872#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
873#if 0 /* No need for malloc.h, which pollutes the namespace;
874 instead, just don't use alloca. */
875#include <malloc.h>
876#endif
877#else /* not MSDOS, or __TURBOC__ */
878#if defined(_AIX)
879/* I don't know what this was needed for, but it pollutes the namespace.
880 So I turned it off. rms, 2 May 1997. */
881/* #include <malloc.h> */
882 #pragma alloca
883#define YYSTACK_USE_ALLOCA
884#else /* not MSDOS, or __TURBOC__, or _AIX */
885#if 0
886#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
887 and on HPUX 10. Eventually we can turn this on. */
888#define YYSTACK_USE_ALLOCA
889#define alloca __builtin_alloca
890#endif /* __hpux */
891#endif
892#endif /* not _AIX */
893#endif /* not MSDOS, or __TURBOC__ */
894#endif /* not sparc */
895#endif /* not GNU C */
896#endif /* alloca not defined */
897#endif /* YYSTACK_USE_ALLOCA not defined */
898
899#ifdef YYSTACK_USE_ALLOCA
900#define YYSTACK_ALLOC alloca
vlmfa67ddc2004-06-03 03:38:44 +0000901#else
vlm6a02a8a2004-09-08 00:28:11 +0000902#define YYSTACK_ALLOC malloc
vlmfa67ddc2004-06-03 03:38:44 +0000903#endif
904
vlm6a02a8a2004-09-08 00:28:11 +0000905/* Note: there must be only one dollar sign in this file.
906 It is replaced by the list of actions, each action
907 as one case of the switch. */
vlmfa67ddc2004-06-03 03:38:44 +0000908
909#define yyerrok (yyerrstatus = 0)
910#define yyclearin (yychar = YYEMPTY)
911#define YYEMPTY -2
912#define YYEOF 0
913#define YYACCEPT goto yyacceptlab
vlm6a02a8a2004-09-08 00:28:11 +0000914#define YYABORT goto yyabortlab
vlmfa67ddc2004-06-03 03:38:44 +0000915#define YYERROR goto yyerrlab1
vlm6a02a8a2004-09-08 00:28:11 +0000916/* Like YYERROR except do call yyerror.
917 This remains here temporarily to ease the
918 transition to the new meaning of YYERROR, for GCC.
vlmfa67ddc2004-06-03 03:38:44 +0000919 Once GCC version 2 has supplanted version 1, this can go. */
920#define YYFAIL goto yyerrlab
921#define YYRECOVERING() (!!yyerrstatus)
vlm6a02a8a2004-09-08 00:28:11 +0000922#define YYBACKUP(token, value) \
vlmfa67ddc2004-06-03 03:38:44 +0000923do \
924 if (yychar == YYEMPTY && yylen == 1) \
vlm6a02a8a2004-09-08 00:28:11 +0000925 { yychar = (token), yylval = (value); \
vlmfa67ddc2004-06-03 03:38:44 +0000926 yychar1 = YYTRANSLATE (yychar); \
927 YYPOPSTACK; \
928 goto yybackup; \
929 } \
930 else \
vlm6a02a8a2004-09-08 00:28:11 +0000931 { yyerror ("syntax error: cannot back up"); YYERROR; } \
vlmfa67ddc2004-06-03 03:38:44 +0000932while (0)
933
934#define YYTERROR 1
935#define YYERRCODE 256
936
vlm6a02a8a2004-09-08 00:28:11 +0000937#ifndef YYPURE
938#define YYLEX yylex()
vlmfa67ddc2004-06-03 03:38:44 +0000939#endif
940
vlm6a02a8a2004-09-08 00:28:11 +0000941#ifdef YYPURE
942#ifdef YYLSP_NEEDED
943#ifdef YYLEX_PARAM
944#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
945#else
946#define YYLEX yylex(&yylval, &yylloc)
947#endif
948#else /* not YYLSP_NEEDED */
949#ifdef YYLEX_PARAM
950#define YYLEX yylex(&yylval, YYLEX_PARAM)
951#else
952#define YYLEX yylex(&yylval)
953#endif
954#endif /* not YYLSP_NEEDED */
955#endif
vlmfa67ddc2004-06-03 03:38:44 +0000956
vlm6a02a8a2004-09-08 00:28:11 +0000957/* If nonreentrant, generate the variables here */
vlmfa67ddc2004-06-03 03:38:44 +0000958
vlm6a02a8a2004-09-08 00:28:11 +0000959#ifndef YYPURE
vlmfa67ddc2004-06-03 03:38:44 +0000960
vlm6a02a8a2004-09-08 00:28:11 +0000961int yychar; /* the lookahead symbol */
962YYSTYPE yylval; /* the semantic value of the */
963 /* lookahead symbol */
vlmfa67ddc2004-06-03 03:38:44 +0000964
vlm6a02a8a2004-09-08 00:28:11 +0000965#ifdef YYLSP_NEEDED
966YYLTYPE yylloc; /* location data for the lookahead */
967 /* symbol */
968#endif
vlmfa67ddc2004-06-03 03:38:44 +0000969
vlm6a02a8a2004-09-08 00:28:11 +0000970int yynerrs; /* number of parse errors so far */
971#endif /* not YYPURE */
972
973#if YYDEBUG != 0
974int yydebug; /* nonzero means print parse trace */
975/* Since this is uninitialized, it does not stop multiple parsers
976 from coexisting. */
977#endif
978
979/* YYINITDEPTH indicates the initial size of the parser's stacks */
980
vlmfa67ddc2004-06-03 03:38:44 +0000981#ifndef YYINITDEPTH
vlm6a02a8a2004-09-08 00:28:11 +0000982#define YYINITDEPTH 200
vlmfa67ddc2004-06-03 03:38:44 +0000983#endif
984
vlm6a02a8a2004-09-08 00:28:11 +0000985/* YYMAXDEPTH is the maximum size the stacks can grow to
986 (effective only if the built-in stack extension method is used). */
vlmfa67ddc2004-06-03 03:38:44 +0000987
988#if YYMAXDEPTH == 0
vlm6a02a8a2004-09-08 00:28:11 +0000989#undef YYMAXDEPTH
vlmfa67ddc2004-06-03 03:38:44 +0000990#endif
991
992#ifndef YYMAXDEPTH
vlm6a02a8a2004-09-08 00:28:11 +0000993#define YYMAXDEPTH 10000
vlmfa67ddc2004-06-03 03:38:44 +0000994#endif
995
vlm6a02a8a2004-09-08 00:28:11 +0000996/* Define __yy_memcpy. Note that the size argument
997 should be passed with type unsigned int, because that is what the non-GCC
998 definitions require. With GCC, __builtin_memcpy takes an arg
999 of type size_t, but it can handle unsigned int. */
vlmfa67ddc2004-06-03 03:38:44 +00001000
vlm6a02a8a2004-09-08 00:28:11 +00001001#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
1002#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
1003#else /* not GNU C or C++ */
1004#ifndef __cplusplus
vlmfa67ddc2004-06-03 03:38:44 +00001005
vlm6a02a8a2004-09-08 00:28:11 +00001006/* This is the most reliable way to avoid incompatibilities
1007 in available built-in functions on various systems. */
vlm80103492004-09-07 10:39:09 +00001008static void
vlm6a02a8a2004-09-08 00:28:11 +00001009__yy_memcpy (to, from, count)
1010 char *to;
1011 char *from;
1012 unsigned int count;
vlm80103492004-09-07 10:39:09 +00001013{
vlm6a02a8a2004-09-08 00:28:11 +00001014 register char *f = from;
1015 register char *t = to;
1016 register int i = count;
vlm80103492004-09-07 10:39:09 +00001017
vlm6a02a8a2004-09-08 00:28:11 +00001018 while (i-- > 0)
1019 *t++ = *f++;
vlm80103492004-09-07 10:39:09 +00001020}
vlm80103492004-09-07 10:39:09 +00001021
vlm6a02a8a2004-09-08 00:28:11 +00001022#else /* __cplusplus */
vlm80103492004-09-07 10:39:09 +00001023
vlm6a02a8a2004-09-08 00:28:11 +00001024/* This is the most reliable way to avoid incompatibilities
1025 in available built-in functions on various systems. */
vlm80103492004-09-07 10:39:09 +00001026static void
vlm6a02a8a2004-09-08 00:28:11 +00001027__yy_memcpy (char *to, char *from, unsigned int count)
vlm80103492004-09-07 10:39:09 +00001028{
vlm6a02a8a2004-09-08 00:28:11 +00001029 register char *t = to;
1030 register char *f = from;
1031 register int i = count;
vlm80103492004-09-07 10:39:09 +00001032
vlm6a02a8a2004-09-08 00:28:11 +00001033 while (i-- > 0)
1034 *t++ = *f++;
vlm044f7442004-09-04 04:49:21 +00001035}
vlm044f7442004-09-04 04:49:21 +00001036
vlm6a02a8a2004-09-08 00:28:11 +00001037#endif
1038#endif
vlmfa67ddc2004-06-03 03:38:44 +00001039
vlm6a02a8a2004-09-08 00:28:11 +00001040#line 217 "/usr/share/bison.simple"
vlmfa67ddc2004-06-03 03:38:44 +00001041
1042/* The user can define YYPARSE_PARAM as the name of an argument to be passed
1043 into yyparse. The argument should have type void *.
1044 It should actually point to an object.
1045 Grammar actions can access the variable by casting it
1046 to the proper pointer type. */
1047
1048#ifdef YYPARSE_PARAM
vlm6a02a8a2004-09-08 00:28:11 +00001049#ifdef __cplusplus
1050#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
1051#define YYPARSE_PARAM_DECL
1052#else /* not __cplusplus */
1053#define YYPARSE_PARAM_ARG YYPARSE_PARAM
1054#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1055#endif /* not __cplusplus */
1056#else /* not YYPARSE_PARAM */
1057#define YYPARSE_PARAM_ARG
1058#define YYPARSE_PARAM_DECL
1059#endif /* not YYPARSE_PARAM */
vlmfa67ddc2004-06-03 03:38:44 +00001060
1061/* Prevent warning if -Wstrict-prototypes. */
1062#ifdef __GNUC__
vlm6a02a8a2004-09-08 00:28:11 +00001063#ifdef YYPARSE_PARAM
vlmfa67ddc2004-06-03 03:38:44 +00001064int yyparse (void *);
vlm6a02a8a2004-09-08 00:28:11 +00001065#else
vlmfa67ddc2004-06-03 03:38:44 +00001066int yyparse (void);
vlm6a02a8a2004-09-08 00:28:11 +00001067#endif
vlm39e5ed72004-09-05 10:40:41 +00001068#endif
vlm80103492004-09-07 10:39:09 +00001069
vlmfa67ddc2004-06-03 03:38:44 +00001070int
vlm6a02a8a2004-09-08 00:28:11 +00001071yyparse(YYPARSE_PARAM_ARG)
vlmfa67ddc2004-06-03 03:38:44 +00001072 YYPARSE_PARAM_DECL
1073{
1074 register int yystate;
1075 register int yyn;
1076 register short *yyssp;
1077 register YYSTYPE *yyvsp;
vlm6a02a8a2004-09-08 00:28:11 +00001078 int yyerrstatus; /* number of tokens to shift before error messages enabled */
1079 int yychar1 = 0; /* lookahead token as an internal (translated) token number */
vlmfa67ddc2004-06-03 03:38:44 +00001080
vlm6a02a8a2004-09-08 00:28:11 +00001081 short yyssa[YYINITDEPTH]; /* the state stack */
1082 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
vlmfa67ddc2004-06-03 03:38:44 +00001083
vlm6a02a8a2004-09-08 00:28:11 +00001084 short *yyss = yyssa; /* refer to the stacks thru separate pointers */
1085 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
vlmfa67ddc2004-06-03 03:38:44 +00001086
vlm6a02a8a2004-09-08 00:28:11 +00001087#ifdef YYLSP_NEEDED
1088 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
1089 YYLTYPE *yyls = yylsa;
1090 YYLTYPE *yylsp;
1091
1092#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1093#else
vlmfa67ddc2004-06-03 03:38:44 +00001094#define YYPOPSTACK (yyvsp--, yyssp--)
vlm6a02a8a2004-09-08 00:28:11 +00001095#endif
vlmfa67ddc2004-06-03 03:38:44 +00001096
vlm6a02a8a2004-09-08 00:28:11 +00001097 int yystacksize = YYINITDEPTH;
1098 int yyfree_stacks = 0;
vlmfa67ddc2004-06-03 03:38:44 +00001099
vlm6a02a8a2004-09-08 00:28:11 +00001100#ifdef YYPURE
1101 int yychar;
1102 YYSTYPE yylval;
1103 int yynerrs;
1104#ifdef YYLSP_NEEDED
1105 YYLTYPE yylloc;
1106#endif
1107#endif
vlmfa67ddc2004-06-03 03:38:44 +00001108
vlm6a02a8a2004-09-08 00:28:11 +00001109 YYSTYPE yyval; /* the variable used to return */
1110 /* semantic values from the action */
1111 /* routines */
vlmfa67ddc2004-06-03 03:38:44 +00001112
1113 int yylen;
1114
vlm6a02a8a2004-09-08 00:28:11 +00001115#if YYDEBUG != 0
1116 if (yydebug)
1117 fprintf(stderr, "Starting parse\n");
1118#endif
vlmfa67ddc2004-06-03 03:38:44 +00001119
1120 yystate = 0;
1121 yyerrstatus = 0;
1122 yynerrs = 0;
1123 yychar = YYEMPTY; /* Cause a token to be read. */
1124
1125 /* Initialize stack pointers.
1126 Waste one element of value and location stack
1127 so that they stay on the same level as the state stack.
1128 The wasted elements are never initialized. */
1129
vlm6a02a8a2004-09-08 00:28:11 +00001130 yyssp = yyss - 1;
vlmfa67ddc2004-06-03 03:38:44 +00001131 yyvsp = yyvs;
vlm6a02a8a2004-09-08 00:28:11 +00001132#ifdef YYLSP_NEEDED
1133 yylsp = yyls;
1134#endif
vlmfa67ddc2004-06-03 03:38:44 +00001135
vlm6a02a8a2004-09-08 00:28:11 +00001136/* Push a new state, which is found in yystate . */
1137/* In all cases, when you get here, the value and location stacks
1138 have just been pushed. so pushing a state here evens the stacks. */
1139yynewstate:
vlmfa67ddc2004-06-03 03:38:44 +00001140
vlm6a02a8a2004-09-08 00:28:11 +00001141 *++yyssp = yystate;
vlmfa67ddc2004-06-03 03:38:44 +00001142
1143 if (yyssp >= yyss + yystacksize - 1)
1144 {
vlm6a02a8a2004-09-08 00:28:11 +00001145 /* Give user a chance to reallocate the stack */
1146 /* Use copies of these so that the &'s don't force the real ones into memory. */
1147 YYSTYPE *yyvs1 = yyvs;
1148 short *yyss1 = yyss;
1149#ifdef YYLSP_NEEDED
1150 YYLTYPE *yyls1 = yyls;
1151#endif
1152
vlmfa67ddc2004-06-03 03:38:44 +00001153 /* Get the current used size of the three stacks, in elements. */
vlm6a02a8a2004-09-08 00:28:11 +00001154 int size = yyssp - yyss + 1;
vlmfa67ddc2004-06-03 03:38:44 +00001155
1156#ifdef yyoverflow
vlm6a02a8a2004-09-08 00:28:11 +00001157 /* Each stack pointer address is followed by the size of
1158 the data in use in that stack, in bytes. */
1159#ifdef YYLSP_NEEDED
1160 /* This used to be a conditional around just the two extra args,
1161 but that might be undefined if yyoverflow is a macro. */
1162 yyoverflow("parser stack overflow",
1163 &yyss1, size * sizeof (*yyssp),
1164 &yyvs1, size * sizeof (*yyvsp),
1165 &yyls1, size * sizeof (*yylsp),
1166 &yystacksize);
1167#else
1168 yyoverflow("parser stack overflow",
1169 &yyss1, size * sizeof (*yyssp),
1170 &yyvs1, size * sizeof (*yyvsp),
1171 &yystacksize);
1172#endif
vlmfa67ddc2004-06-03 03:38:44 +00001173
vlm6a02a8a2004-09-08 00:28:11 +00001174 yyss = yyss1; yyvs = yyvs1;
1175#ifdef YYLSP_NEEDED
1176 yyls = yyls1;
1177#endif
vlmfa67ddc2004-06-03 03:38:44 +00001178#else /* no yyoverflow */
1179 /* Extend the stack our own way. */
1180 if (yystacksize >= YYMAXDEPTH)
vlm6a02a8a2004-09-08 00:28:11 +00001181 {
1182 yyerror("parser stack overflow");
1183 if (yyfree_stacks)
1184 {
1185 free (yyss);
1186 free (yyvs);
1187#ifdef YYLSP_NEEDED
1188 free (yyls);
1189#endif
1190 }
1191 return 2;
1192 }
vlmfa67ddc2004-06-03 03:38:44 +00001193 yystacksize *= 2;
1194 if (yystacksize > YYMAXDEPTH)
1195 yystacksize = YYMAXDEPTH;
vlm6a02a8a2004-09-08 00:28:11 +00001196#ifndef YYSTACK_USE_ALLOCA
1197 yyfree_stacks = 1;
1198#endif
1199 yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
1200 __yy_memcpy ((char *)yyss, (char *)yyss1,
1201 size * (unsigned int) sizeof (*yyssp));
1202 yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
1203 __yy_memcpy ((char *)yyvs, (char *)yyvs1,
1204 size * (unsigned int) sizeof (*yyvsp));
1205#ifdef YYLSP_NEEDED
1206 yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
1207 __yy_memcpy ((char *)yyls, (char *)yyls1,
1208 size * (unsigned int) sizeof (*yylsp));
1209#endif
vlmfa67ddc2004-06-03 03:38:44 +00001210#endif /* no yyoverflow */
1211
vlm6a02a8a2004-09-08 00:28:11 +00001212 yyssp = yyss + size - 1;
1213 yyvsp = yyvs + size - 1;
1214#ifdef YYLSP_NEEDED
1215 yylsp = yyls + size - 1;
1216#endif
vlmfa67ddc2004-06-03 03:38:44 +00001217
vlm6a02a8a2004-09-08 00:28:11 +00001218#if YYDEBUG != 0
1219 if (yydebug)
1220 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1221#endif
vlmfa67ddc2004-06-03 03:38:44 +00001222
1223 if (yyssp >= yyss + yystacksize - 1)
1224 YYABORT;
1225 }
1226
vlm6a02a8a2004-09-08 00:28:11 +00001227#if YYDEBUG != 0
1228 if (yydebug)
1229 fprintf(stderr, "Entering state %d\n", yystate);
1230#endif
vlmfa67ddc2004-06-03 03:38:44 +00001231
1232 goto yybackup;
vlm6a02a8a2004-09-08 00:28:11 +00001233 yybackup:
vlmfa67ddc2004-06-03 03:38:44 +00001234
1235/* Do appropriate processing given the current state. */
1236/* Read a lookahead token if we need one and don't already have one. */
1237/* yyresume: */
1238
1239 /* First try to decide what to do without reference to lookahead token. */
1240
1241 yyn = yypact[yystate];
vlm6a02a8a2004-09-08 00:28:11 +00001242 if (yyn == YYFLAG)
vlmfa67ddc2004-06-03 03:38:44 +00001243 goto yydefault;
1244
1245 /* Not known => get a lookahead token if don't already have one. */
1246
1247 /* yychar is either YYEMPTY or YYEOF
1248 or a valid token in external form. */
1249
1250 if (yychar == YYEMPTY)
1251 {
vlm6a02a8a2004-09-08 00:28:11 +00001252#if YYDEBUG != 0
1253 if (yydebug)
1254 fprintf(stderr, "Reading a token: ");
1255#endif
vlmfa67ddc2004-06-03 03:38:44 +00001256 yychar = YYLEX;
1257 }
1258
vlm6a02a8a2004-09-08 00:28:11 +00001259 /* Convert token to internal form (in yychar1) for indexing tables with */
vlmfa67ddc2004-06-03 03:38:44 +00001260
vlm6a02a8a2004-09-08 00:28:11 +00001261 if (yychar <= 0) /* This means end of input. */
vlmfa67ddc2004-06-03 03:38:44 +00001262 {
1263 yychar1 = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001264 yychar = YYEOF; /* Don't call YYLEX any more */
vlmfa67ddc2004-06-03 03:38:44 +00001265
vlm6a02a8a2004-09-08 00:28:11 +00001266#if YYDEBUG != 0
1267 if (yydebug)
1268 fprintf(stderr, "Now at end of input.\n");
1269#endif
vlmfa67ddc2004-06-03 03:38:44 +00001270 }
1271 else
1272 {
vlm6a02a8a2004-09-08 00:28:11 +00001273 yychar1 = YYTRANSLATE(yychar);
vlmfa67ddc2004-06-03 03:38:44 +00001274
vlm6a02a8a2004-09-08 00:28:11 +00001275#if YYDEBUG != 0
1276 if (yydebug)
1277 {
1278 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
1279 /* Give the individual parser a way to print the precise meaning
1280 of a token, for further debugging info. */
1281#ifdef YYPRINT
1282 YYPRINT (stderr, yychar, yylval);
1283#endif
1284 fprintf (stderr, ")\n");
1285 }
1286#endif
vlmfa67ddc2004-06-03 03:38:44 +00001287 }
1288
1289 yyn += yychar1;
vlm6a02a8a2004-09-08 00:28:11 +00001290 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
vlmfa67ddc2004-06-03 03:38:44 +00001291 goto yydefault;
vlm6a02a8a2004-09-08 00:28:11 +00001292
vlmfa67ddc2004-06-03 03:38:44 +00001293 yyn = yytable[yyn];
vlm6a02a8a2004-09-08 00:28:11 +00001294
1295 /* yyn is what to do for this token type in this state.
1296 Negative => reduce, -yyn is rule number.
1297 Positive => shift, yyn is new state.
1298 New state is final state => don't bother to shift,
1299 just return success.
1300 0, or most negative number => error. */
1301
1302 if (yyn < 0)
vlmfa67ddc2004-06-03 03:38:44 +00001303 {
vlm6a02a8a2004-09-08 00:28:11 +00001304 if (yyn == YYFLAG)
vlmfa67ddc2004-06-03 03:38:44 +00001305 goto yyerrlab;
1306 yyn = -yyn;
1307 goto yyreduce;
1308 }
vlm6a02a8a2004-09-08 00:28:11 +00001309 else if (yyn == 0)
1310 goto yyerrlab;
vlmfa67ddc2004-06-03 03:38:44 +00001311
1312 if (yyn == YYFINAL)
1313 YYACCEPT;
1314
1315 /* Shift the lookahead token. */
vlm6a02a8a2004-09-08 00:28:11 +00001316
1317#if YYDEBUG != 0
1318 if (yydebug)
1319 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
1320#endif
vlmfa67ddc2004-06-03 03:38:44 +00001321
1322 /* Discard the token being shifted unless it is eof. */
1323 if (yychar != YYEOF)
1324 yychar = YYEMPTY;
1325
1326 *++yyvsp = yylval;
vlm6a02a8a2004-09-08 00:28:11 +00001327#ifdef YYLSP_NEEDED
1328 *++yylsp = yylloc;
1329#endif
vlmfa67ddc2004-06-03 03:38:44 +00001330
vlm6a02a8a2004-09-08 00:28:11 +00001331 /* count tokens shifted since error; after three, turn off error status. */
1332 if (yyerrstatus) yyerrstatus--;
vlmfa67ddc2004-06-03 03:38:44 +00001333
1334 yystate = yyn;
1335 goto yynewstate;
1336
vlm6a02a8a2004-09-08 00:28:11 +00001337/* Do the default action for the current state. */
vlm80103492004-09-07 10:39:09 +00001338yydefault:
vlm6a02a8a2004-09-08 00:28:11 +00001339
vlmfa67ddc2004-06-03 03:38:44 +00001340 yyn = yydefact[yystate];
1341 if (yyn == 0)
1342 goto yyerrlab;
1343
vlm6a02a8a2004-09-08 00:28:11 +00001344/* Do a reduction. yyn is the number of a rule to reduce with. */
vlmfa67ddc2004-06-03 03:38:44 +00001345yyreduce:
1346 yylen = yyr2[yyn];
vlm6a02a8a2004-09-08 00:28:11 +00001347 if (yylen > 0)
1348 yyval = yyvsp[1-yylen]; /* implement default value of the action */
vlmfa67ddc2004-06-03 03:38:44 +00001349
vlm6a02a8a2004-09-08 00:28:11 +00001350#if YYDEBUG != 0
vlmfa67ddc2004-06-03 03:38:44 +00001351 if (yydebug)
1352 {
vlm6a02a8a2004-09-08 00:28:11 +00001353 int i;
vlmfa67ddc2004-06-03 03:38:44 +00001354
vlm6a02a8a2004-09-08 00:28:11 +00001355 fprintf (stderr, "Reducing via rule %d (line %d), ",
1356 yyn, yyrline[yyn]);
vlmfa67ddc2004-06-03 03:38:44 +00001357
1358 /* Print the symbols being reduced, and their result. */
vlm6a02a8a2004-09-08 00:28:11 +00001359 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
1360 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
1361 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
vlmfa67ddc2004-06-03 03:38:44 +00001362 }
1363#endif
vlm80103492004-09-07 10:39:09 +00001364
vlm6a02a8a2004-09-08 00:28:11 +00001365
1366 switch (yyn) {
1367
1368case 1:
vlm2c8c44d2005-03-24 16:22:35 +00001369#line 306 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001370{
1371 *(void **)param = yyvsp[0].a_grammar;
1372 ;
1373 break;}
1374case 2:
vlm2c8c44d2005-03-24 16:22:35 +00001375#line 312 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001376{
vlmfa67ddc2004-06-03 03:38:44 +00001377 yyval.a_grammar = asn1p_new();
1378 checkmem(yyval.a_grammar);
1379 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm6a02a8a2004-09-08 00:28:11 +00001380 ;
1381 break;}
1382case 3:
vlm2c8c44d2005-03-24 16:22:35 +00001383#line 317 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001384{
vlmfa67ddc2004-06-03 03:38:44 +00001385 yyval.a_grammar = yyvsp[-1].a_grammar;
1386 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm6a02a8a2004-09-08 00:28:11 +00001387 ;
1388 break;}
1389case 4:
vlm2c8c44d2005-03-24 16:22:35 +00001390#line 338 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001391{
vlmfa67ddc2004-06-03 03:38:44 +00001392
1393 if(yyvsp[-1].a_module) {
1394 yyval.a_module = yyvsp[-1].a_module;
1395 } else {
1396 /* There's a chance that a module is just plain empty */
1397 yyval.a_module = asn1p_module_new();
1398 }
1399 checkmem(yyval.a_module);
1400
1401 yyval.a_module->Identifier = yyvsp[-7].tv_str;
1402 yyval.a_module->module_oid = yyvsp[-6].a_oid;
1403 yyval.a_module->module_flags = yyvsp[-4].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001404 ;
1405 break;}
1406case 5:
vlm2c8c44d2005-03-24 16:22:35 +00001407#line 359 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001408{ yyval.a_oid = 0; ;
1409 break;}
1410case 6:
vlm2c8c44d2005-03-24 16:22:35 +00001411#line 360 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001412{ yyval.a_oid = yyvsp[0].a_oid; ;
1413 break;}
1414case 7:
vlm2c8c44d2005-03-24 16:22:35 +00001415#line 364 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001416{
vlmfa67ddc2004-06-03 03:38:44 +00001417 yyval.a_oid = yyvsp[-1].a_oid;
vlm6a02a8a2004-09-08 00:28:11 +00001418 ;
1419 break;}
1420case 8:
vlm2c8c44d2005-03-24 16:22:35 +00001421#line 367 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001422{
vlmfa67ddc2004-06-03 03:38:44 +00001423 yyval.a_oid = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001424 ;
1425 break;}
1426case 9:
vlm2c8c44d2005-03-24 16:22:35 +00001427#line 373 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001428{
vlmfa67ddc2004-06-03 03:38:44 +00001429 yyval.a_oid = asn1p_oid_new();
1430 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1431 if(yyvsp[0].a_oid_arc.name)
1432 free(yyvsp[0].a_oid_arc.name);
vlm6a02a8a2004-09-08 00:28:11 +00001433 ;
1434 break;}
1435case 10:
vlm2c8c44d2005-03-24 16:22:35 +00001436#line 379 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001437{
vlmfa67ddc2004-06-03 03:38:44 +00001438 yyval.a_oid = yyvsp[-1].a_oid;
1439 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1440 if(yyvsp[0].a_oid_arc.name)
1441 free(yyvsp[0].a_oid_arc.name);
vlm6a02a8a2004-09-08 00:28:11 +00001442 ;
1443 break;}
1444case 11:
vlm2c8c44d2005-03-24 16:22:35 +00001445#line 388 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001446{ /* iso */
vlmfa67ddc2004-06-03 03:38:44 +00001447 yyval.a_oid_arc.name = yyvsp[0].tv_str;
1448 yyval.a_oid_arc.number = -1;
vlm6a02a8a2004-09-08 00:28:11 +00001449 ;
1450 break;}
1451case 12:
vlm2c8c44d2005-03-24 16:22:35 +00001452#line 392 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001453{ /* iso(1) */
vlmfa67ddc2004-06-03 03:38:44 +00001454 yyval.a_oid_arc.name = yyvsp[-3].tv_str;
1455 yyval.a_oid_arc.number = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00001456 ;
1457 break;}
1458case 13:
vlm2c8c44d2005-03-24 16:22:35 +00001459#line 396 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001460{ /* 1 */
vlmfa67ddc2004-06-03 03:38:44 +00001461 yyval.a_oid_arc.name = 0;
1462 yyval.a_oid_arc.number = yyvsp[0].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00001463 ;
1464 break;}
1465case 14:
vlm2c8c44d2005-03-24 16:22:35 +00001466#line 406 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001467{ yyval.a_module_flags = MSF_NOFLAGS; ;
1468 break;}
1469case 15:
vlm2c8c44d2005-03-24 16:22:35 +00001470#line 407 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001471{
vlmfa67ddc2004-06-03 03:38:44 +00001472 yyval.a_module_flags = yyvsp[0].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001473 ;
1474 break;}
1475case 16:
vlm2c8c44d2005-03-24 16:22:35 +00001476#line 416 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001477{
vlmfa67ddc2004-06-03 03:38:44 +00001478 yyval.a_module_flags = yyvsp[0].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001479 ;
1480 break;}
1481case 17:
vlm2c8c44d2005-03-24 16:22:35 +00001482#line 419 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001483{
vlmfa67ddc2004-06-03 03:38:44 +00001484 yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001485 ;
1486 break;}
1487case 18:
vlm2c8c44d2005-03-24 16:22:35 +00001488#line 428 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001489{
vlmfa67ddc2004-06-03 03:38:44 +00001490 yyval.a_module_flags = MSF_EXPLICIT_TAGS;
vlm6a02a8a2004-09-08 00:28:11 +00001491 ;
1492 break;}
1493case 19:
vlm2c8c44d2005-03-24 16:22:35 +00001494#line 431 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001495{
vlmfa67ddc2004-06-03 03:38:44 +00001496 yyval.a_module_flags = MSF_IMPLICIT_TAGS;
vlm6a02a8a2004-09-08 00:28:11 +00001497 ;
1498 break;}
1499case 20:
vlm2c8c44d2005-03-24 16:22:35 +00001500#line 434 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001501{
vlmfa67ddc2004-06-03 03:38:44 +00001502 yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
vlm6a02a8a2004-09-08 00:28:11 +00001503 ;
1504 break;}
1505case 21:
vlm2c8c44d2005-03-24 16:22:35 +00001506#line 437 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001507{
vlmfa67ddc2004-06-03 03:38:44 +00001508 yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
vlm6a02a8a2004-09-08 00:28:11 +00001509 ;
1510 break;}
1511case 22:
vlm2c8c44d2005-03-24 16:22:35 +00001512#line 441 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001513{
vlm9283dbe2004-08-18 04:59:12 +00001514 /* X.680Amd1 specifies TAG and XER */
1515 if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
1516 yyval.a_module_flags = MSF_TAG_INSTRUCTIONS;
1517 } else if(strcmp(yyvsp[-1].tv_str, "XER") == 0) {
1518 yyval.a_module_flags = MSF_XER_INSTRUCTIONS;
1519 } else {
1520 fprintf(stderr,
1521 "WARNING: %s INSTRUCTIONS at line %d: "
1522 "Unrecognized encoding reference\n",
1523 yyvsp[-1].tv_str, yylineno);
1524 yyval.a_module_flags = MSF_unk_INSTRUCTIONS;
1525 }
1526 free(yyvsp[-1].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00001527 ;
1528 break;}
1529case 23:
vlm2c8c44d2005-03-24 16:22:35 +00001530#line 462 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001531{ yyval.a_module = 0; ;
1532 break;}
1533case 24:
vlm2c8c44d2005-03-24 16:22:35 +00001534#line 463 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001535{
vlmfa67ddc2004-06-03 03:38:44 +00001536 yyval.a_module = yyvsp[0].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001537 ;
1538 break;}
1539case 25:
vlm2c8c44d2005-03-24 16:22:35 +00001540#line 472 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001541{
vlm9283dbe2004-08-18 04:59:12 +00001542 yyval.a_module = yyvsp[0].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001543 ;
1544 break;}
1545case 26:
vlm2c8c44d2005-03-24 16:22:35 +00001546#line 475 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001547{
vlmfa67ddc2004-06-03 03:38:44 +00001548 yyval.a_module = yyvsp[-1].a_module;
1549
vlm9283dbe2004-08-18 04:59:12 +00001550 /* Behave well when one of them is skipped. */
1551 if(!(yyvsp[-1].a_module)) {
1552 if(yyvsp[0].a_module) yyval.a_module = yyvsp[0].a_module;
1553 break;
1554 }
1555
vlmfa67ddc2004-06-03 03:38:44 +00001556#ifdef MY_IMPORT
1557#error MY_IMPORT DEFINED ELSEWHERE!
1558#endif
1559#define MY_IMPORT(foo,field) do { \
vlm97ed7152004-08-13 12:31:09 +00001560 while(TQ_FIRST(&(yyvsp[0].a_module->foo))) { \
vlmfa67ddc2004-06-03 03:38:44 +00001561 TQ_ADD(&(yyval.a_module->foo), \
1562 TQ_REMOVE(&(yyvsp[0].a_module->foo), field), \
1563 field); \
vlm97ed7152004-08-13 12:31:09 +00001564 } \
1565 assert(TQ_FIRST(&(yyvsp[0].a_module->foo)) == 0); \
1566 } while(0)
vlmfa67ddc2004-06-03 03:38:44 +00001567
1568 MY_IMPORT(imports, xp_next);
1569 MY_IMPORT(exports, xp_next);
1570 MY_IMPORT(members, next);
1571#undef MY_IMPORT
1572
vlm6a02a8a2004-09-08 00:28:11 +00001573 ;
1574 break;}
1575case 27:
vlm2c8c44d2005-03-24 16:22:35 +00001576#line 508 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001577{
vlmfa67ddc2004-06-03 03:38:44 +00001578 yyval.a_module = yyvsp[0].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001579 ;
1580 break;}
1581case 28:
vlm2c8c44d2005-03-24 16:22:35 +00001582#line 511 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001583{
vlmfa67ddc2004-06-03 03:38:44 +00001584 yyval.a_module = asn1p_module_new();
1585 checkmem(yyval.a_module);
1586 if(yyvsp[0].a_xports) {
1587 TQ_ADD(&(yyval.a_module->exports), yyvsp[0].a_xports, xp_next);
1588 } else {
1589 /* "EXPORTS ALL;" ? */
1590 }
vlm6a02a8a2004-09-08 00:28:11 +00001591 ;
1592 break;}
1593case 29:
vlm2c8c44d2005-03-24 16:22:35 +00001594#line 520 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001595{
vlmfa67ddc2004-06-03 03:38:44 +00001596 yyval.a_module = asn1p_module_new();
1597 checkmem(yyval.a_module);
1598 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1599 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1600 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001601 ;
1602 break;}
1603case 30:
vlm2c8c44d2005-03-24 16:22:35 +00001604#line 527 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001605{
vlm9283dbe2004-08-18 04:59:12 +00001606 yyval.a_module = asn1p_module_new();
1607 checkmem(yyval.a_module);
1608 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1609 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1610 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001611 ;
1612 break;}
1613case 31:
vlm2c8c44d2005-03-24 16:22:35 +00001614#line 540 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001615{
vlm9283dbe2004-08-18 04:59:12 +00001616 yyval.a_module = asn1p_module_new();
1617 checkmem(yyval.a_module);
1618 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1619 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1620 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001621 ;
1622 break;}
1623case 32:
vlm2c8c44d2005-03-24 16:22:35 +00001624#line 548 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001625{ asn1p_lexer_hack_push_encoding_control(); ;
1626 break;}
1627case 33:
vlm2c8c44d2005-03-24 16:22:35 +00001628#line 549 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001629{
vlm9283dbe2004-08-18 04:59:12 +00001630 fprintf(stderr,
1631 "WARNING: ENCODING-CONTROL %s "
1632 "specification at line %d ignored\n",
1633 yyvsp[-1].tv_str, yylineno);
1634 free(yyvsp[-1].tv_str);
1635 yyval.a_module = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001636 ;
1637 break;}
1638case 34:
vlm2c8c44d2005-03-24 16:22:35 +00001639#line 561 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001640{
vlmfa67ddc2004-06-03 03:38:44 +00001641 return yyerror(
1642 "Attempt to redefine a standard basic type, "
1643 "use -ftypesXY to switch back "
1644 "to older version of ASN.1 standard");
vlm6a02a8a2004-09-08 00:28:11 +00001645 ;
1646 break;}
1647case 35:
vlm2c8c44d2005-03-24 16:22:35 +00001648#line 575 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001649{
vlmfa67ddc2004-06-03 03:38:44 +00001650 yyval.a_module = yyvsp[-1].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001651 ;
1652 break;}
1653case 36:
vlm2c8c44d2005-03-24 16:22:35 +00001654#line 581 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001655{
vlmfa67ddc2004-06-03 03:38:44 +00001656 return yyerror("Empty IMPORTS list");
vlm6a02a8a2004-09-08 00:28:11 +00001657 ;
1658 break;}
1659case 37:
vlm2c8c44d2005-03-24 16:22:35 +00001660#line 587 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001661{
vlmfa67ddc2004-06-03 03:38:44 +00001662 yyval.a_module = asn1p_module_new();
1663 checkmem(yyval.a_module);
1664 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm6a02a8a2004-09-08 00:28:11 +00001665 ;
1666 break;}
1667case 38:
vlm2c8c44d2005-03-24 16:22:35 +00001668#line 592 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001669{
vlmfa67ddc2004-06-03 03:38:44 +00001670 yyval.a_module = yyvsp[-1].a_module;
1671 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm6a02a8a2004-09-08 00:28:11 +00001672 ;
1673 break;}
1674case 39:
vlm2c8c44d2005-03-24 16:22:35 +00001675#line 599 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001676{
vlmfa67ddc2004-06-03 03:38:44 +00001677 yyval.a_xports = yyvsp[-3].a_xports;
1678 yyval.a_xports->from = yyvsp[-1].tv_str;
1679 yyval.a_xports->from_oid = yyvsp[0].a_oid;
1680 checkmem(yyval.a_xports);
vlm6a02a8a2004-09-08 00:28:11 +00001681 ;
1682 break;}
1683case 40:
vlm2c8c44d2005-03-24 16:22:35 +00001684#line 608 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001685{
vlmfa67ddc2004-06-03 03:38:44 +00001686 yyval.a_xports = asn1p_xports_new();
1687 checkmem(yyval.a_xports);
1688 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001689 ;
1690 break;}
1691case 41:
vlm2c8c44d2005-03-24 16:22:35 +00001692#line 613 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001693{
vlmfa67ddc2004-06-03 03:38:44 +00001694 yyval.a_xports = yyvsp[-2].a_xports;
1695 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001696 ;
1697 break;}
1698case 42:
vlm2c8c44d2005-03-24 16:22:35 +00001699#line 620 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001700{
vlmfa67ddc2004-06-03 03:38:44 +00001701 yyval.a_expr = asn1p_expr_new(yylineno);
1702 checkmem(yyval.a_expr);
1703 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1704 yyval.a_expr->expr_type = A1TC_REFERENCE;
vlm6a02a8a2004-09-08 00:28:11 +00001705 ;
1706 break;}
1707case 43:
vlm2c8c44d2005-03-24 16:22:35 +00001708#line 626 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001709{ /* Completely equivalent to above */
1710 yyval.a_expr = asn1p_expr_new(yylineno);
1711 checkmem(yyval.a_expr);
1712 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
1713 yyval.a_expr->expr_type = A1TC_REFERENCE;
1714 ;
1715 break;}
1716case 44:
vlm2c8c44d2005-03-24 16:22:35 +00001717#line 632 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001718{
vlmfa67ddc2004-06-03 03:38:44 +00001719 yyval.a_expr = asn1p_expr_new(yylineno);
1720 checkmem(yyval.a_expr);
1721 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1722 yyval.a_expr->expr_type = A1TC_REFERENCE;
vlm6a02a8a2004-09-08 00:28:11 +00001723 ;
1724 break;}
vlm0aa86902004-10-12 23:26:53 +00001725case 45:
vlm2c8c44d2005-03-24 16:22:35 +00001726#line 641 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001727{
vlmfa67ddc2004-06-03 03:38:44 +00001728 yyval.a_xports = yyvsp[-1].a_xports;
vlm6a02a8a2004-09-08 00:28:11 +00001729 ;
1730 break;}
vlm0aa86902004-10-12 23:26:53 +00001731case 46:
vlm2c8c44d2005-03-24 16:22:35 +00001732#line 644 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001733{
vlmfa67ddc2004-06-03 03:38:44 +00001734 yyval.a_xports = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001735 ;
1736 break;}
vlm0aa86902004-10-12 23:26:53 +00001737case 47:
vlm2c8c44d2005-03-24 16:22:35 +00001738#line 647 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001739{
vlmfa67ddc2004-06-03 03:38:44 +00001740 /* Empty EXPORTS clause effectively prohibits export. */
1741 yyval.a_xports = asn1p_xports_new();
1742 checkmem(yyval.a_xports);
vlm6a02a8a2004-09-08 00:28:11 +00001743 ;
1744 break;}
vlm0aa86902004-10-12 23:26:53 +00001745case 48:
vlm2c8c44d2005-03-24 16:22:35 +00001746#line 655 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001747{
vlmfa67ddc2004-06-03 03:38:44 +00001748 yyval.a_xports = asn1p_xports_new();
1749 assert(yyval.a_xports);
1750 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001751 ;
1752 break;}
vlm0aa86902004-10-12 23:26:53 +00001753case 49:
vlm2c8c44d2005-03-24 16:22:35 +00001754#line 660 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001755{
vlmfa67ddc2004-06-03 03:38:44 +00001756 yyval.a_xports = yyvsp[-2].a_xports;
1757 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001758 ;
1759 break;}
vlm6a02a8a2004-09-08 00:28:11 +00001760case 50:
vlm2c8c44d2005-03-24 16:22:35 +00001761#line 667 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001762{
vlmfa67ddc2004-06-03 03:38:44 +00001763 yyval.a_expr = asn1p_expr_new(yylineno);
1764 checkmem(yyval.a_expr);
1765 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1766 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
vlm6a02a8a2004-09-08 00:28:11 +00001767 ;
1768 break;}
1769case 51:
vlm2c8c44d2005-03-24 16:22:35 +00001770#line 673 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001771{
1772 yyval.a_expr = asn1p_expr_new(yylineno);
1773 checkmem(yyval.a_expr);
1774 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
1775 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
1776 ;
1777 break;}
1778case 52:
vlm2c8c44d2005-03-24 16:22:35 +00001779#line 679 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001780{
1781 yyval.a_expr = asn1p_expr_new(yylineno);
1782 checkmem(yyval.a_expr);
1783 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1784 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
1785 ;
1786 break;}
1787case 53:
vlm2c8c44d2005-03-24 16:22:35 +00001788#line 689 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001789{
vlmfa67ddc2004-06-03 03:38:44 +00001790 yyval.a_expr = yyvsp[-4].a_expr;
1791 assert(yyval.a_expr->Identifier == 0);
1792 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
1793 yyval.a_expr->meta_type = AMT_VALUESET;
1794 // take care of optValueSetBody
vlm6a02a8a2004-09-08 00:28:11 +00001795 ;
1796 break;}
vlm0aa86902004-10-12 23:26:53 +00001797case 54:
vlm2c8c44d2005-03-24 16:22:35 +00001798#line 699 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001799{
vlmfa67ddc2004-06-03 03:38:44 +00001800 yyval.a_expr = asn1p_expr_new(yylineno);
1801 checkmem(yyval.a_expr);
1802 yyval.a_expr->reference = yyvsp[0].a_ref;
1803 yyval.a_expr->expr_type = A1TC_REFERENCE;
1804 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm6a02a8a2004-09-08 00:28:11 +00001805 ;
1806 break;}
vlm0aa86902004-10-12 23:26:53 +00001807case 55:
vlm2c8c44d2005-03-24 16:22:35 +00001808#line 706 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001809{
vlmfa67ddc2004-06-03 03:38:44 +00001810 yyval.a_expr = asn1p_expr_new(yylineno);
1811 checkmem(yyval.a_expr);
1812 yyval.a_expr->expr_type = yyvsp[0].a_type;
1813 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00001814 ;
1815 break;}
vlm6a02a8a2004-09-08 00:28:11 +00001816case 56:
vlm2c8c44d2005-03-24 16:22:35 +00001817#line 715 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001818{ ;
vlm6a02a8a2004-09-08 00:28:11 +00001819 break;}
1820case 57:
vlm2c8c44d2005-03-24 16:22:35 +00001821#line 716 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001822{
1823 ;
1824 break;}
1825case 58:
vlme1e6ed82005-03-24 14:26:38 +00001826#line 727 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001827{
1828 ;
1829 break;}
vlm2c8c44d2005-03-24 16:22:35 +00001830case 59:
1831#line 729 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001832{
1833 ;
1834 break;}
vlm2c8c44d2005-03-24 16:22:35 +00001835case 60:
vlme1e6ed82005-03-24 14:26:38 +00001836#line 734 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001837{
1838 ;
1839 break;}
vlm2c8c44d2005-03-24 16:22:35 +00001840case 61:
1841#line 736 "asn1p_y.y"
1842{
1843 ;
1844 break;}
vlm0aa86902004-10-12 23:26:53 +00001845case 62:
vlm2c8c44d2005-03-24 16:22:35 +00001846#line 752 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001847{
vlmfa67ddc2004-06-03 03:38:44 +00001848 yyval.a_expr = asn1p_expr_new(yylineno);
1849 checkmem(yyval.a_expr);
1850 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
1851 yyval.a_expr->tag = yyvsp[-1].a_tag;
1852 yyval.a_expr->expr_type = A1TC_TYPEID;
1853 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00001854 ;
1855 break;}
vlm0aa86902004-10-12 23:26:53 +00001856case 63:
vlm2c8c44d2005-03-24 16:22:35 +00001857#line 760 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001858{
vlmfa67ddc2004-06-03 03:38:44 +00001859 yyval.a_expr = yyvsp[0].a_expr;
vlmfce48a42004-09-14 02:36:39 +00001860 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
vlmfa67ddc2004-06-03 03:38:44 +00001861 assert(yyval.a_expr->expr_type);
1862 assert(yyval.a_expr->meta_type);
vlm6a02a8a2004-09-08 00:28:11 +00001863 ;
1864 break;}
vlm0aa86902004-10-12 23:26:53 +00001865case 64:
vlm2c8c44d2005-03-24 16:22:35 +00001866#line 766 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001867{
vlmfa67ddc2004-06-03 03:38:44 +00001868 yyval.a_expr = yyvsp[0].a_expr;
1869 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
1870 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
1871 assert(yyval.a_expr->meta_type == AMT_OBJECT);
vlm6a02a8a2004-09-08 00:28:11 +00001872 ;
1873 break;}
vlm0aa86902004-10-12 23:26:53 +00001874case 65:
vlm2c8c44d2005-03-24 16:22:35 +00001875#line 782 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001876{
vlmfa67ddc2004-06-03 03:38:44 +00001877 yyval.a_expr = yyvsp[0].a_expr;
1878 assert(yyval.a_expr->Identifier == 0);
1879 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
1880 yyval.a_expr->params = yyvsp[-3].a_plist;
1881 yyval.a_expr->meta_type = AMT_PARAMTYPE;
vlm6a02a8a2004-09-08 00:28:11 +00001882 ;
1883 break;}
vlm0aa86902004-10-12 23:26:53 +00001884case 66:
vlm2c8c44d2005-03-24 16:22:35 +00001885#line 792 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001886{
vlmfa67ddc2004-06-03 03:38:44 +00001887 int ret;
1888 yyval.a_plist = asn1p_paramlist_new(yylineno);
1889 checkmem(yyval.a_plist);
1890 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
1891 checkmem(ret == 0);
1892 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
1893 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm6a02a8a2004-09-08 00:28:11 +00001894 ;
1895 break;}
vlm0aa86902004-10-12 23:26:53 +00001896case 67:
vlm2c8c44d2005-03-24 16:22:35 +00001897#line 801 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001898{
vlmfa67ddc2004-06-03 03:38:44 +00001899 int ret;
1900 yyval.a_plist = yyvsp[-2].a_plist;
1901 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
1902 checkmem(ret == 0);
1903 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
1904 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm6a02a8a2004-09-08 00:28:11 +00001905 ;
1906 break;}
vlm0aa86902004-10-12 23:26:53 +00001907case 68:
vlm2c8c44d2005-03-24 16:22:35 +00001908#line 812 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001909{
vlmfa67ddc2004-06-03 03:38:44 +00001910 yyval.a_parg.governor = NULL;
1911 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00001912 ;
1913 break;}
vlm0aa86902004-10-12 23:26:53 +00001914case 69:
vlm2c8c44d2005-03-24 16:22:35 +00001915#line 816 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001916{
vlmfa67ddc2004-06-03 03:38:44 +00001917 int ret;
1918 yyval.a_parg.governor = asn1p_ref_new(yylineno);
1919 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
1920 checkmem(ret == 0);
1921 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00001922 ;
1923 break;}
vlm0aa86902004-10-12 23:26:53 +00001924case 70:
vlm2c8c44d2005-03-24 16:22:35 +00001925#line 823 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001926{
vlmfa67ddc2004-06-03 03:38:44 +00001927 int ret;
1928 yyval.a_parg.governor = asn1p_ref_new(yylineno);
vlm4053ca52005-02-18 16:34:21 +00001929 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
1930 checkmem(ret == 0);
1931 yyval.a_parg.argument = yyvsp[0].tv_str;
1932 ;
1933 break;}
1934case 71:
vlm2c8c44d2005-03-24 16:22:35 +00001935#line 830 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00001936{
1937 int ret;
1938 yyval.a_parg.governor = asn1p_ref_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00001939 ret = asn1p_ref_add_component(yyval.a_parg.governor,
1940 ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
1941 checkmem(ret == 0);
1942 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00001943 ;
1944 break;}
vlm4053ca52005-02-18 16:34:21 +00001945case 72:
vlm2c8c44d2005-03-24 16:22:35 +00001946#line 841 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001947{
vlmfa67ddc2004-06-03 03:38:44 +00001948 yyval.a_expr = asn1p_expr_new(yylineno);
1949 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00001950 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1951 ;
1952 break;}
vlm4053ca52005-02-18 16:34:21 +00001953case 73:
vlm2c8c44d2005-03-24 16:22:35 +00001954#line 846 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001955{
vlmfa67ddc2004-06-03 03:38:44 +00001956 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00001957 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1958 ;
1959 break;}
vlm4053ca52005-02-18 16:34:21 +00001960case 74:
vlm2c8c44d2005-03-24 16:22:35 +00001961#line 853 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001962{
vlmfa67ddc2004-06-03 03:38:44 +00001963 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00001964 ;
1965 break;}
vlm4053ca52005-02-18 16:34:21 +00001966case 75:
vlm2c8c44d2005-03-24 16:22:35 +00001967#line 856 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001968{
vlmfa67ddc2004-06-03 03:38:44 +00001969 yyval.a_expr = asn1p_expr_new(yylineno);
1970 checkmem(yyval.a_expr);
1971 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1972 yyval.a_expr->expr_type = A1TC_REFERENCE;
1973 yyval.a_expr->meta_type = AMT_VALUE;
vlm6a02a8a2004-09-08 00:28:11 +00001974 ;
1975 break;}
vlm4053ca52005-02-18 16:34:21 +00001976case 76:
vlm2c8c44d2005-03-24 16:22:35 +00001977#line 880 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001978{ yyval.a_expr = asn1p_expr_new(yylineno); ;
1979 break;}
vlm4053ca52005-02-18 16:34:21 +00001980case 77:
vlm2c8c44d2005-03-24 16:22:35 +00001981#line 881 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001982{ yyval.a_expr = yyvsp[0].a_expr; ;
1983 break;}
vlm4053ca52005-02-18 16:34:21 +00001984case 78:
vlm2c8c44d2005-03-24 16:22:35 +00001985#line 884 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001986{
vlmfa67ddc2004-06-03 03:38:44 +00001987 yyval.a_expr = asn1p_expr_new(yylineno);
1988 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00001989 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1990 ;
1991 break;}
vlm4053ca52005-02-18 16:34:21 +00001992case 79:
vlm2c8c44d2005-03-24 16:22:35 +00001993#line 889 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001994{
vlmfa67ddc2004-06-03 03:38:44 +00001995 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00001996 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1997 ;
1998 break;}
vlm4053ca52005-02-18 16:34:21 +00001999case 80:
vlm2c8c44d2005-03-24 16:22:35 +00002000#line 896 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002001{
vlmec8f6812004-08-22 03:19:54 +00002002 yyval.a_expr = yyvsp[-1].a_expr;
2003 assert(yyval.a_expr->Identifier == 0);
vlmfce48a42004-09-14 02:36:39 +00002004 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
vlmec8f6812004-08-22 03:19:54 +00002005 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm6a02a8a2004-09-08 00:28:11 +00002006 ;
2007 break;}
vlm4053ca52005-02-18 16:34:21 +00002008case 81:
vlm2c8c44d2005-03-24 16:22:35 +00002009#line 902 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002010{
vlmec8f6812004-08-22 03:19:54 +00002011 yyval.a_expr = asn1p_expr_new(yylineno);
2012 checkmem(yyval.a_expr);
2013 yyval.a_expr->meta_type = yyvsp[0].a_expr->meta_type;
2014 yyval.a_expr->expr_type = A1TC_COMPONENTS_OF;
vlm6a02a8a2004-09-08 00:28:11 +00002015 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2016 ;
2017 break;}
vlm4053ca52005-02-18 16:34:21 +00002018case 82:
vlm2c8c44d2005-03-24 16:22:35 +00002019#line 909 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002020{
vlmec8f6812004-08-22 03:19:54 +00002021 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002022 ;
2023 break;}
vlm4053ca52005-02-18 16:34:21 +00002024case 83:
vlm2c8c44d2005-03-24 16:22:35 +00002025#line 915 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002026{
vlmec8f6812004-08-22 03:19:54 +00002027 yyval.a_expr = asn1p_expr_new(yylineno);
2028 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00002029 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2030 ;
2031 break;}
vlm4053ca52005-02-18 16:34:21 +00002032case 84:
vlm2c8c44d2005-03-24 16:22:35 +00002033#line 920 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002034{
vlmec8f6812004-08-22 03:19:54 +00002035 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002036 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2037 ;
2038 break;}
vlm4053ca52005-02-18 16:34:21 +00002039case 85:
vlm2c8c44d2005-03-24 16:22:35 +00002040#line 927 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002041{
vlmec8f6812004-08-22 03:19:54 +00002042 yyval.a_expr = yyvsp[0].a_expr;
2043 assert(yyval.a_expr->Identifier == 0);
vlmfce48a42004-09-14 02:36:39 +00002044 yyval.a_expr->Identifier = yyvsp[-1].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00002045 ;
2046 break;}
vlm4053ca52005-02-18 16:34:21 +00002047case 86:
vlm2c8c44d2005-03-24 16:22:35 +00002048#line 932 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002049{
vlmec8f6812004-08-22 03:19:54 +00002050 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002051 ;
2052 break;}
vlm4053ca52005-02-18 16:34:21 +00002053case 87:
vlm2c8c44d2005-03-24 16:22:35 +00002054#line 938 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002055{
vlmfa67ddc2004-06-03 03:38:44 +00002056 yyval.a_expr = yyvsp[-2].a_expr;
2057 checkmem(yyval.a_expr);
2058 yyval.a_expr->with_syntax = yyvsp[0].a_wsynt;
2059 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
2060 assert(yyval.a_expr->meta_type == AMT_OBJECT);
vlm6a02a8a2004-09-08 00:28:11 +00002061 ;
2062 break;}
vlm4053ca52005-02-18 16:34:21 +00002063case 88:
vlm2c8c44d2005-03-24 16:22:35 +00002064#line 948 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002065{ yyval.a_int = 0; ;
2066 break;}
vlm4053ca52005-02-18 16:34:21 +00002067case 89:
vlm2c8c44d2005-03-24 16:22:35 +00002068#line 949 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002069{ yyval.a_int = 1; ;
2070 break;}
vlm4053ca52005-02-18 16:34:21 +00002071case 90:
vlm2c8c44d2005-03-24 16:22:35 +00002072#line 953 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002073{
vlmfa67ddc2004-06-03 03:38:44 +00002074 yyval.a_expr = asn1p_expr_new(yylineno);
2075 checkmem(yyval.a_expr);
2076 yyval.a_expr->expr_type = A1TC_CLASSDEF;
2077 yyval.a_expr->meta_type = AMT_OBJECT;
vlm6a02a8a2004-09-08 00:28:11 +00002078 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2079 ;
2080 break;}
vlm4053ca52005-02-18 16:34:21 +00002081case 91:
vlm2c8c44d2005-03-24 16:22:35 +00002082#line 960 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002083{
vlmfa67ddc2004-06-03 03:38:44 +00002084 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002085 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2086 ;
2087 break;}
vlm4053ca52005-02-18 16:34:21 +00002088case 92:
vlm2c8c44d2005-03-24 16:22:35 +00002089#line 967 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002090{
vlmfa67ddc2004-06-03 03:38:44 +00002091 yyval.a_expr = asn1p_expr_new(yylineno);
2092 checkmem(yyval.a_expr);
2093 yyval.a_expr->Identifier = yyvsp[-1].a_refcomp.name;
2094 yyval.a_expr->expr_type = A1TC_CLASSFIELD;
2095 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2096 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm6a02a8a2004-09-08 00:28:11 +00002097 ;
2098 break;}
vlm4053ca52005-02-18 16:34:21 +00002099case 93:
vlm2c8c44d2005-03-24 16:22:35 +00002100#line 975 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002101{
vlmec8f6812004-08-22 03:19:54 +00002102 yyval.a_expr = yyvsp[-2].a_expr;
2103 yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
vlmbde35d42004-11-24 17:43:29 +00002104 yyval.a_expr->marker = yyvsp[0].a_marker;
2105 yyval.a_expr->unique = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00002106 ;
2107 break;}
vlm4053ca52005-02-18 16:34:21 +00002108case 94:
vlm2c8c44d2005-03-24 16:22:35 +00002109#line 981 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002110{
vlmfa67ddc2004-06-03 03:38:44 +00002111 int ret;
2112 yyval.a_expr = asn1p_expr_new(yylineno);
2113 checkmem(yyval.a_expr);
2114 yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
2115 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2116 checkmem(yyval.a_expr->reference);
2117 ret = asn1p_ref_add_component(yyval.a_expr->reference,
2118 yyvsp[-2].a_refcomp.name, yyvsp[-2].a_refcomp.lex_type);
2119 checkmem(ret == 0);
2120 yyval.a_expr->expr_type = A1TC_CLASSFIELD;
2121 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
vlmbde35d42004-11-24 17:43:29 +00002122 yyval.a_expr->marker = yyvsp[0].a_marker;
2123 yyval.a_expr->unique = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00002124 ;
2125 break;}
vlm4053ca52005-02-18 16:34:21 +00002126case 95:
vlm2c8c44d2005-03-24 16:22:35 +00002127#line 999 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002128{ yyval.a_wsynt = 0; ;
2129 break;}
vlm4053ca52005-02-18 16:34:21 +00002130case 96:
vlm2c8c44d2005-03-24 16:22:35 +00002131#line 1000 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002132{
vlmfa67ddc2004-06-03 03:38:44 +00002133 yyval.a_wsynt = yyvsp[0].a_wsynt;
vlm6a02a8a2004-09-08 00:28:11 +00002134 ;
2135 break;}
vlm4053ca52005-02-18 16:34:21 +00002136case 97:
vlm2c8c44d2005-03-24 16:22:35 +00002137#line 1007 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002138{ asn1p_lexer_hack_enable_with_syntax(); ;
2139 break;}
vlm4053ca52005-02-18 16:34:21 +00002140case 98:
vlm2c8c44d2005-03-24 16:22:35 +00002141#line 1009 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002142{
vlmfa67ddc2004-06-03 03:38:44 +00002143 yyval.a_wsynt = yyvsp[-1].a_wsynt;
vlm6a02a8a2004-09-08 00:28:11 +00002144 ;
2145 break;}
vlm4053ca52005-02-18 16:34:21 +00002146case 99:
vlm2c8c44d2005-03-24 16:22:35 +00002147#line 1015 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002148{
vlmfa67ddc2004-06-03 03:38:44 +00002149 yyval.a_wsynt = asn1p_wsyntx_new();
2150 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm6a02a8a2004-09-08 00:28:11 +00002151 ;
2152 break;}
vlm4053ca52005-02-18 16:34:21 +00002153case 100:
vlm2c8c44d2005-03-24 16:22:35 +00002154#line 1019 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002155{
vlmfa67ddc2004-06-03 03:38:44 +00002156 yyval.a_wsynt = yyvsp[-1].a_wsynt;
2157 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm6a02a8a2004-09-08 00:28:11 +00002158 ;
2159 break;}
vlm4053ca52005-02-18 16:34:21 +00002160case 101:
vlm2c8c44d2005-03-24 16:22:35 +00002161#line 1026 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002162{
vlmfa67ddc2004-06-03 03:38:44 +00002163 yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
vlm6a02a8a2004-09-08 00:28:11 +00002164 ;
2165 break;}
vlm4053ca52005-02-18 16:34:21 +00002166case 102:
vlm2c8c44d2005-03-24 16:22:35 +00002167#line 1029 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002168{
vlmfa67ddc2004-06-03 03:38:44 +00002169 asn1p_ref_t *ref;
2170 int ret;
2171 ref = asn1p_ref_new(yylineno);
2172 checkmem(ref);
2173 ret = asn1p_ref_add_component(ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2174 checkmem(ret == 0);
2175 yyval.a_wchunk = asn1p_wsyntx_chunk_fromref(ref, 0);
vlm6a02a8a2004-09-08 00:28:11 +00002176 ;
2177 break;}
vlm0aa86902004-10-12 23:26:53 +00002178case 103:
vlm2c8c44d2005-03-24 16:22:35 +00002179#line 1041 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00002180{
2181 yyval.a_expr = asn1p_expr_new(yylineno);
2182 checkmem(yyval.a_expr);
2183 yyval.a_expr->Identifier = strdup("...");
2184 checkmem(yyval.a_expr->Identifier);
vlm0aa86902004-10-12 23:26:53 +00002185 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2186 yyval.a_expr->meta_type = AMT_TYPE;
2187 ;
2188 break;}
2189case 104:
vlm2c8c44d2005-03-24 16:22:35 +00002190#line 1049 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002191{
2192 yyval.a_expr = asn1p_expr_new(yylineno);
2193 checkmem(yyval.a_expr);
2194 yyval.a_expr->Identifier = strdup("...");
2195 checkmem(yyval.a_expr->Identifier);
2196 yyval.a_expr->value = yyvsp[0].a_value;
2197 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2198 yyval.a_expr->meta_type = AMT_TYPE;
2199 ;
2200 break;}
2201case 105:
vlm2c8c44d2005-03-24 16:22:35 +00002202#line 1058 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00002203{
2204 yyval.a_expr = asn1p_expr_new(yylineno);
2205 checkmem(yyval.a_expr);
2206 yyval.a_expr->Identifier = strdup("...");
vlm5f0128b2004-08-20 13:25:29 +00002207 yyval.a_expr->value = yyvsp[0].a_value;
2208 checkmem(yyval.a_expr->Identifier);
2209 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2210 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002211 ;
2212 break;}
vlm4053ca52005-02-18 16:34:21 +00002213case 106:
vlm2c8c44d2005-03-24 16:22:35 +00002214#line 1070 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002215{
vlmec8f6812004-08-22 03:19:54 +00002216 yyval.a_expr = yyvsp[-1].a_expr;
vlmfce48a42004-09-14 02:36:39 +00002217 yyval.a_expr->tag = yyvsp[-2].a_tag;
vlmec8f6812004-08-22 03:19:54 +00002218 /*
2219 * Outer constraint for SEQUENCE OF and SET OF applies
2220 * to the inner type.
2221 */
2222 if(yyval.a_expr->expr_type == ASN_CONSTR_SEQUENCE_OF
2223 || yyval.a_expr->expr_type == ASN_CONSTR_SET_OF) {
2224 assert(!TQ_FIRST(&(yyval.a_expr->members))->constraints);
2225 TQ_FIRST(&(yyval.a_expr->members))->constraints = yyvsp[0].a_constr;
2226 } else {
2227 if(yyval.a_expr->constraints) {
vlmfce48a42004-09-14 02:36:39 +00002228 assert(!yyvsp[-1].a_expr);
vlmec8f6812004-08-22 03:19:54 +00002229 } else {
2230 yyval.a_expr->constraints = yyvsp[0].a_constr;
2231 }
2232 }
vlm6a02a8a2004-09-08 00:28:11 +00002233 ;
2234 break;}
vlm4053ca52005-02-18 16:34:21 +00002235case 107:
vlm2c8c44d2005-03-24 16:22:35 +00002236#line 1092 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002237{
vlm5f0128b2004-08-20 13:25:29 +00002238 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002239 ;
2240 break;}
vlm4053ca52005-02-18 16:34:21 +00002241case 108:
vlm2c8c44d2005-03-24 16:22:35 +00002242#line 1095 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002243{
vlm5e2c4b92005-03-20 11:12:40 +00002244 yyval.a_expr = yyvsp[-1].a_expr;
2245 assert(yyval.a_expr->expr_type == A1TC_INVALID);
2246 yyval.a_expr->expr_type = ASN_CONSTR_CHOICE;
vlmfa67ddc2004-06-03 03:38:44 +00002247 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002248 ;
2249 break;}
vlm4053ca52005-02-18 16:34:21 +00002250case 109:
vlm2c8c44d2005-03-24 16:22:35 +00002251#line 1101 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002252{
vlmec8f6812004-08-22 03:19:54 +00002253 yyval.a_expr = yyvsp[-1].a_expr;
2254 assert(yyval.a_expr->expr_type == A1TC_INVALID);
vlm5e2c4b92005-03-20 11:12:40 +00002255 yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE;
vlmec8f6812004-08-22 03:19:54 +00002256 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002257 ;
2258 break;}
vlm4053ca52005-02-18 16:34:21 +00002259case 110:
vlm2c8c44d2005-03-24 16:22:35 +00002260#line 1107 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002261{
vlmec8f6812004-08-22 03:19:54 +00002262 yyval.a_expr = yyvsp[-1].a_expr;
2263 assert(yyval.a_expr->expr_type == A1TC_INVALID);
vlm5e2c4b92005-03-20 11:12:40 +00002264 yyval.a_expr->expr_type = ASN_CONSTR_SET;
vlmec8f6812004-08-22 03:19:54 +00002265 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002266 ;
2267 break;}
vlm4053ca52005-02-18 16:34:21 +00002268case 111:
vlm2c8c44d2005-03-24 16:22:35 +00002269#line 1113 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002270{
vlm39e5ed72004-09-05 10:40:41 +00002271 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002272 checkmem(yyval.a_expr);
vlm151c0b22004-09-22 16:03:36 +00002273 yyval.a_expr->constraints = yyvsp[-4].a_constr;
vlmec8f6812004-08-22 03:19:54 +00002274 yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE_OF;
2275 yyval.a_expr->meta_type = AMT_TYPE;
vlm151c0b22004-09-22 16:03:36 +00002276 yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
vlma2374a02004-09-14 02:44:07 +00002277 yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
vlm6a02a8a2004-09-08 00:28:11 +00002278 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2279 ;
2280 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002281case 112:
vlm2c8c44d2005-03-24 16:22:35 +00002282#line 1123 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002283{
vlm39e5ed72004-09-05 10:40:41 +00002284 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002285 checkmem(yyval.a_expr);
vlm151c0b22004-09-22 16:03:36 +00002286 yyval.a_expr->constraints = yyvsp[-4].a_constr;
vlmec8f6812004-08-22 03:19:54 +00002287 yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
2288 yyval.a_expr->meta_type = AMT_TYPE;
vlm151c0b22004-09-22 16:03:36 +00002289 yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
vlma2374a02004-09-14 02:44:07 +00002290 yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
vlm6a02a8a2004-09-08 00:28:11 +00002291 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2292 ;
2293 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002294case 113:
vlm2c8c44d2005-03-24 16:22:35 +00002295#line 1133 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002296{
vlm39e5ed72004-09-05 10:40:41 +00002297 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002298 checkmem(yyval.a_expr);
vlm044f7442004-09-04 04:49:21 +00002299 yyval.a_expr->expr_type = ASN_TYPE_ANY;
vlmec8f6812004-08-22 03:19:54 +00002300 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002301 ;
2302 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002303case 114:
vlm2c8c44d2005-03-24 16:22:35 +00002304#line 1139 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002305{
vlmec8f6812004-08-22 03:19:54 +00002306 int ret;
vlm39e5ed72004-09-05 10:40:41 +00002307 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002308 checkmem(yyval.a_expr);
2309 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2310 ret = asn1p_ref_add_component(yyval.a_expr->reference,
2311 yyvsp[0].tv_str, RLT_lowercase);
2312 checkmem(ret == 0);
vlm044f7442004-09-04 04:49:21 +00002313 yyval.a_expr->expr_type = ASN_TYPE_ANY;
vlmec8f6812004-08-22 03:19:54 +00002314 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002315 ;
2316 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002317case 115:
vlm2c8c44d2005-03-24 16:22:35 +00002318#line 1153 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002319{
vlmfa67ddc2004-06-03 03:38:44 +00002320 int ret;
2321 yyval.a_expr = yyvsp[-1].a_expr;
2322 assert(yyval.a_expr->expr_type == 0);
2323 assert(yyval.a_expr->meta_type == 0);
2324 assert(yyval.a_expr->reference == 0);
2325 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2326 checkmem(yyval.a_expr->reference);
2327 ret = asn1p_ref_add_component(yyval.a_expr->reference, yyvsp[-3].tv_str, RLT_UNKNOWN);
2328 checkmem(ret == 0);
2329 free(yyvsp[-3].tv_str);
2330 yyval.a_expr->expr_type = A1TC_PARAMETRIZED;
2331 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002332 ;
2333 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002334case 116:
vlm2c8c44d2005-03-24 16:22:35 +00002335#line 1177 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002336{
vlmfa67ddc2004-06-03 03:38:44 +00002337 yyval.a_expr = asn1p_expr_new(yylineno);
2338 checkmem(yyval.a_expr);
2339 yyval.a_expr->reference = yyvsp[0].a_ref;
2340 yyval.a_expr->expr_type = A1TC_REFERENCE;
2341 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm6a02a8a2004-09-08 00:28:11 +00002342 ;
2343 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002344case 117:
vlm2c8c44d2005-03-24 16:22:35 +00002345#line 1184 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002346{
vlmfa67ddc2004-06-03 03:38:44 +00002347 yyval.a_expr = asn1p_expr_new(yylineno);
2348 checkmem(yyval.a_expr);
2349 yyval.a_expr->reference = yyvsp[0].a_ref;
2350 yyval.a_expr->expr_type = A1TC_INSTANCE;
2351 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002352 ;
2353 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002354case 118:
vlm2c8c44d2005-03-24 16:22:35 +00002355#line 1199 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002356{
vlmfa67ddc2004-06-03 03:38:44 +00002357 int ret;
2358 yyval.a_ref = asn1p_ref_new(yylineno);
2359 checkmem(yyval.a_ref);
2360 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
2361 checkmem(ret == 0);
2362 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002363 ;
2364 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002365case 119:
vlm2c8c44d2005-03-24 16:22:35 +00002366#line 1207 "asn1p_y.y"
vlm5e2c4b92005-03-20 11:12:40 +00002367{
2368 int ret;
2369 yyval.a_ref = asn1p_ref_new(yylineno);
2370 checkmem(yyval.a_ref);
2371 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2372 checkmem(ret == 0);
2373 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
2374 checkmem(ret == 0);
2375 free(yyvsp[-2].tv_str);
2376 ;
2377 break;}
vlm0aa86902004-10-12 23:26:53 +00002378case 120:
vlm2c8c44d2005-03-24 16:22:35 +00002379#line 1217 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002380{
vlmfa67ddc2004-06-03 03:38:44 +00002381 int ret;
2382 yyval.a_ref = asn1p_ref_new(yylineno);
2383 checkmem(yyval.a_ref);
2384 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2385 checkmem(ret == 0);
vlmc94e28f2004-09-15 11:59:51 +00002386 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
vlmfa67ddc2004-06-03 03:38:44 +00002387 checkmem(ret == 0);
2388 free(yyvsp[-2].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002389 ;
2390 break;}
vlm0aa86902004-10-12 23:26:53 +00002391case 121:
vlm2c8c44d2005-03-24 16:22:35 +00002392#line 1227 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002393{
vlmfa67ddc2004-06-03 03:38:44 +00002394 int ret;
2395 yyval.a_ref = asn1p_ref_new(yylineno);
2396 checkmem(yyval.a_ref);
vlmc94e28f2004-09-15 11:59:51 +00002397 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2398 checkmem(ret == 0);
2399 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
2400 checkmem(ret == 0);
2401 free(yyvsp[-2].tv_str);
2402 ;
2403 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002404case 122:
vlm2c8c44d2005-03-24 16:22:35 +00002405#line 1237 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002406{
2407 int ret;
2408 yyval.a_ref = asn1p_ref_new(yylineno);
2409 checkmem(yyval.a_ref);
vlmfa67ddc2004-06-03 03:38:44 +00002410 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
2411 free(yyvsp[0].tv_str);
2412 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002413 ;
2414 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002415case 123:
vlm2c8c44d2005-03-24 16:22:35 +00002416#line 1245 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002417{
vlmfa67ddc2004-06-03 03:38:44 +00002418 int ret;
2419 yyval.a_ref = yyvsp[0].a_ref;
2420 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_CAPITALS);
2421 free(yyvsp[-2].tv_str);
2422 checkmem(ret == 0);
2423 /*
2424 * Move the last element infront.
2425 */
2426 {
2427 struct asn1p_ref_component_s tmp_comp;
2428 tmp_comp = yyval.a_ref->components[yyval.a_ref->comp_count-1];
2429 memmove(&yyval.a_ref->components[1],
2430 &yyval.a_ref->components[0],
2431 sizeof(yyval.a_ref->components[0])
2432 * (yyval.a_ref->comp_count - 1));
2433 yyval.a_ref->components[0] = tmp_comp;
2434 }
vlm6a02a8a2004-09-08 00:28:11 +00002435 ;
2436 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002437case 124:
vlm2c8c44d2005-03-24 16:22:35 +00002438#line 1267 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002439{
vlmfa67ddc2004-06-03 03:38:44 +00002440 int ret;
2441 yyval.a_ref = asn1p_ref_new(yylineno);
2442 checkmem(yyval.a_ref);
2443 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2444 free(yyvsp[0].a_refcomp.name);
2445 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002446 ;
2447 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002448case 125:
vlm2c8c44d2005-03-24 16:22:35 +00002449#line 1275 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002450{
vlmfa67ddc2004-06-03 03:38:44 +00002451 int ret;
2452 yyval.a_ref = yyvsp[-2].a_ref;
2453 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2454 free(yyvsp[0].a_refcomp.name);
2455 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002456 ;
2457 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002458case 128:
vlm2c8c44d2005-03-24 16:22:35 +00002459#line 1289 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002460{
vlmfa67ddc2004-06-03 03:38:44 +00002461 yyval.a_refcomp.lex_type = RLT_AmpUppercase;
2462 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00002463 ;
2464 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002465case 129:
vlm2c8c44d2005-03-24 16:22:35 +00002466#line 1294 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002467{
vlmfa67ddc2004-06-03 03:38:44 +00002468 yyval.a_refcomp.lex_type = RLT_Amplowercase;
2469 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00002470 ;
2471 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002472case 130:
vlm2c8c44d2005-03-24 16:22:35 +00002473#line 1307 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002474{
vlmfa67ddc2004-06-03 03:38:44 +00002475 yyval.a_expr = yyvsp[-2].a_expr;
2476 assert(yyval.a_expr->Identifier == NULL);
2477 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
2478 yyval.a_expr->meta_type = AMT_VALUE;
2479 yyval.a_expr->value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00002480 ;
2481 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002482case 131:
vlm2c8c44d2005-03-24 16:22:35 +00002483#line 1317 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002484{
2485 yyval.a_value = asn1p_value_fromint(0);
2486 checkmem(yyval.a_value);
2487 yyval.a_value->type = ATV_CHOICE_IDENTIFIER;
2488 yyval.a_value->value.choice_identifier.identifier = yyvsp[-2].tv_str;
2489 yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
2490 ;
2491 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002492case 132:
vlm2c8c44d2005-03-24 16:22:35 +00002493#line 1324 "asn1p_y.y"
2494{ printf("push\n"); asn1p_lexer_hack_push_opaque_state(); ;
vlm6a02a8a2004-09-08 00:28:11 +00002495 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002496case 133:
vlm2c8c44d2005-03-24 16:22:35 +00002497#line 1324 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002498{
vlmfa67ddc2004-06-03 03:38:44 +00002499 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2500 checkmem(yyval.a_value);
2501 yyval.a_value->type = ATV_UNPARSED;
vlm6a02a8a2004-09-08 00:28:11 +00002502 ;
2503 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002504case 134:
vlm2c8c44d2005-03-24 16:22:35 +00002505#line 1329 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002506{
2507 yyval.a_value = asn1p_value_fromint(0);
2508 checkmem(yyval.a_value);
2509 yyval.a_value->type = ATV_NULL;
2510 ;
2511 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002512case 135:
vlm2c8c44d2005-03-24 16:22:35 +00002513#line 1334 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002514{
2515 yyval.a_value = asn1p_value_fromint(0);
2516 checkmem(yyval.a_value);
2517 yyval.a_value->type = ATV_FALSE;
2518 ;
2519 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002520case 136:
vlm2c8c44d2005-03-24 16:22:35 +00002521#line 1339 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002522{
2523 yyval.a_value = asn1p_value_fromint(0);
2524 checkmem(yyval.a_value);
2525 yyval.a_value->type = ATV_TRUE;
2526 ;
2527 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002528case 137:
vlm2c8c44d2005-03-24 16:22:35 +00002529#line 1344 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002530{
vlmfa67ddc2004-06-03 03:38:44 +00002531 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
2532 checkmem(yyval.a_value);
vlm6a02a8a2004-09-08 00:28:11 +00002533 ;
2534 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002535case 138:
vlm2c8c44d2005-03-24 16:22:35 +00002536#line 1348 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002537{
vlmfa67ddc2004-06-03 03:38:44 +00002538 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
2539 checkmem(yyval.a_value);
vlm6a02a8a2004-09-08 00:28:11 +00002540 ;
2541 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002542case 139:
vlm2c8c44d2005-03-24 16:22:35 +00002543#line 1352 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002544{
vlme1e6ed82005-03-24 14:26:38 +00002545 yyval.a_value = yyval.a_value;
vlm6a02a8a2004-09-08 00:28:11 +00002546 ;
2547 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002548case 140:
vlm2c8c44d2005-03-24 16:22:35 +00002549#line 1355 "asn1p_y.y"
vlm5e2c4b92005-03-20 11:12:40 +00002550{
2551 yyval.a_value = yyvsp[0].a_value;
2552 ;
2553 break;}
vlm0aa86902004-10-12 23:26:53 +00002554case 141:
vlm2c8c44d2005-03-24 16:22:35 +00002555#line 1358 "asn1p_y.y"
vlm151c0b22004-09-22 16:03:36 +00002556{
2557 yyval.a_value = yyvsp[0].a_value;
2558 ;
2559 break;}
vlm0aa86902004-10-12 23:26:53 +00002560case 142:
vlm2c8c44d2005-03-24 16:22:35 +00002561#line 1364 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002562{
vlmfa67ddc2004-06-03 03:38:44 +00002563 asn1p_ref_t *ref;
2564 int ret;
2565 ref = asn1p_ref_new(yylineno);
2566 checkmem(ref);
2567 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
2568 checkmem(ret == 0);
2569 yyval.a_value = asn1p_value_fromref(ref, 0);
2570 checkmem(yyval.a_value);
2571 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002572 ;
2573 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002574case 143:
vlm2c8c44d2005-03-24 16:22:35 +00002575#line 1375 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002576{
vlmfa67ddc2004-06-03 03:38:44 +00002577 asn1p_ref_t *ref;
2578 int ret;
2579 ref = asn1p_ref_new(yylineno);
2580 checkmem(ref);
2581 ret = asn1p_ref_add_component(ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2582 checkmem(ret == 0);
2583 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
2584 checkmem(ret == 0);
2585 yyval.a_value = asn1p_value_fromref(ref, 0);
2586 checkmem(yyval.a_value);
2587 free(yyvsp[-2].tv_str);
2588 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002589 ;
2590 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002591case 144:
vlm2c8c44d2005-03-24 16:22:35 +00002592#line 1393 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002593{
2594 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2595 checkmem(yyval.a_value);
2596 ;
2597 break;}
2598case 145:
vlm2c8c44d2005-03-24 16:22:35 +00002599#line 1397 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002600{
vlm2c8c44d2005-03-24 16:22:35 +00002601 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
vlme1e6ed82005-03-24 14:26:38 +00002602 checkmem(yyval.a_value);
2603 yyval.a_value->type = ATV_TUPLE;
2604 ;
2605 break;}
2606case 146:
vlm2c8c44d2005-03-24 16:22:35 +00002607#line 1402 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002608{
vlm2c8c44d2005-03-24 16:22:35 +00002609 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
vlme1e6ed82005-03-24 14:26:38 +00002610 checkmem(yyval.a_value);
2611 yyval.a_value->type = ATV_QUADRUPLE;
2612 ;
2613 break;}
2614case 147:
vlm2c8c44d2005-03-24 16:22:35 +00002615#line 1436 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002616{
vlm6611add2005-03-20 14:28:32 +00002617 yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
vlmfa67ddc2004-06-03 03:38:44 +00002618 yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
2619 checkmem(yyval.tv_opaque.buf);
2620 yyval.tv_opaque.buf[0] = '{';
vlm6611add2005-03-20 14:28:32 +00002621 memcpy(yyval.tv_opaque.buf + 1, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
vlmfa67ddc2004-06-03 03:38:44 +00002622 yyval.tv_opaque.buf[yyval.tv_opaque.len] = '\0';
2623 free(yyvsp[0].tv_opaque.buf);
vlm6a02a8a2004-09-08 00:28:11 +00002624 ;
2625 break;}
vlme1e6ed82005-03-24 14:26:38 +00002626case 148:
vlm2c8c44d2005-03-24 16:22:35 +00002627#line 1445 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002628{
vlmfa67ddc2004-06-03 03:38:44 +00002629 int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
2630 char *p = malloc(newsize + 1);
2631 checkmem(p);
2632 memcpy(p , yyvsp[-1].tv_opaque.buf, yyvsp[-1].tv_opaque.len);
2633 memcpy(p + yyvsp[-1].tv_opaque.len, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
2634 p[newsize] = '\0';
2635 free(yyvsp[-1].tv_opaque.buf);
2636 free(yyvsp[0].tv_opaque.buf);
2637 yyval.tv_opaque.buf = p;
2638 yyval.tv_opaque.len = newsize;
vlm6a02a8a2004-09-08 00:28:11 +00002639 ;
2640 break;}
vlme1e6ed82005-03-24 14:26:38 +00002641case 149:
vlm2c8c44d2005-03-24 16:22:35 +00002642#line 1460 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002643{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
2644 break;}
vlme1e6ed82005-03-24 14:26:38 +00002645case 150:
vlm2c8c44d2005-03-24 16:22:35 +00002646#line 1461 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002647{ yyval.a_type = ASN_BASIC_NULL; ;
2648 break;}
vlme1e6ed82005-03-24 14:26:38 +00002649case 151:
vlm2c8c44d2005-03-24 16:22:35 +00002650#line 1462 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002651{ yyval.a_type = ASN_BASIC_REAL; ;
2652 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002653case 152:
vlm2c8c44d2005-03-24 16:22:35 +00002654#line 1463 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002655{ yyval.a_type = yyvsp[0].a_type; ;
vlm6a02a8a2004-09-08 00:28:11 +00002656 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002657case 153:
vlm2c8c44d2005-03-24 16:22:35 +00002658#line 1464 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002659{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
vlm6a02a8a2004-09-08 00:28:11 +00002660 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002661case 154:
vlm2c8c44d2005-03-24 16:22:35 +00002662#line 1465 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002663{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
vlm6a02a8a2004-09-08 00:28:11 +00002664 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002665case 155:
vlm2c8c44d2005-03-24 16:22:35 +00002666#line 1466 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002667{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
vlm6a02a8a2004-09-08 00:28:11 +00002668 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002669case 156:
vlm2c8c44d2005-03-24 16:22:35 +00002670#line 1467 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002671{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
vlm6a02a8a2004-09-08 00:28:11 +00002672 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002673case 157:
vlm2c8c44d2005-03-24 16:22:35 +00002674#line 1468 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002675{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
vlm6a02a8a2004-09-08 00:28:11 +00002676 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002677case 158:
vlm2c8c44d2005-03-24 16:22:35 +00002678#line 1469 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002679{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
vlm5e2c4b92005-03-20 11:12:40 +00002680 break;}
vlm4053ca52005-02-18 16:34:21 +00002681case 159:
vlm2c8c44d2005-03-24 16:22:35 +00002682#line 1470 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002683{ yyval.a_type = ASN_BASIC_UTCTime; ;
vlm6a02a8a2004-09-08 00:28:11 +00002684 break;}
vlm4053ca52005-02-18 16:34:21 +00002685case 160:
vlm2c8c44d2005-03-24 16:22:35 +00002686#line 1471 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002687{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
vlm6a02a8a2004-09-08 00:28:11 +00002688 break;}
vlm4053ca52005-02-18 16:34:21 +00002689case 161:
vlm2c8c44d2005-03-24 16:22:35 +00002690#line 1472 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002691{ yyval.a_type = yyvsp[0].a_type; ;
vlm6a02a8a2004-09-08 00:28:11 +00002692 break;}
vlm4053ca52005-02-18 16:34:21 +00002693case 162:
vlm2c8c44d2005-03-24 16:22:35 +00002694#line 1479 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002695{ yyval.a_type = ASN_BASIC_INTEGER; ;
2696 break;}
2697case 163:
vlm2c8c44d2005-03-24 16:22:35 +00002698#line 1480 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002699{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
2700 break;}
2701case 164:
vlm2c8c44d2005-03-24 16:22:35 +00002702#line 1481 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002703{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
2704 break;}
2705case 165:
vlm2c8c44d2005-03-24 16:22:35 +00002706#line 1485 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002707{
vlm39e5ed72004-09-05 10:40:41 +00002708 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00002709 checkmem(yyval.a_expr);
2710 yyval.a_expr->expr_type = yyvsp[0].a_type;
2711 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002712 ;
2713 break;}
vlme1e6ed82005-03-24 14:26:38 +00002714case 166:
vlm2c8c44d2005-03-24 16:22:35 +00002715#line 1491 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002716{
vlmfa67ddc2004-06-03 03:38:44 +00002717 if(yyvsp[0].a_expr) {
2718 yyval.a_expr = yyvsp[0].a_expr;
2719 } else {
vlm39e5ed72004-09-05 10:40:41 +00002720 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00002721 checkmem(yyval.a_expr);
2722 }
2723 yyval.a_expr->expr_type = yyvsp[-1].a_type;
2724 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002725 ;
2726 break;}
vlme1e6ed82005-03-24 14:26:38 +00002727case 167:
vlm2c8c44d2005-03-24 16:22:35 +00002728#line 1504 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002729{ yyval.a_type = ASN_STRING_BMPString; ;
2730 break;}
vlme1e6ed82005-03-24 14:26:38 +00002731case 168:
vlm2c8c44d2005-03-24 16:22:35 +00002732#line 1505 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002733{
vlmfa67ddc2004-06-03 03:38:44 +00002734 yyval.a_type = ASN_STRING_GeneralString;
vlmc94e28f2004-09-15 11:59:51 +00002735 fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
vlm6a02a8a2004-09-08 00:28:11 +00002736 ;
2737 break;}
vlme1e6ed82005-03-24 14:26:38 +00002738case 169:
vlm2c8c44d2005-03-24 16:22:35 +00002739#line 1509 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002740{
vlmc94e28f2004-09-15 11:59:51 +00002741 yyval.a_type = ASN_STRING_GraphicString;
2742 fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
vlm6a02a8a2004-09-08 00:28:11 +00002743 ;
2744 break;}
vlme1e6ed82005-03-24 14:26:38 +00002745case 170:
vlm2c8c44d2005-03-24 16:22:35 +00002746#line 1513 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002747{ yyval.a_type = ASN_STRING_IA5String; ;
vlm6a02a8a2004-09-08 00:28:11 +00002748 break;}
vlme1e6ed82005-03-24 14:26:38 +00002749case 171:
vlm2c8c44d2005-03-24 16:22:35 +00002750#line 1514 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002751{ yyval.a_type = ASN_STRING_ISO646String; ;
vlm6a02a8a2004-09-08 00:28:11 +00002752 break;}
vlme1e6ed82005-03-24 14:26:38 +00002753case 172:
vlm2c8c44d2005-03-24 16:22:35 +00002754#line 1515 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002755{ yyval.a_type = ASN_STRING_NumericString; ;
vlm6a02a8a2004-09-08 00:28:11 +00002756 break;}
vlme1e6ed82005-03-24 14:26:38 +00002757case 173:
vlm2c8c44d2005-03-24 16:22:35 +00002758#line 1516 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002759{ yyval.a_type = ASN_STRING_PrintableString; ;
vlm6a02a8a2004-09-08 00:28:11 +00002760 break;}
vlme1e6ed82005-03-24 14:26:38 +00002761case 174:
vlm2c8c44d2005-03-24 16:22:35 +00002762#line 1517 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002763{
2764 yyval.a_type = ASN_STRING_T61String;
2765 fprintf(stderr, "WARNING: T61String is not fully supported\n");
2766 ;
vlm6a02a8a2004-09-08 00:28:11 +00002767 break;}
vlme1e6ed82005-03-24 14:26:38 +00002768case 175:
vlm2c8c44d2005-03-24 16:22:35 +00002769#line 1521 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002770{ yyval.a_type = ASN_STRING_TeletexString; ;
2771 break;}
vlme1e6ed82005-03-24 14:26:38 +00002772case 176:
vlm2c8c44d2005-03-24 16:22:35 +00002773#line 1522 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002774{ yyval.a_type = ASN_STRING_UniversalString; ;
2775 break;}
vlme1e6ed82005-03-24 14:26:38 +00002776case 177:
vlm2c8c44d2005-03-24 16:22:35 +00002777#line 1523 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002778{ yyval.a_type = ASN_STRING_UTF8String; ;
2779 break;}
vlme1e6ed82005-03-24 14:26:38 +00002780case 178:
vlm2c8c44d2005-03-24 16:22:35 +00002781#line 1524 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002782{
2783 yyval.a_type = ASN_STRING_VideotexString;
2784 fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
2785 ;
2786 break;}
vlme1e6ed82005-03-24 14:26:38 +00002787case 179:
vlm2c8c44d2005-03-24 16:22:35 +00002788#line 1528 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002789{ yyval.a_type = ASN_STRING_VisibleString; ;
2790 break;}
vlme1e6ed82005-03-24 14:26:38 +00002791case 180:
vlm2c8c44d2005-03-24 16:22:35 +00002792#line 1529 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002793{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
2794 break;}
vlme1e6ed82005-03-24 14:26:38 +00002795case 186:
vlm2c8c44d2005-03-24 16:22:35 +00002796#line 1541 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002797{ yyval.a_constr = 0; ;
2798 break;}
vlme1e6ed82005-03-24 14:26:38 +00002799case 187:
vlm2c8c44d2005-03-24 16:22:35 +00002800#line 1542 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002801{
vlm39e5ed72004-09-05 10:40:41 +00002802 yyval.a_constr = yyvsp[0].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00002803 ;
2804 break;}
vlme1e6ed82005-03-24 14:26:38 +00002805case 188:
vlm2c8c44d2005-03-24 16:22:35 +00002806#line 1548 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002807{
vlm39e5ed72004-09-05 10:40:41 +00002808 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
vlm6a02a8a2004-09-08 00:28:11 +00002809 ;
2810 break;}
vlme1e6ed82005-03-24 14:26:38 +00002811case 189:
vlm2c8c44d2005-03-24 16:22:35 +00002812#line 1551 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002813{
vlmfa67ddc2004-06-03 03:38:44 +00002814 /*
2815 * This is a special case, for compatibility purposes.
vlm9283dbe2004-08-18 04:59:12 +00002816 * It goes without parentheses.
vlmfa67ddc2004-06-03 03:38:44 +00002817 */
vlm5f0128b2004-08-20 13:25:29 +00002818 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
vlm6a02a8a2004-09-08 00:28:11 +00002819 ;
2820 break;}
vlme1e6ed82005-03-24 14:26:38 +00002821case 190:
vlm2c8c44d2005-03-24 16:22:35 +00002822#line 1561 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002823{
vlmfa67ddc2004-06-03 03:38:44 +00002824 yyval.a_constr = yyvsp[-1].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00002825 ;
2826 break;}
vlme1e6ed82005-03-24 14:26:38 +00002827case 191:
vlm2c8c44d2005-03-24 16:22:35 +00002828#line 1564 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002829{
vlm9283dbe2004-08-18 04:59:12 +00002830 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002831 ;
2832 break;}
vlme1e6ed82005-03-24 14:26:38 +00002833case 192:
vlm2c8c44d2005-03-24 16:22:35 +00002834#line 1570 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002835{
vlmfa67ddc2004-06-03 03:38:44 +00002836 yyval.a_constr = yyvsp[0].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00002837 ;
2838 break;}
vlme1e6ed82005-03-24 14:26:38 +00002839case 193:
vlm2c8c44d2005-03-24 16:22:35 +00002840#line 1573 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002841{
vlmfa67ddc2004-06-03 03:38:44 +00002842 asn1p_constraint_t *ct;
2843 ct = asn1p_constraint_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00002844 ct->type = ACT_EL_EXT;
2845 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm6a02a8a2004-09-08 00:28:11 +00002846 ;
2847 break;}
vlme1e6ed82005-03-24 14:26:38 +00002848case 194:
vlm2c8c44d2005-03-24 16:22:35 +00002849#line 1579 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002850{
vlmfa67ddc2004-06-03 03:38:44 +00002851 asn1p_constraint_t *ct;
2852 ct = asn1p_constraint_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00002853 ct->type = ACT_EL_EXT;
2854 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-4].a_constr, ct);
vlm6f5eb0b2004-08-13 12:35:09 +00002855 ct = yyval.a_constr;
2856 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002857 ;
2858 break;}
vlme1e6ed82005-03-24 14:26:38 +00002859case 195:
vlm2c8c44d2005-03-24 16:22:35 +00002860#line 1590 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002861{
vlm9283dbe2004-08-18 04:59:12 +00002862 yyval.a_constr = yyvsp[0].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00002863 ;
2864 break;}
vlme1e6ed82005-03-24 14:26:38 +00002865case 196:
vlm2c8c44d2005-03-24 16:22:35 +00002866#line 1593 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002867{
2868 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
2869 ;
2870 break;}
2871case 197:
vlm2c8c44d2005-03-24 16:22:35 +00002872#line 1596 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002873{
vlmfa67ddc2004-06-03 03:38:44 +00002874 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002875 ;
2876 break;}
vlme1e6ed82005-03-24 14:26:38 +00002877case 198:
vlm2c8c44d2005-03-24 16:22:35 +00002878#line 1599 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002879{
vlmfa67ddc2004-06-03 03:38:44 +00002880 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002881 ;
2882 break;}
vlme1e6ed82005-03-24 14:26:38 +00002883case 199:
vlm2c8c44d2005-03-24 16:22:35 +00002884#line 1602 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002885{
vlmfa67ddc2004-06-03 03:38:44 +00002886 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002887 ;
2888 break;}
vlme1e6ed82005-03-24 14:26:38 +00002889case 200:
vlm2c8c44d2005-03-24 16:22:35 +00002890#line 1608 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002891{
vlmfa67ddc2004-06-03 03:38:44 +00002892 int ret;
2893 yyval.a_constr = asn1p_constraint_new(yylineno);
2894 checkmem(yyval.a_constr);
2895 yyval.a_constr->type = yyvsp[-3].a_ctype;
2896 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
2897 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002898 ;
2899 break;}
vlme1e6ed82005-03-24 14:26:38 +00002900case 201:
vlm2c8c44d2005-03-24 16:22:35 +00002901#line 1616 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002902{
vlm9283dbe2004-08-18 04:59:12 +00002903 int ret;
2904 yyval.a_constr = asn1p_constraint_new(yylineno);
2905 checkmem(yyval.a_constr);
2906 yyval.a_constr->type = ACT_CA_SET;
2907 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
2908 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002909 ;
2910 break;}
vlme1e6ed82005-03-24 14:26:38 +00002911case 202:
vlm2c8c44d2005-03-24 16:22:35 +00002912#line 1624 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002913{
vlm9283dbe2004-08-18 04:59:12 +00002914 yyval.a_constr = asn1p_constraint_new(yylineno);
2915 checkmem(yyval.a_constr);
2916 yyval.a_constr->type = ACT_EL_VALUE;
2917 yyval.a_constr->value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00002918 ;
2919 break;}
vlme1e6ed82005-03-24 14:26:38 +00002920case 203:
vlm2c8c44d2005-03-24 16:22:35 +00002921#line 1630 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002922{
vlm0aa86902004-10-12 23:26:53 +00002923 yyval.a_constr = asn1p_constraint_new(yylineno);
2924 checkmem(yyval.a_constr);
vlma6a12e32005-03-20 12:58:00 +00002925 yyval.a_constr->type = ACT_EL_TYPE;
2926 yyval.a_constr->containedSubtype = yyvsp[0].a_value;
vlmc94e28f2004-09-15 11:59:51 +00002927 ;
2928 break;}
vlmc94e28f2004-09-15 11:59:51 +00002929case 204:
vlm2c8c44d2005-03-24 16:22:35 +00002930#line 1636 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002931{
vlme1e6ed82005-03-24 14:26:38 +00002932 yyval.a_constr = asn1p_constraint_new(yylineno);
2933 checkmem(yyval.a_constr);
2934 yyval.a_constr->type = yyvsp[-1].a_ctype;
2935 yyval.a_constr->range_start = yyvsp[-2].a_value;
2936 yyval.a_constr->range_stop = yyvsp[0].a_value;
vlm4053ca52005-02-18 16:34:21 +00002937 ;
vlm0aa86902004-10-12 23:26:53 +00002938 break;}
2939case 205:
vlm2c8c44d2005-03-24 16:22:35 +00002940#line 1643 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002941{
2942 yyval.a_constr = asn1p_constraint_new(yylineno);
2943 checkmem(yyval.a_constr);
2944 yyval.a_constr->type = yyvsp[-1].a_ctype;
2945 yyval.a_constr->range_start = asn1p_value_fromint(-123);
2946 yyval.a_constr->range_stop = yyvsp[0].a_value;
2947 yyval.a_constr->range_start->type = ATV_MIN;
2948 ;
2949 break;}
2950case 206:
vlm2c8c44d2005-03-24 16:22:35 +00002951#line 1651 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002952{
2953 yyval.a_constr = asn1p_constraint_new(yylineno);
2954 checkmem(yyval.a_constr);
2955 yyval.a_constr->type = yyvsp[-1].a_ctype;
2956 yyval.a_constr->range_start = yyvsp[-2].a_value;
2957 yyval.a_constr->range_stop = asn1p_value_fromint(321);
2958 yyval.a_constr->range_stop->type = ATV_MAX;
2959 ;
2960 break;}
2961case 207:
vlm2c8c44d2005-03-24 16:22:35 +00002962#line 1659 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002963{
2964 yyval.a_constr = asn1p_constraint_new(yylineno);
2965 checkmem(yyval.a_constr);
2966 yyval.a_constr->type = yyvsp[-1].a_ctype;
2967 yyval.a_constr->range_start = asn1p_value_fromint(-123);
2968 yyval.a_constr->range_stop = asn1p_value_fromint(321);
2969 yyval.a_constr->range_start->type = ATV_MIN;
2970 yyval.a_constr->range_stop->type = ATV_MAX;
2971 ;
2972 break;}
2973case 208:
vlm2c8c44d2005-03-24 16:22:35 +00002974#line 1668 "asn1p_y.y"
vlma6a12e32005-03-20 12:58:00 +00002975{
2976 yyval.a_constr = yyvsp[0].a_constr;
2977 ;
vlm0aa86902004-10-12 23:26:53 +00002978 break;}
vlme1e6ed82005-03-24 14:26:38 +00002979case 209:
vlm2c8c44d2005-03-24 16:22:35 +00002980#line 1671 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002981{
2982 yyval.a_constr = yyvsp[0].a_constr;
2983 ;
2984 break;}
2985case 210:
vlm2c8c44d2005-03-24 16:22:35 +00002986#line 1675 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00002987{ asn1p_lexer_hack_push_opaque_state(); ;
vlm0aa86902004-10-12 23:26:53 +00002988 break;}
vlme1e6ed82005-03-24 14:26:38 +00002989case 211:
vlm2c8c44d2005-03-24 16:22:35 +00002990#line 1675 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00002991{
2992 yyval.a_constr = asn1p_constraint_new(yylineno);
2993 checkmem(yyval.a_constr);
2994 yyval.a_constr->type = ACT_CT_CTDBY;
2995 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2996 checkmem(yyval.a_constr->value);
2997 yyval.a_constr->value->type = ATV_UNPARSED;
2998 ;
vlm0aa86902004-10-12 23:26:53 +00002999 break;}
vlme1e6ed82005-03-24 14:26:38 +00003000case 212:
vlm2c8c44d2005-03-24 16:22:35 +00003001#line 1686 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003002{ yyval.a_ctype = ACT_EL_RANGE; ;
vlm4053ca52005-02-18 16:34:21 +00003003 break;}
vlme1e6ed82005-03-24 14:26:38 +00003004case 213:
vlm2c8c44d2005-03-24 16:22:35 +00003005#line 1687 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003006{ yyval.a_ctype = ACT_EL_RLRANGE; ;
vlma6a12e32005-03-20 12:58:00 +00003007 break;}
vlme1e6ed82005-03-24 14:26:38 +00003008case 214:
vlm2c8c44d2005-03-24 16:22:35 +00003009#line 1688 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003010{ yyval.a_ctype = ACT_EL_LLRANGE; ;
3011 break;}
vlme1e6ed82005-03-24 14:26:38 +00003012case 215:
vlm2c8c44d2005-03-24 16:22:35 +00003013#line 1689 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003014{ yyval.a_ctype = ACT_EL_ULRANGE; ;
3015 break;}
vlme1e6ed82005-03-24 14:26:38 +00003016case 216:
vlm2c8c44d2005-03-24 16:22:35 +00003017#line 1693 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003018{
vlm39e5ed72004-09-05 10:40:41 +00003019 yyval.a_ctype = ACT_CT_SIZE;
vlm6a02a8a2004-09-08 00:28:11 +00003020 ;
3021 break;}
vlme1e6ed82005-03-24 14:26:38 +00003022case 217:
vlm2c8c44d2005-03-24 16:22:35 +00003023#line 1696 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003024{
vlm39e5ed72004-09-05 10:40:41 +00003025 yyval.a_ctype = ACT_CT_FROM;
vlm6a02a8a2004-09-08 00:28:11 +00003026 ;
3027 break;}
vlme1e6ed82005-03-24 14:26:38 +00003028case 218:
vlm2c8c44d2005-03-24 16:22:35 +00003029#line 1702 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00003030{
3031 yyval.a_value = asn1p_value_fromint(0);
3032 checkmem(yyval.a_value);
3033 yyval.a_value->type = ATV_FALSE;
3034 ;
3035 break;}
vlme1e6ed82005-03-24 14:26:38 +00003036case 219:
vlm2c8c44d2005-03-24 16:22:35 +00003037#line 1707 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00003038{
3039 yyval.a_value = asn1p_value_fromint(1);
3040 checkmem(yyval.a_value);
3041 yyval.a_value->type = ATV_TRUE;
3042 ;
3043 break;}
vlme1e6ed82005-03-24 14:26:38 +00003044case 220:
vlm2c8c44d2005-03-24 16:22:35 +00003045#line 1712 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003046{
vlmfa67ddc2004-06-03 03:38:44 +00003047 yyval.a_value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00003048 ;
3049 break;}
vlme1e6ed82005-03-24 14:26:38 +00003050case 221:
vlm2c8c44d2005-03-24 16:22:35 +00003051#line 1715 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00003052{
vlme1e6ed82005-03-24 14:26:38 +00003053 yyval.a_value = yyvsp[0].a_value;
vlm4053ca52005-02-18 16:34:21 +00003054 ;
3055 break;}
vlme1e6ed82005-03-24 14:26:38 +00003056case 222:
vlm2c8c44d2005-03-24 16:22:35 +00003057#line 1718 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003058{
vlmfa67ddc2004-06-03 03:38:44 +00003059 asn1p_ref_t *ref;
3060 int ret;
3061 ref = asn1p_ref_new(yylineno);
3062 checkmem(ref);
3063 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
3064 checkmem(ret == 0);
3065 yyval.a_value = asn1p_value_fromref(ref, 0);
3066 checkmem(yyval.a_value);
3067 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003068 ;
3069 break;}
vlme1e6ed82005-03-24 14:26:38 +00003070case 223:
vlm2c8c44d2005-03-24 16:22:35 +00003071#line 1732 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003072{
vlm4053ca52005-02-18 16:34:21 +00003073 asn1p_ref_t *ref;
3074 int ret;
3075 ref = asn1p_ref_new(yylineno);
3076 checkmem(ref);
3077 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_UNKNOWN);
3078 checkmem(ret == 0);
3079 yyval.a_value = asn1p_value_fromref(ref, 0);
vlmfa67ddc2004-06-03 03:38:44 +00003080 checkmem(yyval.a_value);
vlm4053ca52005-02-18 16:34:21 +00003081 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003082 ;
3083 break;}
vlme1e6ed82005-03-24 14:26:38 +00003084case 224:
vlm2c8c44d2005-03-24 16:22:35 +00003085#line 1746 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003086{
vlmfa67ddc2004-06-03 03:38:44 +00003087 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003088 ;
3089 break;}
vlme1e6ed82005-03-24 14:26:38 +00003090case 225:
vlm2c8c44d2005-03-24 16:22:35 +00003091#line 1752 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003092{
vlmfa67ddc2004-06-03 03:38:44 +00003093 yyval.a_constr = yyvsp[0].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00003094 ;
3095 break;}
vlme1e6ed82005-03-24 14:26:38 +00003096case 226:
vlm2c8c44d2005-03-24 16:22:35 +00003097#line 1755 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003098{
vlmfa67ddc2004-06-03 03:38:44 +00003099 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00003100 ;
3101 break;}
vlme1e6ed82005-03-24 14:26:38 +00003102case 227:
vlm2c8c44d2005-03-24 16:22:35 +00003103#line 1761 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003104{
vlmfa67ddc2004-06-03 03:38:44 +00003105 yyval.a_constr = asn1p_constraint_new(yylineno);
3106 checkmem(yyval.a_constr);
3107 yyval.a_constr->type = ACT_EL_EXT;
vlm6a02a8a2004-09-08 00:28:11 +00003108 ;
3109 break;}
vlme1e6ed82005-03-24 14:26:38 +00003110case 228:
vlm2c8c44d2005-03-24 16:22:35 +00003111#line 1766 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003112{
vlmfa67ddc2004-06-03 03:38:44 +00003113 yyval.a_constr = asn1p_constraint_new(yylineno);
3114 checkmem(yyval.a_constr);
3115 yyval.a_constr->type = ACT_EL_VALUE;
3116 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[-2].tv_str, strlen(yyvsp[-2].tv_str), 0);
3117 yyval.a_constr->presence = yyvsp[0].a_pres;
vlm6a02a8a2004-09-08 00:28:11 +00003118 ;
3119 break;}
vlme1e6ed82005-03-24 14:26:38 +00003120case 229:
vlm2c8c44d2005-03-24 16:22:35 +00003121#line 1779 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003122{ yyval.a_pres = ACPRES_DEFAULT; ;
3123 break;}
vlme1e6ed82005-03-24 14:26:38 +00003124case 230:
vlm2c8c44d2005-03-24 16:22:35 +00003125#line 1780 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003126{ yyval.a_pres = yyvsp[0].a_pres; ;
3127 break;}
vlme1e6ed82005-03-24 14:26:38 +00003128case 231:
vlm2c8c44d2005-03-24 16:22:35 +00003129#line 1784 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003130{
vlmfa67ddc2004-06-03 03:38:44 +00003131 yyval.a_pres = ACPRES_PRESENT;
vlm6a02a8a2004-09-08 00:28:11 +00003132 ;
3133 break;}
vlme1e6ed82005-03-24 14:26:38 +00003134case 232:
vlm2c8c44d2005-03-24 16:22:35 +00003135#line 1787 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003136{
vlmfa67ddc2004-06-03 03:38:44 +00003137 yyval.a_pres = ACPRES_ABSENT;
vlm6a02a8a2004-09-08 00:28:11 +00003138 ;
3139 break;}
vlme1e6ed82005-03-24 14:26:38 +00003140case 233:
vlm2c8c44d2005-03-24 16:22:35 +00003141#line 1790 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003142{
vlmfa67ddc2004-06-03 03:38:44 +00003143 yyval.a_pres = ACPRES_OPTIONAL;
vlm6a02a8a2004-09-08 00:28:11 +00003144 ;
3145 break;}
vlme1e6ed82005-03-24 14:26:38 +00003146case 234:
vlm2c8c44d2005-03-24 16:22:35 +00003147#line 1796 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003148{
3149 yyval.a_constr = yyvsp[0].a_constr;
3150 ;
3151 break;}
vlme1e6ed82005-03-24 14:26:38 +00003152case 235:
vlm2c8c44d2005-03-24 16:22:35 +00003153#line 1799 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003154{
3155 yyval.a_constr = yyvsp[0].a_constr;
3156 ;
3157 break;}
vlme1e6ed82005-03-24 14:26:38 +00003158case 236:
vlm2c8c44d2005-03-24 16:22:35 +00003159#line 1808 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003160{
vlmfa67ddc2004-06-03 03:38:44 +00003161 asn1p_ref_t *ref = asn1p_ref_new(yylineno);
3162 asn1p_constraint_t *ct;
3163 int ret;
3164 ret = asn1p_ref_add_component(ref, yyvsp[-1].tv_str, 0);
3165 checkmem(ret == 0);
3166 ct = asn1p_constraint_new(yylineno);
3167 checkmem(yyval.a_constr);
3168 ct->type = ACT_EL_VALUE;
3169 ct->value = asn1p_value_fromref(ref, 0);
3170 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003171 ;
3172 break;}
vlme1e6ed82005-03-24 14:26:38 +00003173case 237:
vlm2c8c44d2005-03-24 16:22:35 +00003174#line 1823 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003175{
vlmfa67ddc2004-06-03 03:38:44 +00003176 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00003177 ;
3178 break;}
vlme1e6ed82005-03-24 14:26:38 +00003179case 238:
vlm2c8c44d2005-03-24 16:22:35 +00003180#line 1829 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003181{
vlmfa67ddc2004-06-03 03:38:44 +00003182 yyval.a_constr = asn1p_constraint_new(yylineno);
3183 checkmem(yyval.a_constr);
3184 yyval.a_constr->type = ACT_EL_VALUE;
3185 yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003186 ;
3187 break;}
vlme1e6ed82005-03-24 14:26:38 +00003188case 239:
vlm2c8c44d2005-03-24 16:22:35 +00003189#line 1835 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003190{
vlmfa67ddc2004-06-03 03:38:44 +00003191 asn1p_constraint_t *ct;
3192 ct = asn1p_constraint_new(yylineno);
3193 checkmem(ct);
3194 ct->type = ACT_EL_VALUE;
3195 ct->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
3196 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm6a02a8a2004-09-08 00:28:11 +00003197 ;
3198 break;}
vlme1e6ed82005-03-24 14:26:38 +00003199case 240:
vlm2c8c44d2005-03-24 16:22:35 +00003200#line 1849 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003201{
vlmfa67ddc2004-06-03 03:38:44 +00003202 char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
3203 int ret;
3204 *p = '@';
3205 strcpy(p + 1, yyvsp[0].tv_str);
3206 yyval.a_ref = asn1p_ref_new(yylineno);
3207 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
3208 checkmem(ret == 0);
3209 free(p);
3210 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003211 ;
3212 break;}
vlme1e6ed82005-03-24 14:26:38 +00003213case 241:
vlm2c8c44d2005-03-24 16:22:35 +00003214#line 1860 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003215{
vlmfa67ddc2004-06-03 03:38:44 +00003216 char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
3217 int ret;
3218 p[0] = '@';
3219 p[1] = '.';
3220 strcpy(p + 2, yyvsp[0].tv_str);
3221 yyval.a_ref = asn1p_ref_new(yylineno);
3222 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
3223 checkmem(ret == 0);
3224 free(p);
3225 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003226 ;
3227 break;}
vlme1e6ed82005-03-24 14:26:38 +00003228case 242:
vlm2c8c44d2005-03-24 16:22:35 +00003229#line 1876 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003230{
vlmfa67ddc2004-06-03 03:38:44 +00003231 yyval.tv_str = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00003232 ;
3233 break;}
vlme1e6ed82005-03-24 14:26:38 +00003234case 243:
vlm2c8c44d2005-03-24 16:22:35 +00003235#line 1879 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003236{
vlmfa67ddc2004-06-03 03:38:44 +00003237 int l1 = strlen(yyvsp[-2].tv_str);
3238 int l3 = strlen(yyvsp[0].tv_str);
3239 yyval.tv_str = malloc(l1 + 1 + l3 + 1);
3240 memcpy(yyval.tv_str, yyvsp[-2].tv_str, l1);
3241 yyval.tv_str[l1] = '.';
3242 memcpy(yyval.tv_str + l1 + 1, yyvsp[0].tv_str, l3);
3243 yyval.tv_str[l1 + 1 + l3] = '\0';
vlm6a02a8a2004-09-08 00:28:11 +00003244 ;
3245 break;}
vlme1e6ed82005-03-24 14:26:38 +00003246case 244:
vlm2c8c44d2005-03-24 16:22:35 +00003247#line 1897 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003248{
vlmc94e28f2004-09-15 11:59:51 +00003249 yyval.a_marker.flags = EM_NOMARK;
3250 yyval.a_marker.default_value = 0;
vlm6a02a8a2004-09-08 00:28:11 +00003251 ;
3252 break;}
vlme1e6ed82005-03-24 14:26:38 +00003253case 245:
vlm2c8c44d2005-03-24 16:22:35 +00003254#line 1901 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00003255{ yyval.a_marker = yyvsp[0].a_marker; ;
vlma2374a02004-09-14 02:44:07 +00003256 break;}
vlme1e6ed82005-03-24 14:26:38 +00003257case 246:
vlm2c8c44d2005-03-24 16:22:35 +00003258#line 1905 "asn1p_y.y"
vlma2374a02004-09-14 02:44:07 +00003259{
vlmc94e28f2004-09-15 11:59:51 +00003260 yyval.a_marker.flags = EM_OPTIONAL;
3261 yyval.a_marker.default_value = 0;
vlma2374a02004-09-14 02:44:07 +00003262 ;
3263 break;}
vlme1e6ed82005-03-24 14:26:38 +00003264case 247:
vlm2c8c44d2005-03-24 16:22:35 +00003265#line 1909 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00003266{
3267 yyval.a_marker.flags = EM_DEFAULT;
3268 yyval.a_marker.default_value = yyvsp[0].a_value;
3269 ;
3270 break;}
vlme1e6ed82005-03-24 14:26:38 +00003271case 248:
vlm2c8c44d2005-03-24 16:22:35 +00003272#line 1932 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003273{
vlm39e5ed72004-09-05 10:40:41 +00003274 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003275 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00003276 ;
3277 break;}
vlme1e6ed82005-03-24 14:26:38 +00003278case 249:
vlm2c8c44d2005-03-24 16:22:35 +00003279#line 1936 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003280{
vlmfa67ddc2004-06-03 03:38:44 +00003281 yyval.a_expr = yyvsp[-1].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00003282 ;
3283 break;}
vlme1e6ed82005-03-24 14:26:38 +00003284case 250:
vlm2c8c44d2005-03-24 16:22:35 +00003285#line 1942 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003286{
vlm39e5ed72004-09-05 10:40:41 +00003287 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003288 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00003289 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
3290 ;
3291 break;}
vlme1e6ed82005-03-24 14:26:38 +00003292case 251:
vlm2c8c44d2005-03-24 16:22:35 +00003293#line 1947 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003294{
vlmfa67ddc2004-06-03 03:38:44 +00003295 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00003296 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
3297 ;
3298 break;}
vlme1e6ed82005-03-24 14:26:38 +00003299case 252:
vlm2c8c44d2005-03-24 16:22:35 +00003300#line 1954 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003301{
vlm39e5ed72004-09-05 10:40:41 +00003302 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003303 checkmem(yyval.a_expr);
3304 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3305 yyval.a_expr->meta_type = AMT_VALUE;
3306 yyval.a_expr->Identifier = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00003307 ;
3308 break;}
vlme1e6ed82005-03-24 14:26:38 +00003309case 253:
vlm2c8c44d2005-03-24 16:22:35 +00003310#line 1961 "asn1p_y.y"
vlma6a12e32005-03-20 12:58:00 +00003311{
3312 yyval.a_expr = asn1p_expr_new(yylineno);
3313 checkmem(yyval.a_expr);
3314 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3315 yyval.a_expr->meta_type = AMT_VALUE;
3316 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
3317 yyval.a_expr->value = yyvsp[-1].a_value;
3318 ;
3319 break;}
vlme1e6ed82005-03-24 14:26:38 +00003320case 254:
vlm2c8c44d2005-03-24 16:22:35 +00003321#line 1969 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003322{
vlm39e5ed72004-09-05 10:40:41 +00003323 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003324 checkmem(yyval.a_expr);
3325 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3326 yyval.a_expr->meta_type = AMT_VALUE;
vlm6611add2005-03-20 14:28:32 +00003327 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
3328 yyval.a_expr->value = yyvsp[-1].a_value;
3329 ;
3330 break;}
vlme1e6ed82005-03-24 14:26:38 +00003331case 255:
vlm2c8c44d2005-03-24 16:22:35 +00003332#line 1977 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003333{
3334 yyval.a_expr = asn1p_expr_new(yylineno);
3335 checkmem(yyval.a_expr);
3336 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3337 yyval.a_expr->meta_type = AMT_VALUE;
vlmfa67ddc2004-06-03 03:38:44 +00003338 yyval.a_expr->value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00003339 ;
3340 break;}
vlme1e6ed82005-03-24 14:26:38 +00003341case 256:
vlm2c8c44d2005-03-24 16:22:35 +00003342#line 1984 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003343{
vlm39e5ed72004-09-05 10:40:41 +00003344 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003345 checkmem(yyval.a_expr);
3346 yyval.a_expr->Identifier = strdup("...");
3347 checkmem(yyval.a_expr->Identifier);
3348 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
3349 yyval.a_expr->meta_type = AMT_VALUE;
vlm6a02a8a2004-09-08 00:28:11 +00003350 ;
3351 break;}
vlme1e6ed82005-03-24 14:26:38 +00003352case 257:
vlm2c8c44d2005-03-24 16:22:35 +00003353#line 1995 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003354{
3355 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3356 checkmem(yyval.a_value);
3357 ;
vlm4053ca52005-02-18 16:34:21 +00003358 break;}
vlme1e6ed82005-03-24 14:26:38 +00003359case 258:
vlm2c8c44d2005-03-24 16:22:35 +00003360#line 1999 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003361{
3362 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3363 checkmem(yyval.a_value);
3364 ;
vlma6a12e32005-03-20 12:58:00 +00003365 break;}
vlme1e6ed82005-03-24 14:26:38 +00003366case 259:
vlm2c8c44d2005-03-24 16:22:35 +00003367#line 2030 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003368{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
3369 break;}
vlme1e6ed82005-03-24 14:26:38 +00003370case 260:
vlm2c8c44d2005-03-24 16:22:35 +00003371#line 2031 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003372{ yyval.a_tag = yyvsp[0].a_tag; ;
3373 break;}
vlme1e6ed82005-03-24 14:26:38 +00003374case 261:
vlm2c8c44d2005-03-24 16:22:35 +00003375#line 2035 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003376{
vlm2728a8d2005-01-23 09:51:44 +00003377 yyval.a_tag = yyvsp[-1].a_tag;
3378 yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
vlm6a02a8a2004-09-08 00:28:11 +00003379 ;
3380 break;}
vlme1e6ed82005-03-24 14:26:38 +00003381case 262:
vlm2c8c44d2005-03-24 16:22:35 +00003382#line 2042 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003383{
vlm2728a8d2005-01-23 09:51:44 +00003384 yyval.a_tag = yyvsp[-2].a_tag;
3385 yyval.a_tag.tag_value = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00003386 ;
3387 break;}
vlme1e6ed82005-03-24 14:26:38 +00003388case 263:
vlm2c8c44d2005-03-24 16:22:35 +00003389#line 2048 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003390{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
vlm6a02a8a2004-09-08 00:28:11 +00003391 break;}
vlme1e6ed82005-03-24 14:26:38 +00003392case 264:
vlm2c8c44d2005-03-24 16:22:35 +00003393#line 2049 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003394{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
vlm151c0b22004-09-22 16:03:36 +00003395 break;}
vlme1e6ed82005-03-24 14:26:38 +00003396case 265:
vlm2c8c44d2005-03-24 16:22:35 +00003397#line 2050 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003398{ yyval.a_tag.tag_class = TC_APPLICATION; ;
vlm0aa86902004-10-12 23:26:53 +00003399 break;}
vlme1e6ed82005-03-24 14:26:38 +00003400case 266:
vlm2c8c44d2005-03-24 16:22:35 +00003401#line 2051 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003402{ yyval.a_tag.tag_class = TC_PRIVATE; ;
3403 break;}
vlme1e6ed82005-03-24 14:26:38 +00003404case 267:
vlm2c8c44d2005-03-24 16:22:35 +00003405#line 2055 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003406{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
3407 break;}
vlme1e6ed82005-03-24 14:26:38 +00003408case 268:
vlm2c8c44d2005-03-24 16:22:35 +00003409#line 2056 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003410{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
vlm0aa86902004-10-12 23:26:53 +00003411 break;}
vlme1e6ed82005-03-24 14:26:38 +00003412case 269:
vlm2c8c44d2005-03-24 16:22:35 +00003413#line 2057 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003414{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
vlm0aa86902004-10-12 23:26:53 +00003415 break;}
vlm6611add2005-03-20 14:28:32 +00003416case 270:
vlm2c8c44d2005-03-24 16:22:35 +00003417#line 2061 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003418{
vlme1e6ed82005-03-24 14:26:38 +00003419 checkmem(yyvsp[0].tv_str);
vlm6611add2005-03-20 14:28:32 +00003420 yyval.tv_str = yyvsp[0].tv_str;
3421 ;
3422 break;}
3423case 271:
vlm2c8c44d2005-03-24 16:22:35 +00003424#line 2065 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00003425{
3426 checkmem(yyvsp[0].tv_str);
3427 yyval.tv_str = yyvsp[0].tv_str;
3428 ;
3429 break;}
3430case 272:
vlm2c8c44d2005-03-24 16:22:35 +00003431#line 2073 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00003432{
3433 checkmem(yyvsp[0].tv_str);
3434 yyval.tv_str = yyvsp[0].tv_str;
3435 ;
3436 break;}
3437case 273:
vlm2c8c44d2005-03-24 16:22:35 +00003438#line 2080 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00003439{ yyval.tv_str = 0; ;
3440 break;}
3441case 274:
vlm2c8c44d2005-03-24 16:22:35 +00003442#line 2081 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00003443{
3444 yyval.tv_str = yyvsp[0].tv_str;
3445 ;
3446 break;}
3447case 275:
vlm2c8c44d2005-03-24 16:22:35 +00003448#line 2086 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003449{
vlm39e5ed72004-09-05 10:40:41 +00003450 checkmem(yyvsp[0].tv_str);
3451 yyval.tv_str = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00003452 ;
3453 break;}
vlm6a02a8a2004-09-08 00:28:11 +00003454}
3455 /* the action file gets copied in in place of this dollarsign */
3456#line 543 "/usr/share/bison.simple"
vlmfa67ddc2004-06-03 03:38:44 +00003457
3458 yyvsp -= yylen;
3459 yyssp -= yylen;
vlm6a02a8a2004-09-08 00:28:11 +00003460#ifdef YYLSP_NEEDED
3461 yylsp -= yylen;
3462#endif
vlmfa67ddc2004-06-03 03:38:44 +00003463
vlm6a02a8a2004-09-08 00:28:11 +00003464#if YYDEBUG != 0
vlmfa67ddc2004-06-03 03:38:44 +00003465 if (yydebug)
3466 {
vlm6a02a8a2004-09-08 00:28:11 +00003467 short *ssp1 = yyss - 1;
3468 fprintf (stderr, "state stack now");
3469 while (ssp1 != yyssp)
3470 fprintf (stderr, " %d", *++ssp1);
3471 fprintf (stderr, "\n");
vlmfa67ddc2004-06-03 03:38:44 +00003472 }
3473#endif
3474
3475 *++yyvsp = yyval;
3476
vlm6a02a8a2004-09-08 00:28:11 +00003477#ifdef YYLSP_NEEDED
3478 yylsp++;
3479 if (yylen == 0)
3480 {
3481 yylsp->first_line = yylloc.first_line;
3482 yylsp->first_column = yylloc.first_column;
3483 yylsp->last_line = (yylsp-1)->last_line;
3484 yylsp->last_column = (yylsp-1)->last_column;
3485 yylsp->text = 0;
3486 }
3487 else
3488 {
3489 yylsp->last_line = (yylsp+yylen-1)->last_line;
3490 yylsp->last_column = (yylsp+yylen-1)->last_column;
3491 }
3492#endif
vlmfa67ddc2004-06-03 03:38:44 +00003493
vlm6a02a8a2004-09-08 00:28:11 +00003494 /* Now "shift" the result of the reduction.
3495 Determine what state that goes to,
3496 based on the state we popped back to
3497 and the rule number reduced by. */
vlmfa67ddc2004-06-03 03:38:44 +00003498
3499 yyn = yyr1[yyn];
3500
vlm6a02a8a2004-09-08 00:28:11 +00003501 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
3502 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
vlmfa67ddc2004-06-03 03:38:44 +00003503 yystate = yytable[yystate];
3504 else
vlm6a02a8a2004-09-08 00:28:11 +00003505 yystate = yydefgoto[yyn - YYNTBASE];
vlmfa67ddc2004-06-03 03:38:44 +00003506
3507 goto yynewstate;
3508
vlm6a02a8a2004-09-08 00:28:11 +00003509yyerrlab: /* here on detecting error */
vlmfa67ddc2004-06-03 03:38:44 +00003510
vlm6a02a8a2004-09-08 00:28:11 +00003511 if (! yyerrstatus)
3512 /* If not already recovering from an error, report this error. */
vlmfa67ddc2004-06-03 03:38:44 +00003513 {
3514 ++yynerrs;
vlm6a02a8a2004-09-08 00:28:11 +00003515
3516#ifdef YYERROR_VERBOSE
vlmfa67ddc2004-06-03 03:38:44 +00003517 yyn = yypact[yystate];
3518
vlm6a02a8a2004-09-08 00:28:11 +00003519 if (yyn > YYFLAG && yyn < YYLAST)
vlmfa67ddc2004-06-03 03:38:44 +00003520 {
vlm6a02a8a2004-09-08 00:28:11 +00003521 int size = 0;
3522 char *msg;
3523 int x, count;
vlmfa67ddc2004-06-03 03:38:44 +00003524
vlm6a02a8a2004-09-08 00:28:11 +00003525 count = 0;
3526 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
3527 for (x = (yyn < 0 ? -yyn : 0);
3528 x < (ssize_t)(sizeof(yytname) / sizeof(char *)); x++)
3529 if (yycheck[x + yyn] == x)
3530 size += strlen(yytname[x]) + 15, count++;
3531 msg = (char *) malloc(size + 15);
3532 if (msg != 0)
vlmfa67ddc2004-06-03 03:38:44 +00003533 {
vlm6a02a8a2004-09-08 00:28:11 +00003534 strcpy(msg, "parse error");
vlmfa67ddc2004-06-03 03:38:44 +00003535
vlm6a02a8a2004-09-08 00:28:11 +00003536 if (count < 5)
vlmfa67ddc2004-06-03 03:38:44 +00003537 {
vlm6a02a8a2004-09-08 00:28:11 +00003538 count = 0;
3539 for (x = (yyn < 0 ? -yyn : 0);
3540 x < (ssize_t)(sizeof(yytname) / sizeof(char *)); x++)
3541 if (yycheck[x + yyn] == x)
vlmfa67ddc2004-06-03 03:38:44 +00003542 {
vlm6a02a8a2004-09-08 00:28:11 +00003543 strcat(msg, count == 0 ? ", expecting `" : " or `");
3544 strcat(msg, yytname[x]);
3545 strcat(msg, "'");
3546 count++;
vlmfa67ddc2004-06-03 03:38:44 +00003547 }
3548 }
vlm6a02a8a2004-09-08 00:28:11 +00003549 yyerror(msg);
3550 free(msg);
vlmfa67ddc2004-06-03 03:38:44 +00003551 }
3552 else
vlm6a02a8a2004-09-08 00:28:11 +00003553 yyerror ("parse error; also virtual memory exceeded");
vlmfa67ddc2004-06-03 03:38:44 +00003554 }
3555 else
3556#endif /* YYERROR_VERBOSE */
vlm6a02a8a2004-09-08 00:28:11 +00003557 yyerror("parse error");
vlmfa67ddc2004-06-03 03:38:44 +00003558 }
vlm6a02a8a2004-09-08 00:28:11 +00003559
vlmfa67ddc2004-06-03 03:38:44 +00003560 goto yyerrlab1;
vlm6a02a8a2004-09-08 00:28:11 +00003561yyerrlab1: /* here on error raised explicitly by an action */
vlmfa67ddc2004-06-03 03:38:44 +00003562
3563 if (yyerrstatus == 3)
3564 {
vlm6a02a8a2004-09-08 00:28:11 +00003565 /* if just tried and failed to reuse lookahead token after an error, discard it. */
vlmfa67ddc2004-06-03 03:38:44 +00003566
vlm6a02a8a2004-09-08 00:28:11 +00003567 /* return failure if at end of input */
vlmfa67ddc2004-06-03 03:38:44 +00003568 if (yychar == YYEOF)
vlm6a02a8a2004-09-08 00:28:11 +00003569 YYABORT;
vlmfa67ddc2004-06-03 03:38:44 +00003570
vlm6a02a8a2004-09-08 00:28:11 +00003571#if YYDEBUG != 0
3572 if (yydebug)
3573 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
3574#endif
3575
vlmfa67ddc2004-06-03 03:38:44 +00003576 yychar = YYEMPTY;
3577 }
3578
vlm6a02a8a2004-09-08 00:28:11 +00003579 /* Else will try to reuse lookahead token
3580 after shifting the error token. */
vlmfa67ddc2004-06-03 03:38:44 +00003581
vlm6a02a8a2004-09-08 00:28:11 +00003582 yyerrstatus = 3; /* Each real token shifted decrements this */
vlmfa67ddc2004-06-03 03:38:44 +00003583
vlm6a02a8a2004-09-08 00:28:11 +00003584 goto yyerrhandle;
vlm80103492004-09-07 10:39:09 +00003585
vlm6a02a8a2004-09-08 00:28:11 +00003586yyerrdefault: /* current state does not do anything special for the error token. */
vlm80103492004-09-07 10:39:09 +00003587
vlm6a02a8a2004-09-08 00:28:11 +00003588#if 0
3589 /* This is wrong; only states that explicitly want error tokens
3590 should shift them. */
3591 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
3592 if (yyn) goto yydefault;
vlm39e5ed72004-09-05 10:40:41 +00003593#endif
vlm6a02a8a2004-09-08 00:28:11 +00003594
3595yyerrpop: /* pop the current state because it cannot handle the error token */
3596
3597 if (yyssp == yyss) YYABORT;
3598 yyvsp--;
3599 yystate = *--yyssp;
3600#ifdef YYLSP_NEEDED
3601 yylsp--;
3602#endif
3603
3604#if YYDEBUG != 0
3605 if (yydebug)
3606 {
3607 short *ssp1 = yyss - 1;
3608 fprintf (stderr, "Error: state stack now");
3609 while (ssp1 != yyssp)
3610 fprintf (stderr, " %d", *++ssp1);
3611 fprintf (stderr, "\n");
vlm39e5ed72004-09-05 10:40:41 +00003612 }
vlm6a02a8a2004-09-08 00:28:11 +00003613#endif
3614
3615yyerrhandle:
3616
3617 yyn = yypact[yystate];
3618 if (yyn == YYFLAG)
3619 goto yyerrdefault;
3620
3621 yyn += YYTERROR;
3622 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
3623 goto yyerrdefault;
3624
3625 yyn = yytable[yyn];
3626 if (yyn < 0)
3627 {
3628 if (yyn == YYFLAG)
3629 goto yyerrpop;
3630 yyn = -yyn;
3631 goto yyreduce;
3632 }
3633 else if (yyn == 0)
3634 goto yyerrpop;
vlmfa67ddc2004-06-03 03:38:44 +00003635
3636 if (yyn == YYFINAL)
3637 YYACCEPT;
3638
vlm6a02a8a2004-09-08 00:28:11 +00003639#if YYDEBUG != 0
3640 if (yydebug)
3641 fprintf(stderr, "Shifting error token, ");
3642#endif
vlmfa67ddc2004-06-03 03:38:44 +00003643
3644 *++yyvsp = yylval;
vlm6a02a8a2004-09-08 00:28:11 +00003645#ifdef YYLSP_NEEDED
3646 *++yylsp = yylloc;
3647#endif
vlmfa67ddc2004-06-03 03:38:44 +00003648
3649 yystate = yyn;
3650 goto yynewstate;
3651
vlm6a02a8a2004-09-08 00:28:11 +00003652 yyacceptlab:
3653 /* YYACCEPT comes here. */
3654 if (yyfree_stacks)
3655 {
3656 free (yyss);
3657 free (yyvs);
3658#ifdef YYLSP_NEEDED
3659 free (yyls);
vlm044f7442004-09-04 04:49:21 +00003660#endif
vlm6a02a8a2004-09-08 00:28:11 +00003661 }
3662 return 0;
vlm80103492004-09-07 10:39:09 +00003663
vlm6a02a8a2004-09-08 00:28:11 +00003664 yyabortlab:
3665 /* YYABORT comes here. */
3666 if (yyfree_stacks)
3667 {
3668 free (yyss);
3669 free (yyvs);
3670#ifdef YYLSP_NEEDED
3671 free (yyls);
vlm80103492004-09-07 10:39:09 +00003672#endif
vlm6a02a8a2004-09-08 00:28:11 +00003673 }
3674 return 1;
vlmfa67ddc2004-06-03 03:38:44 +00003675}
vlm2c8c44d2005-03-24 16:22:35 +00003676#line 2092 "asn1p_y.y"
vlmfa67ddc2004-06-03 03:38:44 +00003677
3678
3679
3680/*
3681 * Convert Xstring ('0101'B or '5'H) to the binary vector.
3682 */
3683static asn1p_value_t *
3684_convert_bitstring2binary(char *str, int base) {
3685 asn1p_value_t *val;
3686 int slen;
3687 int memlen;
3688 int baselen;
3689 int bits;
3690 uint8_t *binary_vector;
3691 uint8_t *bv_ptr;
3692 uint8_t cur_val;
3693
3694 assert(str);
3695 assert(str[0] == '\'');
3696
3697 switch(base) {
3698 case 'B':
3699 baselen = 1;
3700 break;
3701 case 'H':
3702 baselen = 4;
3703 break;
3704 default:
3705 assert(base == 'B' || base == 'H');
3706 errno = EINVAL;
3707 return NULL;
3708 }
3709
3710 slen = strlen(str);
3711 assert(str[slen - 1] == base);
3712 assert(str[slen - 2] == '\'');
3713
3714 memlen = slen / (8 / baselen); /* Conservative estimate */
3715
3716 bv_ptr = binary_vector = malloc(memlen + 1);
3717 if(bv_ptr == NULL)
3718 /* ENOMEM */
3719 return NULL;
3720
3721 cur_val = 0;
3722 bits = 0;
3723 while(*(++str) != '\'') {
3724 switch(baselen) {
3725 case 1:
3726 switch(*str) {
3727 case '1':
3728 cur_val |= 1 << (7 - (bits % 8));
3729 case '0':
3730 break;
3731 default:
3732 assert(!"_y UNREACH1");
3733 case ' ': case '\r': case '\n':
3734 continue;
3735 }
3736 break;
3737 case 4:
3738 switch(*str) {
3739 case '0': case '1': case '2': case '3': case '4':
3740 case '5': case '6': case '7': case '8': case '9':
3741 cur_val |= (*str - '0') << (4 - (bits % 8));
3742 break;
3743 case 'A': case 'B': case 'C':
3744 case 'D': case 'E': case 'F':
3745 cur_val |= ((*str - 'A') + 10)
3746 << (4 - (bits % 8));
3747 break;
3748 default:
3749 assert(!"_y UNREACH2");
3750 case ' ': case '\r': case '\n':
3751 continue;
3752 }
3753 break;
3754 }
3755
3756 bits += baselen;
3757 if((bits % 8) == 0) {
3758 *bv_ptr++ = cur_val;
3759 cur_val = 0;
3760 }
3761 }
3762
3763 *bv_ptr = cur_val;
3764 assert((bv_ptr - binary_vector) <= memlen);
3765
3766 val = asn1p_value_frombits(binary_vector, bits, 0);
3767 if(val == NULL) {
3768 free(binary_vector);
3769 }
3770
3771 return val;
3772}
3773
3774extern char *asn1p_text;
3775
3776int
3777yyerror(const char *msg) {
3778 fprintf(stderr,
3779 "ASN.1 grammar parse error "
3780 "near line %d (token \"%s\"): %s\n",
vlm39e5ed72004-09-05 10:40:41 +00003781 yylineno, asn1p_text, msg);
vlmfa67ddc2004-06-03 03:38:44 +00003782 return -1;
3783}
3784
3785