blob: bc495515fd3fdb8730d328a2b59f0e81232f707d [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
vlm7388db02005-03-31 21:48:13 +0000209#define YYFINAL 425
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
vlm7388db02005-03-31 21:48:13 +0000213#define YYTRANSLATE(x) ((unsigned)(x) <= 356 ? yytranslate[x] : 220)
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,
vlm7388db02005-03-31 21:48:13 +0000261 138, 142, 144, 145, 152, 154, 156, 161, 165, 169,
262 176, 178, 182, 184, 188, 192, 196, 198, 202, 204,
263 206, 207, 209, 211, 215, 219, 223, 225, 227, 231,
264 234, 236, 242, 243, 245, 247, 251, 254, 259, 264,
265 265, 267, 268, 275, 277, 280, 282, 284, 286, 290,
266 294, 298, 300, 305, 310, 315, 322, 329, 331, 336,
267 341, 343, 347, 349, 353, 357, 361, 363, 367, 369,
268 373, 375, 377, 379, 381, 386, 390, 391, 395, 397,
269 399, 401, 403, 405, 407, 409, 411, 413, 417, 419,
270 421, 423, 425, 428, 430, 432, 434, 436, 439, 442,
271 444, 446, 449, 452, 454, 456, 458, 460, 462, 465,
272 467, 470, 472, 474, 476, 478, 480, 482, 484, 486,
273 488, 490, 492, 494, 496, 498, 500, 502, 504, 506,
274 508, 509, 511, 513, 518, 522, 527, 529, 533, 539,
275 541, 545, 549, 553, 557, 562, 566, 568, 570, 574,
276 578, 582, 586, 588, 590, 591, 597, 599, 602, 605,
277 609, 611, 613, 615, 617, 619, 621, 623, 625, 629,
278 635, 637, 641, 643, 647, 648, 650, 652, 654, 656,
279 658, 660, 664, 669, 671, 675, 678, 682, 684, 688,
280 689, 691, 693, 696, 699, 703, 705, 709, 711, 716,
281 721, 723, 725, 727, 729, 730, 732, 735, 740, 741,
282 743, 745, 747, 748, 750, 752, 754, 756, 758, 759,
283 761
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,
vlm7388db02005-03-31 21:48:13 +0000287 0, 120, 0, 119, 120, 0, 216, 121, 36, 125,
vlm2c8c44d2005-03-24 16:22:35 +0000288 3, 23, 128, 41, 0, 0, 122, 0, 105, 123,
289 106, 0, 105, 106, 0, 124, 0, 123, 124, 0,
vlm7388db02005-03-31 21:48:13 +0000290 219, 0, 219, 107, 9, 108, 0, 9, 0, 0,
vlm2c8c44d2005-03-24 16:22:35 +0000291 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,
vlm7388db02005-03-31 21:48:13 +0000294 132, 0, 137, 0, 143, 0, 170, 0, 140, 0,
295 0, 40, 14, 131, 0, 179, 0, 56, 133, 109,
vlm2c8c44d2005-03-24 16:22:35 +0000296 0, 56, 48, 0, 134, 0, 133, 134, 0, 135,
vlm7388db02005-03-31 21:48:13 +0000297 48, 216, 121, 0, 136, 0, 135, 110, 136, 0,
298 216, 0, 216, 105, 106, 0, 219, 0, 44, 138,
vlm2c8c44d2005-03-24 16:22:35 +0000299 109, 0, 44, 19, 109, 0, 44, 109, 0, 139,
vlm7388db02005-03-31 21:48:13 +0000300 0, 138, 110, 139, 0, 216, 0, 216, 105, 106,
301 0, 219, 0, 0, 216, 142, 3, 105, 141, 175,
302 0, 165, 0, 176, 0, 216, 3, 211, 89, 0,
303 216, 3, 163, 0, 216, 3, 153, 0, 216, 105,
304 144, 106, 3, 163, 0, 145, 0, 144, 110, 145,
305 0, 216, 0, 216, 111, 219, 0, 216, 111, 216,
306 0, 176, 111, 219, 0, 147, 0, 146, 110, 147,
307 0, 163, 0, 219, 0, 0, 149, 0, 150, 0,
308 149, 110, 150, 0, 219, 163, 205, 0, 32, 70,
309 163, 0, 162, 0, 152, 0, 151, 110, 152, 0,
310 219, 163, 0, 162, 0, 30, 105, 155, 106, 157,
311 0, 0, 90, 0, 156, 0, 155, 110, 156, 0,
312 168, 205, 0, 168, 163, 154, 205, 0, 168, 168,
313 154, 205, 0, 0, 158, 0, 0, 97, 84, 105,
314 159, 160, 106, 0, 161, 0, 160, 161, 0, 4,
315 0, 168, 0, 104, 0, 104, 112, 173, 0, 104,
316 112, 210, 0, 211, 164, 183, 0, 178, 0, 29,
317 105, 151, 106, 0, 80, 105, 148, 106, 0, 81,
318 105, 148, 106, 0, 80, 183, 70, 218, 211, 164,
319 0, 81, 183, 70, 218, 211, 164, 0, 20, 0,
320 20, 37, 27, 219, 0, 216, 105, 146, 106, 0,
321 165, 0, 58, 70, 165, 0, 13, 0, 13, 113,
322 216, 0, 217, 113, 216, 0, 13, 113, 219, 0,
323 217, 0, 217, 113, 166, 0, 167, 0, 166, 113,
324 167, 0, 169, 0, 169, 0, 15, 0, 16, 0,
325 219, 142, 3, 171, 0, 219, 111, 171, 0, 0,
326 105, 172, 175, 0, 65, 0, 47, 0, 88, 0,
327 5, 0, 7, 0, 174, 0, 210, 0, 173, 0,
328 219, 0, 216, 113, 219, 0, 6, 0, 10, 0,
329 11, 0, 4, 0, 175, 4, 0, 26, 0, 65,
330 0, 78, 0, 177, 0, 69, 83, 0, 67, 53,
331 0, 79, 0, 46, 0, 38, 73, 0, 28, 83,
332 0, 93, 0, 49, 0, 179, 0, 60, 0, 42,
333 0, 24, 83, 0, 176, 0, 177, 207, 0, 25,
334 0, 50, 0, 51, 0, 52, 0, 61, 0, 66,
335 0, 76, 0, 85, 0, 87, 0, 92, 0, 94,
336 0, 95, 0, 96, 0, 68, 0, 101, 0, 102,
337 0, 99, 0, 100, 0, 98, 0, 0, 184, 0,
338 185, 0, 82, 107, 186, 108, 0, 107, 186, 108,
339 0, 185, 107, 186, 108, 0, 187, 0, 187, 110,
340 104, 0, 187, 110, 104, 110, 187, 0, 188, 0,
341 19, 98, 188, 0, 187, 180, 188, 0, 187, 181,
342 188, 0, 188, 182, 188, 0, 191, 107, 186, 108,
343 0, 107, 186, 108, 0, 192, 0, 193, 0, 192,
344 190, 192, 0, 63, 190, 192, 0, 192, 190, 62,
345 0, 63, 190, 62, 0, 199, 0, 194, 0, 0,
346 33, 27, 105, 189, 175, 0, 103, 0, 103, 114,
347 0, 114, 103, 0, 114, 103, 114, 0, 82, 0,
348 48, 0, 47, 0, 88, 0, 210, 0, 174, 0,
349 219, 0, 216, 0, 97, 31, 185, 0, 97, 32,
350 105, 195, 106, 0, 196, 0, 195, 110, 196, 0,
351 104, 0, 219, 183, 197, 0, 0, 198, 0, 75,
352 0, 17, 0, 71, 0, 200, 0, 201, 0, 105,
353 216, 106, 0, 200, 105, 202, 106, 0, 203, 0,
354 202, 110, 203, 0, 115, 204, 0, 115, 113, 204,
355 0, 219, 0, 204, 113, 219, 0, 0, 206, 0,
356 71, 0, 35, 171, 0, 105, 106, 0, 105, 208,
357 106, 0, 209, 0, 208, 110, 209, 0, 219, 0,
358 219, 107, 210, 108, 0, 219, 107, 173, 108, 0,
359 210, 0, 104, 0, 9, 0, 12, 0, 0, 212,
360 0, 213, 215, 0, 116, 214, 9, 117, 0, 0,
361 91, 0, 21, 0, 77, 0, 0, 54, 0, 43,
362 0, 13, 0, 14, 0, 14, 0, 0, 219, 0,
363 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,
vlm7388db02005-03-31 21:48:13 +0000370 302, 308, 314, 330, 355, 357, 360, 364, 369, 376,
371 384, 389, 393, 402, 404, 412, 416, 424, 428, 431,
372 434, 438, 458, 460, 468, 472, 504, 508, 517, 524,
373 537, 544, 546, 558, 571, 578, 583, 589, 595, 604,
374 610, 616, 623, 629, 637, 641, 644, 651, 657, 663,
375 670, 676, 685, 687, 696, 704, 718, 730, 736, 752,
376 761, 771, 781, 786, 793, 800, 810, 816, 822, 826,
377 849, 851, 853, 859, 865, 872, 879, 884, 890, 896,
378 902, 907, 917, 919, 922, 930, 936, 945, 951, 968,
379 970, 975, 979, 984, 989, 995, 999, 1010, 1019, 1028,
380 1039, 1061, 1065, 1071, 1077, 1083, 1093, 1103, 1109, 1123,
381 1147, 1154, 1168, 1177, 1187, 1197, 1207, 1215, 1236, 1245,
382 1254, 1255, 1257, 1264, 1276, 1286, 1294, 1294, 1299, 1304,
383 1309, 1314, 1318, 1322, 1325, 1328, 1333, 1345, 1362, 1367,
384 1372, 1405, 1415, 1429, 1431, 1432, 1433, 1434, 1435, 1436,
385 1437, 1438, 1439, 1440, 1441, 1442, 1448, 1450, 1451, 1454,
386 1461, 1473, 1475, 1479, 1483, 1484, 1485, 1486, 1487, 1491,
387 1492, 1493, 1494, 1498, 1499, 1506, 1506, 1507, 1507, 1508,
388 1510, 1512, 1517, 1521, 1530, 1534, 1539, 1543, 1549, 1559,
389 1563, 1566, 1569, 1572, 1577, 1586, 1594, 1600, 1606, 1613,
390 1621, 1629, 1638, 1641, 1644, 1645, 1655, 1657, 1658, 1659,
391 1662, 1666, 1671, 1677, 1682, 1685, 1688, 1701, 1715, 1719,
392 1724, 1728, 1733, 1740, 1753, 1755, 1758, 1762, 1765, 1770,
393 1774, 1782, 1797, 1803, 1810, 1823, 1835, 1850, 1854, 1871,
394 1876, 1879, 1884, 1906, 1911, 1916, 1922, 1928, 1936, 1944,
395 1952, 1959, 1969, 1974, 2004, 2006, 2009, 2016, 2022, 2024,
396 2025, 2026, 2029, 2031, 2032, 2035, 2040, 2047, 2054, 2056,
397 2060
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",
vlm7388db02005-03-31 21:48:13 +0000430"ValueSetDefinition","@2","DefinedTypeRef","DataTypeReference","ParameterArgumentList",
431"ParameterArgumentName","ActualParameterList","ActualParameter","optComponentTypeLists",
432"ComponentTypeLists","ComponentType","AlternativeTypeLists","AlternativeType",
433"ClassDeclaration","optUnique","ClassFieldList","ClassField","optWithSyntax",
434"WithSyntax","@3","WithSyntaxFormat","WithSyntaxFormatToken","ExtensionAndException",
435"Type","TypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList",
vlm0aa86902004-10-12 23:26:53 +0000436"ComplexTypeReferenceElement","ClassFieldIdentifier","ClassFieldName","ValueDefinition",
vlm7388db02005-03-31 21:48:13 +0000437"Value","@4","DefinedValue","RestrictedCharacterStringValue","Opaque","BasicTypeId",
vlme1e6ed82005-03-24 14:26:38 +0000438"BasicTypeId_UniverationCompatible","BasicType","BasicString","Union","Intersection",
439"Except","optConstraints","Constraints","SetOfConstraints","ElementSetSpecs",
vlm7388db02005-03-31 21:48:13 +0000440"ElementSetSpec","ConstraintSubtypeElement","@5","ConstraintRangeSpec","ConstraintSpec",
vlm7bbdc9f2005-03-28 15:01:27 +0000441"SingleValue","ContainedSubtype","InnerTypeConstraint","WithComponentsList",
442"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
443"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
444"ComponentIdList","optMarker","Marker","UniverationDefinition","UniverationList",
445"UniverationElement","SignedNumber","optTag","Tag","TagTypeValue","TagClass",
446"TagPlicit","TypeRefName","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,
vlm7388db02005-03-31 21:48:13 +0000456 139, 139, 141, 140, 142, 142, 143, 143, 143, 143,
457 144, 144, 145, 145, 145, 145, 146, 146, 147, 147,
458 148, 148, 149, 149, 150, 150, 150, 151, 151, 152,
459 152, 153, 154, 154, 155, 155, 156, 156, 156, 157,
460 157, 159, 158, 160, 160, 161, 161, 162, 162, 162,
461 163, 164, 164, 164, 164, 164, 164, 164, 164, 164,
462 164, 164, 165, 165, 165, 165, 165, 165, 166, 166,
463 167, 168, 169, 169, 170, 171, 172, 171, 171, 171,
464 171, 171, 171, 171, 171, 171, 173, 173, 174, 174,
465 174, 175, 175, 176, 176, 176, 176, 176, 176, 176,
466 176, 176, 176, 176, 176, 176, 177, 177, 177, 178,
467 178, 179, 179, 179, 179, 179, 179, 179, 179, 179,
468 179, 179, 179, 179, 179, 180, 180, 181, 181, 182,
469 183, 183, 184, 184, 185, 185, 186, 186, 186, 187,
470 187, 187, 187, 187, 188, 188, 188, 188, 188, 188,
471 188, 188, 188, 188, 189, 188, 190, 190, 190, 190,
472 191, 191, 192, 192, 192, 192, 192, 193, 194, 194,
473 195, 195, 196, 196, 197, 197, 198, 198, 198, 199,
474 199, 200, 201, 202, 202, 203, 203, 204, 204, 205,
475 205, 206, 206, 207, 207, 208, 208, 209, 209, 209,
476 209, 209, 210, 210, 211, 211, 212, 213, 214, 214,
477 214, 214, 215, 215, 215, 216, 216, 217, 218, 218,
478 219
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,
vlm7388db02005-03-31 21:48:13 +0000487 3, 1, 0, 6, 1, 1, 4, 3, 3, 6,
488 1, 3, 1, 3, 3, 3, 1, 3, 1, 1,
489 0, 1, 1, 3, 3, 3, 1, 1, 3, 2,
490 1, 5, 0, 1, 1, 3, 2, 4, 4, 0,
491 1, 0, 6, 1, 2, 1, 1, 1, 3, 3,
492 3, 1, 4, 4, 4, 6, 6, 1, 4, 4,
493 1, 3, 1, 3, 3, 3, 1, 3, 1, 3,
494 1, 1, 1, 1, 4, 3, 0, 3, 1, 1,
495 1, 1, 1, 1, 1, 1, 1, 3, 1, 1,
496 1, 1, 2, 1, 1, 1, 1, 2, 2, 1,
497 1, 2, 2, 1, 1, 1, 1, 1, 2, 1,
498 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
vlm6a02a8a2004-09-08 00:28:11 +0000499 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
vlm7388db02005-03-31 21:48:13 +0000500 0, 1, 1, 4, 3, 4, 1, 3, 5, 1,
501 3, 3, 3, 3, 4, 3, 1, 1, 3, 3,
502 3, 3, 1, 1, 0, 5, 1, 2, 2, 3,
503 1, 1, 1, 1, 1, 1, 1, 1, 3, 5,
504 1, 3, 1, 3, 0, 1, 1, 1, 1, 1,
505 1, 3, 4, 1, 3, 2, 3, 1, 3, 0,
506 1, 1, 2, 2, 3, 1, 3, 1, 4, 4,
507 1, 1, 1, 1, 0, 1, 2, 4, 0, 1,
508 1, 1, 0, 1, 1, 1, 1, 1, 0, 1,
509 1
vlm6a02a8a2004-09-08 00:28:11 +0000510};
511
512static const short yydefact[] = { 0,
vlm7388db02005-03-31 21:48:13 +0000513 266, 267, 1, 2, 5, 3, 0, 0, 6, 271,
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,
vlm7388db02005-03-31 21:48:13 +0000516 18, 21, 19, 0, 17, 12, 23, 162, 0, 0,
517 163, 164, 165, 0, 166, 167, 175, 168, 169, 170,
518 171, 172, 173, 174, 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,
vlm7388db02005-03-31 21:48:13 +0000521 26, 255, 113, 268, 0, 144, 0, 0, 158, 151,
522 155, 157, 145, 0, 0, 146, 150, 154, 0, 0,
523 55, 56, 147, 156, 117, 0, 33, 46, 45, 0,
524 0, 35, 38, 0, 0, 0, 0, 259, 59, 58,
525 0, 256, 263, 0, 159, 153, 152, 149, 148, 0,
526 61, 0, 63, 0, 0, 0, 49, 51, 5, 41,
527 43, 0, 261, 262, 260, 0, 113, 268, 108, 0,
528 0, 181, 181, 57, 181, 111, 160, 147, 102, 0,
529 265, 264, 257, 114, 116, 0, 0, 0, 0, 53,
530 123, 124, 118, 119, 121, 115, 132, 139, 133, 253,
531 140, 141, 254, 130, 129, 131, 127, 125, 136, 134,
532 135, 0, 137, 39, 0, 85, 255, 122, 0, 0,
533 0, 0, 0, 71, 0, 0, 182, 183, 71, 0,
534 101, 0, 161, 255, 255, 62, 66, 65, 64, 0,
535 0, 0, 0, 0, 90, 0, 0, 242, 83, 83,
536 87, 241, 0, 258, 0, 98, 0, 78, 81, 255,
537 112, 0, 0, 0, 72, 73, 77, 255, 0, 0,
538 213, 212, 0, 211, 214, 0, 0, 0, 216, 0,
539 187, 190, 0, 197, 198, 204, 203, 230, 231, 215,
540 218, 217, 269, 0, 0, 269, 252, 244, 0, 246,
541 251, 248, 0, 67, 69, 70, 60, 142, 54, 120,
542 128, 138, 126, 0, 82, 91, 86, 243, 84, 240,
543 240, 109, 0, 103, 0, 80, 0, 255, 104, 0,
544 240, 0, 0, 207, 0, 0, 0, 0, 0, 0,
545 185, 178, 179, 176, 177, 0, 0, 0, 180, 0,
546 0, 0, 0, 255, 270, 0, 105, 255, 245, 0,
547 0, 110, 255, 143, 0, 88, 89, 99, 100, 137,
548 79, 184, 76, 74, 75, 191, 205, 208, 209, 202,
549 200, 219, 0, 232, 196, 188, 192, 193, 194, 0,
550 201, 199, 0, 0, 234, 0, 186, 0, 247, 0,
551 0, 68, 92, 0, 210, 223, 0, 221, 181, 0,
552 195, 0, 236, 238, 233, 0, 106, 107, 250, 249,
553 0, 206, 220, 0, 225, 189, 237, 0, 235, 96,
554 0, 94, 97, 222, 228, 229, 227, 224, 226, 239,
555 93, 95, 0, 0, 0
vlm6a02a8a2004-09-08 00:28:11 +0000556};
557
vlm7388db02005-03-31 21:48:13 +0000558static const short yydefgoto[] = { 423,
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,
vlm7388db02005-03-31 21:48:13 +0000561 70, 60, 220, 100, 61, 130, 131, 283, 284, 244,
562 245, 246, 237, 238, 119, 300, 195, 196, 295, 296,
563 401, 411, 412, 247, 285, 155, 156, 173, 174, 197,
564 198, 62, 188, 222, 189, 259, 289, 157, 103, 159,
565 104, 327, 328, 330, 206, 207, 208, 260, 261, 262,
566 384, 316, 263, 264, 265, 266, 387, 388, 418, 419,
567 267, 268, 269, 374, 375, 393, 231, 232, 213, 279,
568 280, 270, 233, 122, 123, 146, 163, 271, 105, 334,
569 272
vlm6a02a8a2004-09-08 00:28:11 +0000570};
571
vlm7388db02005-03-31 21:48:13 +0000572static const short yypact[] = { 228,
573-32768,-32768, 228,-32768, -83,-32768, 30, 43,-32768,-32768,
574-32768,-32768, 36,-32768, -14, 181,-32768,-32768, 132, 85,
575 68, 73, 109, 95, 193, 181,-32768, 93,-32768,-32768,
576-32768,-32768,-32768, 189,-32768,-32768, 429,-32768, 209, 21,
577-32768,-32768,-32768, 144,-32768,-32768,-32768,-32768,-32768,-32768,
578-32768,-32768,-32768,-32768, 184, 429,-32768,-32768,-32768,-32768,
579-32768,-32768,-32768, 354, 658,-32768, 118,-32768, 190,-32768,
580 134,-32768,-32768, 18,-32768, -27,-32768, 156,-32768,-32768,
581-32768, -12, 150,-32768, 182,-32768, 204, 195,-32768,-32768,
582-32768,-32768,-32768, 236, 212,-32768,-32768,-32768, 733, 299,
583-32768,-32768,-32768,-32768, 205, 316,-32768,-32768,-32768, 185,
584 216,-32768,-32768, 228, 185, 217, 219, 25,-32768,-32768,
585 506,-32768, 117, 185,-32768,-32768,-32768,-32768,-32768, -55,
586-32768, 210, 214, 223, 266, 63,-32768,-32768, -83,-32768,
587-32768, 268,-32768,-32768,-32768, 321, 34, 226, 295, 232,
588 269, -18, -17,-32768, -2,-32768,-32768, 233,-32768, 235,
589-32768,-32768,-32768,-32768,-32768, 338, 733, 334, 185,-32768,
590-32768,-32768, 234,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
vlme1e6ed82005-03-24 14:26:38 +0000591-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
vlm7388db02005-03-31 21:48:13 +0000592-32768, 237, 242,-32768, 81,-32768, 27,-32768, 231, 322,
593 11, 240, 247, 49, 238, 285,-32768, 251, 49, 289,
594-32768, 44,-32768, 7, 244,-32768,-32768,-32768,-32768, 358,
595 268, 358, 334, 63, 267, 268, 63,-32768, 273, 273,
596-32768,-32768, 583,-32768, 334, 253, 98,-32768,-32768, 244,
597-32768, 238, 302, 270, 263,-32768,-32768, 244, 276, 348,
598-32768,-32768, 64,-32768,-32768, 275, 228, 238,-32768, 279,
599 130, 283, 277, 64,-32768,-32768,-32768, 272,-32768,-32768,
600-32768,-32768, 334, 238, 284, 334,-32768,-32768, 100,-32768,
601-32768, 286, 105,-32768,-32768,-32768,-32768,-32768, 379,-32768,
602 379,-32768,-32768, 305,-32768,-32768,-32768,-32768,-32768, -10,
603 -10,-32768, 296,-32768, 11,-32768, 287, 244,-32768, 49,
604 -10, 264, 293, 280, 288, 174, 292, 297, 301, 300,
605-32768,-32768,-32768,-32768,-32768, 306, 264, 264,-32768, 264,
606 238, 282, 294, 244,-32768, 303,-32768, 244,-32768, 51,
607 296,-32768, 7,-32768, 307,-32768,-32768,-32768,-32768,-32768,
608-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 304,-32768,
609-32768, 251, 28,-32768,-32768, 314,-32768,-32768,-32768, 308,
610-32768,-32768, 6, 112,-32768, 583,-32768, 583,-32768, 309,
611 317,-32768,-32768, 358,-32768,-32768, 154,-32768, -2, 238,
612-32768, 334, 313,-32768,-32768, 294,-32768,-32768,-32768,-32768,
613 159, 379,-32768, 28, 24, 215, 313, 334,-32768,-32768,
614 12,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
615-32768,-32768, 413, 427,-32768
vlm6a02a8a2004-09-08 00:28:11 +0000616};
617
618static const short yypgoto[] = {-32768,
vlm7388db02005-03-31 21:48:13 +0000619-32768, 425, 290,-32768,-32768, 418,-32768,-32768, 408,-32768,
620-32768, 380,-32768,-32768,-32768, 361,-32768, 323,-32768,-32768,
621 330,-32768,-32768, 386,-32768,-32768, 278,-32768, 101, 243,
622-32768, 143,-32768, 151,-32768, 225,-32768, 239,-32768,-32768,
623-32768,-32768, 46, -184, -75, -284, -53,-32768, 241, -192,
624 -115,-32768, -89,-32768, -255, -58, -214, -41, -120,-32768,
625 45,-32768,-32768,-32768, -151,-32768, 141, -86, 70, -216,
626-32768, 197,-32768, -225,-32768,-32768,-32768, 59,-32768,-32768,
627-32768,-32768,-32768,-32768, 71, 72, -111,-32768,-32768,-32768,
628 126, -127, -79,-32768,-32768,-32768,-32768, 10,-32768, 192,
629 -7
vlm6a02a8a2004-09-08 00:28:11 +0000630};
631
632
vlm7388db02005-03-31 21:48:13 +0000633#define YYLAST 829
vlm6a02a8a2004-09-08 00:28:11 +0000634
635
636static const short yytable[] = { 15,
vlm7388db02005-03-31 21:48:13 +0000637 158, 210, 121, 211, 230, 15, 120, 291, 191, 5,
638 101, 101, 5, 10, 10, 410, 239, 117, 10, 175,
639 114, 7, 102, 102, 227, 10, 171, 172, 10, 65,
640 1, 2, 72, 1, 2, 10, 79, 10, 11, 67,
641 415, 171, 172, 10, 11, 143, 64, 348, 65, 71,
642 166, 10, 180, 78, 167, 183, 10, 132, 10, 180,
643 228, 227, 183, 203, 203, 64, 79, 177, 178, 179,
644 10, 180, 181, 182, 183, 1, 2, 190, 16, 203,
645 243, 63, 115, 78, 281, 380, 204, 209, 205, 205,
646 361, 397, 19, 398, 416, 356, 191, 228, 417, 191,
647 63, 144, 72, 118, 205, 175, 372, 79, 133, 184,
648 367, 368, 158, 369, 236, 145, 165, 421, 392, 71,
649 239, 229, 118, 139, 78, 132, 112, 185, 193, 68,
650 160, 386, -240, 164, 293, 12, -240, 298, -266, 287,
651 28, 17, 118, 29, 176, 192, 124, 277, 241, 278,
652 186, 10, 236, 30, 277, 307, 1, 2, 31, 161,
653 217, 219, 410, 32, 306, 190, 314, 187, 190, 402,
654 162, 320, 311, 171, 172, 349, 133, 315, 218, 178,
655 33, 10, 180, 181, 182, 183, 225, 336, 346, 347,
656 226, 73, 10, 240, 20, 34, 248, 1, 2, 355,
657 36, 248, 21, 304, 282, 339, 286, 305, 413, 340,
658 342, 37, 281, 381, 343, 292, 193, 395, 413, 193,
659 251, 396, 66, 22, 80, 23, 108, 302, 322, 323,
660 324, 325, 353, 192, 24, 360, 192, 405, 111, 326,
661 1, 2, 160, 178, 370, 10, 180, 181, 182, 183,
662 1, 2, 83, 84, 376, 158, 249, 158, 378, 403,
663 116, 255, 124, 404, 125, 335, 319, 127, 335, 178,
664 250, 10, 180, 181, 182, 183, 1, 2, 1, 2,
665 171, 172, 171, 172, 251, 252, 126, 178, 128, 10,
666 180, 181, 182, 183, 129, 350, 250, 240, 109, 110,
667 253, 134, 248, 10, 180, 317, 318, 183, 1, 2,
668 251, 252, 192, 322, 323, 324, 325, 135, 136, 254,
669 168, 138, 141, 142, 169, 255, 253, 170, 251, 199,
670 -267, 200, 282, 350, 256, 286, 201, 212, 202, 214,
671 215, 10, 257, 371, 258, 254, 221, 234, 235, 223,
672 192, 255, 224, 242, 273, 389, 82, 274, 276, 118,
673 256, 288, 299, 294, 303, 394, 83, 84, 257, 255,
674 258, 308, 310, 312, 313, 309, 333, 85, 38, 86,
675 329, 87, 344, 331, 394, 160, 321, 160, 345, 337,
676 359, 88, 341, 358, 352, 89, 389, 357, 205, 90,
677 420, 363, 91, 41, 42, 43, 364, 365, 373, 366,
678 377, 383, 424, 92, 45, 391, 399, 385, 93, 46,
679 94, 47, 95, 390, 400, 408, 425, 6, 194, 48,
680 18, 96, 97, 35, 113, 81, 10, 140, 49, 137,
681 50, 1, 2, 382, 216, 51, 98, 52, 53, 54,
682 106, 275, 354, 38, 301, 351, 422, 362, 99, 406,
683 332, 290, 414, 407, 297, 379, 409, 338, 39, 0,
684 0, 0, 40, 0, 0, 0, 0, 0, 41, 42,
685 43, 0, 0, 0, 44, 0, 0, 0, 0, 45,
686 0, 0, 0, 0, 46, 0, 47, 0, 0, 0,
687 0, 0, 0, 0, 48, 0, 0, 0, 0, 0,
688 0, 0, 0, 49, 0, 50, 0, 0, 147, 148,
689 51, 0, 52, 53, 54, 149, 0, 0, 0, 85,
690 38, 86, 0, 87, 150, 0, 0, 0, 0, 0,
vlm2c8c44d2005-03-24 16:22:35 +0000691 0, 0, 0, 88, 0, 0, 0, 89, 0, 0,
692 0, 90, 0, 0, 91, 41, 42, 43, 0, 0,
vlm7388db02005-03-31 21:48:13 +0000693 0, 0, 0, 151, 0, 92, 45, 0, 0, 0,
vlm2c8c44d2005-03-24 16:22:35 +0000694 93, 46, 94, 47, 95, 0, 0, 0, 0, 0,
vlm7388db02005-03-31 21:48:13 +0000695 0, 48, 0, 96, 97, 152, 153, 0, 0, 0,
696 49, 0, 50, 0, 154, 147, 148, 51, 98, 52,
697 53, 54, 149, 0, 0, 0, 85, 38, 86, 0,
698 87, 150, 0, 0, 0, 0, 0, 0, 0, 0,
699 88, 0, 0, 0, 89, 0, 0, 0, 90, 0,
700 0, 91, 41, 42, 43, 0, 0, 0, 0, 0,
701 151, 0, 92, 45, 0, 0, 0, 93, 46, 94,
702 47, 95, 0, 0, 0, 0, 0, 0, 48, 0,
703 96, 97, 152, 153, 0, 0, 0, 49, 0, 50,
704 83, 84, 0, 0, 51, 98, 52, 53, 54, 0,
705 0, 85, 38, 86, 0, 87, 0, 0, 0, 0,
706 0, 0, 0, 0, 0, 88, 0, 0, 0, 89,
707 0, 0, 0, 90, 0, 0, 91, 41, 42, 43,
708 0, 0, 0, 0, 0, 0, 0, 92, 45, 0,
709 0, 0, 93, 46, 94, 47, 95, 0, 0, 0,
710 0, 0, 0, 48, 0, 96, 97, 0, 0, 0,
711 0, 0, 49, 0, 50, 1, 2, 0, 0, 51,
712 98, 52, 53, 54, 0, 0, 85, 38, 86, 0,
713 87, 0, 0, 0, 0, 0, 0, 0, 0, 0,
714 88, 0, 0, 0, 89, 0, 0, 0, 90, 0,
715 0, 91, 41, 42, 43, 0, 0, 0, 0, 0,
716 0, 0, 92, 45, 0, 0, 0, 93, 46, 94,
717 47, 95, 0, 0, 0, 0, 0, 0, 48, 0,
718 96, 97, 0, 0, 0, 0, 0, 49, 0, 50,
719 0, 0, 0, 0, 51, 98, 52, 53, 54
vlm6a02a8a2004-09-08 00:28:11 +0000720};
721
722static const short yycheck[] = { 7,
vlm7388db02005-03-31 21:48:13 +0000723 121, 153, 82, 155, 197, 13, 82, 222, 136, 0,
724 64, 65, 3, 8, 8, 4, 201, 30, 8, 135,
725 48, 105, 64, 65, 35, 8, 15, 16, 8, 37,
726 13, 14, 40, 13, 14, 8, 44, 8, 9, 19,
727 17, 15, 16, 8, 9, 21, 37, 303, 56, 40,
728 106, 8, 9, 44, 110, 12, 8, 99, 8, 9,
729 71, 35, 12, 82, 82, 56, 74, 5, 6, 7,
730 8, 9, 10, 11, 12, 13, 14, 136, 36, 82,
731 32, 37, 110, 74, 212, 341, 105, 105, 107, 107,
732 316, 376, 107, 378, 71, 312, 224, 71, 75, 227,
733 56, 77, 110, 116, 107, 221, 332, 115, 99, 47,
734 327, 328, 233, 330, 104, 91, 124, 106, 113, 110,
735 305, 197, 116, 114, 115, 167, 109, 65, 136, 109,
736 121, 104, 106, 124, 224, 106, 110, 227, 105, 215,
737 9, 106, 116, 59, 135, 136, 113, 104, 202, 106,
738 88, 8, 104, 86, 104, 242, 13, 14, 86, 43,
739 168, 169, 4, 55, 240, 224, 103, 105, 227, 384,
740 54, 258, 248, 15, 16, 303, 167, 114, 169, 6,
741 86, 8, 9, 10, 11, 12, 106, 274, 300, 301,
742 110, 48, 8, 201, 14, 3, 204, 13, 14, 311,
743 108, 209, 22, 106, 212, 106, 214, 110, 401, 110,
744 106, 23, 340, 341, 110, 223, 224, 106, 411, 227,
745 47, 110, 14, 43, 41, 45, 109, 235, 99, 100,
746 101, 102, 308, 224, 54, 62, 227, 389, 105, 110,
747 13, 14, 233, 6, 331, 8, 9, 10, 11, 12,
748 13, 14, 13, 14, 334, 376, 19, 378, 338, 106,
749 105, 88, 113, 110, 83, 273, 257, 73, 276, 6,
750 33, 8, 9, 10, 11, 12, 13, 14, 13, 14,
751 15, 16, 15, 16, 47, 48, 83, 6, 53, 8,
752 9, 10, 11, 12, 83, 303, 33, 305, 109, 110,
753 63, 3, 310, 8, 9, 31, 32, 12, 13, 14,
754 47, 48, 303, 99, 100, 101, 102, 113, 3, 82,
755 111, 106, 106, 105, 111, 88, 63, 105, 47, 9,
756 105, 37, 340, 341, 97, 343, 105, 105, 70, 105,
757 3, 8, 105, 62, 107, 82, 113, 117, 27, 113,
758 341, 88, 111, 107, 70, 363, 3, 107, 70, 116,
759 97, 4, 90, 97, 112, 373, 13, 14, 105, 88,
760 107, 70, 110, 98, 27, 106, 105, 24, 25, 26,
761 98, 28, 4, 107, 392, 376, 108, 378, 84, 106,
762 103, 38, 107, 114, 108, 42, 404, 105, 107, 46,
763 408, 105, 49, 50, 51, 52, 106, 108, 115, 104,
764 108, 105, 0, 60, 61, 108, 108, 114, 65, 66,
765 67, 68, 69, 110, 108, 113, 0, 3, 139, 76,
766 13, 78, 79, 26, 74, 56, 8, 115, 85, 110,
767 87, 13, 14, 343, 167, 92, 93, 94, 95, 96,
768 65, 209, 310, 25, 230, 305, 411, 317, 105, 390,
769 264, 221, 404, 392, 226, 340, 396, 276, 40, -1,
770 -1, -1, 44, -1, -1, -1, -1, -1, 50, 51,
771 52, -1, -1, -1, 56, -1, -1, -1, -1, 61,
772 -1, -1, -1, -1, 66, -1, 68, -1, -1, -1,
773 -1, -1, -1, -1, 76, -1, -1, -1, -1, -1,
774 -1, -1, -1, 85, -1, 87, -1, -1, 13, 14,
775 92, -1, 94, 95, 96, 20, -1, -1, -1, 24,
776 25, 26, -1, 28, 29, -1, -1, -1, -1, -1,
vlm2c8c44d2005-03-24 16:22:35 +0000777 -1, -1, -1, 38, -1, -1, -1, 42, -1, -1,
778 -1, 46, -1, -1, 49, 50, 51, 52, -1, -1,
vlm7388db02005-03-31 21:48:13 +0000779 -1, -1, -1, 58, -1, 60, 61, -1, -1, -1,
vlm2c8c44d2005-03-24 16:22:35 +0000780 65, 66, 67, 68, 69, -1, -1, -1, -1, -1,
vlm7388db02005-03-31 21:48:13 +0000781 -1, 76, -1, 78, 79, 80, 81, -1, -1, -1,
782 85, -1, 87, -1, 89, 13, 14, 92, 93, 94,
783 95, 96, 20, -1, -1, -1, 24, 25, 26, -1,
784 28, 29, -1, -1, -1, -1, -1, -1, -1, -1,
785 38, -1, -1, -1, 42, -1, -1, -1, 46, -1,
786 -1, 49, 50, 51, 52, -1, -1, -1, -1, -1,
787 58, -1, 60, 61, -1, -1, -1, 65, 66, 67,
788 68, 69, -1, -1, -1, -1, -1, -1, 76, -1,
789 78, 79, 80, 81, -1, -1, -1, 85, -1, 87,
790 13, 14, -1, -1, 92, 93, 94, 95, 96, -1,
791 -1, 24, 25, 26, -1, 28, -1, -1, -1, -1,
792 -1, -1, -1, -1, -1, 38, -1, -1, -1, 42,
793 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
794 -1, -1, -1, -1, -1, -1, -1, 60, 61, -1,
795 -1, -1, 65, 66, 67, 68, 69, -1, -1, -1,
796 -1, -1, -1, 76, -1, 78, 79, -1, -1, -1,
797 -1, -1, 85, -1, 87, 13, 14, -1, -1, 92,
798 93, 94, 95, 96, -1, -1, 24, 25, 26, -1,
799 28, -1, -1, -1, -1, -1, -1, -1, -1, -1,
800 38, -1, -1, -1, 42, -1, -1, -1, 46, -1,
801 -1, 49, 50, 51, 52, -1, -1, -1, -1, -1,
802 -1, -1, 60, 61, -1, -1, -1, 65, 66, 67,
803 68, 69, -1, -1, -1, -1, -1, -1, 76, -1,
804 78, 79, -1, -1, -1, -1, -1, 85, -1, 87,
805 -1, -1, -1, -1, 92, 93, 94, 95, 96
vlm6a02a8a2004-09-08 00:28:11 +0000806};
807/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
808#line 3 "/usr/share/bison.simple"
809/* This file comes from bison-1.28. */
810
811/* Skeleton output parser for bison,
812 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
813
814 This program is free software; you can redistribute it and/or modify
815 it under the terms of the GNU General Public License as published by
816 the Free Software Foundation; either version 2, or (at your option)
817 any later version.
818
819 This program is distributed in the hope that it will be useful,
820 but WITHOUT ANY WARRANTY; without even the implied warranty of
821 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
822 GNU General Public License for more details.
823
824 You should have received a copy of the GNU General Public License
825 along with this program; if not, write to the Free Software
826 Foundation, Inc., 59 Temple Place - Suite 330,
827 Boston, MA 02111-1307, USA. */
828
829/* As a special exception, when this file is copied by Bison into a
830 Bison output file, you may use that output file without restriction.
831 This special exception was added by the Free Software Foundation
832 in version 1.24 of Bison. */
833
834/* This is the parser code that is written into each bison parser
835 when the %semantic_parser declaration is not specified in the grammar.
836 It was written by Richard Stallman by simplifying the hairy parser
837 used when %semantic_parser is specified. */
838
839#ifndef YYSTACK_USE_ALLOCA
840#ifdef alloca
841#define YYSTACK_USE_ALLOCA
842#else /* alloca not defined */
843#ifdef __GNUC__
844#define YYSTACK_USE_ALLOCA
845#define alloca __builtin_alloca
846#else /* not GNU C. */
847#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
848#define YYSTACK_USE_ALLOCA
849#include <alloca.h>
850#else /* not sparc */
851/* We think this test detects Watcom and Microsoft C. */
852/* This used to test MSDOS, but that is a bad idea
853 since that symbol is in the user namespace. */
854#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
855#if 0 /* No need for malloc.h, which pollutes the namespace;
856 instead, just don't use alloca. */
857#include <malloc.h>
858#endif
859#else /* not MSDOS, or __TURBOC__ */
860#if defined(_AIX)
861/* I don't know what this was needed for, but it pollutes the namespace.
862 So I turned it off. rms, 2 May 1997. */
863/* #include <malloc.h> */
864 #pragma alloca
865#define YYSTACK_USE_ALLOCA
866#else /* not MSDOS, or __TURBOC__, or _AIX */
867#if 0
868#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
869 and on HPUX 10. Eventually we can turn this on. */
870#define YYSTACK_USE_ALLOCA
871#define alloca __builtin_alloca
872#endif /* __hpux */
873#endif
874#endif /* not _AIX */
875#endif /* not MSDOS, or __TURBOC__ */
876#endif /* not sparc */
877#endif /* not GNU C */
878#endif /* alloca not defined */
879#endif /* YYSTACK_USE_ALLOCA not defined */
880
881#ifdef YYSTACK_USE_ALLOCA
882#define YYSTACK_ALLOC alloca
vlmfa67ddc2004-06-03 03:38:44 +0000883#else
vlm6a02a8a2004-09-08 00:28:11 +0000884#define YYSTACK_ALLOC malloc
vlmfa67ddc2004-06-03 03:38:44 +0000885#endif
886
vlm6a02a8a2004-09-08 00:28:11 +0000887/* Note: there must be only one dollar sign in this file.
888 It is replaced by the list of actions, each action
889 as one case of the switch. */
vlmfa67ddc2004-06-03 03:38:44 +0000890
891#define yyerrok (yyerrstatus = 0)
892#define yyclearin (yychar = YYEMPTY)
893#define YYEMPTY -2
894#define YYEOF 0
895#define YYACCEPT goto yyacceptlab
vlm6a02a8a2004-09-08 00:28:11 +0000896#define YYABORT goto yyabortlab
vlmfa67ddc2004-06-03 03:38:44 +0000897#define YYERROR goto yyerrlab1
vlm6a02a8a2004-09-08 00:28:11 +0000898/* Like YYERROR except do call yyerror.
899 This remains here temporarily to ease the
900 transition to the new meaning of YYERROR, for GCC.
vlmfa67ddc2004-06-03 03:38:44 +0000901 Once GCC version 2 has supplanted version 1, this can go. */
902#define YYFAIL goto yyerrlab
903#define YYRECOVERING() (!!yyerrstatus)
vlm6a02a8a2004-09-08 00:28:11 +0000904#define YYBACKUP(token, value) \
vlmfa67ddc2004-06-03 03:38:44 +0000905do \
906 if (yychar == YYEMPTY && yylen == 1) \
vlm6a02a8a2004-09-08 00:28:11 +0000907 { yychar = (token), yylval = (value); \
vlmfa67ddc2004-06-03 03:38:44 +0000908 yychar1 = YYTRANSLATE (yychar); \
909 YYPOPSTACK; \
910 goto yybackup; \
911 } \
912 else \
vlm6a02a8a2004-09-08 00:28:11 +0000913 { yyerror ("syntax error: cannot back up"); YYERROR; } \
vlmfa67ddc2004-06-03 03:38:44 +0000914while (0)
915
916#define YYTERROR 1
917#define YYERRCODE 256
918
vlm6a02a8a2004-09-08 00:28:11 +0000919#ifndef YYPURE
920#define YYLEX yylex()
vlmfa67ddc2004-06-03 03:38:44 +0000921#endif
922
vlm6a02a8a2004-09-08 00:28:11 +0000923#ifdef YYPURE
924#ifdef YYLSP_NEEDED
925#ifdef YYLEX_PARAM
926#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
927#else
928#define YYLEX yylex(&yylval, &yylloc)
929#endif
930#else /* not YYLSP_NEEDED */
931#ifdef YYLEX_PARAM
932#define YYLEX yylex(&yylval, YYLEX_PARAM)
933#else
934#define YYLEX yylex(&yylval)
935#endif
936#endif /* not YYLSP_NEEDED */
937#endif
vlmfa67ddc2004-06-03 03:38:44 +0000938
vlm6a02a8a2004-09-08 00:28:11 +0000939/* If nonreentrant, generate the variables here */
vlmfa67ddc2004-06-03 03:38:44 +0000940
vlm6a02a8a2004-09-08 00:28:11 +0000941#ifndef YYPURE
vlmfa67ddc2004-06-03 03:38:44 +0000942
vlm6a02a8a2004-09-08 00:28:11 +0000943int yychar; /* the lookahead symbol */
944YYSTYPE yylval; /* the semantic value of the */
945 /* lookahead symbol */
vlmfa67ddc2004-06-03 03:38:44 +0000946
vlm6a02a8a2004-09-08 00:28:11 +0000947#ifdef YYLSP_NEEDED
948YYLTYPE yylloc; /* location data for the lookahead */
949 /* symbol */
950#endif
vlmfa67ddc2004-06-03 03:38:44 +0000951
vlm6a02a8a2004-09-08 00:28:11 +0000952int yynerrs; /* number of parse errors so far */
953#endif /* not YYPURE */
954
955#if YYDEBUG != 0
956int yydebug; /* nonzero means print parse trace */
957/* Since this is uninitialized, it does not stop multiple parsers
958 from coexisting. */
959#endif
960
961/* YYINITDEPTH indicates the initial size of the parser's stacks */
962
vlmfa67ddc2004-06-03 03:38:44 +0000963#ifndef YYINITDEPTH
vlm6a02a8a2004-09-08 00:28:11 +0000964#define YYINITDEPTH 200
vlmfa67ddc2004-06-03 03:38:44 +0000965#endif
966
vlm6a02a8a2004-09-08 00:28:11 +0000967/* YYMAXDEPTH is the maximum size the stacks can grow to
968 (effective only if the built-in stack extension method is used). */
vlmfa67ddc2004-06-03 03:38:44 +0000969
970#if YYMAXDEPTH == 0
vlm6a02a8a2004-09-08 00:28:11 +0000971#undef YYMAXDEPTH
vlmfa67ddc2004-06-03 03:38:44 +0000972#endif
973
974#ifndef YYMAXDEPTH
vlm6a02a8a2004-09-08 00:28:11 +0000975#define YYMAXDEPTH 10000
vlmfa67ddc2004-06-03 03:38:44 +0000976#endif
977
vlm6a02a8a2004-09-08 00:28:11 +0000978/* Define __yy_memcpy. Note that the size argument
979 should be passed with type unsigned int, because that is what the non-GCC
980 definitions require. With GCC, __builtin_memcpy takes an arg
981 of type size_t, but it can handle unsigned int. */
vlmfa67ddc2004-06-03 03:38:44 +0000982
vlm6a02a8a2004-09-08 00:28:11 +0000983#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
984#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
985#else /* not GNU C or C++ */
986#ifndef __cplusplus
vlmfa67ddc2004-06-03 03:38:44 +0000987
vlm6a02a8a2004-09-08 00:28:11 +0000988/* This is the most reliable way to avoid incompatibilities
989 in available built-in functions on various systems. */
vlm80103492004-09-07 10:39:09 +0000990static void
vlm6a02a8a2004-09-08 00:28:11 +0000991__yy_memcpy (to, from, count)
992 char *to;
993 char *from;
994 unsigned int count;
vlm80103492004-09-07 10:39:09 +0000995{
vlm6a02a8a2004-09-08 00:28:11 +0000996 register char *f = from;
997 register char *t = to;
998 register int i = count;
vlm80103492004-09-07 10:39:09 +0000999
vlm6a02a8a2004-09-08 00:28:11 +00001000 while (i-- > 0)
1001 *t++ = *f++;
vlm80103492004-09-07 10:39:09 +00001002}
vlm80103492004-09-07 10:39:09 +00001003
vlm6a02a8a2004-09-08 00:28:11 +00001004#else /* __cplusplus */
vlm80103492004-09-07 10:39:09 +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 (char *to, char *from, unsigned int count)
vlm80103492004-09-07 10:39:09 +00001010{
vlm6a02a8a2004-09-08 00:28:11 +00001011 register char *t = to;
1012 register char *f = from;
1013 register int i = count;
vlm80103492004-09-07 10:39:09 +00001014
vlm6a02a8a2004-09-08 00:28:11 +00001015 while (i-- > 0)
1016 *t++ = *f++;
vlm044f7442004-09-04 04:49:21 +00001017}
vlm044f7442004-09-04 04:49:21 +00001018
vlm6a02a8a2004-09-08 00:28:11 +00001019#endif
1020#endif
vlmfa67ddc2004-06-03 03:38:44 +00001021
vlm6a02a8a2004-09-08 00:28:11 +00001022#line 217 "/usr/share/bison.simple"
vlmfa67ddc2004-06-03 03:38:44 +00001023
1024/* The user can define YYPARSE_PARAM as the name of an argument to be passed
1025 into yyparse. The argument should have type void *.
1026 It should actually point to an object.
1027 Grammar actions can access the variable by casting it
1028 to the proper pointer type. */
1029
1030#ifdef YYPARSE_PARAM
vlm6a02a8a2004-09-08 00:28:11 +00001031#ifdef __cplusplus
1032#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
1033#define YYPARSE_PARAM_DECL
1034#else /* not __cplusplus */
1035#define YYPARSE_PARAM_ARG YYPARSE_PARAM
1036#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1037#endif /* not __cplusplus */
1038#else /* not YYPARSE_PARAM */
1039#define YYPARSE_PARAM_ARG
1040#define YYPARSE_PARAM_DECL
1041#endif /* not YYPARSE_PARAM */
vlmfa67ddc2004-06-03 03:38:44 +00001042
1043/* Prevent warning if -Wstrict-prototypes. */
1044#ifdef __GNUC__
vlm6a02a8a2004-09-08 00:28:11 +00001045#ifdef YYPARSE_PARAM
vlmfa67ddc2004-06-03 03:38:44 +00001046int yyparse (void *);
vlm6a02a8a2004-09-08 00:28:11 +00001047#else
vlmfa67ddc2004-06-03 03:38:44 +00001048int yyparse (void);
vlm6a02a8a2004-09-08 00:28:11 +00001049#endif
vlm39e5ed72004-09-05 10:40:41 +00001050#endif
vlm80103492004-09-07 10:39:09 +00001051
vlmfa67ddc2004-06-03 03:38:44 +00001052int
vlm6a02a8a2004-09-08 00:28:11 +00001053yyparse(YYPARSE_PARAM_ARG)
vlmfa67ddc2004-06-03 03:38:44 +00001054 YYPARSE_PARAM_DECL
1055{
1056 register int yystate;
1057 register int yyn;
1058 register short *yyssp;
1059 register YYSTYPE *yyvsp;
vlm6a02a8a2004-09-08 00:28:11 +00001060 int yyerrstatus; /* number of tokens to shift before error messages enabled */
1061 int yychar1 = 0; /* lookahead token as an internal (translated) token number */
vlmfa67ddc2004-06-03 03:38:44 +00001062
vlm6a02a8a2004-09-08 00:28:11 +00001063 short yyssa[YYINITDEPTH]; /* the state stack */
1064 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
vlmfa67ddc2004-06-03 03:38:44 +00001065
vlm6a02a8a2004-09-08 00:28:11 +00001066 short *yyss = yyssa; /* refer to the stacks thru separate pointers */
1067 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
vlmfa67ddc2004-06-03 03:38:44 +00001068
vlm6a02a8a2004-09-08 00:28:11 +00001069#ifdef YYLSP_NEEDED
1070 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
1071 YYLTYPE *yyls = yylsa;
1072 YYLTYPE *yylsp;
1073
1074#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1075#else
vlmfa67ddc2004-06-03 03:38:44 +00001076#define YYPOPSTACK (yyvsp--, yyssp--)
vlm6a02a8a2004-09-08 00:28:11 +00001077#endif
vlmfa67ddc2004-06-03 03:38:44 +00001078
vlm6a02a8a2004-09-08 00:28:11 +00001079 int yystacksize = YYINITDEPTH;
1080 int yyfree_stacks = 0;
vlmfa67ddc2004-06-03 03:38:44 +00001081
vlm6a02a8a2004-09-08 00:28:11 +00001082#ifdef YYPURE
1083 int yychar;
1084 YYSTYPE yylval;
1085 int yynerrs;
1086#ifdef YYLSP_NEEDED
1087 YYLTYPE yylloc;
1088#endif
1089#endif
vlmfa67ddc2004-06-03 03:38:44 +00001090
vlm6a02a8a2004-09-08 00:28:11 +00001091 YYSTYPE yyval; /* the variable used to return */
1092 /* semantic values from the action */
1093 /* routines */
vlmfa67ddc2004-06-03 03:38:44 +00001094
1095 int yylen;
1096
vlm6a02a8a2004-09-08 00:28:11 +00001097#if YYDEBUG != 0
1098 if (yydebug)
1099 fprintf(stderr, "Starting parse\n");
1100#endif
vlmfa67ddc2004-06-03 03:38:44 +00001101
1102 yystate = 0;
1103 yyerrstatus = 0;
1104 yynerrs = 0;
1105 yychar = YYEMPTY; /* Cause a token to be read. */
1106
1107 /* Initialize stack pointers.
1108 Waste one element of value and location stack
1109 so that they stay on the same level as the state stack.
1110 The wasted elements are never initialized. */
1111
vlm6a02a8a2004-09-08 00:28:11 +00001112 yyssp = yyss - 1;
vlmfa67ddc2004-06-03 03:38:44 +00001113 yyvsp = yyvs;
vlm6a02a8a2004-09-08 00:28:11 +00001114#ifdef YYLSP_NEEDED
1115 yylsp = yyls;
1116#endif
vlmfa67ddc2004-06-03 03:38:44 +00001117
vlm6a02a8a2004-09-08 00:28:11 +00001118/* Push a new state, which is found in yystate . */
1119/* In all cases, when you get here, the value and location stacks
1120 have just been pushed. so pushing a state here evens the stacks. */
1121yynewstate:
vlmfa67ddc2004-06-03 03:38:44 +00001122
vlm6a02a8a2004-09-08 00:28:11 +00001123 *++yyssp = yystate;
vlmfa67ddc2004-06-03 03:38:44 +00001124
1125 if (yyssp >= yyss + yystacksize - 1)
1126 {
vlm6a02a8a2004-09-08 00:28:11 +00001127 /* Give user a chance to reallocate the stack */
1128 /* Use copies of these so that the &'s don't force the real ones into memory. */
1129 YYSTYPE *yyvs1 = yyvs;
1130 short *yyss1 = yyss;
1131#ifdef YYLSP_NEEDED
1132 YYLTYPE *yyls1 = yyls;
1133#endif
1134
vlmfa67ddc2004-06-03 03:38:44 +00001135 /* Get the current used size of the three stacks, in elements. */
vlm6a02a8a2004-09-08 00:28:11 +00001136 int size = yyssp - yyss + 1;
vlmfa67ddc2004-06-03 03:38:44 +00001137
1138#ifdef yyoverflow
vlm6a02a8a2004-09-08 00:28:11 +00001139 /* Each stack pointer address is followed by the size of
1140 the data in use in that stack, in bytes. */
1141#ifdef YYLSP_NEEDED
1142 /* This used to be a conditional around just the two extra args,
1143 but that might be undefined if yyoverflow is a macro. */
1144 yyoverflow("parser stack overflow",
1145 &yyss1, size * sizeof (*yyssp),
1146 &yyvs1, size * sizeof (*yyvsp),
1147 &yyls1, size * sizeof (*yylsp),
1148 &yystacksize);
1149#else
1150 yyoverflow("parser stack overflow",
1151 &yyss1, size * sizeof (*yyssp),
1152 &yyvs1, size * sizeof (*yyvsp),
1153 &yystacksize);
1154#endif
vlmfa67ddc2004-06-03 03:38:44 +00001155
vlm6a02a8a2004-09-08 00:28:11 +00001156 yyss = yyss1; yyvs = yyvs1;
1157#ifdef YYLSP_NEEDED
1158 yyls = yyls1;
1159#endif
vlmfa67ddc2004-06-03 03:38:44 +00001160#else /* no yyoverflow */
1161 /* Extend the stack our own way. */
1162 if (yystacksize >= YYMAXDEPTH)
vlm6a02a8a2004-09-08 00:28:11 +00001163 {
1164 yyerror("parser stack overflow");
1165 if (yyfree_stacks)
1166 {
1167 free (yyss);
1168 free (yyvs);
1169#ifdef YYLSP_NEEDED
1170 free (yyls);
1171#endif
1172 }
1173 return 2;
1174 }
vlmfa67ddc2004-06-03 03:38:44 +00001175 yystacksize *= 2;
1176 if (yystacksize > YYMAXDEPTH)
1177 yystacksize = YYMAXDEPTH;
vlm6a02a8a2004-09-08 00:28:11 +00001178#ifndef YYSTACK_USE_ALLOCA
1179 yyfree_stacks = 1;
1180#endif
1181 yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
1182 __yy_memcpy ((char *)yyss, (char *)yyss1,
1183 size * (unsigned int) sizeof (*yyssp));
1184 yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
1185 __yy_memcpy ((char *)yyvs, (char *)yyvs1,
1186 size * (unsigned int) sizeof (*yyvsp));
1187#ifdef YYLSP_NEEDED
1188 yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
1189 __yy_memcpy ((char *)yyls, (char *)yyls1,
1190 size * (unsigned int) sizeof (*yylsp));
1191#endif
vlmfa67ddc2004-06-03 03:38:44 +00001192#endif /* no yyoverflow */
1193
vlm6a02a8a2004-09-08 00:28:11 +00001194 yyssp = yyss + size - 1;
1195 yyvsp = yyvs + size - 1;
1196#ifdef YYLSP_NEEDED
1197 yylsp = yyls + size - 1;
1198#endif
vlmfa67ddc2004-06-03 03:38:44 +00001199
vlm6a02a8a2004-09-08 00:28:11 +00001200#if YYDEBUG != 0
1201 if (yydebug)
1202 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1203#endif
vlmfa67ddc2004-06-03 03:38:44 +00001204
1205 if (yyssp >= yyss + yystacksize - 1)
1206 YYABORT;
1207 }
1208
vlm6a02a8a2004-09-08 00:28:11 +00001209#if YYDEBUG != 0
1210 if (yydebug)
1211 fprintf(stderr, "Entering state %d\n", yystate);
1212#endif
vlmfa67ddc2004-06-03 03:38:44 +00001213
1214 goto yybackup;
vlm6a02a8a2004-09-08 00:28:11 +00001215 yybackup:
vlmfa67ddc2004-06-03 03:38:44 +00001216
1217/* Do appropriate processing given the current state. */
1218/* Read a lookahead token if we need one and don't already have one. */
1219/* yyresume: */
1220
1221 /* First try to decide what to do without reference to lookahead token. */
1222
1223 yyn = yypact[yystate];
vlm6a02a8a2004-09-08 00:28:11 +00001224 if (yyn == YYFLAG)
vlmfa67ddc2004-06-03 03:38:44 +00001225 goto yydefault;
1226
1227 /* Not known => get a lookahead token if don't already have one. */
1228
1229 /* yychar is either YYEMPTY or YYEOF
1230 or a valid token in external form. */
1231
1232 if (yychar == YYEMPTY)
1233 {
vlm6a02a8a2004-09-08 00:28:11 +00001234#if YYDEBUG != 0
1235 if (yydebug)
1236 fprintf(stderr, "Reading a token: ");
1237#endif
vlmfa67ddc2004-06-03 03:38:44 +00001238 yychar = YYLEX;
1239 }
1240
vlm6a02a8a2004-09-08 00:28:11 +00001241 /* Convert token to internal form (in yychar1) for indexing tables with */
vlmfa67ddc2004-06-03 03:38:44 +00001242
vlm6a02a8a2004-09-08 00:28:11 +00001243 if (yychar <= 0) /* This means end of input. */
vlmfa67ddc2004-06-03 03:38:44 +00001244 {
1245 yychar1 = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001246 yychar = YYEOF; /* Don't call YYLEX any more */
vlmfa67ddc2004-06-03 03:38:44 +00001247
vlm6a02a8a2004-09-08 00:28:11 +00001248#if YYDEBUG != 0
1249 if (yydebug)
1250 fprintf(stderr, "Now at end of input.\n");
1251#endif
vlmfa67ddc2004-06-03 03:38:44 +00001252 }
1253 else
1254 {
vlm6a02a8a2004-09-08 00:28:11 +00001255 yychar1 = YYTRANSLATE(yychar);
vlmfa67ddc2004-06-03 03:38:44 +00001256
vlm6a02a8a2004-09-08 00:28:11 +00001257#if YYDEBUG != 0
1258 if (yydebug)
1259 {
1260 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
1261 /* Give the individual parser a way to print the precise meaning
1262 of a token, for further debugging info. */
1263#ifdef YYPRINT
1264 YYPRINT (stderr, yychar, yylval);
1265#endif
1266 fprintf (stderr, ")\n");
1267 }
1268#endif
vlmfa67ddc2004-06-03 03:38:44 +00001269 }
1270
1271 yyn += yychar1;
vlm6a02a8a2004-09-08 00:28:11 +00001272 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
vlmfa67ddc2004-06-03 03:38:44 +00001273 goto yydefault;
vlm6a02a8a2004-09-08 00:28:11 +00001274
vlmfa67ddc2004-06-03 03:38:44 +00001275 yyn = yytable[yyn];
vlm6a02a8a2004-09-08 00:28:11 +00001276
1277 /* yyn is what to do for this token type in this state.
1278 Negative => reduce, -yyn is rule number.
1279 Positive => shift, yyn is new state.
1280 New state is final state => don't bother to shift,
1281 just return success.
1282 0, or most negative number => error. */
1283
1284 if (yyn < 0)
vlmfa67ddc2004-06-03 03:38:44 +00001285 {
vlm6a02a8a2004-09-08 00:28:11 +00001286 if (yyn == YYFLAG)
vlmfa67ddc2004-06-03 03:38:44 +00001287 goto yyerrlab;
1288 yyn = -yyn;
1289 goto yyreduce;
1290 }
vlm6a02a8a2004-09-08 00:28:11 +00001291 else if (yyn == 0)
1292 goto yyerrlab;
vlmfa67ddc2004-06-03 03:38:44 +00001293
1294 if (yyn == YYFINAL)
1295 YYACCEPT;
1296
1297 /* Shift the lookahead token. */
vlm6a02a8a2004-09-08 00:28:11 +00001298
1299#if YYDEBUG != 0
1300 if (yydebug)
1301 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
1302#endif
vlmfa67ddc2004-06-03 03:38:44 +00001303
1304 /* Discard the token being shifted unless it is eof. */
1305 if (yychar != YYEOF)
1306 yychar = YYEMPTY;
1307
1308 *++yyvsp = yylval;
vlm6a02a8a2004-09-08 00:28:11 +00001309#ifdef YYLSP_NEEDED
1310 *++yylsp = yylloc;
1311#endif
vlmfa67ddc2004-06-03 03:38:44 +00001312
vlm6a02a8a2004-09-08 00:28:11 +00001313 /* count tokens shifted since error; after three, turn off error status. */
1314 if (yyerrstatus) yyerrstatus--;
vlmfa67ddc2004-06-03 03:38:44 +00001315
1316 yystate = yyn;
1317 goto yynewstate;
1318
vlm6a02a8a2004-09-08 00:28:11 +00001319/* Do the default action for the current state. */
vlm80103492004-09-07 10:39:09 +00001320yydefault:
vlm6a02a8a2004-09-08 00:28:11 +00001321
vlmfa67ddc2004-06-03 03:38:44 +00001322 yyn = yydefact[yystate];
1323 if (yyn == 0)
1324 goto yyerrlab;
1325
vlm6a02a8a2004-09-08 00:28:11 +00001326/* Do a reduction. yyn is the number of a rule to reduce with. */
vlmfa67ddc2004-06-03 03:38:44 +00001327yyreduce:
1328 yylen = yyr2[yyn];
vlm6a02a8a2004-09-08 00:28:11 +00001329 if (yylen > 0)
1330 yyval = yyvsp[1-yylen]; /* implement default value of the action */
vlmfa67ddc2004-06-03 03:38:44 +00001331
vlm6a02a8a2004-09-08 00:28:11 +00001332#if YYDEBUG != 0
vlmfa67ddc2004-06-03 03:38:44 +00001333 if (yydebug)
1334 {
vlm6a02a8a2004-09-08 00:28:11 +00001335 int i;
vlmfa67ddc2004-06-03 03:38:44 +00001336
vlm6a02a8a2004-09-08 00:28:11 +00001337 fprintf (stderr, "Reducing via rule %d (line %d), ",
1338 yyn, yyrline[yyn]);
vlmfa67ddc2004-06-03 03:38:44 +00001339
1340 /* Print the symbols being reduced, and their result. */
vlm6a02a8a2004-09-08 00:28:11 +00001341 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
1342 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
1343 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
vlmfa67ddc2004-06-03 03:38:44 +00001344 }
1345#endif
vlm80103492004-09-07 10:39:09 +00001346
vlm6a02a8a2004-09-08 00:28:11 +00001347
1348 switch (yyn) {
1349
1350case 1:
vlm7388db02005-03-31 21:48:13 +00001351#line 303 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001352{
1353 *(void **)param = yyvsp[0].a_grammar;
1354 ;
1355 break;}
1356case 2:
vlm7388db02005-03-31 21:48:13 +00001357#line 309 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001358{
vlmfa67ddc2004-06-03 03:38:44 +00001359 yyval.a_grammar = asn1p_new();
1360 checkmem(yyval.a_grammar);
1361 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm6a02a8a2004-09-08 00:28:11 +00001362 ;
1363 break;}
1364case 3:
vlm7388db02005-03-31 21:48:13 +00001365#line 314 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001366{
vlmfa67ddc2004-06-03 03:38:44 +00001367 yyval.a_grammar = yyvsp[-1].a_grammar;
1368 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm6a02a8a2004-09-08 00:28:11 +00001369 ;
1370 break;}
1371case 4:
vlm7388db02005-03-31 21:48:13 +00001372#line 335 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001373{
vlmfa67ddc2004-06-03 03:38:44 +00001374
1375 if(yyvsp[-1].a_module) {
1376 yyval.a_module = yyvsp[-1].a_module;
1377 } else {
1378 /* There's a chance that a module is just plain empty */
1379 yyval.a_module = asn1p_module_new();
1380 }
1381 checkmem(yyval.a_module);
1382
1383 yyval.a_module->Identifier = yyvsp[-7].tv_str;
1384 yyval.a_module->module_oid = yyvsp[-6].a_oid;
1385 yyval.a_module->module_flags = yyvsp[-4].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001386 ;
1387 break;}
1388case 5:
vlm7388db02005-03-31 21:48:13 +00001389#line 356 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001390{ yyval.a_oid = 0; ;
1391 break;}
1392case 6:
vlm7388db02005-03-31 21:48:13 +00001393#line 357 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001394{ yyval.a_oid = yyvsp[0].a_oid; ;
1395 break;}
1396case 7:
vlm7388db02005-03-31 21:48:13 +00001397#line 361 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001398{
vlmfa67ddc2004-06-03 03:38:44 +00001399 yyval.a_oid = yyvsp[-1].a_oid;
vlm6a02a8a2004-09-08 00:28:11 +00001400 ;
1401 break;}
1402case 8:
vlm7388db02005-03-31 21:48:13 +00001403#line 364 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001404{
vlmfa67ddc2004-06-03 03:38:44 +00001405 yyval.a_oid = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001406 ;
1407 break;}
1408case 9:
vlm7388db02005-03-31 21:48:13 +00001409#line 370 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001410{
vlmfa67ddc2004-06-03 03:38:44 +00001411 yyval.a_oid = asn1p_oid_new();
1412 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1413 if(yyvsp[0].a_oid_arc.name)
1414 free(yyvsp[0].a_oid_arc.name);
vlm6a02a8a2004-09-08 00:28:11 +00001415 ;
1416 break;}
1417case 10:
vlm7388db02005-03-31 21:48:13 +00001418#line 376 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001419{
vlmfa67ddc2004-06-03 03:38:44 +00001420 yyval.a_oid = yyvsp[-1].a_oid;
1421 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1422 if(yyvsp[0].a_oid_arc.name)
1423 free(yyvsp[0].a_oid_arc.name);
vlm6a02a8a2004-09-08 00:28:11 +00001424 ;
1425 break;}
1426case 11:
vlm7388db02005-03-31 21:48:13 +00001427#line 385 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001428{ /* iso */
vlmfa67ddc2004-06-03 03:38:44 +00001429 yyval.a_oid_arc.name = yyvsp[0].tv_str;
1430 yyval.a_oid_arc.number = -1;
vlm6a02a8a2004-09-08 00:28:11 +00001431 ;
1432 break;}
1433case 12:
vlm7388db02005-03-31 21:48:13 +00001434#line 389 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001435{ /* iso(1) */
vlmfa67ddc2004-06-03 03:38:44 +00001436 yyval.a_oid_arc.name = yyvsp[-3].tv_str;
1437 yyval.a_oid_arc.number = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00001438 ;
1439 break;}
1440case 13:
vlm7388db02005-03-31 21:48:13 +00001441#line 393 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001442{ /* 1 */
vlmfa67ddc2004-06-03 03:38:44 +00001443 yyval.a_oid_arc.name = 0;
1444 yyval.a_oid_arc.number = yyvsp[0].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00001445 ;
1446 break;}
1447case 14:
vlm7388db02005-03-31 21:48:13 +00001448#line 403 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001449{ yyval.a_module_flags = MSF_NOFLAGS; ;
1450 break;}
1451case 15:
vlm7388db02005-03-31 21:48:13 +00001452#line 404 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001453{
vlmfa67ddc2004-06-03 03:38:44 +00001454 yyval.a_module_flags = yyvsp[0].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001455 ;
1456 break;}
1457case 16:
vlm7388db02005-03-31 21:48:13 +00001458#line 413 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001459{
vlmfa67ddc2004-06-03 03:38:44 +00001460 yyval.a_module_flags = yyvsp[0].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001461 ;
1462 break;}
1463case 17:
vlm7388db02005-03-31 21:48:13 +00001464#line 416 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001465{
vlmfa67ddc2004-06-03 03:38:44 +00001466 yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001467 ;
1468 break;}
1469case 18:
vlm7388db02005-03-31 21:48:13 +00001470#line 425 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001471{
vlmfa67ddc2004-06-03 03:38:44 +00001472 yyval.a_module_flags = MSF_EXPLICIT_TAGS;
vlm6a02a8a2004-09-08 00:28:11 +00001473 ;
1474 break;}
1475case 19:
vlm7388db02005-03-31 21:48:13 +00001476#line 428 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001477{
vlmfa67ddc2004-06-03 03:38:44 +00001478 yyval.a_module_flags = MSF_IMPLICIT_TAGS;
vlm6a02a8a2004-09-08 00:28:11 +00001479 ;
1480 break;}
1481case 20:
vlm7388db02005-03-31 21:48:13 +00001482#line 431 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001483{
vlmfa67ddc2004-06-03 03:38:44 +00001484 yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
vlm6a02a8a2004-09-08 00:28:11 +00001485 ;
1486 break;}
1487case 21:
vlm7388db02005-03-31 21:48:13 +00001488#line 434 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001489{
vlmfa67ddc2004-06-03 03:38:44 +00001490 yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
vlm6a02a8a2004-09-08 00:28:11 +00001491 ;
1492 break;}
1493case 22:
vlm7388db02005-03-31 21:48:13 +00001494#line 438 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001495{
vlm9283dbe2004-08-18 04:59:12 +00001496 /* X.680Amd1 specifies TAG and XER */
1497 if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
1498 yyval.a_module_flags = MSF_TAG_INSTRUCTIONS;
1499 } else if(strcmp(yyvsp[-1].tv_str, "XER") == 0) {
1500 yyval.a_module_flags = MSF_XER_INSTRUCTIONS;
1501 } else {
1502 fprintf(stderr,
1503 "WARNING: %s INSTRUCTIONS at line %d: "
1504 "Unrecognized encoding reference\n",
1505 yyvsp[-1].tv_str, yylineno);
1506 yyval.a_module_flags = MSF_unk_INSTRUCTIONS;
1507 }
1508 free(yyvsp[-1].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00001509 ;
1510 break;}
1511case 23:
vlm7388db02005-03-31 21:48:13 +00001512#line 459 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001513{ yyval.a_module = 0; ;
1514 break;}
1515case 24:
vlm7388db02005-03-31 21:48:13 +00001516#line 460 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001517{
vlmfa67ddc2004-06-03 03:38:44 +00001518 yyval.a_module = yyvsp[0].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001519 ;
1520 break;}
1521case 25:
vlm7388db02005-03-31 21:48:13 +00001522#line 469 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001523{
vlm9283dbe2004-08-18 04:59:12 +00001524 yyval.a_module = yyvsp[0].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001525 ;
1526 break;}
1527case 26:
vlm7388db02005-03-31 21:48:13 +00001528#line 472 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001529{
vlmfa67ddc2004-06-03 03:38:44 +00001530 yyval.a_module = yyvsp[-1].a_module;
1531
vlm9283dbe2004-08-18 04:59:12 +00001532 /* Behave well when one of them is skipped. */
1533 if(!(yyvsp[-1].a_module)) {
1534 if(yyvsp[0].a_module) yyval.a_module = yyvsp[0].a_module;
1535 break;
1536 }
1537
vlmfa67ddc2004-06-03 03:38:44 +00001538#ifdef MY_IMPORT
1539#error MY_IMPORT DEFINED ELSEWHERE!
1540#endif
1541#define MY_IMPORT(foo,field) do { \
vlm97ed7152004-08-13 12:31:09 +00001542 while(TQ_FIRST(&(yyvsp[0].a_module->foo))) { \
vlmfa67ddc2004-06-03 03:38:44 +00001543 TQ_ADD(&(yyval.a_module->foo), \
1544 TQ_REMOVE(&(yyvsp[0].a_module->foo), field), \
1545 field); \
vlm97ed7152004-08-13 12:31:09 +00001546 } \
1547 assert(TQ_FIRST(&(yyvsp[0].a_module->foo)) == 0); \
1548 } while(0)
vlmfa67ddc2004-06-03 03:38:44 +00001549
1550 MY_IMPORT(imports, xp_next);
1551 MY_IMPORT(exports, xp_next);
1552 MY_IMPORT(members, next);
1553#undef MY_IMPORT
1554
vlm6a02a8a2004-09-08 00:28:11 +00001555 ;
1556 break;}
1557case 27:
vlm7388db02005-03-31 21:48:13 +00001558#line 505 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001559{
vlmfa67ddc2004-06-03 03:38:44 +00001560 yyval.a_module = yyvsp[0].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001561 ;
1562 break;}
1563case 28:
vlm7388db02005-03-31 21:48:13 +00001564#line 508 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001565{
vlmfa67ddc2004-06-03 03:38:44 +00001566 yyval.a_module = asn1p_module_new();
1567 checkmem(yyval.a_module);
1568 if(yyvsp[0].a_xports) {
1569 TQ_ADD(&(yyval.a_module->exports), yyvsp[0].a_xports, xp_next);
1570 } else {
1571 /* "EXPORTS ALL;" ? */
1572 }
vlm6a02a8a2004-09-08 00:28:11 +00001573 ;
1574 break;}
1575case 29:
vlm7388db02005-03-31 21:48:13 +00001576#line 517 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001577{
vlmfa67ddc2004-06-03 03:38:44 +00001578 yyval.a_module = asn1p_module_new();
1579 checkmem(yyval.a_module);
1580 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1581 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1582 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001583 ;
1584 break;}
1585case 30:
vlm7388db02005-03-31 21:48:13 +00001586#line 524 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001587{
vlm9283dbe2004-08-18 04:59:12 +00001588 yyval.a_module = asn1p_module_new();
1589 checkmem(yyval.a_module);
1590 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1591 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1592 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001593 ;
1594 break;}
1595case 31:
vlm7388db02005-03-31 21:48:13 +00001596#line 537 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001597{
vlm9283dbe2004-08-18 04:59:12 +00001598 yyval.a_module = asn1p_module_new();
1599 checkmem(yyval.a_module);
1600 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1601 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1602 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001603 ;
1604 break;}
1605case 32:
vlm7388db02005-03-31 21:48:13 +00001606#line 545 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001607{ asn1p_lexer_hack_push_encoding_control(); ;
1608 break;}
1609case 33:
vlm7388db02005-03-31 21:48:13 +00001610#line 546 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001611{
vlm9283dbe2004-08-18 04:59:12 +00001612 fprintf(stderr,
1613 "WARNING: ENCODING-CONTROL %s "
1614 "specification at line %d ignored\n",
1615 yyvsp[-1].tv_str, yylineno);
1616 free(yyvsp[-1].tv_str);
1617 yyval.a_module = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001618 ;
1619 break;}
1620case 34:
vlm7388db02005-03-31 21:48:13 +00001621#line 558 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001622{
vlmfa67ddc2004-06-03 03:38:44 +00001623 return yyerror(
1624 "Attempt to redefine a standard basic type, "
1625 "use -ftypesXY to switch back "
1626 "to older version of ASN.1 standard");
vlm6a02a8a2004-09-08 00:28:11 +00001627 ;
1628 break;}
1629case 35:
vlm7388db02005-03-31 21:48:13 +00001630#line 572 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001631{
vlmfa67ddc2004-06-03 03:38:44 +00001632 yyval.a_module = yyvsp[-1].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001633 ;
1634 break;}
1635case 36:
vlm7388db02005-03-31 21:48:13 +00001636#line 578 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001637{
vlmfa67ddc2004-06-03 03:38:44 +00001638 return yyerror("Empty IMPORTS list");
vlm6a02a8a2004-09-08 00:28:11 +00001639 ;
1640 break;}
1641case 37:
vlm7388db02005-03-31 21:48:13 +00001642#line 584 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001643{
vlmfa67ddc2004-06-03 03:38:44 +00001644 yyval.a_module = asn1p_module_new();
1645 checkmem(yyval.a_module);
1646 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm6a02a8a2004-09-08 00:28:11 +00001647 ;
1648 break;}
1649case 38:
vlm7388db02005-03-31 21:48:13 +00001650#line 589 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001651{
vlmfa67ddc2004-06-03 03:38:44 +00001652 yyval.a_module = yyvsp[-1].a_module;
1653 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm6a02a8a2004-09-08 00:28:11 +00001654 ;
1655 break;}
1656case 39:
vlm7388db02005-03-31 21:48:13 +00001657#line 596 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001658{
vlmfa67ddc2004-06-03 03:38:44 +00001659 yyval.a_xports = yyvsp[-3].a_xports;
1660 yyval.a_xports->from = yyvsp[-1].tv_str;
1661 yyval.a_xports->from_oid = yyvsp[0].a_oid;
1662 checkmem(yyval.a_xports);
vlm6a02a8a2004-09-08 00:28:11 +00001663 ;
1664 break;}
1665case 40:
vlm7388db02005-03-31 21:48:13 +00001666#line 605 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001667{
vlmfa67ddc2004-06-03 03:38:44 +00001668 yyval.a_xports = asn1p_xports_new();
1669 checkmem(yyval.a_xports);
1670 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001671 ;
1672 break;}
1673case 41:
vlm7388db02005-03-31 21:48:13 +00001674#line 610 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001675{
vlmfa67ddc2004-06-03 03:38:44 +00001676 yyval.a_xports = yyvsp[-2].a_xports;
1677 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001678 ;
1679 break;}
1680case 42:
vlm7388db02005-03-31 21:48:13 +00001681#line 617 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001682{
vlmfa67ddc2004-06-03 03:38:44 +00001683 yyval.a_expr = asn1p_expr_new(yylineno);
1684 checkmem(yyval.a_expr);
1685 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1686 yyval.a_expr->expr_type = A1TC_REFERENCE;
vlm6a02a8a2004-09-08 00:28:11 +00001687 ;
1688 break;}
1689case 43:
vlm7388db02005-03-31 21:48:13 +00001690#line 623 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001691{ /* Completely equivalent to above */
1692 yyval.a_expr = asn1p_expr_new(yylineno);
1693 checkmem(yyval.a_expr);
1694 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
1695 yyval.a_expr->expr_type = A1TC_REFERENCE;
1696 ;
1697 break;}
1698case 44:
vlm7388db02005-03-31 21:48:13 +00001699#line 629 "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;}
vlm0aa86902004-10-12 23:26:53 +00001707case 45:
vlm7388db02005-03-31 21:48:13 +00001708#line 638 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001709{
vlmfa67ddc2004-06-03 03:38:44 +00001710 yyval.a_xports = yyvsp[-1].a_xports;
vlm6a02a8a2004-09-08 00:28:11 +00001711 ;
1712 break;}
vlm0aa86902004-10-12 23:26:53 +00001713case 46:
vlm7388db02005-03-31 21:48:13 +00001714#line 641 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001715{
vlmfa67ddc2004-06-03 03:38:44 +00001716 yyval.a_xports = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001717 ;
1718 break;}
vlm0aa86902004-10-12 23:26:53 +00001719case 47:
vlm7388db02005-03-31 21:48:13 +00001720#line 644 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001721{
vlmfa67ddc2004-06-03 03:38:44 +00001722 /* Empty EXPORTS clause effectively prohibits export. */
1723 yyval.a_xports = asn1p_xports_new();
1724 checkmem(yyval.a_xports);
vlm6a02a8a2004-09-08 00:28:11 +00001725 ;
1726 break;}
vlm0aa86902004-10-12 23:26:53 +00001727case 48:
vlm7388db02005-03-31 21:48:13 +00001728#line 652 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001729{
vlmfa67ddc2004-06-03 03:38:44 +00001730 yyval.a_xports = asn1p_xports_new();
1731 assert(yyval.a_xports);
1732 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001733 ;
1734 break;}
vlm0aa86902004-10-12 23:26:53 +00001735case 49:
vlm7388db02005-03-31 21:48:13 +00001736#line 657 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001737{
vlmfa67ddc2004-06-03 03:38:44 +00001738 yyval.a_xports = yyvsp[-2].a_xports;
1739 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001740 ;
1741 break;}
vlm6a02a8a2004-09-08 00:28:11 +00001742case 50:
vlm7388db02005-03-31 21:48:13 +00001743#line 664 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001744{
vlmfa67ddc2004-06-03 03:38:44 +00001745 yyval.a_expr = asn1p_expr_new(yylineno);
1746 checkmem(yyval.a_expr);
1747 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1748 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
vlm6a02a8a2004-09-08 00:28:11 +00001749 ;
1750 break;}
1751case 51:
vlm7388db02005-03-31 21:48:13 +00001752#line 670 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001753{
1754 yyval.a_expr = asn1p_expr_new(yylineno);
1755 checkmem(yyval.a_expr);
1756 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
1757 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
1758 ;
1759 break;}
1760case 52:
vlm7388db02005-03-31 21:48:13 +00001761#line 676 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001762{
1763 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;
1767 ;
1768 break;}
1769case 53:
vlm7388db02005-03-31 21:48:13 +00001770#line 687 "asn1p_y.y"
1771{ asn1p_lexer_hack_push_opaque_state(); ;
1772 break;}
1773case 54:
1774#line 687 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001775{
vlmfa67ddc2004-06-03 03:38:44 +00001776 yyval.a_expr = yyvsp[-4].a_expr;
1777 assert(yyval.a_expr->Identifier == 0);
1778 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
1779 yyval.a_expr->meta_type = AMT_VALUESET;
vlm7388db02005-03-31 21:48:13 +00001780 // take care of ValueSet body
vlm6a02a8a2004-09-08 00:28:11 +00001781 ;
1782 break;}
vlm7388db02005-03-31 21:48:13 +00001783case 55:
1784#line 697 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001785{
vlmfa67ddc2004-06-03 03:38:44 +00001786 yyval.a_expr = asn1p_expr_new(yylineno);
1787 checkmem(yyval.a_expr);
1788 yyval.a_expr->reference = yyvsp[0].a_ref;
1789 yyval.a_expr->expr_type = A1TC_REFERENCE;
1790 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm6a02a8a2004-09-08 00:28:11 +00001791 ;
1792 break;}
vlm7388db02005-03-31 21:48:13 +00001793case 56:
1794#line 704 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001795{
vlmfa67ddc2004-06-03 03:38:44 +00001796 yyval.a_expr = asn1p_expr_new(yylineno);
1797 checkmem(yyval.a_expr);
1798 yyval.a_expr->expr_type = yyvsp[0].a_type;
1799 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00001800 ;
1801 break;}
vlm6a02a8a2004-09-08 00:28:11 +00001802case 57:
vlm7388db02005-03-31 21:48:13 +00001803#line 722 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001804{
vlmfa67ddc2004-06-03 03:38:44 +00001805 yyval.a_expr = asn1p_expr_new(yylineno);
1806 checkmem(yyval.a_expr);
1807 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
1808 yyval.a_expr->tag = yyvsp[-1].a_tag;
1809 yyval.a_expr->expr_type = A1TC_TYPEID;
1810 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00001811 ;
1812 break;}
vlm7388db02005-03-31 21:48:13 +00001813case 58:
1814#line 730 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001815{
vlmfa67ddc2004-06-03 03:38:44 +00001816 yyval.a_expr = yyvsp[0].a_expr;
vlmfce48a42004-09-14 02:36:39 +00001817 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
vlmfa67ddc2004-06-03 03:38:44 +00001818 assert(yyval.a_expr->expr_type);
1819 assert(yyval.a_expr->meta_type);
vlm6a02a8a2004-09-08 00:28:11 +00001820 ;
1821 break;}
vlm7388db02005-03-31 21:48:13 +00001822case 59:
1823#line 736 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001824{
vlmfa67ddc2004-06-03 03:38:44 +00001825 yyval.a_expr = yyvsp[0].a_expr;
1826 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
1827 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
1828 assert(yyval.a_expr->meta_type == AMT_OBJECT);
vlm6a02a8a2004-09-08 00:28:11 +00001829 ;
1830 break;}
vlm7388db02005-03-31 21:48:13 +00001831case 60:
1832#line 752 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001833{
vlmfa67ddc2004-06-03 03:38:44 +00001834 yyval.a_expr = yyvsp[0].a_expr;
1835 assert(yyval.a_expr->Identifier == 0);
1836 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
1837 yyval.a_expr->params = yyvsp[-3].a_plist;
1838 yyval.a_expr->meta_type = AMT_PARAMTYPE;
vlm6a02a8a2004-09-08 00:28:11 +00001839 ;
1840 break;}
vlm7388db02005-03-31 21:48:13 +00001841case 61:
1842#line 762 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001843{
vlmfa67ddc2004-06-03 03:38:44 +00001844 int ret;
1845 yyval.a_plist = asn1p_paramlist_new(yylineno);
1846 checkmem(yyval.a_plist);
1847 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
1848 checkmem(ret == 0);
1849 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
1850 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm6a02a8a2004-09-08 00:28:11 +00001851 ;
1852 break;}
vlm7388db02005-03-31 21:48:13 +00001853case 62:
1854#line 771 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001855{
vlmfa67ddc2004-06-03 03:38:44 +00001856 int ret;
1857 yyval.a_plist = yyvsp[-2].a_plist;
1858 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
1859 checkmem(ret == 0);
1860 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
1861 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm6a02a8a2004-09-08 00:28:11 +00001862 ;
1863 break;}
vlm7388db02005-03-31 21:48:13 +00001864case 63:
1865#line 782 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001866{
vlmfa67ddc2004-06-03 03:38:44 +00001867 yyval.a_parg.governor = NULL;
1868 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00001869 ;
1870 break;}
vlm7388db02005-03-31 21:48:13 +00001871case 64:
1872#line 786 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001873{
vlmfa67ddc2004-06-03 03:38:44 +00001874 int ret;
1875 yyval.a_parg.governor = asn1p_ref_new(yylineno);
1876 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
1877 checkmem(ret == 0);
1878 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00001879 ;
1880 break;}
vlm7388db02005-03-31 21:48:13 +00001881case 65:
1882#line 793 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001883{
vlmfa67ddc2004-06-03 03:38:44 +00001884 int ret;
1885 yyval.a_parg.governor = asn1p_ref_new(yylineno);
vlm4053ca52005-02-18 16:34:21 +00001886 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
1887 checkmem(ret == 0);
1888 yyval.a_parg.argument = yyvsp[0].tv_str;
1889 ;
1890 break;}
vlm7388db02005-03-31 21:48:13 +00001891case 66:
1892#line 800 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00001893{
1894 int ret;
1895 yyval.a_parg.governor = asn1p_ref_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00001896 ret = asn1p_ref_add_component(yyval.a_parg.governor,
1897 ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
1898 checkmem(ret == 0);
1899 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00001900 ;
1901 break;}
vlm7388db02005-03-31 21:48:13 +00001902case 67:
1903#line 811 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001904{
vlmfa67ddc2004-06-03 03:38:44 +00001905 yyval.a_expr = asn1p_expr_new(yylineno);
1906 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00001907 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1908 ;
1909 break;}
vlm7388db02005-03-31 21:48:13 +00001910case 68:
1911#line 816 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001912{
vlmfa67ddc2004-06-03 03:38:44 +00001913 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00001914 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1915 ;
1916 break;}
vlm7388db02005-03-31 21:48:13 +00001917case 69:
1918#line 823 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001919{
vlmfa67ddc2004-06-03 03:38:44 +00001920 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00001921 ;
1922 break;}
vlm7388db02005-03-31 21:48:13 +00001923case 70:
1924#line 826 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001925{
vlmfa67ddc2004-06-03 03:38:44 +00001926 yyval.a_expr = asn1p_expr_new(yylineno);
1927 checkmem(yyval.a_expr);
1928 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1929 yyval.a_expr->expr_type = A1TC_REFERENCE;
1930 yyval.a_expr->meta_type = AMT_VALUE;
vlm6a02a8a2004-09-08 00:28:11 +00001931 ;
1932 break;}
vlm7388db02005-03-31 21:48:13 +00001933case 71:
1934#line 850 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001935{ yyval.a_expr = asn1p_expr_new(yylineno); ;
1936 break;}
vlm7388db02005-03-31 21:48:13 +00001937case 72:
1938#line 851 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001939{ yyval.a_expr = yyvsp[0].a_expr; ;
1940 break;}
vlm7388db02005-03-31 21:48:13 +00001941case 73:
1942#line 854 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001943{
vlmfa67ddc2004-06-03 03:38:44 +00001944 yyval.a_expr = asn1p_expr_new(yylineno);
1945 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00001946 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1947 ;
1948 break;}
vlm7388db02005-03-31 21:48:13 +00001949case 74:
1950#line 859 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001951{
vlmfa67ddc2004-06-03 03:38:44 +00001952 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00001953 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1954 ;
1955 break;}
vlm7388db02005-03-31 21:48:13 +00001956case 75:
1957#line 866 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001958{
vlmec8f6812004-08-22 03:19:54 +00001959 yyval.a_expr = yyvsp[-1].a_expr;
1960 assert(yyval.a_expr->Identifier == 0);
vlmfce48a42004-09-14 02:36:39 +00001961 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
vlmec8f6812004-08-22 03:19:54 +00001962 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm6a02a8a2004-09-08 00:28:11 +00001963 ;
1964 break;}
vlm7388db02005-03-31 21:48:13 +00001965case 76:
1966#line 872 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001967{
vlmec8f6812004-08-22 03:19:54 +00001968 yyval.a_expr = asn1p_expr_new(yylineno);
1969 checkmem(yyval.a_expr);
1970 yyval.a_expr->meta_type = yyvsp[0].a_expr->meta_type;
1971 yyval.a_expr->expr_type = A1TC_COMPONENTS_OF;
vlm6a02a8a2004-09-08 00:28:11 +00001972 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1973 ;
1974 break;}
vlm7388db02005-03-31 21:48:13 +00001975case 77:
1976#line 879 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001977{
vlmec8f6812004-08-22 03:19:54 +00001978 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00001979 ;
1980 break;}
vlm7388db02005-03-31 21:48:13 +00001981case 78:
1982#line 885 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001983{
vlmec8f6812004-08-22 03:19:54 +00001984 yyval.a_expr = asn1p_expr_new(yylineno);
1985 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00001986 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1987 ;
1988 break;}
vlm7388db02005-03-31 21:48:13 +00001989case 79:
1990#line 890 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001991{
vlmec8f6812004-08-22 03:19:54 +00001992 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00001993 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1994 ;
1995 break;}
vlm7388db02005-03-31 21:48:13 +00001996case 80:
1997#line 897 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001998{
vlmec8f6812004-08-22 03:19:54 +00001999 yyval.a_expr = yyvsp[0].a_expr;
2000 assert(yyval.a_expr->Identifier == 0);
vlmfce48a42004-09-14 02:36:39 +00002001 yyval.a_expr->Identifier = yyvsp[-1].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00002002 ;
2003 break;}
vlm7388db02005-03-31 21:48:13 +00002004case 81:
2005#line 902 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002006{
vlmec8f6812004-08-22 03:19:54 +00002007 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002008 ;
2009 break;}
vlm7388db02005-03-31 21:48:13 +00002010case 82:
2011#line 908 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002012{
vlmfa67ddc2004-06-03 03:38:44 +00002013 yyval.a_expr = yyvsp[-2].a_expr;
2014 checkmem(yyval.a_expr);
2015 yyval.a_expr->with_syntax = yyvsp[0].a_wsynt;
2016 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
2017 assert(yyval.a_expr->meta_type == AMT_OBJECT);
vlm6a02a8a2004-09-08 00:28:11 +00002018 ;
2019 break;}
vlm7388db02005-03-31 21:48:13 +00002020case 83:
2021#line 918 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002022{ yyval.a_int = 0; ;
2023 break;}
vlm7388db02005-03-31 21:48:13 +00002024case 84:
2025#line 919 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002026{ yyval.a_int = 1; ;
2027 break;}
vlm7388db02005-03-31 21:48:13 +00002028case 85:
2029#line 923 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002030{
vlmfa67ddc2004-06-03 03:38:44 +00002031 yyval.a_expr = asn1p_expr_new(yylineno);
2032 checkmem(yyval.a_expr);
2033 yyval.a_expr->expr_type = A1TC_CLASSDEF;
2034 yyval.a_expr->meta_type = AMT_OBJECT;
vlm6a02a8a2004-09-08 00:28:11 +00002035 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2036 ;
2037 break;}
vlm7388db02005-03-31 21:48:13 +00002038case 86:
2039#line 930 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002040{
vlmfa67ddc2004-06-03 03:38:44 +00002041 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002042 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2043 ;
2044 break;}
vlm7388db02005-03-31 21:48:13 +00002045case 87:
2046#line 937 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002047{
vlmfa67ddc2004-06-03 03:38:44 +00002048 yyval.a_expr = asn1p_expr_new(yylineno);
2049 checkmem(yyval.a_expr);
2050 yyval.a_expr->Identifier = yyvsp[-1].a_refcomp.name;
2051 yyval.a_expr->expr_type = A1TC_CLASSFIELD;
2052 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2053 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm6a02a8a2004-09-08 00:28:11 +00002054 ;
2055 break;}
vlm7388db02005-03-31 21:48:13 +00002056case 88:
2057#line 945 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002058{
vlmec8f6812004-08-22 03:19:54 +00002059 yyval.a_expr = yyvsp[-2].a_expr;
2060 yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
vlmbde35d42004-11-24 17:43:29 +00002061 yyval.a_expr->marker = yyvsp[0].a_marker;
2062 yyval.a_expr->unique = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00002063 ;
2064 break;}
vlm7388db02005-03-31 21:48:13 +00002065case 89:
2066#line 951 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002067{
vlmfa67ddc2004-06-03 03:38:44 +00002068 int ret;
2069 yyval.a_expr = asn1p_expr_new(yylineno);
2070 checkmem(yyval.a_expr);
2071 yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
2072 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2073 checkmem(yyval.a_expr->reference);
2074 ret = asn1p_ref_add_component(yyval.a_expr->reference,
2075 yyvsp[-2].a_refcomp.name, yyvsp[-2].a_refcomp.lex_type);
2076 checkmem(ret == 0);
2077 yyval.a_expr->expr_type = A1TC_CLASSFIELD;
2078 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
vlmbde35d42004-11-24 17:43:29 +00002079 yyval.a_expr->marker = yyvsp[0].a_marker;
2080 yyval.a_expr->unique = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00002081 ;
2082 break;}
vlm7388db02005-03-31 21:48:13 +00002083case 90:
2084#line 969 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002085{ yyval.a_wsynt = 0; ;
2086 break;}
vlm7388db02005-03-31 21:48:13 +00002087case 91:
2088#line 970 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002089{
vlmfa67ddc2004-06-03 03:38:44 +00002090 yyval.a_wsynt = yyvsp[0].a_wsynt;
vlm6a02a8a2004-09-08 00:28:11 +00002091 ;
2092 break;}
vlm7388db02005-03-31 21:48:13 +00002093case 92:
2094#line 977 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002095{ asn1p_lexer_hack_enable_with_syntax(); ;
2096 break;}
vlm7388db02005-03-31 21:48:13 +00002097case 93:
2098#line 979 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002099{
vlmfa67ddc2004-06-03 03:38:44 +00002100 yyval.a_wsynt = yyvsp[-1].a_wsynt;
vlm6a02a8a2004-09-08 00:28:11 +00002101 ;
2102 break;}
vlm7388db02005-03-31 21:48:13 +00002103case 94:
2104#line 985 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002105{
vlmfa67ddc2004-06-03 03:38:44 +00002106 yyval.a_wsynt = asn1p_wsyntx_new();
2107 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm6a02a8a2004-09-08 00:28:11 +00002108 ;
2109 break;}
vlm7388db02005-03-31 21:48:13 +00002110case 95:
2111#line 989 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002112{
vlmfa67ddc2004-06-03 03:38:44 +00002113 yyval.a_wsynt = yyvsp[-1].a_wsynt;
2114 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm6a02a8a2004-09-08 00:28:11 +00002115 ;
2116 break;}
vlm7388db02005-03-31 21:48:13 +00002117case 96:
2118#line 996 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002119{
vlmfa67ddc2004-06-03 03:38:44 +00002120 yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
vlm6a02a8a2004-09-08 00:28:11 +00002121 ;
2122 break;}
vlm7388db02005-03-31 21:48:13 +00002123case 97:
2124#line 999 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002125{
vlmfa67ddc2004-06-03 03:38:44 +00002126 asn1p_ref_t *ref;
2127 int ret;
2128 ref = asn1p_ref_new(yylineno);
2129 checkmem(ref);
2130 ret = asn1p_ref_add_component(ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2131 checkmem(ret == 0);
2132 yyval.a_wchunk = asn1p_wsyntx_chunk_fromref(ref, 0);
vlm6a02a8a2004-09-08 00:28:11 +00002133 ;
2134 break;}
vlm7388db02005-03-31 21:48:13 +00002135case 98:
2136#line 1011 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00002137{
2138 yyval.a_expr = asn1p_expr_new(yylineno);
2139 checkmem(yyval.a_expr);
2140 yyval.a_expr->Identifier = strdup("...");
2141 checkmem(yyval.a_expr->Identifier);
vlm0aa86902004-10-12 23:26:53 +00002142 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2143 yyval.a_expr->meta_type = AMT_TYPE;
2144 ;
2145 break;}
vlm7388db02005-03-31 21:48:13 +00002146case 99:
2147#line 1019 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002148{
2149 yyval.a_expr = asn1p_expr_new(yylineno);
2150 checkmem(yyval.a_expr);
2151 yyval.a_expr->Identifier = strdup("...");
2152 checkmem(yyval.a_expr->Identifier);
2153 yyval.a_expr->value = yyvsp[0].a_value;
2154 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2155 yyval.a_expr->meta_type = AMT_TYPE;
2156 ;
2157 break;}
vlm7388db02005-03-31 21:48:13 +00002158case 100:
2159#line 1028 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00002160{
2161 yyval.a_expr = asn1p_expr_new(yylineno);
2162 checkmem(yyval.a_expr);
2163 yyval.a_expr->Identifier = strdup("...");
vlm5f0128b2004-08-20 13:25:29 +00002164 yyval.a_expr->value = yyvsp[0].a_value;
2165 checkmem(yyval.a_expr->Identifier);
2166 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2167 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002168 ;
2169 break;}
vlm7388db02005-03-31 21:48:13 +00002170case 101:
2171#line 1040 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002172{
vlmec8f6812004-08-22 03:19:54 +00002173 yyval.a_expr = yyvsp[-1].a_expr;
vlmfce48a42004-09-14 02:36:39 +00002174 yyval.a_expr->tag = yyvsp[-2].a_tag;
vlmec8f6812004-08-22 03:19:54 +00002175 /*
2176 * Outer constraint for SEQUENCE OF and SET OF applies
2177 * to the inner type.
2178 */
2179 if(yyval.a_expr->expr_type == ASN_CONSTR_SEQUENCE_OF
2180 || yyval.a_expr->expr_type == ASN_CONSTR_SET_OF) {
2181 assert(!TQ_FIRST(&(yyval.a_expr->members))->constraints);
2182 TQ_FIRST(&(yyval.a_expr->members))->constraints = yyvsp[0].a_constr;
2183 } else {
2184 if(yyval.a_expr->constraints) {
vlmfce48a42004-09-14 02:36:39 +00002185 assert(!yyvsp[-1].a_expr);
vlmec8f6812004-08-22 03:19:54 +00002186 } else {
2187 yyval.a_expr->constraints = yyvsp[0].a_constr;
2188 }
2189 }
vlm6a02a8a2004-09-08 00:28:11 +00002190 ;
2191 break;}
vlm7388db02005-03-31 21:48:13 +00002192case 102:
2193#line 1062 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002194{
vlm5f0128b2004-08-20 13:25:29 +00002195 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002196 ;
2197 break;}
vlm7388db02005-03-31 21:48:13 +00002198case 103:
2199#line 1065 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002200{
vlm5e2c4b92005-03-20 11:12:40 +00002201 yyval.a_expr = yyvsp[-1].a_expr;
2202 assert(yyval.a_expr->expr_type == A1TC_INVALID);
2203 yyval.a_expr->expr_type = ASN_CONSTR_CHOICE;
vlmfa67ddc2004-06-03 03:38:44 +00002204 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002205 ;
2206 break;}
vlm7388db02005-03-31 21:48:13 +00002207case 104:
2208#line 1071 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002209{
vlmec8f6812004-08-22 03:19:54 +00002210 yyval.a_expr = yyvsp[-1].a_expr;
2211 assert(yyval.a_expr->expr_type == A1TC_INVALID);
vlm5e2c4b92005-03-20 11:12:40 +00002212 yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE;
vlmec8f6812004-08-22 03:19:54 +00002213 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002214 ;
2215 break;}
vlm7388db02005-03-31 21:48:13 +00002216case 105:
2217#line 1077 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002218{
vlmec8f6812004-08-22 03:19:54 +00002219 yyval.a_expr = yyvsp[-1].a_expr;
2220 assert(yyval.a_expr->expr_type == A1TC_INVALID);
vlm5e2c4b92005-03-20 11:12:40 +00002221 yyval.a_expr->expr_type = ASN_CONSTR_SET;
vlmec8f6812004-08-22 03:19:54 +00002222 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002223 ;
2224 break;}
vlm7388db02005-03-31 21:48:13 +00002225case 106:
2226#line 1083 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002227{
vlm39e5ed72004-09-05 10:40:41 +00002228 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002229 checkmem(yyval.a_expr);
vlm151c0b22004-09-22 16:03:36 +00002230 yyval.a_expr->constraints = yyvsp[-4].a_constr;
vlmec8f6812004-08-22 03:19:54 +00002231 yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE_OF;
2232 yyval.a_expr->meta_type = AMT_TYPE;
vlm151c0b22004-09-22 16:03:36 +00002233 yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
vlma2374a02004-09-14 02:44:07 +00002234 yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
vlm6a02a8a2004-09-08 00:28:11 +00002235 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2236 ;
2237 break;}
vlm7388db02005-03-31 21:48:13 +00002238case 107:
2239#line 1093 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002240{
vlm39e5ed72004-09-05 10:40:41 +00002241 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002242 checkmem(yyval.a_expr);
vlm151c0b22004-09-22 16:03:36 +00002243 yyval.a_expr->constraints = yyvsp[-4].a_constr;
vlmec8f6812004-08-22 03:19:54 +00002244 yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
2245 yyval.a_expr->meta_type = AMT_TYPE;
vlm151c0b22004-09-22 16:03:36 +00002246 yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
vlma2374a02004-09-14 02:44:07 +00002247 yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
vlm6a02a8a2004-09-08 00:28:11 +00002248 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2249 ;
2250 break;}
vlm7388db02005-03-31 21:48:13 +00002251case 108:
2252#line 1103 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002253{
vlm39e5ed72004-09-05 10:40:41 +00002254 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002255 checkmem(yyval.a_expr);
vlm044f7442004-09-04 04:49:21 +00002256 yyval.a_expr->expr_type = ASN_TYPE_ANY;
vlmec8f6812004-08-22 03:19:54 +00002257 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002258 ;
2259 break;}
vlm7388db02005-03-31 21:48:13 +00002260case 109:
2261#line 1109 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002262{
vlmec8f6812004-08-22 03:19:54 +00002263 int ret;
vlm39e5ed72004-09-05 10:40:41 +00002264 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002265 checkmem(yyval.a_expr);
2266 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2267 ret = asn1p_ref_add_component(yyval.a_expr->reference,
2268 yyvsp[0].tv_str, RLT_lowercase);
2269 checkmem(ret == 0);
vlm044f7442004-09-04 04:49:21 +00002270 yyval.a_expr->expr_type = ASN_TYPE_ANY;
vlmec8f6812004-08-22 03:19:54 +00002271 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002272 ;
2273 break;}
vlm7388db02005-03-31 21:48:13 +00002274case 110:
2275#line 1123 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002276{
vlmfa67ddc2004-06-03 03:38:44 +00002277 int ret;
2278 yyval.a_expr = yyvsp[-1].a_expr;
2279 assert(yyval.a_expr->expr_type == 0);
2280 assert(yyval.a_expr->meta_type == 0);
2281 assert(yyval.a_expr->reference == 0);
2282 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2283 checkmem(yyval.a_expr->reference);
2284 ret = asn1p_ref_add_component(yyval.a_expr->reference, yyvsp[-3].tv_str, RLT_UNKNOWN);
2285 checkmem(ret == 0);
2286 free(yyvsp[-3].tv_str);
2287 yyval.a_expr->expr_type = A1TC_PARAMETRIZED;
2288 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002289 ;
2290 break;}
vlm7388db02005-03-31 21:48:13 +00002291case 111:
2292#line 1147 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002293{
vlmfa67ddc2004-06-03 03:38:44 +00002294 yyval.a_expr = asn1p_expr_new(yylineno);
2295 checkmem(yyval.a_expr);
2296 yyval.a_expr->reference = yyvsp[0].a_ref;
2297 yyval.a_expr->expr_type = A1TC_REFERENCE;
2298 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm6a02a8a2004-09-08 00:28:11 +00002299 ;
2300 break;}
vlm7388db02005-03-31 21:48:13 +00002301case 112:
2302#line 1154 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002303{
vlmfa67ddc2004-06-03 03:38:44 +00002304 yyval.a_expr = asn1p_expr_new(yylineno);
2305 checkmem(yyval.a_expr);
2306 yyval.a_expr->reference = yyvsp[0].a_ref;
2307 yyval.a_expr->expr_type = A1TC_INSTANCE;
2308 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002309 ;
2310 break;}
vlm7388db02005-03-31 21:48:13 +00002311case 113:
2312#line 1169 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002313{
vlmfa67ddc2004-06-03 03:38:44 +00002314 int ret;
2315 yyval.a_ref = asn1p_ref_new(yylineno);
2316 checkmem(yyval.a_ref);
2317 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
2318 checkmem(ret == 0);
2319 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002320 ;
2321 break;}
vlm7388db02005-03-31 21:48:13 +00002322case 114:
2323#line 1177 "asn1p_y.y"
vlm5e2c4b92005-03-20 11:12:40 +00002324{
2325 int ret;
2326 yyval.a_ref = asn1p_ref_new(yylineno);
2327 checkmem(yyval.a_ref);
2328 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2329 checkmem(ret == 0);
2330 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
2331 checkmem(ret == 0);
2332 free(yyvsp[-2].tv_str);
2333 ;
2334 break;}
vlm7388db02005-03-31 21:48:13 +00002335case 115:
2336#line 1187 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002337{
vlmfa67ddc2004-06-03 03:38:44 +00002338 int ret;
2339 yyval.a_ref = asn1p_ref_new(yylineno);
2340 checkmem(yyval.a_ref);
2341 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2342 checkmem(ret == 0);
vlmc94e28f2004-09-15 11:59:51 +00002343 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
vlmfa67ddc2004-06-03 03:38:44 +00002344 checkmem(ret == 0);
2345 free(yyvsp[-2].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002346 ;
2347 break;}
vlm7388db02005-03-31 21:48:13 +00002348case 116:
2349#line 1197 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002350{
vlmfa67ddc2004-06-03 03:38:44 +00002351 int ret;
2352 yyval.a_ref = asn1p_ref_new(yylineno);
2353 checkmem(yyval.a_ref);
vlmc94e28f2004-09-15 11:59:51 +00002354 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2355 checkmem(ret == 0);
2356 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
2357 checkmem(ret == 0);
2358 free(yyvsp[-2].tv_str);
2359 ;
2360 break;}
vlm7388db02005-03-31 21:48:13 +00002361case 117:
2362#line 1207 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002363{
2364 int ret;
2365 yyval.a_ref = asn1p_ref_new(yylineno);
2366 checkmem(yyval.a_ref);
vlmfa67ddc2004-06-03 03:38:44 +00002367 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
2368 free(yyvsp[0].tv_str);
2369 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002370 ;
2371 break;}
vlm7388db02005-03-31 21:48:13 +00002372case 118:
2373#line 1215 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002374{
vlmfa67ddc2004-06-03 03:38:44 +00002375 int ret;
2376 yyval.a_ref = yyvsp[0].a_ref;
2377 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_CAPITALS);
2378 free(yyvsp[-2].tv_str);
2379 checkmem(ret == 0);
2380 /*
2381 * Move the last element infront.
2382 */
2383 {
2384 struct asn1p_ref_component_s tmp_comp;
2385 tmp_comp = yyval.a_ref->components[yyval.a_ref->comp_count-1];
2386 memmove(&yyval.a_ref->components[1],
2387 &yyval.a_ref->components[0],
2388 sizeof(yyval.a_ref->components[0])
2389 * (yyval.a_ref->comp_count - 1));
2390 yyval.a_ref->components[0] = tmp_comp;
2391 }
vlm6a02a8a2004-09-08 00:28:11 +00002392 ;
2393 break;}
vlm7388db02005-03-31 21:48:13 +00002394case 119:
2395#line 1237 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002396{
vlmfa67ddc2004-06-03 03:38:44 +00002397 int ret;
2398 yyval.a_ref = asn1p_ref_new(yylineno);
2399 checkmem(yyval.a_ref);
2400 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2401 free(yyvsp[0].a_refcomp.name);
2402 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002403 ;
2404 break;}
vlm7388db02005-03-31 21:48:13 +00002405case 120:
2406#line 1245 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002407{
vlmfa67ddc2004-06-03 03:38:44 +00002408 int ret;
2409 yyval.a_ref = yyvsp[-2].a_ref;
2410 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2411 free(yyvsp[0].a_refcomp.name);
2412 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002413 ;
2414 break;}
vlm7388db02005-03-31 21:48:13 +00002415case 123:
2416#line 1259 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002417{
vlmfa67ddc2004-06-03 03:38:44 +00002418 yyval.a_refcomp.lex_type = RLT_AmpUppercase;
2419 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00002420 ;
2421 break;}
vlm7388db02005-03-31 21:48:13 +00002422case 124:
2423#line 1264 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002424{
vlmfa67ddc2004-06-03 03:38:44 +00002425 yyval.a_refcomp.lex_type = RLT_Amplowercase;
2426 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00002427 ;
2428 break;}
vlm7388db02005-03-31 21:48:13 +00002429case 125:
2430#line 1277 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002431{
vlmfa67ddc2004-06-03 03:38:44 +00002432 yyval.a_expr = yyvsp[-2].a_expr;
2433 assert(yyval.a_expr->Identifier == NULL);
2434 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
2435 yyval.a_expr->meta_type = AMT_VALUE;
2436 yyval.a_expr->value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00002437 ;
2438 break;}
vlm7388db02005-03-31 21:48:13 +00002439case 126:
2440#line 1287 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002441{
2442 yyval.a_value = asn1p_value_fromint(0);
2443 checkmem(yyval.a_value);
2444 yyval.a_value->type = ATV_CHOICE_IDENTIFIER;
2445 yyval.a_value->value.choice_identifier.identifier = yyvsp[-2].tv_str;
2446 yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
2447 ;
2448 break;}
vlm7388db02005-03-31 21:48:13 +00002449case 127:
2450#line 1294 "asn1p_y.y"
vlmd30bc6c2005-03-24 16:27:02 +00002451{ asn1p_lexer_hack_push_opaque_state(); ;
vlm6a02a8a2004-09-08 00:28:11 +00002452 break;}
vlm7388db02005-03-31 21:48:13 +00002453case 128:
2454#line 1294 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002455{
vlmfa67ddc2004-06-03 03:38:44 +00002456 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2457 checkmem(yyval.a_value);
2458 yyval.a_value->type = ATV_UNPARSED;
vlm6a02a8a2004-09-08 00:28:11 +00002459 ;
2460 break;}
vlm7388db02005-03-31 21:48:13 +00002461case 129:
2462#line 1299 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002463{
2464 yyval.a_value = asn1p_value_fromint(0);
2465 checkmem(yyval.a_value);
2466 yyval.a_value->type = ATV_NULL;
2467 ;
2468 break;}
vlm7388db02005-03-31 21:48:13 +00002469case 130:
2470#line 1304 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002471{
2472 yyval.a_value = asn1p_value_fromint(0);
2473 checkmem(yyval.a_value);
2474 yyval.a_value->type = ATV_FALSE;
2475 ;
2476 break;}
vlm7388db02005-03-31 21:48:13 +00002477case 131:
2478#line 1309 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002479{
2480 yyval.a_value = asn1p_value_fromint(0);
2481 checkmem(yyval.a_value);
2482 yyval.a_value->type = ATV_TRUE;
2483 ;
2484 break;}
vlm7388db02005-03-31 21:48:13 +00002485case 132:
2486#line 1314 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002487{
vlmfa67ddc2004-06-03 03:38:44 +00002488 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
2489 checkmem(yyval.a_value);
vlm6a02a8a2004-09-08 00:28:11 +00002490 ;
2491 break;}
vlm7388db02005-03-31 21:48:13 +00002492case 133:
2493#line 1318 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002494{
vlmfa67ddc2004-06-03 03:38:44 +00002495 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
2496 checkmem(yyval.a_value);
vlm6a02a8a2004-09-08 00:28:11 +00002497 ;
2498 break;}
vlm7388db02005-03-31 21:48:13 +00002499case 134:
2500#line 1322 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002501{
vlme1e6ed82005-03-24 14:26:38 +00002502 yyval.a_value = yyval.a_value;
vlm6a02a8a2004-09-08 00:28:11 +00002503 ;
2504 break;}
vlm7388db02005-03-31 21:48:13 +00002505case 135:
2506#line 1325 "asn1p_y.y"
vlm5e2c4b92005-03-20 11:12:40 +00002507{
2508 yyval.a_value = yyvsp[0].a_value;
2509 ;
2510 break;}
vlm7388db02005-03-31 21:48:13 +00002511case 136:
2512#line 1328 "asn1p_y.y"
vlm151c0b22004-09-22 16:03:36 +00002513{
2514 yyval.a_value = yyvsp[0].a_value;
2515 ;
2516 break;}
vlm7388db02005-03-31 21:48:13 +00002517case 137:
2518#line 1334 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002519{
vlmfa67ddc2004-06-03 03:38:44 +00002520 asn1p_ref_t *ref;
2521 int ret;
2522 ref = asn1p_ref_new(yylineno);
2523 checkmem(ref);
2524 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
2525 checkmem(ret == 0);
2526 yyval.a_value = asn1p_value_fromref(ref, 0);
2527 checkmem(yyval.a_value);
2528 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002529 ;
2530 break;}
vlm7388db02005-03-31 21:48:13 +00002531case 138:
2532#line 1345 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002533{
vlmfa67ddc2004-06-03 03:38:44 +00002534 asn1p_ref_t *ref;
2535 int ret;
2536 ref = asn1p_ref_new(yylineno);
2537 checkmem(ref);
2538 ret = asn1p_ref_add_component(ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2539 checkmem(ret == 0);
2540 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
2541 checkmem(ret == 0);
2542 yyval.a_value = asn1p_value_fromref(ref, 0);
2543 checkmem(yyval.a_value);
2544 free(yyvsp[-2].tv_str);
2545 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002546 ;
2547 break;}
vlm7388db02005-03-31 21:48:13 +00002548case 139:
2549#line 1363 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002550{
2551 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2552 checkmem(yyval.a_value);
2553 ;
2554 break;}
vlm7388db02005-03-31 21:48:13 +00002555case 140:
2556#line 1367 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002557{
vlm2c8c44d2005-03-24 16:22:35 +00002558 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
vlme1e6ed82005-03-24 14:26:38 +00002559 checkmem(yyval.a_value);
2560 yyval.a_value->type = ATV_TUPLE;
2561 ;
2562 break;}
vlm7388db02005-03-31 21:48:13 +00002563case 141:
2564#line 1372 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002565{
vlm2c8c44d2005-03-24 16:22:35 +00002566 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
vlme1e6ed82005-03-24 14:26:38 +00002567 checkmem(yyval.a_value);
2568 yyval.a_value->type = ATV_QUADRUPLE;
2569 ;
2570 break;}
vlm7388db02005-03-31 21:48:13 +00002571case 142:
2572#line 1406 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002573{
vlm6611add2005-03-20 14:28:32 +00002574 yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
vlmfa67ddc2004-06-03 03:38:44 +00002575 yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
2576 checkmem(yyval.tv_opaque.buf);
2577 yyval.tv_opaque.buf[0] = '{';
vlm6611add2005-03-20 14:28:32 +00002578 memcpy(yyval.tv_opaque.buf + 1, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
vlmfa67ddc2004-06-03 03:38:44 +00002579 yyval.tv_opaque.buf[yyval.tv_opaque.len] = '\0';
2580 free(yyvsp[0].tv_opaque.buf);
vlm6a02a8a2004-09-08 00:28:11 +00002581 ;
2582 break;}
vlm7388db02005-03-31 21:48:13 +00002583case 143:
2584#line 1415 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002585{
vlmfa67ddc2004-06-03 03:38:44 +00002586 int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
2587 char *p = malloc(newsize + 1);
2588 checkmem(p);
2589 memcpy(p , yyvsp[-1].tv_opaque.buf, yyvsp[-1].tv_opaque.len);
2590 memcpy(p + yyvsp[-1].tv_opaque.len, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
2591 p[newsize] = '\0';
2592 free(yyvsp[-1].tv_opaque.buf);
2593 free(yyvsp[0].tv_opaque.buf);
2594 yyval.tv_opaque.buf = p;
2595 yyval.tv_opaque.len = newsize;
vlm6a02a8a2004-09-08 00:28:11 +00002596 ;
2597 break;}
vlm7388db02005-03-31 21:48:13 +00002598case 144:
2599#line 1430 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002600{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
2601 break;}
vlm7388db02005-03-31 21:48:13 +00002602case 145:
2603#line 1431 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002604{ yyval.a_type = ASN_BASIC_NULL; ;
2605 break;}
vlm7388db02005-03-31 21:48:13 +00002606case 146:
2607#line 1432 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002608{ yyval.a_type = ASN_BASIC_REAL; ;
2609 break;}
vlm7388db02005-03-31 21:48:13 +00002610case 147:
2611#line 1433 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002612{ yyval.a_type = yyvsp[0].a_type; ;
vlm6a02a8a2004-09-08 00:28:11 +00002613 break;}
vlm7388db02005-03-31 21:48:13 +00002614case 148:
2615#line 1434 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002616{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
vlm6a02a8a2004-09-08 00:28:11 +00002617 break;}
vlm7388db02005-03-31 21:48:13 +00002618case 149:
2619#line 1435 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002620{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
vlm6a02a8a2004-09-08 00:28:11 +00002621 break;}
vlm7388db02005-03-31 21:48:13 +00002622case 150:
2623#line 1436 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002624{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
vlm6a02a8a2004-09-08 00:28:11 +00002625 break;}
vlm7388db02005-03-31 21:48:13 +00002626case 151:
2627#line 1437 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002628{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
vlm6a02a8a2004-09-08 00:28:11 +00002629 break;}
vlm7388db02005-03-31 21:48:13 +00002630case 152:
2631#line 1438 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002632{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
vlm6a02a8a2004-09-08 00:28:11 +00002633 break;}
vlm7388db02005-03-31 21:48:13 +00002634case 153:
2635#line 1439 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002636{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
vlm5e2c4b92005-03-20 11:12:40 +00002637 break;}
vlm7388db02005-03-31 21:48:13 +00002638case 154:
2639#line 1440 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002640{ yyval.a_type = ASN_BASIC_UTCTime; ;
vlm6a02a8a2004-09-08 00:28:11 +00002641 break;}
vlm7388db02005-03-31 21:48:13 +00002642case 155:
2643#line 1441 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002644{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
vlm6a02a8a2004-09-08 00:28:11 +00002645 break;}
vlm7388db02005-03-31 21:48:13 +00002646case 156:
2647#line 1442 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002648{ yyval.a_type = yyvsp[0].a_type; ;
vlm6a02a8a2004-09-08 00:28:11 +00002649 break;}
vlm7388db02005-03-31 21:48:13 +00002650case 157:
2651#line 1449 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002652{ yyval.a_type = ASN_BASIC_INTEGER; ;
2653 break;}
vlm7388db02005-03-31 21:48:13 +00002654case 158:
2655#line 1450 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002656{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
2657 break;}
vlm7388db02005-03-31 21:48:13 +00002658case 159:
2659#line 1451 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002660{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
2661 break;}
vlm7388db02005-03-31 21:48:13 +00002662case 160:
2663#line 1455 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002664{
vlm39e5ed72004-09-05 10:40:41 +00002665 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00002666 checkmem(yyval.a_expr);
2667 yyval.a_expr->expr_type = yyvsp[0].a_type;
2668 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002669 ;
2670 break;}
vlm7388db02005-03-31 21:48:13 +00002671case 161:
2672#line 1461 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002673{
vlmfa67ddc2004-06-03 03:38:44 +00002674 if(yyvsp[0].a_expr) {
2675 yyval.a_expr = yyvsp[0].a_expr;
2676 } else {
vlm39e5ed72004-09-05 10:40:41 +00002677 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00002678 checkmem(yyval.a_expr);
2679 }
2680 yyval.a_expr->expr_type = yyvsp[-1].a_type;
2681 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002682 ;
2683 break;}
vlm7388db02005-03-31 21:48:13 +00002684case 162:
2685#line 1474 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002686{ yyval.a_type = ASN_STRING_BMPString; ;
2687 break;}
vlm7388db02005-03-31 21:48:13 +00002688case 163:
2689#line 1475 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002690{
vlmfa67ddc2004-06-03 03:38:44 +00002691 yyval.a_type = ASN_STRING_GeneralString;
vlmc94e28f2004-09-15 11:59:51 +00002692 fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
vlm6a02a8a2004-09-08 00:28:11 +00002693 ;
2694 break;}
vlm7388db02005-03-31 21:48:13 +00002695case 164:
2696#line 1479 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002697{
vlmc94e28f2004-09-15 11:59:51 +00002698 yyval.a_type = ASN_STRING_GraphicString;
2699 fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
vlm6a02a8a2004-09-08 00:28:11 +00002700 ;
2701 break;}
vlm7388db02005-03-31 21:48:13 +00002702case 165:
2703#line 1483 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002704{ yyval.a_type = ASN_STRING_IA5String; ;
vlm6a02a8a2004-09-08 00:28:11 +00002705 break;}
vlm7388db02005-03-31 21:48:13 +00002706case 166:
2707#line 1484 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002708{ yyval.a_type = ASN_STRING_ISO646String; ;
vlm6a02a8a2004-09-08 00:28:11 +00002709 break;}
vlm7388db02005-03-31 21:48:13 +00002710case 167:
2711#line 1485 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002712{ yyval.a_type = ASN_STRING_NumericString; ;
vlm6a02a8a2004-09-08 00:28:11 +00002713 break;}
vlm7388db02005-03-31 21:48:13 +00002714case 168:
2715#line 1486 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002716{ yyval.a_type = ASN_STRING_PrintableString; ;
vlm6a02a8a2004-09-08 00:28:11 +00002717 break;}
vlm7388db02005-03-31 21:48:13 +00002718case 169:
2719#line 1487 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002720{
2721 yyval.a_type = ASN_STRING_T61String;
2722 fprintf(stderr, "WARNING: T61String is not fully supported\n");
2723 ;
vlm6a02a8a2004-09-08 00:28:11 +00002724 break;}
vlm7388db02005-03-31 21:48:13 +00002725case 170:
2726#line 1491 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002727{ yyval.a_type = ASN_STRING_TeletexString; ;
2728 break;}
vlm7388db02005-03-31 21:48:13 +00002729case 171:
2730#line 1492 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002731{ yyval.a_type = ASN_STRING_UniversalString; ;
2732 break;}
vlm7388db02005-03-31 21:48:13 +00002733case 172:
2734#line 1493 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002735{ yyval.a_type = ASN_STRING_UTF8String; ;
2736 break;}
vlm7388db02005-03-31 21:48:13 +00002737case 173:
2738#line 1494 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002739{
2740 yyval.a_type = ASN_STRING_VideotexString;
2741 fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
2742 ;
2743 break;}
vlm7388db02005-03-31 21:48:13 +00002744case 174:
2745#line 1498 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002746{ yyval.a_type = ASN_STRING_VisibleString; ;
2747 break;}
vlm7388db02005-03-31 21:48:13 +00002748case 175:
2749#line 1499 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002750{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
2751 break;}
vlm7388db02005-03-31 21:48:13 +00002752case 181:
2753#line 1511 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002754{ yyval.a_constr = 0; ;
2755 break;}
vlm7388db02005-03-31 21:48:13 +00002756case 182:
2757#line 1512 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002758{
vlm39e5ed72004-09-05 10:40:41 +00002759 yyval.a_constr = yyvsp[0].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00002760 ;
2761 break;}
vlm7388db02005-03-31 21:48:13 +00002762case 183:
2763#line 1518 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002764{
vlm39e5ed72004-09-05 10:40:41 +00002765 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
vlm6a02a8a2004-09-08 00:28:11 +00002766 ;
2767 break;}
vlm7388db02005-03-31 21:48:13 +00002768case 184:
2769#line 1521 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002770{
vlmfa67ddc2004-06-03 03:38:44 +00002771 /*
2772 * This is a special case, for compatibility purposes.
vlm9283dbe2004-08-18 04:59:12 +00002773 * It goes without parentheses.
vlmfa67ddc2004-06-03 03:38:44 +00002774 */
vlm5f0128b2004-08-20 13:25:29 +00002775 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
vlm6a02a8a2004-09-08 00:28:11 +00002776 ;
2777 break;}
vlm7388db02005-03-31 21:48:13 +00002778case 185:
2779#line 1531 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002780{
vlmfa67ddc2004-06-03 03:38:44 +00002781 yyval.a_constr = yyvsp[-1].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00002782 ;
2783 break;}
vlm7388db02005-03-31 21:48:13 +00002784case 186:
2785#line 1534 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002786{
vlm9283dbe2004-08-18 04:59:12 +00002787 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002788 ;
2789 break;}
vlm7388db02005-03-31 21:48:13 +00002790case 187:
2791#line 1540 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002792{
vlmfa67ddc2004-06-03 03:38:44 +00002793 yyval.a_constr = yyvsp[0].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00002794 ;
2795 break;}
vlm7388db02005-03-31 21:48:13 +00002796case 188:
2797#line 1543 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002798{
vlmfa67ddc2004-06-03 03:38:44 +00002799 asn1p_constraint_t *ct;
2800 ct = asn1p_constraint_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00002801 ct->type = ACT_EL_EXT;
2802 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm6a02a8a2004-09-08 00:28:11 +00002803 ;
2804 break;}
vlm7388db02005-03-31 21:48:13 +00002805case 189:
2806#line 1549 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002807{
vlmfa67ddc2004-06-03 03:38:44 +00002808 asn1p_constraint_t *ct;
2809 ct = asn1p_constraint_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00002810 ct->type = ACT_EL_EXT;
2811 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-4].a_constr, ct);
vlm6f5eb0b2004-08-13 12:35:09 +00002812 ct = yyval.a_constr;
2813 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002814 ;
2815 break;}
vlm7388db02005-03-31 21:48:13 +00002816case 190:
2817#line 1560 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002818{
vlm9283dbe2004-08-18 04:59:12 +00002819 yyval.a_constr = yyvsp[0].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00002820 ;
2821 break;}
vlm7388db02005-03-31 21:48:13 +00002822case 191:
2823#line 1563 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00002824{
2825 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
2826 ;
2827 break;}
vlm7388db02005-03-31 21:48:13 +00002828case 192:
2829#line 1566 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002830{
vlmfa67ddc2004-06-03 03:38:44 +00002831 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002832 ;
2833 break;}
vlm7388db02005-03-31 21:48:13 +00002834case 193:
2835#line 1569 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002836{
vlmfa67ddc2004-06-03 03:38:44 +00002837 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002838 ;
2839 break;}
vlm7388db02005-03-31 21:48:13 +00002840case 194:
2841#line 1572 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002842{
vlmfa67ddc2004-06-03 03:38:44 +00002843 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002844 ;
2845 break;}
vlm7388db02005-03-31 21:48:13 +00002846case 195:
2847#line 1578 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002848{
vlmfa67ddc2004-06-03 03:38:44 +00002849 int ret;
2850 yyval.a_constr = asn1p_constraint_new(yylineno);
2851 checkmem(yyval.a_constr);
2852 yyval.a_constr->type = yyvsp[-3].a_ctype;
2853 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
2854 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002855 ;
2856 break;}
vlm7388db02005-03-31 21:48:13 +00002857case 196:
2858#line 1586 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002859{
vlm9283dbe2004-08-18 04:59:12 +00002860 int ret;
2861 yyval.a_constr = asn1p_constraint_new(yylineno);
2862 checkmem(yyval.a_constr);
2863 yyval.a_constr->type = ACT_CA_SET;
2864 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
2865 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002866 ;
2867 break;}
vlm7388db02005-03-31 21:48:13 +00002868case 197:
2869#line 1594 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002870{
vlm9283dbe2004-08-18 04:59:12 +00002871 yyval.a_constr = asn1p_constraint_new(yylineno);
2872 checkmem(yyval.a_constr);
2873 yyval.a_constr->type = ACT_EL_VALUE;
2874 yyval.a_constr->value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00002875 ;
2876 break;}
vlm7388db02005-03-31 21:48:13 +00002877case 198:
2878#line 1600 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002879{
vlm0aa86902004-10-12 23:26:53 +00002880 yyval.a_constr = asn1p_constraint_new(yylineno);
2881 checkmem(yyval.a_constr);
vlma6a12e32005-03-20 12:58:00 +00002882 yyval.a_constr->type = ACT_EL_TYPE;
2883 yyval.a_constr->containedSubtype = yyvsp[0].a_value;
vlmc94e28f2004-09-15 11:59:51 +00002884 ;
2885 break;}
vlm7388db02005-03-31 21:48:13 +00002886case 199:
2887#line 1606 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002888{
vlme1e6ed82005-03-24 14:26:38 +00002889 yyval.a_constr = asn1p_constraint_new(yylineno);
2890 checkmem(yyval.a_constr);
2891 yyval.a_constr->type = yyvsp[-1].a_ctype;
2892 yyval.a_constr->range_start = yyvsp[-2].a_value;
2893 yyval.a_constr->range_stop = yyvsp[0].a_value;
vlm4053ca52005-02-18 16:34:21 +00002894 ;
vlm0aa86902004-10-12 23:26:53 +00002895 break;}
vlm7388db02005-03-31 21:48:13 +00002896case 200:
2897#line 1613 "asn1p_y.y"
2898{
2899 yyval.a_constr = asn1p_constraint_new(yylineno);
2900 checkmem(yyval.a_constr);
2901 yyval.a_constr->type = yyvsp[-1].a_ctype;
2902 yyval.a_constr->range_start = asn1p_value_fromint(-123);
2903 yyval.a_constr->range_stop = yyvsp[0].a_value;
2904 yyval.a_constr->range_start->type = ATV_MIN;
2905 ;
2906 break;}
2907case 201:
2908#line 1621 "asn1p_y.y"
2909{
2910 yyval.a_constr = asn1p_constraint_new(yylineno);
2911 checkmem(yyval.a_constr);
2912 yyval.a_constr->type = yyvsp[-1].a_ctype;
2913 yyval.a_constr->range_start = yyvsp[-2].a_value;
2914 yyval.a_constr->range_stop = asn1p_value_fromint(321);
2915 yyval.a_constr->range_stop->type = ATV_MAX;
2916 ;
2917 break;}
2918case 202:
2919#line 1629 "asn1p_y.y"
2920{
2921 yyval.a_constr = asn1p_constraint_new(yylineno);
2922 checkmem(yyval.a_constr);
2923 yyval.a_constr->type = yyvsp[-1].a_ctype;
2924 yyval.a_constr->range_start = asn1p_value_fromint(-123);
2925 yyval.a_constr->range_stop = asn1p_value_fromint(321);
2926 yyval.a_constr->range_start->type = ATV_MIN;
2927 yyval.a_constr->range_stop->type = ATV_MAX;
2928 ;
2929 break;}
2930case 203:
2931#line 1638 "asn1p_y.y"
2932{
2933 yyval.a_constr = yyvsp[0].a_constr;
2934 ;
2935 break;}
2936case 204:
2937#line 1641 "asn1p_y.y"
2938{
2939 yyval.a_constr = yyvsp[0].a_constr;
2940 ;
2941 break;}
vlm0aa86902004-10-12 23:26:53 +00002942case 205:
vlm7388db02005-03-31 21:48:13 +00002943#line 1645 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00002944{ asn1p_lexer_hack_push_opaque_state(); ;
vlm0aa86902004-10-12 23:26:53 +00002945 break;}
vlm7388db02005-03-31 21:48:13 +00002946case 206:
2947#line 1645 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00002948{
2949 yyval.a_constr = asn1p_constraint_new(yylineno);
2950 checkmem(yyval.a_constr);
2951 yyval.a_constr->type = ACT_CT_CTDBY;
2952 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2953 checkmem(yyval.a_constr->value);
2954 yyval.a_constr->value->type = ATV_UNPARSED;
2955 ;
vlm0aa86902004-10-12 23:26:53 +00002956 break;}
vlm7388db02005-03-31 21:48:13 +00002957case 207:
2958#line 1656 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00002959{ yyval.a_ctype = ACT_EL_RANGE; ;
vlm4053ca52005-02-18 16:34:21 +00002960 break;}
vlm7388db02005-03-31 21:48:13 +00002961case 208:
2962#line 1657 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00002963{ yyval.a_ctype = ACT_EL_RLRANGE; ;
vlma6a12e32005-03-20 12:58:00 +00002964 break;}
vlm7388db02005-03-31 21:48:13 +00002965case 209:
2966#line 1658 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00002967{ yyval.a_ctype = ACT_EL_LLRANGE; ;
2968 break;}
vlm7388db02005-03-31 21:48:13 +00002969case 210:
2970#line 1659 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00002971{ yyval.a_ctype = ACT_EL_ULRANGE; ;
2972 break;}
vlm7388db02005-03-31 21:48:13 +00002973case 211:
2974#line 1663 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002975{
vlm39e5ed72004-09-05 10:40:41 +00002976 yyval.a_ctype = ACT_CT_SIZE;
vlm6a02a8a2004-09-08 00:28:11 +00002977 ;
2978 break;}
vlm7388db02005-03-31 21:48:13 +00002979case 212:
2980#line 1666 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002981{
vlm39e5ed72004-09-05 10:40:41 +00002982 yyval.a_ctype = ACT_CT_FROM;
vlm6a02a8a2004-09-08 00:28:11 +00002983 ;
2984 break;}
vlm7388db02005-03-31 21:48:13 +00002985case 213:
2986#line 1672 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002987{
2988 yyval.a_value = asn1p_value_fromint(0);
2989 checkmem(yyval.a_value);
2990 yyval.a_value->type = ATV_FALSE;
2991 ;
2992 break;}
vlm7388db02005-03-31 21:48:13 +00002993case 214:
2994#line 1677 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002995{
2996 yyval.a_value = asn1p_value_fromint(1);
2997 checkmem(yyval.a_value);
2998 yyval.a_value->type = ATV_TRUE;
2999 ;
3000 break;}
vlm7388db02005-03-31 21:48:13 +00003001case 215:
3002#line 1682 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003003{
vlmfa67ddc2004-06-03 03:38:44 +00003004 yyval.a_value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00003005 ;
3006 break;}
vlm7388db02005-03-31 21:48:13 +00003007case 216:
3008#line 1685 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00003009{
vlme1e6ed82005-03-24 14:26:38 +00003010 yyval.a_value = yyvsp[0].a_value;
vlm4053ca52005-02-18 16:34:21 +00003011 ;
3012 break;}
vlm7388db02005-03-31 21:48:13 +00003013case 217:
3014#line 1688 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003015{
vlmfa67ddc2004-06-03 03:38:44 +00003016 asn1p_ref_t *ref;
3017 int ret;
3018 ref = asn1p_ref_new(yylineno);
3019 checkmem(ref);
3020 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
3021 checkmem(ret == 0);
3022 yyval.a_value = asn1p_value_fromref(ref, 0);
3023 checkmem(yyval.a_value);
3024 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003025 ;
3026 break;}
vlm7388db02005-03-31 21:48:13 +00003027case 218:
3028#line 1702 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003029{
vlm4053ca52005-02-18 16:34:21 +00003030 asn1p_ref_t *ref;
3031 int ret;
3032 ref = asn1p_ref_new(yylineno);
3033 checkmem(ref);
3034 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_UNKNOWN);
3035 checkmem(ret == 0);
3036 yyval.a_value = asn1p_value_fromref(ref, 0);
vlmfa67ddc2004-06-03 03:38:44 +00003037 checkmem(yyval.a_value);
vlm4053ca52005-02-18 16:34:21 +00003038 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003039 ;
3040 break;}
vlm7388db02005-03-31 21:48:13 +00003041case 219:
3042#line 1716 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003043{
vlm7bbdc9f2005-03-28 15:01:27 +00003044 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003045 ;
3046 break;}
vlm7388db02005-03-31 21:48:13 +00003047case 220:
3048#line 1719 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003049{
vlm7bbdc9f2005-03-28 15:01:27 +00003050 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003051 ;
3052 break;}
vlm7388db02005-03-31 21:48:13 +00003053case 221:
3054#line 1725 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003055{
vlm7bbdc9f2005-03-28 15:01:27 +00003056 yyval.a_constr = yyvsp[0].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00003057 ;
3058 break;}
vlm7388db02005-03-31 21:48:13 +00003059case 222:
3060#line 1728 "asn1p_y.y"
vlm7bbdc9f2005-03-28 15:01:27 +00003061{
3062 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
3063 ;
3064 break;}
vlm7388db02005-03-31 21:48:13 +00003065case 223:
3066#line 1734 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003067{
vlmfa67ddc2004-06-03 03:38:44 +00003068 yyval.a_constr = asn1p_constraint_new(yylineno);
3069 checkmem(yyval.a_constr);
3070 yyval.a_constr->type = ACT_EL_EXT;
vlm7bbdc9f2005-03-28 15:01:27 +00003071 yyval.a_constr->value = asn1p_value_frombuf("...", 3, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003072 ;
3073 break;}
vlm7388db02005-03-31 21:48:13 +00003074case 224:
3075#line 1740 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003076{
vlmfa67ddc2004-06-03 03:38:44 +00003077 yyval.a_constr = asn1p_constraint_new(yylineno);
3078 checkmem(yyval.a_constr);
3079 yyval.a_constr->type = ACT_EL_VALUE;
3080 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[-2].tv_str, strlen(yyvsp[-2].tv_str), 0);
3081 yyval.a_constr->presence = yyvsp[0].a_pres;
vlm7bbdc9f2005-03-28 15:01:27 +00003082 if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00003083 ;
3084 break;}
vlm7388db02005-03-31 21:48:13 +00003085case 225:
3086#line 1754 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003087{ yyval.a_pres = ACPRES_DEFAULT; ;
3088 break;}
vlm7388db02005-03-31 21:48:13 +00003089case 226:
3090#line 1755 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003091{ yyval.a_pres = yyvsp[0].a_pres; ;
3092 break;}
vlm7388db02005-03-31 21:48:13 +00003093case 227:
3094#line 1759 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003095{
vlmfa67ddc2004-06-03 03:38:44 +00003096 yyval.a_pres = ACPRES_PRESENT;
vlm6a02a8a2004-09-08 00:28:11 +00003097 ;
3098 break;}
vlm7388db02005-03-31 21:48:13 +00003099case 228:
3100#line 1762 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003101{
vlmfa67ddc2004-06-03 03:38:44 +00003102 yyval.a_pres = ACPRES_ABSENT;
vlm6a02a8a2004-09-08 00:28:11 +00003103 ;
3104 break;}
vlm7388db02005-03-31 21:48:13 +00003105case 229:
3106#line 1765 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003107{
vlmfa67ddc2004-06-03 03:38:44 +00003108 yyval.a_pres = ACPRES_OPTIONAL;
vlm6a02a8a2004-09-08 00:28:11 +00003109 ;
3110 break;}
vlm7388db02005-03-31 21:48:13 +00003111case 230:
3112#line 1771 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003113{
3114 yyval.a_constr = yyvsp[0].a_constr;
3115 ;
3116 break;}
vlm7388db02005-03-31 21:48:13 +00003117case 231:
3118#line 1774 "asn1p_y.y"
vlm7bbdc9f2005-03-28 15:01:27 +00003119{
3120 yyval.a_constr = yyvsp[0].a_constr;
3121 ;
3122 break;}
vlm7388db02005-03-31 21:48:13 +00003123case 232:
3124#line 1783 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003125{
vlmfa67ddc2004-06-03 03:38:44 +00003126 asn1p_ref_t *ref = asn1p_ref_new(yylineno);
3127 asn1p_constraint_t *ct;
3128 int ret;
3129 ret = asn1p_ref_add_component(ref, yyvsp[-1].tv_str, 0);
3130 checkmem(ret == 0);
3131 ct = asn1p_constraint_new(yylineno);
3132 checkmem(yyval.a_constr);
3133 ct->type = ACT_EL_VALUE;
3134 ct->value = asn1p_value_fromref(ref, 0);
3135 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003136 ;
3137 break;}
vlm7388db02005-03-31 21:48:13 +00003138case 233:
3139#line 1798 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003140{
vlmfa67ddc2004-06-03 03:38:44 +00003141 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00003142 ;
3143 break;}
vlm7388db02005-03-31 21:48:13 +00003144case 234:
3145#line 1804 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003146{
vlmfa67ddc2004-06-03 03:38:44 +00003147 yyval.a_constr = asn1p_constraint_new(yylineno);
3148 checkmem(yyval.a_constr);
3149 yyval.a_constr->type = ACT_EL_VALUE;
3150 yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003151 ;
3152 break;}
vlm7388db02005-03-31 21:48:13 +00003153case 235:
3154#line 1810 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003155{
vlmfa67ddc2004-06-03 03:38:44 +00003156 asn1p_constraint_t *ct;
3157 ct = asn1p_constraint_new(yylineno);
3158 checkmem(ct);
3159 ct->type = ACT_EL_VALUE;
3160 ct->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
3161 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm6a02a8a2004-09-08 00:28:11 +00003162 ;
3163 break;}
vlm7388db02005-03-31 21:48:13 +00003164case 236:
3165#line 1824 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003166{
vlmfa67ddc2004-06-03 03:38:44 +00003167 char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
3168 int ret;
3169 *p = '@';
3170 strcpy(p + 1, yyvsp[0].tv_str);
3171 yyval.a_ref = asn1p_ref_new(yylineno);
3172 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
3173 checkmem(ret == 0);
3174 free(p);
3175 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003176 ;
3177 break;}
vlm7388db02005-03-31 21:48:13 +00003178case 237:
3179#line 1835 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003180{
vlmfa67ddc2004-06-03 03:38:44 +00003181 char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
3182 int ret;
3183 p[0] = '@';
3184 p[1] = '.';
3185 strcpy(p + 2, yyvsp[0].tv_str);
3186 yyval.a_ref = asn1p_ref_new(yylineno);
3187 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
3188 checkmem(ret == 0);
3189 free(p);
3190 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003191 ;
3192 break;}
vlm7388db02005-03-31 21:48:13 +00003193case 238:
3194#line 1851 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003195{
vlmfa67ddc2004-06-03 03:38:44 +00003196 yyval.tv_str = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00003197 ;
3198 break;}
vlm7388db02005-03-31 21:48:13 +00003199case 239:
3200#line 1854 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003201{
vlmfa67ddc2004-06-03 03:38:44 +00003202 int l1 = strlen(yyvsp[-2].tv_str);
3203 int l3 = strlen(yyvsp[0].tv_str);
3204 yyval.tv_str = malloc(l1 + 1 + l3 + 1);
3205 memcpy(yyval.tv_str, yyvsp[-2].tv_str, l1);
3206 yyval.tv_str[l1] = '.';
3207 memcpy(yyval.tv_str + l1 + 1, yyvsp[0].tv_str, l3);
3208 yyval.tv_str[l1 + 1 + l3] = '\0';
vlm6a02a8a2004-09-08 00:28:11 +00003209 ;
3210 break;}
vlm7388db02005-03-31 21:48:13 +00003211case 240:
3212#line 1872 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003213{
vlmc94e28f2004-09-15 11:59:51 +00003214 yyval.a_marker.flags = EM_NOMARK;
3215 yyval.a_marker.default_value = 0;
vlm6a02a8a2004-09-08 00:28:11 +00003216 ;
3217 break;}
vlm7388db02005-03-31 21:48:13 +00003218case 241:
3219#line 1876 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00003220{ yyval.a_marker = yyvsp[0].a_marker; ;
vlma2374a02004-09-14 02:44:07 +00003221 break;}
vlm7388db02005-03-31 21:48:13 +00003222case 242:
3223#line 1880 "asn1p_y.y"
vlma2374a02004-09-14 02:44:07 +00003224{
vlmc94e28f2004-09-15 11:59:51 +00003225 yyval.a_marker.flags = EM_OPTIONAL;
3226 yyval.a_marker.default_value = 0;
vlma2374a02004-09-14 02:44:07 +00003227 ;
3228 break;}
vlm7388db02005-03-31 21:48:13 +00003229case 243:
3230#line 1884 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00003231{
3232 yyval.a_marker.flags = EM_DEFAULT;
3233 yyval.a_marker.default_value = yyvsp[0].a_value;
3234 ;
3235 break;}
vlm7388db02005-03-31 21:48:13 +00003236case 244:
3237#line 1907 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003238{
vlm39e5ed72004-09-05 10:40:41 +00003239 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003240 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00003241 ;
3242 break;}
vlm7388db02005-03-31 21:48:13 +00003243case 245:
3244#line 1911 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003245{
vlm7bbdc9f2005-03-28 15:01:27 +00003246 yyval.a_expr = yyvsp[-1].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00003247 ;
3248 break;}
vlm7388db02005-03-31 21:48:13 +00003249case 246:
3250#line 1917 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003251{
vlm7bbdc9f2005-03-28 15:01:27 +00003252 yyval.a_expr = asn1p_expr_new(yylineno);
3253 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00003254 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
3255 ;
3256 break;}
vlm7388db02005-03-31 21:48:13 +00003257case 247:
3258#line 1922 "asn1p_y.y"
vlm7bbdc9f2005-03-28 15:01:27 +00003259{
3260 yyval.a_expr = yyvsp[-2].a_expr;
3261 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
3262 ;
3263 break;}
vlm7388db02005-03-31 21:48:13 +00003264case 248:
3265#line 1929 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003266{
vlm39e5ed72004-09-05 10:40:41 +00003267 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003268 checkmem(yyval.a_expr);
3269 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3270 yyval.a_expr->meta_type = AMT_VALUE;
3271 yyval.a_expr->Identifier = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00003272 ;
3273 break;}
vlm7388db02005-03-31 21:48:13 +00003274case 249:
3275#line 1936 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003276{
vlm39e5ed72004-09-05 10:40:41 +00003277 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003278 checkmem(yyval.a_expr);
3279 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3280 yyval.a_expr->meta_type = AMT_VALUE;
vlm6611add2005-03-20 14:28:32 +00003281 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
3282 yyval.a_expr->value = yyvsp[-1].a_value;
3283 ;
3284 break;}
vlm7388db02005-03-31 21:48:13 +00003285case 250:
3286#line 1944 "asn1p_y.y"
vlm7bbdc9f2005-03-28 15:01:27 +00003287{
3288 yyval.a_expr = asn1p_expr_new(yylineno);
3289 checkmem(yyval.a_expr);
3290 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3291 yyval.a_expr->meta_type = AMT_VALUE;
3292 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
3293 yyval.a_expr->value = yyvsp[-1].a_value;
3294 ;
3295 break;}
vlm7388db02005-03-31 21:48:13 +00003296case 251:
3297#line 1952 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003298{
3299 yyval.a_expr = asn1p_expr_new(yylineno);
3300 checkmem(yyval.a_expr);
3301 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3302 yyval.a_expr->meta_type = AMT_VALUE;
vlmfa67ddc2004-06-03 03:38:44 +00003303 yyval.a_expr->value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00003304 ;
3305 break;}
vlm7388db02005-03-31 21:48:13 +00003306case 252:
3307#line 1959 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003308{
vlm39e5ed72004-09-05 10:40:41 +00003309 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003310 checkmem(yyval.a_expr);
3311 yyval.a_expr->Identifier = strdup("...");
3312 checkmem(yyval.a_expr->Identifier);
3313 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
3314 yyval.a_expr->meta_type = AMT_VALUE;
vlm6a02a8a2004-09-08 00:28:11 +00003315 ;
3316 break;}
vlm7388db02005-03-31 21:48:13 +00003317case 253:
3318#line 1970 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003319{
3320 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3321 checkmem(yyval.a_value);
3322 ;
vlma6a12e32005-03-20 12:58:00 +00003323 break;}
vlm7388db02005-03-31 21:48:13 +00003324case 254:
3325#line 1974 "asn1p_y.y"
vlm7bbdc9f2005-03-28 15:01:27 +00003326{
3327 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3328 checkmem(yyval.a_value);
3329 ;
vlm6611add2005-03-20 14:28:32 +00003330 break;}
vlm7388db02005-03-31 21:48:13 +00003331case 255:
3332#line 2005 "asn1p_y.y"
vlm7bbdc9f2005-03-28 15:01:27 +00003333{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
vlm6611add2005-03-20 14:28:32 +00003334 break;}
vlm7388db02005-03-31 21:48:13 +00003335case 256:
3336#line 2006 "asn1p_y.y"
vlm7bbdc9f2005-03-28 15:01:27 +00003337{ yyval.a_tag = yyvsp[0].a_tag; ;
3338 break;}
vlm7388db02005-03-31 21:48:13 +00003339case 257:
3340#line 2010 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003341{
vlm2728a8d2005-01-23 09:51:44 +00003342 yyval.a_tag = yyvsp[-1].a_tag;
3343 yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
vlm6a02a8a2004-09-08 00:28:11 +00003344 ;
3345 break;}
vlm7388db02005-03-31 21:48:13 +00003346case 258:
3347#line 2017 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003348{
vlm2728a8d2005-01-23 09:51:44 +00003349 yyval.a_tag = yyvsp[-2].a_tag;
3350 yyval.a_tag.tag_value = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00003351 ;
3352 break;}
vlm7388db02005-03-31 21:48:13 +00003353case 259:
3354#line 2023 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003355{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
vlm6a02a8a2004-09-08 00:28:11 +00003356 break;}
vlm7388db02005-03-31 21:48:13 +00003357case 260:
3358#line 2024 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003359{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
vlm151c0b22004-09-22 16:03:36 +00003360 break;}
vlm7388db02005-03-31 21:48:13 +00003361case 261:
3362#line 2025 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003363{ yyval.a_tag.tag_class = TC_APPLICATION; ;
vlm0aa86902004-10-12 23:26:53 +00003364 break;}
vlm7388db02005-03-31 21:48:13 +00003365case 262:
3366#line 2026 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003367{ yyval.a_tag.tag_class = TC_PRIVATE; ;
3368 break;}
vlm7388db02005-03-31 21:48:13 +00003369case 263:
3370#line 2030 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003371{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
3372 break;}
vlm7388db02005-03-31 21:48:13 +00003373case 264:
3374#line 2031 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003375{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
vlm0aa86902004-10-12 23:26:53 +00003376 break;}
vlm7388db02005-03-31 21:48:13 +00003377case 265:
3378#line 2032 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003379{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
vlm0aa86902004-10-12 23:26:53 +00003380 break;}
vlm7388db02005-03-31 21:48:13 +00003381case 266:
3382#line 2036 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00003383{
3384 checkmem(yyvsp[0].tv_str);
3385 yyval.tv_str = yyvsp[0].tv_str;
3386 ;
3387 break;}
vlm7388db02005-03-31 21:48:13 +00003388case 267:
3389#line 2040 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00003390{
3391 checkmem(yyvsp[0].tv_str);
3392 yyval.tv_str = yyvsp[0].tv_str;
3393 ;
3394 break;}
vlm7388db02005-03-31 21:48:13 +00003395case 268:
3396#line 2048 "asn1p_y.y"
vlm7bbdc9f2005-03-28 15:01:27 +00003397{
3398 checkmem(yyvsp[0].tv_str);
3399 yyval.tv_str = yyvsp[0].tv_str;
3400 ;
vlme1e6ed82005-03-24 14:26:38 +00003401 break;}
vlm7388db02005-03-31 21:48:13 +00003402case 269:
3403#line 2055 "asn1p_y.y"
vlm7bbdc9f2005-03-28 15:01:27 +00003404{ yyval.tv_str = 0; ;
3405 break;}
vlm7388db02005-03-31 21:48:13 +00003406case 270:
3407#line 2056 "asn1p_y.y"
vlme1e6ed82005-03-24 14:26:38 +00003408{
3409 yyval.tv_str = yyvsp[0].tv_str;
3410 ;
3411 break;}
vlm7388db02005-03-31 21:48:13 +00003412case 271:
3413#line 2061 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003414{
vlm39e5ed72004-09-05 10:40:41 +00003415 checkmem(yyvsp[0].tv_str);
3416 yyval.tv_str = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00003417 ;
3418 break;}
vlm6a02a8a2004-09-08 00:28:11 +00003419}
3420 /* the action file gets copied in in place of this dollarsign */
3421#line 543 "/usr/share/bison.simple"
vlmfa67ddc2004-06-03 03:38:44 +00003422
3423 yyvsp -= yylen;
3424 yyssp -= yylen;
vlm6a02a8a2004-09-08 00:28:11 +00003425#ifdef YYLSP_NEEDED
3426 yylsp -= yylen;
3427#endif
vlmfa67ddc2004-06-03 03:38:44 +00003428
vlm6a02a8a2004-09-08 00:28:11 +00003429#if YYDEBUG != 0
vlmfa67ddc2004-06-03 03:38:44 +00003430 if (yydebug)
3431 {
vlm6a02a8a2004-09-08 00:28:11 +00003432 short *ssp1 = yyss - 1;
3433 fprintf (stderr, "state stack now");
3434 while (ssp1 != yyssp)
3435 fprintf (stderr, " %d", *++ssp1);
3436 fprintf (stderr, "\n");
vlmfa67ddc2004-06-03 03:38:44 +00003437 }
3438#endif
3439
3440 *++yyvsp = yyval;
3441
vlm6a02a8a2004-09-08 00:28:11 +00003442#ifdef YYLSP_NEEDED
3443 yylsp++;
3444 if (yylen == 0)
3445 {
3446 yylsp->first_line = yylloc.first_line;
3447 yylsp->first_column = yylloc.first_column;
3448 yylsp->last_line = (yylsp-1)->last_line;
3449 yylsp->last_column = (yylsp-1)->last_column;
3450 yylsp->text = 0;
3451 }
3452 else
3453 {
3454 yylsp->last_line = (yylsp+yylen-1)->last_line;
3455 yylsp->last_column = (yylsp+yylen-1)->last_column;
3456 }
3457#endif
vlmfa67ddc2004-06-03 03:38:44 +00003458
vlm6a02a8a2004-09-08 00:28:11 +00003459 /* Now "shift" the result of the reduction.
3460 Determine what state that goes to,
3461 based on the state we popped back to
3462 and the rule number reduced by. */
vlmfa67ddc2004-06-03 03:38:44 +00003463
3464 yyn = yyr1[yyn];
3465
vlm6a02a8a2004-09-08 00:28:11 +00003466 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
3467 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
vlmfa67ddc2004-06-03 03:38:44 +00003468 yystate = yytable[yystate];
3469 else
vlm6a02a8a2004-09-08 00:28:11 +00003470 yystate = yydefgoto[yyn - YYNTBASE];
vlmfa67ddc2004-06-03 03:38:44 +00003471
3472 goto yynewstate;
3473
vlm6a02a8a2004-09-08 00:28:11 +00003474yyerrlab: /* here on detecting error */
vlmfa67ddc2004-06-03 03:38:44 +00003475
vlm6a02a8a2004-09-08 00:28:11 +00003476 if (! yyerrstatus)
3477 /* If not already recovering from an error, report this error. */
vlmfa67ddc2004-06-03 03:38:44 +00003478 {
3479 ++yynerrs;
vlm6a02a8a2004-09-08 00:28:11 +00003480
3481#ifdef YYERROR_VERBOSE
vlmfa67ddc2004-06-03 03:38:44 +00003482 yyn = yypact[yystate];
3483
vlm6a02a8a2004-09-08 00:28:11 +00003484 if (yyn > YYFLAG && yyn < YYLAST)
vlmfa67ddc2004-06-03 03:38:44 +00003485 {
vlm6a02a8a2004-09-08 00:28:11 +00003486 int size = 0;
3487 char *msg;
3488 int x, count;
vlmfa67ddc2004-06-03 03:38:44 +00003489
vlm6a02a8a2004-09-08 00:28:11 +00003490 count = 0;
3491 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
3492 for (x = (yyn < 0 ? -yyn : 0);
3493 x < (ssize_t)(sizeof(yytname) / sizeof(char *)); x++)
3494 if (yycheck[x + yyn] == x)
3495 size += strlen(yytname[x]) + 15, count++;
3496 msg = (char *) malloc(size + 15);
3497 if (msg != 0)
vlmfa67ddc2004-06-03 03:38:44 +00003498 {
vlm6a02a8a2004-09-08 00:28:11 +00003499 strcpy(msg, "parse error");
vlmfa67ddc2004-06-03 03:38:44 +00003500
vlm6a02a8a2004-09-08 00:28:11 +00003501 if (count < 5)
vlmfa67ddc2004-06-03 03:38:44 +00003502 {
vlm6a02a8a2004-09-08 00:28:11 +00003503 count = 0;
3504 for (x = (yyn < 0 ? -yyn : 0);
3505 x < (ssize_t)(sizeof(yytname) / sizeof(char *)); x++)
3506 if (yycheck[x + yyn] == x)
vlmfa67ddc2004-06-03 03:38:44 +00003507 {
vlm6a02a8a2004-09-08 00:28:11 +00003508 strcat(msg, count == 0 ? ", expecting `" : " or `");
3509 strcat(msg, yytname[x]);
3510 strcat(msg, "'");
3511 count++;
vlmfa67ddc2004-06-03 03:38:44 +00003512 }
3513 }
vlm6a02a8a2004-09-08 00:28:11 +00003514 yyerror(msg);
3515 free(msg);
vlmfa67ddc2004-06-03 03:38:44 +00003516 }
3517 else
vlm6a02a8a2004-09-08 00:28:11 +00003518 yyerror ("parse error; also virtual memory exceeded");
vlmfa67ddc2004-06-03 03:38:44 +00003519 }
3520 else
3521#endif /* YYERROR_VERBOSE */
vlm6a02a8a2004-09-08 00:28:11 +00003522 yyerror("parse error");
vlmfa67ddc2004-06-03 03:38:44 +00003523 }
vlm6a02a8a2004-09-08 00:28:11 +00003524
vlmfa67ddc2004-06-03 03:38:44 +00003525 goto yyerrlab1;
vlm6a02a8a2004-09-08 00:28:11 +00003526yyerrlab1: /* here on error raised explicitly by an action */
vlmfa67ddc2004-06-03 03:38:44 +00003527
3528 if (yyerrstatus == 3)
3529 {
vlm6a02a8a2004-09-08 00:28:11 +00003530 /* if just tried and failed to reuse lookahead token after an error, discard it. */
vlmfa67ddc2004-06-03 03:38:44 +00003531
vlm6a02a8a2004-09-08 00:28:11 +00003532 /* return failure if at end of input */
vlmfa67ddc2004-06-03 03:38:44 +00003533 if (yychar == YYEOF)
vlm6a02a8a2004-09-08 00:28:11 +00003534 YYABORT;
vlmfa67ddc2004-06-03 03:38:44 +00003535
vlm6a02a8a2004-09-08 00:28:11 +00003536#if YYDEBUG != 0
3537 if (yydebug)
3538 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
3539#endif
3540
vlmfa67ddc2004-06-03 03:38:44 +00003541 yychar = YYEMPTY;
3542 }
3543
vlm6a02a8a2004-09-08 00:28:11 +00003544 /* Else will try to reuse lookahead token
3545 after shifting the error token. */
vlmfa67ddc2004-06-03 03:38:44 +00003546
vlm6a02a8a2004-09-08 00:28:11 +00003547 yyerrstatus = 3; /* Each real token shifted decrements this */
vlmfa67ddc2004-06-03 03:38:44 +00003548
vlm6a02a8a2004-09-08 00:28:11 +00003549 goto yyerrhandle;
vlm80103492004-09-07 10:39:09 +00003550
vlm6a02a8a2004-09-08 00:28:11 +00003551yyerrdefault: /* current state does not do anything special for the error token. */
vlm80103492004-09-07 10:39:09 +00003552
vlm6a02a8a2004-09-08 00:28:11 +00003553#if 0
3554 /* This is wrong; only states that explicitly want error tokens
3555 should shift them. */
3556 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
3557 if (yyn) goto yydefault;
vlm39e5ed72004-09-05 10:40:41 +00003558#endif
vlm6a02a8a2004-09-08 00:28:11 +00003559
3560yyerrpop: /* pop the current state because it cannot handle the error token */
3561
3562 if (yyssp == yyss) YYABORT;
3563 yyvsp--;
3564 yystate = *--yyssp;
3565#ifdef YYLSP_NEEDED
3566 yylsp--;
3567#endif
3568
3569#if YYDEBUG != 0
3570 if (yydebug)
3571 {
3572 short *ssp1 = yyss - 1;
3573 fprintf (stderr, "Error: state stack now");
3574 while (ssp1 != yyssp)
3575 fprintf (stderr, " %d", *++ssp1);
3576 fprintf (stderr, "\n");
vlm39e5ed72004-09-05 10:40:41 +00003577 }
vlm6a02a8a2004-09-08 00:28:11 +00003578#endif
3579
3580yyerrhandle:
3581
3582 yyn = yypact[yystate];
3583 if (yyn == YYFLAG)
3584 goto yyerrdefault;
3585
3586 yyn += YYTERROR;
3587 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
3588 goto yyerrdefault;
3589
3590 yyn = yytable[yyn];
3591 if (yyn < 0)
3592 {
3593 if (yyn == YYFLAG)
3594 goto yyerrpop;
3595 yyn = -yyn;
3596 goto yyreduce;
3597 }
3598 else if (yyn == 0)
3599 goto yyerrpop;
vlmfa67ddc2004-06-03 03:38:44 +00003600
3601 if (yyn == YYFINAL)
3602 YYACCEPT;
3603
vlm6a02a8a2004-09-08 00:28:11 +00003604#if YYDEBUG != 0
3605 if (yydebug)
3606 fprintf(stderr, "Shifting error token, ");
3607#endif
vlmfa67ddc2004-06-03 03:38:44 +00003608
3609 *++yyvsp = yylval;
vlm6a02a8a2004-09-08 00:28:11 +00003610#ifdef YYLSP_NEEDED
3611 *++yylsp = yylloc;
3612#endif
vlmfa67ddc2004-06-03 03:38:44 +00003613
3614 yystate = yyn;
3615 goto yynewstate;
3616
vlm6a02a8a2004-09-08 00:28:11 +00003617 yyacceptlab:
3618 /* YYACCEPT comes here. */
3619 if (yyfree_stacks)
3620 {
3621 free (yyss);
3622 free (yyvs);
3623#ifdef YYLSP_NEEDED
3624 free (yyls);
vlm044f7442004-09-04 04:49:21 +00003625#endif
vlm6a02a8a2004-09-08 00:28:11 +00003626 }
3627 return 0;
vlm80103492004-09-07 10:39:09 +00003628
vlm6a02a8a2004-09-08 00:28:11 +00003629 yyabortlab:
3630 /* YYABORT comes here. */
3631 if (yyfree_stacks)
3632 {
3633 free (yyss);
3634 free (yyvs);
3635#ifdef YYLSP_NEEDED
3636 free (yyls);
vlm80103492004-09-07 10:39:09 +00003637#endif
vlm6a02a8a2004-09-08 00:28:11 +00003638 }
3639 return 1;
vlmfa67ddc2004-06-03 03:38:44 +00003640}
vlm7388db02005-03-31 21:48:13 +00003641#line 2067 "asn1p_y.y"
vlmfa67ddc2004-06-03 03:38:44 +00003642
3643
3644
3645/*
3646 * Convert Xstring ('0101'B or '5'H) to the binary vector.
3647 */
3648static asn1p_value_t *
3649_convert_bitstring2binary(char *str, int base) {
3650 asn1p_value_t *val;
3651 int slen;
3652 int memlen;
3653 int baselen;
3654 int bits;
3655 uint8_t *binary_vector;
3656 uint8_t *bv_ptr;
3657 uint8_t cur_val;
3658
3659 assert(str);
3660 assert(str[0] == '\'');
3661
3662 switch(base) {
3663 case 'B':
3664 baselen = 1;
3665 break;
3666 case 'H':
3667 baselen = 4;
3668 break;
3669 default:
3670 assert(base == 'B' || base == 'H');
3671 errno = EINVAL;
3672 return NULL;
3673 }
3674
3675 slen = strlen(str);
3676 assert(str[slen - 1] == base);
3677 assert(str[slen - 2] == '\'');
3678
3679 memlen = slen / (8 / baselen); /* Conservative estimate */
3680
3681 bv_ptr = binary_vector = malloc(memlen + 1);
3682 if(bv_ptr == NULL)
3683 /* ENOMEM */
3684 return NULL;
3685
3686 cur_val = 0;
3687 bits = 0;
3688 while(*(++str) != '\'') {
3689 switch(baselen) {
3690 case 1:
3691 switch(*str) {
3692 case '1':
3693 cur_val |= 1 << (7 - (bits % 8));
3694 case '0':
3695 break;
3696 default:
3697 assert(!"_y UNREACH1");
3698 case ' ': case '\r': case '\n':
3699 continue;
3700 }
3701 break;
3702 case 4:
3703 switch(*str) {
3704 case '0': case '1': case '2': case '3': case '4':
3705 case '5': case '6': case '7': case '8': case '9':
3706 cur_val |= (*str - '0') << (4 - (bits % 8));
3707 break;
3708 case 'A': case 'B': case 'C':
3709 case 'D': case 'E': case 'F':
3710 cur_val |= ((*str - 'A') + 10)
3711 << (4 - (bits % 8));
3712 break;
3713 default:
3714 assert(!"_y UNREACH2");
3715 case ' ': case '\r': case '\n':
3716 continue;
3717 }
3718 break;
3719 }
3720
3721 bits += baselen;
3722 if((bits % 8) == 0) {
3723 *bv_ptr++ = cur_val;
3724 cur_val = 0;
3725 }
3726 }
3727
3728 *bv_ptr = cur_val;
3729 assert((bv_ptr - binary_vector) <= memlen);
3730
3731 val = asn1p_value_frombits(binary_vector, bits, 0);
3732 if(val == NULL) {
3733 free(binary_vector);
3734 }
3735
3736 return val;
3737}
3738
3739extern char *asn1p_text;
3740
3741int
3742yyerror(const char *msg) {
3743 fprintf(stderr,
3744 "ASN.1 grammar parse error "
3745 "near line %d (token \"%s\"): %s\n",
vlm39e5ed72004-09-05 10:40:41 +00003746 yylineno, asn1p_text, msg);
vlmfa67ddc2004-06-03 03:38:44 +00003747 return -1;
3748}
3749
3750