blob: 04e713f56673a9e3b59f6f37cba573c593888130 [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
21#define TOK_number_negative 264
22#define TOK_typereference 265
23#define TOK_capitalreference 266
24#define TOK_typefieldreference 267
25#define TOK_valuefieldreference 268
26#define TOK_ABSENT 269
27#define TOK_ABSTRACT_SYNTAX 270
28#define TOK_ALL 271
29#define TOK_ANY 272
30#define TOK_APPLICATION 273
31#define TOK_AUTOMATIC 274
32#define TOK_BEGIN 275
33#define TOK_BIT 276
34#define TOK_BMPString 277
35#define TOK_BOOLEAN 278
36#define TOK_BY 279
37#define TOK_CHARACTER 280
38#define TOK_CHOICE 281
39#define TOK_CLASS 282
40#define TOK_COMPONENT 283
41#define TOK_COMPONENTS 284
42#define TOK_CONSTRAINED 285
43#define TOK_CONTAINING 286
44#define TOK_DEFAULT 287
45#define TOK_DEFINITIONS 288
46#define TOK_DEFINED 289
47#define TOK_EMBEDDED 290
48#define TOK_ENCODED 291
49#define TOK_ENCODING_CONTROL 292
50#define TOK_END 293
51#define TOK_ENUMERATED 294
52#define TOK_EXPLICIT 295
53#define TOK_EXPORTS 296
54#define TOK_EXTENSIBILITY 297
55#define TOK_EXTERNAL 298
56#define TOK_FALSE 299
57#define TOK_FROM 300
58#define TOK_GeneralizedTime 301
59#define TOK_GeneralString 302
60#define TOK_GraphicString 303
61#define TOK_IA5String 304
62#define TOK_IDENTIFIER 305
63#define TOK_IMPLICIT 306
64#define TOK_IMPLIED 307
65#define TOK_IMPORTS 308
66#define TOK_INCLUDES 309
67#define TOK_INSTANCE 310
68#define TOK_INSTRUCTIONS 311
69#define TOK_INTEGER 312
70#define TOK_ISO646String 313
71#define TOK_MAX 314
72#define TOK_MIN 315
73#define TOK_MINUS_INFINITY 316
74#define TOK_NULL 317
75#define TOK_NumericString 318
76#define TOK_OBJECT 319
77#define TOK_ObjectDescriptor 320
78#define TOK_OCTET 321
79#define TOK_OF 322
80#define TOK_OPTIONAL 323
81#define TOK_PATTERN 324
82#define TOK_PDV 325
83#define TOK_PLUS_INFINITY 326
84#define TOK_PRESENT 327
85#define TOK_PrintableString 328
86#define TOK_PRIVATE 329
87#define TOK_REAL 330
88#define TOK_RELATIVE_OID 331
89#define TOK_SEQUENCE 332
90#define TOK_SET 333
91#define TOK_SIZE 334
92#define TOK_STRING 335
93#define TOK_SYNTAX 336
94#define TOK_T61String 337
95#define TOK_TAGS 338
96#define TOK_TeletexString 339
97#define TOK_TRUE 340
98#define TOK_TYPE_IDENTIFIER 341
99#define TOK_UNIQUE 342
100#define TOK_UNIVERSAL 343
101#define TOK_UniversalString 344
102#define TOK_UTCTime 345
103#define TOK_UTF8String 346
104#define TOK_VideotexString 347
105#define TOK_VisibleString 348
106#define TOK_WITH 349
107#define TOK_EXCEPT 350
108#define TOK_INTERSECTION 351
109#define TOK_UNION 352
110#define TOK_TwoDots 353
111#define TOK_ThreeDots 354
vlmfa67ddc2004-06-03 03:38:44 +0000112
113#line 1 "asn1p_y.y"
114
115
116#include <stdlib.h>
117#include <stdio.h>
118#include <string.h>
119#include <errno.h>
120#include <assert.h>
121
122#include "asn1parser.h"
123
124#define YYPARSE_PARAM param
125#define YYERROR_VERBOSE
126
127int yylex(void);
128int yyerror(const char *msg);
129void asn1p_lexer_hack_push_opaque_state(void);
130void asn1p_lexer_hack_enable_with_syntax(void);
vlm9283dbe2004-08-18 04:59:12 +0000131void asn1p_lexer_hack_push_encoding_control(void);
vlmfa67ddc2004-06-03 03:38:44 +0000132#define yylineno asn1p_lineno
133extern int asn1p_lineno;
134
135
136static asn1p_value_t *
137 _convert_bitstring2binary(char *str, int base);
138
vlm6a02a8a2004-09-08 00:28:11 +0000139#define checkmem(ptr) do { \
140 if(!(ptr)) \
141 return yyerror("Memory failure"); \
vlmfa67ddc2004-06-03 03:38:44 +0000142 } while(0)
143
144#define CONSTRAINT_INSERT(root, constr_type, arg1, arg2) do { \
145 if(arg1->type != constr_type) { \
146 int __ret; \
147 root = asn1p_constraint_new(yylineno); \
148 checkmem(root); \
149 root->type = constr_type; \
150 __ret = asn1p_constraint_insert(root, \
151 arg1); \
152 checkmem(__ret == 0); \
153 } else { \
154 root = arg1; \
155 } \
156 if(arg2) { \
157 int __ret \
158 = asn1p_constraint_insert(root, arg2); \
159 checkmem(__ret == 0); \
160 } \
161 } while(0)
162
163
vlm9283dbe2004-08-18 04:59:12 +0000164#line 58 "asn1p_y.y"
vlmfa67ddc2004-06-03 03:38:44 +0000165typedef union {
166 asn1p_t *a_grammar;
167 asn1p_module_flags_e a_module_flags;
168 asn1p_module_t *a_module;
169 asn1p_expr_type_e a_type; /* ASN.1 Type */
170 asn1p_expr_t *a_expr; /* Constructed collection */
171 asn1p_constraint_t *a_constr; /* Constraint */
172 enum asn1p_constraint_type_e a_ctype;/* Constraint type */
173 asn1p_xports_t *a_xports; /* IMports/EXports */
174 asn1p_oid_t *a_oid; /* Object Identifier */
175 asn1p_oid_arc_t a_oid_arc; /* Single OID's arc */
176 struct asn1p_type_tag_s a_tag; /* A tag */
177 asn1p_ref_t *a_ref; /* Reference to custom type */
178 asn1p_wsyntx_t *a_wsynt; /* WITH SYNTAX contents */
179 asn1p_wsyntx_chunk_t *a_wchunk; /* WITH SYNTAX chunk */
180 struct asn1p_ref_component_s a_refcomp; /* Component of a reference */
181 asn1p_value_t *a_value; /* Number, DefinedValue, etc */
182 struct asn1p_param_s a_parg; /* A parameter argument */
183 asn1p_paramlist_t *a_plist; /* A pargs list */
vlmc94e28f2004-09-15 11:59:51 +0000184 struct asn1p_expr_marker_s a_marker; /* OPTIONAL/DEFAULT */
vlmfa67ddc2004-06-03 03:38:44 +0000185 enum asn1p_constr_pres_e a_pres; /* PRESENT/ABSENT/OPTIONAL */
vlmec6acd42004-09-29 13:18:09 +0000186 asn1c_integer_t a_int;
vlmfa67ddc2004-06-03 03:38:44 +0000187 char *tv_str;
188 struct {
189 char *buf;
190 int len;
191 } tv_opaque;
192 struct {
193 char *name;
194 struct asn1p_type_tag_s tag;
195 } tv_nametag;
vlm6a02a8a2004-09-08 00:28:11 +0000196} YYSTYPE;
197#include <stdio.h>
198
199#ifndef __cplusplus
200#ifndef __STDC__
201#define const
202#endif
vlmfa67ddc2004-06-03 03:38:44 +0000203#endif
204
205
206
vlm6611add2005-03-20 14:28:32 +0000207#define YYFINAL 423
vlm6a02a8a2004-09-08 00:28:11 +0000208#define YYFLAG -32768
vlm2728a8d2005-01-23 09:51:44 +0000209#define YYNTBASE 116
vlmfa67ddc2004-06-03 03:38:44 +0000210
vlm6611add2005-03-20 14:28:32 +0000211#define YYTRANSLATE(x) ((unsigned)(x) <= 354 ? yytranslate[x] : 219)
vlmfa67ddc2004-06-03 03:38:44 +0000212
vlm6a02a8a2004-09-08 00:28:11 +0000213static const char yytranslate[] = { 0,
214 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
215 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
216 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
vlm2728a8d2005-01-23 09:51:44 +0000217 2, 2, 110, 2, 2, 2, 2, 2, 2, 105,
218 106, 2, 2, 108, 2, 111, 2, 2, 2, 2,
219 2, 2, 2, 2, 2, 2, 2, 109, 107, 112,
220 2, 2, 2, 113, 2, 2, 2, 2, 2, 2,
vlm6a02a8a2004-09-08 00:28:11 +0000221 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
222 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
vlm2728a8d2005-01-23 09:51:44 +0000223 114, 2, 115, 97, 2, 2, 2, 2, 2, 2,
vlm6a02a8a2004-09-08 00:28:11 +0000224 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
225 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
vlm2728a8d2005-01-23 09:51:44 +0000226 2, 2, 103, 99, 104, 2, 2, 2, 2, 2,
vlm6a02a8a2004-09-08 00:28:11 +0000227 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
228 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
229 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
230 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
231 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
232 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
233 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
234 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
235 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
236 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
237 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
238 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
239 2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
240 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
241 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
242 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
243 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
244 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
245 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
246 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
247 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
248 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
vlm2728a8d2005-01-23 09:51:44 +0000249 98, 100, 101, 102
vlm6a02a8a2004-09-08 00:28:11 +0000250};
vlmfa67ddc2004-06-03 03:38:44 +0000251
vlm6a02a8a2004-09-08 00:28:11 +0000252#if YYDEBUG != 0
253static const short yyprhs[] = { 0,
254 0, 2, 4, 7, 16, 17, 19, 23, 26, 28,
255 31, 33, 38, 40, 41, 43, 45, 48, 51, 54,
256 57, 60, 63, 64, 66, 68, 71, 73, 75, 77,
257 79, 81, 82, 86, 88, 92, 95, 97, 100, 105,
vlm0aa86902004-10-12 23:26:53 +0000258 107, 111, 113, 117, 119, 123, 127, 130, 132, 136,
259 138, 142, 144, 151, 153, 155, 156, 158, 160, 164,
260 166, 168, 173, 177, 181, 188, 190, 194, 196, 200,
vlm4053ca52005-02-18 16:34:21 +0000261 204, 208, 210, 214, 216, 218, 219, 221, 223, 227,
262 231, 235, 237, 239, 243, 246, 248, 254, 255, 257,
263 259, 263, 266, 271, 276, 277, 279, 280, 287, 289,
vlm5e2c4b92005-03-20 11:12:40 +0000264 292, 294, 296, 298, 302, 306, 310, 312, 317, 322,
265 327, 334, 341, 343, 348, 353, 355, 359, 361, 365,
266 369, 373, 375, 379, 381, 385, 387, 389, 391, 393,
267 398, 402, 403, 407, 409, 411, 413, 415, 417, 419,
268 421, 423, 425, 429, 431, 434, 436, 438, 440, 442,
269 445, 448, 450, 452, 455, 458, 460, 462, 464, 466,
vlm4053ca52005-02-18 16:34:21 +0000270 468, 471, 473, 476, 478, 480, 482, 484, 486, 488,
271 490, 492, 494, 496, 498, 500, 502, 504, 506, 508,
272 510, 512, 514, 515, 517, 519, 524, 528, 533, 535,
vlma6a12e32005-03-20 12:58:00 +0000273 539, 545, 547, 551, 555, 559, 564, 568, 570, 572,
vlm6611add2005-03-20 14:28:32 +0000274 576, 580, 584, 588, 590, 592, 593, 599, 601, 604,
275 607, 611, 613, 615, 617, 619, 621, 623, 625, 627,
276 633, 635, 639, 641, 645, 646, 648, 650, 652, 654,
277 656, 658, 662, 667, 669, 673, 676, 680, 682, 686,
278 687, 689, 691, 694, 697, 701, 703, 707, 709, 714,
279 719, 721, 723, 725, 727, 728, 730, 733, 738, 739,
280 741, 743, 745, 746, 748, 750, 752, 754, 756, 757,
281 759
vlm6a02a8a2004-09-08 00:28:11 +0000282};
vlmfa67ddc2004-06-03 03:38:44 +0000283
vlm2728a8d2005-01-23 09:51:44 +0000284static const short yyrhs[] = { 117,
vlm6611add2005-03-20 14:28:32 +0000285 0, 118, 0, 117, 118, 0, 215, 119, 34, 123,
vlm2728a8d2005-01-23 09:51:44 +0000286 3, 21, 126, 39, 0, 0, 120, 0, 103, 121,
287 104, 0, 103, 104, 0, 122, 0, 121, 122, 0,
vlm6611add2005-03-20 14:28:32 +0000288 218, 0, 218, 105, 9, 106, 0, 9, 0, 0,
vlm2728a8d2005-01-23 09:51:44 +0000289 124, 0, 125, 0, 124, 125, 0, 41, 84, 0,
vlm6a02a8a2004-09-08 00:28:11 +0000290 52, 84, 0, 20, 84, 0, 43, 53, 0, 12,
vlm2728a8d2005-01-23 09:51:44 +0000291 57, 0, 0, 127, 0, 128, 0, 127, 128, 0,
292 130, 0, 135, 0, 143, 0, 170, 0, 138, 0,
293 0, 38, 12, 129, 0, 178, 0, 54, 131, 107,
294 0, 54, 46, 0, 132, 0, 131, 132, 0, 133,
vlm6611add2005-03-20 14:28:32 +0000295 46, 215, 119, 0, 134, 0, 133, 108, 134, 0,
296 215, 0, 215, 103, 104, 0, 218, 0, 42, 136,
vlm2728a8d2005-01-23 09:51:44 +0000297 107, 0, 42, 17, 107, 0, 42, 107, 0, 137,
vlm6611add2005-03-20 14:28:32 +0000298 0, 136, 108, 137, 0, 215, 0, 215, 103, 104,
299 0, 218, 0, 215, 139, 3, 103, 140, 104, 0,
vlm2728a8d2005-01-23 09:51:44 +0000300 165, 0, 175, 0, 0, 141, 0, 142, 0, 141,
vlm6611add2005-03-20 14:28:32 +0000301 108, 142, 0, 102, 0, 186, 0, 215, 3, 210,
302 87, 0, 215, 3, 163, 0, 215, 3, 153, 0,
303 215, 103, 144, 104, 3, 163, 0, 145, 0, 144,
304 108, 145, 0, 215, 0, 215, 109, 218, 0, 215,
305 109, 215, 0, 175, 109, 218, 0, 147, 0, 146,
306 108, 147, 0, 163, 0, 218, 0, 0, 149, 0,
307 150, 0, 149, 108, 150, 0, 218, 163, 204, 0,
vlm4053ca52005-02-18 16:34:21 +0000308 30, 68, 163, 0, 162, 0, 152, 0, 151, 108,
vlm6611add2005-03-20 14:28:32 +0000309 152, 0, 218, 163, 0, 162, 0, 28, 103, 155,
vlm4053ca52005-02-18 16:34:21 +0000310 104, 157, 0, 0, 88, 0, 156, 0, 155, 108,
vlm6611add2005-03-20 14:28:32 +0000311 156, 0, 168, 204, 0, 168, 163, 154, 204, 0,
312 168, 168, 154, 204, 0, 0, 158, 0, 0, 95,
vlm4053ca52005-02-18 16:34:21 +0000313 82, 103, 159, 160, 104, 0, 161, 0, 160, 161,
314 0, 4, 0, 168, 0, 102, 0, 102, 110, 173,
vlm6611add2005-03-20 14:28:32 +0000315 0, 102, 110, 209, 0, 210, 164, 182, 0, 177,
vlm5e2c4b92005-03-20 11:12:40 +0000316 0, 27, 103, 151, 104, 0, 78, 103, 148, 104,
vlm6611add2005-03-20 14:28:32 +0000317 0, 79, 103, 148, 104, 0, 78, 182, 68, 217,
318 210, 164, 0, 79, 182, 68, 217, 210, 164, 0,
319 18, 0, 18, 35, 25, 218, 0, 215, 103, 146,
vlm5e2c4b92005-03-20 11:12:40 +0000320 104, 0, 165, 0, 56, 68, 165, 0, 11, 0,
vlm6611add2005-03-20 14:28:32 +0000321 11, 111, 215, 0, 216, 111, 215, 0, 11, 111,
322 218, 0, 216, 0, 216, 111, 166, 0, 167, 0,
vlm5e2c4b92005-03-20 11:12:40 +0000323 166, 111, 167, 0, 169, 0, 169, 0, 13, 0,
vlm6611add2005-03-20 14:28:32 +0000324 14, 0, 218, 139, 3, 171, 0, 218, 109, 171,
vlm5e2c4b92005-03-20 11:12:40 +0000325 0, 0, 103, 172, 174, 0, 63, 0, 45, 0,
vlm6611add2005-03-20 14:28:32 +0000326 86, 0, 5, 0, 7, 0, 6, 0, 209, 0,
327 173, 0, 218, 0, 215, 111, 218, 0, 4, 0,
vlm5e2c4b92005-03-20 11:12:40 +0000328 174, 4, 0, 24, 0, 63, 0, 76, 0, 176,
329 0, 67, 81, 0, 65, 51, 0, 77, 0, 44,
330 0, 36, 71, 0, 26, 81, 0, 91, 0, 47,
331 0, 178, 0, 58, 0, 40, 0, 22, 81, 0,
vlm6611add2005-03-20 14:28:32 +0000332 175, 0, 176, 206, 0, 23, 0, 48, 0, 49,
vlm4053ca52005-02-18 16:34:21 +0000333 0, 50, 0, 59, 0, 64, 0, 74, 0, 83,
334 0, 85, 0, 90, 0, 92, 0, 93, 0, 94,
335 0, 66, 0, 99, 0, 100, 0, 97, 0, 98,
336 0, 96, 0, 0, 183, 0, 184, 0, 80, 105,
337 185, 106, 0, 105, 185, 106, 0, 184, 105, 185,
338 106, 0, 186, 0, 186, 108, 102, 0, 186, 108,
339 102, 108, 186, 0, 187, 0, 186, 179, 187, 0,
vlm6611add2005-03-20 14:28:32 +0000340 186, 180, 187, 0, 187, 181, 187, 0, 190, 105,
341 185, 106, 0, 105, 185, 106, 0, 191, 0, 192,
342 0, 191, 189, 191, 0, 61, 189, 191, 0, 191,
343 189, 60, 0, 61, 189, 60, 0, 198, 0, 193,
344 0, 0, 31, 25, 103, 188, 174, 0, 101, 0,
345 101, 112, 0, 112, 101, 0, 112, 101, 112, 0,
346 80, 0, 46, 0, 45, 0, 86, 0, 209, 0,
347 6, 0, 218, 0, 215, 0, 95, 30, 103, 194,
348 104, 0, 195, 0, 194, 108, 195, 0, 102, 0,
349 218, 182, 196, 0, 0, 197, 0, 73, 0, 15,
350 0, 69, 0, 199, 0, 200, 0, 103, 215, 104,
351 0, 199, 103, 201, 104, 0, 202, 0, 201, 108,
352 202, 0, 113, 203, 0, 113, 111, 203, 0, 218,
353 0, 203, 111, 218, 0, 0, 205, 0, 69, 0,
354 33, 171, 0, 103, 104, 0, 103, 207, 104, 0,
355 208, 0, 207, 108, 208, 0, 218, 0, 218, 105,
356 209, 106, 0, 218, 105, 173, 106, 0, 209, 0,
357 102, 0, 9, 0, 10, 0, 0, 211, 0, 212,
358 214, 0, 114, 213, 9, 115, 0, 0, 89, 0,
359 19, 0, 75, 0, 0, 52, 0, 41, 0, 11,
360 0, 12, 0, 12, 0, 0, 218, 0, 8, 0
vlm6a02a8a2004-09-08 00:28:11 +0000361};
vlmfa67ddc2004-06-03 03:38:44 +0000362
363#endif
364
vlm6a02a8a2004-09-08 00:28:11 +0000365#if YYDEBUG != 0
366static const short yyrline[] = { 0,
vlma6a12e32005-03-20 12:58:00 +0000367 302, 308, 314, 330, 355, 357, 360, 364, 369, 376,
368 384, 389, 393, 402, 404, 412, 416, 424, 428, 431,
369 434, 438, 458, 460, 468, 472, 504, 508, 517, 524,
370 537, 544, 546, 558, 571, 578, 583, 589, 595, 604,
371 610, 616, 623, 629, 637, 641, 644, 651, 657, 663,
372 670, 676, 685, 695, 703, 711, 713, 723, 726, 730,
373 733, 745, 757, 763, 779, 788, 798, 808, 813, 820,
374 827, 837, 843, 849, 853, 876, 878, 880, 886, 892,
375 899, 906, 911, 917, 923, 929, 934, 944, 946, 949,
376 957, 963, 972, 978, 995, 997, 1002, 1006, 1011, 1016,
377 1022, 1026, 1037, 1046, 1055, 1066, 1088, 1092, 1098, 1104,
378 1110, 1120, 1130, 1136, 1150, 1174, 1181, 1195, 1204, 1214,
379 1224, 1234, 1242, 1263, 1272, 1281, 1282, 1284, 1291, 1303,
380 1313, 1321, 1321, 1326, 1331, 1336, 1341, 1345, 1349, 1353,
vlm6611add2005-03-20 14:28:32 +0000381 1356, 1361, 1373, 1389, 1399, 1413, 1415, 1416, 1417, 1418,
382 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1432, 1434,
383 1435, 1438, 1445, 1457, 1459, 1463, 1467, 1468, 1469, 1470,
384 1471, 1475, 1476, 1477, 1478, 1482, 1483, 1490, 1490, 1491,
385 1491, 1492, 1494, 1496, 1501, 1505, 1514, 1518, 1523, 1527,
386 1533, 1543, 1547, 1550, 1553, 1558, 1567, 1575, 1581, 1587,
387 1594, 1602, 1610, 1619, 1622, 1625, 1626, 1636, 1638, 1639,
388 1640, 1643, 1647, 1652, 1658, 1663, 1666, 1670, 1683, 1697,
389 1703, 1707, 1712, 1718, 1730, 1732, 1735, 1739, 1742, 1747,
390 1751, 1759, 1774, 1780, 1787, 1800, 1812, 1827, 1831, 1848,
391 1853, 1856, 1861, 1883, 1888, 1893, 1899, 1905, 1913, 1921,
392 1929, 1936, 1946, 1951, 1981, 1983, 1986, 1993, 1999, 2001,
393 2002, 2003, 2006, 2008, 2009, 2012, 2017, 2024, 2031, 2033,
394 2037
vlm6a02a8a2004-09-08 00:28:11 +0000395};
396#endif
397
398
399#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
400
401static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ",
402"TOK_opaque","TOK_bstring","TOK_cstring","TOK_hstring","TOK_identifier","TOK_number",
403"TOK_number_negative","TOK_typereference","TOK_capitalreference","TOK_typefieldreference",
404"TOK_valuefieldreference","TOK_ABSENT","TOK_ABSTRACT_SYNTAX","TOK_ALL","TOK_ANY",
405"TOK_APPLICATION","TOK_AUTOMATIC","TOK_BEGIN","TOK_BIT","TOK_BMPString","TOK_BOOLEAN",
406"TOK_BY","TOK_CHARACTER","TOK_CHOICE","TOK_CLASS","TOK_COMPONENT","TOK_COMPONENTS",
407"TOK_CONSTRAINED","TOK_CONTAINING","TOK_DEFAULT","TOK_DEFINITIONS","TOK_DEFINED",
408"TOK_EMBEDDED","TOK_ENCODED","TOK_ENCODING_CONTROL","TOK_END","TOK_ENUMERATED",
409"TOK_EXPLICIT","TOK_EXPORTS","TOK_EXTENSIBILITY","TOK_EXTERNAL","TOK_FALSE",
410"TOK_FROM","TOK_GeneralizedTime","TOK_GeneralString","TOK_GraphicString","TOK_IA5String",
411"TOK_IDENTIFIER","TOK_IMPLICIT","TOK_IMPLIED","TOK_IMPORTS","TOK_INCLUDES","TOK_INSTANCE",
412"TOK_INSTRUCTIONS","TOK_INTEGER","TOK_ISO646String","TOK_MAX","TOK_MIN","TOK_MINUS_INFINITY",
413"TOK_NULL","TOK_NumericString","TOK_OBJECT","TOK_ObjectDescriptor","TOK_OCTET",
414"TOK_OF","TOK_OPTIONAL","TOK_PATTERN","TOK_PDV","TOK_PLUS_INFINITY","TOK_PRESENT",
415"TOK_PrintableString","TOK_PRIVATE","TOK_REAL","TOK_RELATIVE_OID","TOK_SEQUENCE",
416"TOK_SET","TOK_SIZE","TOK_STRING","TOK_SYNTAX","TOK_T61String","TOK_TAGS","TOK_TeletexString",
417"TOK_TRUE","TOK_TYPE_IDENTIFIER","TOK_UNIQUE","TOK_UNIVERSAL","TOK_UniversalString",
418"TOK_UTCTime","TOK_UTF8String","TOK_VideotexString","TOK_VisibleString","TOK_WITH",
419"TOK_EXCEPT","'^'","TOK_INTERSECTION","'|'","TOK_UNION","TOK_TwoDots","TOK_ThreeDots",
vlm2728a8d2005-01-23 09:51:44 +0000420"'{'","'}'","'('","')'","';'","','","':'","'!'","'.'","'<'","'@'","'['","']'",
vlm6a02a8a2004-09-08 00:28:11 +0000421"ParsedGrammar","ModuleList","ModuleSpecification","optObjectIdentifier","ObjectIdentifier",
422"ObjectIdentifierBody","ObjectIdentifierElement","optModuleSpecificationFlags",
423"ModuleSpecificationFlags","ModuleSpecificationFlag","optModuleSpecificationBody",
424"ModuleSpecificationBody","ModuleSpecificationElement","@1","ImportsDefinition",
425"ImportsBundleSet","ImportsBundle","ImportsList","ImportsElement","ExportsDefinition",
426"ExportsBody","ExportsElement","ValueSetDefinition","DefinedTypeRef","optValueSetBody",
427"ValueSetBody","ValueSetElement","DataTypeReference","ParameterArgumentList",
vlm0aa86902004-10-12 23:26:53 +0000428"ParameterArgumentName","ActualParameterList","ActualParameter","optComponentTypeLists",
429"ComponentTypeLists","ComponentType","AlternativeTypeLists","AlternativeType",
430"ClassDeclaration","optUnique","ClassFieldList","ClassField","optWithSyntax",
431"WithSyntax","@2","WithSyntaxFormat","WithSyntaxFormatToken","ExtensionAndException",
432"Type","TypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList",
433"ComplexTypeReferenceElement","ClassFieldIdentifier","ClassFieldName","ValueDefinition",
434"Value","@3","DefinedValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
435"BasicType","BasicString","Union","Intersection","Except","optConstraints","Constraints",
436"SetOfConstraints","ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement",
vlm6611add2005-03-20 14:28:32 +0000437"@4","ConstraintRangeSpec","ConstraintSpec","SingleValue","ContainedSubtype",
438"WithComponents","WithComponentsList","WithComponentsElement","optPresenceConstraint",
439"PresenceConstraint","TableConstraint","SimpleTableConstraint","ComponentRelationConstraint",
440"AtNotationList","AtNotationElement","ComponentIdList","optMarker","Marker",
441"UniverationDefinition","UniverationList","UniverationElement","SignedNumber",
442"optTag","Tag","TagTypeValue","TagClass","TagPlicit","TypeRefName","ObjectClassReference",
443"optIdentifier","Identifier", NULL
vlm6a02a8a2004-09-08 00:28:11 +0000444};
445#endif
446
447static const short yyr1[] = { 0,
vlm2728a8d2005-01-23 09:51:44 +0000448 116, 117, 117, 118, 119, 119, 120, 120, 121, 121,
449 122, 122, 122, 123, 123, 124, 124, 125, 125, 125,
450 125, 125, 126, 126, 127, 127, 128, 128, 128, 128,
451 128, 129, 128, 128, 130, 130, 131, 131, 132, 133,
452 133, 134, 134, 134, 135, 135, 135, 136, 136, 137,
453 137, 137, 138, 139, 139, 140, 140, 141, 141, 142,
454 142, 143, 143, 143, 143, 144, 144, 145, 145, 145,
vlm4053ca52005-02-18 16:34:21 +0000455 145, 146, 146, 147, 147, 148, 148, 149, 149, 150,
456 150, 150, 151, 151, 152, 152, 153, 154, 154, 155,
457 155, 156, 156, 156, 157, 157, 159, 158, 160, 160,
458 161, 161, 162, 162, 162, 163, 164, 164, 164, 164,
vlm5e2c4b92005-03-20 11:12:40 +0000459 164, 164, 164, 164, 164, 164, 164, 165, 165, 165,
460 165, 165, 165, 166, 166, 167, 168, 169, 169, 170,
461 171, 172, 171, 171, 171, 171, 171, 171, 171, 171,
462 171, 173, 173, 174, 174, 175, 175, 175, 175, 175,
vlm4053ca52005-02-18 16:34:21 +0000463 175, 175, 175, 175, 175, 175, 175, 175, 176, 176,
464 176, 177, 177, 178, 178, 178, 178, 178, 178, 178,
465 178, 178, 178, 178, 178, 178, 178, 179, 179, 180,
466 180, 181, 182, 182, 183, 183, 184, 184, 185, 185,
467 185, 186, 186, 186, 186, 187, 187, 187, 187, 187,
vlm6611add2005-03-20 14:28:32 +0000468 187, 187, 187, 187, 187, 188, 187, 189, 189, 189,
469 189, 190, 190, 191, 191, 191, 191, 191, 192, 193,
470 194, 194, 195, 195, 196, 196, 197, 197, 197, 198,
471 198, 199, 200, 201, 201, 202, 202, 203, 203, 204,
472 204, 205, 205, 206, 206, 207, 207, 208, 208, 208,
473 208, 208, 209, 209, 210, 210, 211, 212, 213, 213,
474 213, 213, 214, 214, 214, 215, 215, 216, 217, 217,
475 218
vlm6a02a8a2004-09-08 00:28:11 +0000476};
477
478static const short yyr2[] = { 0,
479 1, 1, 2, 8, 0, 1, 3, 2, 1, 2,
480 1, 4, 1, 0, 1, 1, 2, 2, 2, 2,
481 2, 2, 0, 1, 1, 2, 1, 1, 1, 1,
482 1, 0, 3, 1, 3, 2, 1, 2, 4, 1,
vlm0aa86902004-10-12 23:26:53 +0000483 3, 1, 3, 1, 3, 3, 2, 1, 3, 1,
484 3, 1, 6, 1, 1, 0, 1, 1, 3, 1,
485 1, 4, 3, 3, 6, 1, 3, 1, 3, 3,
vlm4053ca52005-02-18 16:34:21 +0000486 3, 1, 3, 1, 1, 0, 1, 1, 3, 3,
487 3, 1, 1, 3, 2, 1, 5, 0, 1, 1,
488 3, 2, 4, 4, 0, 1, 0, 6, 1, 2,
vlm5e2c4b92005-03-20 11:12:40 +0000489 1, 1, 1, 3, 3, 3, 1, 4, 4, 4,
490 6, 6, 1, 4, 4, 1, 3, 1, 3, 3,
491 3, 1, 3, 1, 3, 1, 1, 1, 1, 4,
492 3, 0, 3, 1, 1, 1, 1, 1, 1, 1,
493 1, 1, 3, 1, 2, 1, 1, 1, 1, 2,
494 2, 1, 1, 2, 2, 1, 1, 1, 1, 1,
vlm4053ca52005-02-18 16:34:21 +0000495 2, 1, 2, 1, 1, 1, 1, 1, 1, 1,
vlm6a02a8a2004-09-08 00:28:11 +0000496 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
vlm4053ca52005-02-18 16:34:21 +0000497 1, 1, 0, 1, 1, 4, 3, 4, 1, 3,
vlma6a12e32005-03-20 12:58:00 +0000498 5, 1, 3, 3, 3, 4, 3, 1, 1, 3,
vlm6611add2005-03-20 14:28:32 +0000499 3, 3, 3, 1, 1, 0, 5, 1, 2, 2,
500 3, 1, 1, 1, 1, 1, 1, 1, 1, 5,
501 1, 3, 1, 3, 0, 1, 1, 1, 1, 1,
502 1, 3, 4, 1, 3, 2, 3, 1, 3, 0,
503 1, 1, 2, 2, 3, 1, 3, 1, 4, 4,
504 1, 1, 1, 1, 0, 1, 2, 4, 0, 1,
505 1, 1, 0, 1, 1, 1, 1, 1, 0, 1,
506 1
vlm6a02a8a2004-09-08 00:28:11 +0000507};
508
509static const short yydefact[] = { 0,
vlm6611add2005-03-20 14:28:32 +0000510 266, 267, 1, 2, 5, 3, 0, 0, 6, 271,
vlm6a02a8a2004-09-08 00:28:11 +0000511 13, 8, 0, 9, 11, 14, 7, 10, 0, 0,
512 0, 0, 0, 0, 0, 15, 16, 0, 22, 20,
vlm4053ca52005-02-18 16:34:21 +0000513 18, 21, 19, 0, 17, 12, 23, 164, 0, 0,
514 165, 166, 167, 0, 168, 169, 177, 170, 171, 172,
515 173, 174, 175, 176, 0, 24, 25, 27, 28, 31,
vlm0aa86902004-10-12 23:26:53 +0000516 29, 30, 34, 0, 0, 32, 0, 47, 0, 48,
517 50, 52, 36, 0, 37, 0, 40, 42, 44, 4,
vlm6611add2005-03-20 14:28:32 +0000518 26, 255, 118, 268, 0, 146, 0, 0, 160, 153,
vlm5e2c4b92005-03-20 11:12:40 +0000519 157, 159, 147, 0, 0, 148, 152, 156, 0, 0,
520 54, 55, 149, 158, 122, 0, 33, 46, 45, 0,
vlm6611add2005-03-20 14:28:32 +0000521 0, 35, 38, 0, 0, 0, 0, 259, 64, 63,
522 0, 256, 263, 0, 161, 155, 154, 151, 150, 0,
vlm5e2c4b92005-03-20 11:12:40 +0000523 66, 0, 68, 0, 0, 0, 49, 51, 5, 41,
vlm6611add2005-03-20 14:28:32 +0000524 43, 0, 261, 262, 260, 0, 118, 268, 113, 0,
vlm5e2c4b92005-03-20 11:12:40 +0000525 0, 183, 183, 62, 183, 116, 162, 149, 107, 0,
vlm6611add2005-03-20 14:28:32 +0000526 265, 264, 257, 119, 121, 0, 0, 0, 0, 56,
527 128, 129, 123, 124, 126, 120, 137, 139, 138, 253,
528 254, 135, 134, 136, 132, 130, 141, 140, 0, 142,
529 39, 0, 90, 255, 127, 0, 0, 0, 0, 0,
vlm4053ca52005-02-18 16:34:21 +0000530 76, 0, 0, 184, 185, 76, 0, 106, 0, 163,
vlm6611add2005-03-20 14:28:32 +0000531 255, 255, 67, 71, 70, 69, 217, 0, 214, 213,
532 0, 212, 215, 0, 60, 0, 0, 0, 57, 58,
533 61, 192, 0, 198, 199, 205, 204, 230, 231, 216,
534 219, 218, 0, 0, 0, 0, 95, 0, 0, 242,
535 88, 88, 92, 241, 0, 258, 0, 103, 0, 83,
536 86, 255, 117, 0, 0, 0, 77, 78, 82, 255,
537 0, 189, 269, 0, 0, 269, 252, 244, 0, 246,
538 251, 248, 0, 72, 74, 75, 65, 0, 208, 0,
539 0, 0, 0, 0, 53, 0, 180, 181, 178, 179,
540 0, 0, 182, 0, 0, 0, 0, 125, 144, 133,
541 143, 131, 0, 87, 96, 91, 243, 89, 240, 240,
542 114, 0, 108, 0, 85, 0, 255, 109, 0, 240,
543 187, 0, 255, 270, 0, 110, 255, 245, 0, 0,
544 115, 255, 206, 209, 210, 203, 201, 0, 232, 197,
545 59, 193, 194, 195, 0, 202, 200, 0, 0, 234,
546 145, 0, 93, 94, 104, 105, 142, 84, 186, 81,
547 79, 80, 190, 0, 188, 0, 247, 0, 0, 73,
548 0, 211, 223, 0, 221, 183, 196, 0, 236, 238,
549 233, 0, 97, 0, 111, 112, 250, 249, 207, 220,
550 0, 225, 237, 0, 235, 0, 191, 222, 228, 229,
551 227, 224, 226, 239, 101, 0, 99, 102, 98, 100,
552 0, 0, 0
vlm6a02a8a2004-09-08 00:28:11 +0000553};
554
vlm6611add2005-03-20 14:28:32 +0000555static const short yydefgoto[] = { 421,
vlm6a02a8a2004-09-08 00:28:11 +0000556 3, 4, 8, 9, 13, 14, 25, 26, 27, 55,
vlm5e2c4b92005-03-20 11:12:40 +0000557 56, 57, 107, 58, 74, 75, 76, 77, 59, 69,
vlm6611add2005-03-20 14:28:32 +0000558 70, 60, 100, 228, 229, 230, 61, 130, 131, 283,
559 284, 266, 267, 268, 259, 260, 119, 319, 192, 193,
560 314, 315, 406, 416, 417, 269, 285, 155, 156, 173,
561 174, 194, 195, 62, 186, 244, 187, 310, 157, 103,
562 159, 104, 301, 302, 304, 203, 204, 205, 271, 272,
563 232, 381, 291, 233, 234, 235, 236, 384, 385, 412,
564 413, 237, 238, 239, 359, 360, 389, 253, 254, 210,
565 279, 280, 240, 255, 122, 123, 146, 163, 241, 105,
566 333, 242
vlm6a02a8a2004-09-08 00:28:11 +0000567};
568
vlm6611add2005-03-20 14:28:32 +0000569static const short yypact[] = { 247,
570-32768,-32768, 247,-32768, -74,-32768, 46, 59,-32768,-32768,
571-32768,-32768, 49,-32768, -66, 221,-32768,-32768, 57, 55,
572 75, 83, 119, 104, 195, 221,-32768, 116,-32768,-32768,
573-32768,-32768,-32768, 208,-32768,-32768, 427,-32768, 222, 24,
574-32768,-32768,-32768, 86,-32768,-32768,-32768,-32768,-32768,-32768,
575-32768,-32768,-32768,-32768, 209, 427,-32768,-32768,-32768,-32768,
576-32768,-32768,-32768, 351, 656,-32768, 146,-32768, 189,-32768,
577 162,-32768,-32768, 32,-32768, -1,-32768, 167,-32768,-32768,
578-32768, -8, 171,-32768, 194,-32768, 203, 223,-32768,-32768,
579-32768,-32768,-32768, 249, 225,-32768,-32768,-32768, 731, 299,
580-32768,-32768,-32768,-32768, 196, 305,-32768,-32768,-32768, 232,
581 205,-32768,-32768, 247, 232, 210, 213, 6,-32768,-32768,
582 504,-32768, 18, 232,-32768,-32768,-32768,-32768,-32768, -3,
583-32768, 202, 204, 216, 267, 200,-32768,-32768, -74,-32768,
584-32768, 285,-32768,-32768,-32768, 303, -42, 218, 288, 224,
585 257, -18, 68,-32768, 71,-32768,-32768, 226,-32768, 227,
586-32768,-32768,-32768,-32768,-32768, 323, 731, 320, 232, 80,
587-32768,-32768, 220,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
588-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 229, 228,
589-32768, 61,-32768, 5,-32768, 219, 311, 26, 293, 233,
590 52, 215, 274,-32768, 238, 52, 276,-32768, 43,-32768,
591 8, 231,-32768,-32768,-32768,-32768,-32768, 321,-32768,-32768,
592 -2,-32768,-32768, 317,-32768, 247, 215, 244, 241,-32768,
593 193, 256, 248, -2,-32768,-32768,-32768, 252,-32768,-32768,
594-32768,-32768, 285, 352, 320, 200, 262, 285, 200,-32768,
595 270, 270,-32768,-32768, 581,-32768, 320, 250, 66,-32768,
596-32768, 231,-32768, 215, 291, 260, 253,-32768,-32768, 231,
597 261, 81, 320, 215, 265, 320,-32768,-32768, 124,-32768,
598-32768, 266, 143,-32768,-32768,-32768,-32768, 263, 258, 271,
599 70, 273, 275, 272,-32768, 80,-32768,-32768,-32768,-32768,
600 215, 215,-32768, 215, 215, 279, 269,-32768,-32768, 376,
601-32768,-32768, 301,-32768,-32768,-32768,-32768,-32768, 31, 31,
602-32768, 207,-32768, 26,-32768, 278, 231,-32768, 52, 31,
603-32768, 283, 231,-32768, 280,-32768, 231,-32768, 38, 207,
604-32768, 8,-32768,-32768, 277,-32768,-32768, 42,-32768,-32768,
605-32768,-32768,-32768,-32768, 282,-32768,-32768, 7, 163,-32768,
606-32768, 287,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
607-32768,-32768, 284, 581,-32768, 581,-32768, 290, 297,-32768,
608 352,-32768,-32768, 164,-32768, 71,-32768, 320, 294,-32768,
609-32768, 269,-32768, 215,-32768,-32768,-32768,-32768, 376,-32768,
610 42, 2, 294, 320,-32768, 173, 193,-32768,-32768,-32768,
611-32768,-32768,-32768,-32768,-32768, 10,-32768,-32768,-32768,-32768,
612 393, 406,-32768
vlm6a02a8a2004-09-08 00:28:11 +0000613};
614
615static const short yypgoto[] = {-32768,
vlm6611add2005-03-20 14:28:32 +0000616-32768, 404, 281,-32768,-32768, 395,-32768,-32768, 385,-32768,
617-32768, 356,-32768,-32768,-32768, 339,-32768, 304,-32768,-32768,
618 312,-32768, 358,-32768,-32768, 125,-32768,-32768, 259,-32768,
619 82, 234,-32768, 100,-32768, 106,-32768, 179,-32768, 184,
620-32768,-32768,-32768,-32768, 17, -189, -78, -139, -53,-32768,
621 206, -186, -122,-32768, -56,-32768, -185, 56, -43, -119,
622-32768, 40,-32768,-32768,-32768, -150,-32768,-32768, -201, -163,
623 -101,-32768, 212,-32768, -264,-32768,-32768,-32768, 47,-32768,
624-32768,-32768,-32768,-32768,-32768, 60, 63, -162,-32768,-32768,
625-32768, 108, -126, -81,-32768,-32768,-32768,-32768, 28,-32768,
626 177, -7
vlm6a02a8a2004-09-08 00:28:11 +0000627};
628
629
vlm6611add2005-03-20 14:28:32 +0000630#define YYLAST 825
vlm6a02a8a2004-09-08 00:28:11 +0000631
632
633static const short yytable[] = { 15,
vlm6611add2005-03-20 14:28:32 +0000634 121, 158, 207, 120, 208, 15, 231, 252, 261, 188,
635 101, 101, 175, 415, 10, 10, 409, 171, 172, 117,
636 102, 102, 171, 172, 143, 294, 347, 5, 7, 65,
637 5, 10, 72, 10, 1, 2, 79, 249, 19, 10,
638 67, 357, 1, 2, 114, 10, 180, 181, 65, 10,
639 10, 180, 181, 10, 11, 132, 10, 11, 161, 10,
640 -266, 200, 326, 249, 64, 28, 79, 71, 124, 162,
641 410, 78, 335, 250, 411, 217, 63, 10, 180, 181,
642 144, 265, 281, 64, 201, 217, 202, 10, 180, 181,
643 1, 2, 16, 10, 145, 63, 1, 2, 289, 250,
644 166, 78, 72, 355, 167, 118, 115, 79, -240, 290,
645 218, 29, -240, 419, 219, 251, 165, 388, 118, 188,
646 175, 118, 188, 132, 219, 220, 133, 258, 190, 346,
647 68, 73, 231, 287, 261, 158, 365, 71, 112, 277,
648 221, 139, 78, 383, 277, 263, 278, 200, 160, 12,
649 200, 164, 17, 258, 378, 223, 363, 364, 30, 222,
650 214, 216, 176, 189, 247, 223, 31, 372, 248, 323,
651 206, 32, 202, 324, 224, 202, 415, 297, 298, 299,
652 300, 225, 226, 325, 227, 171, 172, 33, 332, 312,
653 262, 330, 317, 270, 133, 366, 215, 34, 270, 352,
654 353, 282, 354, 286, 177, 178, 179, 10, 180, 181,
655 1, 2, 281, 379, 10, 180, 181, 1, 2, 418,
656 217, 36, 10, 180, 181, 1, 2, 338, 37, 418,
657 407, 339, 20, 66, 395, 402, 396, 311, 190, 10,
658 21, 190, 1, 2, 182, 218, 341, 80, 370, 321,
659 342, 374, 108, 293, 158, 376, 158, 1, 2, 219,
660 220, 22, 183, 23, 111, 334, 391, 400, 334, 116,
661 392, 401, 24, 189, 125, 221, 189, 1, 2, 171,
662 172, 124, 160, 126, 217, 184, 10, 180, 181, 297,
663 298, 299, 300, 127, 222, 109, 110, 171, 172, 128,
664 223, 134, 185, 83, 84, 129, 135, 136, 138, 224,
665 168, 196, 169, 141, 367, 142, 262, 226, 170, 227,
666 -267, 270, 197, 219, 199, 212, 198, 10, 209, 211,
667 243, 282, 367, 256, 286, 257, 246, 264, 356, 245,
668 386, 273, 274, 276, 118, 288, 292, 295, 296, 189,
669 390, 303, 305, 82, 307, 309, 313, 318, 327, 322,
670 329, 83, 84, 328, 223, 343, 331, 189, 336, 344,
671 340, 345, 85, 38, 86, 348, 87, 350, 349, 361,
672 390, 358, 362, 369, 373, 375, 88, 387, 382, 393,
673 89, 394, 422, 386, 90, 397, 414, 91, 41, 42,
674 43, 160, 398, 160, 404, 423, 6, 18, 92, 45,
675 35, 81, 113, 93, 46, 94, 47, 95, 140, 191,
676 351, 137, 106, 380, 48, 213, 96, 97, 371, 368,
677 320, 316, 420, 49, 10, 50, 399, 1, 2, 275,
678 51, 98, 52, 53, 54, 306, 377, 408, 308, 38,
679 403, 405, 337, 99, 0, 0, 0, 0, 0, 0,
680 0, 0, 0, 0, 39, 0, 0, 0, 40, 0,
681 0, 0, 0, 0, 41, 42, 43, 0, 0, 0,
682 44, 0, 0, 0, 0, 45, 0, 0, 0, 0,
683 46, 0, 47, 0, 0, 0, 0, 0, 0, 0,
684 48, 0, 0, 0, 0, 0, 0, 0, 0, 49,
685 0, 50, 0, 0, 147, 148, 51, 0, 52, 53,
686 54, 149, 0, 0, 0, 85, 38, 86, 0, 87,
687 150, 0, 0, 0, 0, 0, 0, 0, 0, 88,
688 0, 0, 0, 89, 0, 0, 0, 90, 0, 0,
689 91, 41, 42, 43, 0, 0, 0, 0, 0, 151,
690 0, 92, 45, 0, 0, 0, 93, 46, 94, 47,
691 95, 0, 0, 0, 0, 0, 0, 48, 0, 96,
692 97, 152, 153, 0, 0, 0, 49, 0, 50, 0,
693 154, 147, 148, 51, 98, 52, 53, 54, 149, 0,
694 0, 0, 85, 38, 86, 0, 87, 150, 0, 0,
695 0, 0, 0, 0, 0, 0, 88, 0, 0, 0,
696 89, 0, 0, 0, 90, 0, 0, 91, 41, 42,
697 43, 0, 0, 0, 0, 0, 151, 0, 92, 45,
698 0, 0, 0, 93, 46, 94, 47, 95, 0, 0,
699 0, 0, 0, 0, 48, 0, 96, 97, 152, 153,
700 0, 0, 0, 49, 0, 50, 83, 84, 0, 0,
701 51, 98, 52, 53, 54, 0, 0, 85, 38, 86,
702 0, 87, 0, 0, 0, 0, 0, 0, 0, 0,
vlm5e2c4b92005-03-20 11:12:40 +0000703 0, 88, 0, 0, 0, 89, 0, 0, 0, 90,
704 0, 0, 91, 41, 42, 43, 0, 0, 0, 0,
vlm6611add2005-03-20 14:28:32 +0000705 0, 0, 0, 92, 45, 0, 0, 0, 93, 46,
vlm5e2c4b92005-03-20 11:12:40 +0000706 94, 47, 95, 0, 0, 0, 0, 0, 0, 48,
vlm6611add2005-03-20 14:28:32 +0000707 0, 96, 97, 0, 0, 0, 0, 0, 49, 0,
708 50, 1, 2, 0, 0, 51, 98, 52, 53, 54,
709 0, 0, 85, 38, 86, 0, 87, 0, 0, 0,
710 0, 0, 0, 0, 0, 0, 88, 0, 0, 0,
711 89, 0, 0, 0, 90, 0, 0, 91, 41, 42,
712 43, 0, 0, 0, 0, 0, 0, 0, 92, 45,
713 0, 0, 0, 93, 46, 94, 47, 95, 0, 0,
714 0, 0, 0, 0, 48, 0, 96, 97, 0, 0,
715 0, 0, 0, 49, 0, 50, 0, 0, 0, 0,
716 51, 98, 52, 53, 54
vlm6a02a8a2004-09-08 00:28:11 +0000717};
718
719static const short yycheck[] = { 7,
vlm6611add2005-03-20 14:28:32 +0000720 82, 121, 153, 82, 155, 13, 170, 194, 198, 136,
721 64, 65, 135, 4, 8, 8, 15, 13, 14, 28,
722 64, 65, 13, 14, 19, 227, 291, 0, 103, 37,
723 3, 8, 40, 8, 11, 12, 44, 33, 105, 8,
724 17, 306, 11, 12, 46, 8, 9, 10, 56, 8,
725 8, 9, 10, 8, 9, 99, 8, 9, 41, 8,
726 103, 80, 264, 33, 37, 9, 74, 40, 111, 52,
727 69, 44, 274, 69, 73, 6, 37, 8, 9, 10,
728 75, 30, 209, 56, 103, 6, 105, 8, 9, 10,
729 11, 12, 34, 8, 89, 56, 11, 12, 101, 69,
730 104, 74, 110, 305, 108, 114, 108, 115, 104, 112,
731 31, 57, 108, 104, 45, 194, 124, 111, 114, 246,
732 243, 114, 249, 167, 45, 46, 99, 102, 136, 60,
733 107, 46, 296, 212, 324, 255, 322, 110, 107, 102,
734 61, 114, 115, 102, 102, 199, 104, 80, 121, 104,
735 80, 124, 104, 102, 340, 86, 319, 320, 84, 80,
736 168, 169, 135, 136, 104, 86, 84, 330, 108, 104,
737 103, 53, 105, 108, 95, 105, 4, 97, 98, 99,
738 100, 102, 103, 262, 105, 13, 14, 84, 108, 246,
739 198, 270, 249, 201, 167, 322, 169, 3, 206, 301,
740 302, 209, 304, 211, 5, 6, 7, 8, 9, 10,
741 11, 12, 339, 340, 8, 9, 10, 11, 12, 406,
742 6, 106, 8, 9, 10, 11, 12, 104, 21, 416,
743 394, 108, 12, 12, 374, 386, 376, 245, 246, 8,
744 20, 249, 11, 12, 45, 31, 104, 39, 327, 257,
745 108, 333, 107, 226, 374, 337, 376, 11, 12, 45,
746 46, 41, 63, 43, 103, 273, 104, 104, 276, 103,
747 108, 108, 52, 246, 81, 61, 249, 11, 12, 13,
748 14, 111, 255, 81, 6, 86, 8, 9, 10, 97,
749 98, 99, 100, 71, 80, 107, 108, 13, 14, 51,
750 86, 3, 103, 11, 12, 81, 111, 3, 104, 95,
751 109, 9, 109, 104, 322, 103, 324, 103, 103, 105,
752 103, 329, 35, 45, 68, 3, 103, 8, 103, 103,
753 111, 339, 340, 115, 342, 25, 109, 105, 60, 111,
754 348, 68, 105, 68, 114, 25, 30, 104, 108, 322,
755 358, 96, 105, 3, 103, 4, 95, 88, 68, 110,
756 108, 11, 12, 104, 86, 103, 106, 340, 104, 112,
757 105, 101, 22, 23, 24, 103, 26, 106, 104, 4,
758 388, 113, 82, 106, 102, 106, 36, 106, 112, 103,
759 40, 108, 0, 401, 44, 106, 404, 47, 48, 49,
760 50, 374, 106, 376, 111, 0, 3, 13, 58, 59,
761 26, 56, 74, 63, 64, 65, 66, 67, 115, 139,
762 296, 110, 65, 342, 74, 167, 76, 77, 329, 324,
763 252, 248, 416, 83, 8, 85, 381, 11, 12, 206,
764 90, 91, 92, 93, 94, 234, 339, 401, 243, 23,
765 388, 392, 276, 103, -1, -1, -1, -1, -1, -1,
766 -1, -1, -1, -1, 38, -1, -1, -1, 42, -1,
767 -1, -1, -1, -1, 48, 49, 50, -1, -1, -1,
768 54, -1, -1, -1, -1, 59, -1, -1, -1, -1,
769 64, -1, 66, -1, -1, -1, -1, -1, -1, -1,
770 74, -1, -1, -1, -1, -1, -1, -1, -1, 83,
771 -1, 85, -1, -1, 11, 12, 90, -1, 92, 93,
772 94, 18, -1, -1, -1, 22, 23, 24, -1, 26,
773 27, -1, -1, -1, -1, -1, -1, -1, -1, 36,
774 -1, -1, -1, 40, -1, -1, -1, 44, -1, -1,
775 47, 48, 49, 50, -1, -1, -1, -1, -1, 56,
776 -1, 58, 59, -1, -1, -1, 63, 64, 65, 66,
777 67, -1, -1, -1, -1, -1, -1, 74, -1, 76,
778 77, 78, 79, -1, -1, -1, 83, -1, 85, -1,
779 87, 11, 12, 90, 91, 92, 93, 94, 18, -1,
780 -1, -1, 22, 23, 24, -1, 26, 27, -1, -1,
781 -1, -1, -1, -1, -1, -1, 36, -1, -1, -1,
782 40, -1, -1, -1, 44, -1, -1, 47, 48, 49,
783 50, -1, -1, -1, -1, -1, 56, -1, 58, 59,
784 -1, -1, -1, 63, 64, 65, 66, 67, -1, -1,
785 -1, -1, -1, -1, 74, -1, 76, 77, 78, 79,
786 -1, -1, -1, 83, -1, 85, 11, 12, -1, -1,
787 90, 91, 92, 93, 94, -1, -1, 22, 23, 24,
788 -1, 26, -1, -1, -1, -1, -1, -1, -1, -1,
vlm5e2c4b92005-03-20 11:12:40 +0000789 -1, 36, -1, -1, -1, 40, -1, -1, -1, 44,
790 -1, -1, 47, 48, 49, 50, -1, -1, -1, -1,
vlm6611add2005-03-20 14:28:32 +0000791 -1, -1, -1, 58, 59, -1, -1, -1, 63, 64,
vlm5e2c4b92005-03-20 11:12:40 +0000792 65, 66, 67, -1, -1, -1, -1, -1, -1, 74,
vlm6611add2005-03-20 14:28:32 +0000793 -1, 76, 77, -1, -1, -1, -1, -1, 83, -1,
794 85, 11, 12, -1, -1, 90, 91, 92, 93, 94,
795 -1, -1, 22, 23, 24, -1, 26, -1, -1, -1,
796 -1, -1, -1, -1, -1, -1, 36, -1, -1, -1,
797 40, -1, -1, -1, 44, -1, -1, 47, 48, 49,
798 50, -1, -1, -1, -1, -1, -1, -1, 58, 59,
799 -1, -1, -1, 63, 64, 65, 66, 67, -1, -1,
800 -1, -1, -1, -1, 74, -1, 76, 77, -1, -1,
801 -1, -1, -1, 83, -1, 85, -1, -1, -1, -1,
802 90, 91, 92, 93, 94
vlm6a02a8a2004-09-08 00:28:11 +0000803};
804/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
805#line 3 "/usr/share/bison.simple"
806/* This file comes from bison-1.28. */
807
808/* Skeleton output parser for bison,
809 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
810
811 This program is free software; you can redistribute it and/or modify
812 it under the terms of the GNU General Public License as published by
813 the Free Software Foundation; either version 2, or (at your option)
814 any later version.
815
816 This program is distributed in the hope that it will be useful,
817 but WITHOUT ANY WARRANTY; without even the implied warranty of
818 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
819 GNU General Public License for more details.
820
821 You should have received a copy of the GNU General Public License
822 along with this program; if not, write to the Free Software
823 Foundation, Inc., 59 Temple Place - Suite 330,
824 Boston, MA 02111-1307, USA. */
825
826/* As a special exception, when this file is copied by Bison into a
827 Bison output file, you may use that output file without restriction.
828 This special exception was added by the Free Software Foundation
829 in version 1.24 of Bison. */
830
831/* This is the parser code that is written into each bison parser
832 when the %semantic_parser declaration is not specified in the grammar.
833 It was written by Richard Stallman by simplifying the hairy parser
834 used when %semantic_parser is specified. */
835
836#ifndef YYSTACK_USE_ALLOCA
837#ifdef alloca
838#define YYSTACK_USE_ALLOCA
839#else /* alloca not defined */
840#ifdef __GNUC__
841#define YYSTACK_USE_ALLOCA
842#define alloca __builtin_alloca
843#else /* not GNU C. */
844#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
845#define YYSTACK_USE_ALLOCA
846#include <alloca.h>
847#else /* not sparc */
848/* We think this test detects Watcom and Microsoft C. */
849/* This used to test MSDOS, but that is a bad idea
850 since that symbol is in the user namespace. */
851#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
852#if 0 /* No need for malloc.h, which pollutes the namespace;
853 instead, just don't use alloca. */
854#include <malloc.h>
855#endif
856#else /* not MSDOS, or __TURBOC__ */
857#if defined(_AIX)
858/* I don't know what this was needed for, but it pollutes the namespace.
859 So I turned it off. rms, 2 May 1997. */
860/* #include <malloc.h> */
861 #pragma alloca
862#define YYSTACK_USE_ALLOCA
863#else /* not MSDOS, or __TURBOC__, or _AIX */
864#if 0
865#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
866 and on HPUX 10. Eventually we can turn this on. */
867#define YYSTACK_USE_ALLOCA
868#define alloca __builtin_alloca
869#endif /* __hpux */
870#endif
871#endif /* not _AIX */
872#endif /* not MSDOS, or __TURBOC__ */
873#endif /* not sparc */
874#endif /* not GNU C */
875#endif /* alloca not defined */
876#endif /* YYSTACK_USE_ALLOCA not defined */
877
878#ifdef YYSTACK_USE_ALLOCA
879#define YYSTACK_ALLOC alloca
vlmfa67ddc2004-06-03 03:38:44 +0000880#else
vlm6a02a8a2004-09-08 00:28:11 +0000881#define YYSTACK_ALLOC malloc
vlmfa67ddc2004-06-03 03:38:44 +0000882#endif
883
vlm6a02a8a2004-09-08 00:28:11 +0000884/* Note: there must be only one dollar sign in this file.
885 It is replaced by the list of actions, each action
886 as one case of the switch. */
vlmfa67ddc2004-06-03 03:38:44 +0000887
888#define yyerrok (yyerrstatus = 0)
889#define yyclearin (yychar = YYEMPTY)
890#define YYEMPTY -2
891#define YYEOF 0
892#define YYACCEPT goto yyacceptlab
vlm6a02a8a2004-09-08 00:28:11 +0000893#define YYABORT goto yyabortlab
vlmfa67ddc2004-06-03 03:38:44 +0000894#define YYERROR goto yyerrlab1
vlm6a02a8a2004-09-08 00:28:11 +0000895/* Like YYERROR except do call yyerror.
896 This remains here temporarily to ease the
897 transition to the new meaning of YYERROR, for GCC.
vlmfa67ddc2004-06-03 03:38:44 +0000898 Once GCC version 2 has supplanted version 1, this can go. */
899#define YYFAIL goto yyerrlab
900#define YYRECOVERING() (!!yyerrstatus)
vlm6a02a8a2004-09-08 00:28:11 +0000901#define YYBACKUP(token, value) \
vlmfa67ddc2004-06-03 03:38:44 +0000902do \
903 if (yychar == YYEMPTY && yylen == 1) \
vlm6a02a8a2004-09-08 00:28:11 +0000904 { yychar = (token), yylval = (value); \
vlmfa67ddc2004-06-03 03:38:44 +0000905 yychar1 = YYTRANSLATE (yychar); \
906 YYPOPSTACK; \
907 goto yybackup; \
908 } \
909 else \
vlm6a02a8a2004-09-08 00:28:11 +0000910 { yyerror ("syntax error: cannot back up"); YYERROR; } \
vlmfa67ddc2004-06-03 03:38:44 +0000911while (0)
912
913#define YYTERROR 1
914#define YYERRCODE 256
915
vlm6a02a8a2004-09-08 00:28:11 +0000916#ifndef YYPURE
917#define YYLEX yylex()
vlmfa67ddc2004-06-03 03:38:44 +0000918#endif
919
vlm6a02a8a2004-09-08 00:28:11 +0000920#ifdef YYPURE
921#ifdef YYLSP_NEEDED
922#ifdef YYLEX_PARAM
923#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
924#else
925#define YYLEX yylex(&yylval, &yylloc)
926#endif
927#else /* not YYLSP_NEEDED */
928#ifdef YYLEX_PARAM
929#define YYLEX yylex(&yylval, YYLEX_PARAM)
930#else
931#define YYLEX yylex(&yylval)
932#endif
933#endif /* not YYLSP_NEEDED */
934#endif
vlmfa67ddc2004-06-03 03:38:44 +0000935
vlm6a02a8a2004-09-08 00:28:11 +0000936/* If nonreentrant, generate the variables here */
vlmfa67ddc2004-06-03 03:38:44 +0000937
vlm6a02a8a2004-09-08 00:28:11 +0000938#ifndef YYPURE
vlmfa67ddc2004-06-03 03:38:44 +0000939
vlm6a02a8a2004-09-08 00:28:11 +0000940int yychar; /* the lookahead symbol */
941YYSTYPE yylval; /* the semantic value of the */
942 /* lookahead symbol */
vlmfa67ddc2004-06-03 03:38:44 +0000943
vlm6a02a8a2004-09-08 00:28:11 +0000944#ifdef YYLSP_NEEDED
945YYLTYPE yylloc; /* location data for the lookahead */
946 /* symbol */
947#endif
vlmfa67ddc2004-06-03 03:38:44 +0000948
vlm6a02a8a2004-09-08 00:28:11 +0000949int yynerrs; /* number of parse errors so far */
950#endif /* not YYPURE */
951
952#if YYDEBUG != 0
953int yydebug; /* nonzero means print parse trace */
954/* Since this is uninitialized, it does not stop multiple parsers
955 from coexisting. */
956#endif
957
958/* YYINITDEPTH indicates the initial size of the parser's stacks */
959
vlmfa67ddc2004-06-03 03:38:44 +0000960#ifndef YYINITDEPTH
vlm6a02a8a2004-09-08 00:28:11 +0000961#define YYINITDEPTH 200
vlmfa67ddc2004-06-03 03:38:44 +0000962#endif
963
vlm6a02a8a2004-09-08 00:28:11 +0000964/* YYMAXDEPTH is the maximum size the stacks can grow to
965 (effective only if the built-in stack extension method is used). */
vlmfa67ddc2004-06-03 03:38:44 +0000966
967#if YYMAXDEPTH == 0
vlm6a02a8a2004-09-08 00:28:11 +0000968#undef YYMAXDEPTH
vlmfa67ddc2004-06-03 03:38:44 +0000969#endif
970
971#ifndef YYMAXDEPTH
vlm6a02a8a2004-09-08 00:28:11 +0000972#define YYMAXDEPTH 10000
vlmfa67ddc2004-06-03 03:38:44 +0000973#endif
974
vlm6a02a8a2004-09-08 00:28:11 +0000975/* Define __yy_memcpy. Note that the size argument
976 should be passed with type unsigned int, because that is what the non-GCC
977 definitions require. With GCC, __builtin_memcpy takes an arg
978 of type size_t, but it can handle unsigned int. */
vlmfa67ddc2004-06-03 03:38:44 +0000979
vlm6a02a8a2004-09-08 00:28:11 +0000980#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
981#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
982#else /* not GNU C or C++ */
983#ifndef __cplusplus
vlmfa67ddc2004-06-03 03:38:44 +0000984
vlm6a02a8a2004-09-08 00:28:11 +0000985/* This is the most reliable way to avoid incompatibilities
986 in available built-in functions on various systems. */
vlm80103492004-09-07 10:39:09 +0000987static void
vlm6a02a8a2004-09-08 00:28:11 +0000988__yy_memcpy (to, from, count)
989 char *to;
990 char *from;
991 unsigned int count;
vlm80103492004-09-07 10:39:09 +0000992{
vlm6a02a8a2004-09-08 00:28:11 +0000993 register char *f = from;
994 register char *t = to;
995 register int i = count;
vlm80103492004-09-07 10:39:09 +0000996
vlm6a02a8a2004-09-08 00:28:11 +0000997 while (i-- > 0)
998 *t++ = *f++;
vlm80103492004-09-07 10:39:09 +0000999}
vlm80103492004-09-07 10:39:09 +00001000
vlm6a02a8a2004-09-08 00:28:11 +00001001#else /* __cplusplus */
vlm80103492004-09-07 10:39:09 +00001002
vlm6a02a8a2004-09-08 00:28:11 +00001003/* This is the most reliable way to avoid incompatibilities
1004 in available built-in functions on various systems. */
vlm80103492004-09-07 10:39:09 +00001005static void
vlm6a02a8a2004-09-08 00:28:11 +00001006__yy_memcpy (char *to, char *from, unsigned int count)
vlm80103492004-09-07 10:39:09 +00001007{
vlm6a02a8a2004-09-08 00:28:11 +00001008 register char *t = to;
1009 register char *f = from;
1010 register int i = count;
vlm80103492004-09-07 10:39:09 +00001011
vlm6a02a8a2004-09-08 00:28:11 +00001012 while (i-- > 0)
1013 *t++ = *f++;
vlm044f7442004-09-04 04:49:21 +00001014}
vlm044f7442004-09-04 04:49:21 +00001015
vlm6a02a8a2004-09-08 00:28:11 +00001016#endif
1017#endif
vlmfa67ddc2004-06-03 03:38:44 +00001018
vlm6a02a8a2004-09-08 00:28:11 +00001019#line 217 "/usr/share/bison.simple"
vlmfa67ddc2004-06-03 03:38:44 +00001020
1021/* The user can define YYPARSE_PARAM as the name of an argument to be passed
1022 into yyparse. The argument should have type void *.
1023 It should actually point to an object.
1024 Grammar actions can access the variable by casting it
1025 to the proper pointer type. */
1026
1027#ifdef YYPARSE_PARAM
vlm6a02a8a2004-09-08 00:28:11 +00001028#ifdef __cplusplus
1029#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
1030#define YYPARSE_PARAM_DECL
1031#else /* not __cplusplus */
1032#define YYPARSE_PARAM_ARG YYPARSE_PARAM
1033#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1034#endif /* not __cplusplus */
1035#else /* not YYPARSE_PARAM */
1036#define YYPARSE_PARAM_ARG
1037#define YYPARSE_PARAM_DECL
1038#endif /* not YYPARSE_PARAM */
vlmfa67ddc2004-06-03 03:38:44 +00001039
1040/* Prevent warning if -Wstrict-prototypes. */
1041#ifdef __GNUC__
vlm6a02a8a2004-09-08 00:28:11 +00001042#ifdef YYPARSE_PARAM
vlmfa67ddc2004-06-03 03:38:44 +00001043int yyparse (void *);
vlm6a02a8a2004-09-08 00:28:11 +00001044#else
vlmfa67ddc2004-06-03 03:38:44 +00001045int yyparse (void);
vlm6a02a8a2004-09-08 00:28:11 +00001046#endif
vlm39e5ed72004-09-05 10:40:41 +00001047#endif
vlm80103492004-09-07 10:39:09 +00001048
vlmfa67ddc2004-06-03 03:38:44 +00001049int
vlm6a02a8a2004-09-08 00:28:11 +00001050yyparse(YYPARSE_PARAM_ARG)
vlmfa67ddc2004-06-03 03:38:44 +00001051 YYPARSE_PARAM_DECL
1052{
1053 register int yystate;
1054 register int yyn;
1055 register short *yyssp;
1056 register YYSTYPE *yyvsp;
vlm6a02a8a2004-09-08 00:28:11 +00001057 int yyerrstatus; /* number of tokens to shift before error messages enabled */
1058 int yychar1 = 0; /* lookahead token as an internal (translated) token number */
vlmfa67ddc2004-06-03 03:38:44 +00001059
vlm6a02a8a2004-09-08 00:28:11 +00001060 short yyssa[YYINITDEPTH]; /* the state stack */
1061 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
vlmfa67ddc2004-06-03 03:38:44 +00001062
vlm6a02a8a2004-09-08 00:28:11 +00001063 short *yyss = yyssa; /* refer to the stacks thru separate pointers */
1064 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
vlmfa67ddc2004-06-03 03:38:44 +00001065
vlm6a02a8a2004-09-08 00:28:11 +00001066#ifdef YYLSP_NEEDED
1067 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
1068 YYLTYPE *yyls = yylsa;
1069 YYLTYPE *yylsp;
1070
1071#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1072#else
vlmfa67ddc2004-06-03 03:38:44 +00001073#define YYPOPSTACK (yyvsp--, yyssp--)
vlm6a02a8a2004-09-08 00:28:11 +00001074#endif
vlmfa67ddc2004-06-03 03:38:44 +00001075
vlm6a02a8a2004-09-08 00:28:11 +00001076 int yystacksize = YYINITDEPTH;
1077 int yyfree_stacks = 0;
vlmfa67ddc2004-06-03 03:38:44 +00001078
vlm6a02a8a2004-09-08 00:28:11 +00001079#ifdef YYPURE
1080 int yychar;
1081 YYSTYPE yylval;
1082 int yynerrs;
1083#ifdef YYLSP_NEEDED
1084 YYLTYPE yylloc;
1085#endif
1086#endif
vlmfa67ddc2004-06-03 03:38:44 +00001087
vlm6a02a8a2004-09-08 00:28:11 +00001088 YYSTYPE yyval; /* the variable used to return */
1089 /* semantic values from the action */
1090 /* routines */
vlmfa67ddc2004-06-03 03:38:44 +00001091
1092 int yylen;
1093
vlm6a02a8a2004-09-08 00:28:11 +00001094#if YYDEBUG != 0
1095 if (yydebug)
1096 fprintf(stderr, "Starting parse\n");
1097#endif
vlmfa67ddc2004-06-03 03:38:44 +00001098
1099 yystate = 0;
1100 yyerrstatus = 0;
1101 yynerrs = 0;
1102 yychar = YYEMPTY; /* Cause a token to be read. */
1103
1104 /* Initialize stack pointers.
1105 Waste one element of value and location stack
1106 so that they stay on the same level as the state stack.
1107 The wasted elements are never initialized. */
1108
vlm6a02a8a2004-09-08 00:28:11 +00001109 yyssp = yyss - 1;
vlmfa67ddc2004-06-03 03:38:44 +00001110 yyvsp = yyvs;
vlm6a02a8a2004-09-08 00:28:11 +00001111#ifdef YYLSP_NEEDED
1112 yylsp = yyls;
1113#endif
vlmfa67ddc2004-06-03 03:38:44 +00001114
vlm6a02a8a2004-09-08 00:28:11 +00001115/* Push a new state, which is found in yystate . */
1116/* In all cases, when you get here, the value and location stacks
1117 have just been pushed. so pushing a state here evens the stacks. */
1118yynewstate:
vlmfa67ddc2004-06-03 03:38:44 +00001119
vlm6a02a8a2004-09-08 00:28:11 +00001120 *++yyssp = yystate;
vlmfa67ddc2004-06-03 03:38:44 +00001121
1122 if (yyssp >= yyss + yystacksize - 1)
1123 {
vlm6a02a8a2004-09-08 00:28:11 +00001124 /* Give user a chance to reallocate the stack */
1125 /* Use copies of these so that the &'s don't force the real ones into memory. */
1126 YYSTYPE *yyvs1 = yyvs;
1127 short *yyss1 = yyss;
1128#ifdef YYLSP_NEEDED
1129 YYLTYPE *yyls1 = yyls;
1130#endif
1131
vlmfa67ddc2004-06-03 03:38:44 +00001132 /* Get the current used size of the three stacks, in elements. */
vlm6a02a8a2004-09-08 00:28:11 +00001133 int size = yyssp - yyss + 1;
vlmfa67ddc2004-06-03 03:38:44 +00001134
1135#ifdef yyoverflow
vlm6a02a8a2004-09-08 00:28:11 +00001136 /* Each stack pointer address is followed by the size of
1137 the data in use in that stack, in bytes. */
1138#ifdef YYLSP_NEEDED
1139 /* This used to be a conditional around just the two extra args,
1140 but that might be undefined if yyoverflow is a macro. */
1141 yyoverflow("parser stack overflow",
1142 &yyss1, size * sizeof (*yyssp),
1143 &yyvs1, size * sizeof (*yyvsp),
1144 &yyls1, size * sizeof (*yylsp),
1145 &yystacksize);
1146#else
1147 yyoverflow("parser stack overflow",
1148 &yyss1, size * sizeof (*yyssp),
1149 &yyvs1, size * sizeof (*yyvsp),
1150 &yystacksize);
1151#endif
vlmfa67ddc2004-06-03 03:38:44 +00001152
vlm6a02a8a2004-09-08 00:28:11 +00001153 yyss = yyss1; yyvs = yyvs1;
1154#ifdef YYLSP_NEEDED
1155 yyls = yyls1;
1156#endif
vlmfa67ddc2004-06-03 03:38:44 +00001157#else /* no yyoverflow */
1158 /* Extend the stack our own way. */
1159 if (yystacksize >= YYMAXDEPTH)
vlm6a02a8a2004-09-08 00:28:11 +00001160 {
1161 yyerror("parser stack overflow");
1162 if (yyfree_stacks)
1163 {
1164 free (yyss);
1165 free (yyvs);
1166#ifdef YYLSP_NEEDED
1167 free (yyls);
1168#endif
1169 }
1170 return 2;
1171 }
vlmfa67ddc2004-06-03 03:38:44 +00001172 yystacksize *= 2;
1173 if (yystacksize > YYMAXDEPTH)
1174 yystacksize = YYMAXDEPTH;
vlm6a02a8a2004-09-08 00:28:11 +00001175#ifndef YYSTACK_USE_ALLOCA
1176 yyfree_stacks = 1;
1177#endif
1178 yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
1179 __yy_memcpy ((char *)yyss, (char *)yyss1,
1180 size * (unsigned int) sizeof (*yyssp));
1181 yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
1182 __yy_memcpy ((char *)yyvs, (char *)yyvs1,
1183 size * (unsigned int) sizeof (*yyvsp));
1184#ifdef YYLSP_NEEDED
1185 yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
1186 __yy_memcpy ((char *)yyls, (char *)yyls1,
1187 size * (unsigned int) sizeof (*yylsp));
1188#endif
vlmfa67ddc2004-06-03 03:38:44 +00001189#endif /* no yyoverflow */
1190
vlm6a02a8a2004-09-08 00:28:11 +00001191 yyssp = yyss + size - 1;
1192 yyvsp = yyvs + size - 1;
1193#ifdef YYLSP_NEEDED
1194 yylsp = yyls + size - 1;
1195#endif
vlmfa67ddc2004-06-03 03:38:44 +00001196
vlm6a02a8a2004-09-08 00:28:11 +00001197#if YYDEBUG != 0
1198 if (yydebug)
1199 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1200#endif
vlmfa67ddc2004-06-03 03:38:44 +00001201
1202 if (yyssp >= yyss + yystacksize - 1)
1203 YYABORT;
1204 }
1205
vlm6a02a8a2004-09-08 00:28:11 +00001206#if YYDEBUG != 0
1207 if (yydebug)
1208 fprintf(stderr, "Entering state %d\n", yystate);
1209#endif
vlmfa67ddc2004-06-03 03:38:44 +00001210
1211 goto yybackup;
vlm6a02a8a2004-09-08 00:28:11 +00001212 yybackup:
vlmfa67ddc2004-06-03 03:38:44 +00001213
1214/* Do appropriate processing given the current state. */
1215/* Read a lookahead token if we need one and don't already have one. */
1216/* yyresume: */
1217
1218 /* First try to decide what to do without reference to lookahead token. */
1219
1220 yyn = yypact[yystate];
vlm6a02a8a2004-09-08 00:28:11 +00001221 if (yyn == YYFLAG)
vlmfa67ddc2004-06-03 03:38:44 +00001222 goto yydefault;
1223
1224 /* Not known => get a lookahead token if don't already have one. */
1225
1226 /* yychar is either YYEMPTY or YYEOF
1227 or a valid token in external form. */
1228
1229 if (yychar == YYEMPTY)
1230 {
vlm6a02a8a2004-09-08 00:28:11 +00001231#if YYDEBUG != 0
1232 if (yydebug)
1233 fprintf(stderr, "Reading a token: ");
1234#endif
vlmfa67ddc2004-06-03 03:38:44 +00001235 yychar = YYLEX;
1236 }
1237
vlm6a02a8a2004-09-08 00:28:11 +00001238 /* Convert token to internal form (in yychar1) for indexing tables with */
vlmfa67ddc2004-06-03 03:38:44 +00001239
vlm6a02a8a2004-09-08 00:28:11 +00001240 if (yychar <= 0) /* This means end of input. */
vlmfa67ddc2004-06-03 03:38:44 +00001241 {
1242 yychar1 = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001243 yychar = YYEOF; /* Don't call YYLEX any more */
vlmfa67ddc2004-06-03 03:38:44 +00001244
vlm6a02a8a2004-09-08 00:28:11 +00001245#if YYDEBUG != 0
1246 if (yydebug)
1247 fprintf(stderr, "Now at end of input.\n");
1248#endif
vlmfa67ddc2004-06-03 03:38:44 +00001249 }
1250 else
1251 {
vlm6a02a8a2004-09-08 00:28:11 +00001252 yychar1 = YYTRANSLATE(yychar);
vlmfa67ddc2004-06-03 03:38:44 +00001253
vlm6a02a8a2004-09-08 00:28:11 +00001254#if YYDEBUG != 0
1255 if (yydebug)
1256 {
1257 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
1258 /* Give the individual parser a way to print the precise meaning
1259 of a token, for further debugging info. */
1260#ifdef YYPRINT
1261 YYPRINT (stderr, yychar, yylval);
1262#endif
1263 fprintf (stderr, ")\n");
1264 }
1265#endif
vlmfa67ddc2004-06-03 03:38:44 +00001266 }
1267
1268 yyn += yychar1;
vlm6a02a8a2004-09-08 00:28:11 +00001269 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
vlmfa67ddc2004-06-03 03:38:44 +00001270 goto yydefault;
vlm6a02a8a2004-09-08 00:28:11 +00001271
vlmfa67ddc2004-06-03 03:38:44 +00001272 yyn = yytable[yyn];
vlm6a02a8a2004-09-08 00:28:11 +00001273
1274 /* yyn is what to do for this token type in this state.
1275 Negative => reduce, -yyn is rule number.
1276 Positive => shift, yyn is new state.
1277 New state is final state => don't bother to shift,
1278 just return success.
1279 0, or most negative number => error. */
1280
1281 if (yyn < 0)
vlmfa67ddc2004-06-03 03:38:44 +00001282 {
vlm6a02a8a2004-09-08 00:28:11 +00001283 if (yyn == YYFLAG)
vlmfa67ddc2004-06-03 03:38:44 +00001284 goto yyerrlab;
1285 yyn = -yyn;
1286 goto yyreduce;
1287 }
vlm6a02a8a2004-09-08 00:28:11 +00001288 else if (yyn == 0)
1289 goto yyerrlab;
vlmfa67ddc2004-06-03 03:38:44 +00001290
1291 if (yyn == YYFINAL)
1292 YYACCEPT;
1293
1294 /* Shift the lookahead token. */
vlm6a02a8a2004-09-08 00:28:11 +00001295
1296#if YYDEBUG != 0
1297 if (yydebug)
1298 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
1299#endif
vlmfa67ddc2004-06-03 03:38:44 +00001300
1301 /* Discard the token being shifted unless it is eof. */
1302 if (yychar != YYEOF)
1303 yychar = YYEMPTY;
1304
1305 *++yyvsp = yylval;
vlm6a02a8a2004-09-08 00:28:11 +00001306#ifdef YYLSP_NEEDED
1307 *++yylsp = yylloc;
1308#endif
vlmfa67ddc2004-06-03 03:38:44 +00001309
vlm6a02a8a2004-09-08 00:28:11 +00001310 /* count tokens shifted since error; after three, turn off error status. */
1311 if (yyerrstatus) yyerrstatus--;
vlmfa67ddc2004-06-03 03:38:44 +00001312
1313 yystate = yyn;
1314 goto yynewstate;
1315
vlm6a02a8a2004-09-08 00:28:11 +00001316/* Do the default action for the current state. */
vlm80103492004-09-07 10:39:09 +00001317yydefault:
vlm6a02a8a2004-09-08 00:28:11 +00001318
vlmfa67ddc2004-06-03 03:38:44 +00001319 yyn = yydefact[yystate];
1320 if (yyn == 0)
1321 goto yyerrlab;
1322
vlm6a02a8a2004-09-08 00:28:11 +00001323/* Do a reduction. yyn is the number of a rule to reduce with. */
vlmfa67ddc2004-06-03 03:38:44 +00001324yyreduce:
1325 yylen = yyr2[yyn];
vlm6a02a8a2004-09-08 00:28:11 +00001326 if (yylen > 0)
1327 yyval = yyvsp[1-yylen]; /* implement default value of the action */
vlmfa67ddc2004-06-03 03:38:44 +00001328
vlm6a02a8a2004-09-08 00:28:11 +00001329#if YYDEBUG != 0
vlmfa67ddc2004-06-03 03:38:44 +00001330 if (yydebug)
1331 {
vlm6a02a8a2004-09-08 00:28:11 +00001332 int i;
vlmfa67ddc2004-06-03 03:38:44 +00001333
vlm6a02a8a2004-09-08 00:28:11 +00001334 fprintf (stderr, "Reducing via rule %d (line %d), ",
1335 yyn, yyrline[yyn]);
vlmfa67ddc2004-06-03 03:38:44 +00001336
1337 /* Print the symbols being reduced, and their result. */
vlm6a02a8a2004-09-08 00:28:11 +00001338 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
1339 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
1340 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
vlmfa67ddc2004-06-03 03:38:44 +00001341 }
1342#endif
vlm80103492004-09-07 10:39:09 +00001343
vlm6a02a8a2004-09-08 00:28:11 +00001344
1345 switch (yyn) {
1346
1347case 1:
vlma6a12e32005-03-20 12:58:00 +00001348#line 303 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001349{
1350 *(void **)param = yyvsp[0].a_grammar;
1351 ;
1352 break;}
1353case 2:
vlma6a12e32005-03-20 12:58:00 +00001354#line 309 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001355{
vlmfa67ddc2004-06-03 03:38:44 +00001356 yyval.a_grammar = asn1p_new();
1357 checkmem(yyval.a_grammar);
1358 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm6a02a8a2004-09-08 00:28:11 +00001359 ;
1360 break;}
1361case 3:
vlma6a12e32005-03-20 12:58:00 +00001362#line 314 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001363{
vlmfa67ddc2004-06-03 03:38:44 +00001364 yyval.a_grammar = yyvsp[-1].a_grammar;
1365 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm6a02a8a2004-09-08 00:28:11 +00001366 ;
1367 break;}
1368case 4:
vlma6a12e32005-03-20 12:58:00 +00001369#line 335 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001370{
vlmfa67ddc2004-06-03 03:38:44 +00001371
1372 if(yyvsp[-1].a_module) {
1373 yyval.a_module = yyvsp[-1].a_module;
1374 } else {
1375 /* There's a chance that a module is just plain empty */
1376 yyval.a_module = asn1p_module_new();
1377 }
1378 checkmem(yyval.a_module);
1379
1380 yyval.a_module->Identifier = yyvsp[-7].tv_str;
1381 yyval.a_module->module_oid = yyvsp[-6].a_oid;
1382 yyval.a_module->module_flags = yyvsp[-4].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001383 ;
1384 break;}
1385case 5:
vlma6a12e32005-03-20 12:58:00 +00001386#line 356 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001387{ yyval.a_oid = 0; ;
1388 break;}
1389case 6:
vlma6a12e32005-03-20 12:58:00 +00001390#line 357 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001391{ yyval.a_oid = yyvsp[0].a_oid; ;
1392 break;}
1393case 7:
vlma6a12e32005-03-20 12:58:00 +00001394#line 361 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001395{
vlmfa67ddc2004-06-03 03:38:44 +00001396 yyval.a_oid = yyvsp[-1].a_oid;
vlm6a02a8a2004-09-08 00:28:11 +00001397 ;
1398 break;}
1399case 8:
vlma6a12e32005-03-20 12:58:00 +00001400#line 364 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001401{
vlmfa67ddc2004-06-03 03:38:44 +00001402 yyval.a_oid = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001403 ;
1404 break;}
1405case 9:
vlma6a12e32005-03-20 12:58:00 +00001406#line 370 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001407{
vlmfa67ddc2004-06-03 03:38:44 +00001408 yyval.a_oid = asn1p_oid_new();
1409 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1410 if(yyvsp[0].a_oid_arc.name)
1411 free(yyvsp[0].a_oid_arc.name);
vlm6a02a8a2004-09-08 00:28:11 +00001412 ;
1413 break;}
1414case 10:
vlma6a12e32005-03-20 12:58:00 +00001415#line 376 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001416{
vlmfa67ddc2004-06-03 03:38:44 +00001417 yyval.a_oid = yyvsp[-1].a_oid;
1418 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1419 if(yyvsp[0].a_oid_arc.name)
1420 free(yyvsp[0].a_oid_arc.name);
vlm6a02a8a2004-09-08 00:28:11 +00001421 ;
1422 break;}
1423case 11:
vlma6a12e32005-03-20 12:58:00 +00001424#line 385 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001425{ /* iso */
vlmfa67ddc2004-06-03 03:38:44 +00001426 yyval.a_oid_arc.name = yyvsp[0].tv_str;
1427 yyval.a_oid_arc.number = -1;
vlm6a02a8a2004-09-08 00:28:11 +00001428 ;
1429 break;}
1430case 12:
vlma6a12e32005-03-20 12:58:00 +00001431#line 389 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001432{ /* iso(1) */
vlmfa67ddc2004-06-03 03:38:44 +00001433 yyval.a_oid_arc.name = yyvsp[-3].tv_str;
1434 yyval.a_oid_arc.number = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00001435 ;
1436 break;}
1437case 13:
vlma6a12e32005-03-20 12:58:00 +00001438#line 393 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001439{ /* 1 */
vlmfa67ddc2004-06-03 03:38:44 +00001440 yyval.a_oid_arc.name = 0;
1441 yyval.a_oid_arc.number = yyvsp[0].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00001442 ;
1443 break;}
1444case 14:
vlma6a12e32005-03-20 12:58:00 +00001445#line 403 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001446{ yyval.a_module_flags = MSF_NOFLAGS; ;
1447 break;}
1448case 15:
vlma6a12e32005-03-20 12:58:00 +00001449#line 404 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001450{
vlmfa67ddc2004-06-03 03:38:44 +00001451 yyval.a_module_flags = yyvsp[0].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001452 ;
1453 break;}
1454case 16:
vlma6a12e32005-03-20 12:58:00 +00001455#line 413 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001456{
vlmfa67ddc2004-06-03 03:38:44 +00001457 yyval.a_module_flags = yyvsp[0].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001458 ;
1459 break;}
1460case 17:
vlma6a12e32005-03-20 12:58:00 +00001461#line 416 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001462{
vlmfa67ddc2004-06-03 03:38:44 +00001463 yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
vlm6a02a8a2004-09-08 00:28:11 +00001464 ;
1465 break;}
1466case 18:
vlma6a12e32005-03-20 12:58:00 +00001467#line 425 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001468{
vlmfa67ddc2004-06-03 03:38:44 +00001469 yyval.a_module_flags = MSF_EXPLICIT_TAGS;
vlm6a02a8a2004-09-08 00:28:11 +00001470 ;
1471 break;}
1472case 19:
vlma6a12e32005-03-20 12:58:00 +00001473#line 428 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001474{
vlmfa67ddc2004-06-03 03:38:44 +00001475 yyval.a_module_flags = MSF_IMPLICIT_TAGS;
vlm6a02a8a2004-09-08 00:28:11 +00001476 ;
1477 break;}
1478case 20:
vlma6a12e32005-03-20 12:58:00 +00001479#line 431 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001480{
vlmfa67ddc2004-06-03 03:38:44 +00001481 yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
vlm6a02a8a2004-09-08 00:28:11 +00001482 ;
1483 break;}
1484case 21:
vlma6a12e32005-03-20 12:58:00 +00001485#line 434 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001486{
vlmfa67ddc2004-06-03 03:38:44 +00001487 yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
vlm6a02a8a2004-09-08 00:28:11 +00001488 ;
1489 break;}
1490case 22:
vlma6a12e32005-03-20 12:58:00 +00001491#line 438 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001492{
vlm9283dbe2004-08-18 04:59:12 +00001493 /* X.680Amd1 specifies TAG and XER */
1494 if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
1495 yyval.a_module_flags = MSF_TAG_INSTRUCTIONS;
1496 } else if(strcmp(yyvsp[-1].tv_str, "XER") == 0) {
1497 yyval.a_module_flags = MSF_XER_INSTRUCTIONS;
1498 } else {
1499 fprintf(stderr,
1500 "WARNING: %s INSTRUCTIONS at line %d: "
1501 "Unrecognized encoding reference\n",
1502 yyvsp[-1].tv_str, yylineno);
1503 yyval.a_module_flags = MSF_unk_INSTRUCTIONS;
1504 }
1505 free(yyvsp[-1].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00001506 ;
1507 break;}
1508case 23:
vlma6a12e32005-03-20 12:58:00 +00001509#line 459 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001510{ yyval.a_module = 0; ;
1511 break;}
1512case 24:
vlma6a12e32005-03-20 12:58:00 +00001513#line 460 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001514{
vlmfa67ddc2004-06-03 03:38:44 +00001515 yyval.a_module = yyvsp[0].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001516 ;
1517 break;}
1518case 25:
vlma6a12e32005-03-20 12:58:00 +00001519#line 469 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001520{
vlm9283dbe2004-08-18 04:59:12 +00001521 yyval.a_module = yyvsp[0].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001522 ;
1523 break;}
1524case 26:
vlma6a12e32005-03-20 12:58:00 +00001525#line 472 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001526{
vlmfa67ddc2004-06-03 03:38:44 +00001527 yyval.a_module = yyvsp[-1].a_module;
1528
vlm9283dbe2004-08-18 04:59:12 +00001529 /* Behave well when one of them is skipped. */
1530 if(!(yyvsp[-1].a_module)) {
1531 if(yyvsp[0].a_module) yyval.a_module = yyvsp[0].a_module;
1532 break;
1533 }
1534
vlmfa67ddc2004-06-03 03:38:44 +00001535#ifdef MY_IMPORT
1536#error MY_IMPORT DEFINED ELSEWHERE!
1537#endif
1538#define MY_IMPORT(foo,field) do { \
vlm97ed7152004-08-13 12:31:09 +00001539 while(TQ_FIRST(&(yyvsp[0].a_module->foo))) { \
vlmfa67ddc2004-06-03 03:38:44 +00001540 TQ_ADD(&(yyval.a_module->foo), \
1541 TQ_REMOVE(&(yyvsp[0].a_module->foo), field), \
1542 field); \
vlm97ed7152004-08-13 12:31:09 +00001543 } \
1544 assert(TQ_FIRST(&(yyvsp[0].a_module->foo)) == 0); \
1545 } while(0)
vlmfa67ddc2004-06-03 03:38:44 +00001546
1547 MY_IMPORT(imports, xp_next);
1548 MY_IMPORT(exports, xp_next);
1549 MY_IMPORT(members, next);
1550#undef MY_IMPORT
1551
vlm6a02a8a2004-09-08 00:28:11 +00001552 ;
1553 break;}
1554case 27:
vlma6a12e32005-03-20 12:58:00 +00001555#line 505 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001556{
vlmfa67ddc2004-06-03 03:38:44 +00001557 yyval.a_module = yyvsp[0].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001558 ;
1559 break;}
1560case 28:
vlma6a12e32005-03-20 12:58:00 +00001561#line 508 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001562{
vlmfa67ddc2004-06-03 03:38:44 +00001563 yyval.a_module = asn1p_module_new();
1564 checkmem(yyval.a_module);
1565 if(yyvsp[0].a_xports) {
1566 TQ_ADD(&(yyval.a_module->exports), yyvsp[0].a_xports, xp_next);
1567 } else {
1568 /* "EXPORTS ALL;" ? */
1569 }
vlm6a02a8a2004-09-08 00:28:11 +00001570 ;
1571 break;}
1572case 29:
vlma6a12e32005-03-20 12:58:00 +00001573#line 517 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001574{
vlmfa67ddc2004-06-03 03:38:44 +00001575 yyval.a_module = asn1p_module_new();
1576 checkmem(yyval.a_module);
1577 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1578 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1579 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001580 ;
1581 break;}
1582case 30:
vlma6a12e32005-03-20 12:58:00 +00001583#line 524 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001584{
vlm9283dbe2004-08-18 04:59:12 +00001585 yyval.a_module = asn1p_module_new();
1586 checkmem(yyval.a_module);
1587 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1588 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1589 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001590 ;
1591 break;}
1592case 31:
vlma6a12e32005-03-20 12:58:00 +00001593#line 537 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001594{
vlm9283dbe2004-08-18 04:59:12 +00001595 yyval.a_module = asn1p_module_new();
1596 checkmem(yyval.a_module);
1597 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
1598 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
1599 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001600 ;
1601 break;}
1602case 32:
vlma6a12e32005-03-20 12:58:00 +00001603#line 545 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001604{ asn1p_lexer_hack_push_encoding_control(); ;
1605 break;}
1606case 33:
vlma6a12e32005-03-20 12:58:00 +00001607#line 546 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001608{
vlm9283dbe2004-08-18 04:59:12 +00001609 fprintf(stderr,
1610 "WARNING: ENCODING-CONTROL %s "
1611 "specification at line %d ignored\n",
1612 yyvsp[-1].tv_str, yylineno);
1613 free(yyvsp[-1].tv_str);
1614 yyval.a_module = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001615 ;
1616 break;}
1617case 34:
vlma6a12e32005-03-20 12:58:00 +00001618#line 558 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001619{
vlmfa67ddc2004-06-03 03:38:44 +00001620 return yyerror(
1621 "Attempt to redefine a standard basic type, "
1622 "use -ftypesXY to switch back "
1623 "to older version of ASN.1 standard");
vlm6a02a8a2004-09-08 00:28:11 +00001624 ;
1625 break;}
1626case 35:
vlma6a12e32005-03-20 12:58:00 +00001627#line 572 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001628{
vlmfa67ddc2004-06-03 03:38:44 +00001629 yyval.a_module = yyvsp[-1].a_module;
vlm6a02a8a2004-09-08 00:28:11 +00001630 ;
1631 break;}
1632case 36:
vlma6a12e32005-03-20 12:58:00 +00001633#line 578 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001634{
vlmfa67ddc2004-06-03 03:38:44 +00001635 return yyerror("Empty IMPORTS list");
vlm6a02a8a2004-09-08 00:28:11 +00001636 ;
1637 break;}
1638case 37:
vlma6a12e32005-03-20 12:58:00 +00001639#line 584 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001640{
vlmfa67ddc2004-06-03 03:38:44 +00001641 yyval.a_module = asn1p_module_new();
1642 checkmem(yyval.a_module);
1643 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm6a02a8a2004-09-08 00:28:11 +00001644 ;
1645 break;}
1646case 38:
vlma6a12e32005-03-20 12:58:00 +00001647#line 589 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001648{
vlmfa67ddc2004-06-03 03:38:44 +00001649 yyval.a_module = yyvsp[-1].a_module;
1650 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm6a02a8a2004-09-08 00:28:11 +00001651 ;
1652 break;}
1653case 39:
vlma6a12e32005-03-20 12:58:00 +00001654#line 596 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001655{
vlmfa67ddc2004-06-03 03:38:44 +00001656 yyval.a_xports = yyvsp[-3].a_xports;
1657 yyval.a_xports->from = yyvsp[-1].tv_str;
1658 yyval.a_xports->from_oid = yyvsp[0].a_oid;
1659 checkmem(yyval.a_xports);
vlm6a02a8a2004-09-08 00:28:11 +00001660 ;
1661 break;}
1662case 40:
vlma6a12e32005-03-20 12:58:00 +00001663#line 605 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001664{
vlmfa67ddc2004-06-03 03:38:44 +00001665 yyval.a_xports = asn1p_xports_new();
1666 checkmem(yyval.a_xports);
1667 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001668 ;
1669 break;}
1670case 41:
vlma6a12e32005-03-20 12:58:00 +00001671#line 610 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001672{
vlmfa67ddc2004-06-03 03:38:44 +00001673 yyval.a_xports = yyvsp[-2].a_xports;
1674 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001675 ;
1676 break;}
1677case 42:
vlma6a12e32005-03-20 12:58:00 +00001678#line 617 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001679{
vlmfa67ddc2004-06-03 03:38:44 +00001680 yyval.a_expr = asn1p_expr_new(yylineno);
1681 checkmem(yyval.a_expr);
1682 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1683 yyval.a_expr->expr_type = A1TC_REFERENCE;
vlm6a02a8a2004-09-08 00:28:11 +00001684 ;
1685 break;}
1686case 43:
vlma6a12e32005-03-20 12:58:00 +00001687#line 623 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001688{ /* Completely equivalent to above */
1689 yyval.a_expr = asn1p_expr_new(yylineno);
1690 checkmem(yyval.a_expr);
1691 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
1692 yyval.a_expr->expr_type = A1TC_REFERENCE;
1693 ;
1694 break;}
1695case 44:
vlma6a12e32005-03-20 12:58:00 +00001696#line 629 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001697{
vlmfa67ddc2004-06-03 03:38:44 +00001698 yyval.a_expr = asn1p_expr_new(yylineno);
1699 checkmem(yyval.a_expr);
1700 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1701 yyval.a_expr->expr_type = A1TC_REFERENCE;
vlm6a02a8a2004-09-08 00:28:11 +00001702 ;
1703 break;}
vlm0aa86902004-10-12 23:26:53 +00001704case 45:
vlma6a12e32005-03-20 12:58:00 +00001705#line 638 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001706{
vlmfa67ddc2004-06-03 03:38:44 +00001707 yyval.a_xports = yyvsp[-1].a_xports;
vlm6a02a8a2004-09-08 00:28:11 +00001708 ;
1709 break;}
vlm0aa86902004-10-12 23:26:53 +00001710case 46:
vlma6a12e32005-03-20 12:58:00 +00001711#line 641 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001712{
vlmfa67ddc2004-06-03 03:38:44 +00001713 yyval.a_xports = 0;
vlm6a02a8a2004-09-08 00:28:11 +00001714 ;
1715 break;}
vlm0aa86902004-10-12 23:26:53 +00001716case 47:
vlma6a12e32005-03-20 12:58:00 +00001717#line 644 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001718{
vlmfa67ddc2004-06-03 03:38:44 +00001719 /* Empty EXPORTS clause effectively prohibits export. */
1720 yyval.a_xports = asn1p_xports_new();
1721 checkmem(yyval.a_xports);
vlm6a02a8a2004-09-08 00:28:11 +00001722 ;
1723 break;}
vlm0aa86902004-10-12 23:26:53 +00001724case 48:
vlma6a12e32005-03-20 12:58:00 +00001725#line 652 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001726{
vlmfa67ddc2004-06-03 03:38:44 +00001727 yyval.a_xports = asn1p_xports_new();
1728 assert(yyval.a_xports);
1729 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001730 ;
1731 break;}
vlm0aa86902004-10-12 23:26:53 +00001732case 49:
vlma6a12e32005-03-20 12:58:00 +00001733#line 657 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001734{
vlmfa67ddc2004-06-03 03:38:44 +00001735 yyval.a_xports = yyvsp[-2].a_xports;
1736 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm6a02a8a2004-09-08 00:28:11 +00001737 ;
1738 break;}
vlm6a02a8a2004-09-08 00:28:11 +00001739case 50:
vlma6a12e32005-03-20 12:58:00 +00001740#line 664 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001741{
vlmfa67ddc2004-06-03 03:38:44 +00001742 yyval.a_expr = asn1p_expr_new(yylineno);
1743 checkmem(yyval.a_expr);
1744 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1745 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
vlm6a02a8a2004-09-08 00:28:11 +00001746 ;
1747 break;}
1748case 51:
vlma6a12e32005-03-20 12:58:00 +00001749#line 670 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001750{
1751 yyval.a_expr = asn1p_expr_new(yylineno);
1752 checkmem(yyval.a_expr);
1753 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
1754 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
1755 ;
1756 break;}
1757case 52:
vlma6a12e32005-03-20 12:58:00 +00001758#line 676 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001759{
1760 yyval.a_expr = asn1p_expr_new(yylineno);
1761 checkmem(yyval.a_expr);
1762 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1763 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
1764 ;
1765 break;}
1766case 53:
vlma6a12e32005-03-20 12:58:00 +00001767#line 686 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001768{
vlmfa67ddc2004-06-03 03:38:44 +00001769 yyval.a_expr = yyvsp[-4].a_expr;
1770 assert(yyval.a_expr->Identifier == 0);
1771 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
1772 yyval.a_expr->meta_type = AMT_VALUESET;
1773 // take care of optValueSetBody
vlm6a02a8a2004-09-08 00:28:11 +00001774 ;
1775 break;}
vlm0aa86902004-10-12 23:26:53 +00001776case 54:
vlma6a12e32005-03-20 12:58:00 +00001777#line 696 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001778{
vlmfa67ddc2004-06-03 03:38:44 +00001779 yyval.a_expr = asn1p_expr_new(yylineno);
1780 checkmem(yyval.a_expr);
1781 yyval.a_expr->reference = yyvsp[0].a_ref;
1782 yyval.a_expr->expr_type = A1TC_REFERENCE;
1783 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm6a02a8a2004-09-08 00:28:11 +00001784 ;
1785 break;}
vlm0aa86902004-10-12 23:26:53 +00001786case 55:
vlma6a12e32005-03-20 12:58:00 +00001787#line 703 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001788{
vlmfa67ddc2004-06-03 03:38:44 +00001789 yyval.a_expr = asn1p_expr_new(yylineno);
1790 checkmem(yyval.a_expr);
1791 yyval.a_expr->expr_type = yyvsp[0].a_type;
1792 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00001793 ;
1794 break;}
vlm6a02a8a2004-09-08 00:28:11 +00001795case 56:
vlma6a12e32005-03-20 12:58:00 +00001796#line 712 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001797{ ;
vlm6a02a8a2004-09-08 00:28:11 +00001798 break;}
1799case 57:
vlma6a12e32005-03-20 12:58:00 +00001800#line 713 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001801{
1802 ;
1803 break;}
1804case 58:
vlma6a12e32005-03-20 12:58:00 +00001805#line 724 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001806{
1807 ;
1808 break;}
1809case 59:
vlma6a12e32005-03-20 12:58:00 +00001810#line 726 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001811{
1812 ;
1813 break;}
1814case 60:
vlma6a12e32005-03-20 12:58:00 +00001815#line 731 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001816{
1817 ;
1818 break;}
1819case 61:
vlma6a12e32005-03-20 12:58:00 +00001820#line 733 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001821{
1822 ;
1823 break;}
1824case 62:
vlma6a12e32005-03-20 12:58:00 +00001825#line 749 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001826{
vlmfa67ddc2004-06-03 03:38:44 +00001827 yyval.a_expr = asn1p_expr_new(yylineno);
1828 checkmem(yyval.a_expr);
1829 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
1830 yyval.a_expr->tag = yyvsp[-1].a_tag;
1831 yyval.a_expr->expr_type = A1TC_TYPEID;
1832 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00001833 ;
1834 break;}
vlm0aa86902004-10-12 23:26:53 +00001835case 63:
vlma6a12e32005-03-20 12:58:00 +00001836#line 757 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001837{
vlmfa67ddc2004-06-03 03:38:44 +00001838 yyval.a_expr = yyvsp[0].a_expr;
vlmfce48a42004-09-14 02:36:39 +00001839 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
vlmfa67ddc2004-06-03 03:38:44 +00001840 assert(yyval.a_expr->expr_type);
1841 assert(yyval.a_expr->meta_type);
vlm6a02a8a2004-09-08 00:28:11 +00001842 ;
1843 break;}
vlm0aa86902004-10-12 23:26:53 +00001844case 64:
vlma6a12e32005-03-20 12:58:00 +00001845#line 763 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001846{
vlmfa67ddc2004-06-03 03:38:44 +00001847 yyval.a_expr = yyvsp[0].a_expr;
1848 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
1849 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
1850 assert(yyval.a_expr->meta_type == AMT_OBJECT);
vlm6a02a8a2004-09-08 00:28:11 +00001851 ;
1852 break;}
vlm0aa86902004-10-12 23:26:53 +00001853case 65:
vlma6a12e32005-03-20 12:58:00 +00001854#line 779 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001855{
vlmfa67ddc2004-06-03 03:38:44 +00001856 yyval.a_expr = yyvsp[0].a_expr;
1857 assert(yyval.a_expr->Identifier == 0);
1858 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
1859 yyval.a_expr->params = yyvsp[-3].a_plist;
1860 yyval.a_expr->meta_type = AMT_PARAMTYPE;
vlm6a02a8a2004-09-08 00:28:11 +00001861 ;
1862 break;}
vlm0aa86902004-10-12 23:26:53 +00001863case 66:
vlma6a12e32005-03-20 12:58:00 +00001864#line 789 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001865{
vlmfa67ddc2004-06-03 03:38:44 +00001866 int ret;
1867 yyval.a_plist = asn1p_paramlist_new(yylineno);
1868 checkmem(yyval.a_plist);
1869 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
1870 checkmem(ret == 0);
1871 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
1872 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm6a02a8a2004-09-08 00:28:11 +00001873 ;
1874 break;}
vlm0aa86902004-10-12 23:26:53 +00001875case 67:
vlma6a12e32005-03-20 12:58:00 +00001876#line 798 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001877{
vlmfa67ddc2004-06-03 03:38:44 +00001878 int ret;
1879 yyval.a_plist = yyvsp[-2].a_plist;
1880 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
1881 checkmem(ret == 0);
1882 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
1883 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm6a02a8a2004-09-08 00:28:11 +00001884 ;
1885 break;}
vlm0aa86902004-10-12 23:26:53 +00001886case 68:
vlma6a12e32005-03-20 12:58:00 +00001887#line 809 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001888{
vlmfa67ddc2004-06-03 03:38:44 +00001889 yyval.a_parg.governor = NULL;
1890 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00001891 ;
1892 break;}
vlm0aa86902004-10-12 23:26:53 +00001893case 69:
vlma6a12e32005-03-20 12:58:00 +00001894#line 813 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001895{
vlmfa67ddc2004-06-03 03:38:44 +00001896 int ret;
1897 yyval.a_parg.governor = asn1p_ref_new(yylineno);
1898 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
1899 checkmem(ret == 0);
1900 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00001901 ;
1902 break;}
vlm0aa86902004-10-12 23:26:53 +00001903case 70:
vlma6a12e32005-03-20 12:58:00 +00001904#line 820 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001905{
vlmfa67ddc2004-06-03 03:38:44 +00001906 int ret;
1907 yyval.a_parg.governor = asn1p_ref_new(yylineno);
vlm4053ca52005-02-18 16:34:21 +00001908 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
1909 checkmem(ret == 0);
1910 yyval.a_parg.argument = yyvsp[0].tv_str;
1911 ;
1912 break;}
1913case 71:
vlma6a12e32005-03-20 12:58:00 +00001914#line 827 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00001915{
1916 int ret;
1917 yyval.a_parg.governor = asn1p_ref_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00001918 ret = asn1p_ref_add_component(yyval.a_parg.governor,
1919 ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
1920 checkmem(ret == 0);
1921 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00001922 ;
1923 break;}
vlm4053ca52005-02-18 16:34:21 +00001924case 72:
vlma6a12e32005-03-20 12:58:00 +00001925#line 838 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001926{
vlmfa67ddc2004-06-03 03:38:44 +00001927 yyval.a_expr = asn1p_expr_new(yylineno);
1928 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00001929 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1930 ;
1931 break;}
vlm4053ca52005-02-18 16:34:21 +00001932case 73:
vlma6a12e32005-03-20 12:58:00 +00001933#line 843 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001934{
vlmfa67ddc2004-06-03 03:38:44 +00001935 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00001936 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1937 ;
1938 break;}
vlm4053ca52005-02-18 16:34:21 +00001939case 74:
vlma6a12e32005-03-20 12:58:00 +00001940#line 850 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001941{
vlmfa67ddc2004-06-03 03:38:44 +00001942 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00001943 ;
1944 break;}
vlm4053ca52005-02-18 16:34:21 +00001945case 75:
vlma6a12e32005-03-20 12:58:00 +00001946#line 853 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001947{
vlmfa67ddc2004-06-03 03:38:44 +00001948 yyval.a_expr = asn1p_expr_new(yylineno);
1949 checkmem(yyval.a_expr);
1950 yyval.a_expr->Identifier = yyvsp[0].tv_str;
1951 yyval.a_expr->expr_type = A1TC_REFERENCE;
1952 yyval.a_expr->meta_type = AMT_VALUE;
vlm6a02a8a2004-09-08 00:28:11 +00001953 ;
1954 break;}
vlm4053ca52005-02-18 16:34:21 +00001955case 76:
vlma6a12e32005-03-20 12:58:00 +00001956#line 877 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001957{ yyval.a_expr = asn1p_expr_new(yylineno); ;
1958 break;}
vlm4053ca52005-02-18 16:34:21 +00001959case 77:
vlma6a12e32005-03-20 12:58:00 +00001960#line 878 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00001961{ yyval.a_expr = yyvsp[0].a_expr; ;
1962 break;}
vlm4053ca52005-02-18 16:34:21 +00001963case 78:
vlma6a12e32005-03-20 12:58:00 +00001964#line 881 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001965{
vlmfa67ddc2004-06-03 03:38:44 +00001966 yyval.a_expr = asn1p_expr_new(yylineno);
1967 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00001968 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1969 ;
1970 break;}
vlm4053ca52005-02-18 16:34:21 +00001971case 79:
vlma6a12e32005-03-20 12:58:00 +00001972#line 886 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001973{
vlmfa67ddc2004-06-03 03:38:44 +00001974 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00001975 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1976 ;
1977 break;}
vlm4053ca52005-02-18 16:34:21 +00001978case 80:
vlma6a12e32005-03-20 12:58:00 +00001979#line 893 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001980{
vlmec8f6812004-08-22 03:19:54 +00001981 yyval.a_expr = yyvsp[-1].a_expr;
1982 assert(yyval.a_expr->Identifier == 0);
vlmfce48a42004-09-14 02:36:39 +00001983 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
vlmec8f6812004-08-22 03:19:54 +00001984 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm6a02a8a2004-09-08 00:28:11 +00001985 ;
1986 break;}
vlm4053ca52005-02-18 16:34:21 +00001987case 81:
vlma6a12e32005-03-20 12:58:00 +00001988#line 899 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001989{
vlmec8f6812004-08-22 03:19:54 +00001990 yyval.a_expr = asn1p_expr_new(yylineno);
1991 checkmem(yyval.a_expr);
1992 yyval.a_expr->meta_type = yyvsp[0].a_expr->meta_type;
1993 yyval.a_expr->expr_type = A1TC_COMPONENTS_OF;
vlm6a02a8a2004-09-08 00:28:11 +00001994 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
1995 ;
1996 break;}
vlm4053ca52005-02-18 16:34:21 +00001997case 82:
vlma6a12e32005-03-20 12:58:00 +00001998#line 906 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00001999{
vlmec8f6812004-08-22 03:19:54 +00002000 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002001 ;
2002 break;}
vlm4053ca52005-02-18 16:34:21 +00002003case 83:
vlma6a12e32005-03-20 12:58:00 +00002004#line 912 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002005{
vlmec8f6812004-08-22 03:19:54 +00002006 yyval.a_expr = asn1p_expr_new(yylineno);
2007 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00002008 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2009 ;
2010 break;}
vlm4053ca52005-02-18 16:34:21 +00002011case 84:
vlma6a12e32005-03-20 12:58:00 +00002012#line 917 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002013{
vlmec8f6812004-08-22 03:19:54 +00002014 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002015 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2016 ;
2017 break;}
vlm4053ca52005-02-18 16:34:21 +00002018case 85:
vlma6a12e32005-03-20 12:58:00 +00002019#line 924 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002020{
vlmec8f6812004-08-22 03:19:54 +00002021 yyval.a_expr = yyvsp[0].a_expr;
2022 assert(yyval.a_expr->Identifier == 0);
vlmfce48a42004-09-14 02:36:39 +00002023 yyval.a_expr->Identifier = yyvsp[-1].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00002024 ;
2025 break;}
vlm4053ca52005-02-18 16:34:21 +00002026case 86:
vlma6a12e32005-03-20 12:58:00 +00002027#line 929 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002028{
vlmec8f6812004-08-22 03:19:54 +00002029 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002030 ;
2031 break;}
vlm4053ca52005-02-18 16:34:21 +00002032case 87:
vlma6a12e32005-03-20 12:58:00 +00002033#line 935 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002034{
vlmfa67ddc2004-06-03 03:38:44 +00002035 yyval.a_expr = yyvsp[-2].a_expr;
2036 checkmem(yyval.a_expr);
2037 yyval.a_expr->with_syntax = yyvsp[0].a_wsynt;
2038 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
2039 assert(yyval.a_expr->meta_type == AMT_OBJECT);
vlm6a02a8a2004-09-08 00:28:11 +00002040 ;
2041 break;}
vlm4053ca52005-02-18 16:34:21 +00002042case 88:
vlma6a12e32005-03-20 12:58:00 +00002043#line 945 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002044{ yyval.a_int = 0; ;
2045 break;}
vlm4053ca52005-02-18 16:34:21 +00002046case 89:
vlma6a12e32005-03-20 12:58:00 +00002047#line 946 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002048{ yyval.a_int = 1; ;
2049 break;}
vlm4053ca52005-02-18 16:34:21 +00002050case 90:
vlma6a12e32005-03-20 12:58:00 +00002051#line 950 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002052{
vlmfa67ddc2004-06-03 03:38:44 +00002053 yyval.a_expr = asn1p_expr_new(yylineno);
2054 checkmem(yyval.a_expr);
2055 yyval.a_expr->expr_type = A1TC_CLASSDEF;
2056 yyval.a_expr->meta_type = AMT_OBJECT;
vlm6a02a8a2004-09-08 00:28:11 +00002057 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2058 ;
2059 break;}
vlm4053ca52005-02-18 16:34:21 +00002060case 91:
vlma6a12e32005-03-20 12:58:00 +00002061#line 957 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002062{
vlmfa67ddc2004-06-03 03:38:44 +00002063 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002064 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2065 ;
2066 break;}
vlm4053ca52005-02-18 16:34:21 +00002067case 92:
vlma6a12e32005-03-20 12:58:00 +00002068#line 964 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002069{
vlmfa67ddc2004-06-03 03:38:44 +00002070 yyval.a_expr = asn1p_expr_new(yylineno);
2071 checkmem(yyval.a_expr);
2072 yyval.a_expr->Identifier = yyvsp[-1].a_refcomp.name;
2073 yyval.a_expr->expr_type = A1TC_CLASSFIELD;
2074 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2075 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm6a02a8a2004-09-08 00:28:11 +00002076 ;
2077 break;}
vlm4053ca52005-02-18 16:34:21 +00002078case 93:
vlma6a12e32005-03-20 12:58:00 +00002079#line 972 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002080{
vlmec8f6812004-08-22 03:19:54 +00002081 yyval.a_expr = yyvsp[-2].a_expr;
2082 yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
vlmbde35d42004-11-24 17:43:29 +00002083 yyval.a_expr->marker = yyvsp[0].a_marker;
2084 yyval.a_expr->unique = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00002085 ;
2086 break;}
vlm4053ca52005-02-18 16:34:21 +00002087case 94:
vlma6a12e32005-03-20 12:58:00 +00002088#line 978 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002089{
vlmfa67ddc2004-06-03 03:38:44 +00002090 int ret;
2091 yyval.a_expr = asn1p_expr_new(yylineno);
2092 checkmem(yyval.a_expr);
2093 yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
2094 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2095 checkmem(yyval.a_expr->reference);
2096 ret = asn1p_ref_add_component(yyval.a_expr->reference,
2097 yyvsp[-2].a_refcomp.name, yyvsp[-2].a_refcomp.lex_type);
2098 checkmem(ret == 0);
2099 yyval.a_expr->expr_type = A1TC_CLASSFIELD;
2100 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
vlmbde35d42004-11-24 17:43:29 +00002101 yyval.a_expr->marker = yyvsp[0].a_marker;
2102 yyval.a_expr->unique = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00002103 ;
2104 break;}
vlm4053ca52005-02-18 16:34:21 +00002105case 95:
vlma6a12e32005-03-20 12:58:00 +00002106#line 996 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002107{ yyval.a_wsynt = 0; ;
2108 break;}
vlm4053ca52005-02-18 16:34:21 +00002109case 96:
vlma6a12e32005-03-20 12:58:00 +00002110#line 997 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002111{
vlmfa67ddc2004-06-03 03:38:44 +00002112 yyval.a_wsynt = yyvsp[0].a_wsynt;
vlm6a02a8a2004-09-08 00:28:11 +00002113 ;
2114 break;}
vlm4053ca52005-02-18 16:34:21 +00002115case 97:
vlma6a12e32005-03-20 12:58:00 +00002116#line 1004 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002117{ asn1p_lexer_hack_enable_with_syntax(); ;
2118 break;}
vlm4053ca52005-02-18 16:34:21 +00002119case 98:
vlma6a12e32005-03-20 12:58:00 +00002120#line 1006 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002121{
vlmfa67ddc2004-06-03 03:38:44 +00002122 yyval.a_wsynt = yyvsp[-1].a_wsynt;
vlm6a02a8a2004-09-08 00:28:11 +00002123 ;
2124 break;}
vlm4053ca52005-02-18 16:34:21 +00002125case 99:
vlma6a12e32005-03-20 12:58:00 +00002126#line 1012 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002127{
vlmfa67ddc2004-06-03 03:38:44 +00002128 yyval.a_wsynt = asn1p_wsyntx_new();
2129 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm6a02a8a2004-09-08 00:28:11 +00002130 ;
2131 break;}
vlm4053ca52005-02-18 16:34:21 +00002132case 100:
vlma6a12e32005-03-20 12:58:00 +00002133#line 1016 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002134{
vlmfa67ddc2004-06-03 03:38:44 +00002135 yyval.a_wsynt = yyvsp[-1].a_wsynt;
2136 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm6a02a8a2004-09-08 00:28:11 +00002137 ;
2138 break;}
vlm4053ca52005-02-18 16:34:21 +00002139case 101:
vlma6a12e32005-03-20 12:58:00 +00002140#line 1023 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002141{
vlmfa67ddc2004-06-03 03:38:44 +00002142 yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
vlm6a02a8a2004-09-08 00:28:11 +00002143 ;
2144 break;}
vlm4053ca52005-02-18 16:34:21 +00002145case 102:
vlma6a12e32005-03-20 12:58:00 +00002146#line 1026 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002147{
vlmfa67ddc2004-06-03 03:38:44 +00002148 asn1p_ref_t *ref;
2149 int ret;
2150 ref = asn1p_ref_new(yylineno);
2151 checkmem(ref);
2152 ret = asn1p_ref_add_component(ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2153 checkmem(ret == 0);
2154 yyval.a_wchunk = asn1p_wsyntx_chunk_fromref(ref, 0);
vlm6a02a8a2004-09-08 00:28:11 +00002155 ;
2156 break;}
vlm0aa86902004-10-12 23:26:53 +00002157case 103:
vlma6a12e32005-03-20 12:58:00 +00002158#line 1038 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00002159{
2160 yyval.a_expr = asn1p_expr_new(yylineno);
2161 checkmem(yyval.a_expr);
2162 yyval.a_expr->Identifier = strdup("...");
2163 checkmem(yyval.a_expr->Identifier);
vlm0aa86902004-10-12 23:26:53 +00002164 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2165 yyval.a_expr->meta_type = AMT_TYPE;
2166 ;
2167 break;}
2168case 104:
vlma6a12e32005-03-20 12:58:00 +00002169#line 1046 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002170{
2171 yyval.a_expr = asn1p_expr_new(yylineno);
2172 checkmem(yyval.a_expr);
2173 yyval.a_expr->Identifier = strdup("...");
2174 checkmem(yyval.a_expr->Identifier);
2175 yyval.a_expr->value = yyvsp[0].a_value;
2176 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2177 yyval.a_expr->meta_type = AMT_TYPE;
2178 ;
2179 break;}
2180case 105:
vlma6a12e32005-03-20 12:58:00 +00002181#line 1055 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00002182{
2183 yyval.a_expr = asn1p_expr_new(yylineno);
2184 checkmem(yyval.a_expr);
2185 yyval.a_expr->Identifier = strdup("...");
vlm5f0128b2004-08-20 13:25:29 +00002186 yyval.a_expr->value = yyvsp[0].a_value;
2187 checkmem(yyval.a_expr->Identifier);
2188 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2189 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002190 ;
2191 break;}
vlm4053ca52005-02-18 16:34:21 +00002192case 106:
vlma6a12e32005-03-20 12:58:00 +00002193#line 1067 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002194{
vlmec8f6812004-08-22 03:19:54 +00002195 yyval.a_expr = yyvsp[-1].a_expr;
vlmfce48a42004-09-14 02:36:39 +00002196 yyval.a_expr->tag = yyvsp[-2].a_tag;
vlmec8f6812004-08-22 03:19:54 +00002197 /*
2198 * Outer constraint for SEQUENCE OF and SET OF applies
2199 * to the inner type.
2200 */
2201 if(yyval.a_expr->expr_type == ASN_CONSTR_SEQUENCE_OF
2202 || yyval.a_expr->expr_type == ASN_CONSTR_SET_OF) {
2203 assert(!TQ_FIRST(&(yyval.a_expr->members))->constraints);
2204 TQ_FIRST(&(yyval.a_expr->members))->constraints = yyvsp[0].a_constr;
2205 } else {
2206 if(yyval.a_expr->constraints) {
vlmfce48a42004-09-14 02:36:39 +00002207 assert(!yyvsp[-1].a_expr);
vlmec8f6812004-08-22 03:19:54 +00002208 } else {
2209 yyval.a_expr->constraints = yyvsp[0].a_constr;
2210 }
2211 }
vlm6a02a8a2004-09-08 00:28:11 +00002212 ;
2213 break;}
vlm4053ca52005-02-18 16:34:21 +00002214case 107:
vlma6a12e32005-03-20 12:58:00 +00002215#line 1089 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002216{
vlm5f0128b2004-08-20 13:25:29 +00002217 yyval.a_expr = yyvsp[0].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00002218 ;
2219 break;}
vlm4053ca52005-02-18 16:34:21 +00002220case 108:
vlma6a12e32005-03-20 12:58:00 +00002221#line 1092 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002222{
vlm5e2c4b92005-03-20 11:12:40 +00002223 yyval.a_expr = yyvsp[-1].a_expr;
2224 assert(yyval.a_expr->expr_type == A1TC_INVALID);
2225 yyval.a_expr->expr_type = ASN_CONSTR_CHOICE;
vlmfa67ddc2004-06-03 03:38:44 +00002226 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002227 ;
2228 break;}
vlm4053ca52005-02-18 16:34:21 +00002229case 109:
vlma6a12e32005-03-20 12:58:00 +00002230#line 1098 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002231{
vlmec8f6812004-08-22 03:19:54 +00002232 yyval.a_expr = yyvsp[-1].a_expr;
2233 assert(yyval.a_expr->expr_type == A1TC_INVALID);
vlm5e2c4b92005-03-20 11:12:40 +00002234 yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE;
vlmec8f6812004-08-22 03:19:54 +00002235 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002236 ;
2237 break;}
vlm4053ca52005-02-18 16:34:21 +00002238case 110:
vlma6a12e32005-03-20 12:58:00 +00002239#line 1104 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002240{
vlmec8f6812004-08-22 03:19:54 +00002241 yyval.a_expr = yyvsp[-1].a_expr;
2242 assert(yyval.a_expr->expr_type == A1TC_INVALID);
vlm5e2c4b92005-03-20 11:12:40 +00002243 yyval.a_expr->expr_type = ASN_CONSTR_SET;
vlmec8f6812004-08-22 03:19:54 +00002244 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002245 ;
2246 break;}
vlm4053ca52005-02-18 16:34:21 +00002247case 111:
vlma6a12e32005-03-20 12:58:00 +00002248#line 1110 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002249{
vlm39e5ed72004-09-05 10:40:41 +00002250 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002251 checkmem(yyval.a_expr);
vlm151c0b22004-09-22 16:03:36 +00002252 yyval.a_expr->constraints = yyvsp[-4].a_constr;
vlmec8f6812004-08-22 03:19:54 +00002253 yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE_OF;
2254 yyval.a_expr->meta_type = AMT_TYPE;
vlm151c0b22004-09-22 16:03:36 +00002255 yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
vlma2374a02004-09-14 02:44:07 +00002256 yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
vlm6a02a8a2004-09-08 00:28:11 +00002257 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2258 ;
2259 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002260case 112:
vlma6a12e32005-03-20 12:58:00 +00002261#line 1120 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002262{
vlm39e5ed72004-09-05 10:40:41 +00002263 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002264 checkmem(yyval.a_expr);
vlm151c0b22004-09-22 16:03:36 +00002265 yyval.a_expr->constraints = yyvsp[-4].a_constr;
vlmec8f6812004-08-22 03:19:54 +00002266 yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
2267 yyval.a_expr->meta_type = AMT_TYPE;
vlm151c0b22004-09-22 16:03:36 +00002268 yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
vlma2374a02004-09-14 02:44:07 +00002269 yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
vlm6a02a8a2004-09-08 00:28:11 +00002270 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
2271 ;
2272 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002273case 113:
vlma6a12e32005-03-20 12:58:00 +00002274#line 1130 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002275{
vlm39e5ed72004-09-05 10:40:41 +00002276 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002277 checkmem(yyval.a_expr);
vlm044f7442004-09-04 04:49:21 +00002278 yyval.a_expr->expr_type = ASN_TYPE_ANY;
vlmec8f6812004-08-22 03:19:54 +00002279 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002280 ;
2281 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002282case 114:
vlma6a12e32005-03-20 12:58:00 +00002283#line 1136 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002284{
vlmec8f6812004-08-22 03:19:54 +00002285 int ret;
vlm39e5ed72004-09-05 10:40:41 +00002286 yyval.a_expr = asn1p_expr_new(yylineno);
vlmec8f6812004-08-22 03:19:54 +00002287 checkmem(yyval.a_expr);
2288 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2289 ret = asn1p_ref_add_component(yyval.a_expr->reference,
2290 yyvsp[0].tv_str, RLT_lowercase);
2291 checkmem(ret == 0);
vlm044f7442004-09-04 04:49:21 +00002292 yyval.a_expr->expr_type = ASN_TYPE_ANY;
vlmec8f6812004-08-22 03:19:54 +00002293 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002294 ;
2295 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002296case 115:
vlma6a12e32005-03-20 12:58:00 +00002297#line 1150 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002298{
vlmfa67ddc2004-06-03 03:38:44 +00002299 int ret;
2300 yyval.a_expr = yyvsp[-1].a_expr;
2301 assert(yyval.a_expr->expr_type == 0);
2302 assert(yyval.a_expr->meta_type == 0);
2303 assert(yyval.a_expr->reference == 0);
2304 yyval.a_expr->reference = asn1p_ref_new(yylineno);
2305 checkmem(yyval.a_expr->reference);
2306 ret = asn1p_ref_add_component(yyval.a_expr->reference, yyvsp[-3].tv_str, RLT_UNKNOWN);
2307 checkmem(ret == 0);
2308 free(yyvsp[-3].tv_str);
2309 yyval.a_expr->expr_type = A1TC_PARAMETRIZED;
2310 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002311 ;
2312 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002313case 116:
vlma6a12e32005-03-20 12:58:00 +00002314#line 1174 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002315{
vlmfa67ddc2004-06-03 03:38:44 +00002316 yyval.a_expr = asn1p_expr_new(yylineno);
2317 checkmem(yyval.a_expr);
2318 yyval.a_expr->reference = yyvsp[0].a_ref;
2319 yyval.a_expr->expr_type = A1TC_REFERENCE;
2320 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm6a02a8a2004-09-08 00:28:11 +00002321 ;
2322 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002323case 117:
vlma6a12e32005-03-20 12:58:00 +00002324#line 1181 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002325{
vlmfa67ddc2004-06-03 03:38:44 +00002326 yyval.a_expr = asn1p_expr_new(yylineno);
2327 checkmem(yyval.a_expr);
2328 yyval.a_expr->reference = yyvsp[0].a_ref;
2329 yyval.a_expr->expr_type = A1TC_INSTANCE;
2330 yyval.a_expr->meta_type = AMT_TYPE;
vlm6a02a8a2004-09-08 00:28:11 +00002331 ;
2332 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002333case 118:
vlma6a12e32005-03-20 12:58:00 +00002334#line 1196 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002335{
vlmfa67ddc2004-06-03 03:38:44 +00002336 int ret;
2337 yyval.a_ref = asn1p_ref_new(yylineno);
2338 checkmem(yyval.a_ref);
2339 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
2340 checkmem(ret == 0);
2341 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002342 ;
2343 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002344case 119:
vlma6a12e32005-03-20 12:58:00 +00002345#line 1204 "asn1p_y.y"
vlm5e2c4b92005-03-20 11:12:40 +00002346{
2347 int ret;
2348 yyval.a_ref = asn1p_ref_new(yylineno);
2349 checkmem(yyval.a_ref);
2350 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2351 checkmem(ret == 0);
2352 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
2353 checkmem(ret == 0);
2354 free(yyvsp[-2].tv_str);
2355 ;
2356 break;}
vlm0aa86902004-10-12 23:26:53 +00002357case 120:
vlma6a12e32005-03-20 12:58:00 +00002358#line 1214 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002359{
vlmfa67ddc2004-06-03 03:38:44 +00002360 int ret;
2361 yyval.a_ref = asn1p_ref_new(yylineno);
2362 checkmem(yyval.a_ref);
2363 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2364 checkmem(ret == 0);
vlmc94e28f2004-09-15 11:59:51 +00002365 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
vlmfa67ddc2004-06-03 03:38:44 +00002366 checkmem(ret == 0);
2367 free(yyvsp[-2].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002368 ;
2369 break;}
vlm0aa86902004-10-12 23:26:53 +00002370case 121:
vlma6a12e32005-03-20 12:58:00 +00002371#line 1224 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002372{
vlmfa67ddc2004-06-03 03:38:44 +00002373 int ret;
2374 yyval.a_ref = asn1p_ref_new(yylineno);
2375 checkmem(yyval.a_ref);
vlmc94e28f2004-09-15 11:59:51 +00002376 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2377 checkmem(ret == 0);
2378 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
2379 checkmem(ret == 0);
2380 free(yyvsp[-2].tv_str);
2381 ;
2382 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002383case 122:
vlma6a12e32005-03-20 12:58:00 +00002384#line 1234 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002385{
2386 int ret;
2387 yyval.a_ref = asn1p_ref_new(yylineno);
2388 checkmem(yyval.a_ref);
vlmfa67ddc2004-06-03 03:38:44 +00002389 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
2390 free(yyvsp[0].tv_str);
2391 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002392 ;
2393 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002394case 123:
vlma6a12e32005-03-20 12:58:00 +00002395#line 1242 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002396{
vlmfa67ddc2004-06-03 03:38:44 +00002397 int ret;
2398 yyval.a_ref = yyvsp[0].a_ref;
2399 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_CAPITALS);
2400 free(yyvsp[-2].tv_str);
2401 checkmem(ret == 0);
2402 /*
2403 * Move the last element infront.
2404 */
2405 {
2406 struct asn1p_ref_component_s tmp_comp;
2407 tmp_comp = yyval.a_ref->components[yyval.a_ref->comp_count-1];
2408 memmove(&yyval.a_ref->components[1],
2409 &yyval.a_ref->components[0],
2410 sizeof(yyval.a_ref->components[0])
2411 * (yyval.a_ref->comp_count - 1));
2412 yyval.a_ref->components[0] = tmp_comp;
2413 }
vlm6a02a8a2004-09-08 00:28:11 +00002414 ;
2415 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002416case 124:
vlma6a12e32005-03-20 12:58:00 +00002417#line 1264 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002418{
vlmfa67ddc2004-06-03 03:38:44 +00002419 int ret;
2420 yyval.a_ref = asn1p_ref_new(yylineno);
2421 checkmem(yyval.a_ref);
2422 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2423 free(yyvsp[0].a_refcomp.name);
2424 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002425 ;
2426 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002427case 125:
vlma6a12e32005-03-20 12:58:00 +00002428#line 1272 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002429{
vlmfa67ddc2004-06-03 03:38:44 +00002430 int ret;
2431 yyval.a_ref = yyvsp[-2].a_ref;
2432 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
2433 free(yyvsp[0].a_refcomp.name);
2434 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002435 ;
2436 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002437case 128:
vlma6a12e32005-03-20 12:58:00 +00002438#line 1286 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002439{
vlmfa67ddc2004-06-03 03:38:44 +00002440 yyval.a_refcomp.lex_type = RLT_AmpUppercase;
2441 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00002442 ;
2443 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002444case 129:
vlma6a12e32005-03-20 12:58:00 +00002445#line 1291 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002446{
vlmfa67ddc2004-06-03 03:38:44 +00002447 yyval.a_refcomp.lex_type = RLT_Amplowercase;
2448 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00002449 ;
2450 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002451case 130:
vlma6a12e32005-03-20 12:58:00 +00002452#line 1304 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002453{
vlmfa67ddc2004-06-03 03:38:44 +00002454 yyval.a_expr = yyvsp[-2].a_expr;
2455 assert(yyval.a_expr->Identifier == NULL);
2456 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
2457 yyval.a_expr->meta_type = AMT_VALUE;
2458 yyval.a_expr->value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00002459 ;
2460 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002461case 131:
vlma6a12e32005-03-20 12:58:00 +00002462#line 1314 "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_CHOICE_IDENTIFIER;
2467 yyval.a_value->value.choice_identifier.identifier = yyvsp[-2].tv_str;
2468 yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
2469 ;
2470 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002471case 132:
vlma6a12e32005-03-20 12:58:00 +00002472#line 1321 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002473{ asn1p_lexer_hack_push_opaque_state(); ;
2474 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002475case 133:
vlma6a12e32005-03-20 12:58:00 +00002476#line 1321 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002477{
vlmfa67ddc2004-06-03 03:38:44 +00002478 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2479 checkmem(yyval.a_value);
2480 yyval.a_value->type = ATV_UNPARSED;
vlm6a02a8a2004-09-08 00:28:11 +00002481 ;
2482 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002483case 134:
vlma6a12e32005-03-20 12:58:00 +00002484#line 1326 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002485{
2486 yyval.a_value = asn1p_value_fromint(0);
2487 checkmem(yyval.a_value);
2488 yyval.a_value->type = ATV_NULL;
2489 ;
2490 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002491case 135:
vlma6a12e32005-03-20 12:58:00 +00002492#line 1331 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002493{
2494 yyval.a_value = asn1p_value_fromint(0);
2495 checkmem(yyval.a_value);
2496 yyval.a_value->type = ATV_FALSE;
2497 ;
2498 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002499case 136:
vlma6a12e32005-03-20 12:58:00 +00002500#line 1336 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002501{
2502 yyval.a_value = asn1p_value_fromint(0);
2503 checkmem(yyval.a_value);
2504 yyval.a_value->type = ATV_TRUE;
2505 ;
2506 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002507case 137:
vlma6a12e32005-03-20 12:58:00 +00002508#line 1341 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002509{
vlmfa67ddc2004-06-03 03:38:44 +00002510 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
2511 checkmem(yyval.a_value);
vlm6a02a8a2004-09-08 00:28:11 +00002512 ;
2513 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002514case 138:
vlma6a12e32005-03-20 12:58:00 +00002515#line 1345 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002516{
vlmfa67ddc2004-06-03 03:38:44 +00002517 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
2518 checkmem(yyval.a_value);
vlm6a02a8a2004-09-08 00:28:11 +00002519 ;
2520 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002521case 139:
vlma6a12e32005-03-20 12:58:00 +00002522#line 1349 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002523{
vlmfa67ddc2004-06-03 03:38:44 +00002524 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2525 checkmem(yyval.a_value);
vlm6a02a8a2004-09-08 00:28:11 +00002526 ;
2527 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002528case 140:
vlma6a12e32005-03-20 12:58:00 +00002529#line 1353 "asn1p_y.y"
vlm5e2c4b92005-03-20 11:12:40 +00002530{
2531 yyval.a_value = yyvsp[0].a_value;
2532 ;
2533 break;}
vlm0aa86902004-10-12 23:26:53 +00002534case 141:
vlma6a12e32005-03-20 12:58:00 +00002535#line 1356 "asn1p_y.y"
vlm151c0b22004-09-22 16:03:36 +00002536{
2537 yyval.a_value = yyvsp[0].a_value;
2538 ;
2539 break;}
vlm0aa86902004-10-12 23:26:53 +00002540case 142:
vlma6a12e32005-03-20 12:58:00 +00002541#line 1362 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002542{
vlmfa67ddc2004-06-03 03:38:44 +00002543 asn1p_ref_t *ref;
2544 int ret;
2545 ref = asn1p_ref_new(yylineno);
2546 checkmem(ref);
2547 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
2548 checkmem(ret == 0);
2549 yyval.a_value = asn1p_value_fromref(ref, 0);
2550 checkmem(yyval.a_value);
2551 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002552 ;
2553 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002554case 143:
vlma6a12e32005-03-20 12:58:00 +00002555#line 1373 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002556{
vlmfa67ddc2004-06-03 03:38:44 +00002557 asn1p_ref_t *ref;
2558 int ret;
2559 ref = asn1p_ref_new(yylineno);
2560 checkmem(ref);
2561 ret = asn1p_ref_add_component(ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
2562 checkmem(ret == 0);
2563 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
2564 checkmem(ret == 0);
2565 yyval.a_value = asn1p_value_fromref(ref, 0);
2566 checkmem(yyval.a_value);
2567 free(yyvsp[-2].tv_str);
2568 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00002569 ;
2570 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002571case 144:
vlma6a12e32005-03-20 12:58:00 +00002572#line 1390 "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;}
vlm5e2c4b92005-03-20 11:12:40 +00002583case 145:
vlm6611add2005-03-20 14:28:32 +00002584#line 1399 "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;}
vlm5e2c4b92005-03-20 11:12:40 +00002598case 146:
vlm6611add2005-03-20 14:28:32 +00002599#line 1414 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002600{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
2601 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002602case 147:
vlm6611add2005-03-20 14:28:32 +00002603#line 1415 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002604{ yyval.a_type = ASN_BASIC_NULL; ;
2605 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002606case 148:
vlm6611add2005-03-20 14:28:32 +00002607#line 1416 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002608{ yyval.a_type = ASN_BASIC_REAL; ;
2609 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002610case 149:
vlm6611add2005-03-20 14:28:32 +00002611#line 1417 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002612{ yyval.a_type = yyvsp[0].a_type; ;
2613 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002614case 150:
vlm6611add2005-03-20 14:28:32 +00002615#line 1418 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002616{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
2617 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002618case 151:
vlm6611add2005-03-20 14:28:32 +00002619#line 1419 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002620{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
2621 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002622case 152:
vlm6611add2005-03-20 14:28:32 +00002623#line 1420 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002624{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
2625 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002626case 153:
vlm6611add2005-03-20 14:28:32 +00002627#line 1421 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002628{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
2629 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002630case 154:
vlm6611add2005-03-20 14:28:32 +00002631#line 1422 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002632{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
2633 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002634case 155:
vlm6611add2005-03-20 14:28:32 +00002635#line 1423 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002636{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
2637 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002638case 156:
vlm6611add2005-03-20 14:28:32 +00002639#line 1424 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002640{ yyval.a_type = ASN_BASIC_UTCTime; ;
2641 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002642case 157:
vlm6611add2005-03-20 14:28:32 +00002643#line 1425 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002644{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
2645 break;}
vlm5e2c4b92005-03-20 11:12:40 +00002646case 158:
vlm6611add2005-03-20 14:28:32 +00002647#line 1426 "asn1p_y.y"
vlm5e2c4b92005-03-20 11:12:40 +00002648{ yyval.a_type = yyvsp[0].a_type; ;
2649 break;}
vlm4053ca52005-02-18 16:34:21 +00002650case 159:
vlm6611add2005-03-20 14:28:32 +00002651#line 1433 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002652{ yyval.a_type = ASN_BASIC_INTEGER; ;
2653 break;}
vlm4053ca52005-02-18 16:34:21 +00002654case 160:
vlm6611add2005-03-20 14:28:32 +00002655#line 1434 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002656{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
2657 break;}
vlm4053ca52005-02-18 16:34:21 +00002658case 161:
vlm6611add2005-03-20 14:28:32 +00002659#line 1435 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002660{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
2661 break;}
vlm4053ca52005-02-18 16:34:21 +00002662case 162:
vlm6611add2005-03-20 14:28:32 +00002663#line 1439 "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;}
vlm4053ca52005-02-18 16:34:21 +00002671case 163:
vlm6611add2005-03-20 14:28:32 +00002672#line 1445 "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;}
vlm4053ca52005-02-18 16:34:21 +00002684case 164:
vlm6611add2005-03-20 14:28:32 +00002685#line 1458 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002686{ yyval.a_type = ASN_STRING_BMPString; ;
2687 break;}
vlm4053ca52005-02-18 16:34:21 +00002688case 165:
vlm6611add2005-03-20 14:28:32 +00002689#line 1459 "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;}
vlm4053ca52005-02-18 16:34:21 +00002695case 166:
vlm6611add2005-03-20 14:28:32 +00002696#line 1463 "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;}
vlm4053ca52005-02-18 16:34:21 +00002702case 167:
vlm6611add2005-03-20 14:28:32 +00002703#line 1467 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002704{ yyval.a_type = ASN_STRING_IA5String; ;
vlm6a02a8a2004-09-08 00:28:11 +00002705 break;}
vlm4053ca52005-02-18 16:34:21 +00002706case 168:
vlm6611add2005-03-20 14:28:32 +00002707#line 1468 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002708{ yyval.a_type = ASN_STRING_ISO646String; ;
vlm6a02a8a2004-09-08 00:28:11 +00002709 break;}
vlm4053ca52005-02-18 16:34:21 +00002710case 169:
vlm6611add2005-03-20 14:28:32 +00002711#line 1469 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002712{ yyval.a_type = ASN_STRING_NumericString; ;
vlm6a02a8a2004-09-08 00:28:11 +00002713 break;}
vlm4053ca52005-02-18 16:34:21 +00002714case 170:
vlm6611add2005-03-20 14:28:32 +00002715#line 1470 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002716{ yyval.a_type = ASN_STRING_PrintableString; ;
vlm6a02a8a2004-09-08 00:28:11 +00002717 break;}
vlm4053ca52005-02-18 16:34:21 +00002718case 171:
vlm6611add2005-03-20 14:28:32 +00002719#line 1471 "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;}
vlm4053ca52005-02-18 16:34:21 +00002725case 172:
vlm6611add2005-03-20 14:28:32 +00002726#line 1475 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002727{ yyval.a_type = ASN_STRING_TeletexString; ;
2728 break;}
vlm4053ca52005-02-18 16:34:21 +00002729case 173:
vlm6611add2005-03-20 14:28:32 +00002730#line 1476 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002731{ yyval.a_type = ASN_STRING_UniversalString; ;
2732 break;}
vlm4053ca52005-02-18 16:34:21 +00002733case 174:
vlm6611add2005-03-20 14:28:32 +00002734#line 1477 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002735{ yyval.a_type = ASN_STRING_UTF8String; ;
2736 break;}
vlm4053ca52005-02-18 16:34:21 +00002737case 175:
vlm6611add2005-03-20 14:28:32 +00002738#line 1478 "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;}
vlm4053ca52005-02-18 16:34:21 +00002744case 176:
vlm6611add2005-03-20 14:28:32 +00002745#line 1482 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002746{ yyval.a_type = ASN_STRING_VisibleString; ;
2747 break;}
vlm4053ca52005-02-18 16:34:21 +00002748case 177:
vlm6611add2005-03-20 14:28:32 +00002749#line 1483 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002750{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
2751 break;}
vlm4053ca52005-02-18 16:34:21 +00002752case 183:
vlm6611add2005-03-20 14:28:32 +00002753#line 1495 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002754{ yyval.a_constr = 0; ;
2755 break;}
vlm4053ca52005-02-18 16:34:21 +00002756case 184:
vlm6611add2005-03-20 14:28:32 +00002757#line 1496 "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;}
vlm4053ca52005-02-18 16:34:21 +00002762case 185:
vlm6611add2005-03-20 14:28:32 +00002763#line 1502 "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;}
vlm4053ca52005-02-18 16:34:21 +00002768case 186:
vlm6611add2005-03-20 14:28:32 +00002769#line 1505 "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;}
vlm4053ca52005-02-18 16:34:21 +00002778case 187:
vlm6611add2005-03-20 14:28:32 +00002779#line 1515 "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;}
vlm4053ca52005-02-18 16:34:21 +00002784case 188:
vlm6611add2005-03-20 14:28:32 +00002785#line 1518 "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;}
vlm4053ca52005-02-18 16:34:21 +00002790case 189:
vlm6611add2005-03-20 14:28:32 +00002791#line 1524 "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;}
vlm4053ca52005-02-18 16:34:21 +00002796case 190:
vlm6611add2005-03-20 14:28:32 +00002797#line 1527 "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;}
vlm4053ca52005-02-18 16:34:21 +00002805case 191:
vlm6611add2005-03-20 14:28:32 +00002806#line 1533 "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;}
vlm4053ca52005-02-18 16:34:21 +00002816case 192:
vlm6611add2005-03-20 14:28:32 +00002817#line 1544 "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;}
vlm4053ca52005-02-18 16:34:21 +00002822case 193:
vlm6611add2005-03-20 14:28:32 +00002823#line 1547 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002824{
vlmfa67ddc2004-06-03 03:38:44 +00002825 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002826 ;
2827 break;}
vlm4053ca52005-02-18 16:34:21 +00002828case 194:
vlm6611add2005-03-20 14:28:32 +00002829#line 1550 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002830{
vlmfa67ddc2004-06-03 03:38:44 +00002831 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002832 ;
2833 break;}
vlm4053ca52005-02-18 16:34:21 +00002834case 195:
vlm6611add2005-03-20 14:28:32 +00002835#line 1553 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002836{
vlmfa67ddc2004-06-03 03:38:44 +00002837 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00002838 ;
2839 break;}
vlm4053ca52005-02-18 16:34:21 +00002840case 196:
vlm6611add2005-03-20 14:28:32 +00002841#line 1559 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002842{
vlmfa67ddc2004-06-03 03:38:44 +00002843 int ret;
2844 yyval.a_constr = asn1p_constraint_new(yylineno);
2845 checkmem(yyval.a_constr);
2846 yyval.a_constr->type = yyvsp[-3].a_ctype;
2847 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
2848 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002849 ;
2850 break;}
vlm4053ca52005-02-18 16:34:21 +00002851case 197:
vlm6611add2005-03-20 14:28:32 +00002852#line 1567 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002853{
vlm9283dbe2004-08-18 04:59:12 +00002854 int ret;
2855 yyval.a_constr = asn1p_constraint_new(yylineno);
2856 checkmem(yyval.a_constr);
2857 yyval.a_constr->type = ACT_CA_SET;
2858 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
2859 checkmem(ret == 0);
vlm6a02a8a2004-09-08 00:28:11 +00002860 ;
2861 break;}
vlm4053ca52005-02-18 16:34:21 +00002862case 198:
vlm6611add2005-03-20 14:28:32 +00002863#line 1575 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002864{
vlm9283dbe2004-08-18 04:59:12 +00002865 yyval.a_constr = asn1p_constraint_new(yylineno);
2866 checkmem(yyval.a_constr);
2867 yyval.a_constr->type = ACT_EL_VALUE;
2868 yyval.a_constr->value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00002869 ;
2870 break;}
vlm4053ca52005-02-18 16:34:21 +00002871case 199:
vlm6611add2005-03-20 14:28:32 +00002872#line 1581 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00002873{
vlm0aa86902004-10-12 23:26:53 +00002874 yyval.a_constr = asn1p_constraint_new(yylineno);
2875 checkmem(yyval.a_constr);
vlma6a12e32005-03-20 12:58:00 +00002876 yyval.a_constr->type = ACT_EL_TYPE;
2877 yyval.a_constr->containedSubtype = yyvsp[0].a_value;
vlmc94e28f2004-09-15 11:59:51 +00002878 ;
2879 break;}
vlm0aa86902004-10-12 23:26:53 +00002880case 200:
vlm6611add2005-03-20 14:28:32 +00002881#line 1587 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002882{
2883 yyval.a_constr = asn1p_constraint_new(yylineno);
2884 checkmem(yyval.a_constr);
2885 yyval.a_constr->type = yyvsp[-1].a_ctype;
vlma6a12e32005-03-20 12:58:00 +00002886 yyval.a_constr->range_start = yyvsp[-2].a_value;
2887 yyval.a_constr->range_stop = yyvsp[0].a_value;
2888 ;
2889 break;}
2890case 201:
vlm6611add2005-03-20 14:28:32 +00002891#line 1594 "asn1p_y.y"
vlma6a12e32005-03-20 12:58:00 +00002892{
2893 yyval.a_constr = asn1p_constraint_new(yylineno);
2894 checkmem(yyval.a_constr);
2895 yyval.a_constr->type = yyvsp[-1].a_ctype;
vlm4053ca52005-02-18 16:34:21 +00002896 yyval.a_constr->range_start = asn1p_value_fromint(-123);
2897 yyval.a_constr->range_stop = yyvsp[0].a_value;
2898 yyval.a_constr->range_start->type = ATV_MIN;
2899 ;
2900 break;}
vlma6a12e32005-03-20 12:58:00 +00002901case 202:
vlm6611add2005-03-20 14:28:32 +00002902#line 1602 "asn1p_y.y"
vlm0aa86902004-10-12 23:26:53 +00002903{
2904 yyval.a_constr = asn1p_constraint_new(yylineno);
2905 checkmem(yyval.a_constr);
2906 yyval.a_constr->type = yyvsp[-1].a_ctype;
2907 yyval.a_constr->range_start = yyvsp[-2].a_value;
2908 yyval.a_constr->range_stop = asn1p_value_fromint(321);
2909 yyval.a_constr->range_stop->type = ATV_MAX;
2910 ;
2911 break;}
vlma6a12e32005-03-20 12:58:00 +00002912case 203:
vlm6611add2005-03-20 14:28:32 +00002913#line 1610 "asn1p_y.y"
vlm151c0b22004-09-22 16:03:36 +00002914{
vlm4053ca52005-02-18 16:34:21 +00002915 yyval.a_constr = asn1p_constraint_new(yylineno);
2916 checkmem(yyval.a_constr);
2917 yyval.a_constr->type = yyvsp[-1].a_ctype;
2918 yyval.a_constr->range_start = asn1p_value_fromint(-123);
2919 yyval.a_constr->range_stop = asn1p_value_fromint(321);
2920 yyval.a_constr->range_start->type = ATV_MIN;
2921 yyval.a_constr->range_stop->type = ATV_MAX;
vlm151c0b22004-09-22 16:03:36 +00002922 ;
2923 break;}
vlmc94e28f2004-09-15 11:59:51 +00002924case 204:
vlm6611add2005-03-20 14:28:32 +00002925#line 1619 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002926{
2927 yyval.a_constr = yyvsp[0].a_constr;
2928 ;
vlm0aa86902004-10-12 23:26:53 +00002929 break;}
2930case 205:
vlm6611add2005-03-20 14:28:32 +00002931#line 1622 "asn1p_y.y"
vlma6a12e32005-03-20 12:58:00 +00002932{
2933 yyval.a_constr = yyvsp[0].a_constr;
2934 ;
vlm0aa86902004-10-12 23:26:53 +00002935 break;}
2936case 206:
vlm6611add2005-03-20 14:28:32 +00002937#line 1626 "asn1p_y.y"
2938{ asn1p_lexer_hack_push_opaque_state(); ;
vlm0aa86902004-10-12 23:26:53 +00002939 break;}
2940case 207:
vlm6611add2005-03-20 14:28:32 +00002941#line 1626 "asn1p_y.y"
2942{
2943 yyval.a_constr = asn1p_constraint_new(yylineno);
2944 checkmem(yyval.a_constr);
2945 yyval.a_constr->type = ACT_CT_CTDBY;
2946 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
2947 checkmem(yyval.a_constr->value);
2948 yyval.a_constr->value->type = ATV_UNPARSED;
2949 ;
vlm0aa86902004-10-12 23:26:53 +00002950 break;}
2951case 208:
vlm6611add2005-03-20 14:28:32 +00002952#line 1637 "asn1p_y.y"
2953{ yyval.a_ctype = ACT_EL_RANGE; ;
vlm4053ca52005-02-18 16:34:21 +00002954 break;}
2955case 209:
vlm6611add2005-03-20 14:28:32 +00002956#line 1638 "asn1p_y.y"
2957{ yyval.a_ctype = ACT_EL_RLRANGE; ;
vlma6a12e32005-03-20 12:58:00 +00002958 break;}
2959case 210:
vlm6611add2005-03-20 14:28:32 +00002960#line 1639 "asn1p_y.y"
2961{ yyval.a_ctype = ACT_EL_LLRANGE; ;
2962 break;}
2963case 211:
2964#line 1640 "asn1p_y.y"
2965{ yyval.a_ctype = ACT_EL_ULRANGE; ;
2966 break;}
2967case 212:
2968#line 1644 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002969{
vlm39e5ed72004-09-05 10:40:41 +00002970 yyval.a_ctype = ACT_CT_SIZE;
vlm6a02a8a2004-09-08 00:28:11 +00002971 ;
2972 break;}
vlm6611add2005-03-20 14:28:32 +00002973case 213:
2974#line 1647 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002975{
vlm39e5ed72004-09-05 10:40:41 +00002976 yyval.a_ctype = ACT_CT_FROM;
vlm6a02a8a2004-09-08 00:28:11 +00002977 ;
2978 break;}
vlm6611add2005-03-20 14:28:32 +00002979case 214:
2980#line 1653 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002981{
2982 yyval.a_value = asn1p_value_fromint(0);
2983 checkmem(yyval.a_value);
2984 yyval.a_value->type = ATV_FALSE;
2985 ;
2986 break;}
vlm6611add2005-03-20 14:28:32 +00002987case 215:
2988#line 1658 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00002989{
2990 yyval.a_value = asn1p_value_fromint(1);
2991 checkmem(yyval.a_value);
2992 yyval.a_value->type = ATV_TRUE;
2993 ;
2994 break;}
vlm6611add2005-03-20 14:28:32 +00002995case 216:
2996#line 1663 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00002997{
vlmfa67ddc2004-06-03 03:38:44 +00002998 yyval.a_value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00002999 ;
3000 break;}
vlm6611add2005-03-20 14:28:32 +00003001case 217:
3002#line 1666 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00003003{
3004 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
3005 checkmem(yyval.a_value);
3006 ;
3007 break;}
vlm6611add2005-03-20 14:28:32 +00003008case 218:
3009#line 1670 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003010{
vlmfa67ddc2004-06-03 03:38:44 +00003011 asn1p_ref_t *ref;
3012 int ret;
3013 ref = asn1p_ref_new(yylineno);
3014 checkmem(ref);
3015 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
3016 checkmem(ret == 0);
3017 yyval.a_value = asn1p_value_fromref(ref, 0);
3018 checkmem(yyval.a_value);
3019 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003020 ;
3021 break;}
vlm6611add2005-03-20 14:28:32 +00003022case 219:
3023#line 1684 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003024{
vlm4053ca52005-02-18 16:34:21 +00003025 asn1p_ref_t *ref;
3026 int ret;
3027 ref = asn1p_ref_new(yylineno);
3028 checkmem(ref);
3029 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_UNKNOWN);
3030 checkmem(ret == 0);
3031 yyval.a_value = asn1p_value_fromref(ref, 0);
vlmfa67ddc2004-06-03 03:38:44 +00003032 checkmem(yyval.a_value);
vlm4053ca52005-02-18 16:34:21 +00003033 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003034 ;
3035 break;}
vlm6611add2005-03-20 14:28:32 +00003036case 220:
3037#line 1698 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003038{
vlmfa67ddc2004-06-03 03:38:44 +00003039 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003040 ;
3041 break;}
vlm6611add2005-03-20 14:28:32 +00003042case 221:
3043#line 1704 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003044{
vlmfa67ddc2004-06-03 03:38:44 +00003045 yyval.a_constr = yyvsp[0].a_constr;
vlm6a02a8a2004-09-08 00:28:11 +00003046 ;
3047 break;}
vlm6611add2005-03-20 14:28:32 +00003048case 222:
3049#line 1707 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003050{
vlmfa67ddc2004-06-03 03:38:44 +00003051 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00003052 ;
3053 break;}
vlm6611add2005-03-20 14:28:32 +00003054case 223:
3055#line 1713 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003056{
vlmfa67ddc2004-06-03 03:38:44 +00003057 yyval.a_constr = asn1p_constraint_new(yylineno);
3058 checkmem(yyval.a_constr);
3059 yyval.a_constr->type = ACT_EL_EXT;
vlm6a02a8a2004-09-08 00:28:11 +00003060 ;
3061 break;}
vlm6611add2005-03-20 14:28:32 +00003062case 224:
3063#line 1718 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003064{
vlmfa67ddc2004-06-03 03:38:44 +00003065 yyval.a_constr = asn1p_constraint_new(yylineno);
3066 checkmem(yyval.a_constr);
3067 yyval.a_constr->type = ACT_EL_VALUE;
3068 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[-2].tv_str, strlen(yyvsp[-2].tv_str), 0);
3069 yyval.a_constr->presence = yyvsp[0].a_pres;
vlm6a02a8a2004-09-08 00:28:11 +00003070 ;
3071 break;}
vlm6611add2005-03-20 14:28:32 +00003072case 225:
3073#line 1731 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003074{ yyval.a_pres = ACPRES_DEFAULT; ;
3075 break;}
vlm6611add2005-03-20 14:28:32 +00003076case 226:
3077#line 1732 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003078{ yyval.a_pres = yyvsp[0].a_pres; ;
3079 break;}
vlm6611add2005-03-20 14:28:32 +00003080case 227:
3081#line 1736 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003082{
vlmfa67ddc2004-06-03 03:38:44 +00003083 yyval.a_pres = ACPRES_PRESENT;
vlm6a02a8a2004-09-08 00:28:11 +00003084 ;
3085 break;}
vlm6611add2005-03-20 14:28:32 +00003086case 228:
3087#line 1739 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003088{
vlmfa67ddc2004-06-03 03:38:44 +00003089 yyval.a_pres = ACPRES_ABSENT;
vlm6a02a8a2004-09-08 00:28:11 +00003090 ;
3091 break;}
vlm6611add2005-03-20 14:28:32 +00003092case 229:
3093#line 1742 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003094{
vlmfa67ddc2004-06-03 03:38:44 +00003095 yyval.a_pres = ACPRES_OPTIONAL;
vlm6a02a8a2004-09-08 00:28:11 +00003096 ;
3097 break;}
vlma6a12e32005-03-20 12:58:00 +00003098case 230:
vlm6611add2005-03-20 14:28:32 +00003099#line 1748 "asn1p_y.y"
3100{
3101 yyval.a_constr = yyvsp[0].a_constr;
3102 ;
3103 break;}
3104case 231:
3105#line 1751 "asn1p_y.y"
3106{
3107 yyval.a_constr = yyvsp[0].a_constr;
3108 ;
3109 break;}
3110case 232:
3111#line 1760 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003112{
vlmfa67ddc2004-06-03 03:38:44 +00003113 asn1p_ref_t *ref = asn1p_ref_new(yylineno);
3114 asn1p_constraint_t *ct;
3115 int ret;
3116 ret = asn1p_ref_add_component(ref, yyvsp[-1].tv_str, 0);
3117 checkmem(ret == 0);
3118 ct = asn1p_constraint_new(yylineno);
3119 checkmem(yyval.a_constr);
3120 ct->type = ACT_EL_VALUE;
3121 ct->value = asn1p_value_fromref(ref, 0);
3122 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003123 ;
3124 break;}
vlm6611add2005-03-20 14:28:32 +00003125case 233:
3126#line 1775 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003127{
vlmfa67ddc2004-06-03 03:38:44 +00003128 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
vlm6a02a8a2004-09-08 00:28:11 +00003129 ;
3130 break;}
vlm6611add2005-03-20 14:28:32 +00003131case 234:
3132#line 1781 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003133{
vlmfa67ddc2004-06-03 03:38:44 +00003134 yyval.a_constr = asn1p_constraint_new(yylineno);
3135 checkmem(yyval.a_constr);
3136 yyval.a_constr->type = ACT_EL_VALUE;
3137 yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
vlm6a02a8a2004-09-08 00:28:11 +00003138 ;
3139 break;}
vlm6611add2005-03-20 14:28:32 +00003140case 235:
3141#line 1787 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003142{
vlmfa67ddc2004-06-03 03:38:44 +00003143 asn1p_constraint_t *ct;
3144 ct = asn1p_constraint_new(yylineno);
3145 checkmem(ct);
3146 ct->type = ACT_EL_VALUE;
3147 ct->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
3148 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm6a02a8a2004-09-08 00:28:11 +00003149 ;
3150 break;}
vlm6611add2005-03-20 14:28:32 +00003151case 236:
3152#line 1801 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003153{
vlmfa67ddc2004-06-03 03:38:44 +00003154 char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
3155 int ret;
3156 *p = '@';
3157 strcpy(p + 1, yyvsp[0].tv_str);
3158 yyval.a_ref = asn1p_ref_new(yylineno);
3159 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
3160 checkmem(ret == 0);
3161 free(p);
3162 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003163 ;
3164 break;}
vlm6611add2005-03-20 14:28:32 +00003165case 237:
3166#line 1812 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003167{
vlmfa67ddc2004-06-03 03:38:44 +00003168 char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
3169 int ret;
3170 p[0] = '@';
3171 p[1] = '.';
3172 strcpy(p + 2, yyvsp[0].tv_str);
3173 yyval.a_ref = asn1p_ref_new(yylineno);
3174 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
3175 checkmem(ret == 0);
3176 free(p);
3177 free(yyvsp[0].tv_str);
vlm6a02a8a2004-09-08 00:28:11 +00003178 ;
3179 break;}
vlm6611add2005-03-20 14:28:32 +00003180case 238:
3181#line 1828 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003182{
vlmfa67ddc2004-06-03 03:38:44 +00003183 yyval.tv_str = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00003184 ;
3185 break;}
vlm6611add2005-03-20 14:28:32 +00003186case 239:
3187#line 1831 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003188{
vlmfa67ddc2004-06-03 03:38:44 +00003189 int l1 = strlen(yyvsp[-2].tv_str);
3190 int l3 = strlen(yyvsp[0].tv_str);
3191 yyval.tv_str = malloc(l1 + 1 + l3 + 1);
3192 memcpy(yyval.tv_str, yyvsp[-2].tv_str, l1);
3193 yyval.tv_str[l1] = '.';
3194 memcpy(yyval.tv_str + l1 + 1, yyvsp[0].tv_str, l3);
3195 yyval.tv_str[l1 + 1 + l3] = '\0';
vlm6a02a8a2004-09-08 00:28:11 +00003196 ;
3197 break;}
vlm6611add2005-03-20 14:28:32 +00003198case 240:
3199#line 1849 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003200{
vlmc94e28f2004-09-15 11:59:51 +00003201 yyval.a_marker.flags = EM_NOMARK;
3202 yyval.a_marker.default_value = 0;
vlm6a02a8a2004-09-08 00:28:11 +00003203 ;
3204 break;}
vlm6611add2005-03-20 14:28:32 +00003205case 241:
3206#line 1853 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00003207{ yyval.a_marker = yyvsp[0].a_marker; ;
vlma2374a02004-09-14 02:44:07 +00003208 break;}
vlm6611add2005-03-20 14:28:32 +00003209case 242:
3210#line 1857 "asn1p_y.y"
vlma2374a02004-09-14 02:44:07 +00003211{
vlmc94e28f2004-09-15 11:59:51 +00003212 yyval.a_marker.flags = EM_OPTIONAL;
3213 yyval.a_marker.default_value = 0;
vlma2374a02004-09-14 02:44:07 +00003214 ;
3215 break;}
vlm6611add2005-03-20 14:28:32 +00003216case 243:
3217#line 1861 "asn1p_y.y"
vlmc94e28f2004-09-15 11:59:51 +00003218{
3219 yyval.a_marker.flags = EM_DEFAULT;
3220 yyval.a_marker.default_value = yyvsp[0].a_value;
3221 ;
3222 break;}
vlm6611add2005-03-20 14:28:32 +00003223case 244:
3224#line 1884 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003225{
vlm39e5ed72004-09-05 10:40:41 +00003226 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003227 checkmem(yyval.a_expr);
vlm6a02a8a2004-09-08 00:28:11 +00003228 ;
3229 break;}
vlm6611add2005-03-20 14:28:32 +00003230case 245:
3231#line 1888 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003232{
vlmfa67ddc2004-06-03 03:38:44 +00003233 yyval.a_expr = yyvsp[-1].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00003234 ;
3235 break;}
vlm6611add2005-03-20 14:28:32 +00003236case 246:
3237#line 1894 "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 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
3242 ;
3243 break;}
vlm6611add2005-03-20 14:28:32 +00003244case 247:
3245#line 1899 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003246{
vlmfa67ddc2004-06-03 03:38:44 +00003247 yyval.a_expr = yyvsp[-2].a_expr;
vlm6a02a8a2004-09-08 00:28:11 +00003248 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
3249 ;
3250 break;}
vlm6611add2005-03-20 14:28:32 +00003251case 248:
3252#line 1906 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003253{
vlm39e5ed72004-09-05 10:40:41 +00003254 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003255 checkmem(yyval.a_expr);
3256 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3257 yyval.a_expr->meta_type = AMT_VALUE;
3258 yyval.a_expr->Identifier = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00003259 ;
3260 break;}
vlm6611add2005-03-20 14:28:32 +00003261case 249:
vlma6a12e32005-03-20 12:58:00 +00003262#line 1913 "asn1p_y.y"
3263{
3264 yyval.a_expr = asn1p_expr_new(yylineno);
3265 checkmem(yyval.a_expr);
3266 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3267 yyval.a_expr->meta_type = AMT_VALUE;
3268 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
3269 yyval.a_expr->value = yyvsp[-1].a_value;
3270 ;
3271 break;}
vlm6611add2005-03-20 14:28:32 +00003272case 250:
vlma6a12e32005-03-20 12:58:00 +00003273#line 1921 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003274{
vlm39e5ed72004-09-05 10:40:41 +00003275 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003276 checkmem(yyval.a_expr);
3277 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3278 yyval.a_expr->meta_type = AMT_VALUE;
vlm6611add2005-03-20 14:28:32 +00003279 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
3280 yyval.a_expr->value = yyvsp[-1].a_value;
3281 ;
3282 break;}
3283case 251:
3284#line 1929 "asn1p_y.y"
3285{
3286 yyval.a_expr = asn1p_expr_new(yylineno);
3287 checkmem(yyval.a_expr);
3288 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
3289 yyval.a_expr->meta_type = AMT_VALUE;
vlmfa67ddc2004-06-03 03:38:44 +00003290 yyval.a_expr->value = yyvsp[0].a_value;
vlm6a02a8a2004-09-08 00:28:11 +00003291 ;
3292 break;}
vlm6611add2005-03-20 14:28:32 +00003293case 252:
3294#line 1936 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003295{
vlm39e5ed72004-09-05 10:40:41 +00003296 yyval.a_expr = asn1p_expr_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003297 checkmem(yyval.a_expr);
3298 yyval.a_expr->Identifier = strdup("...");
3299 checkmem(yyval.a_expr->Identifier);
3300 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
3301 yyval.a_expr->meta_type = AMT_VALUE;
vlm6a02a8a2004-09-08 00:28:11 +00003302 ;
3303 break;}
vlm4053ca52005-02-18 16:34:21 +00003304case 253:
vlm6611add2005-03-20 14:28:32 +00003305#line 1947 "asn1p_y.y"
3306{
3307 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3308 checkmem(yyval.a_value);
3309 ;
vlm4053ca52005-02-18 16:34:21 +00003310 break;}
3311case 254:
vlm6611add2005-03-20 14:28:32 +00003312#line 1951 "asn1p_y.y"
3313{
3314 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3315 checkmem(yyval.a_value);
3316 ;
vlma6a12e32005-03-20 12:58:00 +00003317 break;}
3318case 255:
vlm6611add2005-03-20 14:28:32 +00003319#line 1982 "asn1p_y.y"
3320{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
3321 break;}
3322case 256:
3323#line 1983 "asn1p_y.y"
3324{ yyval.a_tag = yyvsp[0].a_tag; ;
3325 break;}
3326case 257:
3327#line 1987 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003328{
vlm2728a8d2005-01-23 09:51:44 +00003329 yyval.a_tag = yyvsp[-1].a_tag;
3330 yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
vlm6a02a8a2004-09-08 00:28:11 +00003331 ;
3332 break;}
vlm6611add2005-03-20 14:28:32 +00003333case 258:
3334#line 1994 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003335{
vlm2728a8d2005-01-23 09:51:44 +00003336 yyval.a_tag = yyvsp[-2].a_tag;
3337 yyval.a_tag.tag_value = yyvsp[-1].a_int;
vlm6a02a8a2004-09-08 00:28:11 +00003338 ;
3339 break;}
vlm6611add2005-03-20 14:28:32 +00003340case 259:
3341#line 2000 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003342{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
vlm6a02a8a2004-09-08 00:28:11 +00003343 break;}
vlm6611add2005-03-20 14:28:32 +00003344case 260:
3345#line 2001 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003346{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
vlm151c0b22004-09-22 16:03:36 +00003347 break;}
vlm6611add2005-03-20 14:28:32 +00003348case 261:
3349#line 2002 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003350{ yyval.a_tag.tag_class = TC_APPLICATION; ;
vlm0aa86902004-10-12 23:26:53 +00003351 break;}
vlm6611add2005-03-20 14:28:32 +00003352case 262:
3353#line 2003 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003354{ yyval.a_tag.tag_class = TC_PRIVATE; ;
3355 break;}
vlm6611add2005-03-20 14:28:32 +00003356case 263:
3357#line 2007 "asn1p_y.y"
vlm2728a8d2005-01-23 09:51:44 +00003358{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
3359 break;}
vlm2728a8d2005-01-23 09:51:44 +00003360case 264:
vlm6611add2005-03-20 14:28:32 +00003361#line 2008 "asn1p_y.y"
3362{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
vlm0aa86902004-10-12 23:26:53 +00003363 break;}
vlm2728a8d2005-01-23 09:51:44 +00003364case 265:
vlma6a12e32005-03-20 12:58:00 +00003365#line 2009 "asn1p_y.y"
vlm6611add2005-03-20 14:28:32 +00003366{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
vlm0aa86902004-10-12 23:26:53 +00003367 break;}
vlm2728a8d2005-01-23 09:51:44 +00003368case 266:
vlm6611add2005-03-20 14:28:32 +00003369#line 2013 "asn1p_y.y"
vlma6a12e32005-03-20 12:58:00 +00003370{
3371 checkmem(yyvsp[0].tv_str);
3372 yyval.tv_str = yyvsp[0].tv_str;
3373 ;
vlm4053ca52005-02-18 16:34:21 +00003374 break;}
3375case 267:
vlm6611add2005-03-20 14:28:32 +00003376#line 2017 "asn1p_y.y"
3377{
3378 checkmem(yyvsp[0].tv_str);
3379 yyval.tv_str = yyvsp[0].tv_str;
3380 ;
vlma6a12e32005-03-20 12:58:00 +00003381 break;}
3382case 268:
3383#line 2025 "asn1p_y.y"
vlm4053ca52005-02-18 16:34:21 +00003384{
vlm6611add2005-03-20 14:28:32 +00003385 checkmem(yyvsp[0].tv_str);
vlm4053ca52005-02-18 16:34:21 +00003386 yyval.tv_str = yyvsp[0].tv_str;
3387 ;
3388 break;}
vlma6a12e32005-03-20 12:58:00 +00003389case 269:
vlm6611add2005-03-20 14:28:32 +00003390#line 2032 "asn1p_y.y"
3391{ yyval.tv_str = 0; ;
3392 break;}
3393case 270:
3394#line 2033 "asn1p_y.y"
3395{
3396 yyval.tv_str = yyvsp[0].tv_str;
3397 ;
3398 break;}
3399case 271:
3400#line 2038 "asn1p_y.y"
vlm6a02a8a2004-09-08 00:28:11 +00003401{
vlm39e5ed72004-09-05 10:40:41 +00003402 checkmem(yyvsp[0].tv_str);
3403 yyval.tv_str = yyvsp[0].tv_str;
vlm6a02a8a2004-09-08 00:28:11 +00003404 ;
3405 break;}
vlm6a02a8a2004-09-08 00:28:11 +00003406}
3407 /* the action file gets copied in in place of this dollarsign */
3408#line 543 "/usr/share/bison.simple"
vlmfa67ddc2004-06-03 03:38:44 +00003409
3410 yyvsp -= yylen;
3411 yyssp -= yylen;
vlm6a02a8a2004-09-08 00:28:11 +00003412#ifdef YYLSP_NEEDED
3413 yylsp -= yylen;
3414#endif
vlmfa67ddc2004-06-03 03:38:44 +00003415
vlm6a02a8a2004-09-08 00:28:11 +00003416#if YYDEBUG != 0
vlmfa67ddc2004-06-03 03:38:44 +00003417 if (yydebug)
3418 {
vlm6a02a8a2004-09-08 00:28:11 +00003419 short *ssp1 = yyss - 1;
3420 fprintf (stderr, "state stack now");
3421 while (ssp1 != yyssp)
3422 fprintf (stderr, " %d", *++ssp1);
3423 fprintf (stderr, "\n");
vlmfa67ddc2004-06-03 03:38:44 +00003424 }
3425#endif
3426
3427 *++yyvsp = yyval;
3428
vlm6a02a8a2004-09-08 00:28:11 +00003429#ifdef YYLSP_NEEDED
3430 yylsp++;
3431 if (yylen == 0)
3432 {
3433 yylsp->first_line = yylloc.first_line;
3434 yylsp->first_column = yylloc.first_column;
3435 yylsp->last_line = (yylsp-1)->last_line;
3436 yylsp->last_column = (yylsp-1)->last_column;
3437 yylsp->text = 0;
3438 }
3439 else
3440 {
3441 yylsp->last_line = (yylsp+yylen-1)->last_line;
3442 yylsp->last_column = (yylsp+yylen-1)->last_column;
3443 }
3444#endif
vlmfa67ddc2004-06-03 03:38:44 +00003445
vlm6a02a8a2004-09-08 00:28:11 +00003446 /* Now "shift" the result of the reduction.
3447 Determine what state that goes to,
3448 based on the state we popped back to
3449 and the rule number reduced by. */
vlmfa67ddc2004-06-03 03:38:44 +00003450
3451 yyn = yyr1[yyn];
3452
vlm6a02a8a2004-09-08 00:28:11 +00003453 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
3454 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
vlmfa67ddc2004-06-03 03:38:44 +00003455 yystate = yytable[yystate];
3456 else
vlm6a02a8a2004-09-08 00:28:11 +00003457 yystate = yydefgoto[yyn - YYNTBASE];
vlmfa67ddc2004-06-03 03:38:44 +00003458
3459 goto yynewstate;
3460
vlm6a02a8a2004-09-08 00:28:11 +00003461yyerrlab: /* here on detecting error */
vlmfa67ddc2004-06-03 03:38:44 +00003462
vlm6a02a8a2004-09-08 00:28:11 +00003463 if (! yyerrstatus)
3464 /* If not already recovering from an error, report this error. */
vlmfa67ddc2004-06-03 03:38:44 +00003465 {
3466 ++yynerrs;
vlm6a02a8a2004-09-08 00:28:11 +00003467
3468#ifdef YYERROR_VERBOSE
vlmfa67ddc2004-06-03 03:38:44 +00003469 yyn = yypact[yystate];
3470
vlm6a02a8a2004-09-08 00:28:11 +00003471 if (yyn > YYFLAG && yyn < YYLAST)
vlmfa67ddc2004-06-03 03:38:44 +00003472 {
vlm6a02a8a2004-09-08 00:28:11 +00003473 int size = 0;
3474 char *msg;
3475 int x, count;
vlmfa67ddc2004-06-03 03:38:44 +00003476
vlm6a02a8a2004-09-08 00:28:11 +00003477 count = 0;
3478 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
3479 for (x = (yyn < 0 ? -yyn : 0);
3480 x < (ssize_t)(sizeof(yytname) / sizeof(char *)); x++)
3481 if (yycheck[x + yyn] == x)
3482 size += strlen(yytname[x]) + 15, count++;
3483 msg = (char *) malloc(size + 15);
3484 if (msg != 0)
vlmfa67ddc2004-06-03 03:38:44 +00003485 {
vlm6a02a8a2004-09-08 00:28:11 +00003486 strcpy(msg, "parse error");
vlmfa67ddc2004-06-03 03:38:44 +00003487
vlm6a02a8a2004-09-08 00:28:11 +00003488 if (count < 5)
vlmfa67ddc2004-06-03 03:38:44 +00003489 {
vlm6a02a8a2004-09-08 00:28:11 +00003490 count = 0;
3491 for (x = (yyn < 0 ? -yyn : 0);
3492 x < (ssize_t)(sizeof(yytname) / sizeof(char *)); x++)
3493 if (yycheck[x + yyn] == x)
vlmfa67ddc2004-06-03 03:38:44 +00003494 {
vlm6a02a8a2004-09-08 00:28:11 +00003495 strcat(msg, count == 0 ? ", expecting `" : " or `");
3496 strcat(msg, yytname[x]);
3497 strcat(msg, "'");
3498 count++;
vlmfa67ddc2004-06-03 03:38:44 +00003499 }
3500 }
vlm6a02a8a2004-09-08 00:28:11 +00003501 yyerror(msg);
3502 free(msg);
vlmfa67ddc2004-06-03 03:38:44 +00003503 }
3504 else
vlm6a02a8a2004-09-08 00:28:11 +00003505 yyerror ("parse error; also virtual memory exceeded");
vlmfa67ddc2004-06-03 03:38:44 +00003506 }
3507 else
3508#endif /* YYERROR_VERBOSE */
vlm6a02a8a2004-09-08 00:28:11 +00003509 yyerror("parse error");
vlmfa67ddc2004-06-03 03:38:44 +00003510 }
vlm6a02a8a2004-09-08 00:28:11 +00003511
vlmfa67ddc2004-06-03 03:38:44 +00003512 goto yyerrlab1;
vlm6a02a8a2004-09-08 00:28:11 +00003513yyerrlab1: /* here on error raised explicitly by an action */
vlmfa67ddc2004-06-03 03:38:44 +00003514
3515 if (yyerrstatus == 3)
3516 {
vlm6a02a8a2004-09-08 00:28:11 +00003517 /* if just tried and failed to reuse lookahead token after an error, discard it. */
vlmfa67ddc2004-06-03 03:38:44 +00003518
vlm6a02a8a2004-09-08 00:28:11 +00003519 /* return failure if at end of input */
vlmfa67ddc2004-06-03 03:38:44 +00003520 if (yychar == YYEOF)
vlm6a02a8a2004-09-08 00:28:11 +00003521 YYABORT;
vlmfa67ddc2004-06-03 03:38:44 +00003522
vlm6a02a8a2004-09-08 00:28:11 +00003523#if YYDEBUG != 0
3524 if (yydebug)
3525 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
3526#endif
3527
vlmfa67ddc2004-06-03 03:38:44 +00003528 yychar = YYEMPTY;
3529 }
3530
vlm6a02a8a2004-09-08 00:28:11 +00003531 /* Else will try to reuse lookahead token
3532 after shifting the error token. */
vlmfa67ddc2004-06-03 03:38:44 +00003533
vlm6a02a8a2004-09-08 00:28:11 +00003534 yyerrstatus = 3; /* Each real token shifted decrements this */
vlmfa67ddc2004-06-03 03:38:44 +00003535
vlm6a02a8a2004-09-08 00:28:11 +00003536 goto yyerrhandle;
vlm80103492004-09-07 10:39:09 +00003537
vlm6a02a8a2004-09-08 00:28:11 +00003538yyerrdefault: /* current state does not do anything special for the error token. */
vlm80103492004-09-07 10:39:09 +00003539
vlm6a02a8a2004-09-08 00:28:11 +00003540#if 0
3541 /* This is wrong; only states that explicitly want error tokens
3542 should shift them. */
3543 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
3544 if (yyn) goto yydefault;
vlm39e5ed72004-09-05 10:40:41 +00003545#endif
vlm6a02a8a2004-09-08 00:28:11 +00003546
3547yyerrpop: /* pop the current state because it cannot handle the error token */
3548
3549 if (yyssp == yyss) YYABORT;
3550 yyvsp--;
3551 yystate = *--yyssp;
3552#ifdef YYLSP_NEEDED
3553 yylsp--;
3554#endif
3555
3556#if YYDEBUG != 0
3557 if (yydebug)
3558 {
3559 short *ssp1 = yyss - 1;
3560 fprintf (stderr, "Error: state stack now");
3561 while (ssp1 != yyssp)
3562 fprintf (stderr, " %d", *++ssp1);
3563 fprintf (stderr, "\n");
vlm39e5ed72004-09-05 10:40:41 +00003564 }
vlm6a02a8a2004-09-08 00:28:11 +00003565#endif
3566
3567yyerrhandle:
3568
3569 yyn = yypact[yystate];
3570 if (yyn == YYFLAG)
3571 goto yyerrdefault;
3572
3573 yyn += YYTERROR;
3574 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
3575 goto yyerrdefault;
3576
3577 yyn = yytable[yyn];
3578 if (yyn < 0)
3579 {
3580 if (yyn == YYFLAG)
3581 goto yyerrpop;
3582 yyn = -yyn;
3583 goto yyreduce;
3584 }
3585 else if (yyn == 0)
3586 goto yyerrpop;
vlmfa67ddc2004-06-03 03:38:44 +00003587
3588 if (yyn == YYFINAL)
3589 YYACCEPT;
3590
vlm6a02a8a2004-09-08 00:28:11 +00003591#if YYDEBUG != 0
3592 if (yydebug)
3593 fprintf(stderr, "Shifting error token, ");
3594#endif
vlmfa67ddc2004-06-03 03:38:44 +00003595
3596 *++yyvsp = yylval;
vlm6a02a8a2004-09-08 00:28:11 +00003597#ifdef YYLSP_NEEDED
3598 *++yylsp = yylloc;
3599#endif
vlmfa67ddc2004-06-03 03:38:44 +00003600
3601 yystate = yyn;
3602 goto yynewstate;
3603
vlm6a02a8a2004-09-08 00:28:11 +00003604 yyacceptlab:
3605 /* YYACCEPT comes here. */
3606 if (yyfree_stacks)
3607 {
3608 free (yyss);
3609 free (yyvs);
3610#ifdef YYLSP_NEEDED
3611 free (yyls);
vlm044f7442004-09-04 04:49:21 +00003612#endif
vlm6a02a8a2004-09-08 00:28:11 +00003613 }
3614 return 0;
vlm80103492004-09-07 10:39:09 +00003615
vlm6a02a8a2004-09-08 00:28:11 +00003616 yyabortlab:
3617 /* YYABORT comes here. */
3618 if (yyfree_stacks)
3619 {
3620 free (yyss);
3621 free (yyvs);
3622#ifdef YYLSP_NEEDED
3623 free (yyls);
vlm80103492004-09-07 10:39:09 +00003624#endif
vlm6a02a8a2004-09-08 00:28:11 +00003625 }
3626 return 1;
vlmfa67ddc2004-06-03 03:38:44 +00003627}
vlm6611add2005-03-20 14:28:32 +00003628#line 2044 "asn1p_y.y"
vlmfa67ddc2004-06-03 03:38:44 +00003629
3630
3631
3632/*
3633 * Convert Xstring ('0101'B or '5'H) to the binary vector.
3634 */
3635static asn1p_value_t *
3636_convert_bitstring2binary(char *str, int base) {
3637 asn1p_value_t *val;
3638 int slen;
3639 int memlen;
3640 int baselen;
3641 int bits;
3642 uint8_t *binary_vector;
3643 uint8_t *bv_ptr;
3644 uint8_t cur_val;
3645
3646 assert(str);
3647 assert(str[0] == '\'');
3648
3649 switch(base) {
3650 case 'B':
3651 baselen = 1;
3652 break;
3653 case 'H':
3654 baselen = 4;
3655 break;
3656 default:
3657 assert(base == 'B' || base == 'H');
3658 errno = EINVAL;
3659 return NULL;
3660 }
3661
3662 slen = strlen(str);
3663 assert(str[slen - 1] == base);
3664 assert(str[slen - 2] == '\'');
3665
3666 memlen = slen / (8 / baselen); /* Conservative estimate */
3667
3668 bv_ptr = binary_vector = malloc(memlen + 1);
3669 if(bv_ptr == NULL)
3670 /* ENOMEM */
3671 return NULL;
3672
3673 cur_val = 0;
3674 bits = 0;
3675 while(*(++str) != '\'') {
3676 switch(baselen) {
3677 case 1:
3678 switch(*str) {
3679 case '1':
3680 cur_val |= 1 << (7 - (bits % 8));
3681 case '0':
3682 break;
3683 default:
3684 assert(!"_y UNREACH1");
3685 case ' ': case '\r': case '\n':
3686 continue;
3687 }
3688 break;
3689 case 4:
3690 switch(*str) {
3691 case '0': case '1': case '2': case '3': case '4':
3692 case '5': case '6': case '7': case '8': case '9':
3693 cur_val |= (*str - '0') << (4 - (bits % 8));
3694 break;
3695 case 'A': case 'B': case 'C':
3696 case 'D': case 'E': case 'F':
3697 cur_val |= ((*str - 'A') + 10)
3698 << (4 - (bits % 8));
3699 break;
3700 default:
3701 assert(!"_y UNREACH2");
3702 case ' ': case '\r': case '\n':
3703 continue;
3704 }
3705 break;
3706 }
3707
3708 bits += baselen;
3709 if((bits % 8) == 0) {
3710 *bv_ptr++ = cur_val;
3711 cur_val = 0;
3712 }
3713 }
3714
3715 *bv_ptr = cur_val;
3716 assert((bv_ptr - binary_vector) <= memlen);
3717
3718 val = asn1p_value_frombits(binary_vector, bits, 0);
3719 if(val == NULL) {
3720 free(binary_vector);
3721 }
3722
3723 return val;
3724}
3725
3726extern char *asn1p_text;
3727
3728int
3729yyerror(const char *msg) {
3730 fprintf(stderr,
3731 "ASN.1 grammar parse error "
3732 "near line %d (token \"%s\"): %s\n",
vlm39e5ed72004-09-05 10:40:41 +00003733 yylineno, asn1p_text, msg);
vlmfa67ddc2004-06-03 03:38:44 +00003734 return -1;
3735}
3736
3737