blob: 112336781131292fcfa2f3b492204743cc558d9b [file] [log] [blame]
vlm1aeaddd2006-07-13 08:24:20 +00001/* A Bison parser, made from asn1p_y.y, by GNU bison 1.75. */
vlmfa67ddc2004-06-03 03:38:44 +00002
vlm1aeaddd2006-07-13 08:24:20 +00003/* Skeleton parser for Yacc-like parsing with Bison,
4 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
vlmfa67ddc2004-06-03 03:38:44 +00005
vlm1aeaddd2006-07-13 08:24:20 +00006 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
vlmfa67ddc2004-06-03 03:38:44 +000010
vlm1aeaddd2006-07-13 08:24:20 +000011 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. */
20
21/* As a special exception, when this file is copied by Bison into a
22 Bison output file, you may use that output file without restriction.
23 This special exception was added by the Free Software Foundation
24 in version 1.24 of Bison. */
25
26/* Written by Richard Stallman by simplifying the original so called
27 ``semantic'' parser. */
28
29/* All symbols defined below should begin with yy or YY, to avoid
30 infringing on user name space. This should be done even for local
31 variables, as they might otherwise be expanded by user macros.
32 There are some unavoidable exceptions within include files to
33 define necessary library symbols; they are noted "INFRINGES ON
34 USER NAME SPACE" below. */
35
36/* Identify Bison output. */
37#define YYBISON 1
38
39/* Pure parsers. */
40#define YYPURE 0
41
42/* Using locations. */
43#define YYLSP_NEEDED 0
44
45/* If NAME_PREFIX is specified substitute the variables and functions
46 names. */
vlmfa67ddc2004-06-03 03:38:44 +000047#define yyparse asn1p_parse
vlm1aeaddd2006-07-13 08:24:20 +000048#define yylex asn1p_lex
vlmfa67ddc2004-06-03 03:38:44 +000049#define yyerror asn1p_error
vlm1aeaddd2006-07-13 08:24:20 +000050#define yylval asn1p_lval
51#define yychar asn1p_char
vlmfa67ddc2004-06-03 03:38:44 +000052#define yydebug asn1p_debug
53#define yynerrs asn1p_nerrs
vlmfa67ddc2004-06-03 03:38:44 +000054
vlm1aeaddd2006-07-13 08:24:20 +000055
56/* Tokens. */
57#ifndef YYTOKENTYPE
58# define YYTOKENTYPE
59 /* Put the tokens into the symbol table, so that GDB and other debuggers
60 know about them. */
61 enum yytokentype {
62 TOK_PPEQ = 258,
63 TOK_whitespace = 259,
64 TOK_opaque = 260,
65 TOK_bstring = 261,
66 TOK_cstring = 262,
67 TOK_hstring = 263,
68 TOK_identifier = 264,
69 TOK_number = 265,
vlme745fcd2006-09-05 16:18:34 +000070 TOK_number_negative = 266,
71 TOK_realnumber = 267,
72 TOK_tuple = 268,
73 TOK_quadruple = 269,
74 TOK_typereference = 270,
75 TOK_capitalreference = 271,
76 TOK_typefieldreference = 272,
77 TOK_valuefieldreference = 273,
78 TOK_Literal = 274,
79 TOK_ABSENT = 275,
80 TOK_ABSTRACT_SYNTAX = 276,
81 TOK_ALL = 277,
82 TOK_ANY = 278,
83 TOK_APPLICATION = 279,
84 TOK_AUTOMATIC = 280,
85 TOK_BEGIN = 281,
86 TOK_BIT = 282,
87 TOK_BMPString = 283,
88 TOK_BOOLEAN = 284,
89 TOK_BY = 285,
90 TOK_CHARACTER = 286,
91 TOK_CHOICE = 287,
92 TOK_CLASS = 288,
93 TOK_COMPONENT = 289,
94 TOK_COMPONENTS = 290,
95 TOK_CONSTRAINED = 291,
96 TOK_CONTAINING = 292,
97 TOK_DEFAULT = 293,
98 TOK_DEFINITIONS = 294,
99 TOK_DEFINED = 295,
100 TOK_EMBEDDED = 296,
101 TOK_ENCODED = 297,
102 TOK_ENCODING_CONTROL = 298,
103 TOK_END = 299,
104 TOK_ENUMERATED = 300,
105 TOK_EXPLICIT = 301,
106 TOK_EXPORTS = 302,
107 TOK_EXTENSIBILITY = 303,
108 TOK_EXTERNAL = 304,
109 TOK_FALSE = 305,
110 TOK_FROM = 306,
111 TOK_GeneralizedTime = 307,
112 TOK_GeneralString = 308,
113 TOK_GraphicString = 309,
114 TOK_IA5String = 310,
115 TOK_IDENTIFIER = 311,
116 TOK_IMPLICIT = 312,
117 TOK_IMPLIED = 313,
118 TOK_IMPORTS = 314,
119 TOK_INCLUDES = 315,
120 TOK_INSTANCE = 316,
121 TOK_INSTRUCTIONS = 317,
122 TOK_INTEGER = 318,
123 TOK_ISO646String = 319,
124 TOK_MAX = 320,
125 TOK_MIN = 321,
126 TOK_MINUS_INFINITY = 322,
127 TOK_NULL = 323,
128 TOK_NumericString = 324,
129 TOK_OBJECT = 325,
130 TOK_ObjectDescriptor = 326,
131 TOK_OCTET = 327,
132 TOK_OF = 328,
133 TOK_OPTIONAL = 329,
134 TOK_PATTERN = 330,
135 TOK_PDV = 331,
136 TOK_PLUS_INFINITY = 332,
137 TOK_PRESENT = 333,
138 TOK_PrintableString = 334,
139 TOK_PRIVATE = 335,
140 TOK_REAL = 336,
141 TOK_RELATIVE_OID = 337,
142 TOK_SEQUENCE = 338,
143 TOK_SET = 339,
144 TOK_SIZE = 340,
145 TOK_STRING = 341,
146 TOK_SYNTAX = 342,
147 TOK_T61String = 343,
148 TOK_TAGS = 344,
149 TOK_TeletexString = 345,
150 TOK_TRUE = 346,
151 TOK_TYPE_IDENTIFIER = 347,
152 TOK_UNIQUE = 348,
153 TOK_UNIVERSAL = 349,
154 TOK_UniversalString = 350,
155 TOK_UTCTime = 351,
156 TOK_UTF8String = 352,
157 TOK_VideotexString = 353,
158 TOK_VisibleString = 354,
159 TOK_WITH = 355,
160 TOK_EXCEPT = 356,
161 TOK_INTERSECTION = 357,
162 TOK_UNION = 358,
163 TOK_TwoDots = 359,
164 TOK_ThreeDots = 360
vlm1aeaddd2006-07-13 08:24:20 +0000165 };
166#endif
167#define TOK_PPEQ 258
168#define TOK_whitespace 259
169#define TOK_opaque 260
170#define TOK_bstring 261
171#define TOK_cstring 262
172#define TOK_hstring 263
173#define TOK_identifier 264
174#define TOK_number 265
vlme745fcd2006-09-05 16:18:34 +0000175#define TOK_number_negative 266
176#define TOK_realnumber 267
177#define TOK_tuple 268
178#define TOK_quadruple 269
179#define TOK_typereference 270
180#define TOK_capitalreference 271
181#define TOK_typefieldreference 272
182#define TOK_valuefieldreference 273
183#define TOK_Literal 274
184#define TOK_ABSENT 275
185#define TOK_ABSTRACT_SYNTAX 276
186#define TOK_ALL 277
187#define TOK_ANY 278
188#define TOK_APPLICATION 279
189#define TOK_AUTOMATIC 280
190#define TOK_BEGIN 281
191#define TOK_BIT 282
192#define TOK_BMPString 283
193#define TOK_BOOLEAN 284
194#define TOK_BY 285
195#define TOK_CHARACTER 286
196#define TOK_CHOICE 287
197#define TOK_CLASS 288
198#define TOK_COMPONENT 289
199#define TOK_COMPONENTS 290
200#define TOK_CONSTRAINED 291
201#define TOK_CONTAINING 292
202#define TOK_DEFAULT 293
203#define TOK_DEFINITIONS 294
204#define TOK_DEFINED 295
205#define TOK_EMBEDDED 296
206#define TOK_ENCODED 297
207#define TOK_ENCODING_CONTROL 298
208#define TOK_END 299
209#define TOK_ENUMERATED 300
210#define TOK_EXPLICIT 301
211#define TOK_EXPORTS 302
212#define TOK_EXTENSIBILITY 303
213#define TOK_EXTERNAL 304
214#define TOK_FALSE 305
215#define TOK_FROM 306
216#define TOK_GeneralizedTime 307
217#define TOK_GeneralString 308
218#define TOK_GraphicString 309
219#define TOK_IA5String 310
220#define TOK_IDENTIFIER 311
221#define TOK_IMPLICIT 312
222#define TOK_IMPLIED 313
223#define TOK_IMPORTS 314
224#define TOK_INCLUDES 315
225#define TOK_INSTANCE 316
226#define TOK_INSTRUCTIONS 317
227#define TOK_INTEGER 318
228#define TOK_ISO646String 319
229#define TOK_MAX 320
230#define TOK_MIN 321
231#define TOK_MINUS_INFINITY 322
232#define TOK_NULL 323
233#define TOK_NumericString 324
234#define TOK_OBJECT 325
235#define TOK_ObjectDescriptor 326
236#define TOK_OCTET 327
237#define TOK_OF 328
238#define TOK_OPTIONAL 329
239#define TOK_PATTERN 330
240#define TOK_PDV 331
241#define TOK_PLUS_INFINITY 332
242#define TOK_PRESENT 333
243#define TOK_PrintableString 334
244#define TOK_PRIVATE 335
245#define TOK_REAL 336
246#define TOK_RELATIVE_OID 337
247#define TOK_SEQUENCE 338
248#define TOK_SET 339
249#define TOK_SIZE 340
250#define TOK_STRING 341
251#define TOK_SYNTAX 342
252#define TOK_T61String 343
253#define TOK_TAGS 344
254#define TOK_TeletexString 345
255#define TOK_TRUE 346
256#define TOK_TYPE_IDENTIFIER 347
257#define TOK_UNIQUE 348
258#define TOK_UNIVERSAL 349
259#define TOK_UniversalString 350
260#define TOK_UTCTime 351
261#define TOK_UTF8String 352
262#define TOK_VideotexString 353
263#define TOK_VisibleString 354
264#define TOK_WITH 355
265#define TOK_EXCEPT 356
266#define TOK_INTERSECTION 357
267#define TOK_UNION 358
268#define TOK_TwoDots 359
269#define TOK_ThreeDots 360
vlm1aeaddd2006-07-13 08:24:20 +0000270
271
272
273
274/* Copy the first part of user declarations. */
vlmfa67ddc2004-06-03 03:38:44 +0000275#line 1 "asn1p_y.y"
276
277
278#include <stdlib.h>
279#include <stdio.h>
280#include <string.h>
281#include <errno.h>
282#include <assert.h>
283
284#include "asn1parser.h"
285
286#define YYPARSE_PARAM param
vlm03630c52005-06-07 21:43:32 +0000287#define YYPARSE_PARAM_TYPE void **
vlmfa67ddc2004-06-03 03:38:44 +0000288#define YYERROR_VERBOSE
289
290int yylex(void);
291int yyerror(const char *msg);
vlm03630c52005-06-07 21:43:32 +0000292#ifdef YYBYACC
293int yyparse(void **param); /* byacc does not produce a prototype */
294#endif
vlmfa67ddc2004-06-03 03:38:44 +0000295void asn1p_lexer_hack_push_opaque_state(void);
296void asn1p_lexer_hack_enable_with_syntax(void);
vlm9283dbe2004-08-18 04:59:12 +0000297void asn1p_lexer_hack_push_encoding_control(void);
vlmfa67ddc2004-06-03 03:38:44 +0000298#define yylineno asn1p_lineno
299extern int asn1p_lineno;
300
vlm931aeed2005-08-12 10:09:10 +0000301/*
vlm177a5b62005-09-05 05:17:57 +0000302 * Process directives as <ASN1C:RepresentAsPointer>
vlm066dc102005-08-22 12:23:54 +0000303 */
304extern int asn1p_as_pointer;
vlm066dc102005-08-22 12:23:54 +0000305
306/*
vlm931aeed2005-08-12 10:09:10 +0000307 * This temporary variable is used to solve the shortcomings of 1-lookahead
308 * parser.
309 */
310static struct AssignedIdentifier *saved_aid;
vlmfa67ddc2004-06-03 03:38:44 +0000311
vlm5d89c3d2005-08-13 09:07:11 +0000312static asn1p_value_t *_convert_bitstring2binary(char *str, int base);
313static void _fixup_anonymous_identifier(asn1p_expr_t *expr);
vlmfa67ddc2004-06-03 03:38:44 +0000314
vlm43c8ac52006-09-17 04:52:50 +0000315static asn1p_module_t *currentModule;
316#define NEW_EXPR() (asn1p_expr_new(yylineno, currentModule))
317
vlm931aeed2005-08-12 10:09:10 +0000318#define checkmem(ptr) do { \
319 if(!(ptr)) \
320 return yyerror("Memory failure"); \
vlmfa67ddc2004-06-03 03:38:44 +0000321 } while(0)
322
vlm931aeed2005-08-12 10:09:10 +0000323#define CONSTRAINT_INSERT(root, constr_type, arg1, arg2) do { \
324 if(arg1->type != constr_type) { \
325 int __ret; \
326 root = asn1p_constraint_new(yylineno); \
327 checkmem(root); \
328 root->type = constr_type; \
329 __ret = asn1p_constraint_insert(root, \
330 arg1); \
331 checkmem(__ret == 0); \
332 } else { \
333 root = arg1; \
334 } \
335 if(arg2) { \
336 int __ret \
337 = asn1p_constraint_insert(root, arg2); \
338 checkmem(__ret == 0); \
339 } \
vlmfa67ddc2004-06-03 03:38:44 +0000340 } while(0)
341
vlmd3420d32006-09-14 10:35:20 +0000342#ifdef AL_IMPORT
343#error AL_IMPORT DEFINED ELSEWHERE!
344#endif
345#define AL_IMPORT(to,where,from,field) do { \
346 if(!(from)) break; \
347 while(TQ_FIRST(&((from)->where))) { \
348 TQ_ADD(&((to)->where), \
349 TQ_REMOVE(&((from)->where), field), \
350 field); \
351 } \
352 assert(TQ_FIRST(&((from)->where)) == 0); \
353 } while(0)
354
vlmfa67ddc2004-06-03 03:38:44 +0000355
vlm1aeaddd2006-07-13 08:24:20 +0000356
357/* Enabling traces. */
358#ifndef YYDEBUG
359# define YYDEBUG 0
360#endif
361
362/* Enabling verbose error messages. */
363#ifdef YYERROR_VERBOSE
364# undef YYERROR_VERBOSE
365# define YYERROR_VERBOSE 1
366#else
367# define YYERROR_VERBOSE 0
368#endif
369
370#ifndef YYSTYPE
vlm43c8ac52006-09-17 04:52:50 +0000371#line 88 "asn1p_y.y"
vlm0c6d3812006-03-21 03:40:38 +0000372typedef union {
vlmfa67ddc2004-06-03 03:38:44 +0000373 asn1p_t *a_grammar;
374 asn1p_module_flags_e a_module_flags;
375 asn1p_module_t *a_module;
376 asn1p_expr_type_e a_type; /* ASN.1 Type */
377 asn1p_expr_t *a_expr; /* Constructed collection */
378 asn1p_constraint_t *a_constr; /* Constraint */
379 enum asn1p_constraint_type_e a_ctype;/* Constraint type */
380 asn1p_xports_t *a_xports; /* IMports/EXports */
vlm931aeed2005-08-12 10:09:10 +0000381 struct AssignedIdentifier a_aid; /* Assigned Identifier */
vlmfa67ddc2004-06-03 03:38:44 +0000382 asn1p_oid_t *a_oid; /* Object Identifier */
383 asn1p_oid_arc_t a_oid_arc; /* Single OID's arc */
384 struct asn1p_type_tag_s a_tag; /* A tag */
385 asn1p_ref_t *a_ref; /* Reference to custom type */
386 asn1p_wsyntx_t *a_wsynt; /* WITH SYNTAX contents */
387 asn1p_wsyntx_chunk_t *a_wchunk; /* WITH SYNTAX chunk */
388 struct asn1p_ref_component_s a_refcomp; /* Component of a reference */
389 asn1p_value_t *a_value; /* Number, DefinedValue, etc */
390 struct asn1p_param_s a_parg; /* A parameter argument */
391 asn1p_paramlist_t *a_plist; /* A pargs list */
vlmc94e28f2004-09-15 11:59:51 +0000392 struct asn1p_expr_marker_s a_marker; /* OPTIONAL/DEFAULT */
vlmfa67ddc2004-06-03 03:38:44 +0000393 enum asn1p_constr_pres_e a_pres; /* PRESENT/ABSENT/OPTIONAL */
vlmec6acd42004-09-29 13:18:09 +0000394 asn1c_integer_t a_int;
vlme745fcd2006-09-05 16:18:34 +0000395 double a_dbl;
vlmfa67ddc2004-06-03 03:38:44 +0000396 char *tv_str;
397 struct {
398 char *buf;
399 int len;
400 } tv_opaque;
401 struct {
402 char *name;
403 struct asn1p_type_tag_s tag;
404 } tv_nametag;
vlm1aeaddd2006-07-13 08:24:20 +0000405} yystype;
406/* Line 193 of /usr/local/share/bison/yacc.c. */
vlm43c8ac52006-09-17 04:52:50 +0000407#line 408 "asn1p_y.c"
vlm1aeaddd2006-07-13 08:24:20 +0000408# define YYSTYPE yystype
409# define YYSTYPE_IS_TRIVIAL 1
vlmfa67ddc2004-06-03 03:38:44 +0000410#endif
411
vlm1aeaddd2006-07-13 08:24:20 +0000412#ifndef YYLTYPE
413typedef struct yyltype
414{
415 int first_line;
416 int first_column;
417 int last_line;
418 int last_column;
419} yyltype;
420# define YYLTYPE yyltype
421# define YYLTYPE_IS_TRIVIAL 1
422#endif
423
424/* Copy the second part of user declarations. */
vlmfa67ddc2004-06-03 03:38:44 +0000425
426
vlm1aeaddd2006-07-13 08:24:20 +0000427/* Line 213 of /usr/local/share/bison/yacc.c. */
vlm43c8ac52006-09-17 04:52:50 +0000428#line 429 "asn1p_y.c"
vlmfa67ddc2004-06-03 03:38:44 +0000429
vlm1aeaddd2006-07-13 08:24:20 +0000430#if ! defined (yyoverflow) || YYERROR_VERBOSE
vlmfa67ddc2004-06-03 03:38:44 +0000431
vlm1aeaddd2006-07-13 08:24:20 +0000432/* The parser invokes alloca or malloc; define the necessary symbols. */
vlmfa67ddc2004-06-03 03:38:44 +0000433
vlm1aeaddd2006-07-13 08:24:20 +0000434# if YYSTACK_USE_ALLOCA
435# define YYSTACK_ALLOC alloca
436# else
437# ifndef YYSTACK_USE_ALLOCA
438# if defined (alloca) || defined (_ALLOCA_H)
439# define YYSTACK_ALLOC alloca
440# else
441# ifdef __GNUC__
442# define YYSTACK_ALLOC __builtin_alloca
443# endif
444# endif
445# endif
446# endif
vlmfa67ddc2004-06-03 03:38:44 +0000447
vlm1aeaddd2006-07-13 08:24:20 +0000448# ifdef YYSTACK_ALLOC
449 /* Pacify GCC's `empty if-body' warning. */
450# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
451# else
452# if defined (__STDC__) || defined (__cplusplus)
453# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
454# define YYSIZE_T size_t
455# endif
456# define YYSTACK_ALLOC malloc
457# define YYSTACK_FREE free
458# endif
459#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
460
461
462#if (! defined (yyoverflow) \
463 && (! defined (__cplusplus) \
464 || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
465
466/* A type that is properly aligned for any stack member. */
467union yyalloc
468{
469 short yyss;
470 YYSTYPE yyvs;
471 };
472
473/* The size of the maximum gap between one aligned stack and the next. */
474# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
475
476/* The size of an array large to enough to hold all stacks, each with
477 N elements. */
478# define YYSTACK_BYTES(N) \
479 ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
480 + YYSTACK_GAP_MAX)
481
482/* Copy COUNT objects from FROM to TO. The source and destination do
483 not overlap. */
484# ifndef YYCOPY
485# if 1 < __GNUC__
486# define YYCOPY(To, From, Count) \
487 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
488# else
489# define YYCOPY(To, From, Count) \
490 do \
491 { \
492 register YYSIZE_T yyi; \
493 for (yyi = 0; yyi < (Count); yyi++) \
494 (To)[yyi] = (From)[yyi]; \
495 } \
496 while (0)
497# endif
498# endif
499
500/* Relocate STACK from its old location to the new one. The
501 local variables YYSIZE and YYSTACKSIZE give the old and new number of
502 elements in the stack, and YYPTR gives the new location of the
503 stack. Advance YYPTR to a properly aligned location for the next
504 stack. */
505# define YYSTACK_RELOCATE(Stack) \
506 do \
507 { \
508 YYSIZE_T yynewbytes; \
509 YYCOPY (&yyptr->Stack, Stack, yysize); \
510 Stack = &yyptr->Stack; \
511 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
512 yyptr += yynewbytes / sizeof (*yyptr); \
513 } \
514 while (0)
vlmfa67ddc2004-06-03 03:38:44 +0000515
516#endif
517
vlm1aeaddd2006-07-13 08:24:20 +0000518#if defined (__STDC__) || defined (__cplusplus)
519 typedef signed char yysigned_char;
vlmfa67ddc2004-06-03 03:38:44 +0000520#else
vlm1aeaddd2006-07-13 08:24:20 +0000521 typedef short yysigned_char;
vlmfa67ddc2004-06-03 03:38:44 +0000522#endif
523
vlm1aeaddd2006-07-13 08:24:20 +0000524/* YYFINAL -- State number of the termination state. */
525#define YYFINAL 7
vlm1bc782f2006-09-21 01:50:37 +0000526#define YYLAST 840
vlm1aeaddd2006-07-13 08:24:20 +0000527
528/* YYNTOKENS -- Number of terminals. */
vlme745fcd2006-09-05 16:18:34 +0000529#define YYNTOKENS 121
vlm1aeaddd2006-07-13 08:24:20 +0000530/* YYNNTS -- Number of nonterminals. */
vlm1bc782f2006-09-21 01:50:37 +0000531#define YYNNTS 119
vlm1aeaddd2006-07-13 08:24:20 +0000532/* YYNRULES -- Number of rules. */
vlm1bc782f2006-09-21 01:50:37 +0000533#define YYNRULES 304
vlm1aeaddd2006-07-13 08:24:20 +0000534/* YYNRULES -- Number of states. */
vlm1bc782f2006-09-21 01:50:37 +0000535#define YYNSTATES 464
vlm1aeaddd2006-07-13 08:24:20 +0000536
537/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
538#define YYUNDEFTOK 2
vlme745fcd2006-09-05 16:18:34 +0000539#define YYMAXUTOK 360
vlm1aeaddd2006-07-13 08:24:20 +0000540
541#define YYTRANSLATE(X) \
542 ((unsigned)(X) <= YYMAXUTOK ? yytranslate[X] : YYUNDEFTOK)
543
544/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
545static const unsigned char yytranslate[] =
546{
547 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
548 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
549 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
vlme745fcd2006-09-05 16:18:34 +0000550 2, 2, 2, 117, 2, 2, 2, 2, 2, 2,
551 110, 111, 2, 2, 113, 2, 118, 2, 2, 2,
552 2, 2, 2, 2, 2, 2, 2, 2, 114, 112,
553 119, 2, 2, 2, 120, 2, 2, 2, 2, 2,
vlm1aeaddd2006-07-13 08:24:20 +0000554 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
555 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
vlme745fcd2006-09-05 16:18:34 +0000556 2, 115, 2, 116, 102, 2, 2, 2, 2, 2,
vlm1aeaddd2006-07-13 08:24:20 +0000557 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
558 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
vlme745fcd2006-09-05 16:18:34 +0000559 2, 2, 2, 108, 104, 109, 2, 2, 2, 2,
vlm1aeaddd2006-07-13 08:24:20 +0000560 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
561 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
562 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
563 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
564 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
565 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
566 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
567 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
568 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
569 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
570 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
571 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
572 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
573 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
574 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
575 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
576 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
577 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
578 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
579 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
580 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
581 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
vlme745fcd2006-09-05 16:18:34 +0000582 95, 96, 97, 98, 99, 100, 101, 103, 105, 106,
583 107
vlm1aeaddd2006-07-13 08:24:20 +0000584};
585
586#if YYDEBUG
587/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
588 YYRHS. */
589static const unsigned short yyprhs[] =
590{
vlm43c8ac52006-09-17 04:52:50 +0000591 0, 0, 3, 5, 7, 10, 11, 21, 22, 24,
592 28, 31, 33, 36, 38, 43, 45, 46, 48, 50,
593 53, 56, 59, 62, 65, 68, 69, 71, 75, 77,
594 80, 82, 84, 86, 87, 91, 93, 94, 96, 100,
595 103, 105, 108, 109, 111, 116, 118, 122, 124, 128,
596 130, 131, 133, 137, 141, 144, 146, 150, 152, 156,
597 158, 162, 167, 169, 171, 176, 180, 184, 191, 198,
598 200, 204, 206, 210, 214, 218, 222, 224, 228, 230,
599 232, 234, 236, 237, 239, 241, 245, 249, 252, 256,
600 258, 260, 264, 267, 269, 271, 277, 278, 280, 282,
601 286, 289, 294, 298, 302, 306, 310, 314, 315, 317,
602 318, 325, 327, 330, 332, 334, 336, 340, 342, 346,
603 350, 354, 355, 358, 360, 365, 370, 375, 382, 389,
604 391, 396, 400, 402, 406, 410, 414, 416, 420, 422,
605 426, 428, 430, 432, 434, 438, 442, 444, 449, 451,
606 453, 457, 458, 462, 464, 466, 468, 470, 472, 474,
607 476, 478, 482, 484, 486, 488, 490, 493, 495, 497,
608 499, 501, 504, 507, 509, 511, 514, 517, 519, 521,
609 523, 525, 527, 530, 532, 535, 537, 539, 541, 543,
vlm1aeaddd2006-07-13 08:24:20 +0000610 545, 547, 549, 551, 553, 555, 557, 559, 561, 563,
vlm1bc782f2006-09-21 01:50:37 +0000611 565, 567, 569, 571, 572, 574, 576, 580, 582, 587,
612 591, 596, 598, 600, 604, 610, 612, 616, 618, 622,
613 624, 628, 630, 634, 639, 643, 645, 647, 651, 655,
614 659, 663, 665, 667, 669, 671, 673, 675, 677, 679,
615 681, 685, 691, 693, 697, 699, 703, 704, 706, 708,
616 710, 712, 714, 716, 718, 719, 725, 728, 730, 733,
617 736, 740, 742, 744, 748, 753, 755, 759, 762, 766,
618 768, 772, 773, 775, 777, 780, 783, 787, 789, 793,
619 795, 800, 805, 807, 809, 811, 813, 815, 817, 818,
620 820, 823, 828, 829, 831, 833, 835, 836, 838, 840,
621 842, 844, 846, 847, 849
vlm1aeaddd2006-07-13 08:24:20 +0000622};
623
624/* YYRHS -- A `-1'-separated list of the rules' RHS. */
625static const short yyrhs[] =
626{
vlme745fcd2006-09-05 16:18:34 +0000627 122, 0, -1, 123, -1, 124, -1, 123, 124, -1,
vlm1bc782f2006-09-21 01:50:37 +0000628 -1, 236, 125, 126, 39, 130, 3, 26, 133, 44,
vlm43c8ac52006-09-17 04:52:50 +0000629 -1, -1, 127, -1, 108, 128, 109, -1, 108, 109,
vlm1bc782f2006-09-21 01:50:37 +0000630 -1, 129, -1, 128, 129, -1, 239, -1, 239, 110,
vlm43c8ac52006-09-17 04:52:50 +0000631 10, 111, -1, 10, -1, -1, 131, -1, 132, -1,
632 131, 132, -1, 46, 89, -1, 57, 89, -1, 25,
633 89, -1, 48, 58, -1, 16, 62, -1, -1, 134,
634 -1, 145, 138, 135, -1, 136, -1, 135, 136, -1,
635 152, -1, 182, -1, 150, -1, -1, 43, 16, 137,
636 -1, 192, -1, -1, 139, -1, 59, 140, 112, -1,
637 59, 51, -1, 142, -1, 140, 142, -1, -1, 127,
vlm1bc782f2006-09-21 01:50:37 +0000638 -1, 143, 51, 236, 141, -1, 144, -1, 143, 113,
639 144, -1, 236, -1, 236, 108, 109, -1, 239, -1,
vlm43c8ac52006-09-17 04:52:50 +0000640 -1, 146, -1, 47, 147, 112, -1, 47, 22, 112,
641 -1, 47, 112, -1, 148, -1, 147, 113, 148, -1,
vlm1bc782f2006-09-21 01:50:37 +0000642 236, -1, 236, 108, 109, -1, 239, -1, 108, 199,
643 109, -1, 236, 151, 3, 149, -1, 191, -1, 176,
644 -1, 176, 108, 155, 109, -1, 236, 3, 172, -1,
645 236, 3, 162, -1, 236, 108, 153, 109, 3, 172,
646 -1, 236, 108, 153, 109, 3, 162, -1, 154, -1,
647 153, 113, 154, -1, 236, -1, 236, 114, 239, -1,
648 236, 114, 236, -1, 189, 114, 239, -1, 189, 114,
649 236, -1, 156, -1, 155, 113, 156, -1, 172, -1,
650 185, -1, 239, -1, 149, -1, -1, 158, -1, 159,
651 -1, 158, 113, 159, -1, 239, 172, 224, -1, 172,
652 224, -1, 35, 73, 172, -1, 171, -1, 161, -1,
653 160, 113, 161, -1, 239, 172, -1, 171, -1, 172,
vlm43c8ac52006-09-17 04:52:50 +0000654 -1, 33, 108, 164, 109, 166, -1, -1, 93, -1,
vlm1bc782f2006-09-21 01:50:37 +0000655 165, -1, 164, 113, 165, -1, 17, 224, -1, 18,
656 172, 163, 224, -1, 18, 180, 224, -1, 18, 181,
657 224, -1, 17, 180, 224, -1, 17, 172, 224, -1,
658 17, 181, 224, -1, -1, 167, -1, -1, 100, 87,
vlm43c8ac52006-09-17 04:52:50 +0000659 108, 168, 169, 109, -1, 170, -1, 169, 170, -1,
660 4, -1, 19, -1, 179, -1, 115, 169, 116, -1,
vlm1bc782f2006-09-21 01:50:37 +0000661 107, -1, 107, 117, 186, -1, 107, 117, 229, -1,
662 231, 174, 195, -1, -1, 173, 175, -1, 151, -1,
vlm43c8ac52006-09-17 04:52:50 +0000663 32, 108, 160, 109, -1, 83, 108, 157, 109, -1,
vlm1bc782f2006-09-21 01:50:37 +0000664 84, 108, 157, 109, -1, 83, 195, 73, 238, 231,
665 174, -1, 84, 195, 73, 238, 231, 174, -1, 23,
666 -1, 23, 40, 30, 239, -1, 61, 73, 176, -1,
667 15, -1, 15, 118, 236, -1, 237, 118, 236, -1,
668 15, 118, 239, -1, 237, -1, 237, 118, 177, -1,
vlm43c8ac52006-09-17 04:52:50 +0000669 178, -1, 177, 118, 178, -1, 179, -1, 17, -1,
670 18, -1, 17, -1, 180, 118, 17, -1, 180, 118,
vlm1bc782f2006-09-21 01:50:37 +0000671 18, -1, 16, -1, 239, 151, 3, 183, -1, 185,
672 -1, 186, -1, 239, 114, 183, -1, -1, 108, 184,
vlm43c8ac52006-09-17 04:52:50 +0000673 188, -1, 68, -1, 50, -1, 91, -1, 6, -1,
vlm1bc782f2006-09-21 01:50:37 +0000674 8, -1, 187, -1, 229, -1, 239, -1, 236, 118,
675 239, -1, 7, -1, 13, -1, 14, -1, 5, -1,
vlm43c8ac52006-09-17 04:52:50 +0000676 188, 5, -1, 29, -1, 68, -1, 81, -1, 190,
677 -1, 72, 86, -1, 70, 56, -1, 82, -1, 49,
678 -1, 41, 76, -1, 31, 86, -1, 96, -1, 52,
679 -1, 192, -1, 63, -1, 45, -1, 27, 86, -1,
vlm1bc782f2006-09-21 01:50:37 +0000680 189, -1, 190, 226, -1, 28, -1, 53, -1, 54,
vlm43c8ac52006-09-17 04:52:50 +0000681 -1, 55, -1, 64, -1, 69, -1, 79, -1, 88,
682 -1, 90, -1, 95, -1, 97, -1, 98, -1, 99,
683 -1, 71, -1, 104, -1, 105, -1, 102, -1, 103,
vlm1bc782f2006-09-21 01:50:37 +0000684 -1, -1, 196, -1, 197, -1, 110, 213, 111, -1,
685 198, -1, 85, 110, 199, 111, -1, 110, 199, 111,
686 -1, 198, 110, 199, 111, -1, 107, -1, 200, -1,
687 200, 113, 107, -1, 200, 113, 107, 113, 200, -1,
688 201, -1, 22, 101, 204, -1, 202, -1, 201, 193,
689 202, -1, 203, -1, 202, 194, 203, -1, 204, -1,
690 204, 101, 204, -1, 205, 110, 199, 111, -1, 110,
691 199, 111, -1, 206, -1, 207, -1, 206, 217, 206,
692 -1, 66, 217, 206, -1, 206, 217, 65, -1, 66,
693 217, 65, -1, 208, -1, 85, -1, 51, -1, 50,
694 -1, 91, -1, 230, -1, 187, -1, 239, -1, 236,
695 -1, 100, 34, 198, -1, 100, 35, 108, 209, 109,
696 -1, 210, -1, 209, 113, 210, -1, 107, -1, 239,
697 195, 211, -1, -1, 212, -1, 78, -1, 20, -1,
698 74, -1, 214, -1, 218, -1, 216, -1, -1, 36,
699 30, 108, 215, 188, -1, 37, 172, -1, 106, -1,
700 106, 119, -1, 119, 106, -1, 119, 106, 119, -1,
701 219, -1, 220, -1, 108, 236, 109, -1, 219, 108,
702 221, 109, -1, 222, -1, 221, 113, 222, -1, 120,
703 223, -1, 120, 118, 223, -1, 239, -1, 223, 118,
704 239, -1, -1, 225, -1, 74, -1, 38, 183, -1,
705 108, 109, -1, 108, 227, 109, -1, 228, -1, 227,
706 113, 228, -1, 239, -1, 239, 110, 229, 111, -1,
707 239, 110, 186, 111, -1, 229, -1, 107, -1, 10,
708 -1, 11, -1, 229, -1, 12, -1, -1, 232, -1,
709 233, 235, -1, 115, 234, 10, 116, -1, -1, 94,
710 -1, 24, -1, 80, -1, -1, 57, -1, 46, -1,
711 15, -1, 16, -1, 16, -1, -1, 239, -1, 9,
712 -1
vlm1aeaddd2006-07-13 08:24:20 +0000713};
714
715/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
716static const unsigned short yyrline[] =
717{
vlm1bc782f2006-09-21 01:50:37 +0000718 0, 352, 352, 358, 364, 381, 380, 409, 411, 414,
719 418, 423, 430, 438, 443, 447, 456, 458, 466, 470,
720 478, 482, 485, 488, 492, 512, 514, 522, 531, 535,
721 550, 558, 571, 579, 578, 592, 604, 606, 608, 619,
722 624, 630, 636, 638, 641, 652, 658, 664, 671, 677,
723 686, 688, 699, 703, 706, 713, 719, 725, 732, 738,
724 747, 749, 759, 773, 783, 799, 809, 825, 831, 838,
725 848, 858, 863, 870, 877, 885, 895, 901, 907, 911,
726 919, 930, 952, 954, 956, 962, 968, 976, 982, 989,
727 994, 1000, 1006, 1012, 1015, 1021, 1031, 1033, 1036, 1044,
728 1051, 1064, 1075, 1085, 1096, 1106, 1117, 1128, 1130, 1137,
729 1135, 1144, 1149, 1155, 1160, 1163, 1167, 1172, 1181, 1190,
730 1201, 1223, 1230, 1249, 1253, 1259, 1265, 1271, 1281, 1291,
731 1297, 1308, 1322, 1331, 1341, 1351, 1361, 1369, 1390, 1399,
732 1408, 1410, 1417, 1424, 1430, 1434, 1440, 1460, 1470, 1472,
733 1473, 1480, 1480, 1485, 1492, 1498, 1503, 1507, 1511, 1514,
734 1519, 1531, 1548, 1553, 1558, 1591, 1601, 1615, 1617, 1618,
735 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628,
736 1634, 1636, 1637, 1640, 1647, 1659, 1661, 1665, 1669, 1670,
737 1671, 1672, 1673, 1677, 1678, 1679, 1680, 1684, 1685, 1692,
738 1692, 1693, 1693, 1695, 1697, 1702, 1704, 1709, 1713, 1722,
739 1726, 1731, 1736, 1739, 1745, 1755, 1757, 1762, 1764, 1769,
740 1771, 1777, 1779, 1784, 1793, 1801, 1807, 1813, 1820, 1828,
741 1836, 1845, 1850, 1854, 1859, 1865, 1870, 1871, 1872, 1885,
742 1899, 1903, 1908, 1912, 1917, 1924, 1937, 1939, 1942, 1946,
743 1949, 1956, 1958, 1959, 1964, 1962, 1974, 1982, 1984, 1985,
744 1986, 1988, 1992, 2000, 2015, 2021, 2028, 2041, 2053, 2068,
745 2072, 2089, 2094, 2097, 2102, 2124, 2129, 2134, 2140, 2146,
746 2154, 2162, 2170, 2177, 2187, 2192, 2198, 2200, 2230, 2232,
747 2235, 2242, 2248, 2250, 2251, 2252, 2255, 2257, 2258, 2261,
748 2266, 2273, 2280, 2282, 2287
vlm1aeaddd2006-07-13 08:24:20 +0000749};
750#endif
751
752#if YYDEBUG || YYERROR_VERBOSE
753/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
754 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
755static const char *const yytname[] =
756{
757 "$end", "error", "$undefined", "TOK_PPEQ", "TOK_whitespace", "TOK_opaque",
758 "TOK_bstring", "TOK_cstring", "TOK_hstring", "TOK_identifier",
vlme745fcd2006-09-05 16:18:34 +0000759 "TOK_number", "TOK_number_negative", "TOK_realnumber", "TOK_tuple",
760 "TOK_quadruple", "TOK_typereference", "TOK_capitalreference",
761 "TOK_typefieldreference", "TOK_valuefieldreference", "TOK_Literal",
762 "TOK_ABSENT", "TOK_ABSTRACT_SYNTAX", "TOK_ALL", "TOK_ANY",
763 "TOK_APPLICATION", "TOK_AUTOMATIC", "TOK_BEGIN", "TOK_BIT",
764 "TOK_BMPString", "TOK_BOOLEAN", "TOK_BY", "TOK_CHARACTER", "TOK_CHOICE",
765 "TOK_CLASS", "TOK_COMPONENT", "TOK_COMPONENTS", "TOK_CONSTRAINED",
766 "TOK_CONTAINING", "TOK_DEFAULT", "TOK_DEFINITIONS", "TOK_DEFINED",
767 "TOK_EMBEDDED", "TOK_ENCODED", "TOK_ENCODING_CONTROL", "TOK_END",
768 "TOK_ENUMERATED", "TOK_EXPLICIT", "TOK_EXPORTS", "TOK_EXTENSIBILITY",
769 "TOK_EXTERNAL", "TOK_FALSE", "TOK_FROM", "TOK_GeneralizedTime",
770 "TOK_GeneralString", "TOK_GraphicString", "TOK_IA5String",
771 "TOK_IDENTIFIER", "TOK_IMPLICIT", "TOK_IMPLIED", "TOK_IMPORTS",
772 "TOK_INCLUDES", "TOK_INSTANCE", "TOK_INSTRUCTIONS", "TOK_INTEGER",
773 "TOK_ISO646String", "TOK_MAX", "TOK_MIN", "TOK_MINUS_INFINITY",
774 "TOK_NULL", "TOK_NumericString", "TOK_OBJECT", "TOK_ObjectDescriptor",
775 "TOK_OCTET", "TOK_OF", "TOK_OPTIONAL", "TOK_PATTERN", "TOK_PDV",
776 "TOK_PLUS_INFINITY", "TOK_PRESENT", "TOK_PrintableString",
777 "TOK_PRIVATE", "TOK_REAL", "TOK_RELATIVE_OID", "TOK_SEQUENCE",
778 "TOK_SET", "TOK_SIZE", "TOK_STRING", "TOK_SYNTAX", "TOK_T61String",
779 "TOK_TAGS", "TOK_TeletexString", "TOK_TRUE", "TOK_TYPE_IDENTIFIER",
780 "TOK_UNIQUE", "TOK_UNIVERSAL", "TOK_UniversalString", "TOK_UTCTime",
781 "TOK_UTF8String", "TOK_VideotexString", "TOK_VisibleString", "TOK_WITH",
782 "TOK_EXCEPT", "'^'", "TOK_INTERSECTION", "'|'", "TOK_UNION",
783 "TOK_TwoDots", "TOK_ThreeDots", "'{'", "'}'", "'('", "')'", "';'",
784 "','", "':'", "'['", "']'", "'!'", "'.'", "'<'", "'@'", "$accept",
vlm43c8ac52006-09-17 04:52:50 +0000785 "ParsedGrammar", "ModuleList", "ModuleDefinition", "@1",
vlme745fcd2006-09-05 16:18:34 +0000786 "optObjectIdentifier", "ObjectIdentifier", "ObjectIdentifierBody",
vlmd3420d32006-09-14 10:35:20 +0000787 "ObjectIdentifierElement", "optModuleDefinitionFlags",
788 "ModuleDefinitionFlags", "ModuleDefinitionFlag", "optModuleBody",
vlm43c8ac52006-09-17 04:52:50 +0000789 "ModuleBody", "AssignmentList", "Assignment", "@2", "optImports",
vlmd3420d32006-09-14 10:35:20 +0000790 "ImportsDefinition", "ImportsBundleSet", "AssignedIdentifier",
791 "ImportsBundle", "ImportsList", "ImportsElement", "optExports",
792 "ExportsDefinition", "ExportsBody", "ExportsElement", "ValueSet",
793 "ValueSetTypeAssignment", "DefinedType", "DataTypeReference",
794 "ParameterArgumentList", "ParameterArgumentName", "ActualParameterList",
795 "ActualParameter", "optComponentTypeLists", "ComponentTypeLists",
796 "ComponentType", "AlternativeTypeLists", "AlternativeType",
797 "ObjectClass", "optUnique", "FieldSpec", "ClassField", "optWithSyntax",
vlm43c8ac52006-09-17 04:52:50 +0000798 "WithSyntax", "@3", "WithSyntaxList", "WithSyntaxToken",
vlmd3420d32006-09-14 10:35:20 +0000799 "ExtensionAndException", "Type", "NSTD_IndirectMarker",
800 "TypeDeclaration", "TypeDeclarationSet", "ComplexTypeReference",
801 "ComplexTypeReferenceAmpList", "ComplexTypeReferenceElement",
802 "PrimitiveFieldReference", "FieldName", "DefinedObjectClass",
vlm43c8ac52006-09-17 04:52:50 +0000803 "ValueDefinition", "Value", "@4", "SimpleValue", "DefinedValue",
vlmd3420d32006-09-14 10:35:20 +0000804 "RestrictedCharacterStringValue", "Opaque", "BasicTypeId",
805 "BasicTypeId_UniverationCompatible", "BasicType", "BasicString",
vlm1bc782f2006-09-21 01:50:37 +0000806 "UnionMark", "IntersectionMark", "optConstraints", "Constraint",
vlm43c8ac52006-09-17 04:52:50 +0000807 "SubtypeConstraint", "SetOfConstraints", "ElementSetSpecs",
vlm1bc782f2006-09-21 01:50:37 +0000808 "ElementSetSpec", "Unions", "Intersections", "IntersectionElements",
809 "ConstraintSubtypeElement", "ConstraintSpec", "SingleValue",
810 "ContainedSubtype", "InnerTypeConstraint", "WithComponentsList",
811 "WithComponentsElement", "optPresenceConstraint", "PresenceConstraint",
812 "GeneralConstraint", "UserDefinedConstraint", "@5",
813 "ContentsConstraint", "ConstraintRangeSpec", "TableConstraint",
vlm1aeaddd2006-07-13 08:24:20 +0000814 "SimpleTableConstraint", "ComponentRelationConstraint",
815 "AtNotationList", "AtNotationElement", "ComponentIdList", "optMarker",
816 "Marker", "UniverationDefinition", "UniverationList",
vlme745fcd2006-09-05 16:18:34 +0000817 "UniverationElement", "SignedNumber", "RealValue", "optTag", "Tag",
818 "TagTypeValue", "TagClass", "TagPlicit", "TypeRefName",
819 "ObjectClassReference", "optIdentifier", "Identifier", 0
vlm1aeaddd2006-07-13 08:24:20 +0000820};
821#endif
822
823# ifdef YYPRINT
824/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
825 token YYLEX-NUM. */
826static const unsigned short yytoknum[] =
827{
828 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
829 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
830 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
831 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
832 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
833 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
834 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
835 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
836 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
837 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
vlme745fcd2006-09-05 16:18:34 +0000838 355, 356, 94, 357, 124, 358, 359, 360, 123, 125,
839 40, 41, 59, 44, 58, 91, 93, 33, 46, 60,
840 64
vlm1aeaddd2006-07-13 08:24:20 +0000841};
842# endif
843
844/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
845static const unsigned char yyr1[] =
846{
vlm43c8ac52006-09-17 04:52:50 +0000847 0, 121, 122, 123, 123, 125, 124, 126, 126, 127,
848 127, 128, 128, 129, 129, 129, 130, 130, 131, 131,
849 132, 132, 132, 132, 132, 133, 133, 134, 135, 135,
850 136, 136, 136, 137, 136, 136, 138, 138, 139, 139,
851 140, 140, 141, 141, 142, 143, 143, 144, 144, 144,
852 145, 145, 146, 146, 146, 147, 147, 148, 148, 148,
853 149, 150, 151, 151, 151, 152, 152, 152, 152, 153,
854 153, 154, 154, 154, 154, 154, 155, 155, 156, 156,
855 156, 156, 157, 157, 158, 158, 159, 159, 159, 159,
856 160, 160, 161, 161, 161, 162, 163, 163, 164, 164,
857 165, 165, 165, 165, 165, 165, 165, 166, 166, 168,
858 167, 169, 169, 170, 170, 170, 170, 171, 171, 171,
859 172, 173, 174, 175, 175, 175, 175, 175, 175, 175,
860 175, 175, 176, 176, 176, 176, 176, 176, 177, 177,
861 178, 179, 179, 180, 180, 180, 181, 182, 183, 183,
862 183, 184, 183, 183, 185, 185, 185, 185, 185, 185,
863 186, 186, 187, 187, 187, 188, 188, 189, 189, 189,
864 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
865 190, 190, 190, 191, 191, 192, 192, 192, 192, 192,
866 192, 192, 192, 192, 192, 192, 192, 192, 192, 193,
vlm1bc782f2006-09-21 01:50:37 +0000867 193, 194, 194, 195, 195, 196, 196, 197, 197, 198,
868 198, 199, 199, 199, 199, 200, 200, 201, 201, 202,
869 202, 203, 203, 204, 204, 204, 204, 204, 204, 204,
870 204, 204, 205, 205, 206, 206, 206, 206, 206, 207,
871 208, 208, 209, 209, 210, 210, 211, 211, 212, 212,
872 212, 213, 213, 213, 215, 214, 216, 217, 217, 217,
873 217, 218, 218, 219, 220, 221, 221, 222, 222, 223,
874 223, 224, 224, 225, 225, 226, 226, 227, 227, 228,
875 228, 228, 228, 228, 229, 229, 230, 230, 231, 231,
876 232, 233, 234, 234, 234, 234, 235, 235, 235, 236,
877 236, 237, 238, 238, 239
vlm1aeaddd2006-07-13 08:24:20 +0000878};
879
880/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
881static const unsigned char yyr2[] =
882{
vlm43c8ac52006-09-17 04:52:50 +0000883 0, 2, 1, 1, 2, 0, 9, 0, 1, 3,
884 2, 1, 2, 1, 4, 1, 0, 1, 1, 2,
885 2, 2, 2, 2, 2, 0, 1, 3, 1, 2,
886 1, 1, 1, 0, 3, 1, 0, 1, 3, 2,
887 1, 2, 0, 1, 4, 1, 3, 1, 3, 1,
888 0, 1, 3, 3, 2, 1, 3, 1, 3, 1,
889 3, 4, 1, 1, 4, 3, 3, 6, 6, 1,
890 3, 1, 3, 3, 3, 3, 1, 3, 1, 1,
891 1, 1, 0, 1, 1, 3, 3, 2, 3, 1,
892 1, 3, 2, 1, 1, 5, 0, 1, 1, 3,
893 2, 4, 3, 3, 3, 3, 3, 0, 1, 0,
894 6, 1, 2, 1, 1, 1, 3, 1, 3, 3,
895 3, 0, 2, 1, 4, 4, 4, 6, 6, 1,
896 4, 3, 1, 3, 3, 3, 1, 3, 1, 3,
897 1, 1, 1, 1, 3, 3, 1, 4, 1, 1,
898 3, 0, 3, 1, 1, 1, 1, 1, 1, 1,
899 1, 3, 1, 1, 1, 1, 2, 1, 1, 1,
900 1, 2, 2, 1, 1, 2, 2, 1, 1, 1,
901 1, 1, 2, 1, 2, 1, 1, 1, 1, 1,
vlm1aeaddd2006-07-13 08:24:20 +0000902 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
vlm1bc782f2006-09-21 01:50:37 +0000903 1, 1, 1, 0, 1, 1, 3, 1, 4, 3,
904 4, 1, 1, 3, 5, 1, 3, 1, 3, 1,
905 3, 1, 3, 4, 3, 1, 1, 3, 3, 3,
906 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
907 3, 5, 1, 3, 1, 3, 0, 1, 1, 1,
908 1, 1, 1, 1, 0, 5, 2, 1, 2, 2,
909 3, 1, 1, 3, 4, 1, 3, 2, 3, 1,
910 3, 0, 1, 1, 2, 2, 3, 1, 3, 1,
911 4, 4, 1, 1, 1, 1, 1, 1, 0, 1,
912 2, 4, 0, 1, 1, 1, 0, 1, 1, 1,
913 1, 1, 0, 1, 1
vlm1aeaddd2006-07-13 08:24:20 +0000914};
915
916/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
917 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
918 means the default is an error. */
919static const unsigned short yydefact[] =
920{
vlm1bc782f2006-09-21 01:50:37 +0000921 0, 299, 300, 0, 2, 3, 5, 1, 4, 7,
922 0, 0, 8, 304, 15, 10, 0, 11, 13, 16,
vlm43c8ac52006-09-17 04:52:50 +0000923 9, 12, 0, 0, 0, 0, 0, 0, 0, 17,
924 18, 0, 24, 22, 20, 23, 21, 0, 19, 14,
925 50, 0, 0, 26, 36, 51, 0, 54, 0, 55,
926 57, 59, 6, 0, 0, 37, 53, 52, 0, 0,
927 39, 0, 40, 0, 45, 47, 49, 185, 0, 186,
928 187, 188, 189, 190, 198, 191, 192, 193, 194, 195,
929 196, 197, 27, 28, 32, 30, 31, 35, 0, 0,
vlm1bc782f2006-09-21 01:50:37 +0000930 56, 58, 38, 41, 0, 0, 0, 33, 29, 288,
931 132, 301, 0, 167, 0, 0, 181, 174, 178, 180,
vlm43c8ac52006-09-17 04:52:50 +0000932 168, 0, 0, 169, 173, 177, 0, 0, 63, 183,
933 170, 62, 179, 136, 0, 42, 46, 48, 34, 0,
vlm1bc782f2006-09-21 01:50:37 +0000934 292, 66, 65, 121, 289, 296, 0, 182, 176, 175,
935 172, 171, 0, 69, 0, 170, 71, 0, 288, 0,
936 184, 0, 0, 43, 44, 0, 294, 295, 293, 0,
937 0, 203, 298, 297, 290, 133, 135, 0, 0, 0,
938 0, 0, 61, 156, 162, 157, 284, 285, 163, 164,
vlm43c8ac52006-09-17 04:52:50 +0000939 154, 155, 81, 0, 76, 78, 79, 158, 159, 80,
vlm1bc782f2006-09-21 01:50:37 +0000940 283, 275, 0, 277, 282, 279, 141, 142, 137, 138,
941 140, 134, 153, 151, 147, 148, 149, 0, 160, 288,
942 288, 0, 98, 0, 129, 0, 0, 203, 203, 123,
943 122, 0, 0, 120, 204, 205, 207, 288, 70, 75,
944 74, 73, 72, 287, 0, 234, 233, 0, 232, 235,
945 0, 211, 0, 237, 0, 212, 215, 217, 219, 221,
946 0, 225, 226, 231, 286, 236, 239, 238, 64, 288,
947 276, 0, 0, 0, 0, 0, 0, 146, 143, 0,
948 273, 271, 271, 271, 100, 272, 96, 271, 271, 107,
949 0, 291, 0, 288, 0, 288, 0, 288, 0, 0,
950 0, 288, 0, 0, 0, 251, 253, 252, 261, 262,
951 0, 68, 67, 0, 257, 0, 0, 0, 0, 0,
952 60, 0, 199, 200, 0, 201, 202, 0, 0, 0,
953 0, 77, 278, 0, 0, 160, 139, 165, 152, 161,
954 150, 274, 105, 0, 104, 106, 97, 271, 102, 103,
955 0, 95, 108, 99, 0, 117, 0, 90, 93, 94,
956 288, 131, 0, 0, 83, 84, 89, 271, 288, 302,
957 0, 302, 0, 0, 256, 0, 209, 206, 0, 0,
958 216, 258, 259, 230, 228, 0, 240, 0, 224, 213,
959 218, 220, 222, 0, 229, 227, 281, 280, 166, 144,
960 145, 101, 0, 130, 0, 124, 288, 92, 288, 125,
961 288, 87, 271, 288, 303, 126, 288, 208, 254, 263,
962 0, 0, 265, 210, 260, 244, 0, 242, 203, 0,
963 223, 109, 118, 119, 91, 88, 85, 86, 121, 121,
964 0, 0, 267, 269, 264, 0, 241, 0, 246, 214,
965 0, 127, 128, 255, 268, 0, 266, 243, 249, 250,
966 248, 245, 247, 113, 114, 0, 0, 111, 115, 270,
967 0, 110, 112, 116
vlm1aeaddd2006-07-13 08:24:20 +0000968};
969
970/* YYDEFGOTO[NTERM-NUM]. */
971static const short yydefgoto[] =
972{
vlm43c8ac52006-09-17 04:52:50 +0000973 -1, 3, 4, 5, 9, 11, 12, 16, 17, 28,
974 29, 30, 42, 43, 82, 83, 128, 54, 55, 61,
975 154, 62, 63, 64, 44, 45, 48, 49, 182, 84,
vlm1bc782f2006-09-21 01:50:37 +0000976 117, 85, 142, 143, 183, 184, 353, 354, 355, 346,
977 347, 131, 337, 211, 212, 341, 342, 440, 456, 457,
978 356, 357, 160, 161, 220, 118, 198, 199, 458, 272,
979 273, 86, 204, 264, 205, 206, 243, 328, 119, 120,
980 121, 122, 314, 317, 223, 224, 225, 226, 293, 245,
981 246, 247, 248, 249, 250, 251, 252, 253, 416, 417,
982 451, 452, 294, 295, 430, 296, 306, 297, 298, 299,
983 411, 412, 432, 274, 275, 150, 192, 193, 254, 255,
984 133, 134, 135, 159, 164, 256, 123, 403, 257
vlm1aeaddd2006-07-13 08:24:20 +0000985};
986
987/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
988 STATE-NUM. */
vlm1bc782f2006-09-21 01:50:37 +0000989#define YYPACT_NINF -282
vlm1aeaddd2006-07-13 08:24:20 +0000990static const short yypact[] =
991{
vlm1bc782f2006-09-21 01:50:37 +0000992 193, -282, -282, 28, 193, -282, -282, -282, -282, -47,
993 13, 45, -282, -282, -282, -282, 37, -282, -16, 168,
994 -282, -282, 138, 93, 83, 140, 165, 147, 223, 168,
995 -282, 155, -282, -282, -282, -282, -282, 245, -282, -282,
996 64, 84, 225, -282, 222, -282, 176, -282, 132, -282,
997 196, -282, -282, 167, 512, -282, -282, -282, 249, 202,
998 -282, 11, -282, 65, -282, 212, -282, -282, 314, -282,
999 -282, -282, -282, -282, -282, -282, -282, -282, -282, -282,
1000 -282, -282, 512, -282, -282, -282, -282, -282, 344, 665,
1001 -282, -282, -282, -282, 193, 249, 234, -282, -282, -8,
1002 215, -282, 262, -282, 264, 278, -282, -282, -282, -282,
1003 -282, 299, 270, -282, -282, -282, 741, 354, 250, -282,
1004 255, -282, -282, 246, 362, -47, -282, -282, -282, 258,
1005 25, -282, -282, -282, -282, 128, 249, -282, -282, -282,
1006 -282, -282, 134, -282, 254, -282, 256, 261, 60, 70,
1007 -282, 279, 224, -282, -282, 243, -282, -282, -282, 364,
1008 589, 82, -282, -282, -282, -282, -282, 373, 741, 249,
1009 249, 444, -282, -282, -282, -282, -282, -282, -282, -282,
1010 -282, -282, -282, 159, -282, -282, -282, -282, -282, -282,
1011 -282, -282, 177, -282, -282, 268, -282, -282, 263, -282,
1012 -282, -282, -282, -282, -282, -282, -282, 265, 266, 174,
1013 73, 203, -282, 272, 339, 274, 318, 109, 112, -282,
1014 -282, 282, 191, -282, -282, -282, 284, -8, -282, -282,
1015 -282, -282, -282, -282, 300, -282, -282, -61, -282, -282,
1016 294, -282, 444, -282, 293, 291, 231, 235, -282, 304,
1017 301, -61, -282, -282, -282, -282, -282, -282, -282, 60,
1018 -282, 92, 269, 322, 401, 400, 224, -282, -282, 224,
1019 -282, 50, -21, 50, -282, -282, 317, -21, 50, 319,
1020 243, -282, 387, 66, 326, 47, 345, 47, 347, 444,
1021 392, 309, 193, 320, 325, -282, -282, -282, 321, -282,
1022 444, -282, -282, 472, 311, 331, 296, 323, 330, 333,
1023 -282, 338, -282, -282, 472, -282, -282, 472, 472, 444,
1024 312, -282, -282, 335, 336, -282, -282, -282, 423, -282,
1025 -282, -282, -282, 327, -282, -282, -282, 50, -282, -282,
1026 361, -282, -282, -282, 400, 332, 204, -282, -282, -282,
1027 309, -282, 377, 352, 349, -282, -282, 50, 309, 400,
1028 355, 400, 365, 367, -282, 368, -282, -282, 343, 378,
1029 -282, -282, 359, -282, -282, 444, 284, 23, -282, 379,
1030 235, -282, -282, 380, -282, -282, -282, -282, -282, -282,
1031 -282, -282, 382, -282, 269, -282, 66, -282, 309, -282,
1032 51, -282, 50, 309, -282, -282, 309, -282, -282, -282,
1033 31, 205, -282, -282, -282, -282, 218, -282, 82, 458,
1034 -282, -282, -282, -282, -282, -282, -282, -282, -282, -282,
1035 401, 400, 375, -282, -282, 343, -282, 23, 137, -282,
1036 46, -282, -282, 423, 375, 400, -282, -282, -282, -282,
1037 -282, -282, -282, -282, -282, 46, 20, -282, -282, -282,
1038 17, -282, -282, -282
vlm1aeaddd2006-07-13 08:24:20 +00001039};
1040
1041/* YYPGOTO[NTERM-NUM]. */
1042static const short yypgoto[] =
1043{
vlm1bc782f2006-09-21 01:50:37 +00001044 -282, -282, -282, 492, -282, -282, 372, -282, 482, -282,
1045 -282, 470, -282, -282, -282, 418, -282, -282, -282, -282,
1046 -282, 440, -282, 407, -282, -282, -282, 445, 357, -282,
1047 -48, -282, -282, 337, -282, 247, 220, -282, 111, -282,
1048 116, 286, -282, -282, 236, -282, -282, -282, 59, -210,
1049 -281, -96, -282, -76, -282, 233, -282, 252, -136, 308,
1050 310, -282, -80, -282, -118, -258, -119, 89, -59, -24,
1051 -282, 22, -282, -282, -208, -282, -282, 219, -155, 106,
1052 -282, 216, 214, -138, -282, -229, -282, -282, -282, 95,
1053 -282, -282, -282, -282, -282, -282, 283, -282, -282, -282,
1054 -282, 98, 105, -259, -282, -282, -282, 276, -141, -282,
1055 -182, -282, -282, -282, -282, 1, -282, 178, -10
vlm1aeaddd2006-07-13 08:24:20 +00001056};
1057
1058/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
1059 positive, shift that token. If negative, reduce the rule which
1060 number is the opposite. If zero, do what YYDEFACT says.
1061 If YYTABLE_NINF, parse error. */
vlm1bc782f2006-09-21 01:50:37 +00001062#define YYTABLE_NINF -272
vlm1aeaddd2006-07-13 08:24:20 +00001063static const short yytable[] =
1064{
vlm1bc782f2006-09-21 01:50:37 +00001065 18, 6, 348, 132, 323, 6, 18, 188, 194, 286,
1066 288, 188, 332, 334, 335, 200, 244, 269, 338, 339,
1067 13, 453, 13, 14, 453, 129, 1, 2, 7, 187,
1068 186, 51, 13, 187, 196, 197, 454, 196, 197, 454,
1069 13, 124, 50, 66, 89, 304, 13, 14, 51, 156,
1070 453, 66, 185, 270, 65, 88, 13, 144, 305, 50,
1071 13, 10, 65, 196, 197, 454, 173, 174, 175, 13,
1072 176, 177, 89, 178, 179, 13, 87, 374, 391, 13,
1073 176, 177, 352, 88, 19, 66, 352, 309, 269, 267,
1074 268, 385, 145, 13, 22, 125, 65, 333, 401, 1,
1075 2, 13, 176, 177, 87, 157, 46, 130, -25, 144,
1076 180, 41, 219, 271, 276, 348, 94, 146, 188, 158,
1077 194, 324, 15, 92, 270, 188, 166, 200, 188, 461,
1078 415, 302, 455, 463, 362, 455, 422, 165, 189, 195,
1079 187, 186, 208, 427, 145, 369, 20, 187, 31, 431,
1080 187, 181, 201, 207, 345, 32, -82, 448, 345, 230,
1081 232, 455, 130, 185, 383, 370, 130, 221, 171, 146,
1082 229, 231, 33, 345, 162, 130, 13, 190, 95, 191,
1083 382, 130, 1, 2, 23, 163, 330, 349, 130, 331,
1084 267, 268, 222, 24, 221, 364, 47, 221, 174, 190,
1085 13, 176, 177, 233, 178, 179, 1, 2, 1, 2,
1086 438, 449, 269, 234, 25, 450, 26, 285, 60, 222,
1087 287, 428, 222, 35, 429, 27, 37, 290, 291, 34,
1088 173, 174, 175, 13, 176, 177, 36, 178, 179, 1,
1089 2, 235, 236, 167, 57, 58, 462, 168, 270, 189,
1090 462, 195, 325, 423, 397, 329, 208, 237, 13, 208,
1091 209, 210, 402, 207, 1, 2, 39, 207, 258, 52,
1092 207, 40, 259, 350, 180, 358, 238, 358, 13, 176,
1093 177, 53, 239, -271, 1, 2, 260, -271, 56, 130,
1094 261, 240, 202, 365, 1, 2, 196, 197, 241, 292,
1095 349, 242, 425, 174, 59, 13, 176, 177, 233, 178,
1096 179, 91, 279, 395, 434, 181, 280, 396, 435, 174,
1097 96, 13, 176, 177, 233, 178, 179, 436, 307, 308,
1098 97, 437, 203, 136, 393, 312, 313, 315, 316, 196,
1099 197, 100, 101, 127, 389, 390, 235, 99, 137, 404,
1100 138, 404, 441, 442, 139, 140, 141, 147, 148, 100,
1101 101, 373, 235, 149, 151, 152, 155, 418, 169, 171,
1102 170, 102, 67, 103, 213, 104, 227, 384, 262, 282,
1103 266, 263, 283, 265, 325, 105, 350, 239, 281, 106,
1104 358, 284, 289, 107, 300, 207, 108, 69, 70, 71,
1105 433, 303, 310, 239, 311, 318, 327, 109, 72, 13,
1106 336, 319, 110, 73, 111, 74, 112, 344, 359, 340,
1107 361, 433, 363, 75, 130, 113, 114, 418, 388, 368,
1108 371, 366, 76, 375, 77, 459, 367, 372, 377, 78,
1109 115, 79, 80, 81, 378, 379, 386, 387, 392, 394,
1110 398, 174, 116, 13, 176, 177, 233, 178, 179, 1,
1111 2, 399, 400, 410, 405, 174, 234, 13, 176, 177,
1112 233, 178, 179, 1, 2, 408, 407, 409, 414, 174,
1113 234, 13, 176, 177, 233, 178, 179, 1, 2, 413,
1114 421, 420, 419, 445, 235, 236, 8, 153, 21, 38,
1115 98, 93, 126, 90, 172, 228, 321, 360, 235, 236,
1116 237, 426, 424, 301, 460, 326, 343, 351, 277, 443,
1117 278, 13, 235, 236, 237, 439, 376, 1, 2, 238,
1118 380, 381, 447, 446, 320, 239, 444, 322, 237, 406,
1119 67, 0, 0, 238, 240, 0, 0, 0, 0, 239,
1120 0, 241, 0, 0, 242, 68, 0, 238, 240, 0,
1121 0, 0, 0, 239, 0, 69, 70, 71, 242, 0,
1122 0, 0, 240, 0, 0, 0, 72, 0, 0, 0,
1123 0, 73, 242, 74, 0, 0, 0, 0, 0, 0,
1124 0, 75, 0, 0, 0, 0, 0, 0, 0, 0,
1125 76, 0, 77, 0, 100, 101, 0, 78, 0, 79,
1126 80, 81, 214, 0, 0, 0, 102, 67, 103, 0,
1127 104, 215, 0, 0, 0, 0, 0, 0, 0, 0,
vlm43c8ac52006-09-17 04:52:50 +00001128 105, 0, 0, 0, 106, 0, 0, 0, 107, 0,
1129 0, 108, 69, 70, 71, 0, 0, 0, 0, 0,
vlm1bc782f2006-09-21 01:50:37 +00001130 216, 0, 109, 72, 0, 0, 0, 110, 73, 111,
vlm43c8ac52006-09-17 04:52:50 +00001131 74, 112, 0, 0, 0, 0, 0, 0, 75, 0,
vlm1bc782f2006-09-21 01:50:37 +00001132 113, 114, 217, 218, 0, 0, 0, 76, 0, 77,
1133 100, 101, 0, 0, 78, 115, 79, 80, 81, 0,
vlm43c8ac52006-09-17 04:52:50 +00001134 0, 0, 102, 67, 103, 0, 104, 0, 0, 0,
1135 0, 0, 0, 0, 0, 0, 105, 0, 0, 0,
1136 106, 0, 0, 0, 107, 0, 0, 108, 69, 70,
1137 71, 0, 0, 0, 0, 0, 0, 0, 109, 72,
1138 0, 0, 0, 110, 73, 111, 74, 112, 0, 0,
1139 0, 0, 0, 0, 75, 0, 113, 114, 0, 0,
vlm1bc782f2006-09-21 01:50:37 +00001140 0, 0, 0, 76, 0, 77, 1, 2, 0, 0,
1141 78, 115, 79, 80, 81, 0, 0, 0, 102, 67,
1142 103, 0, 104, 0, 0, 0, 0, 0, 0, 0,
1143 0, 0, 105, 0, 0, 0, 106, 0, 0, 0,
1144 107, 0, 0, 108, 69, 70, 71, 0, 0, 0,
1145 0, 0, 0, 0, 109, 72, 0, 0, 0, 110,
1146 73, 111, 74, 112, 0, 0, 0, 0, 0, 0,
1147 75, 0, 113, 114, 0, 0, 0, 0, 0, 76,
1148 0, 77, 0, 0, 0, 0, 78, 115, 79, 80,
1149 81
vlm1aeaddd2006-07-13 08:24:20 +00001150};
1151
1152static const short yycheck[] =
1153{
vlm1bc782f2006-09-21 01:50:37 +00001154 10, 0, 283, 99, 262, 4, 16, 148, 149, 217,
1155 218, 152, 271, 272, 273, 151, 171, 38, 277, 278,
1156 9, 4, 9, 10, 4, 33, 15, 16, 0, 148,
1157 148, 41, 9, 152, 17, 18, 19, 17, 18, 19,
1158 9, 89, 41, 53, 54, 106, 9, 10, 58, 24,
1159 4, 61, 148, 74, 53, 54, 9, 116, 119, 58,
1160 9, 108, 61, 17, 18, 19, 6, 7, 8, 9,
1161 10, 11, 82, 13, 14, 9, 54, 306, 337, 9,
1162 10, 11, 35, 82, 39, 95, 35, 242, 38, 16,
1163 17, 320, 116, 9, 110, 94, 95, 118, 357, 15,
1164 16, 9, 10, 11, 82, 80, 22, 115, 44, 168,
1165 50, 47, 160, 209, 210, 396, 51, 116, 259, 94,
1166 261, 262, 109, 112, 74, 266, 136, 263, 269, 109,
1167 107, 227, 115, 116, 289, 115, 394, 136, 148, 149,
1168 259, 259, 152, 402, 168, 300, 109, 266, 10, 118,
1169 269, 91, 151, 152, 107, 62, 109, 20, 107, 169,
1170 170, 115, 115, 259, 319, 303, 115, 85, 108, 168,
1171 169, 170, 89, 107, 46, 115, 9, 107, 113, 109,
1172 318, 115, 15, 16, 16, 57, 266, 283, 115, 269,
1173 16, 17, 110, 25, 85, 291, 112, 85, 7, 107,
1174 9, 10, 11, 12, 13, 14, 15, 16, 15, 16,
1175 418, 74, 38, 22, 46, 78, 48, 108, 51, 110,
1176 108, 403, 110, 58, 406, 57, 3, 36, 37, 89,
1177 6, 7, 8, 9, 10, 11, 89, 13, 14, 15,
1178 16, 50, 51, 109, 112, 113, 456, 113, 74, 259,
1179 460, 261, 262, 394, 350, 265, 266, 66, 9, 269,
1180 17, 18, 358, 262, 15, 16, 111, 266, 109, 44,
1181 269, 26, 113, 283, 50, 285, 85, 287, 9, 10,
1182 11, 59, 91, 109, 15, 16, 109, 113, 112, 115,
1183 113, 100, 68, 292, 15, 16, 17, 18, 107, 108,
1184 396, 110, 398, 7, 108, 9, 10, 11, 12, 13,
1185 14, 109, 109, 109, 109, 91, 113, 113, 113, 7,
1186 108, 9, 10, 11, 12, 13, 14, 109, 34, 35,
1187 16, 113, 108, 118, 344, 104, 105, 102, 103, 17,
1188 18, 15, 16, 109, 17, 18, 50, 3, 86, 359,
1189 86, 361, 428, 429, 76, 56, 86, 3, 108, 15,
1190 16, 65, 50, 108, 118, 3, 108, 377, 114, 108,
1191 114, 27, 28, 29, 10, 31, 3, 65, 110, 40,
1192 114, 118, 108, 118, 394, 41, 396, 91, 116, 45,
1193 400, 73, 110, 49, 110, 394, 52, 53, 54, 55,
1194 410, 101, 109, 91, 113, 101, 5, 63, 64, 9,
1195 93, 110, 68, 69, 70, 71, 72, 30, 73, 100,
1196 73, 431, 30, 79, 115, 81, 82, 437, 5, 108,
1197 119, 111, 88, 110, 90, 445, 111, 106, 108, 95,
1198 96, 97, 98, 99, 111, 107, 111, 111, 87, 117,
1199 73, 7, 108, 9, 10, 11, 12, 13, 14, 15,
1200 16, 109, 113, 120, 109, 7, 22, 9, 10, 11,
1201 12, 13, 14, 15, 16, 108, 111, 109, 119, 7,
1202 22, 9, 10, 11, 12, 13, 14, 15, 16, 111,
1203 108, 111, 113, 118, 50, 51, 4, 125, 16, 29,
1204 82, 61, 95, 58, 147, 168, 259, 287, 50, 51,
1205 66, 400, 396, 227, 455, 263, 280, 284, 210, 430,
1206 210, 9, 50, 51, 66, 419, 307, 15, 16, 85,
1207 314, 317, 437, 435, 251, 91, 431, 261, 66, 361,
1208 28, -1, -1, 85, 100, -1, -1, -1, -1, 91,
1209 -1, 107, -1, -1, 110, 43, -1, 85, 100, -1,
1210 -1, -1, -1, 91, -1, 53, 54, 55, 110, -1,
1211 -1, -1, 100, -1, -1, -1, 64, -1, -1, -1,
1212 -1, 69, 110, 71, -1, -1, -1, -1, -1, -1,
1213 -1, 79, -1, -1, -1, -1, -1, -1, -1, -1,
1214 88, -1, 90, -1, 15, 16, -1, 95, -1, 97,
1215 98, 99, 23, -1, -1, -1, 27, 28, 29, -1,
1216 31, 32, -1, -1, -1, -1, -1, -1, -1, -1,
vlm43c8ac52006-09-17 04:52:50 +00001217 41, -1, -1, -1, 45, -1, -1, -1, 49, -1,
1218 -1, 52, 53, 54, 55, -1, -1, -1, -1, -1,
vlm1bc782f2006-09-21 01:50:37 +00001219 61, -1, 63, 64, -1, -1, -1, 68, 69, 70,
vlm43c8ac52006-09-17 04:52:50 +00001220 71, 72, -1, -1, -1, -1, -1, -1, 79, -1,
vlm1bc782f2006-09-21 01:50:37 +00001221 81, 82, 83, 84, -1, -1, -1, 88, -1, 90,
vlm43c8ac52006-09-17 04:52:50 +00001222 15, 16, -1, -1, 95, 96, 97, 98, 99, -1,
1223 -1, -1, 27, 28, 29, -1, 31, -1, -1, -1,
1224 -1, -1, -1, -1, -1, -1, 41, -1, -1, -1,
vlmd3420d32006-09-14 10:35:20 +00001225 45, -1, -1, -1, 49, -1, -1, 52, 53, 54,
vlm43c8ac52006-09-17 04:52:50 +00001226 55, -1, -1, -1, -1, -1, -1, -1, 63, 64,
vlmd3420d32006-09-14 10:35:20 +00001227 -1, -1, -1, 68, 69, 70, 71, 72, -1, -1,
vlm43c8ac52006-09-17 04:52:50 +00001228 -1, -1, -1, -1, 79, -1, 81, 82, -1, -1,
vlm1bc782f2006-09-21 01:50:37 +00001229 -1, -1, -1, 88, -1, 90, 15, 16, -1, -1,
1230 95, 96, 97, 98, 99, -1, -1, -1, 27, 28,
1231 29, -1, 31, -1, -1, -1, -1, -1, -1, -1,
1232 -1, -1, 41, -1, -1, -1, 45, -1, -1, -1,
1233 49, -1, -1, 52, 53, 54, 55, -1, -1, -1,
1234 -1, -1, -1, -1, 63, 64, -1, -1, -1, 68,
1235 69, 70, 71, 72, -1, -1, -1, -1, -1, -1,
1236 79, -1, 81, 82, -1, -1, -1, -1, -1, 88,
1237 -1, 90, -1, -1, -1, -1, 95, 96, 97, 98,
1238 99
vlm1aeaddd2006-07-13 08:24:20 +00001239};
1240
1241/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1242 symbol of state STATE-NUM. */
1243static const unsigned char yystos[] =
1244{
vlm1bc782f2006-09-21 01:50:37 +00001245 0, 15, 16, 122, 123, 124, 236, 0, 124, 125,
1246 108, 126, 127, 9, 10, 109, 128, 129, 239, 39,
vlm43c8ac52006-09-17 04:52:50 +00001247 109, 129, 110, 16, 25, 46, 48, 57, 130, 131,
1248 132, 10, 62, 89, 89, 58, 89, 3, 132, 111,
1249 26, 47, 133, 134, 145, 146, 22, 112, 147, 148,
vlm1bc782f2006-09-21 01:50:37 +00001250 236, 239, 44, 59, 138, 139, 112, 112, 113, 108,
1251 51, 140, 142, 143, 144, 236, 239, 28, 43, 53,
vlm43c8ac52006-09-17 04:52:50 +00001252 54, 55, 64, 69, 71, 79, 88, 90, 95, 97,
vlm1bc782f2006-09-21 01:50:37 +00001253 98, 99, 135, 136, 150, 152, 182, 192, 236, 239,
vlm43c8ac52006-09-17 04:52:50 +00001254 148, 109, 112, 142, 51, 113, 108, 16, 136, 3,
1255 15, 16, 27, 29, 31, 41, 45, 49, 52, 63,
1256 68, 70, 72, 81, 82, 96, 108, 151, 176, 189,
vlm1bc782f2006-09-21 01:50:37 +00001257 190, 191, 192, 237, 151, 236, 144, 109, 137, 33,
1258 115, 162, 172, 231, 232, 233, 118, 86, 86, 76,
1259 56, 86, 153, 154, 189, 190, 236, 3, 108, 108,
1260 226, 118, 3, 127, 141, 108, 24, 80, 94, 234,
1261 173, 174, 46, 57, 235, 236, 239, 109, 113, 114,
vlm43c8ac52006-09-17 04:52:50 +00001262 114, 108, 149, 6, 7, 8, 10, 11, 13, 14,
vlm1bc782f2006-09-21 01:50:37 +00001263 50, 91, 149, 155, 156, 172, 185, 187, 229, 239,
1264 107, 109, 227, 228, 229, 239, 17, 18, 177, 178,
1265 179, 236, 68, 108, 183, 185, 186, 236, 239, 17,
vlm43c8ac52006-09-17 04:52:50 +00001266 18, 164, 165, 10, 23, 32, 61, 83, 84, 151,
vlm1bc782f2006-09-21 01:50:37 +00001267 175, 85, 110, 195, 196, 197, 198, 3, 154, 236,
1268 239, 236, 239, 12, 22, 50, 51, 66, 85, 91,
1269 100, 107, 110, 187, 199, 200, 201, 202, 203, 204,
1270 205, 206, 207, 208, 229, 230, 236, 239, 109, 113,
1271 109, 113, 110, 118, 184, 118, 114, 16, 17, 38,
1272 74, 172, 180, 181, 224, 225, 172, 180, 181, 109,
1273 113, 116, 40, 108, 73, 108, 195, 108, 195, 110,
1274 36, 37, 108, 199, 213, 214, 216, 218, 219, 220,
1275 110, 162, 172, 101, 106, 119, 217, 34, 35, 199,
1276 109, 113, 104, 105, 193, 102, 103, 194, 101, 110,
1277 217, 156, 228, 186, 229, 239, 178, 5, 188, 239,
1278 183, 183, 224, 118, 224, 224, 93, 163, 224, 224,
1279 100, 166, 167, 165, 30, 107, 160, 161, 171, 172,
1280 239, 176, 35, 157, 158, 159, 171, 172, 239, 73,
1281 157, 73, 199, 30, 172, 236, 111, 111, 108, 199,
1282 204, 119, 106, 65, 206, 110, 198, 108, 111, 107,
1283 202, 203, 204, 199, 65, 206, 111, 111, 5, 17,
1284 18, 224, 87, 239, 117, 109, 113, 172, 73, 109,
1285 113, 224, 172, 238, 239, 109, 238, 111, 108, 109,
1286 120, 221, 222, 111, 119, 107, 209, 210, 239, 113,
1287 111, 108, 186, 229, 161, 172, 159, 224, 231, 231,
1288 215, 118, 223, 239, 109, 113, 109, 113, 195, 200,
1289 168, 174, 174, 188, 223, 118, 222, 210, 20, 74,
1290 78, 211, 212, 4, 19, 115, 169, 170, 179, 239,
1291 169, 109, 170, 116
vlm1aeaddd2006-07-13 08:24:20 +00001292};
1293
1294#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
1295# define YYSIZE_T __SIZE_TYPE__
1296#endif
1297#if ! defined (YYSIZE_T) && defined (size_t)
1298# define YYSIZE_T size_t
1299#endif
1300#if ! defined (YYSIZE_T)
1301# if defined (__STDC__) || defined (__cplusplus)
1302# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1303# define YYSIZE_T size_t
1304# endif
1305#endif
1306#if ! defined (YYSIZE_T)
1307# define YYSIZE_T unsigned int
1308#endif
vlmfa67ddc2004-06-03 03:38:44 +00001309
1310#define yyerrok (yyerrstatus = 0)
1311#define yyclearin (yychar = YYEMPTY)
vlm0c6d3812006-03-21 03:40:38 +00001312#define YYEMPTY -2
vlmfa67ddc2004-06-03 03:38:44 +00001313#define YYEOF 0
vlm1aeaddd2006-07-13 08:24:20 +00001314
vlmfa67ddc2004-06-03 03:38:44 +00001315#define YYACCEPT goto yyacceptlab
vlm1aeaddd2006-07-13 08:24:20 +00001316#define YYABORT goto yyabortlab
vlm0c6d3812006-03-21 03:40:38 +00001317#define YYERROR goto yyerrlab1
vlm1aeaddd2006-07-13 08:24:20 +00001318
1319/* Like YYERROR except do call yyerror. This remains here temporarily
1320 to ease the transition to the new meaning of YYERROR, for GCC.
vlmfa67ddc2004-06-03 03:38:44 +00001321 Once GCC version 2 has supplanted version 1, this can go. */
vlm1aeaddd2006-07-13 08:24:20 +00001322
vlmfa67ddc2004-06-03 03:38:44 +00001323#define YYFAIL goto yyerrlab
vlm1aeaddd2006-07-13 08:24:20 +00001324
vlmfa67ddc2004-06-03 03:38:44 +00001325#define YYRECOVERING() (!!yyerrstatus)
vlm1aeaddd2006-07-13 08:24:20 +00001326
1327#define YYBACKUP(Token, Value) \
vlmfa67ddc2004-06-03 03:38:44 +00001328do \
1329 if (yychar == YYEMPTY && yylen == 1) \
vlm1aeaddd2006-07-13 08:24:20 +00001330 { \
1331 yychar = (Token); \
1332 yylval = (Value); \
vlm0c6d3812006-03-21 03:40:38 +00001333 yychar1 = YYTRANSLATE (yychar); \
vlmfa67ddc2004-06-03 03:38:44 +00001334 YYPOPSTACK; \
1335 goto yybackup; \
1336 } \
1337 else \
vlm1aeaddd2006-07-13 08:24:20 +00001338 { \
1339 yyerror ("syntax error: cannot back up"); \
1340 YYERROR; \
1341 } \
vlmfa67ddc2004-06-03 03:38:44 +00001342while (0)
1343
1344#define YYTERROR 1
1345#define YYERRCODE 256
1346
vlm1aeaddd2006-07-13 08:24:20 +00001347/* YYLLOC_DEFAULT -- Compute the default location (before the actions
1348 are run). */
1349
1350#ifndef YYLLOC_DEFAULT
1351# define YYLLOC_DEFAULT(Current, Rhs, N) \
1352 Current.first_line = Rhs[1].first_line; \
1353 Current.first_column = Rhs[1].first_column; \
1354 Current.last_line = Rhs[N].last_line; \
1355 Current.last_column = Rhs[N].last_column;
vlmfa67ddc2004-06-03 03:38:44 +00001356#endif
1357
vlm1aeaddd2006-07-13 08:24:20 +00001358/* YYLEX -- calling `yylex' with the right arguments. */
vlm7e436752006-03-18 06:53:11 +00001359
vlm1aeaddd2006-07-13 08:24:20 +00001360#define YYLEX yylex ()
vlm7e436752006-03-18 06:53:11 +00001361
vlm1aeaddd2006-07-13 08:24:20 +00001362/* Enable debugging if requested. */
1363#if YYDEBUG
vlm7e436752006-03-18 06:53:11 +00001364
vlm1aeaddd2006-07-13 08:24:20 +00001365# ifndef YYFPRINTF
1366# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1367# define YYFPRINTF fprintf
1368# endif
vlm7e436752006-03-18 06:53:11 +00001369
vlm1aeaddd2006-07-13 08:24:20 +00001370# define YYDPRINTF(Args) \
1371do { \
1372 if (yydebug) \
1373 YYFPRINTF Args; \
1374} while (0)
1375# define YYDSYMPRINT(Args) \
1376do { \
1377 if (yydebug) \
1378 yysymprint Args; \
1379} while (0)
1380/* Nonzero means print parse trace. It is left uninitialized so that
1381 multiple parsers can coexist. */
1382int yydebug;
1383#else /* !YYDEBUG */
1384# define YYDPRINTF(Args)
1385# define YYDSYMPRINT(Args)
1386#endif /* !YYDEBUG */
vlm7e436752006-03-18 06:53:11 +00001387
vlm1aeaddd2006-07-13 08:24:20 +00001388/* YYINITDEPTH -- initial size of the parser's stacks. */
vlmfa67ddc2004-06-03 03:38:44 +00001389#ifndef YYINITDEPTH
vlm1aeaddd2006-07-13 08:24:20 +00001390# define YYINITDEPTH 200
vlmfa67ddc2004-06-03 03:38:44 +00001391#endif
1392
vlm1aeaddd2006-07-13 08:24:20 +00001393/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1394 if the built-in stack extension method is used).
1395
1396 Do not make this value too large; the results are undefined if
1397 SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
1398 evaluated with infinite-precision integer arithmetic. */
vlmfa67ddc2004-06-03 03:38:44 +00001399
vlm0c6d3812006-03-21 03:40:38 +00001400#if YYMAXDEPTH == 0
vlm1aeaddd2006-07-13 08:24:20 +00001401# undef YYMAXDEPTH
vlm0c6d3812006-03-21 03:40:38 +00001402#endif
vlmfa67ddc2004-06-03 03:38:44 +00001403
1404#ifndef YYMAXDEPTH
vlm1aeaddd2006-07-13 08:24:20 +00001405# define YYMAXDEPTH 10000
vlmfa67ddc2004-06-03 03:38:44 +00001406#endif
vlm1aeaddd2006-07-13 08:24:20 +00001407
vlmfa67ddc2004-06-03 03:38:44 +00001408
vlmfa67ddc2004-06-03 03:38:44 +00001409
vlm1aeaddd2006-07-13 08:24:20 +00001410#if YYERROR_VERBOSE
vlmfa67ddc2004-06-03 03:38:44 +00001411
vlm1aeaddd2006-07-13 08:24:20 +00001412# ifndef yystrlen
1413# if defined (__GLIBC__) && defined (_STRING_H)
1414# define yystrlen strlen
1415# else
1416/* Return the length of YYSTR. */
1417static YYSIZE_T
1418# if defined (__STDC__) || defined (__cplusplus)
1419yystrlen (const char *yystr)
1420# else
1421yystrlen (yystr)
1422 const char *yystr;
1423# endif
vlm0c6d3812006-03-21 03:40:38 +00001424{
vlm1aeaddd2006-07-13 08:24:20 +00001425 register const char *yys = yystr;
vlm0c6d3812006-03-21 03:40:38 +00001426
vlm1aeaddd2006-07-13 08:24:20 +00001427 while (*yys++ != '\0')
1428 continue;
1429
1430 return yys - yystr - 1;
1431}
1432# endif
1433# endif
1434
1435# ifndef yystpcpy
1436# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1437# define yystpcpy stpcpy
1438# else
1439/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1440 YYDEST. */
1441static char *
1442# if defined (__STDC__) || defined (__cplusplus)
1443yystpcpy (char *yydest, const char *yysrc)
1444# else
1445yystpcpy (yydest, yysrc)
1446 char *yydest;
1447 const char *yysrc;
1448# endif
1449{
1450 register char *yyd = yydest;
1451 register const char *yys = yysrc;
1452
1453 while ((*yyd++ = *yys++) != '\0')
1454 continue;
1455
1456 return yyd - 1;
1457}
1458# endif
1459# endif
1460
1461#endif /* !YYERROR_VERBOSE */
1462
1463
1464
1465#if YYDEBUG
1466/*-----------------------------.
1467| Print this symbol on YYOUT. |
1468`-----------------------------*/
1469
1470static void
1471#if defined (__STDC__) || defined (__cplusplus)
1472yysymprint (FILE* yyout, int yytype, YYSTYPE yyvalue)
1473#else
1474yysymprint (yyout, yytype, yyvalue)
1475 FILE* yyout;
1476 int yytype;
1477 YYSTYPE yyvalue;
1478#endif
1479{
1480 /* Pacify ``unused variable'' warnings. */
1481 (void) yyvalue;
1482
1483 if (yytype < YYNTOKENS)
1484 {
1485 YYFPRINTF (yyout, "token %s (", yytname[yytype]);
1486# ifdef YYPRINT
1487 YYPRINT (yyout, yytoknum[yytype], yyvalue);
1488# endif
1489 }
1490 else
1491 YYFPRINTF (yyout, "nterm %s (", yytname[yytype]);
1492
1493 switch (yytype)
1494 {
1495 default:
1496 break;
1497 }
1498 YYFPRINTF (yyout, ")");
1499}
1500#endif /* YYDEBUG. */
1501
1502
1503/*-----------------------------------------------.
1504| Release the memory associated to this symbol. |
1505`-----------------------------------------------*/
1506
1507static void
1508#if defined (__STDC__) || defined (__cplusplus)
1509yydestruct (int yytype, YYSTYPE yyvalue)
1510#else
1511yydestruct (yytype, yyvalue)
1512 int yytype;
1513 YYSTYPE yyvalue;
1514#endif
1515{
1516 /* Pacify ``unused variable'' warnings. */
1517 (void) yyvalue;
1518
1519 switch (yytype)
1520 {
1521 default:
1522 break;
1523 }
vlm0c6d3812006-03-21 03:40:38 +00001524}
1525
vlm7e436752006-03-18 06:53:11 +00001526
1527
vlm0c6d3812006-03-21 03:40:38 +00001528/* The user can define YYPARSE_PARAM as the name of an argument to be passed
1529 into yyparse. The argument should have type void *.
1530 It should actually point to an object.
1531 Grammar actions can access the variable by casting it
1532 to the proper pointer type. */
vlm7e436752006-03-18 06:53:11 +00001533
1534#ifdef YYPARSE_PARAM
vlm1aeaddd2006-07-13 08:24:20 +00001535# if defined (__STDC__) || defined (__cplusplus)
1536# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
1537# define YYPARSE_PARAM_DECL
1538# else
1539# define YYPARSE_PARAM_ARG YYPARSE_PARAM
1540# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1541# endif
1542#else /* !YYPARSE_PARAM */
1543# define YYPARSE_PARAM_ARG
1544# define YYPARSE_PARAM_DECL
1545#endif /* !YYPARSE_PARAM */
vlm0c6d3812006-03-21 03:40:38 +00001546
1547/* Prevent warning if -Wstrict-prototypes. */
1548#ifdef __GNUC__
vlm1aeaddd2006-07-13 08:24:20 +00001549# ifdef YYPARSE_PARAM
vlm0c6d3812006-03-21 03:40:38 +00001550int yyparse (void *);
vlm1aeaddd2006-07-13 08:24:20 +00001551# else
vlmfa67ddc2004-06-03 03:38:44 +00001552int yyparse (void);
vlm1aeaddd2006-07-13 08:24:20 +00001553# endif
vlm7e436752006-03-18 06:53:11 +00001554#endif
vlm1aeaddd2006-07-13 08:24:20 +00001555
1556
1557/* The lookahead symbol. */
1558int yychar;
1559
1560/* The semantic value of the lookahead symbol. */
1561YYSTYPE yylval;
1562
1563/* Number of parse errors so far. */
1564int yynerrs;
1565
vlm7e436752006-03-18 06:53:11 +00001566
vlm7e436752006-03-18 06:53:11 +00001567int
vlm1aeaddd2006-07-13 08:24:20 +00001568yyparse (YYPARSE_PARAM_ARG)
vlm0c6d3812006-03-21 03:40:38 +00001569 YYPARSE_PARAM_DECL
vlm7e436752006-03-18 06:53:11 +00001570{
vlm1aeaddd2006-07-13 08:24:20 +00001571
vlm0c6d3812006-03-21 03:40:38 +00001572 register int yystate;
1573 register int yyn;
vlm1aeaddd2006-07-13 08:24:20 +00001574 int yyresult;
1575 /* Number of tokens to shift before error messages enabled. */
1576 int yyerrstatus;
1577 /* Lookahead token as an internal (translated) token number. */
1578 int yychar1 = 0;
1579
1580 /* Three stacks and their tools:
1581 `yyss': related to states,
1582 `yyvs': related to semantic values,
1583 `yyls': related to locations.
1584
1585 Refer to the stacks thru separate pointers, to allow yyoverflow
1586 to reallocate them elsewhere. */
1587
1588 /* The state stack. */
1589 short yyssa[YYINITDEPTH];
1590 short *yyss = yyssa;
vlm0c6d3812006-03-21 03:40:38 +00001591 register short *yyssp;
vlm1aeaddd2006-07-13 08:24:20 +00001592
1593 /* The semantic value stack. */
1594 YYSTYPE yyvsa[YYINITDEPTH];
1595 YYSTYPE *yyvs = yyvsa;
vlm0c6d3812006-03-21 03:40:38 +00001596 register YYSTYPE *yyvsp;
vlm7e436752006-03-18 06:53:11 +00001597
vlm7e436752006-03-18 06:53:11 +00001598
vlm7e436752006-03-18 06:53:11 +00001599
vlmfa67ddc2004-06-03 03:38:44 +00001600#define YYPOPSTACK (yyvsp--, yyssp--)
vlmfa67ddc2004-06-03 03:38:44 +00001601
vlm1aeaddd2006-07-13 08:24:20 +00001602 YYSIZE_T yystacksize = YYINITDEPTH;
vlmfa67ddc2004-06-03 03:38:44 +00001603
vlm1aeaddd2006-07-13 08:24:20 +00001604 /* The variables used to return semantic value and location from the
1605 action routines. */
1606 YYSTYPE yyval;
vlmfa67ddc2004-06-03 03:38:44 +00001607
vlmfa67ddc2004-06-03 03:38:44 +00001608
vlm1aeaddd2006-07-13 08:24:20 +00001609 /* When reducing, the number of symbols on the RHS of the reduced
1610 rule. */
vlmfa67ddc2004-06-03 03:38:44 +00001611 int yylen;
1612
vlm1aeaddd2006-07-13 08:24:20 +00001613 YYDPRINTF ((stderr, "Starting parse\n"));
vlmfa67ddc2004-06-03 03:38:44 +00001614
1615 yystate = 0;
1616 yyerrstatus = 0;
1617 yynerrs = 0;
1618 yychar = YYEMPTY; /* Cause a token to be read. */
1619
1620 /* Initialize stack pointers.
1621 Waste one element of value and location stack
1622 so that they stay on the same level as the state stack.
1623 The wasted elements are never initialized. */
1624
vlm1aeaddd2006-07-13 08:24:20 +00001625 yyssp = yyss;
vlmfa67ddc2004-06-03 03:38:44 +00001626 yyvsp = yyvs;
vlmfa67ddc2004-06-03 03:38:44 +00001627
vlm1aeaddd2006-07-13 08:24:20 +00001628 goto yysetstate;
vlmfa67ddc2004-06-03 03:38:44 +00001629
vlm1aeaddd2006-07-13 08:24:20 +00001630/*------------------------------------------------------------.
1631| yynewstate -- Push a new state, which is found in yystate. |
1632`------------------------------------------------------------*/
1633 yynewstate:
1634 /* In all cases, when you get here, the value and location stacks
1635 have just been pushed. so pushing a state here evens the stacks.
1636 */
1637 yyssp++;
1638
1639 yysetstate:
1640 *yyssp = yystate;
vlmfa67ddc2004-06-03 03:38:44 +00001641
vlm0c6d3812006-03-21 03:40:38 +00001642 if (yyssp >= yyss + yystacksize - 1)
vlmfa67ddc2004-06-03 03:38:44 +00001643 {
vlmfa67ddc2004-06-03 03:38:44 +00001644 /* Get the current used size of the three stacks, in elements. */
vlm1aeaddd2006-07-13 08:24:20 +00001645 YYSIZE_T yysize = yyssp - yyss + 1;
vlmfa67ddc2004-06-03 03:38:44 +00001646
1647#ifdef yyoverflow
vlm1aeaddd2006-07-13 08:24:20 +00001648 {
1649 /* Give user a chance to reallocate the stack. Use copies of
1650 these so that the &'s don't force the real ones into
1651 memory. */
1652 YYSTYPE *yyvs1 = yyvs;
1653 short *yyss1 = yyss;
vlmfa67ddc2004-06-03 03:38:44 +00001654
vlm1aeaddd2006-07-13 08:24:20 +00001655
1656 /* Each stack pointer address is followed by the size of the
1657 data in use in that stack, in bytes. This used to be a
1658 conditional around just the two extra args, but that might
1659 be undefined if yyoverflow is a macro. */
1660 yyoverflow ("parser stack overflow",
1661 &yyss1, yysize * sizeof (*yyssp),
1662 &yyvs1, yysize * sizeof (*yyvsp),
1663
1664 &yystacksize);
1665
1666 yyss = yyss1;
1667 yyvs = yyvs1;
1668 }
vlmfa67ddc2004-06-03 03:38:44 +00001669#else /* no yyoverflow */
vlm1aeaddd2006-07-13 08:24:20 +00001670# ifndef YYSTACK_RELOCATE
1671 goto yyoverflowlab;
1672# else
vlmfa67ddc2004-06-03 03:38:44 +00001673 /* Extend the stack our own way. */
vlm0c6d3812006-03-21 03:40:38 +00001674 if (yystacksize >= YYMAXDEPTH)
vlm1aeaddd2006-07-13 08:24:20 +00001675 goto yyoverflowlab;
vlmfa67ddc2004-06-03 03:38:44 +00001676 yystacksize *= 2;
vlm0c6d3812006-03-21 03:40:38 +00001677 if (yystacksize > YYMAXDEPTH)
vlmfa67ddc2004-06-03 03:38:44 +00001678 yystacksize = YYMAXDEPTH;
vlm1aeaddd2006-07-13 08:24:20 +00001679
1680 {
1681 short *yyss1 = yyss;
1682 union yyalloc *yyptr =
1683 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1684 if (! yyptr)
1685 goto yyoverflowlab;
1686 YYSTACK_RELOCATE (yyss);
1687 YYSTACK_RELOCATE (yyvs);
1688
1689# undef YYSTACK_RELOCATE
1690 if (yyss1 != yyssa)
1691 YYSTACK_FREE (yyss1);
1692 }
1693# endif
vlmfa67ddc2004-06-03 03:38:44 +00001694#endif /* no yyoverflow */
1695
vlm1aeaddd2006-07-13 08:24:20 +00001696 yyssp = yyss + yysize - 1;
1697 yyvsp = yyvs + yysize - 1;
vlmfa67ddc2004-06-03 03:38:44 +00001698
vlm1aeaddd2006-07-13 08:24:20 +00001699
1700 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1701 (unsigned long int) yystacksize));
vlmfa67ddc2004-06-03 03:38:44 +00001702
vlm0c6d3812006-03-21 03:40:38 +00001703 if (yyssp >= yyss + yystacksize - 1)
vlmfa67ddc2004-06-03 03:38:44 +00001704 YYABORT;
1705 }
1706
vlm1aeaddd2006-07-13 08:24:20 +00001707 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
vlmfa67ddc2004-06-03 03:38:44 +00001708
1709 goto yybackup;
vlm1aeaddd2006-07-13 08:24:20 +00001710
1711/*-----------.
1712| yybackup. |
1713`-----------*/
1714yybackup:
vlmfa67ddc2004-06-03 03:38:44 +00001715
1716/* Do appropriate processing given the current state. */
vlm0c6d3812006-03-21 03:40:38 +00001717/* Read a lookahead token if we need one and don't already have one. */
vlmfa67ddc2004-06-03 03:38:44 +00001718/* yyresume: */
1719
vlm0c6d3812006-03-21 03:40:38 +00001720 /* First try to decide what to do without reference to lookahead token. */
vlmfa67ddc2004-06-03 03:38:44 +00001721
1722 yyn = yypact[yystate];
vlm1aeaddd2006-07-13 08:24:20 +00001723 if (yyn == YYPACT_NINF)
vlmfa67ddc2004-06-03 03:38:44 +00001724 goto yydefault;
1725
vlm0c6d3812006-03-21 03:40:38 +00001726 /* Not known => get a lookahead token if don't already have one. */
vlmfa67ddc2004-06-03 03:38:44 +00001727
vlm0c6d3812006-03-21 03:40:38 +00001728 /* yychar is either YYEMPTY or YYEOF
1729 or a valid token in external form. */
1730
vlmfa67ddc2004-06-03 03:38:44 +00001731 if (yychar == YYEMPTY)
1732 {
vlm1aeaddd2006-07-13 08:24:20 +00001733 YYDPRINTF ((stderr, "Reading a token: "));
vlmfa67ddc2004-06-03 03:38:44 +00001734 yychar = YYLEX;
1735 }
1736
vlm1aeaddd2006-07-13 08:24:20 +00001737 /* Convert token to internal form (in yychar1) for indexing tables with. */
vlm0c6d3812006-03-21 03:40:38 +00001738
vlm1aeaddd2006-07-13 08:24:20 +00001739 if (yychar <= 0) /* This means end of input. */
vlmfa67ddc2004-06-03 03:38:44 +00001740 {
vlm0c6d3812006-03-21 03:40:38 +00001741 yychar1 = 0;
vlm1aeaddd2006-07-13 08:24:20 +00001742 yychar = YYEOF; /* Don't call YYLEX any more. */
vlm0c6d3812006-03-21 03:40:38 +00001743
vlm1aeaddd2006-07-13 08:24:20 +00001744 YYDPRINTF ((stderr, "Now at end of input.\n"));
vlmfa67ddc2004-06-03 03:38:44 +00001745 }
1746 else
1747 {
vlm1aeaddd2006-07-13 08:24:20 +00001748 yychar1 = YYTRANSLATE (yychar);
vlm0c6d3812006-03-21 03:40:38 +00001749
vlm1aeaddd2006-07-13 08:24:20 +00001750 /* We have to keep this `#if YYDEBUG', since we use variables
1751 which are defined only if `YYDEBUG' is set. */
1752 YYDPRINTF ((stderr, "Next token is "));
1753 YYDSYMPRINT ((stderr, yychar1, yylval));
1754 YYDPRINTF ((stderr, "\n"));
vlmfa67ddc2004-06-03 03:38:44 +00001755 }
1756
vlm1aeaddd2006-07-13 08:24:20 +00001757 /* If the proper action on seeing token YYCHAR1 is to reduce or to
1758 detect an error, take that action. */
vlm0c6d3812006-03-21 03:40:38 +00001759 yyn += yychar1;
vlm1aeaddd2006-07-13 08:24:20 +00001760 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yychar1)
vlmfa67ddc2004-06-03 03:38:44 +00001761 goto yydefault;
vlmfa67ddc2004-06-03 03:38:44 +00001762 yyn = yytable[yyn];
vlm1aeaddd2006-07-13 08:24:20 +00001763 if (yyn <= 0)
vlmfa67ddc2004-06-03 03:38:44 +00001764 {
vlm1aeaddd2006-07-13 08:24:20 +00001765 if (yyn == 0 || yyn == YYTABLE_NINF)
vlmfa67ddc2004-06-03 03:38:44 +00001766 goto yyerrlab;
1767 yyn = -yyn;
1768 goto yyreduce;
1769 }
vlmfa67ddc2004-06-03 03:38:44 +00001770
1771 if (yyn == YYFINAL)
1772 YYACCEPT;
1773
vlm0c6d3812006-03-21 03:40:38 +00001774 /* Shift the lookahead token. */
vlm1aeaddd2006-07-13 08:24:20 +00001775 YYDPRINTF ((stderr, "Shifting token %d (%s), ",
1776 yychar, yytname[yychar1]));
vlmfa67ddc2004-06-03 03:38:44 +00001777
1778 /* Discard the token being shifted unless it is eof. */
1779 if (yychar != YYEOF)
1780 yychar = YYEMPTY;
1781
1782 *++yyvsp = yylval;
vlmfa67ddc2004-06-03 03:38:44 +00001783
vlm1aeaddd2006-07-13 08:24:20 +00001784
1785 /* Count tokens shifted since error; after three, turn off error
1786 status. */
1787 if (yyerrstatus)
1788 yyerrstatus--;
vlmfa67ddc2004-06-03 03:38:44 +00001789
1790 yystate = yyn;
1791 goto yynewstate;
1792
vlm0c6d3812006-03-21 03:40:38 +00001793
vlm1aeaddd2006-07-13 08:24:20 +00001794/*-----------------------------------------------------------.
1795| yydefault -- do the default action for the current state. |
1796`-----------------------------------------------------------*/
1797yydefault:
vlmfa67ddc2004-06-03 03:38:44 +00001798 yyn = yydefact[yystate];
1799 if (yyn == 0)
1800 goto yyerrlab;
vlm1aeaddd2006-07-13 08:24:20 +00001801 goto yyreduce;
vlmfa67ddc2004-06-03 03:38:44 +00001802
vlm1aeaddd2006-07-13 08:24:20 +00001803
1804/*-----------------------------.
1805| yyreduce -- Do a reduction. |
1806`-----------------------------*/
vlmfa67ddc2004-06-03 03:38:44 +00001807yyreduce:
vlm1aeaddd2006-07-13 08:24:20 +00001808 /* yyn is the number of a rule to reduce with. */
vlmfa67ddc2004-06-03 03:38:44 +00001809 yylen = yyr2[yyn];
vlmfa67ddc2004-06-03 03:38:44 +00001810
vlm1aeaddd2006-07-13 08:24:20 +00001811 /* If YYLEN is nonzero, implement the default value of the action:
1812 `$$ = $1'.
1813
1814 Otherwise, the following line sets YYVAL to garbage.
1815 This behavior is undocumented and Bison
1816 users should not rely upon it. Assigning to YYVAL
1817 unconditionally makes the parser a bit smaller, and it avoids a
1818 GCC warning that YYVAL may be used uninitialized. */
1819 yyval = yyvsp[1-yylen];
1820
1821
1822
1823#if YYDEBUG
1824 /* We have to keep this `#if YYDEBUG', since we use variables which
1825 are defined only if `YYDEBUG' is set. */
vlm0c6d3812006-03-21 03:40:38 +00001826 if (yydebug)
vlmfa67ddc2004-06-03 03:38:44 +00001827 {
vlm1aeaddd2006-07-13 08:24:20 +00001828 int yyi;
vlm0c6d3812006-03-21 03:40:38 +00001829
vlm1aeaddd2006-07-13 08:24:20 +00001830 YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
1831 yyn - 1, yyrline[yyn]);
vlm0c6d3812006-03-21 03:40:38 +00001832
1833 /* Print the symbols being reduced, and their result. */
vlm1aeaddd2006-07-13 08:24:20 +00001834 for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++)
1835 YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
1836 YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
vlm0c6d3812006-03-21 03:40:38 +00001837 }
1838#endif
vlm1aeaddd2006-07-13 08:24:20 +00001839 switch (yyn)
1840 {
1841 case 2:
vlm1bc782f2006-09-21 01:50:37 +00001842#line 353 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001843 {
vlm0c6d3812006-03-21 03:40:38 +00001844 *(void **)param = yyvsp[0].a_grammar;
vlm1aeaddd2006-07-13 08:24:20 +00001845 }
1846 break;
1847
1848 case 3:
vlm1bc782f2006-09-21 01:50:37 +00001849#line 359 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001850 {
vlm0c6d3812006-03-21 03:40:38 +00001851 yyval.a_grammar = asn1p_new();
1852 checkmem(yyval.a_grammar);
1853 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm1aeaddd2006-07-13 08:24:20 +00001854 }
1855 break;
1856
1857 case 4:
vlm1bc782f2006-09-21 01:50:37 +00001858#line 364 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001859 {
vlm0c6d3812006-03-21 03:40:38 +00001860 yyval.a_grammar = yyvsp[-1].a_grammar;
1861 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm1aeaddd2006-07-13 08:24:20 +00001862 }
1863 break;
1864
1865 case 5:
vlm1bc782f2006-09-21 01:50:37 +00001866#line 381 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00001867 { currentModule = asn1p_module_new(); }
1868 break;
1869
1870 case 6:
vlm1bc782f2006-09-21 01:50:37 +00001871#line 386 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001872 {
vlm7e436752006-03-18 06:53:11 +00001873
vlm43c8ac52006-09-17 04:52:50 +00001874 yyval.a_module = currentModule;
1875
vlm0c6d3812006-03-21 03:40:38 +00001876 if(yyvsp[-1].a_module) {
vlm43c8ac52006-09-17 04:52:50 +00001877 asn1p_module_t tmp = *(yyval.a_module);
1878 *(yyval.a_module) = *(yyvsp[-1].a_module);
1879 *(yyvsp[-1].a_module) = tmp;
1880 asn1p_module_free(yyvsp[-1].a_module);
vlmfa67ddc2004-06-03 03:38:44 +00001881 } else {
1882 /* There's a chance that a module is just plain empty */
vlmfa67ddc2004-06-03 03:38:44 +00001883 }
vlmfa67ddc2004-06-03 03:38:44 +00001884
vlm43c8ac52006-09-17 04:52:50 +00001885 yyval.a_module->ModuleName = yyvsp[-8].tv_str;
vlm0c6d3812006-03-21 03:40:38 +00001886 yyval.a_module->module_oid = yyvsp[-6].a_oid;
1887 yyval.a_module->module_flags = yyvsp[-4].a_module_flags;
vlm1aeaddd2006-07-13 08:24:20 +00001888 }
1889 break;
1890
vlm43c8ac52006-09-17 04:52:50 +00001891 case 7:
vlm1bc782f2006-09-21 01:50:37 +00001892#line 410 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001893 { yyval.a_oid = 0; }
1894 break;
1895
vlm43c8ac52006-09-17 04:52:50 +00001896 case 8:
vlm1bc782f2006-09-21 01:50:37 +00001897#line 411 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001898 { yyval.a_oid = yyvsp[0].a_oid; }
1899 break;
1900
vlm43c8ac52006-09-17 04:52:50 +00001901 case 9:
vlm1bc782f2006-09-21 01:50:37 +00001902#line 415 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001903 {
vlm0c6d3812006-03-21 03:40:38 +00001904 yyval.a_oid = yyvsp[-1].a_oid;
vlm1aeaddd2006-07-13 08:24:20 +00001905 }
1906 break;
1907
vlm43c8ac52006-09-17 04:52:50 +00001908 case 10:
vlm1bc782f2006-09-21 01:50:37 +00001909#line 418 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001910 {
vlm0c6d3812006-03-21 03:40:38 +00001911 yyval.a_oid = 0;
vlm1aeaddd2006-07-13 08:24:20 +00001912 }
1913 break;
1914
vlm43c8ac52006-09-17 04:52:50 +00001915 case 11:
vlm1bc782f2006-09-21 01:50:37 +00001916#line 424 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001917 {
vlm0c6d3812006-03-21 03:40:38 +00001918 yyval.a_oid = asn1p_oid_new();
1919 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1920 if(yyvsp[0].a_oid_arc.name)
1921 free(yyvsp[0].a_oid_arc.name);
vlm1aeaddd2006-07-13 08:24:20 +00001922 }
1923 break;
1924
vlm43c8ac52006-09-17 04:52:50 +00001925 case 12:
vlm1bc782f2006-09-21 01:50:37 +00001926#line 430 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001927 {
vlm0c6d3812006-03-21 03:40:38 +00001928 yyval.a_oid = yyvsp[-1].a_oid;
1929 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1930 if(yyvsp[0].a_oid_arc.name)
1931 free(yyvsp[0].a_oid_arc.name);
vlm1aeaddd2006-07-13 08:24:20 +00001932 }
1933 break;
1934
vlm43c8ac52006-09-17 04:52:50 +00001935 case 13:
vlm1bc782f2006-09-21 01:50:37 +00001936#line 439 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001937 { /* iso */
vlm0c6d3812006-03-21 03:40:38 +00001938 yyval.a_oid_arc.name = yyvsp[0].tv_str;
1939 yyval.a_oid_arc.number = -1;
vlm1aeaddd2006-07-13 08:24:20 +00001940 }
1941 break;
1942
vlm43c8ac52006-09-17 04:52:50 +00001943 case 14:
vlm1bc782f2006-09-21 01:50:37 +00001944#line 443 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001945 { /* iso(1) */
vlm0c6d3812006-03-21 03:40:38 +00001946 yyval.a_oid_arc.name = yyvsp[-3].tv_str;
1947 yyval.a_oid_arc.number = yyvsp[-1].a_int;
vlm1aeaddd2006-07-13 08:24:20 +00001948 }
1949 break;
1950
vlm43c8ac52006-09-17 04:52:50 +00001951 case 15:
vlm1bc782f2006-09-21 01:50:37 +00001952#line 447 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001953 { /* 1 */
vlm0c6d3812006-03-21 03:40:38 +00001954 yyval.a_oid_arc.name = 0;
1955 yyval.a_oid_arc.number = yyvsp[0].a_int;
vlm1aeaddd2006-07-13 08:24:20 +00001956 }
1957 break;
1958
vlm43c8ac52006-09-17 04:52:50 +00001959 case 16:
vlm1bc782f2006-09-21 01:50:37 +00001960#line 457 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001961 { yyval.a_module_flags = MSF_NOFLAGS; }
1962 break;
1963
vlm1aeaddd2006-07-13 08:24:20 +00001964 case 17:
vlm1bc782f2006-09-21 01:50:37 +00001965#line 458 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001966 {
vlm0c6d3812006-03-21 03:40:38 +00001967 yyval.a_module_flags = yyvsp[0].a_module_flags;
vlm1aeaddd2006-07-13 08:24:20 +00001968 }
1969 break;
1970
1971 case 18:
vlm1bc782f2006-09-21 01:50:37 +00001972#line 467 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00001973 {
1974 yyval.a_module_flags = yyvsp[0].a_module_flags;
1975 }
1976 break;
1977
1978 case 19:
vlm1bc782f2006-09-21 01:50:37 +00001979#line 470 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001980 {
vlm0c6d3812006-03-21 03:40:38 +00001981 yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
vlm1aeaddd2006-07-13 08:24:20 +00001982 }
1983 break;
1984
vlm43c8ac52006-09-17 04:52:50 +00001985 case 20:
vlm1bc782f2006-09-21 01:50:37 +00001986#line 479 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001987 {
vlm0c6d3812006-03-21 03:40:38 +00001988 yyval.a_module_flags = MSF_EXPLICIT_TAGS;
vlm1aeaddd2006-07-13 08:24:20 +00001989 }
1990 break;
1991
vlm43c8ac52006-09-17 04:52:50 +00001992 case 21:
vlm1bc782f2006-09-21 01:50:37 +00001993#line 482 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001994 {
vlm0c6d3812006-03-21 03:40:38 +00001995 yyval.a_module_flags = MSF_IMPLICIT_TAGS;
vlm1aeaddd2006-07-13 08:24:20 +00001996 }
1997 break;
1998
vlm43c8ac52006-09-17 04:52:50 +00001999 case 22:
vlm1bc782f2006-09-21 01:50:37 +00002000#line 485 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002001 {
vlm0c6d3812006-03-21 03:40:38 +00002002 yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
vlm1aeaddd2006-07-13 08:24:20 +00002003 }
2004 break;
2005
vlm43c8ac52006-09-17 04:52:50 +00002006 case 23:
vlm1bc782f2006-09-21 01:50:37 +00002007#line 488 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002008 {
vlm0c6d3812006-03-21 03:40:38 +00002009 yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
vlm1aeaddd2006-07-13 08:24:20 +00002010 }
2011 break;
2012
vlm43c8ac52006-09-17 04:52:50 +00002013 case 24:
vlm1bc782f2006-09-21 01:50:37 +00002014#line 492 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002015 {
vlm9283dbe2004-08-18 04:59:12 +00002016 /* X.680Amd1 specifies TAG and XER */
vlm0c6d3812006-03-21 03:40:38 +00002017 if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
2018 yyval.a_module_flags = MSF_TAG_INSTRUCTIONS;
2019 } else if(strcmp(yyvsp[-1].tv_str, "XER") == 0) {
2020 yyval.a_module_flags = MSF_XER_INSTRUCTIONS;
vlm9283dbe2004-08-18 04:59:12 +00002021 } else {
2022 fprintf(stderr,
2023 "WARNING: %s INSTRUCTIONS at line %d: "
2024 "Unrecognized encoding reference\n",
vlm0c6d3812006-03-21 03:40:38 +00002025 yyvsp[-1].tv_str, yylineno);
2026 yyval.a_module_flags = MSF_unk_INSTRUCTIONS;
vlm9283dbe2004-08-18 04:59:12 +00002027 }
vlm0c6d3812006-03-21 03:40:38 +00002028 free(yyvsp[-1].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00002029 }
2030 break;
2031
vlm43c8ac52006-09-17 04:52:50 +00002032 case 25:
vlm1bc782f2006-09-21 01:50:37 +00002033#line 513 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002034 { yyval.a_module = 0; }
2035 break;
2036
vlm43c8ac52006-09-17 04:52:50 +00002037 case 26:
vlm1bc782f2006-09-21 01:50:37 +00002038#line 514 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002039 {
vlm0c6d3812006-03-21 03:40:38 +00002040 yyval.a_module = yyvsp[0].a_module;
vlm1aeaddd2006-07-13 08:24:20 +00002041 }
2042 break;
2043
vlm43c8ac52006-09-17 04:52:50 +00002044 case 27:
vlm1bc782f2006-09-21 01:50:37 +00002045#line 523 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002046 {
vlmd3420d32006-09-14 10:35:20 +00002047 yyval.a_module = asn1p_module_new();
2048 AL_IMPORT(yyval.a_module, exports, yyvsp[-2].a_module, xp_next);
2049 AL_IMPORT(yyval.a_module, imports, yyvsp[-1].a_module, xp_next);
2050 AL_IMPORT(yyval.a_module, members, yyvsp[0].a_module, next);
vlm1aeaddd2006-07-13 08:24:20 +00002051 }
2052 break;
2053
vlm43c8ac52006-09-17 04:52:50 +00002054 case 28:
vlm1bc782f2006-09-21 01:50:37 +00002055#line 532 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002056 {
vlm0c6d3812006-03-21 03:40:38 +00002057 yyval.a_module = yyvsp[0].a_module;
vlm1aeaddd2006-07-13 08:24:20 +00002058 }
2059 break;
2060
vlm43c8ac52006-09-17 04:52:50 +00002061 case 29:
vlm1bc782f2006-09-21 01:50:37 +00002062#line 535 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002063 {
2064 if(yyvsp[-1].a_module) {
2065 yyval.a_module = yyvsp[-1].a_module;
2066 } else {
2067 yyval.a_module = yyvsp[0].a_module;
2068 break;
2069 }
2070 AL_IMPORT(yyval.a_module, members, yyvsp[0].a_module, next);
2071 }
2072 break;
2073
vlm1aeaddd2006-07-13 08:24:20 +00002074 case 30:
vlm1bc782f2006-09-21 01:50:37 +00002075#line 551 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002076 {
vlm0c6d3812006-03-21 03:40:38 +00002077 yyval.a_module = asn1p_module_new();
2078 checkmem(yyval.a_module);
2079 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
2080 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
2081 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002082 }
2083 break;
2084
2085 case 31:
vlm1bc782f2006-09-21 01:50:37 +00002086#line 558 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002087 {
vlm0c6d3812006-03-21 03:40:38 +00002088 yyval.a_module = asn1p_module_new();
2089 checkmem(yyval.a_module);
2090 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
2091 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
2092 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002093 }
2094 break;
2095
2096 case 32:
vlm1bc782f2006-09-21 01:50:37 +00002097#line 571 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002098 {
2099 yyval.a_module = asn1p_module_new();
2100 checkmem(yyval.a_module);
2101 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
2102 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
2103 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
2104 }
vlm1aeaddd2006-07-13 08:24:20 +00002105 break;
2106
vlmd3420d32006-09-14 10:35:20 +00002107 case 33:
vlm1bc782f2006-09-21 01:50:37 +00002108#line 579 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002109 { asn1p_lexer_hack_push_encoding_control(); }
2110 break;
2111
2112 case 34:
vlm1bc782f2006-09-21 01:50:37 +00002113#line 580 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002114 {
vlm9283dbe2004-08-18 04:59:12 +00002115 fprintf(stderr,
2116 "WARNING: ENCODING-CONTROL %s "
2117 "specification at line %d ignored\n",
vlm0c6d3812006-03-21 03:40:38 +00002118 yyvsp[-1].tv_str, yylineno);
2119 free(yyvsp[-1].tv_str);
2120 yyval.a_module = 0;
vlm1aeaddd2006-07-13 08:24:20 +00002121 }
2122 break;
2123
vlm43c8ac52006-09-17 04:52:50 +00002124 case 35:
vlm1bc782f2006-09-21 01:50:37 +00002125#line 592 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002126 {
vlmfa67ddc2004-06-03 03:38:44 +00002127 return yyerror(
vlm1ac75e72005-11-26 11:21:55 +00002128 "Attempt to redefine a standard basic string type, "
2129 "please comment out or remove this type redefinition.");
vlm1aeaddd2006-07-13 08:24:20 +00002130 }
2131 break;
2132
vlm43c8ac52006-09-17 04:52:50 +00002133 case 36:
vlm1bc782f2006-09-21 01:50:37 +00002134#line 605 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002135 { yyval.a_module = 0; }
2136 break;
2137
vlm43c8ac52006-09-17 04:52:50 +00002138 case 38:
vlm1bc782f2006-09-21 01:50:37 +00002139#line 609 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002140 {
vlm931aeed2005-08-12 10:09:10 +00002141 if(!saved_aid && 0)
2142 return yyerror("Unterminated IMPORTS FROM, "
2143 "expected semicolon ';'");
2144 saved_aid = 0;
vlm0c6d3812006-03-21 03:40:38 +00002145 yyval.a_module = yyvsp[-1].a_module;
vlm1aeaddd2006-07-13 08:24:20 +00002146 }
2147 break;
2148
vlm43c8ac52006-09-17 04:52:50 +00002149 case 39:
vlm1bc782f2006-09-21 01:50:37 +00002150#line 619 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002151 {
vlmfa67ddc2004-06-03 03:38:44 +00002152 return yyerror("Empty IMPORTS list");
vlm1aeaddd2006-07-13 08:24:20 +00002153 }
2154 break;
2155
vlm43c8ac52006-09-17 04:52:50 +00002156 case 40:
vlm1bc782f2006-09-21 01:50:37 +00002157#line 625 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002158 {
vlm0c6d3812006-03-21 03:40:38 +00002159 yyval.a_module = asn1p_module_new();
2160 checkmem(yyval.a_module);
2161 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm1aeaddd2006-07-13 08:24:20 +00002162 }
2163 break;
2164
vlm43c8ac52006-09-17 04:52:50 +00002165 case 41:
vlm1bc782f2006-09-21 01:50:37 +00002166#line 630 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002167 {
vlm0c6d3812006-03-21 03:40:38 +00002168 yyval.a_module = yyvsp[-1].a_module;
2169 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm1aeaddd2006-07-13 08:24:20 +00002170 }
2171 break;
2172
vlm43c8ac52006-09-17 04:52:50 +00002173 case 42:
vlm1bc782f2006-09-21 01:50:37 +00002174#line 637 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002175 { memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); }
2176 break;
2177
vlm43c8ac52006-09-17 04:52:50 +00002178 case 43:
vlm1bc782f2006-09-21 01:50:37 +00002179#line 638 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002180 { yyval.a_aid.oid = yyvsp[0].a_oid; }
2181 break;
2182
vlm43c8ac52006-09-17 04:52:50 +00002183 case 44:
vlm1bc782f2006-09-21 01:50:37 +00002184#line 642 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002185 {
vlm0c6d3812006-03-21 03:40:38 +00002186 yyval.a_xports = yyvsp[-3].a_xports;
2187 yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
2188 yyval.a_xports->identifier = yyvsp[0].a_aid;
vlm931aeed2005-08-12 10:09:10 +00002189 /* This stupid thing is used for look-back hack. */
vlm0c6d3812006-03-21 03:40:38 +00002190 saved_aid = yyval.a_xports->identifier.oid ? 0 : &(yyval.a_xports->identifier);
2191 checkmem(yyval.a_xports);
vlm1aeaddd2006-07-13 08:24:20 +00002192 }
2193 break;
2194
vlm43c8ac52006-09-17 04:52:50 +00002195 case 45:
vlm1bc782f2006-09-21 01:50:37 +00002196#line 653 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002197 {
vlm0c6d3812006-03-21 03:40:38 +00002198 yyval.a_xports = asn1p_xports_new();
2199 checkmem(yyval.a_xports);
2200 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002201 }
2202 break;
2203
vlm43c8ac52006-09-17 04:52:50 +00002204 case 46:
vlm1bc782f2006-09-21 01:50:37 +00002205#line 658 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002206 {
vlm0c6d3812006-03-21 03:40:38 +00002207 yyval.a_xports = yyvsp[-2].a_xports;
2208 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002209 }
2210 break;
2211
vlm43c8ac52006-09-17 04:52:50 +00002212 case 47:
vlm1bc782f2006-09-21 01:50:37 +00002213#line 665 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002214 {
vlm43c8ac52006-09-17 04:52:50 +00002215 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002216 checkmem(yyval.a_expr);
2217 yyval.a_expr->Identifier = yyvsp[0].tv_str;
2218 yyval.a_expr->expr_type = A1TC_REFERENCE;
vlm1aeaddd2006-07-13 08:24:20 +00002219 }
2220 break;
2221
vlm43c8ac52006-09-17 04:52:50 +00002222 case 48:
vlm1bc782f2006-09-21 01:50:37 +00002223#line 671 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002224 { /* Completely equivalent to above */
vlm43c8ac52006-09-17 04:52:50 +00002225 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002226 checkmem(yyval.a_expr);
2227 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2228 yyval.a_expr->expr_type = A1TC_REFERENCE;
vlm1aeaddd2006-07-13 08:24:20 +00002229 }
2230 break;
2231
vlm43c8ac52006-09-17 04:52:50 +00002232 case 49:
vlm1bc782f2006-09-21 01:50:37 +00002233#line 677 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002234 {
vlm43c8ac52006-09-17 04:52:50 +00002235 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002236 checkmem(yyval.a_expr);
2237 yyval.a_expr->Identifier = yyvsp[0].tv_str;
2238 yyval.a_expr->expr_type = A1TC_REFERENCE;
vlm1aeaddd2006-07-13 08:24:20 +00002239 }
2240 break;
2241
vlm43c8ac52006-09-17 04:52:50 +00002242 case 50:
vlm1bc782f2006-09-21 01:50:37 +00002243#line 687 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002244 { yyval.a_module = 0; }
2245 break;
2246
vlm43c8ac52006-09-17 04:52:50 +00002247 case 51:
vlm1bc782f2006-09-21 01:50:37 +00002248#line 688 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002249 {
2250 yyval.a_module = asn1p_module_new();
2251 checkmem(yyval.a_module);
2252 if(yyvsp[0].a_xports) {
2253 TQ_ADD(&(yyval.a_module->exports), yyvsp[0].a_xports, xp_next);
2254 } else {
2255 /* "EXPORTS ALL;" */
2256 }
2257 }
2258 break;
2259
vlm43c8ac52006-09-17 04:52:50 +00002260 case 52:
vlm1bc782f2006-09-21 01:50:37 +00002261#line 700 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002262 {
vlm0c6d3812006-03-21 03:40:38 +00002263 yyval.a_xports = yyvsp[-1].a_xports;
vlm1aeaddd2006-07-13 08:24:20 +00002264 }
2265 break;
2266
vlm43c8ac52006-09-17 04:52:50 +00002267 case 53:
vlm1bc782f2006-09-21 01:50:37 +00002268#line 703 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002269 {
vlm0c6d3812006-03-21 03:40:38 +00002270 yyval.a_xports = 0;
vlm1aeaddd2006-07-13 08:24:20 +00002271 }
2272 break;
2273
vlm43c8ac52006-09-17 04:52:50 +00002274 case 54:
vlm1bc782f2006-09-21 01:50:37 +00002275#line 706 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002276 {
vlmfa67ddc2004-06-03 03:38:44 +00002277 /* Empty EXPORTS clause effectively prohibits export. */
vlm0c6d3812006-03-21 03:40:38 +00002278 yyval.a_xports = asn1p_xports_new();
2279 checkmem(yyval.a_xports);
vlm1aeaddd2006-07-13 08:24:20 +00002280 }
2281 break;
2282
vlm43c8ac52006-09-17 04:52:50 +00002283 case 55:
vlm1bc782f2006-09-21 01:50:37 +00002284#line 714 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002285 {
vlm0c6d3812006-03-21 03:40:38 +00002286 yyval.a_xports = asn1p_xports_new();
2287 assert(yyval.a_xports);
2288 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002289 }
2290 break;
2291
vlm43c8ac52006-09-17 04:52:50 +00002292 case 56:
vlm1bc782f2006-09-21 01:50:37 +00002293#line 719 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002294 {
vlm0c6d3812006-03-21 03:40:38 +00002295 yyval.a_xports = yyvsp[-2].a_xports;
2296 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002297 }
2298 break;
2299
vlm43c8ac52006-09-17 04:52:50 +00002300 case 57:
vlm1bc782f2006-09-21 01:50:37 +00002301#line 726 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002302 {
vlm43c8ac52006-09-17 04:52:50 +00002303 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002304 checkmem(yyval.a_expr);
2305 yyval.a_expr->Identifier = yyvsp[0].tv_str;
2306 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
vlm1aeaddd2006-07-13 08:24:20 +00002307 }
2308 break;
2309
vlm43c8ac52006-09-17 04:52:50 +00002310 case 58:
vlm1bc782f2006-09-21 01:50:37 +00002311#line 732 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002312 {
vlm43c8ac52006-09-17 04:52:50 +00002313 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002314 checkmem(yyval.a_expr);
2315 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2316 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
vlm1aeaddd2006-07-13 08:24:20 +00002317 }
2318 break;
2319
vlm43c8ac52006-09-17 04:52:50 +00002320 case 59:
vlm1bc782f2006-09-21 01:50:37 +00002321#line 738 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002322 {
vlm43c8ac52006-09-17 04:52:50 +00002323 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002324 checkmem(yyval.a_expr);
2325 yyval.a_expr->Identifier = yyvsp[0].tv_str;
2326 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
vlm1aeaddd2006-07-13 08:24:20 +00002327 }
2328 break;
2329
vlm43c8ac52006-09-17 04:52:50 +00002330 case 60:
vlm1bc782f2006-09-21 01:50:37 +00002331#line 747 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002332 { yyval.a_constr = yyvsp[-1].a_constr; }
2333 break;
2334
vlm43c8ac52006-09-17 04:52:50 +00002335 case 61:
vlm1bc782f2006-09-21 01:50:37 +00002336#line 750 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002337 {
vlm59b620a2006-03-21 07:46:48 +00002338 yyval.a_expr = yyvsp[-2].a_expr;
vlm0c6d3812006-03-21 03:40:38 +00002339 assert(yyval.a_expr->Identifier == 0);
vlm59b620a2006-03-21 07:46:48 +00002340 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
vlm0c6d3812006-03-21 03:40:38 +00002341 yyval.a_expr->meta_type = AMT_VALUESET;
vlm59b620a2006-03-21 07:46:48 +00002342 yyval.a_expr->constraints = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00002343 }
2344 break;
2345
vlm43c8ac52006-09-17 04:52:50 +00002346 case 62:
vlm1bc782f2006-09-21 01:50:37 +00002347#line 760 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002348 {
vlm17e65d02006-03-21 04:48:15 +00002349 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002350 }
2351 break;
2352
vlm43c8ac52006-09-17 04:52:50 +00002353 case 63:
vlm1bc782f2006-09-21 01:50:37 +00002354#line 773 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002355 {
vlm43c8ac52006-09-17 04:52:50 +00002356 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002357 checkmem(yyval.a_expr);
2358 yyval.a_expr->reference = yyvsp[0].a_ref;
2359 yyval.a_expr->expr_type = A1TC_REFERENCE;
2360 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm1aeaddd2006-07-13 08:24:20 +00002361 }
2362 break;
2363
vlm43c8ac52006-09-17 04:52:50 +00002364 case 64:
vlm1bc782f2006-09-21 01:50:37 +00002365#line 783 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002366 {
vlm43c8ac52006-09-17 04:52:50 +00002367 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002368 checkmem(yyval.a_expr);
vlm17e65d02006-03-21 04:48:15 +00002369 yyval.a_expr->reference = yyvsp[-3].a_ref;
2370 yyval.a_expr->rhs_pspecs = yyvsp[-1].a_expr;
2371 yyval.a_expr->expr_type = A1TC_REFERENCE;
2372 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm1aeaddd2006-07-13 08:24:20 +00002373 }
2374 break;
2375
vlm43c8ac52006-09-17 04:52:50 +00002376 case 65:
vlm1bc782f2006-09-21 01:50:37 +00002377#line 803 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002378 {
vlm0c6d3812006-03-21 03:40:38 +00002379 yyval.a_expr = yyvsp[0].a_expr;
2380 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2381 assert(yyval.a_expr->expr_type);
2382 assert(yyval.a_expr->meta_type);
vlm1aeaddd2006-07-13 08:24:20 +00002383 }
2384 break;
2385
vlm43c8ac52006-09-17 04:52:50 +00002386 case 66:
vlm1bc782f2006-09-21 01:50:37 +00002387#line 809 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002388 {
vlm0c6d3812006-03-21 03:40:38 +00002389 yyval.a_expr = yyvsp[0].a_expr;
2390 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2391 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
2392 assert(yyval.a_expr->meta_type == AMT_OBJECTCLASS);
vlm1aeaddd2006-07-13 08:24:20 +00002393 }
2394 break;
2395
vlmd3420d32006-09-14 10:35:20 +00002396 case 67:
vlm1bc782f2006-09-21 01:50:37 +00002397#line 825 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002398 {
2399 yyval.a_expr = yyvsp[0].a_expr;
2400 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
2401 yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
2402 }
2403 break;
2404
2405 case 68:
vlm1bc782f2006-09-21 01:50:37 +00002406#line 831 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002407 {
2408 yyval.a_expr = yyvsp[0].a_expr;
2409 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
2410 yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
2411 }
2412 break;
2413
2414 case 69:
vlm1bc782f2006-09-21 01:50:37 +00002415#line 839 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002416 {
vlmfa67ddc2004-06-03 03:38:44 +00002417 int ret;
vlm0c6d3812006-03-21 03:40:38 +00002418 yyval.a_plist = asn1p_paramlist_new(yylineno);
2419 checkmem(yyval.a_plist);
2420 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
vlmfa67ddc2004-06-03 03:38:44 +00002421 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00002422 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
2423 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm1aeaddd2006-07-13 08:24:20 +00002424 }
2425 break;
2426
vlm43c8ac52006-09-17 04:52:50 +00002427 case 70:
vlm1bc782f2006-09-21 01:50:37 +00002428#line 848 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002429 {
vlmfa67ddc2004-06-03 03:38:44 +00002430 int ret;
vlm0c6d3812006-03-21 03:40:38 +00002431 yyval.a_plist = yyvsp[-2].a_plist;
2432 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
vlmfa67ddc2004-06-03 03:38:44 +00002433 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00002434 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
2435 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm1aeaddd2006-07-13 08:24:20 +00002436 }
2437 break;
2438
vlm43c8ac52006-09-17 04:52:50 +00002439 case 71:
vlm1bc782f2006-09-21 01:50:37 +00002440#line 859 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002441 {
vlm0c6d3812006-03-21 03:40:38 +00002442 yyval.a_parg.governor = NULL;
2443 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00002444 }
2445 break;
2446
vlm1aeaddd2006-07-13 08:24:20 +00002447 case 72:
vlm1bc782f2006-09-21 01:50:37 +00002448#line 863 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002449 {
2450 int ret;
2451 yyval.a_parg.governor = asn1p_ref_new(yylineno);
2452 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
2453 checkmem(ret == 0);
2454 yyval.a_parg.argument = yyvsp[0].tv_str;
2455 }
2456 break;
2457
2458 case 73:
vlm1bc782f2006-09-21 01:50:37 +00002459#line 870 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002460 {
2461 int ret;
2462 yyval.a_parg.governor = asn1p_ref_new(yylineno);
vlm43c8ac52006-09-17 04:52:50 +00002463 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
vlmd3420d32006-09-14 10:35:20 +00002464 checkmem(ret == 0);
2465 yyval.a_parg.argument = yyvsp[0].tv_str;
2466 }
2467 break;
2468
2469 case 74:
vlm1bc782f2006-09-21 01:50:37 +00002470#line 877 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002471 {
2472 int ret;
2473 yyval.a_parg.governor = asn1p_ref_new(yylineno);
2474 ret = asn1p_ref_add_component(yyval.a_parg.governor,
2475 ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
2476 checkmem(ret == 0);
2477 yyval.a_parg.argument = yyvsp[0].tv_str;
2478 }
2479 break;
2480
2481 case 75:
vlm1bc782f2006-09-21 01:50:37 +00002482#line 885 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002483 {
vlm43c8ac52006-09-17 04:52:50 +00002484 int ret;
2485 yyval.a_parg.governor = asn1p_ref_new(yylineno);
2486 ret = asn1p_ref_add_component(yyval.a_parg.governor,
2487 ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
2488 checkmem(ret == 0);
2489 yyval.a_parg.argument = yyvsp[0].tv_str;
2490 }
2491 break;
2492
2493 case 76:
vlm1bc782f2006-09-21 01:50:37 +00002494#line 896 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002495 {
2496 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002497 checkmem(yyval.a_expr);
2498 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002499 }
2500 break;
2501
vlm43c8ac52006-09-17 04:52:50 +00002502 case 77:
vlm1bc782f2006-09-21 01:50:37 +00002503#line 901 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002504 {
vlm0c6d3812006-03-21 03:40:38 +00002505 yyval.a_expr = yyvsp[-2].a_expr;
2506 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002507 }
2508 break;
2509
vlm43c8ac52006-09-17 04:52:50 +00002510 case 78:
vlm1bc782f2006-09-21 01:50:37 +00002511#line 908 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002512 {
vlm0c6d3812006-03-21 03:40:38 +00002513 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002514 }
2515 break;
2516
vlm43c8ac52006-09-17 04:52:50 +00002517 case 79:
vlm1bc782f2006-09-21 01:50:37 +00002518#line 911 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002519 {
vlm43c8ac52006-09-17 04:52:50 +00002520 yyval.a_expr = NEW_EXPR();
vlm17e65d02006-03-21 04:48:15 +00002521 checkmem(yyval.a_expr);
2522 yyval.a_expr->Identifier = "?";
2523 yyval.a_expr->expr_type = A1TC_REFERENCE;
2524 yyval.a_expr->meta_type = AMT_VALUE;
2525 yyval.a_expr->value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00002526 }
2527 break;
2528
vlm43c8ac52006-09-17 04:52:50 +00002529 case 80:
vlm1bc782f2006-09-21 01:50:37 +00002530#line 919 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002531 {
vlm0c6d3812006-03-21 03:40:38 +00002532 asn1p_ref_t *ref;
vlm43c8ac52006-09-17 04:52:50 +00002533 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002534 checkmem(yyval.a_expr);
2535 yyval.a_expr->Identifier = yyvsp[0].tv_str;
2536 yyval.a_expr->expr_type = A1TC_REFERENCE;
2537 yyval.a_expr->meta_type = AMT_VALUE;
2538 ref = asn1p_ref_new(yylineno);
2539 asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
2540 yyval.a_expr->value = asn1p_value_fromref(ref, 0);
vlm1aeaddd2006-07-13 08:24:20 +00002541 }
2542 break;
2543
vlm43c8ac52006-09-17 04:52:50 +00002544 case 81:
vlm1bc782f2006-09-21 01:50:37 +00002545#line 930 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002546 {
vlm43c8ac52006-09-17 04:52:50 +00002547 yyval.a_expr = NEW_EXPR();
vlmdfbff8c2006-03-21 09:41:28 +00002548 yyval.a_expr->expr_type = A1TC_VALUESET;
2549 yyval.a_expr->meta_type = AMT_VALUESET;
2550 yyval.a_expr->constraints = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00002551 }
2552 break;
2553
vlmd3420d32006-09-14 10:35:20 +00002554 case 82:
vlm1bc782f2006-09-21 01:50:37 +00002555#line 953 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002556 { yyval.a_expr = NEW_EXPR(); }
vlm1aeaddd2006-07-13 08:24:20 +00002557 break;
2558
vlmd3420d32006-09-14 10:35:20 +00002559 case 83:
vlm1bc782f2006-09-21 01:50:37 +00002560#line 954 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002561 { yyval.a_expr = yyvsp[0].a_expr; }
2562 break;
2563
2564 case 84:
vlm1bc782f2006-09-21 01:50:37 +00002565#line 957 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002566 {
vlm43c8ac52006-09-17 04:52:50 +00002567 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002568 checkmem(yyval.a_expr);
2569 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002570 }
2571 break;
2572
vlm43c8ac52006-09-17 04:52:50 +00002573 case 85:
vlm1bc782f2006-09-21 01:50:37 +00002574#line 962 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002575 {
vlm0c6d3812006-03-21 03:40:38 +00002576 yyval.a_expr = yyvsp[-2].a_expr;
2577 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002578 }
2579 break;
2580
vlm43c8ac52006-09-17 04:52:50 +00002581 case 86:
vlm1bc782f2006-09-21 01:50:37 +00002582#line 969 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002583 {
vlm0c6d3812006-03-21 03:40:38 +00002584 yyval.a_expr = yyvsp[-1].a_expr;
2585 assert(yyval.a_expr->Identifier == 0);
2586 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2587 yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
2588 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002589 }
2590 break;
2591
vlm43c8ac52006-09-17 04:52:50 +00002592 case 87:
vlm1bc782f2006-09-21 01:50:37 +00002593#line 976 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002594 {
vlm0c6d3812006-03-21 03:40:38 +00002595 yyval.a_expr = yyvsp[-1].a_expr;
2596 yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
2597 yyval.a_expr->marker = yyvsp[0].a_marker;
2598 _fixup_anonymous_identifier(yyval.a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002599 }
2600 break;
2601
vlm43c8ac52006-09-17 04:52:50 +00002602 case 88:
vlm1bc782f2006-09-21 01:50:37 +00002603#line 982 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002604 {
vlm43c8ac52006-09-17 04:52:50 +00002605 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002606 checkmem(yyval.a_expr);
2607 yyval.a_expr->meta_type = yyvsp[0].a_expr->meta_type;
2608 yyval.a_expr->expr_type = A1TC_COMPONENTS_OF;
2609 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002610 }
2611 break;
2612
vlm43c8ac52006-09-17 04:52:50 +00002613 case 89:
vlm1bc782f2006-09-21 01:50:37 +00002614#line 989 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002615 {
vlm0c6d3812006-03-21 03:40:38 +00002616 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002617 }
2618 break;
2619
vlm43c8ac52006-09-17 04:52:50 +00002620 case 90:
vlm1bc782f2006-09-21 01:50:37 +00002621#line 995 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002622 {
vlm43c8ac52006-09-17 04:52:50 +00002623 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002624 checkmem(yyval.a_expr);
2625 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002626 }
2627 break;
2628
vlm43c8ac52006-09-17 04:52:50 +00002629 case 91:
vlm1bc782f2006-09-21 01:50:37 +00002630#line 1000 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002631 {
vlm0c6d3812006-03-21 03:40:38 +00002632 yyval.a_expr = yyvsp[-2].a_expr;
2633 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002634 }
2635 break;
2636
vlm43c8ac52006-09-17 04:52:50 +00002637 case 92:
vlm1bc782f2006-09-21 01:50:37 +00002638#line 1007 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002639 {
vlm0c6d3812006-03-21 03:40:38 +00002640 yyval.a_expr = yyvsp[0].a_expr;
2641 assert(yyval.a_expr->Identifier == 0);
2642 yyval.a_expr->Identifier = yyvsp[-1].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00002643 }
2644 break;
2645
vlm43c8ac52006-09-17 04:52:50 +00002646 case 93:
vlm1bc782f2006-09-21 01:50:37 +00002647#line 1012 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002648 {
vlm0c6d3812006-03-21 03:40:38 +00002649 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002650 }
2651 break;
2652
vlm43c8ac52006-09-17 04:52:50 +00002653 case 94:
vlm1bc782f2006-09-21 01:50:37 +00002654#line 1015 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002655 {
vlm0c6d3812006-03-21 03:40:38 +00002656 yyval.a_expr = yyvsp[0].a_expr;
2657 _fixup_anonymous_identifier(yyval.a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002658 }
2659 break;
2660
vlm43c8ac52006-09-17 04:52:50 +00002661 case 95:
vlm1bc782f2006-09-21 01:50:37 +00002662#line 1022 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002663 {
vlm0c6d3812006-03-21 03:40:38 +00002664 yyval.a_expr = yyvsp[-2].a_expr;
2665 checkmem(yyval.a_expr);
2666 yyval.a_expr->with_syntax = yyvsp[0].a_wsynt;
2667 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
2668 assert(yyval.a_expr->meta_type == AMT_OBJECTCLASS);
vlm1aeaddd2006-07-13 08:24:20 +00002669 }
2670 break;
2671
vlm43c8ac52006-09-17 04:52:50 +00002672 case 96:
vlm1bc782f2006-09-21 01:50:37 +00002673#line 1032 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002674 { yyval.a_int = 0; }
2675 break;
2676
vlm43c8ac52006-09-17 04:52:50 +00002677 case 97:
vlm1bc782f2006-09-21 01:50:37 +00002678#line 1033 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002679 { yyval.a_int = 1; }
2680 break;
2681
vlm43c8ac52006-09-17 04:52:50 +00002682 case 98:
vlm1bc782f2006-09-21 01:50:37 +00002683#line 1037 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002684 {
vlm43c8ac52006-09-17 04:52:50 +00002685 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002686 checkmem(yyval.a_expr);
2687 yyval.a_expr->expr_type = A1TC_CLASSDEF;
2688 yyval.a_expr->meta_type = AMT_OBJECTCLASS;
2689 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002690 }
2691 break;
2692
vlm43c8ac52006-09-17 04:52:50 +00002693 case 99:
vlm1bc782f2006-09-21 01:50:37 +00002694#line 1044 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002695 {
vlm0c6d3812006-03-21 03:40:38 +00002696 yyval.a_expr = yyvsp[-2].a_expr;
2697 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002698 }
2699 break;
2700
vlm43c8ac52006-09-17 04:52:50 +00002701 case 100:
vlm1bc782f2006-09-21 01:50:37 +00002702#line 1054 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002703 {
vlm43c8ac52006-09-17 04:52:50 +00002704 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002705 checkmem(yyval.a_expr);
2706 yyval.a_expr->Identifier = yyvsp[-1].tv_str;
2707 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2708 yyval.a_expr->expr_type = A1TC_CLASSFIELD_TFS; /* TypeFieldSpec */
2709 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002710 }
2711 break;
2712
vlm43c8ac52006-09-17 04:52:50 +00002713 case 101:
vlm1bc782f2006-09-21 01:50:37 +00002714#line 1064 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002715 {
vlm43c8ac52006-09-17 04:52:50 +00002716 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002717 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
2718 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2719 yyval.a_expr->expr_type = A1TC_CLASSFIELD_FTVFS; /* FixedTypeValueFieldSpec */
2720 yyval.a_expr->unique = yyvsp[-1].a_int;
2721 yyval.a_expr->marker = yyvsp[0].a_marker;
2722 asn1p_expr_add(yyval.a_expr, yyvsp[-2].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002723 }
2724 break;
2725
vlm43c8ac52006-09-17 04:52:50 +00002726 case 102:
vlm1bc782f2006-09-21 01:50:37 +00002727#line 1075 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002728 {
vlm43c8ac52006-09-17 04:52:50 +00002729 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002730 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2731 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2732 yyval.a_expr->expr_type = A1TC_CLASSFIELD_VTVFS;
2733 yyval.a_expr->reference = yyvsp[-1].a_ref;
2734 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002735 }
2736 break;
2737
vlm43c8ac52006-09-17 04:52:50 +00002738 case 103:
vlm1bc782f2006-09-21 01:50:37 +00002739#line 1085 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002740 {
vlm43c8ac52006-09-17 04:52:50 +00002741 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002742 checkmem(yyval.a_expr);
2743 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2744 yyval.a_expr->reference = yyvsp[-1].a_ref;
2745 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2746 yyval.a_expr->expr_type = A1TC_CLASSFIELD_OFS;
2747 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002748 }
2749 break;
2750
vlm43c8ac52006-09-17 04:52:50 +00002751 case 104:
vlm1bc782f2006-09-21 01:50:37 +00002752#line 1096 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002753 {
vlm43c8ac52006-09-17 04:52:50 +00002754 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002755 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2756 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2757 yyval.a_expr->expr_type = A1TC_CLASSFIELD_VTVSFS;
2758 yyval.a_expr->reference = yyvsp[-1].a_ref;
2759 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002760 }
2761 break;
2762
vlm43c8ac52006-09-17 04:52:50 +00002763 case 105:
vlm1bc782f2006-09-21 01:50:37 +00002764#line 1106 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002765 {
vlm43c8ac52006-09-17 04:52:50 +00002766 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002767 checkmem(yyval.a_expr);
2768 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2769 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2770 yyval.a_expr->expr_type = A1TC_CLASSFIELD_FTVSFS;
2771 asn1p_expr_add(yyval.a_expr, yyvsp[-1].a_expr);
2772 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002773 }
2774 break;
2775
vlm43c8ac52006-09-17 04:52:50 +00002776 case 106:
vlm1bc782f2006-09-21 01:50:37 +00002777#line 1117 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002778 {
vlm43c8ac52006-09-17 04:52:50 +00002779 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002780 checkmem(yyval.a_expr);
2781 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2782 yyval.a_expr->reference = yyvsp[-1].a_ref;
2783 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2784 yyval.a_expr->expr_type = A1TC_CLASSFIELD_OSFS;
2785 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002786 }
2787 break;
2788
vlm43c8ac52006-09-17 04:52:50 +00002789 case 107:
vlm1bc782f2006-09-21 01:50:37 +00002790#line 1129 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002791 { yyval.a_wsynt = 0; }
2792 break;
2793
vlm43c8ac52006-09-17 04:52:50 +00002794 case 108:
vlm1bc782f2006-09-21 01:50:37 +00002795#line 1130 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002796 {
vlm0c6d3812006-03-21 03:40:38 +00002797 yyval.a_wsynt = yyvsp[0].a_wsynt;
vlm1aeaddd2006-07-13 08:24:20 +00002798 }
2799 break;
2800
vlm43c8ac52006-09-17 04:52:50 +00002801 case 109:
vlm1bc782f2006-09-21 01:50:37 +00002802#line 1137 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002803 { asn1p_lexer_hack_enable_with_syntax(); }
2804 break;
2805
vlm43c8ac52006-09-17 04:52:50 +00002806 case 110:
vlm1bc782f2006-09-21 01:50:37 +00002807#line 1139 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002808 {
vlm0c6d3812006-03-21 03:40:38 +00002809 yyval.a_wsynt = yyvsp[-1].a_wsynt;
vlm1aeaddd2006-07-13 08:24:20 +00002810 }
2811 break;
2812
vlm43c8ac52006-09-17 04:52:50 +00002813 case 111:
vlm1bc782f2006-09-21 01:50:37 +00002814#line 1145 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002815 {
vlm0c6d3812006-03-21 03:40:38 +00002816 yyval.a_wsynt = asn1p_wsyntx_new();
2817 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm1aeaddd2006-07-13 08:24:20 +00002818 }
2819 break;
2820
vlm43c8ac52006-09-17 04:52:50 +00002821 case 112:
vlm1bc782f2006-09-21 01:50:37 +00002822#line 1149 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002823 {
vlm0c6d3812006-03-21 03:40:38 +00002824 yyval.a_wsynt = yyvsp[-1].a_wsynt;
2825 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm1aeaddd2006-07-13 08:24:20 +00002826 }
2827 break;
2828
vlm43c8ac52006-09-17 04:52:50 +00002829 case 113:
vlm1bc782f2006-09-21 01:50:37 +00002830#line 1156 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002831 {
vlm1fcf7592006-08-18 02:27:55 +00002832 yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_opaque.buf, 0);
vlm0c6d3812006-03-21 03:40:38 +00002833 yyval.a_wchunk->type = WC_WHITESPACE;
vlm1aeaddd2006-07-13 08:24:20 +00002834 }
2835 break;
2836
vlm43c8ac52006-09-17 04:52:50 +00002837 case 114:
vlm1bc782f2006-09-21 01:50:37 +00002838#line 1160 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002839 {
vlm1fcf7592006-08-18 02:27:55 +00002840 yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_str, 0);
vlm1aeaddd2006-07-13 08:24:20 +00002841 }
2842 break;
2843
vlm43c8ac52006-09-17 04:52:50 +00002844 case 115:
vlm1bc782f2006-09-21 01:50:37 +00002845#line 1163 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002846 {
vlm1fcf7592006-08-18 02:27:55 +00002847 yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].a_refcomp.name, 0);
vlm0c6d3812006-03-21 03:40:38 +00002848 yyval.a_wchunk->type = WC_FIELD;
vlm1aeaddd2006-07-13 08:24:20 +00002849 }
2850 break;
2851
vlm43c8ac52006-09-17 04:52:50 +00002852 case 116:
vlm1bc782f2006-09-21 01:50:37 +00002853#line 1167 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002854 {
vlm0c6d3812006-03-21 03:40:38 +00002855 yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt);
vlm1aeaddd2006-07-13 08:24:20 +00002856 }
2857 break;
2858
vlmd3420d32006-09-14 10:35:20 +00002859 case 117:
vlm1bc782f2006-09-21 01:50:37 +00002860#line 1173 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002861 {
vlm43c8ac52006-09-17 04:52:50 +00002862 yyval.a_expr = NEW_EXPR();
vlmd3420d32006-09-14 10:35:20 +00002863 checkmem(yyval.a_expr);
2864 yyval.a_expr->Identifier = strdup("...");
2865 checkmem(yyval.a_expr->Identifier);
vlmd3420d32006-09-14 10:35:20 +00002866 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2867 yyval.a_expr->meta_type = AMT_TYPE;
2868 }
2869 break;
2870
2871 case 118:
vlm1bc782f2006-09-21 01:50:37 +00002872#line 1181 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002873 {
vlm43c8ac52006-09-17 04:52:50 +00002874 yyval.a_expr = NEW_EXPR();
2875 checkmem(yyval.a_expr);
2876 yyval.a_expr->Identifier = strdup("...");
2877 checkmem(yyval.a_expr->Identifier);
2878 yyval.a_expr->value = yyvsp[0].a_value;
2879 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2880 yyval.a_expr->meta_type = AMT_TYPE;
2881 }
2882 break;
2883
2884 case 119:
vlm1bc782f2006-09-21 01:50:37 +00002885#line 1190 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002886 {
2887 yyval.a_expr = NEW_EXPR();
vlmd3420d32006-09-14 10:35:20 +00002888 checkmem(yyval.a_expr);
2889 yyval.a_expr->Identifier = strdup("...");
2890 yyval.a_expr->value = yyvsp[0].a_value;
2891 checkmem(yyval.a_expr->Identifier);
2892 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2893 yyval.a_expr->meta_type = AMT_TYPE;
2894 }
2895 break;
2896
vlm43c8ac52006-09-17 04:52:50 +00002897 case 120:
vlm1bc782f2006-09-21 01:50:37 +00002898#line 1202 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002899 {
vlm0c6d3812006-03-21 03:40:38 +00002900 yyval.a_expr = yyvsp[-1].a_expr;
2901 yyval.a_expr->tag = yyvsp[-2].a_tag;
vlmec8f6812004-08-22 03:19:54 +00002902 /*
2903 * Outer constraint for SEQUENCE OF and SET OF applies
2904 * to the inner type.
2905 */
vlm0c6d3812006-03-21 03:40:38 +00002906 if(yyval.a_expr->expr_type == ASN_CONSTR_SEQUENCE_OF
2907 || yyval.a_expr->expr_type == ASN_CONSTR_SET_OF) {
2908 assert(!TQ_FIRST(&(yyval.a_expr->members))->constraints);
2909 TQ_FIRST(&(yyval.a_expr->members))->constraints = yyvsp[0].a_constr;
vlmec8f6812004-08-22 03:19:54 +00002910 } else {
vlm0c6d3812006-03-21 03:40:38 +00002911 if(yyval.a_expr->constraints) {
2912 assert(!yyvsp[-1].a_expr);
vlmec8f6812004-08-22 03:19:54 +00002913 } else {
vlm0c6d3812006-03-21 03:40:38 +00002914 yyval.a_expr->constraints = yyvsp[0].a_constr;
vlmec8f6812004-08-22 03:19:54 +00002915 }
2916 }
vlm1aeaddd2006-07-13 08:24:20 +00002917 }
2918 break;
2919
vlm43c8ac52006-09-17 04:52:50 +00002920 case 121:
vlm1bc782f2006-09-21 01:50:37 +00002921#line 1224 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002922 {
vlm0c6d3812006-03-21 03:40:38 +00002923 yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
vlm7e436752006-03-18 06:53:11 +00002924 asn1p_as_pointer = 0;
vlm1aeaddd2006-07-13 08:24:20 +00002925 }
2926 break;
2927
vlm43c8ac52006-09-17 04:52:50 +00002928 case 122:
vlm1bc782f2006-09-21 01:50:37 +00002929#line 1231 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002930 {
vlm0c6d3812006-03-21 03:40:38 +00002931 yyval.a_expr = yyvsp[0].a_expr;
2932 yyval.a_expr->marker.flags |= yyvsp[-1].a_int;
vlm7e436752006-03-18 06:53:11 +00002933
vlm0c6d3812006-03-21 03:40:38 +00002934 if((yyval.a_expr->marker.flags & EM_INDIRECT)
2935 && (yyval.a_expr->marker.flags & EM_OPTIONAL) != EM_OPTIONAL) {
vlm177a5b62005-09-05 05:17:57 +00002936 fprintf(stderr,
2937 "INFO: Directive <ASN1C:RepresentAsPointer> "
2938 "applied to %s at line %d\n",
vlm0c6d3812006-03-21 03:40:38 +00002939 ASN_EXPR_TYPE2STR(yyval.a_expr->expr_type)
2940 ? ASN_EXPR_TYPE2STR(yyval.a_expr->expr_type)
vlm177a5b62005-09-05 05:17:57 +00002941 : "member",
vlm0c6d3812006-03-21 03:40:38 +00002942 yyval.a_expr->_lineno
vlm177a5b62005-09-05 05:17:57 +00002943 );
2944 }
vlm1aeaddd2006-07-13 08:24:20 +00002945 }
2946 break;
2947
vlm43c8ac52006-09-17 04:52:50 +00002948 case 123:
vlm1bc782f2006-09-21 01:50:37 +00002949#line 1250 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002950 {
vlm0c6d3812006-03-21 03:40:38 +00002951 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002952 }
2953 break;
2954
vlm43c8ac52006-09-17 04:52:50 +00002955 case 124:
vlm1bc782f2006-09-21 01:50:37 +00002956#line 1253 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002957 {
vlm0c6d3812006-03-21 03:40:38 +00002958 yyval.a_expr = yyvsp[-1].a_expr;
2959 assert(yyval.a_expr->expr_type == A1TC_INVALID);
2960 yyval.a_expr->expr_type = ASN_CONSTR_CHOICE;
2961 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00002962 }
2963 break;
2964
vlm43c8ac52006-09-17 04:52:50 +00002965 case 125:
vlm1bc782f2006-09-21 01:50:37 +00002966#line 1259 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002967 {
vlm0c6d3812006-03-21 03:40:38 +00002968 yyval.a_expr = yyvsp[-1].a_expr;
2969 assert(yyval.a_expr->expr_type == A1TC_INVALID);
2970 yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE;
2971 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00002972 }
2973 break;
2974
vlm43c8ac52006-09-17 04:52:50 +00002975 case 126:
vlm1bc782f2006-09-21 01:50:37 +00002976#line 1265 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002977 {
vlm0c6d3812006-03-21 03:40:38 +00002978 yyval.a_expr = yyvsp[-1].a_expr;
2979 assert(yyval.a_expr->expr_type == A1TC_INVALID);
2980 yyval.a_expr->expr_type = ASN_CONSTR_SET;
2981 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00002982 }
2983 break;
2984
vlm43c8ac52006-09-17 04:52:50 +00002985 case 127:
vlm1bc782f2006-09-21 01:50:37 +00002986#line 1271 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002987 {
vlm43c8ac52006-09-17 04:52:50 +00002988 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002989 checkmem(yyval.a_expr);
2990 yyval.a_expr->constraints = yyvsp[-4].a_constr;
2991 yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE_OF;
2992 yyval.a_expr->meta_type = AMT_TYPE;
2993 yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
2994 yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
2995 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002996 }
2997 break;
2998
vlm43c8ac52006-09-17 04:52:50 +00002999 case 128:
vlm1bc782f2006-09-21 01:50:37 +00003000#line 1281 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003001 {
vlm43c8ac52006-09-17 04:52:50 +00003002 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003003 checkmem(yyval.a_expr);
3004 yyval.a_expr->constraints = yyvsp[-4].a_constr;
3005 yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
3006 yyval.a_expr->meta_type = AMT_TYPE;
3007 yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
3008 yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
3009 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00003010 }
3011 break;
3012
vlm43c8ac52006-09-17 04:52:50 +00003013 case 129:
vlm1bc782f2006-09-21 01:50:37 +00003014#line 1291 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003015 {
vlm43c8ac52006-09-17 04:52:50 +00003016 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003017 checkmem(yyval.a_expr);
3018 yyval.a_expr->expr_type = ASN_TYPE_ANY;
3019 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003020 }
3021 break;
3022
vlm43c8ac52006-09-17 04:52:50 +00003023 case 130:
vlm1bc782f2006-09-21 01:50:37 +00003024#line 1297 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003025 {
vlmec8f6812004-08-22 03:19:54 +00003026 int ret;
vlm43c8ac52006-09-17 04:52:50 +00003027 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003028 checkmem(yyval.a_expr);
3029 yyval.a_expr->reference = asn1p_ref_new(yylineno);
3030 ret = asn1p_ref_add_component(yyval.a_expr->reference,
3031 yyvsp[0].tv_str, RLT_lowercase);
vlmec8f6812004-08-22 03:19:54 +00003032 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003033 yyval.a_expr->expr_type = ASN_TYPE_ANY;
3034 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003035 }
3036 break;
3037
vlm43c8ac52006-09-17 04:52:50 +00003038 case 131:
vlm1bc782f2006-09-21 01:50:37 +00003039#line 1308 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003040 {
vlm43c8ac52006-09-17 04:52:50 +00003041 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003042 checkmem(yyval.a_expr);
3043 yyval.a_expr->reference = yyvsp[0].a_ref;
3044 yyval.a_expr->expr_type = A1TC_INSTANCE;
3045 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003046 }
3047 break;
3048
vlm43c8ac52006-09-17 04:52:50 +00003049 case 132:
vlm1bc782f2006-09-21 01:50:37 +00003050#line 1323 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003051 {
vlmfa67ddc2004-06-03 03:38:44 +00003052 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003053 yyval.a_ref = asn1p_ref_new(yylineno);
3054 checkmem(yyval.a_ref);
3055 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
vlmfa67ddc2004-06-03 03:38:44 +00003056 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003057 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003058 }
3059 break;
3060
vlmd3420d32006-09-14 10:35:20 +00003061 case 133:
vlm1bc782f2006-09-21 01:50:37 +00003062#line 1331 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003063 {
vlm808411d2006-03-14 16:31:37 +00003064 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003065 yyval.a_ref = asn1p_ref_new(yylineno);
3066 checkmem(yyval.a_ref);
3067 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
vlm808411d2006-03-14 16:31:37 +00003068 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003069 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
vlm808411d2006-03-14 16:31:37 +00003070 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003071 free(yyvsp[-2].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003072 }
3073 break;
3074
vlmd3420d32006-09-14 10:35:20 +00003075 case 134:
vlm1bc782f2006-09-21 01:50:37 +00003076#line 1341 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003077 {
3078 int ret;
3079 yyval.a_ref = asn1p_ref_new(yylineno);
3080 checkmem(yyval.a_ref);
3081 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
3082 checkmem(ret == 0);
3083 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
3084 checkmem(ret == 0);
3085 free(yyvsp[-2].tv_str);
3086 }
3087 break;
3088
3089 case 135:
vlm1bc782f2006-09-21 01:50:37 +00003090#line 1351 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003091 {
vlm808411d2006-03-14 16:31:37 +00003092 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003093 yyval.a_ref = asn1p_ref_new(yylineno);
3094 checkmem(yyval.a_ref);
3095 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
vlm808411d2006-03-14 16:31:37 +00003096 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003097 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
vlm808411d2006-03-14 16:31:37 +00003098 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003099 free(yyvsp[-2].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003100 }
3101 break;
3102
vlm43c8ac52006-09-17 04:52:50 +00003103 case 136:
vlm1bc782f2006-09-21 01:50:37 +00003104#line 1361 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003105 {
vlmfa67ddc2004-06-03 03:38:44 +00003106 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003107 yyval.a_ref = asn1p_ref_new(yylineno);
3108 checkmem(yyval.a_ref);
3109 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
3110 free(yyvsp[0].tv_str);
vlmc94e28f2004-09-15 11:59:51 +00003111 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003112 }
3113 break;
3114
vlm43c8ac52006-09-17 04:52:50 +00003115 case 137:
vlm1bc782f2006-09-21 01:50:37 +00003116#line 1369 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003117 {
vlmc94e28f2004-09-15 11:59:51 +00003118 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003119 yyval.a_ref = yyvsp[0].a_ref;
3120 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_CAPITALS);
3121 free(yyvsp[-2].tv_str);
vlmfa67ddc2004-06-03 03:38:44 +00003122 checkmem(ret == 0);
3123 /*
3124 * Move the last element infront.
3125 */
3126 {
3127 struct asn1p_ref_component_s tmp_comp;
vlm0c6d3812006-03-21 03:40:38 +00003128 tmp_comp = yyval.a_ref->components[yyval.a_ref->comp_count-1];
3129 memmove(&yyval.a_ref->components[1],
3130 &yyval.a_ref->components[0],
3131 sizeof(yyval.a_ref->components[0])
3132 * (yyval.a_ref->comp_count - 1));
3133 yyval.a_ref->components[0] = tmp_comp;
vlmfa67ddc2004-06-03 03:38:44 +00003134 }
vlm1aeaddd2006-07-13 08:24:20 +00003135 }
3136 break;
3137
vlm43c8ac52006-09-17 04:52:50 +00003138 case 138:
vlm1bc782f2006-09-21 01:50:37 +00003139#line 1391 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003140 {
vlmfa67ddc2004-06-03 03:38:44 +00003141 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003142 yyval.a_ref = asn1p_ref_new(yylineno);
3143 checkmem(yyval.a_ref);
3144 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
3145 free(yyvsp[0].a_refcomp.name);
vlmfa67ddc2004-06-03 03:38:44 +00003146 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003147 }
3148 break;
3149
vlm43c8ac52006-09-17 04:52:50 +00003150 case 139:
vlm1bc782f2006-09-21 01:50:37 +00003151#line 1399 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003152 {
vlmfa67ddc2004-06-03 03:38:44 +00003153 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003154 yyval.a_ref = yyvsp[-2].a_ref;
3155 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
3156 free(yyvsp[0].a_refcomp.name);
vlmfa67ddc2004-06-03 03:38:44 +00003157 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003158 }
3159 break;
3160
vlm43c8ac52006-09-17 04:52:50 +00003161 case 141:
vlm1bc782f2006-09-21 01:50:37 +00003162#line 1412 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003163 {
vlm0c6d3812006-03-21 03:40:38 +00003164 yyval.a_refcomp.lex_type = RLT_AmpUppercase;
3165 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00003166 }
3167 break;
3168
vlm43c8ac52006-09-17 04:52:50 +00003169 case 142:
vlm1bc782f2006-09-21 01:50:37 +00003170#line 1417 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003171 {
vlm0c6d3812006-03-21 03:40:38 +00003172 yyval.a_refcomp.lex_type = RLT_Amplowercase;
3173 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00003174 }
3175 break;
3176
vlm43c8ac52006-09-17 04:52:50 +00003177 case 143:
vlm1bc782f2006-09-21 01:50:37 +00003178#line 1426 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003179 {
vlm0c6d3812006-03-21 03:40:38 +00003180 yyval.a_ref = asn1p_ref_new(yylineno);
3181 asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
vlm1aeaddd2006-07-13 08:24:20 +00003182 }
3183 break;
3184
vlm43c8ac52006-09-17 04:52:50 +00003185 case 144:
vlm1bc782f2006-09-21 01:50:37 +00003186#line 1430 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003187 {
vlm0c6d3812006-03-21 03:40:38 +00003188 yyval.a_ref = yyval.a_ref;
3189 asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
vlm1aeaddd2006-07-13 08:24:20 +00003190 }
3191 break;
3192
vlm43c8ac52006-09-17 04:52:50 +00003193 case 145:
vlm1bc782f2006-09-21 01:50:37 +00003194#line 1434 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003195 {
vlm0c6d3812006-03-21 03:40:38 +00003196 yyval.a_ref = yyval.a_ref;
3197 asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
vlm1aeaddd2006-07-13 08:24:20 +00003198 }
3199 break;
3200
vlm43c8ac52006-09-17 04:52:50 +00003201 case 146:
vlm1bc782f2006-09-21 01:50:37 +00003202#line 1441 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003203 {
vlm0c6d3812006-03-21 03:40:38 +00003204 yyval.a_ref = asn1p_ref_new(yylineno);
3205 asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
vlm1aeaddd2006-07-13 08:24:20 +00003206 }
3207 break;
3208
vlm43c8ac52006-09-17 04:52:50 +00003209 case 147:
vlm1bc782f2006-09-21 01:50:37 +00003210#line 1461 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003211 {
vlm0c6d3812006-03-21 03:40:38 +00003212 yyval.a_expr = yyvsp[-2].a_expr;
3213 assert(yyval.a_expr->Identifier == NULL);
3214 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
3215 yyval.a_expr->meta_type = AMT_VALUE;
3216 yyval.a_expr->value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003217 }
3218 break;
3219
vlm43c8ac52006-09-17 04:52:50 +00003220 case 150:
vlm1bc782f2006-09-21 01:50:37 +00003221#line 1473 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003222 {
vlm0c6d3812006-03-21 03:40:38 +00003223 yyval.a_value = asn1p_value_fromint(0);
3224 checkmem(yyval.a_value);
3225 yyval.a_value->type = ATV_CHOICE_IDENTIFIER;
3226 yyval.a_value->value.choice_identifier.identifier = yyvsp[-2].tv_str;
3227 yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003228 }
3229 break;
3230
vlm43c8ac52006-09-17 04:52:50 +00003231 case 151:
vlm1bc782f2006-09-21 01:50:37 +00003232#line 1480 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003233 { asn1p_lexer_hack_push_opaque_state(); }
3234 break;
3235
vlm43c8ac52006-09-17 04:52:50 +00003236 case 152:
vlm1bc782f2006-09-21 01:50:37 +00003237#line 1480 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003238 {
vlm0c6d3812006-03-21 03:40:38 +00003239 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
3240 checkmem(yyval.a_value);
3241 yyval.a_value->type = ATV_UNPARSED;
vlm1aeaddd2006-07-13 08:24:20 +00003242 }
3243 break;
3244
vlm43c8ac52006-09-17 04:52:50 +00003245 case 153:
vlm1bc782f2006-09-21 01:50:37 +00003246#line 1485 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003247 {
vlm0c6d3812006-03-21 03:40:38 +00003248 yyval.a_value = asn1p_value_fromint(0);
3249 checkmem(yyval.a_value);
3250 yyval.a_value->type = ATV_NULL;
vlm1aeaddd2006-07-13 08:24:20 +00003251 }
3252 break;
3253
vlm43c8ac52006-09-17 04:52:50 +00003254 case 154:
vlm1bc782f2006-09-21 01:50:37 +00003255#line 1493 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003256 {
vlm0c6d3812006-03-21 03:40:38 +00003257 yyval.a_value = asn1p_value_fromint(0);
3258 checkmem(yyval.a_value);
3259 yyval.a_value->type = ATV_FALSE;
vlm1aeaddd2006-07-13 08:24:20 +00003260 }
3261 break;
3262
vlm43c8ac52006-09-17 04:52:50 +00003263 case 155:
vlm1bc782f2006-09-21 01:50:37 +00003264#line 1498 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003265 {
vlm0c6d3812006-03-21 03:40:38 +00003266 yyval.a_value = asn1p_value_fromint(0);
3267 checkmem(yyval.a_value);
3268 yyval.a_value->type = ATV_TRUE;
vlm1aeaddd2006-07-13 08:24:20 +00003269 }
3270 break;
3271
vlm43c8ac52006-09-17 04:52:50 +00003272 case 156:
vlm1bc782f2006-09-21 01:50:37 +00003273#line 1503 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003274 {
vlm0c6d3812006-03-21 03:40:38 +00003275 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
3276 checkmem(yyval.a_value);
vlm1aeaddd2006-07-13 08:24:20 +00003277 }
3278 break;
3279
vlm43c8ac52006-09-17 04:52:50 +00003280 case 157:
vlm1bc782f2006-09-21 01:50:37 +00003281#line 1507 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003282 {
vlm0c6d3812006-03-21 03:40:38 +00003283 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
3284 checkmem(yyval.a_value);
vlm1aeaddd2006-07-13 08:24:20 +00003285 }
3286 break;
3287
vlm43c8ac52006-09-17 04:52:50 +00003288 case 158:
vlm1bc782f2006-09-21 01:50:37 +00003289#line 1511 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003290 {
vlm0c6d3812006-03-21 03:40:38 +00003291 yyval.a_value = yyval.a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003292 }
3293 break;
3294
vlm43c8ac52006-09-17 04:52:50 +00003295 case 159:
vlm1bc782f2006-09-21 01:50:37 +00003296#line 1514 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003297 {
vlm17e65d02006-03-21 04:48:15 +00003298 yyval.a_value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003299 }
3300 break;
3301
vlm43c8ac52006-09-17 04:52:50 +00003302 case 160:
vlm1bc782f2006-09-21 01:50:37 +00003303#line 1520 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003304 {
vlmfa67ddc2004-06-03 03:38:44 +00003305 asn1p_ref_t *ref;
3306 int ret;
3307 ref = asn1p_ref_new(yylineno);
3308 checkmem(ref);
vlm0c6d3812006-03-21 03:40:38 +00003309 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
vlmfa67ddc2004-06-03 03:38:44 +00003310 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003311 yyval.a_value = asn1p_value_fromref(ref, 0);
3312 checkmem(yyval.a_value);
3313 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003314 }
3315 break;
3316
vlm43c8ac52006-09-17 04:52:50 +00003317 case 161:
vlm1bc782f2006-09-21 01:50:37 +00003318#line 1531 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003319 {
vlmfa67ddc2004-06-03 03:38:44 +00003320 asn1p_ref_t *ref;
3321 int ret;
3322 ref = asn1p_ref_new(yylineno);
3323 checkmem(ref);
vlm0c6d3812006-03-21 03:40:38 +00003324 ret = asn1p_ref_add_component(ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
vlmfa67ddc2004-06-03 03:38:44 +00003325 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003326 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
vlmfa67ddc2004-06-03 03:38:44 +00003327 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003328 yyval.a_value = asn1p_value_fromref(ref, 0);
3329 checkmem(yyval.a_value);
3330 free(yyvsp[-2].tv_str);
3331 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003332 }
3333 break;
3334
vlm43c8ac52006-09-17 04:52:50 +00003335 case 162:
vlm1bc782f2006-09-21 01:50:37 +00003336#line 1549 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003337 {
vlm0c6d3812006-03-21 03:40:38 +00003338 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
3339 checkmem(yyval.a_value);
vlm1aeaddd2006-07-13 08:24:20 +00003340 }
3341 break;
3342
vlm43c8ac52006-09-17 04:52:50 +00003343 case 163:
vlm1bc782f2006-09-21 01:50:37 +00003344#line 1553 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003345 {
vlm0c6d3812006-03-21 03:40:38 +00003346 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3347 checkmem(yyval.a_value);
3348 yyval.a_value->type = ATV_TUPLE;
vlm1aeaddd2006-07-13 08:24:20 +00003349 }
3350 break;
3351
vlm43c8ac52006-09-17 04:52:50 +00003352 case 164:
vlm1bc782f2006-09-21 01:50:37 +00003353#line 1558 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003354 {
vlm0c6d3812006-03-21 03:40:38 +00003355 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3356 checkmem(yyval.a_value);
3357 yyval.a_value->type = ATV_QUADRUPLE;
vlm1aeaddd2006-07-13 08:24:20 +00003358 }
3359 break;
3360
vlm43c8ac52006-09-17 04:52:50 +00003361 case 165:
vlm1bc782f2006-09-21 01:50:37 +00003362#line 1592 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003363 {
vlm0c6d3812006-03-21 03:40:38 +00003364 yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
3365 yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
3366 checkmem(yyval.tv_opaque.buf);
3367 yyval.tv_opaque.buf[0] = '{';
3368 memcpy(yyval.tv_opaque.buf + 1, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
3369 yyval.tv_opaque.buf[yyval.tv_opaque.len] = '\0';
3370 free(yyvsp[0].tv_opaque.buf);
vlm1aeaddd2006-07-13 08:24:20 +00003371 }
3372 break;
3373
vlm43c8ac52006-09-17 04:52:50 +00003374 case 166:
vlm1bc782f2006-09-21 01:50:37 +00003375#line 1601 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003376 {
vlm0c6d3812006-03-21 03:40:38 +00003377 int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
vlmfa67ddc2004-06-03 03:38:44 +00003378 char *p = malloc(newsize + 1);
3379 checkmem(p);
vlm0c6d3812006-03-21 03:40:38 +00003380 memcpy(p , yyvsp[-1].tv_opaque.buf, yyvsp[-1].tv_opaque.len);
3381 memcpy(p + yyvsp[-1].tv_opaque.len, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
vlmfa67ddc2004-06-03 03:38:44 +00003382 p[newsize] = '\0';
vlm0c6d3812006-03-21 03:40:38 +00003383 free(yyvsp[-1].tv_opaque.buf);
3384 free(yyvsp[0].tv_opaque.buf);
3385 yyval.tv_opaque.buf = p;
3386 yyval.tv_opaque.len = newsize;
vlm1aeaddd2006-07-13 08:24:20 +00003387 }
3388 break;
3389
vlm43c8ac52006-09-17 04:52:50 +00003390 case 167:
vlm1bc782f2006-09-21 01:50:37 +00003391#line 1616 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003392 { yyval.a_type = ASN_BASIC_BOOLEAN; }
3393 break;
3394
vlm43c8ac52006-09-17 04:52:50 +00003395 case 168:
vlm1bc782f2006-09-21 01:50:37 +00003396#line 1617 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003397 { yyval.a_type = ASN_BASIC_NULL; }
3398 break;
3399
vlm43c8ac52006-09-17 04:52:50 +00003400 case 169:
vlm1bc782f2006-09-21 01:50:37 +00003401#line 1618 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003402 { yyval.a_type = ASN_BASIC_REAL; }
3403 break;
3404
vlm1aeaddd2006-07-13 08:24:20 +00003405 case 170:
vlm1bc782f2006-09-21 01:50:37 +00003406#line 1619 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003407 { yyval.a_type = yyvsp[0].a_type; }
vlm1aeaddd2006-07-13 08:24:20 +00003408 break;
3409
3410 case 171:
vlm1bc782f2006-09-21 01:50:37 +00003411#line 1620 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003412 { yyval.a_type = ASN_BASIC_OCTET_STRING; }
vlm1aeaddd2006-07-13 08:24:20 +00003413 break;
3414
3415 case 172:
vlm1bc782f2006-09-21 01:50:37 +00003416#line 1621 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003417 { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; }
vlm1aeaddd2006-07-13 08:24:20 +00003418 break;
3419
3420 case 173:
vlm1bc782f2006-09-21 01:50:37 +00003421#line 1622 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003422 { yyval.a_type = ASN_BASIC_RELATIVE_OID; }
vlm1aeaddd2006-07-13 08:24:20 +00003423 break;
3424
3425 case 174:
vlm1bc782f2006-09-21 01:50:37 +00003426#line 1623 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003427 { yyval.a_type = ASN_BASIC_EXTERNAL; }
vlm1aeaddd2006-07-13 08:24:20 +00003428 break;
3429
3430 case 175:
vlm1bc782f2006-09-21 01:50:37 +00003431#line 1624 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003432 { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; }
vlm1aeaddd2006-07-13 08:24:20 +00003433 break;
3434
3435 case 176:
vlm1bc782f2006-09-21 01:50:37 +00003436#line 1625 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003437 { yyval.a_type = ASN_BASIC_CHARACTER_STRING; }
vlm1aeaddd2006-07-13 08:24:20 +00003438 break;
3439
3440 case 177:
vlm1bc782f2006-09-21 01:50:37 +00003441#line 1626 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003442 { yyval.a_type = ASN_BASIC_UTCTime; }
vlm1aeaddd2006-07-13 08:24:20 +00003443 break;
3444
3445 case 178:
vlm1bc782f2006-09-21 01:50:37 +00003446#line 1627 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003447 { yyval.a_type = ASN_BASIC_GeneralizedTime; }
vlm1aeaddd2006-07-13 08:24:20 +00003448 break;
3449
3450 case 179:
vlm1bc782f2006-09-21 01:50:37 +00003451#line 1628 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003452 { yyval.a_type = yyvsp[0].a_type; }
vlmd3420d32006-09-14 10:35:20 +00003453 break;
3454
3455 case 180:
vlm1bc782f2006-09-21 01:50:37 +00003456#line 1635 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003457 { yyval.a_type = ASN_BASIC_INTEGER; }
vlmd3420d32006-09-14 10:35:20 +00003458 break;
3459
3460 case 181:
vlm1bc782f2006-09-21 01:50:37 +00003461#line 1636 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003462 { yyval.a_type = ASN_BASIC_ENUMERATED; }
vlmd3420d32006-09-14 10:35:20 +00003463 break;
3464
3465 case 182:
vlm1bc782f2006-09-21 01:50:37 +00003466#line 1637 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003467 { yyval.a_type = ASN_BASIC_BIT_STRING; }
3468 break;
3469
3470 case 183:
vlm1bc782f2006-09-21 01:50:37 +00003471#line 1641 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003472 {
vlm43c8ac52006-09-17 04:52:50 +00003473 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003474 checkmem(yyval.a_expr);
3475 yyval.a_expr->expr_type = yyvsp[0].a_type;
3476 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003477 }
3478 break;
3479
vlm43c8ac52006-09-17 04:52:50 +00003480 case 184:
vlm1bc782f2006-09-21 01:50:37 +00003481#line 1647 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003482 {
vlm0c6d3812006-03-21 03:40:38 +00003483 if(yyvsp[0].a_expr) {
3484 yyval.a_expr = yyvsp[0].a_expr;
vlmfa67ddc2004-06-03 03:38:44 +00003485 } else {
vlm43c8ac52006-09-17 04:52:50 +00003486 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003487 checkmem(yyval.a_expr);
vlmfa67ddc2004-06-03 03:38:44 +00003488 }
vlm0c6d3812006-03-21 03:40:38 +00003489 yyval.a_expr->expr_type = yyvsp[-1].a_type;
3490 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003491 }
3492 break;
3493
vlm43c8ac52006-09-17 04:52:50 +00003494 case 185:
vlm1bc782f2006-09-21 01:50:37 +00003495#line 1660 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003496 { yyval.a_type = ASN_STRING_BMPString; }
3497 break;
3498
vlm43c8ac52006-09-17 04:52:50 +00003499 case 186:
vlm1bc782f2006-09-21 01:50:37 +00003500#line 1661 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003501 {
vlm0c6d3812006-03-21 03:40:38 +00003502 yyval.a_type = ASN_STRING_GeneralString;
vlmc94e28f2004-09-15 11:59:51 +00003503 fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
vlm1aeaddd2006-07-13 08:24:20 +00003504 }
3505 break;
3506
vlm43c8ac52006-09-17 04:52:50 +00003507 case 187:
vlm1bc782f2006-09-21 01:50:37 +00003508#line 1665 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003509 {
vlm0c6d3812006-03-21 03:40:38 +00003510 yyval.a_type = ASN_STRING_GraphicString;
vlmc94e28f2004-09-15 11:59:51 +00003511 fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
vlm1aeaddd2006-07-13 08:24:20 +00003512 }
3513 break;
3514
vlm43c8ac52006-09-17 04:52:50 +00003515 case 188:
vlm1bc782f2006-09-21 01:50:37 +00003516#line 1669 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003517 { yyval.a_type = ASN_STRING_IA5String; }
3518 break;
3519
vlm43c8ac52006-09-17 04:52:50 +00003520 case 189:
vlm1bc782f2006-09-21 01:50:37 +00003521#line 1670 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003522 { yyval.a_type = ASN_STRING_ISO646String; }
3523 break;
3524
vlm43c8ac52006-09-17 04:52:50 +00003525 case 190:
vlm1bc782f2006-09-21 01:50:37 +00003526#line 1671 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003527 { yyval.a_type = ASN_STRING_NumericString; }
3528 break;
3529
vlm43c8ac52006-09-17 04:52:50 +00003530 case 191:
vlm1bc782f2006-09-21 01:50:37 +00003531#line 1672 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003532 { yyval.a_type = ASN_STRING_PrintableString; }
3533 break;
3534
vlm43c8ac52006-09-17 04:52:50 +00003535 case 192:
vlm1bc782f2006-09-21 01:50:37 +00003536#line 1673 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003537 {
vlm0c6d3812006-03-21 03:40:38 +00003538 yyval.a_type = ASN_STRING_T61String;
vlmc94e28f2004-09-15 11:59:51 +00003539 fprintf(stderr, "WARNING: T61String is not fully supported\n");
vlm1aeaddd2006-07-13 08:24:20 +00003540 }
3541 break;
3542
vlm43c8ac52006-09-17 04:52:50 +00003543 case 193:
vlm1bc782f2006-09-21 01:50:37 +00003544#line 1677 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003545 { yyval.a_type = ASN_STRING_TeletexString; }
3546 break;
3547
vlm43c8ac52006-09-17 04:52:50 +00003548 case 194:
vlm1bc782f2006-09-21 01:50:37 +00003549#line 1678 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003550 { yyval.a_type = ASN_STRING_UniversalString; }
3551 break;
3552
vlm43c8ac52006-09-17 04:52:50 +00003553 case 195:
vlm1bc782f2006-09-21 01:50:37 +00003554#line 1679 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003555 { yyval.a_type = ASN_STRING_UTF8String; }
3556 break;
3557
vlm43c8ac52006-09-17 04:52:50 +00003558 case 196:
vlm1bc782f2006-09-21 01:50:37 +00003559#line 1680 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003560 {
vlm0c6d3812006-03-21 03:40:38 +00003561 yyval.a_type = ASN_STRING_VideotexString;
vlmc94e28f2004-09-15 11:59:51 +00003562 fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
vlm1aeaddd2006-07-13 08:24:20 +00003563 }
3564 break;
3565
vlm43c8ac52006-09-17 04:52:50 +00003566 case 197:
vlm1bc782f2006-09-21 01:50:37 +00003567#line 1684 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003568 { yyval.a_type = ASN_STRING_VisibleString; }
3569 break;
3570
vlm43c8ac52006-09-17 04:52:50 +00003571 case 198:
vlm1bc782f2006-09-21 01:50:37 +00003572#line 1685 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003573 { yyval.a_type = ASN_STRING_ObjectDescriptor; }
3574 break;
3575
vlm1bc782f2006-09-21 01:50:37 +00003576 case 203:
3577#line 1696 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003578 { yyval.a_constr = 0; }
3579 break;
3580
vlm1bc782f2006-09-21 01:50:37 +00003581 case 204:
3582#line 1697 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003583 {
vlm0c6d3812006-03-21 03:40:38 +00003584 yyval.a_constr = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00003585 }
3586 break;
3587
vlm1bc782f2006-09-21 01:50:37 +00003588 case 206:
3589#line 1704 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003590 {
3591 yyval.a_constr = yyvsp[-1].a_constr;
3592 }
3593 break;
3594
vlm1bc782f2006-09-21 01:50:37 +00003595 case 207:
3596#line 1710 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003597 {
vlm0c6d3812006-03-21 03:40:38 +00003598 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003599 }
3600 break;
3601
vlm1bc782f2006-09-21 01:50:37 +00003602 case 208:
3603#line 1713 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003604 {
vlmfa67ddc2004-06-03 03:38:44 +00003605 /*
3606 * This is a special case, for compatibility purposes.
vlm9283dbe2004-08-18 04:59:12 +00003607 * It goes without parentheses.
vlmfa67ddc2004-06-03 03:38:44 +00003608 */
vlm0c6d3812006-03-21 03:40:38 +00003609 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003610 }
3611 break;
3612
vlm1bc782f2006-09-21 01:50:37 +00003613 case 209:
3614#line 1723 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003615 {
vlm0c6d3812006-03-21 03:40:38 +00003616 yyval.a_constr = yyvsp[-1].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00003617 }
3618 break;
3619
vlm1bc782f2006-09-21 01:50:37 +00003620 case 210:
3621#line 1726 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003622 {
vlm0c6d3812006-03-21 03:40:38 +00003623 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003624 }
3625 break;
3626
vlm1bc782f2006-09-21 01:50:37 +00003627 case 211:
3628#line 1732 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003629 {
vlmdfbff8c2006-03-21 09:41:28 +00003630 yyval.a_constr = asn1p_constraint_new(yylineno);
3631 yyval.a_constr->type = ACT_EL_EXT;
vlm1aeaddd2006-07-13 08:24:20 +00003632 }
3633 break;
3634
vlm1bc782f2006-09-21 01:50:37 +00003635 case 212:
3636#line 1736 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003637 {
vlm0c6d3812006-03-21 03:40:38 +00003638 yyval.a_constr = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00003639 }
3640 break;
3641
vlm1bc782f2006-09-21 01:50:37 +00003642 case 213:
3643#line 1739 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003644 {
vlmfa67ddc2004-06-03 03:38:44 +00003645 asn1p_constraint_t *ct;
3646 ct = asn1p_constraint_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003647 ct->type = ACT_EL_EXT;
vlm0c6d3812006-03-21 03:40:38 +00003648 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm1aeaddd2006-07-13 08:24:20 +00003649 }
3650 break;
3651
vlm1bc782f2006-09-21 01:50:37 +00003652 case 214:
3653#line 1745 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003654 {
vlmfa67ddc2004-06-03 03:38:44 +00003655 asn1p_constraint_t *ct;
3656 ct = asn1p_constraint_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003657 ct->type = ACT_EL_EXT;
vlm0c6d3812006-03-21 03:40:38 +00003658 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-4].a_constr, ct);
3659 ct = yyval.a_constr;
3660 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003661 }
3662 break;
3663
vlm43c8ac52006-09-17 04:52:50 +00003664 case 216:
vlm43c8ac52006-09-17 04:52:50 +00003665#line 1757 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003666 {
vlm0c6d3812006-03-21 03:40:38 +00003667 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003668 }
3669 break;
3670
vlm43c8ac52006-09-17 04:52:50 +00003671 case 218:
vlm1bc782f2006-09-21 01:50:37 +00003672#line 1764 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003673 {
vlm0c6d3812006-03-21 03:40:38 +00003674 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003675 }
3676 break;
3677
vlm1bc782f2006-09-21 01:50:37 +00003678 case 220:
3679#line 1771 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003680 {
vlm0c6d3812006-03-21 03:40:38 +00003681 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003682 }
3683 break;
3684
vlm1bc782f2006-09-21 01:50:37 +00003685 case 222:
3686#line 1779 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003687 {
vlm0c6d3812006-03-21 03:40:38 +00003688 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003689 }
3690 break;
3691
vlm1bc782f2006-09-21 01:50:37 +00003692 case 223:
3693#line 1785 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003694 {
vlmfa67ddc2004-06-03 03:38:44 +00003695 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003696 yyval.a_constr = asn1p_constraint_new(yylineno);
3697 checkmem(yyval.a_constr);
3698 yyval.a_constr->type = yyvsp[-3].a_ctype;
3699 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
vlmfa67ddc2004-06-03 03:38:44 +00003700 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003701 }
3702 break;
3703
vlm1bc782f2006-09-21 01:50:37 +00003704 case 224:
3705#line 1793 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003706 {
vlm9283dbe2004-08-18 04:59:12 +00003707 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003708 yyval.a_constr = asn1p_constraint_new(yylineno);
3709 checkmem(yyval.a_constr);
3710 yyval.a_constr->type = ACT_CA_SET;
3711 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
vlm9283dbe2004-08-18 04:59:12 +00003712 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003713 }
3714 break;
3715
vlm1bc782f2006-09-21 01:50:37 +00003716 case 225:
3717#line 1801 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003718 {
vlm0c6d3812006-03-21 03:40:38 +00003719 yyval.a_constr = asn1p_constraint_new(yylineno);
3720 checkmem(yyval.a_constr);
3721 yyval.a_constr->type = ACT_EL_VALUE;
3722 yyval.a_constr->value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003723 }
3724 break;
3725
vlm1bc782f2006-09-21 01:50:37 +00003726 case 226:
3727#line 1807 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003728 {
vlm0c6d3812006-03-21 03:40:38 +00003729 yyval.a_constr = asn1p_constraint_new(yylineno);
3730 checkmem(yyval.a_constr);
3731 yyval.a_constr->type = ACT_EL_TYPE;
3732 yyval.a_constr->containedSubtype = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003733 }
3734 break;
3735
vlmd3420d32006-09-14 10:35:20 +00003736 case 227:
vlm1bc782f2006-09-21 01:50:37 +00003737#line 1813 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003738 {
3739 yyval.a_constr = asn1p_constraint_new(yylineno);
3740 checkmem(yyval.a_constr);
3741 yyval.a_constr->type = yyvsp[-1].a_ctype;
3742 yyval.a_constr->range_start = yyvsp[-2].a_value;
vlm1bc782f2006-09-21 01:50:37 +00003743 yyval.a_constr->range_stop = yyvsp[0].a_value;
vlm43c8ac52006-09-17 04:52:50 +00003744 }
3745 break;
3746
3747 case 228:
vlm1bc782f2006-09-21 01:50:37 +00003748#line 1820 "asn1p_y.y"
3749 {
3750 yyval.a_constr = asn1p_constraint_new(yylineno);
3751 checkmem(yyval.a_constr);
3752 yyval.a_constr->type = yyvsp[-1].a_ctype;
3753 yyval.a_constr->range_start = asn1p_value_fromint(-123);
3754 yyval.a_constr->range_stop = yyvsp[0].a_value;
3755 yyval.a_constr->range_start->type = ATV_MIN;
3756 }
3757 break;
3758
3759 case 229:
3760#line 1828 "asn1p_y.y"
3761 {
3762 yyval.a_constr = asn1p_constraint_new(yylineno);
3763 checkmem(yyval.a_constr);
3764 yyval.a_constr->type = yyvsp[-1].a_ctype;
3765 yyval.a_constr->range_start = yyvsp[-2].a_value;
3766 yyval.a_constr->range_stop = asn1p_value_fromint(321);
3767 yyval.a_constr->range_stop->type = ATV_MAX;
3768 }
3769 break;
3770
3771 case 230:
3772#line 1836 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003773 {
3774 yyval.a_constr = asn1p_constraint_new(yylineno);
3775 checkmem(yyval.a_constr);
3776 yyval.a_constr->type = yyvsp[-1].a_ctype;
3777 yyval.a_constr->range_start = asn1p_value_fromint(-123);
3778 yyval.a_constr->range_stop = asn1p_value_fromint(321);
3779 yyval.a_constr->range_start->type = ATV_MIN;
3780 yyval.a_constr->range_stop->type = ATV_MAX;
3781 }
3782 break;
3783
vlm1bc782f2006-09-21 01:50:37 +00003784 case 231:
3785#line 1845 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00003786 {
3787 yyval.a_constr = yyvsp[0].a_constr;
3788 }
3789 break;
3790
vlm1bc782f2006-09-21 01:50:37 +00003791 case 232:
3792#line 1851 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003793 {
vlm0c6d3812006-03-21 03:40:38 +00003794 yyval.a_ctype = ACT_CT_SIZE;
vlm1aeaddd2006-07-13 08:24:20 +00003795 }
3796 break;
3797
vlm1bc782f2006-09-21 01:50:37 +00003798 case 233:
3799#line 1854 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003800 {
vlm0c6d3812006-03-21 03:40:38 +00003801 yyval.a_ctype = ACT_CT_FROM;
vlm1aeaddd2006-07-13 08:24:20 +00003802 }
3803 break;
3804
vlm1bc782f2006-09-21 01:50:37 +00003805 case 234:
3806#line 1860 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003807 {
vlm0c6d3812006-03-21 03:40:38 +00003808 yyval.a_value = asn1p_value_fromint(0);
3809 checkmem(yyval.a_value);
3810 yyval.a_value->type = ATV_FALSE;
vlm1aeaddd2006-07-13 08:24:20 +00003811 }
3812 break;
3813
vlm1bc782f2006-09-21 01:50:37 +00003814 case 235:
3815#line 1865 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003816 {
vlm0c6d3812006-03-21 03:40:38 +00003817 yyval.a_value = asn1p_value_fromint(1);
3818 checkmem(yyval.a_value);
3819 yyval.a_value->type = ATV_TRUE;
vlm1aeaddd2006-07-13 08:24:20 +00003820 }
3821 break;
3822
vlm1bc782f2006-09-21 01:50:37 +00003823 case 238:
3824#line 1872 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003825 {
vlmfa67ddc2004-06-03 03:38:44 +00003826 asn1p_ref_t *ref;
3827 int ret;
3828 ref = asn1p_ref_new(yylineno);
3829 checkmem(ref);
vlm0c6d3812006-03-21 03:40:38 +00003830 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
vlmfa67ddc2004-06-03 03:38:44 +00003831 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003832 yyval.a_value = asn1p_value_fromref(ref, 0);
3833 checkmem(yyval.a_value);
3834 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003835 }
3836 break;
3837
vlm1bc782f2006-09-21 01:50:37 +00003838 case 239:
3839#line 1886 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003840 {
vlm4053ca52005-02-18 16:34:21 +00003841 asn1p_ref_t *ref;
3842 int ret;
3843 ref = asn1p_ref_new(yylineno);
3844 checkmem(ref);
vlm0c6d3812006-03-21 03:40:38 +00003845 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_UNKNOWN);
vlm4053ca52005-02-18 16:34:21 +00003846 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003847 yyval.a_value = asn1p_value_fromref(ref, 0);
3848 checkmem(yyval.a_value);
3849 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003850 }
3851 break;
3852
vlm1bc782f2006-09-21 01:50:37 +00003853 case 240:
3854#line 1900 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003855 {
vlm0c6d3812006-03-21 03:40:38 +00003856 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003857 }
3858 break;
3859
vlm1bc782f2006-09-21 01:50:37 +00003860 case 241:
3861#line 1903 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003862 {
vlm0c6d3812006-03-21 03:40:38 +00003863 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003864 }
3865 break;
3866
vlm1bc782f2006-09-21 01:50:37 +00003867 case 242:
3868#line 1909 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003869 {
vlm0c6d3812006-03-21 03:40:38 +00003870 yyval.a_constr = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00003871 }
3872 break;
3873
vlm1bc782f2006-09-21 01:50:37 +00003874 case 243:
3875#line 1912 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003876 {
vlm0c6d3812006-03-21 03:40:38 +00003877 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003878 }
3879 break;
3880
vlm1bc782f2006-09-21 01:50:37 +00003881 case 244:
3882#line 1918 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003883 {
vlm0c6d3812006-03-21 03:40:38 +00003884 yyval.a_constr = asn1p_constraint_new(yylineno);
3885 checkmem(yyval.a_constr);
3886 yyval.a_constr->type = ACT_EL_EXT;
vlm1aeaddd2006-07-13 08:24:20 +00003887 yyval.a_constr->value = asn1p_value_frombuf("...", 3, 1);
3888 }
3889 break;
3890
vlm1bc782f2006-09-21 01:50:37 +00003891 case 245:
3892#line 1924 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003893 {
vlm0c6d3812006-03-21 03:40:38 +00003894 yyval.a_constr = asn1p_constraint_new(yylineno);
3895 checkmem(yyval.a_constr);
3896 yyval.a_constr->type = ACT_EL_VALUE;
3897 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[-2].tv_str, strlen(yyvsp[-2].tv_str), 0);
3898 yyval.a_constr->presence = yyvsp[0].a_pres;
3899 if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003900 }
3901 break;
3902
vlm1bc782f2006-09-21 01:50:37 +00003903 case 246:
3904#line 1938 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003905 { yyval.a_pres = ACPRES_DEFAULT; }
3906 break;
3907
vlm1bc782f2006-09-21 01:50:37 +00003908 case 247:
3909#line 1939 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003910 { yyval.a_pres = yyvsp[0].a_pres; }
3911 break;
3912
vlm1bc782f2006-09-21 01:50:37 +00003913 case 248:
3914#line 1943 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003915 {
vlm0c6d3812006-03-21 03:40:38 +00003916 yyval.a_pres = ACPRES_PRESENT;
vlm1aeaddd2006-07-13 08:24:20 +00003917 }
3918 break;
3919
vlm1bc782f2006-09-21 01:50:37 +00003920 case 249:
3921#line 1946 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003922 {
vlm0c6d3812006-03-21 03:40:38 +00003923 yyval.a_pres = ACPRES_ABSENT;
vlm1aeaddd2006-07-13 08:24:20 +00003924 }
3925 break;
3926
vlm1bc782f2006-09-21 01:50:37 +00003927 case 250:
3928#line 1949 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003929 {
vlm0c6d3812006-03-21 03:40:38 +00003930 yyval.a_pres = ACPRES_OPTIONAL;
vlm1aeaddd2006-07-13 08:24:20 +00003931 }
3932 break;
3933
vlm1bc782f2006-09-21 01:50:37 +00003934 case 254:
3935#line 1964 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003936 { asn1p_lexer_hack_push_opaque_state(); }
3937 break;
3938
vlm1bc782f2006-09-21 01:50:37 +00003939 case 255:
3940#line 1964 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003941 {
vlm43c8ac52006-09-17 04:52:50 +00003942 yyval.a_constr = asn1p_constraint_new(yylineno);
3943 checkmem(yyval.a_constr);
3944 yyval.a_constr->type = ACT_CT_CTDBY;
3945 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
3946 checkmem(yyval.a_constr->value);
3947 yyval.a_constr->value->type = ATV_UNPARSED;
vlm1aeaddd2006-07-13 08:24:20 +00003948 }
3949 break;
3950
vlm1bc782f2006-09-21 01:50:37 +00003951 case 256:
3952#line 1975 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003953 {
3954 yyval.a_constr = asn1p_constraint_new(yylineno);
3955 yyval.a_constr->type = ACT_CT_CTNG;
3956 yyval.a_constr->value = asn1p_value_fromtype(yyvsp[0].a_expr);
3957 }
3958 break;
3959
vlm1bc782f2006-09-21 01:50:37 +00003960 case 257:
3961#line 1983 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003962 { yyval.a_ctype = ACT_EL_RANGE; }
3963 break;
3964
vlm1bc782f2006-09-21 01:50:37 +00003965 case 258:
3966#line 1984 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003967 { yyval.a_ctype = ACT_EL_RLRANGE; }
3968 break;
3969
vlm1bc782f2006-09-21 01:50:37 +00003970 case 259:
3971#line 1985 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003972 { yyval.a_ctype = ACT_EL_LLRANGE; }
3973 break;
3974
vlm1bc782f2006-09-21 01:50:37 +00003975 case 260:
3976#line 1986 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003977 { yyval.a_ctype = ACT_EL_ULRANGE; }
3978 break;
3979
vlm43c8ac52006-09-17 04:52:50 +00003980 case 261:
vlm1bc782f2006-09-21 01:50:37 +00003981#line 1989 "asn1p_y.y"
3982 {
3983 yyval.a_constr = yyvsp[0].a_constr;
3984 }
3985 break;
3986
3987 case 262:
3988#line 1992 "asn1p_y.y"
3989 {
3990 yyval.a_constr = yyvsp[0].a_constr;
3991 }
3992 break;
3993
3994 case 263:
3995#line 2001 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003996 {
vlmfa67ddc2004-06-03 03:38:44 +00003997 asn1p_ref_t *ref = asn1p_ref_new(yylineno);
3998 asn1p_constraint_t *ct;
3999 int ret;
vlm0c6d3812006-03-21 03:40:38 +00004000 ret = asn1p_ref_add_component(ref, yyvsp[-1].tv_str, 0);
vlmfa67ddc2004-06-03 03:38:44 +00004001 checkmem(ret == 0);
4002 ct = asn1p_constraint_new(yylineno);
vlm0c6d3812006-03-21 03:40:38 +00004003 checkmem(yyval.a_constr);
vlmfa67ddc2004-06-03 03:38:44 +00004004 ct->type = ACT_EL_VALUE;
4005 ct->value = asn1p_value_fromref(ref, 0);
vlm0c6d3812006-03-21 03:40:38 +00004006 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
vlm1aeaddd2006-07-13 08:24:20 +00004007 }
4008 break;
4009
vlm1bc782f2006-09-21 01:50:37 +00004010 case 264:
4011#line 2016 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004012 {
vlm0c6d3812006-03-21 03:40:38 +00004013 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00004014 }
4015 break;
4016
vlm1bc782f2006-09-21 01:50:37 +00004017 case 265:
4018#line 2022 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004019 {
vlm0c6d3812006-03-21 03:40:38 +00004020 yyval.a_constr = asn1p_constraint_new(yylineno);
4021 checkmem(yyval.a_constr);
4022 yyval.a_constr->type = ACT_EL_VALUE;
4023 yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
vlm1aeaddd2006-07-13 08:24:20 +00004024 }
4025 break;
4026
vlm1bc782f2006-09-21 01:50:37 +00004027 case 266:
4028#line 2028 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004029 {
vlmfa67ddc2004-06-03 03:38:44 +00004030 asn1p_constraint_t *ct;
4031 ct = asn1p_constraint_new(yylineno);
4032 checkmem(ct);
4033 ct->type = ACT_EL_VALUE;
vlm0c6d3812006-03-21 03:40:38 +00004034 ct->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
4035 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm1aeaddd2006-07-13 08:24:20 +00004036 }
4037 break;
4038
vlm1bc782f2006-09-21 01:50:37 +00004039 case 267:
4040#line 2042 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004041 {
vlm0c6d3812006-03-21 03:40:38 +00004042 char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
vlmfa67ddc2004-06-03 03:38:44 +00004043 int ret;
4044 *p = '@';
vlm0c6d3812006-03-21 03:40:38 +00004045 strcpy(p + 1, yyvsp[0].tv_str);
4046 yyval.a_ref = asn1p_ref_new(yylineno);
4047 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
vlmfa67ddc2004-06-03 03:38:44 +00004048 checkmem(ret == 0);
4049 free(p);
vlm0c6d3812006-03-21 03:40:38 +00004050 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00004051 }
4052 break;
4053
vlm1bc782f2006-09-21 01:50:37 +00004054 case 268:
4055#line 2053 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004056 {
vlm0c6d3812006-03-21 03:40:38 +00004057 char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
vlmfa67ddc2004-06-03 03:38:44 +00004058 int ret;
4059 p[0] = '@';
4060 p[1] = '.';
vlm0c6d3812006-03-21 03:40:38 +00004061 strcpy(p + 2, yyvsp[0].tv_str);
4062 yyval.a_ref = asn1p_ref_new(yylineno);
4063 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
vlmfa67ddc2004-06-03 03:38:44 +00004064 checkmem(ret == 0);
4065 free(p);
vlm0c6d3812006-03-21 03:40:38 +00004066 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00004067 }
4068 break;
4069
vlm1bc782f2006-09-21 01:50:37 +00004070 case 269:
4071#line 2069 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004072 {
vlm0c6d3812006-03-21 03:40:38 +00004073 yyval.tv_str = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00004074 }
4075 break;
4076
vlm1bc782f2006-09-21 01:50:37 +00004077 case 270:
4078#line 2072 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004079 {
vlm0c6d3812006-03-21 03:40:38 +00004080 int l1 = strlen(yyvsp[-2].tv_str);
4081 int l3 = strlen(yyvsp[0].tv_str);
4082 yyval.tv_str = malloc(l1 + 1 + l3 + 1);
4083 memcpy(yyval.tv_str, yyvsp[-2].tv_str, l1);
4084 yyval.tv_str[l1] = '.';
4085 memcpy(yyval.tv_str + l1 + 1, yyvsp[0].tv_str, l3);
4086 yyval.tv_str[l1 + 1 + l3] = '\0';
vlm1aeaddd2006-07-13 08:24:20 +00004087 }
4088 break;
4089
vlm1bc782f2006-09-21 01:50:37 +00004090 case 271:
4091#line 2090 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004092 {
vlm0c6d3812006-03-21 03:40:38 +00004093 yyval.a_marker.flags = EM_NOMARK;
4094 yyval.a_marker.default_value = 0;
vlm1aeaddd2006-07-13 08:24:20 +00004095 }
4096 break;
4097
vlm1bc782f2006-09-21 01:50:37 +00004098 case 272:
4099#line 2094 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004100 { yyval.a_marker = yyvsp[0].a_marker; }
4101 break;
4102
vlm1bc782f2006-09-21 01:50:37 +00004103 case 273:
4104#line 2098 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004105 {
vlm0c6d3812006-03-21 03:40:38 +00004106 yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
4107 yyval.a_marker.default_value = 0;
vlm1aeaddd2006-07-13 08:24:20 +00004108 }
4109 break;
4110
vlm1bc782f2006-09-21 01:50:37 +00004111 case 274:
4112#line 2102 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004113 {
vlm0c6d3812006-03-21 03:40:38 +00004114 yyval.a_marker.flags = EM_DEFAULT;
4115 yyval.a_marker.default_value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00004116 }
4117 break;
4118
vlm1bc782f2006-09-21 01:50:37 +00004119 case 275:
4120#line 2125 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004121 {
vlm43c8ac52006-09-17 04:52:50 +00004122 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004123 checkmem(yyval.a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00004124 }
4125 break;
4126
vlm1bc782f2006-09-21 01:50:37 +00004127 case 276:
4128#line 2129 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004129 {
vlm0c6d3812006-03-21 03:40:38 +00004130 yyval.a_expr = yyvsp[-1].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00004131 }
4132 break;
4133
vlm1bc782f2006-09-21 01:50:37 +00004134 case 277:
4135#line 2135 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004136 {
vlm43c8ac52006-09-17 04:52:50 +00004137 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004138 checkmem(yyval.a_expr);
4139 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00004140 }
4141 break;
4142
vlm1bc782f2006-09-21 01:50:37 +00004143 case 278:
4144#line 2140 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004145 {
vlm0c6d3812006-03-21 03:40:38 +00004146 yyval.a_expr = yyvsp[-2].a_expr;
4147 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00004148 }
4149 break;
4150
vlm1bc782f2006-09-21 01:50:37 +00004151 case 279:
4152#line 2147 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004153 {
vlm43c8ac52006-09-17 04:52:50 +00004154 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004155 checkmem(yyval.a_expr);
4156 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
4157 yyval.a_expr->meta_type = AMT_VALUE;
4158 yyval.a_expr->Identifier = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00004159 }
4160 break;
4161
vlm43c8ac52006-09-17 04:52:50 +00004162 case 280:
vlm1bc782f2006-09-21 01:50:37 +00004163#line 2154 "asn1p_y.y"
4164 {
4165 yyval.a_expr = NEW_EXPR();
4166 checkmem(yyval.a_expr);
4167 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
4168 yyval.a_expr->meta_type = AMT_VALUE;
4169 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
4170 yyval.a_expr->value = yyvsp[-1].a_value;
4171 }
4172 break;
4173
4174 case 281:
4175#line 2162 "asn1p_y.y"
4176 {
4177 yyval.a_expr = NEW_EXPR();
4178 checkmem(yyval.a_expr);
4179 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
4180 yyval.a_expr->meta_type = AMT_VALUE;
4181 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
4182 yyval.a_expr->value = yyvsp[-1].a_value;
4183 }
4184 break;
4185
4186 case 282:
4187#line 2170 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004188 {
vlm43c8ac52006-09-17 04:52:50 +00004189 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004190 checkmem(yyval.a_expr);
4191 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
4192 yyval.a_expr->meta_type = AMT_VALUE;
4193 yyval.a_expr->value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00004194 }
4195 break;
4196
vlm1bc782f2006-09-21 01:50:37 +00004197 case 283:
4198#line 2177 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004199 {
vlm43c8ac52006-09-17 04:52:50 +00004200 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004201 checkmem(yyval.a_expr);
4202 yyval.a_expr->Identifier = strdup("...");
4203 checkmem(yyval.a_expr->Identifier);
4204 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
4205 yyval.a_expr->meta_type = AMT_VALUE;
vlm1aeaddd2006-07-13 08:24:20 +00004206 }
4207 break;
4208
vlm1bc782f2006-09-21 01:50:37 +00004209 case 284:
4210#line 2188 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00004211 {
4212 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
4213 checkmem(yyval.a_value);
4214 }
4215 break;
4216
vlm43c8ac52006-09-17 04:52:50 +00004217 case 285:
vlm1bc782f2006-09-21 01:50:37 +00004218#line 2192 "asn1p_y.y"
4219 {
4220 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
4221 checkmem(yyval.a_value);
4222 }
4223 break;
4224
4225 case 287:
4226#line 2200 "asn1p_y.y"
vlme745fcd2006-09-05 16:18:34 +00004227 {
4228 yyval.a_value = asn1p_value_fromdouble(yyvsp[0].a_dbl);
4229 checkmem(yyval.a_value);
4230 }
vlm1aeaddd2006-07-13 08:24:20 +00004231 break;
4232
vlm1bc782f2006-09-21 01:50:37 +00004233 case 288:
4234#line 2231 "asn1p_y.y"
vlme745fcd2006-09-05 16:18:34 +00004235 { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); }
4236 break;
4237
vlm1bc782f2006-09-21 01:50:37 +00004238 case 289:
4239#line 2232 "asn1p_y.y"
vlme745fcd2006-09-05 16:18:34 +00004240 { yyval.a_tag = yyvsp[0].a_tag; }
4241 break;
4242
vlm1bc782f2006-09-21 01:50:37 +00004243 case 290:
4244#line 2236 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004245 {
vlm0c6d3812006-03-21 03:40:38 +00004246 yyval.a_tag = yyvsp[-1].a_tag;
4247 yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
vlm1aeaddd2006-07-13 08:24:20 +00004248 }
4249 break;
4250
vlm1bc782f2006-09-21 01:50:37 +00004251 case 291:
4252#line 2243 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004253 {
vlm0c6d3812006-03-21 03:40:38 +00004254 yyval.a_tag = yyvsp[-2].a_tag;
4255 yyval.a_tag.tag_value = yyvsp[-1].a_int;
vlm1aeaddd2006-07-13 08:24:20 +00004256 }
4257 break;
4258
vlm1bc782f2006-09-21 01:50:37 +00004259 case 292:
4260#line 2249 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004261 { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; }
4262 break;
4263
vlm1bc782f2006-09-21 01:50:37 +00004264 case 293:
4265#line 2250 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004266 { yyval.a_tag.tag_class = TC_UNIVERSAL; }
4267 break;
4268
vlm1bc782f2006-09-21 01:50:37 +00004269 case 294:
4270#line 2251 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004271 { yyval.a_tag.tag_class = TC_APPLICATION; }
4272 break;
4273
vlm1bc782f2006-09-21 01:50:37 +00004274 case 295:
4275#line 2252 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004276 { yyval.a_tag.tag_class = TC_PRIVATE; }
4277 break;
4278
vlm1bc782f2006-09-21 01:50:37 +00004279 case 296:
4280#line 2256 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004281 { yyval.a_tag.tag_mode = TM_DEFAULT; }
4282 break;
4283
vlm1bc782f2006-09-21 01:50:37 +00004284 case 297:
4285#line 2257 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004286 { yyval.a_tag.tag_mode = TM_IMPLICIT; }
4287 break;
4288
vlm1bc782f2006-09-21 01:50:37 +00004289 case 298:
4290#line 2258 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004291 { yyval.a_tag.tag_mode = TM_EXPLICIT; }
4292 break;
4293
vlm43c8ac52006-09-17 04:52:50 +00004294 case 299:
vlm1bc782f2006-09-21 01:50:37 +00004295#line 2262 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004296 {
vlmdfbff8c2006-03-21 09:41:28 +00004297 checkmem(yyvsp[0].tv_str);
4298 yyval.tv_str = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00004299 }
4300 break;
4301
vlm43c8ac52006-09-17 04:52:50 +00004302 case 300:
vlm1bc782f2006-09-21 01:50:37 +00004303#line 2266 "asn1p_y.y"
4304 {
4305 checkmem(yyvsp[0].tv_str);
4306 yyval.tv_str = yyvsp[0].tv_str;
4307 }
vlmd3420d32006-09-14 10:35:20 +00004308 break;
4309
vlm43c8ac52006-09-17 04:52:50 +00004310 case 301:
vlm1bc782f2006-09-21 01:50:37 +00004311#line 2274 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00004312 {
vlm1bc782f2006-09-21 01:50:37 +00004313 checkmem(yyvsp[0].tv_str);
vlmd3420d32006-09-14 10:35:20 +00004314 yyval.tv_str = yyvsp[0].tv_str;
4315 }
4316 break;
4317
vlm43c8ac52006-09-17 04:52:50 +00004318 case 302:
vlm1bc782f2006-09-21 01:50:37 +00004319#line 2281 "asn1p_y.y"
4320 { yyval.tv_str = 0; }
4321 break;
4322
4323 case 303:
4324#line 2282 "asn1p_y.y"
4325 {
4326 yyval.tv_str = yyvsp[0].tv_str;
4327 }
4328 break;
4329
4330 case 304:
4331#line 2288 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00004332 {
4333 checkmem(yyvsp[0].tv_str);
4334 yyval.tv_str = yyvsp[0].tv_str;
4335 }
4336 break;
4337
vlm1aeaddd2006-07-13 08:24:20 +00004338
4339 }
4340
4341/* Line 1016 of /usr/local/share/bison/yacc.c. */
vlm1bc782f2006-09-21 01:50:37 +00004342#line 4343 "asn1p_y.c"
vlmfa67ddc2004-06-03 03:38:44 +00004343
4344 yyvsp -= yylen;
4345 yyssp -= yylen;
vlmfa67ddc2004-06-03 03:38:44 +00004346
vlm1aeaddd2006-07-13 08:24:20 +00004347
4348#if YYDEBUG
vlm0c6d3812006-03-21 03:40:38 +00004349 if (yydebug)
4350 {
vlm1aeaddd2006-07-13 08:24:20 +00004351 short *yyssp1 = yyss - 1;
4352 YYFPRINTF (stderr, "state stack now");
4353 while (yyssp1 != yyssp)
4354 YYFPRINTF (stderr, " %d", *++yyssp1);
4355 YYFPRINTF (stderr, "\n");
vlm0c6d3812006-03-21 03:40:38 +00004356 }
4357#endif
vlmfa67ddc2004-06-03 03:38:44 +00004358
4359 *++yyvsp = yyval;
4360
vlmfa67ddc2004-06-03 03:38:44 +00004361
vlm1aeaddd2006-07-13 08:24:20 +00004362 /* Now `shift' the result of the reduction. Determine what state
4363 that goes to, based on the state we popped back to and the rule
4364 number reduced by. */
vlmfa67ddc2004-06-03 03:38:44 +00004365
4366 yyn = yyr1[yyn];
4367
vlm1aeaddd2006-07-13 08:24:20 +00004368 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
4369 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
vlmfa67ddc2004-06-03 03:38:44 +00004370 yystate = yytable[yystate];
4371 else
vlm1aeaddd2006-07-13 08:24:20 +00004372 yystate = yydefgoto[yyn - YYNTOKENS];
vlmfa67ddc2004-06-03 03:38:44 +00004373
4374 goto yynewstate;
4375
vlmfa67ddc2004-06-03 03:38:44 +00004376
vlm1aeaddd2006-07-13 08:24:20 +00004377/*------------------------------------.
4378| yyerrlab -- here on detecting error |
4379`------------------------------------*/
4380yyerrlab:
4381 /* If not already recovering from an error, report this error. */
4382 if (!yyerrstatus)
vlmfa67ddc2004-06-03 03:38:44 +00004383 {
4384 ++yynerrs;
vlm1aeaddd2006-07-13 08:24:20 +00004385#if YYERROR_VERBOSE
vlmfa67ddc2004-06-03 03:38:44 +00004386 yyn = yypact[yystate];
4387
vlm1aeaddd2006-07-13 08:24:20 +00004388 if (YYPACT_NINF < yyn && yyn < YYLAST)
vlmfa67ddc2004-06-03 03:38:44 +00004389 {
vlm1aeaddd2006-07-13 08:24:20 +00004390 YYSIZE_T yysize = 0;
4391 int yytype = YYTRANSLATE (yychar);
4392 char *yymsg;
4393 int yyx, yycount;
vlmfa67ddc2004-06-03 03:38:44 +00004394
vlm1aeaddd2006-07-13 08:24:20 +00004395 yycount = 0;
4396 /* Start YYX at -YYN if negative to avoid negative indexes in
4397 YYCHECK. */
4398 for (yyx = yyn < 0 ? -yyn : 0;
4399 yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
4400 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
4401 yysize += yystrlen (yytname[yyx]) + 15, yycount++;
4402 yysize += yystrlen ("parse error, unexpected ") + 1;
4403 yysize += yystrlen (yytname[yytype]);
4404 yymsg = (char *) YYSTACK_ALLOC (yysize);
4405 if (yymsg != 0)
vlmfa67ddc2004-06-03 03:38:44 +00004406 {
vlm1aeaddd2006-07-13 08:24:20 +00004407 char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
4408 yyp = yystpcpy (yyp, yytname[yytype]);
vlm0c6d3812006-03-21 03:40:38 +00004409
vlm1aeaddd2006-07-13 08:24:20 +00004410 if (yycount < 5)
vlmfa67ddc2004-06-03 03:38:44 +00004411 {
vlm1aeaddd2006-07-13 08:24:20 +00004412 yycount = 0;
4413 for (yyx = yyn < 0 ? -yyn : 0;
4414 yyx < (int) (sizeof (yytname) / sizeof (char *));
4415 yyx++)
4416 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
vlm0c6d3812006-03-21 03:40:38 +00004417 {
vlm1aeaddd2006-07-13 08:24:20 +00004418 const char *yyq = ! yycount ? ", expecting " : " or ";
4419 yyp = yystpcpy (yyp, yyq);
4420 yyp = yystpcpy (yyp, yytname[yyx]);
4421 yycount++;
vlm0c6d3812006-03-21 03:40:38 +00004422 }
vlmfa67ddc2004-06-03 03:38:44 +00004423 }
vlm1aeaddd2006-07-13 08:24:20 +00004424 yyerror (yymsg);
4425 YYSTACK_FREE (yymsg);
vlmfa67ddc2004-06-03 03:38:44 +00004426 }
4427 else
vlm1aeaddd2006-07-13 08:24:20 +00004428 yyerror ("parse error; also virtual memory exhausted");
vlmfa67ddc2004-06-03 03:38:44 +00004429 }
4430 else
4431#endif /* YYERROR_VERBOSE */
vlm1aeaddd2006-07-13 08:24:20 +00004432 yyerror ("parse error");
vlmfa67ddc2004-06-03 03:38:44 +00004433 }
vlm0c6d3812006-03-21 03:40:38 +00004434 goto yyerrlab1;
vlmfa67ddc2004-06-03 03:38:44 +00004435
vlm1aeaddd2006-07-13 08:24:20 +00004436
4437/*----------------------------------------------------.
4438| yyerrlab1 -- error raised explicitly by an action. |
4439`----------------------------------------------------*/
4440yyerrlab1:
vlmfa67ddc2004-06-03 03:38:44 +00004441 if (yyerrstatus == 3)
4442 {
vlm1aeaddd2006-07-13 08:24:20 +00004443 /* If just tried and failed to reuse lookahead token after an
4444 error, discard it. */
vlmfa67ddc2004-06-03 03:38:44 +00004445
vlm1aeaddd2006-07-13 08:24:20 +00004446 /* Return failure if at end of input. */
vlm0c6d3812006-03-21 03:40:38 +00004447 if (yychar == YYEOF)
vlm1aeaddd2006-07-13 08:24:20 +00004448 {
4449 /* Pop the error token. */
4450 YYPOPSTACK;
4451 /* Pop the rest of the stack. */
4452 while (yyssp > yyss)
4453 {
4454 YYDPRINTF ((stderr, "Error: popping "));
4455 YYDSYMPRINT ((stderr,
4456 yystos[*yyssp],
4457 *yyvsp));
4458 YYDPRINTF ((stderr, "\n"));
4459 yydestruct (yystos[*yyssp], *yyvsp);
4460 YYPOPSTACK;
4461 }
4462 YYABORT;
4463 }
vlmfa67ddc2004-06-03 03:38:44 +00004464
vlm1aeaddd2006-07-13 08:24:20 +00004465 YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
4466 yychar, yytname[yychar1]));
4467 yydestruct (yychar1, yylval);
vlm0c6d3812006-03-21 03:40:38 +00004468 yychar = YYEMPTY;
vlmfa67ddc2004-06-03 03:38:44 +00004469 }
4470
vlm1aeaddd2006-07-13 08:24:20 +00004471 /* Else will try to reuse lookahead token after shifting the error
4472 token. */
vlm0c6d3812006-03-21 03:40:38 +00004473
vlm1aeaddd2006-07-13 08:24:20 +00004474 yyerrstatus = 3; /* Each real token shifted decrements this. */
vlm0c6d3812006-03-21 03:40:38 +00004475
vlm1aeaddd2006-07-13 08:24:20 +00004476 for (;;)
vlm0c6d3812006-03-21 03:40:38 +00004477 {
vlm1aeaddd2006-07-13 08:24:20 +00004478 yyn = yypact[yystate];
4479 if (yyn != YYPACT_NINF)
4480 {
4481 yyn += YYTERROR;
4482 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
4483 {
4484 yyn = yytable[yyn];
4485 if (0 < yyn)
4486 break;
4487 }
4488 }
4489
4490 /* Pop the current state because it cannot handle the error token. */
4491 if (yyssp == yyss)
4492 YYABORT;
4493
4494 YYDPRINTF ((stderr, "Error: popping "));
4495 YYDSYMPRINT ((stderr,
4496 yystos[*yyssp], *yyvsp));
4497 YYDPRINTF ((stderr, "\n"));
4498
4499 yydestruct (yystos[yystate], *yyvsp);
4500 yyvsp--;
4501 yystate = *--yyssp;
4502
4503
4504#if YYDEBUG
4505 if (yydebug)
4506 {
4507 short *yyssp1 = yyss - 1;
4508 YYFPRINTF (stderr, "Error: state stack now");
4509 while (yyssp1 != yyssp)
4510 YYFPRINTF (stderr, " %d", *++yyssp1);
4511 YYFPRINTF (stderr, "\n");
4512 }
vlm0c6d3812006-03-21 03:40:38 +00004513#endif
vlm0c6d3812006-03-21 03:40:38 +00004514 }
vlm0c6d3812006-03-21 03:40:38 +00004515
vlmfa67ddc2004-06-03 03:38:44 +00004516 if (yyn == YYFINAL)
4517 YYACCEPT;
4518
vlm1aeaddd2006-07-13 08:24:20 +00004519 YYDPRINTF ((stderr, "Shifting error token, "));
vlm0c6d3812006-03-21 03:40:38 +00004520
vlmfa67ddc2004-06-03 03:38:44 +00004521 *++yyvsp = yylval;
vlm1aeaddd2006-07-13 08:24:20 +00004522
vlmfa67ddc2004-06-03 03:38:44 +00004523
4524 yystate = yyn;
4525 goto yynewstate;
4526
vlm0c6d3812006-03-21 03:40:38 +00004527
vlm1aeaddd2006-07-13 08:24:20 +00004528/*-------------------------------------.
4529| yyacceptlab -- YYACCEPT comes here. |
4530`-------------------------------------*/
4531yyacceptlab:
4532 yyresult = 0;
4533 goto yyreturn;
4534
4535/*-----------------------------------.
4536| yyabortlab -- YYABORT comes here. |
4537`-----------------------------------*/
4538yyabortlab:
4539 yyresult = 1;
4540 goto yyreturn;
4541
4542#ifndef yyoverflow
4543/*----------------------------------------------.
4544| yyoverflowlab -- parser overflow comes here. |
4545`----------------------------------------------*/
4546yyoverflowlab:
4547 yyerror ("parser stack overflow");
4548 yyresult = 2;
4549 /* Fall through. */
vlm0c6d3812006-03-21 03:40:38 +00004550#endif
vlm1aeaddd2006-07-13 08:24:20 +00004551
4552yyreturn:
4553#ifndef yyoverflow
4554 if (yyss != yyssa)
4555 YYSTACK_FREE (yyss);
4556#endif
4557 return yyresult;
vlmfa67ddc2004-06-03 03:38:44 +00004558}
vlm1aeaddd2006-07-13 08:24:20 +00004559
4560
vlm1bc782f2006-09-21 01:50:37 +00004561#line 2294 "asn1p_y.y"
vlmfa67ddc2004-06-03 03:38:44 +00004562
4563
4564
4565/*
4566 * Convert Xstring ('0101'B or '5'H) to the binary vector.
4567 */
4568static asn1p_value_t *
4569_convert_bitstring2binary(char *str, int base) {
4570 asn1p_value_t *val;
4571 int slen;
4572 int memlen;
4573 int baselen;
4574 int bits;
4575 uint8_t *binary_vector;
4576 uint8_t *bv_ptr;
4577 uint8_t cur_val;
4578
4579 assert(str);
4580 assert(str[0] == '\'');
4581
4582 switch(base) {
4583 case 'B':
4584 baselen = 1;
4585 break;
4586 case 'H':
4587 baselen = 4;
4588 break;
4589 default:
4590 assert(base == 'B' || base == 'H');
4591 errno = EINVAL;
4592 return NULL;
4593 }
4594
4595 slen = strlen(str);
4596 assert(str[slen - 1] == base);
4597 assert(str[slen - 2] == '\'');
4598
4599 memlen = slen / (8 / baselen); /* Conservative estimate */
4600
4601 bv_ptr = binary_vector = malloc(memlen + 1);
4602 if(bv_ptr == NULL)
4603 /* ENOMEM */
4604 return NULL;
4605
4606 cur_val = 0;
4607 bits = 0;
4608 while(*(++str) != '\'') {
4609 switch(baselen) {
4610 case 1:
4611 switch(*str) {
4612 case '1':
4613 cur_val |= 1 << (7 - (bits % 8));
4614 case '0':
4615 break;
4616 default:
4617 assert(!"_y UNREACH1");
4618 case ' ': case '\r': case '\n':
4619 continue;
4620 }
4621 break;
4622 case 4:
4623 switch(*str) {
4624 case '0': case '1': case '2': case '3': case '4':
4625 case '5': case '6': case '7': case '8': case '9':
4626 cur_val |= (*str - '0') << (4 - (bits % 8));
4627 break;
4628 case 'A': case 'B': case 'C':
4629 case 'D': case 'E': case 'F':
4630 cur_val |= ((*str - 'A') + 10)
4631 << (4 - (bits % 8));
4632 break;
4633 default:
4634 assert(!"_y UNREACH2");
4635 case ' ': case '\r': case '\n':
4636 continue;
4637 }
4638 break;
4639 }
4640
4641 bits += baselen;
4642 if((bits % 8) == 0) {
4643 *bv_ptr++ = cur_val;
4644 cur_val = 0;
4645 }
4646 }
4647
4648 *bv_ptr = cur_val;
4649 assert((bv_ptr - binary_vector) <= memlen);
4650
4651 val = asn1p_value_frombits(binary_vector, bits, 0);
4652 if(val == NULL) {
4653 free(binary_vector);
4654 }
4655
4656 return val;
4657}
4658
vlm5d89c3d2005-08-13 09:07:11 +00004659/*
4660 * For unnamed types (used in old X.208 compliant modules)
4661 * generate some sort of interim names, to not to force human being to fix
4662 * the specification's compliance to modern ASN.1 standards.
4663 */
4664static void
4665_fixup_anonymous_identifier(asn1p_expr_t *expr) {
4666 char *p;
4667 assert(expr->Identifier == 0);
4668
4669 /*
4670 * Try to figure out the type name
4671 * without going too much into details
4672 */
4673 expr->Identifier = ASN_EXPR_TYPE2STR(expr->expr_type);
4674 if(expr->reference && expr->reference->comp_count > 0)
4675 expr->Identifier = expr->reference->components[0].name;
4676
4677 fprintf(stderr,
4678 "WARNING: Line %d: expected lower-case member identifier, "
4679 "found an unnamed %s.\n"
4680 "WARNING: Obsolete X.208 syntax detected, "
4681 "please give the member a name.\n",
4682 yylineno, expr->Identifier ? expr->Identifier : "type");
4683
4684 if(!expr->Identifier)
4685 expr->Identifier = "unnamed";
4686 expr->Identifier = strdup(expr->Identifier);
4687 assert(expr->Identifier);
4688 /* Make a lowercase identifier from the type name */
4689 for(p = expr->Identifier; *p; p++) {
4690 switch(*p) {
4691 case 'A' ... 'Z': *p += 32; break;
4692 case ' ': *p = '_'; break;
4693 case '-': *p = '_'; break;
4694 }
4695 }
4696 fprintf(stderr, "NOTE: Assigning temporary identifier \"%s\". "
4697 "Name clash may occur later.\n",
4698 expr->Identifier);
4699}
4700
vlmfa67ddc2004-06-03 03:38:44 +00004701int
4702yyerror(const char *msg) {
vlm808411d2006-03-14 16:31:37 +00004703 extern char *asn1p_text;
vlmfa67ddc2004-06-03 03:38:44 +00004704 fprintf(stderr,
4705 "ASN.1 grammar parse error "
4706 "near line %d (token \"%s\"): %s\n",
vlm39e5ed72004-09-05 10:40:41 +00004707 yylineno, asn1p_text, msg);
vlmfa67ddc2004-06-03 03:38:44 +00004708 return -1;
4709}
4710
vlm1aeaddd2006-07-13 08:24:20 +00004711