blob: 95d451343e7349b221de5ef4340dcf76d8b24ed6 [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
vlm8cc3f742006-10-18 18:40:14 +0000526#define YYLAST 871
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. */
vlm8cc3f742006-10-18 18:40:14 +0000531#define YYNNTS 121
vlm1aeaddd2006-07-13 08:24:20 +0000532/* YYNRULES -- Number of rules. */
vlm8cc3f742006-10-18 18:40:14 +0000533#define YYNRULES 309
vlm1aeaddd2006-07-13 08:24:20 +0000534/* YYNRULES -- Number of states. */
vlm8cc3f742006-10-18 18:40:14 +0000535#define YYNSTATES 469
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,
vlm86851cd2006-10-13 12:37:39 +0000595 103, 104, 106, 108, 111, 112, 114, 119, 121, 125,
596 127, 131, 133, 134, 136, 140, 144, 147, 149, 153,
597 155, 159, 161, 165, 170, 172, 174, 179, 183, 187,
598 194, 201, 203, 207, 209, 213, 217, 221, 225, 227,
599 231, 233, 235, 237, 239, 240, 242, 244, 248, 252,
600 255, 259, 261, 263, 267, 270, 272, 274, 280, 281,
601 283, 285, 289, 292, 297, 301, 305, 309, 313, 317,
602 318, 320, 321, 328, 330, 333, 335, 337, 339, 343,
603 345, 349, 353, 357, 358, 361, 363, 368, 373, 378,
604 385, 392, 394, 399, 403, 405, 409, 413, 417, 419,
605 423, 425, 429, 431, 433, 435, 437, 441, 445, 447,
606 452, 454, 456, 460, 461, 465, 467, 469, 471, 473,
607 475, 477, 479, 481, 485, 487, 489, 491, 493, 496,
608 498, 500, 502, 504, 507, 510, 512, 514, 517, 520,
609 522, 524, 526, 528, 530, 533, 535, 538, 540, 542,
610 544, 546, 548, 550, 552, 554, 556, 558, 560, 562,
611 564, 566, 568, 570, 572, 574, 575, 577, 579, 583,
612 585, 590, 594, 599, 601, 603, 607, 613, 615, 619,
613 621, 625, 627, 631, 633, 637, 642, 646, 648, 650,
vlm8cc3f742006-10-18 18:40:14 +0000614 654, 658, 662, 666, 668, 670, 673, 676, 678, 680,
615 682, 684, 686, 688, 690, 692, 696, 702, 704, 708,
616 710, 714, 715, 717, 719, 721, 723, 725, 727, 729,
617 730, 736, 739, 741, 744, 747, 751, 753, 755, 759,
618 764, 766, 770, 773, 777, 779, 783, 784, 786, 788,
619 791, 794, 798, 800, 804, 806, 811, 816, 818, 820,
620 822, 824, 826, 828, 829, 831, 834, 839, 840, 842,
621 844, 846, 847, 849, 851, 853, 855, 857, 858, 860
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,
vlm8cc3f742006-10-18 18:40:14 +0000628 -1, 238, 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,
vlm8cc3f742006-10-18 18:40:14 +0000630 -1, 129, -1, 128, 129, -1, 241, -1, 241, 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,
vlm86851cd2006-10-13 12:37:39 +0000634 -1, 146, 138, 135, -1, 136, -1, 135, 136, -1,
635 153, -1, 183, -1, 151, -1, -1, 43, 16, 137,
636 -1, 193, -1, -1, 139, -1, 59, 140, 112, -1,
637 59, 51, -1, -1, 141, -1, 143, -1, 141, 143,
vlm8cc3f742006-10-18 18:40:14 +0000638 -1, -1, 127, -1, 144, 51, 238, 142, -1, 145,
639 -1, 144, 113, 145, -1, 238, -1, 238, 108, 109,
640 -1, 241, -1, -1, 147, -1, 47, 148, 112, -1,
vlm86851cd2006-10-13 12:37:39 +0000641 47, 22, 112, -1, 47, 112, -1, 149, -1, 148,
vlm8cc3f742006-10-18 18:40:14 +0000642 113, 149, -1, 238, -1, 238, 108, 109, -1, 241,
643 -1, 108, 200, 109, -1, 238, 152, 3, 150, -1,
644 192, -1, 177, -1, 177, 108, 156, 109, -1, 238,
645 3, 173, -1, 238, 3, 163, -1, 238, 108, 154,
646 109, 3, 173, -1, 238, 108, 154, 109, 3, 163,
647 -1, 155, -1, 154, 113, 155, -1, 238, -1, 238,
648 114, 241, -1, 238, 114, 238, -1, 190, 114, 241,
649 -1, 190, 114, 238, -1, 157, -1, 156, 113, 157,
650 -1, 173, -1, 186, -1, 241, -1, 150, -1, -1,
651 159, -1, 160, -1, 159, 113, 160, -1, 241, 173,
652 226, -1, 173, 226, -1, 35, 73, 173, -1, 172,
653 -1, 162, -1, 161, 113, 162, -1, 241, 173, -1,
vlm86851cd2006-10-13 12:37:39 +0000654 172, -1, 173, -1, 33, 108, 165, 109, 167, -1,
655 -1, 93, -1, 166, -1, 165, 113, 166, -1, 17,
vlm8cc3f742006-10-18 18:40:14 +0000656 226, -1, 18, 173, 164, 226, -1, 18, 181, 226,
657 -1, 18, 182, 226, -1, 17, 181, 226, -1, 17,
658 173, 226, -1, 17, 182, 226, -1, -1, 168, -1,
vlm86851cd2006-10-13 12:37:39 +0000659 -1, 100, 87, 108, 169, 170, 109, -1, 171, -1,
660 170, 171, -1, 4, -1, 19, -1, 180, -1, 115,
661 170, 116, -1, 107, -1, 107, 117, 187, -1, 107,
vlm8cc3f742006-10-18 18:40:14 +0000662 117, 231, -1, 233, 175, 196, -1, -1, 174, 176,
vlm86851cd2006-10-13 12:37:39 +0000663 -1, 152, -1, 32, 108, 161, 109, -1, 83, 108,
664 158, 109, -1, 84, 108, 158, 109, -1, 83, 196,
vlm8cc3f742006-10-18 18:40:14 +0000665 73, 240, 233, 175, -1, 84, 196, 73, 240, 233,
666 175, -1, 23, -1, 23, 40, 30, 241, -1, 61,
667 73, 177, -1, 15, -1, 15, 118, 238, -1, 239,
668 118, 238, -1, 15, 118, 241, -1, 239, -1, 239,
vlm86851cd2006-10-13 12:37:39 +0000669 118, 178, -1, 179, -1, 178, 118, 179, -1, 180,
670 -1, 17, -1, 18, -1, 17, -1, 181, 118, 17,
vlm8cc3f742006-10-18 18:40:14 +0000671 -1, 181, 118, 18, -1, 16, -1, 241, 152, 3,
672 184, -1, 186, -1, 187, -1, 241, 114, 184, -1,
vlm86851cd2006-10-13 12:37:39 +0000673 -1, 108, 185, 189, -1, 68, -1, 50, -1, 91,
vlm8cc3f742006-10-18 18:40:14 +0000674 -1, 6, -1, 8, -1, 188, -1, 231, -1, 241,
675 -1, 238, 118, 241, -1, 7, -1, 13, -1, 14,
vlm86851cd2006-10-13 12:37:39 +0000676 -1, 5, -1, 189, 5, -1, 29, -1, 68, -1,
677 81, -1, 191, -1, 72, 86, -1, 70, 56, -1,
678 82, -1, 49, -1, 41, 76, -1, 31, 86, -1,
679 96, -1, 52, -1, 193, -1, 63, -1, 45, -1,
vlm8cc3f742006-10-18 18:40:14 +0000680 27, 86, -1, 190, -1, 191, 228, -1, 28, -1,
vlm86851cd2006-10-13 12:37:39 +0000681 53, -1, 54, -1, 55, -1, 64, -1, 69, -1,
682 79, -1, 88, -1, 90, -1, 95, -1, 97, -1,
683 98, -1, 99, -1, 71, -1, 104, -1, 105, -1,
684 102, -1, 103, -1, -1, 197, -1, 198, -1, 110,
vlm8cc3f742006-10-18 18:40:14 +0000685 215, 111, -1, 199, -1, 85, 110, 200, 111, -1,
vlm86851cd2006-10-13 12:37:39 +0000686 110, 200, 111, -1, 199, 110, 200, 111, -1, 107,
687 -1, 201, -1, 201, 113, 107, -1, 201, 113, 107,
688 113, 201, -1, 202, -1, 22, 101, 205, -1, 203,
689 -1, 202, 194, 203, -1, 204, -1, 203, 195, 204,
vlm8cc3f742006-10-18 18:40:14 +0000690 -1, 205, -1, 205, 101, 205, -1, 207, 110, 200,
691 111, -1, 110, 200, 111, -1, 208, -1, 209, -1,
692 208, 219, 208, -1, 66, 219, 208, -1, 208, 219,
693 65, -1, 66, 219, 65, -1, 210, -1, 206, -1,
694 75, 7, -1, 75, 241, -1, 85, -1, 51, -1,
695 50, -1, 91, -1, 232, -1, 188, -1, 241, -1,
696 238, -1, 100, 34, 199, -1, 100, 35, 108, 211,
697 109, -1, 212, -1, 211, 113, 212, -1, 107, -1,
698 241, 196, 213, -1, -1, 214, -1, 78, -1, 20,
699 -1, 74, -1, 216, -1, 220, -1, 218, -1, -1,
700 36, 30, 108, 217, 189, -1, 37, 173, -1, 106,
701 -1, 106, 119, -1, 119, 106, -1, 119, 106, 119,
702 -1, 221, -1, 222, -1, 108, 238, 109, -1, 221,
703 108, 223, 109, -1, 224, -1, 223, 113, 224, -1,
704 120, 225, -1, 120, 118, 225, -1, 241, -1, 225,
705 118, 241, -1, -1, 227, -1, 74, -1, 38, 184,
706 -1, 108, 109, -1, 108, 229, 109, -1, 230, -1,
707 229, 113, 230, -1, 241, -1, 241, 110, 231, 111,
708 -1, 241, 110, 187, 111, -1, 231, -1, 107, -1,
709 10, -1, 11, -1, 231, -1, 12, -1, -1, 234,
710 -1, 235, 237, -1, 115, 236, 10, 116, -1, -1,
711 94, -1, 24, -1, 80, -1, -1, 57, -1, 46,
712 -1, 15, -1, 16, -1, 16, -1, -1, 241, -1,
713 9, -1
vlm1aeaddd2006-07-13 08:24:20 +0000714};
715
716/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
717static const unsigned short yyrline[] =
718{
vlm8cc3f742006-10-18 18:40:14 +0000719 0, 354, 354, 360, 366, 383, 382, 411, 413, 416,
720 420, 425, 432, 440, 445, 449, 458, 460, 468, 472,
721 480, 484, 487, 490, 494, 514, 516, 524, 533, 537,
722 552, 560, 573, 581, 580, 594, 606, 608, 610, 621,
723 626, 628, 630, 636, 642, 644, 647, 658, 664, 670,
724 677, 683, 692, 694, 705, 709, 712, 719, 725, 731,
725 738, 744, 753, 755, 765, 779, 789, 805, 815, 831,
726 837, 844, 854, 864, 869, 876, 883, 891, 901, 907,
727 913, 917, 925, 936, 958, 960, 962, 968, 974, 982,
728 988, 995, 1000, 1006, 1012, 1018, 1021, 1027, 1037, 1039,
729 1042, 1050, 1057, 1070, 1081, 1091, 1102, 1112, 1123, 1134,
730 1136, 1143, 1141, 1150, 1155, 1161, 1166, 1169, 1173, 1178,
731 1187, 1196, 1207, 1229, 1236, 1255, 1259, 1265, 1271, 1277,
732 1287, 1297, 1303, 1314, 1328, 1337, 1347, 1357, 1367, 1375,
733 1396, 1405, 1414, 1416, 1423, 1430, 1436, 1440, 1446, 1466,
734 1476, 1478, 1479, 1486, 1486, 1491, 1498, 1504, 1509, 1513,
735 1517, 1520, 1525, 1537, 1554, 1559, 1564, 1597, 1607, 1621,
736 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632,
737 1633, 1634, 1640, 1642, 1643, 1646, 1653, 1665, 1667, 1671,
738 1675, 1676, 1677, 1678, 1679, 1683, 1684, 1685, 1686, 1690,
739 1691, 1698, 1698, 1699, 1699, 1701, 1703, 1708, 1710, 1715,
740 1719, 1728, 1732, 1737, 1742, 1745, 1751, 1761, 1763, 1768,
741 1770, 1775, 1777, 1783, 1785, 1790, 1799, 1807, 1813, 1819,
742 1826, 1834, 1842, 1851, 1854, 1859, 1865, 1875, 1879, 1884,
743 1890, 1895, 1896, 1897, 1910, 1924, 1928, 1933, 1937, 1942,
744 1949, 1962, 1964, 1967, 1971, 1974, 1981, 1983, 1984, 1989,
745 1987, 1999, 2007, 2009, 2010, 2011, 2013, 2017, 2025, 2040,
746 2046, 2053, 2066, 2078, 2093, 2097, 2114, 2119, 2122, 2127,
747 2149, 2154, 2159, 2165, 2171, 2179, 2187, 2195, 2202, 2212,
748 2217, 2223, 2225, 2255, 2257, 2260, 2267, 2273, 2275, 2276,
749 2277, 2280, 2282, 2283, 2286, 2291, 2298, 2305, 2307, 2312
vlm1aeaddd2006-07-13 08:24:20 +0000750};
751#endif
752
753#if YYDEBUG || YYERROR_VERBOSE
754/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
755 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
756static const char *const yytname[] =
757{
758 "$end", "error", "$undefined", "TOK_PPEQ", "TOK_whitespace", "TOK_opaque",
759 "TOK_bstring", "TOK_cstring", "TOK_hstring", "TOK_identifier",
vlme745fcd2006-09-05 16:18:34 +0000760 "TOK_number", "TOK_number_negative", "TOK_realnumber", "TOK_tuple",
761 "TOK_quadruple", "TOK_typereference", "TOK_capitalreference",
762 "TOK_typefieldreference", "TOK_valuefieldreference", "TOK_Literal",
763 "TOK_ABSENT", "TOK_ABSTRACT_SYNTAX", "TOK_ALL", "TOK_ANY",
764 "TOK_APPLICATION", "TOK_AUTOMATIC", "TOK_BEGIN", "TOK_BIT",
765 "TOK_BMPString", "TOK_BOOLEAN", "TOK_BY", "TOK_CHARACTER", "TOK_CHOICE",
766 "TOK_CLASS", "TOK_COMPONENT", "TOK_COMPONENTS", "TOK_CONSTRAINED",
767 "TOK_CONTAINING", "TOK_DEFAULT", "TOK_DEFINITIONS", "TOK_DEFINED",
768 "TOK_EMBEDDED", "TOK_ENCODED", "TOK_ENCODING_CONTROL", "TOK_END",
769 "TOK_ENUMERATED", "TOK_EXPLICIT", "TOK_EXPORTS", "TOK_EXTENSIBILITY",
770 "TOK_EXTERNAL", "TOK_FALSE", "TOK_FROM", "TOK_GeneralizedTime",
771 "TOK_GeneralString", "TOK_GraphicString", "TOK_IA5String",
772 "TOK_IDENTIFIER", "TOK_IMPLICIT", "TOK_IMPLIED", "TOK_IMPORTS",
773 "TOK_INCLUDES", "TOK_INSTANCE", "TOK_INSTRUCTIONS", "TOK_INTEGER",
774 "TOK_ISO646String", "TOK_MAX", "TOK_MIN", "TOK_MINUS_INFINITY",
775 "TOK_NULL", "TOK_NumericString", "TOK_OBJECT", "TOK_ObjectDescriptor",
776 "TOK_OCTET", "TOK_OF", "TOK_OPTIONAL", "TOK_PATTERN", "TOK_PDV",
777 "TOK_PLUS_INFINITY", "TOK_PRESENT", "TOK_PrintableString",
778 "TOK_PRIVATE", "TOK_REAL", "TOK_RELATIVE_OID", "TOK_SEQUENCE",
779 "TOK_SET", "TOK_SIZE", "TOK_STRING", "TOK_SYNTAX", "TOK_T61String",
780 "TOK_TAGS", "TOK_TeletexString", "TOK_TRUE", "TOK_TYPE_IDENTIFIER",
781 "TOK_UNIQUE", "TOK_UNIVERSAL", "TOK_UniversalString", "TOK_UTCTime",
782 "TOK_UTF8String", "TOK_VideotexString", "TOK_VisibleString", "TOK_WITH",
783 "TOK_EXCEPT", "'^'", "TOK_INTERSECTION", "'|'", "TOK_UNION",
784 "TOK_TwoDots", "TOK_ThreeDots", "'{'", "'}'", "'('", "')'", "';'",
785 "','", "':'", "'['", "']'", "'!'", "'.'", "'<'", "'@'", "$accept",
vlm43c8ac52006-09-17 04:52:50 +0000786 "ParsedGrammar", "ModuleList", "ModuleDefinition", "@1",
vlme745fcd2006-09-05 16:18:34 +0000787 "optObjectIdentifier", "ObjectIdentifier", "ObjectIdentifierBody",
vlmd3420d32006-09-14 10:35:20 +0000788 "ObjectIdentifierElement", "optModuleDefinitionFlags",
789 "ModuleDefinitionFlags", "ModuleDefinitionFlag", "optModuleBody",
vlm43c8ac52006-09-17 04:52:50 +0000790 "ModuleBody", "AssignmentList", "Assignment", "@2", "optImports",
vlm86851cd2006-10-13 12:37:39 +0000791 "ImportsDefinition", "optImportsBundleSet", "ImportsBundleSet",
792 "AssignedIdentifier", "ImportsBundle", "ImportsList", "ImportsElement",
793 "optExports", "ExportsDefinition", "ExportsBody", "ExportsElement",
794 "ValueSet", "ValueSetTypeAssignment", "DefinedType",
795 "DataTypeReference", "ParameterArgumentList", "ParameterArgumentName",
796 "ActualParameterList", "ActualParameter", "optComponentTypeLists",
797 "ComponentTypeLists", "ComponentType", "AlternativeTypeLists",
798 "AlternativeType", "ObjectClass", "optUnique", "FieldSpec",
799 "ClassField", "optWithSyntax", "WithSyntax", "@3", "WithSyntaxList",
800 "WithSyntaxToken", "ExtensionAndException", "Type",
801 "NSTD_IndirectMarker", "TypeDeclaration", "TypeDeclarationSet",
802 "ComplexTypeReference", "ComplexTypeReferenceAmpList",
803 "ComplexTypeReferenceElement", "PrimitiveFieldReference", "FieldName",
804 "DefinedObjectClass", "ValueDefinition", "Value", "@4", "SimpleValue",
805 "DefinedValue", "RestrictedCharacterStringValue", "Opaque",
806 "BasicTypeId", "BasicTypeId_UniverationCompatible", "BasicType",
807 "BasicString", "UnionMark", "IntersectionMark", "optConstraints",
808 "Constraint", "SubtypeConstraint", "SetOfConstraints",
809 "ElementSetSpecs", "ElementSetSpec", "Unions", "Intersections",
vlm8cc3f742006-10-18 18:40:14 +0000810 "IntersectionElements", "ConstraintSubtypeElement", "PatternConstraint",
811 "ConstraintSpec", "SingleValue", "ContainedSubtype",
812 "InnerTypeConstraint", "WithComponentsList", "WithComponentsElement",
813 "optPresenceConstraint", "PresenceConstraint", "GeneralConstraint",
814 "UserDefinedConstraint", "@5", "ContentsConstraint",
815 "ConstraintRangeSpec", "TableConstraint", "SimpleTableConstraint",
816 "ComponentRelationConstraint", "AtNotationList", "AtNotationElement",
817 "ComponentIdList", "optMarker", "Marker", "UniverationDefinition",
818 "UniverationList", "UniverationElement", "SignedNumber", "RealValue",
819 "optTag", "Tag", "TagTypeValue", "TagClass", "TagPlicit", "TypeRefName",
vlme745fcd2006-09-05 16:18:34 +0000820 "ObjectClassReference", "optIdentifier", "Identifier", 0
vlm1aeaddd2006-07-13 08:24:20 +0000821};
822#endif
823
824# ifdef YYPRINT
825/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
826 token YYLEX-NUM. */
827static const unsigned short yytoknum[] =
828{
829 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
830 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
831 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
832 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
833 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
834 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
835 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
836 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
837 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
838 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
vlme745fcd2006-09-05 16:18:34 +0000839 355, 356, 94, 357, 124, 358, 359, 360, 123, 125,
840 40, 41, 59, 44, 58, 91, 93, 33, 46, 60,
841 64
vlm1aeaddd2006-07-13 08:24:20 +0000842};
843# endif
844
845/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
846static const unsigned char yyr1[] =
847{
vlm43c8ac52006-09-17 04:52:50 +0000848 0, 121, 122, 123, 123, 125, 124, 126, 126, 127,
849 127, 128, 128, 129, 129, 129, 130, 130, 131, 131,
850 132, 132, 132, 132, 132, 133, 133, 134, 135, 135,
851 136, 136, 136, 137, 136, 136, 138, 138, 139, 139,
vlm86851cd2006-10-13 12:37:39 +0000852 140, 140, 141, 141, 142, 142, 143, 144, 144, 145,
853 145, 145, 146, 146, 147, 147, 147, 148, 148, 149,
854 149, 149, 150, 151, 152, 152, 152, 153, 153, 153,
855 153, 154, 154, 155, 155, 155, 155, 155, 156, 156,
856 157, 157, 157, 157, 158, 158, 159, 159, 160, 160,
857 160, 160, 161, 161, 162, 162, 162, 163, 164, 164,
858 165, 165, 166, 166, 166, 166, 166, 166, 166, 167,
859 167, 169, 168, 170, 170, 171, 171, 171, 171, 172,
860 172, 172, 173, 174, 175, 176, 176, 176, 176, 176,
861 176, 176, 176, 176, 177, 177, 177, 177, 177, 177,
862 178, 178, 179, 180, 180, 181, 181, 181, 182, 183,
863 184, 184, 184, 185, 184, 184, 186, 186, 186, 186,
864 186, 186, 187, 187, 188, 188, 188, 189, 189, 190,
865 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
866 190, 190, 191, 191, 191, 192, 192, 193, 193, 193,
867 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
vlm1bc782f2006-09-21 01:50:37 +0000868 193, 194, 194, 195, 195, 196, 196, 197, 197, 198,
vlm86851cd2006-10-13 12:37:39 +0000869 198, 199, 199, 200, 200, 200, 200, 201, 201, 202,
870 202, 203, 203, 204, 204, 205, 205, 205, 205, 205,
vlm8cc3f742006-10-18 18:40:14 +0000871 205, 205, 205, 205, 205, 206, 206, 207, 207, 208,
872 208, 208, 208, 208, 209, 210, 210, 211, 211, 212,
873 212, 213, 213, 214, 214, 214, 215, 215, 215, 217,
874 216, 218, 219, 219, 219, 219, 220, 220, 221, 222,
875 223, 223, 224, 224, 225, 225, 226, 226, 227, 227,
876 228, 228, 229, 229, 230, 230, 230, 230, 230, 231,
877 231, 232, 232, 233, 233, 234, 235, 236, 236, 236,
878 236, 237, 237, 237, 238, 238, 239, 240, 240, 241
vlm1aeaddd2006-07-13 08:24:20 +0000879};
880
881/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
882static const unsigned char yyr2[] =
883{
vlm43c8ac52006-09-17 04:52:50 +0000884 0, 2, 1, 1, 2, 0, 9, 0, 1, 3,
885 2, 1, 2, 1, 4, 1, 0, 1, 1, 2,
886 2, 2, 2, 2, 2, 0, 1, 3, 1, 2,
887 1, 1, 1, 0, 3, 1, 0, 1, 3, 2,
vlm86851cd2006-10-13 12:37:39 +0000888 0, 1, 1, 2, 0, 1, 4, 1, 3, 1,
889 3, 1, 0, 1, 3, 3, 2, 1, 3, 1,
890 3, 1, 3, 4, 1, 1, 4, 3, 3, 6,
891 6, 1, 3, 1, 3, 3, 3, 3, 1, 3,
892 1, 1, 1, 1, 0, 1, 1, 3, 3, 2,
893 3, 1, 1, 3, 2, 1, 1, 5, 0, 1,
894 1, 3, 2, 4, 3, 3, 3, 3, 3, 0,
895 1, 0, 6, 1, 2, 1, 1, 1, 3, 1,
896 3, 3, 3, 0, 2, 1, 4, 4, 4, 6,
897 6, 1, 4, 3, 1, 3, 3, 3, 1, 3,
898 1, 3, 1, 1, 1, 1, 3, 3, 1, 4,
899 1, 1, 3, 0, 3, 1, 1, 1, 1, 1,
900 1, 1, 1, 3, 1, 1, 1, 1, 2, 1,
901 1, 1, 1, 2, 2, 1, 1, 2, 2, 1,
902 1, 1, 1, 1, 2, 1, 2, 1, 1, 1,
vlm1aeaddd2006-07-13 08:24:20 +0000903 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
vlm86851cd2006-10-13 12:37:39 +0000904 1, 1, 1, 1, 1, 0, 1, 1, 3, 1,
905 4, 3, 4, 1, 1, 3, 5, 1, 3, 1,
906 3, 1, 3, 1, 3, 4, 3, 1, 1, 3,
vlm8cc3f742006-10-18 18:40:14 +0000907 3, 3, 3, 1, 1, 2, 2, 1, 1, 1,
908 1, 1, 1, 1, 1, 3, 5, 1, 3, 1,
909 3, 0, 1, 1, 1, 1, 1, 1, 1, 0,
910 5, 2, 1, 2, 2, 3, 1, 1, 3, 4,
911 1, 3, 2, 3, 1, 3, 0, 1, 1, 2,
912 2, 3, 1, 3, 1, 4, 4, 1, 1, 1,
913 1, 1, 1, 0, 1, 2, 4, 0, 1, 1,
914 1, 0, 1, 1, 1, 1, 1, 0, 1, 1
vlm1aeaddd2006-07-13 08:24:20 +0000915};
916
917/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
918 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
919 means the default is an error. */
920static const unsigned short yydefact[] =
921{
vlm8cc3f742006-10-18 18:40:14 +0000922 0, 304, 305, 0, 2, 3, 5, 1, 4, 7,
923 0, 0, 8, 309, 15, 10, 0, 11, 13, 16,
vlm43c8ac52006-09-17 04:52:50 +0000924 9, 12, 0, 0, 0, 0, 0, 0, 0, 17,
925 18, 0, 24, 22, 20, 23, 21, 0, 19, 14,
vlm86851cd2006-10-13 12:37:39 +0000926 52, 0, 0, 26, 36, 53, 0, 56, 0, 57,
927 59, 61, 6, 40, 0, 37, 55, 54, 0, 0,
928 39, 0, 41, 42, 0, 47, 49, 51, 187, 0,
929 188, 189, 190, 191, 192, 200, 193, 194, 195, 196,
930 197, 198, 199, 27, 28, 32, 30, 31, 35, 0,
931 0, 58, 60, 38, 43, 0, 0, 0, 33, 29,
vlm8cc3f742006-10-18 18:40:14 +0000932 293, 134, 306, 0, 169, 0, 0, 183, 176, 180,
vlm86851cd2006-10-13 12:37:39 +0000933 182, 170, 0, 0, 171, 175, 179, 0, 0, 65,
934 185, 172, 64, 181, 138, 0, 44, 48, 50, 34,
vlm8cc3f742006-10-18 18:40:14 +0000935 0, 297, 68, 67, 123, 294, 301, 0, 184, 178,
936 177, 174, 173, 0, 71, 0, 172, 73, 0, 293,
937 0, 186, 0, 0, 45, 46, 0, 299, 300, 298,
938 0, 0, 205, 303, 302, 295, 135, 137, 0, 0,
939 0, 0, 0, 63, 158, 164, 159, 289, 290, 165,
vlm86851cd2006-10-13 12:37:39 +0000940 166, 156, 157, 83, 0, 78, 80, 81, 160, 161,
vlm8cc3f742006-10-18 18:40:14 +0000941 82, 288, 280, 0, 282, 287, 284, 143, 144, 139,
vlm86851cd2006-10-13 12:37:39 +0000942 140, 142, 136, 155, 153, 149, 150, 151, 0, 162,
vlm8cc3f742006-10-18 18:40:14 +0000943 293, 293, 0, 100, 0, 131, 0, 0, 205, 205,
944 125, 124, 0, 0, 122, 206, 207, 209, 293, 72,
945 77, 76, 75, 74, 292, 0, 239, 238, 0, 0,
946 237, 240, 0, 213, 0, 242, 0, 214, 217, 219,
947 221, 223, 234, 0, 227, 228, 233, 291, 241, 244,
948 243, 66, 293, 281, 0, 0, 0, 0, 0, 0,
949 148, 145, 0, 278, 276, 276, 276, 102, 277, 98,
950 276, 276, 109, 0, 296, 0, 293, 0, 293, 0,
951 293, 0, 0, 0, 293, 0, 0, 0, 256, 258,
952 257, 266, 267, 0, 70, 69, 0, 262, 0, 0,
953 235, 236, 0, 0, 0, 62, 0, 201, 202, 0,
954 203, 204, 0, 0, 0, 0, 79, 283, 0, 0,
955 162, 141, 167, 154, 163, 152, 279, 107, 0, 106,
956 108, 99, 276, 104, 105, 0, 97, 110, 101, 0,
957 119, 0, 92, 95, 96, 293, 133, 0, 0, 85,
958 86, 91, 276, 293, 307, 0, 307, 0, 0, 261,
959 0, 211, 208, 0, 0, 218, 263, 264, 232, 230,
960 0, 245, 0, 226, 215, 220, 222, 224, 0, 231,
961 229, 286, 285, 168, 146, 147, 103, 0, 132, 0,
962 126, 293, 94, 293, 127, 293, 89, 276, 293, 308,
963 128, 293, 210, 259, 268, 0, 0, 270, 212, 265,
964 249, 0, 247, 205, 0, 225, 111, 120, 121, 93,
965 90, 87, 88, 123, 123, 0, 0, 272, 274, 269,
966 0, 246, 0, 251, 216, 0, 129, 130, 260, 273,
967 0, 271, 248, 254, 255, 253, 250, 252, 115, 116,
968 0, 0, 113, 117, 275, 0, 112, 114, 118
vlm1aeaddd2006-07-13 08:24:20 +0000969};
970
971/* YYDEFGOTO[NTERM-NUM]. */
972static const short yydefgoto[] =
973{
vlm43c8ac52006-09-17 04:52:50 +0000974 -1, 3, 4, 5, 9, 11, 12, 16, 17, 28,
vlm86851cd2006-10-13 12:37:39 +0000975 29, 30, 42, 43, 83, 84, 129, 54, 55, 61,
976 62, 155, 63, 64, 65, 44, 45, 48, 49, 183,
vlm8cc3f742006-10-18 18:40:14 +0000977 85, 118, 86, 143, 144, 184, 185, 358, 359, 360,
978 351, 352, 132, 342, 212, 213, 346, 347, 445, 461,
979 462, 361, 362, 161, 162, 221, 119, 199, 200, 463,
980 275, 276, 87, 205, 267, 206, 207, 245, 333, 120,
981 121, 122, 123, 319, 322, 224, 225, 226, 227, 296,
982 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
983 421, 422, 456, 457, 297, 298, 435, 299, 309, 300,
984 301, 302, 416, 417, 437, 277, 278, 151, 193, 194,
985 257, 258, 134, 135, 136, 160, 165, 259, 124, 408,
986 260
vlm1aeaddd2006-07-13 08:24:20 +0000987};
988
989/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
990 STATE-NUM. */
vlm8cc3f742006-10-18 18:40:14 +0000991#define YYPACT_NINF -292
vlm1aeaddd2006-07-13 08:24:20 +0000992static const short yypact[] =
993{
vlm8cc3f742006-10-18 18:40:14 +0000994 104, -292, -292, 27, 104, -292, -292, -292, -292, -75,
995 71, 17, -292, -292, -292, -292, 81, -292, -36, 141,
996 -292, -292, 90, 107, 134, 139, 182, 172, 181, 141,
997 -292, 156, -292, -292, -292, -292, -292, 243, -292, -292,
998 245, 73, 235, -292, 222, -292, 171, -292, 80, -292,
999 183, -292, -292, 167, 528, -292, -292, -292, 186, 191,
1000 -292, 190, 186, -292, -21, -292, 196, -292, -292, 293,
1001 -292, -292, -292, -292, -292, -292, -292, -292, -292, -292,
1002 -292, -292, -292, 528, -292, -292, -292, -292, -292, 279,
1003 696, -292, -292, -292, -292, 104, 186, 204, -292, -292,
1004 -5, 201, -292, 237, -292, 249, 262, -292, -292, -292,
1005 -292, -292, 284, 255, -292, -292, -292, 772, 341, 238,
1006 -292, 244, -292, -292, 227, 350, -75, -292, -292, -292,
1007 247, 5, -292, -292, -292, -292, -12, 186, -292, -292,
1008 -292, -292, -292, 2, -292, 248, -292, 250, 251, 95,
1009 68, -292, 270, 206, -292, -292, 233, -292, -292, -292,
1010 347, 620, 36, -292, -292, -292, -292, -292, 360, 772,
1011 186, 186, 442, -292, -292, -292, -292, -292, -292, -292,
1012 -292, -292, -292, -292, 121, -292, -292, -292, -292, -292,
1013 -292, -292, -292, 124, -292, -292, 256, -292, -292, 252,
1014 -292, -292, -292, -292, -292, -292, -292, -292, 253, 254,
1015 162, 52, 126, -292, 257, 325, 271, 307, 89, 96,
1016 -292, -292, 272, 397, -292, -292, -292, 273, -5, -292,
1017 -292, -292, -292, -292, -292, 280, -292, -292, 105, 57,
1018 -292, -292, 277, -292, 442, -292, 275, 281, 211, 215,
1019 -292, 285, -292, 278, 105, -292, -292, -292, -292, -292,
1020 -292, -292, 95, -292, 30, 216, 304, 380, 381, 206,
1021 -292, -292, 206, -292, 20, 76, 20, -292, -292, 299,
1022 76, 20, 296, 233, -292, 363, 58, 311, 40, 324,
1023 40, 326, 442, 368, 286, 104, 291, 292, -292, -292,
1024 -292, 306, -292, 442, -292, -292, 554, 297, 309, 234,
1025 -292, -292, 317, 320, 318, -292, 310, -292, -292, 554,
1026 -292, -292, 554, 554, 442, 411, -292, -292, 319, 327,
1027 -292, -292, -292, 426, -292, -292, -292, -292, 312, -292,
1028 -292, -292, 20, -292, -292, 348, -292, -292, -292, 381,
1029 322, 129, -292, -292, -292, 286, -292, 364, 332, 323,
1030 -292, -292, 20, 286, 381, 333, 381, 334, 335, -292,
1031 337, -292, -292, 330, 349, -292, -292, 340, -292, -292,
1032 442, 273, 9, -292, 331, 215, -292, -292, 351, -292,
1033 -292, -292, -292, -292, -292, -292, -292, 357, -292, 216,
1034 -292, 58, -292, 286, -292, 41, -292, 20, 286, -292,
1035 -292, 286, -292, -292, -292, 26, 140, -292, -292, -292,
1036 -292, 151, -292, 36, 509, -292, -292, -292, -292, -292,
1037 -292, -292, -292, -292, -292, 380, 381, 352, -292, -292,
1038 330, -292, 9, 131, -292, 19, -292, -292, 426, 352,
1039 381, -292, -292, -292, -292, -292, -292, -292, -292, -292,
1040 19, 53, -292, -292, -292, 43, -292, -292, -292
vlm1aeaddd2006-07-13 08:24:20 +00001041};
1042
1043/* YYPGOTO[NTERM-NUM]. */
1044static const short yypgoto[] =
1045{
vlm8cc3f742006-10-18 18:40:14 +00001046 -292, -292, -292, 462, -292, -292, 342, -292, 451, -292,
1047 -292, 440, -292, -292, -292, 388, -292, -292, -292, -292,
1048 -292, -292, 412, -292, 377, -292, -292, -292, 417, 329,
1049 -292, -68, -292, -292, 314, -292, 217, 188, -292, 75,
1050 -292, 83, 258, -292, -292, 198, -292, -292, -292, 25,
1051 -193, -278, -98, -292, -97, -292, 200, -292, 223, -142,
1052 283, 287, -292, 21, -292, -140, -258, -137, 55, -71,
1053 -52, -292, -30, -292, -292, -215, -292, -292, 179, -161,
1054 72, -292, 176, 177, -291, -292, -292, -118, -292, -292,
1055 -292, 59, -292, -292, -292, -292, -292, -292, 246, -292,
1056 -292, -292, -292, 63, 70, -255, -292, -292, -292, 264,
1057 -136, -292, -110, -292, -292, -292, -292, 1, -292, 143,
1058 -10
vlm1aeaddd2006-07-13 08:24:20 +00001059};
1060
1061/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
1062 positive, shift that token. If negative, reduce the rule which
1063 number is the opposite. If zero, do what YYDEFACT says.
1064 If YYTABLE_NINF, parse error. */
vlm8cc3f742006-10-18 18:40:14 +00001065#define YYTABLE_NINF -277
vlm1aeaddd2006-07-13 08:24:20 +00001066static const short yytable[] =
1067{
vlm8cc3f742006-10-18 18:40:14 +00001068 18, 6, 133, 289, 291, 6, 18, 328, 353, 187,
1069 201, 246, 188, 189, 195, 375, 188, 189, 13, 337,
1070 339, 340, 125, 458, 88, 343, 344, 7, 130, 157,
1071 95, 51, 387, 10, 163, 13, 197, 198, 459, 13,
1072 177, 178, 50, 67, 90, 164, 145, 458, 51, 13,
1073 13, 186, 67, 88, 66, 89, 19, 458, 272, 50,
1074 197, 198, 459, 66, 310, 146, 13, 13, 270, 271,
1075 197, 198, 459, 90, 22, 357, 357, 13, 177, 178,
1076 13, 14, 13, 314, 89, 158, 67, 396, 1, 2,
1077 13, 14, 96, 220, 273, 46, 126, 66, 145, 159,
1078 31, 174, 175, 176, 13, 177, 178, 406, 179, 180,
1079 131, 168, 274, 279, 272, 169, 420, 146, 147, 1,
1080 2, 222, 187, 353, 201, 188, 189, 167, 195, 329,
1081 305, 367, 188, 189, 460, 188, 189, 191, 166, 190,
1082 196, 427, 374, 209, 436, 181, 223, 350, 350, -84,
1083 273, 453, 432, 202, 208, 131, 131, 23, 460, 468,
1084 231, 233, 466, 388, 186, 350, 24, 131, 460, 32,
1085 147, 230, 232, 131, 222, 191, 13, 192, 270, 271,
1086 15, 222, 1, 2, 37, 47, 182, 25, 354, 26,
1087 20, 379, 57, 58, 338, 13, 369, 288, 27, 223,
1088 272, 1, 2, 172, 290, 454, 223, 390, 443, 455,
1089 131, 307, 174, 175, 176, 13, 177, 178, 60, 179,
1090 180, 1, 2, 33, 308, 13, 177, 178, 34, 311,
1091 261, 1, 2, 263, 262, 282, 273, 264, 400, 283,
1092 35, 175, 401, 13, 177, 178, 234, 179, 180, 439,
1093 210, 211, 190, 440, 196, 330, 181, 402, 334, 209,
1094 441, 36, 209, 428, 442, 407, 208, 39, 467, 40,
1095 208, -276, 467, 208, 203, -276, 355, 131, 363, 52,
1096 363, 53, 100, 56, 236, 1, 2, 197, 198, -25,
1097 335, 59, 41, 336, 101, 102, 370, 182, 433, 378,
1098 92, 434, 93, 354, 97, 430, 103, 68, 104, 98,
1099 105, 312, 313, 128, 204, 317, 318, 320, 321, 137,
1100 106, 197, 198, 138, 107, 241, 101, 102, 108, 394,
1101 395, 109, 70, 71, 72, 139, 446, 447, 140, 398,
1102 141, 142, 110, 73, 148, 152, 149, 111, 74, 112,
1103 75, 113, 150, 153, 409, 156, 409, 214, 76, 172,
1104 114, 115, 170, 228, 171, 285, 265, 77, 269, 78,
1105 266, 268, 423, 284, 79, 116, 80, 81, 82, 286,
1106 287, 306, 292, 303, 315, 332, 323, 117, 324, 330,
1107 13, 355, 341, 349, 316, 363, 345, 364, 368, 366,
1108 208, 131, 371, 372, 175, 438, 13, 177, 178, 234,
1109 179, 180, 1, 2, 373, 377, 376, 384, 175, 235,
1110 13, 177, 178, 234, 179, 180, 438, 380, 382, 383,
1111 391, 393, 423, 293, 294, 397, 405, 403, 392, 399,
1112 464, 404, 410, 413, 424, 412, 414, 236, 237, 175,
1113 415, 13, 177, 178, 234, 179, 180, 1, 2, 419,
1114 418, 236, 425, 238, 235, 426, 8, 21, 154, 38,
1115 450, 99, 239, 127, 94, 91, 389, 173, 365, 326,
1116 431, 348, 240, 229, 429, 465, 304, 356, 241, 331,
1117 448, 381, 236, 237, 280, 385, 444, 242, 281, 386,
1118 325, 452, 241, 451, 243, 295, 449, 244, 238, 411,
1119 0, 0, 0, 0, 0, 0, 175, 239, 13, 177,
1120 178, 234, 179, 180, 1, 2, 0, 240, 327, 0,
1121 0, 235, 0, 241, 0, 0, 0, 13, 0, 0,
1122 0, 0, 242, 1, 2, 0, 0, 0, 0, 243,
1123 0, 0, 244, 0, 0, 0, 68, 0, 0, 236,
1124 237, 175, 0, 13, 177, 178, 234, 179, 180, 1,
1125 2, 69, 0, 0, 0, 238, 0, 0, 0, 0,
1126 0, 70, 71, 72, 239, 0, 0, 0, 0, 0,
1127 0, 0, 73, 0, 240, 0, 0, 74, 0, 75,
1128 241, 0, 0, 0, 236, 237, 0, 76, 0, 242,
1129 0, 0, 0, 0, 0, 0, 77, 0, 78, 244,
1130 238, 0, 0, 79, 0, 80, 81, 82, 0, 239,
1131 0, 0, 0, 0, 0, 101, 102, 0, 0, 240,
1132 0, 0, 0, 215, 0, 241, 0, 103, 68, 104,
1133 0, 105, 216, 0, 242, 0, 0, 0, 0, 0,
1134 0, 106, 0, 0, 244, 107, 0, 0, 0, 108,
1135 0, 0, 109, 70, 71, 72, 0, 0, 0, 0,
1136 0, 217, 0, 110, 73, 0, 0, 0, 111, 74,
1137 112, 75, 113, 0, 0, 0, 0, 0, 0, 76,
1138 0, 114, 115, 218, 219, 0, 0, 0, 77, 0,
1139 78, 101, 102, 0, 0, 79, 116, 80, 81, 82,
1140 0, 0, 0, 103, 68, 104, 0, 105, 0, 0,
1141 0, 0, 0, 0, 0, 0, 0, 106, 0, 0,
1142 0, 107, 0, 0, 0, 108, 0, 0, 109, 70,
1143 71, 72, 0, 0, 0, 0, 0, 0, 0, 110,
1144 73, 0, 0, 0, 111, 74, 112, 75, 113, 0,
1145 0, 0, 0, 0, 0, 76, 0, 114, 115, 0,
1146 0, 0, 0, 0, 77, 0, 78, 1, 2, 0,
1147 0, 79, 116, 80, 81, 82, 0, 0, 0, 103,
1148 68, 104, 0, 105, 0, 0, 0, 0, 0, 0,
1149 0, 0, 0, 106, 0, 0, 0, 107, 0, 0,
1150 0, 108, 0, 0, 109, 70, 71, 72, 0, 0,
1151 0, 0, 0, 0, 0, 110, 73, 0, 0, 0,
1152 111, 74, 112, 75, 113, 0, 0, 0, 0, 0,
1153 0, 76, 0, 114, 115, 0, 0, 0, 0, 0,
1154 77, 0, 78, 0, 0, 0, 0, 79, 116, 80,
1155 81, 82
vlm1aeaddd2006-07-13 08:24:20 +00001156};
1157
1158static const short yycheck[] =
1159{
vlm8cc3f742006-10-18 18:40:14 +00001160 10, 0, 100, 218, 219, 4, 16, 265, 286, 149,
1161 152, 172, 149, 149, 150, 306, 153, 153, 9, 274,
1162 275, 276, 90, 4, 54, 280, 281, 0, 33, 24,
1163 51, 41, 323, 108, 46, 9, 17, 18, 19, 9,
1164 10, 11, 41, 53, 54, 57, 117, 4, 58, 9,
1165 9, 149, 62, 83, 53, 54, 39, 4, 38, 58,
1166 17, 18, 19, 62, 7, 117, 9, 9, 16, 17,
1167 17, 18, 19, 83, 110, 35, 35, 9, 10, 11,
1168 9, 10, 9, 244, 83, 80, 96, 342, 15, 16,
1169 9, 10, 113, 161, 74, 22, 95, 96, 169, 94,
1170 10, 6, 7, 8, 9, 10, 11, 362, 13, 14,
1171 115, 109, 210, 211, 38, 113, 107, 169, 117, 15,
1172 16, 85, 262, 401, 266, 262, 262, 137, 264, 265,
1173 228, 292, 269, 269, 115, 272, 272, 107, 137, 149,
1174 150, 399, 303, 153, 118, 50, 110, 107, 107, 109,
1175 74, 20, 407, 152, 153, 115, 115, 16, 115, 116,
1176 170, 171, 109, 324, 262, 107, 25, 115, 115, 62,
1177 169, 170, 171, 115, 85, 107, 9, 109, 16, 17,
1178 109, 85, 15, 16, 3, 112, 91, 46, 286, 48,
1179 109, 309, 112, 113, 118, 9, 294, 108, 57, 110,
1180 38, 15, 16, 108, 108, 74, 110, 325, 423, 78,
1181 115, 106, 6, 7, 8, 9, 10, 11, 51, 13,
1182 14, 15, 16, 89, 119, 9, 10, 11, 89, 239,
1183 109, 15, 16, 109, 113, 109, 74, 113, 109, 113,
1184 58, 7, 113, 9, 10, 11, 12, 13, 14, 109,
1185 17, 18, 262, 113, 264, 265, 50, 355, 268, 269,
1186 109, 89, 272, 399, 113, 363, 265, 111, 461, 26,
1187 269, 109, 465, 272, 68, 113, 286, 115, 288, 44,
1188 290, 59, 3, 112, 50, 15, 16, 17, 18, 44,
1189 269, 108, 47, 272, 15, 16, 295, 91, 408, 65,
1190 109, 411, 112, 401, 108, 403, 27, 28, 29, 16,
1191 31, 34, 35, 109, 108, 104, 105, 102, 103, 118,
1192 41, 17, 18, 86, 45, 91, 15, 16, 49, 17,
1193 18, 52, 53, 54, 55, 86, 433, 434, 76, 349,
1194 56, 86, 63, 64, 3, 118, 108, 68, 69, 70,
1195 71, 72, 108, 3, 364, 108, 366, 10, 79, 108,
1196 81, 82, 114, 3, 114, 40, 110, 88, 114, 90,
1197 118, 118, 382, 116, 95, 96, 97, 98, 99, 108,
1198 73, 101, 110, 110, 109, 5, 101, 108, 110, 399,
1199 9, 401, 93, 30, 113, 405, 100, 73, 30, 73,
1200 399, 115, 111, 111, 7, 415, 9, 10, 11, 12,
1201 13, 14, 15, 16, 108, 106, 119, 107, 7, 22,
1202 9, 10, 11, 12, 13, 14, 436, 110, 108, 111,
1203 111, 5, 442, 36, 37, 87, 113, 73, 111, 117,
1204 450, 109, 109, 108, 113, 111, 109, 50, 51, 7,
1205 120, 9, 10, 11, 12, 13, 14, 15, 16, 119,
1206 111, 50, 111, 66, 22, 108, 4, 16, 126, 29,
1207 118, 83, 75, 96, 62, 58, 65, 148, 290, 262,
1208 405, 283, 85, 169, 401, 460, 228, 287, 91, 266,
1209 435, 312, 50, 51, 211, 319, 424, 100, 211, 322,
1210 254, 442, 91, 440, 107, 108, 436, 110, 66, 366,
1211 -1, -1, -1, -1, -1, -1, 7, 75, 9, 10,
1212 11, 12, 13, 14, 15, 16, -1, 85, 264, -1,
1213 -1, 22, -1, 91, -1, -1, -1, 9, -1, -1,
1214 -1, -1, 100, 15, 16, -1, -1, -1, -1, 107,
1215 -1, -1, 110, -1, -1, -1, 28, -1, -1, 50,
1216 51, 7, -1, 9, 10, 11, 12, 13, 14, 15,
1217 16, 43, -1, -1, -1, 66, -1, -1, -1, -1,
1218 -1, 53, 54, 55, 75, -1, -1, -1, -1, -1,
1219 -1, -1, 64, -1, 85, -1, -1, 69, -1, 71,
1220 91, -1, -1, -1, 50, 51, -1, 79, -1, 100,
1221 -1, -1, -1, -1, -1, -1, 88, -1, 90, 110,
1222 66, -1, -1, 95, -1, 97, 98, 99, -1, 75,
1223 -1, -1, -1, -1, -1, 15, 16, -1, -1, 85,
1224 -1, -1, -1, 23, -1, 91, -1, 27, 28, 29,
1225 -1, 31, 32, -1, 100, -1, -1, -1, -1, -1,
1226 -1, 41, -1, -1, 110, 45, -1, -1, -1, 49,
1227 -1, -1, 52, 53, 54, 55, -1, -1, -1, -1,
1228 -1, 61, -1, 63, 64, -1, -1, -1, 68, 69,
1229 70, 71, 72, -1, -1, -1, -1, -1, -1, 79,
1230 -1, 81, 82, 83, 84, -1, -1, -1, 88, -1,
1231 90, 15, 16, -1, -1, 95, 96, 97, 98, 99,
1232 -1, -1, -1, 27, 28, 29, -1, 31, -1, -1,
1233 -1, -1, -1, -1, -1, -1, -1, 41, -1, -1,
1234 -1, 45, -1, -1, -1, 49, -1, -1, 52, 53,
1235 54, 55, -1, -1, -1, -1, -1, -1, -1, 63,
1236 64, -1, -1, -1, 68, 69, 70, 71, 72, -1,
1237 -1, -1, -1, -1, -1, 79, -1, 81, 82, -1,
1238 -1, -1, -1, -1, 88, -1, 90, 15, 16, -1,
1239 -1, 95, 96, 97, 98, 99, -1, -1, -1, 27,
1240 28, 29, -1, 31, -1, -1, -1, -1, -1, -1,
1241 -1, -1, -1, 41, -1, -1, -1, 45, -1, -1,
1242 -1, 49, -1, -1, 52, 53, 54, 55, -1, -1,
1243 -1, -1, -1, -1, -1, 63, 64, -1, -1, -1,
1244 68, 69, 70, 71, 72, -1, -1, -1, -1, -1,
1245 -1, 79, -1, 81, 82, -1, -1, -1, -1, -1,
1246 88, -1, 90, -1, -1, -1, -1, 95, 96, 97,
1247 98, 99
vlm1aeaddd2006-07-13 08:24:20 +00001248};
1249
1250/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1251 symbol of state STATE-NUM. */
1252static const unsigned char yystos[] =
1253{
vlm8cc3f742006-10-18 18:40:14 +00001254 0, 15, 16, 122, 123, 124, 238, 0, 124, 125,
1255 108, 126, 127, 9, 10, 109, 128, 129, 241, 39,
vlm43c8ac52006-09-17 04:52:50 +00001256 109, 129, 110, 16, 25, 46, 48, 57, 130, 131,
1257 132, 10, 62, 89, 89, 58, 89, 3, 132, 111,
vlm86851cd2006-10-13 12:37:39 +00001258 26, 47, 133, 134, 146, 147, 22, 112, 148, 149,
vlm8cc3f742006-10-18 18:40:14 +00001259 238, 241, 44, 59, 138, 139, 112, 112, 113, 108,
1260 51, 140, 141, 143, 144, 145, 238, 241, 28, 43,
vlm86851cd2006-10-13 12:37:39 +00001261 53, 54, 55, 64, 69, 71, 79, 88, 90, 95,
vlm8cc3f742006-10-18 18:40:14 +00001262 97, 98, 99, 135, 136, 151, 153, 183, 193, 238,
1263 241, 149, 109, 112, 143, 51, 113, 108, 16, 136,
vlm86851cd2006-10-13 12:37:39 +00001264 3, 15, 16, 27, 29, 31, 41, 45, 49, 52,
1265 63, 68, 70, 72, 81, 82, 96, 108, 152, 177,
vlm8cc3f742006-10-18 18:40:14 +00001266 190, 191, 192, 193, 239, 152, 238, 145, 109, 137,
1267 33, 115, 163, 173, 233, 234, 235, 118, 86, 86,
1268 76, 56, 86, 154, 155, 190, 191, 238, 3, 108,
1269 108, 228, 118, 3, 127, 142, 108, 24, 80, 94,
1270 236, 174, 175, 46, 57, 237, 238, 241, 109, 113,
vlm86851cd2006-10-13 12:37:39 +00001271 114, 114, 108, 150, 6, 7, 8, 10, 11, 13,
vlm8cc3f742006-10-18 18:40:14 +00001272 14, 50, 91, 150, 156, 157, 173, 186, 188, 231,
1273 241, 107, 109, 229, 230, 231, 241, 17, 18, 178,
1274 179, 180, 238, 68, 108, 184, 186, 187, 238, 241,
vlm86851cd2006-10-13 12:37:39 +00001275 17, 18, 165, 166, 10, 23, 32, 61, 83, 84,
1276 152, 176, 85, 110, 196, 197, 198, 199, 3, 155,
vlm8cc3f742006-10-18 18:40:14 +00001277 238, 241, 238, 241, 12, 22, 50, 51, 66, 75,
1278 85, 91, 100, 107, 110, 188, 200, 201, 202, 203,
1279 204, 205, 206, 207, 208, 209, 210, 231, 232, 238,
1280 241, 109, 113, 109, 113, 110, 118, 185, 118, 114,
1281 16, 17, 38, 74, 173, 181, 182, 226, 227, 173,
1282 181, 182, 109, 113, 116, 40, 108, 73, 108, 196,
1283 108, 196, 110, 36, 37, 108, 200, 215, 216, 218,
1284 220, 221, 222, 110, 163, 173, 101, 106, 119, 219,
1285 7, 241, 34, 35, 200, 109, 113, 104, 105, 194,
1286 102, 103, 195, 101, 110, 219, 157, 230, 187, 231,
1287 241, 179, 5, 189, 241, 184, 184, 226, 118, 226,
1288 226, 93, 164, 226, 226, 100, 167, 168, 166, 30,
1289 107, 161, 162, 172, 173, 241, 177, 35, 158, 159,
1290 160, 172, 173, 241, 73, 158, 73, 200, 30, 173,
1291 238, 111, 111, 108, 200, 205, 119, 106, 65, 208,
1292 110, 199, 108, 111, 107, 203, 204, 205, 200, 65,
1293 208, 111, 111, 5, 17, 18, 226, 87, 241, 117,
1294 109, 113, 173, 73, 109, 113, 226, 173, 240, 241,
1295 109, 240, 111, 108, 109, 120, 223, 224, 111, 119,
1296 107, 211, 212, 241, 113, 111, 108, 187, 231, 162,
1297 173, 160, 226, 233, 233, 217, 118, 225, 241, 109,
1298 113, 109, 113, 196, 201, 169, 175, 175, 189, 225,
1299 118, 224, 212, 20, 74, 78, 213, 214, 4, 19,
1300 115, 170, 171, 180, 241, 170, 109, 171, 116
vlm1aeaddd2006-07-13 08:24:20 +00001301};
1302
1303#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
1304# define YYSIZE_T __SIZE_TYPE__
1305#endif
1306#if ! defined (YYSIZE_T) && defined (size_t)
1307# define YYSIZE_T size_t
1308#endif
1309#if ! defined (YYSIZE_T)
1310# if defined (__STDC__) || defined (__cplusplus)
1311# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1312# define YYSIZE_T size_t
1313# endif
1314#endif
1315#if ! defined (YYSIZE_T)
1316# define YYSIZE_T unsigned int
1317#endif
vlmfa67ddc2004-06-03 03:38:44 +00001318
1319#define yyerrok (yyerrstatus = 0)
1320#define yyclearin (yychar = YYEMPTY)
vlm0c6d3812006-03-21 03:40:38 +00001321#define YYEMPTY -2
vlmfa67ddc2004-06-03 03:38:44 +00001322#define YYEOF 0
vlm1aeaddd2006-07-13 08:24:20 +00001323
vlmfa67ddc2004-06-03 03:38:44 +00001324#define YYACCEPT goto yyacceptlab
vlm1aeaddd2006-07-13 08:24:20 +00001325#define YYABORT goto yyabortlab
vlm0c6d3812006-03-21 03:40:38 +00001326#define YYERROR goto yyerrlab1
vlm1aeaddd2006-07-13 08:24:20 +00001327
1328/* Like YYERROR except do call yyerror. This remains here temporarily
1329 to ease the transition to the new meaning of YYERROR, for GCC.
vlmfa67ddc2004-06-03 03:38:44 +00001330 Once GCC version 2 has supplanted version 1, this can go. */
vlm1aeaddd2006-07-13 08:24:20 +00001331
vlmfa67ddc2004-06-03 03:38:44 +00001332#define YYFAIL goto yyerrlab
vlm1aeaddd2006-07-13 08:24:20 +00001333
vlmfa67ddc2004-06-03 03:38:44 +00001334#define YYRECOVERING() (!!yyerrstatus)
vlm1aeaddd2006-07-13 08:24:20 +00001335
1336#define YYBACKUP(Token, Value) \
vlmfa67ddc2004-06-03 03:38:44 +00001337do \
1338 if (yychar == YYEMPTY && yylen == 1) \
vlm1aeaddd2006-07-13 08:24:20 +00001339 { \
1340 yychar = (Token); \
1341 yylval = (Value); \
vlm0c6d3812006-03-21 03:40:38 +00001342 yychar1 = YYTRANSLATE (yychar); \
vlmfa67ddc2004-06-03 03:38:44 +00001343 YYPOPSTACK; \
1344 goto yybackup; \
1345 } \
1346 else \
vlm1aeaddd2006-07-13 08:24:20 +00001347 { \
1348 yyerror ("syntax error: cannot back up"); \
1349 YYERROR; \
1350 } \
vlmfa67ddc2004-06-03 03:38:44 +00001351while (0)
1352
1353#define YYTERROR 1
1354#define YYERRCODE 256
1355
vlm1aeaddd2006-07-13 08:24:20 +00001356/* YYLLOC_DEFAULT -- Compute the default location (before the actions
1357 are run). */
1358
1359#ifndef YYLLOC_DEFAULT
1360# define YYLLOC_DEFAULT(Current, Rhs, N) \
1361 Current.first_line = Rhs[1].first_line; \
1362 Current.first_column = Rhs[1].first_column; \
1363 Current.last_line = Rhs[N].last_line; \
1364 Current.last_column = Rhs[N].last_column;
vlmfa67ddc2004-06-03 03:38:44 +00001365#endif
1366
vlm1aeaddd2006-07-13 08:24:20 +00001367/* YYLEX -- calling `yylex' with the right arguments. */
vlm7e436752006-03-18 06:53:11 +00001368
vlm1aeaddd2006-07-13 08:24:20 +00001369#define YYLEX yylex ()
vlm7e436752006-03-18 06:53:11 +00001370
vlm1aeaddd2006-07-13 08:24:20 +00001371/* Enable debugging if requested. */
1372#if YYDEBUG
vlm7e436752006-03-18 06:53:11 +00001373
vlm1aeaddd2006-07-13 08:24:20 +00001374# ifndef YYFPRINTF
1375# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1376# define YYFPRINTF fprintf
1377# endif
vlm7e436752006-03-18 06:53:11 +00001378
vlm1aeaddd2006-07-13 08:24:20 +00001379# define YYDPRINTF(Args) \
1380do { \
1381 if (yydebug) \
1382 YYFPRINTF Args; \
1383} while (0)
1384# define YYDSYMPRINT(Args) \
1385do { \
1386 if (yydebug) \
1387 yysymprint Args; \
1388} while (0)
1389/* Nonzero means print parse trace. It is left uninitialized so that
1390 multiple parsers can coexist. */
1391int yydebug;
1392#else /* !YYDEBUG */
1393# define YYDPRINTF(Args)
1394# define YYDSYMPRINT(Args)
1395#endif /* !YYDEBUG */
vlm7e436752006-03-18 06:53:11 +00001396
vlm1aeaddd2006-07-13 08:24:20 +00001397/* YYINITDEPTH -- initial size of the parser's stacks. */
vlmfa67ddc2004-06-03 03:38:44 +00001398#ifndef YYINITDEPTH
vlm1aeaddd2006-07-13 08:24:20 +00001399# define YYINITDEPTH 200
vlmfa67ddc2004-06-03 03:38:44 +00001400#endif
1401
vlm1aeaddd2006-07-13 08:24:20 +00001402/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1403 if the built-in stack extension method is used).
1404
1405 Do not make this value too large; the results are undefined if
1406 SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
1407 evaluated with infinite-precision integer arithmetic. */
vlmfa67ddc2004-06-03 03:38:44 +00001408
vlm0c6d3812006-03-21 03:40:38 +00001409#if YYMAXDEPTH == 0
vlm1aeaddd2006-07-13 08:24:20 +00001410# undef YYMAXDEPTH
vlm0c6d3812006-03-21 03:40:38 +00001411#endif
vlmfa67ddc2004-06-03 03:38:44 +00001412
1413#ifndef YYMAXDEPTH
vlm1aeaddd2006-07-13 08:24:20 +00001414# define YYMAXDEPTH 10000
vlmfa67ddc2004-06-03 03:38:44 +00001415#endif
vlm1aeaddd2006-07-13 08:24:20 +00001416
vlmfa67ddc2004-06-03 03:38:44 +00001417
vlmfa67ddc2004-06-03 03:38:44 +00001418
vlm1aeaddd2006-07-13 08:24:20 +00001419#if YYERROR_VERBOSE
vlmfa67ddc2004-06-03 03:38:44 +00001420
vlm1aeaddd2006-07-13 08:24:20 +00001421# ifndef yystrlen
1422# if defined (__GLIBC__) && defined (_STRING_H)
1423# define yystrlen strlen
1424# else
1425/* Return the length of YYSTR. */
1426static YYSIZE_T
1427# if defined (__STDC__) || defined (__cplusplus)
1428yystrlen (const char *yystr)
1429# else
1430yystrlen (yystr)
1431 const char *yystr;
1432# endif
vlm0c6d3812006-03-21 03:40:38 +00001433{
vlm1aeaddd2006-07-13 08:24:20 +00001434 register const char *yys = yystr;
vlm0c6d3812006-03-21 03:40:38 +00001435
vlm1aeaddd2006-07-13 08:24:20 +00001436 while (*yys++ != '\0')
1437 continue;
1438
1439 return yys - yystr - 1;
1440}
1441# endif
1442# endif
1443
1444# ifndef yystpcpy
1445# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1446# define yystpcpy stpcpy
1447# else
1448/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1449 YYDEST. */
1450static char *
1451# if defined (__STDC__) || defined (__cplusplus)
1452yystpcpy (char *yydest, const char *yysrc)
1453# else
1454yystpcpy (yydest, yysrc)
1455 char *yydest;
1456 const char *yysrc;
1457# endif
1458{
1459 register char *yyd = yydest;
1460 register const char *yys = yysrc;
1461
1462 while ((*yyd++ = *yys++) != '\0')
1463 continue;
1464
1465 return yyd - 1;
1466}
1467# endif
1468# endif
1469
1470#endif /* !YYERROR_VERBOSE */
1471
1472
1473
1474#if YYDEBUG
1475/*-----------------------------.
1476| Print this symbol on YYOUT. |
1477`-----------------------------*/
1478
1479static void
1480#if defined (__STDC__) || defined (__cplusplus)
1481yysymprint (FILE* yyout, int yytype, YYSTYPE yyvalue)
1482#else
1483yysymprint (yyout, yytype, yyvalue)
1484 FILE* yyout;
1485 int yytype;
1486 YYSTYPE yyvalue;
1487#endif
1488{
1489 /* Pacify ``unused variable'' warnings. */
1490 (void) yyvalue;
1491
1492 if (yytype < YYNTOKENS)
1493 {
1494 YYFPRINTF (yyout, "token %s (", yytname[yytype]);
1495# ifdef YYPRINT
1496 YYPRINT (yyout, yytoknum[yytype], yyvalue);
1497# endif
1498 }
1499 else
1500 YYFPRINTF (yyout, "nterm %s (", yytname[yytype]);
1501
1502 switch (yytype)
1503 {
1504 default:
1505 break;
1506 }
1507 YYFPRINTF (yyout, ")");
1508}
1509#endif /* YYDEBUG. */
1510
1511
1512/*-----------------------------------------------.
1513| Release the memory associated to this symbol. |
1514`-----------------------------------------------*/
1515
1516static void
1517#if defined (__STDC__) || defined (__cplusplus)
1518yydestruct (int yytype, YYSTYPE yyvalue)
1519#else
1520yydestruct (yytype, yyvalue)
1521 int yytype;
1522 YYSTYPE yyvalue;
1523#endif
1524{
1525 /* Pacify ``unused variable'' warnings. */
1526 (void) yyvalue;
1527
1528 switch (yytype)
1529 {
1530 default:
1531 break;
1532 }
vlm0c6d3812006-03-21 03:40:38 +00001533}
1534
vlm7e436752006-03-18 06:53:11 +00001535
1536
vlm0c6d3812006-03-21 03:40:38 +00001537/* The user can define YYPARSE_PARAM as the name of an argument to be passed
1538 into yyparse. The argument should have type void *.
1539 It should actually point to an object.
1540 Grammar actions can access the variable by casting it
1541 to the proper pointer type. */
vlm7e436752006-03-18 06:53:11 +00001542
1543#ifdef YYPARSE_PARAM
vlm1aeaddd2006-07-13 08:24:20 +00001544# if defined (__STDC__) || defined (__cplusplus)
1545# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
1546# define YYPARSE_PARAM_DECL
1547# else
1548# define YYPARSE_PARAM_ARG YYPARSE_PARAM
1549# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1550# endif
1551#else /* !YYPARSE_PARAM */
1552# define YYPARSE_PARAM_ARG
1553# define YYPARSE_PARAM_DECL
1554#endif /* !YYPARSE_PARAM */
vlm0c6d3812006-03-21 03:40:38 +00001555
1556/* Prevent warning if -Wstrict-prototypes. */
1557#ifdef __GNUC__
vlm1aeaddd2006-07-13 08:24:20 +00001558# ifdef YYPARSE_PARAM
vlm0c6d3812006-03-21 03:40:38 +00001559int yyparse (void *);
vlm1aeaddd2006-07-13 08:24:20 +00001560# else
vlmfa67ddc2004-06-03 03:38:44 +00001561int yyparse (void);
vlm1aeaddd2006-07-13 08:24:20 +00001562# endif
vlm7e436752006-03-18 06:53:11 +00001563#endif
vlm1aeaddd2006-07-13 08:24:20 +00001564
1565
1566/* The lookahead symbol. */
1567int yychar;
1568
1569/* The semantic value of the lookahead symbol. */
1570YYSTYPE yylval;
1571
1572/* Number of parse errors so far. */
1573int yynerrs;
1574
vlm7e436752006-03-18 06:53:11 +00001575
vlm7e436752006-03-18 06:53:11 +00001576int
vlm1aeaddd2006-07-13 08:24:20 +00001577yyparse (YYPARSE_PARAM_ARG)
vlm0c6d3812006-03-21 03:40:38 +00001578 YYPARSE_PARAM_DECL
vlm7e436752006-03-18 06:53:11 +00001579{
vlm1aeaddd2006-07-13 08:24:20 +00001580
vlm0c6d3812006-03-21 03:40:38 +00001581 register int yystate;
1582 register int yyn;
vlm1aeaddd2006-07-13 08:24:20 +00001583 int yyresult;
1584 /* Number of tokens to shift before error messages enabled. */
1585 int yyerrstatus;
1586 /* Lookahead token as an internal (translated) token number. */
1587 int yychar1 = 0;
1588
1589 /* Three stacks and their tools:
1590 `yyss': related to states,
1591 `yyvs': related to semantic values,
1592 `yyls': related to locations.
1593
1594 Refer to the stacks thru separate pointers, to allow yyoverflow
1595 to reallocate them elsewhere. */
1596
1597 /* The state stack. */
1598 short yyssa[YYINITDEPTH];
1599 short *yyss = yyssa;
vlm0c6d3812006-03-21 03:40:38 +00001600 register short *yyssp;
vlm1aeaddd2006-07-13 08:24:20 +00001601
1602 /* The semantic value stack. */
1603 YYSTYPE yyvsa[YYINITDEPTH];
1604 YYSTYPE *yyvs = yyvsa;
vlm0c6d3812006-03-21 03:40:38 +00001605 register YYSTYPE *yyvsp;
vlm7e436752006-03-18 06:53:11 +00001606
vlm7e436752006-03-18 06:53:11 +00001607
vlm7e436752006-03-18 06:53:11 +00001608
vlmfa67ddc2004-06-03 03:38:44 +00001609#define YYPOPSTACK (yyvsp--, yyssp--)
vlmfa67ddc2004-06-03 03:38:44 +00001610
vlm1aeaddd2006-07-13 08:24:20 +00001611 YYSIZE_T yystacksize = YYINITDEPTH;
vlmfa67ddc2004-06-03 03:38:44 +00001612
vlm1aeaddd2006-07-13 08:24:20 +00001613 /* The variables used to return semantic value and location from the
1614 action routines. */
1615 YYSTYPE yyval;
vlmfa67ddc2004-06-03 03:38:44 +00001616
vlmfa67ddc2004-06-03 03:38:44 +00001617
vlm1aeaddd2006-07-13 08:24:20 +00001618 /* When reducing, the number of symbols on the RHS of the reduced
1619 rule. */
vlmfa67ddc2004-06-03 03:38:44 +00001620 int yylen;
1621
vlm1aeaddd2006-07-13 08:24:20 +00001622 YYDPRINTF ((stderr, "Starting parse\n"));
vlmfa67ddc2004-06-03 03:38:44 +00001623
1624 yystate = 0;
1625 yyerrstatus = 0;
1626 yynerrs = 0;
1627 yychar = YYEMPTY; /* Cause a token to be read. */
1628
1629 /* Initialize stack pointers.
1630 Waste one element of value and location stack
1631 so that they stay on the same level as the state stack.
1632 The wasted elements are never initialized. */
1633
vlm1aeaddd2006-07-13 08:24:20 +00001634 yyssp = yyss;
vlmfa67ddc2004-06-03 03:38:44 +00001635 yyvsp = yyvs;
vlmfa67ddc2004-06-03 03:38:44 +00001636
vlm1aeaddd2006-07-13 08:24:20 +00001637 goto yysetstate;
vlmfa67ddc2004-06-03 03:38:44 +00001638
vlm1aeaddd2006-07-13 08:24:20 +00001639/*------------------------------------------------------------.
1640| yynewstate -- Push a new state, which is found in yystate. |
1641`------------------------------------------------------------*/
1642 yynewstate:
1643 /* In all cases, when you get here, the value and location stacks
1644 have just been pushed. so pushing a state here evens the stacks.
1645 */
1646 yyssp++;
1647
1648 yysetstate:
1649 *yyssp = yystate;
vlmfa67ddc2004-06-03 03:38:44 +00001650
vlm0c6d3812006-03-21 03:40:38 +00001651 if (yyssp >= yyss + yystacksize - 1)
vlmfa67ddc2004-06-03 03:38:44 +00001652 {
vlmfa67ddc2004-06-03 03:38:44 +00001653 /* Get the current used size of the three stacks, in elements. */
vlm1aeaddd2006-07-13 08:24:20 +00001654 YYSIZE_T yysize = yyssp - yyss + 1;
vlmfa67ddc2004-06-03 03:38:44 +00001655
1656#ifdef yyoverflow
vlm1aeaddd2006-07-13 08:24:20 +00001657 {
1658 /* Give user a chance to reallocate the stack. Use copies of
1659 these so that the &'s don't force the real ones into
1660 memory. */
1661 YYSTYPE *yyvs1 = yyvs;
1662 short *yyss1 = yyss;
vlmfa67ddc2004-06-03 03:38:44 +00001663
vlm1aeaddd2006-07-13 08:24:20 +00001664
1665 /* Each stack pointer address is followed by the size of the
1666 data in use in that stack, in bytes. This used to be a
1667 conditional around just the two extra args, but that might
1668 be undefined if yyoverflow is a macro. */
1669 yyoverflow ("parser stack overflow",
1670 &yyss1, yysize * sizeof (*yyssp),
1671 &yyvs1, yysize * sizeof (*yyvsp),
1672
1673 &yystacksize);
1674
1675 yyss = yyss1;
1676 yyvs = yyvs1;
1677 }
vlmfa67ddc2004-06-03 03:38:44 +00001678#else /* no yyoverflow */
vlm1aeaddd2006-07-13 08:24:20 +00001679# ifndef YYSTACK_RELOCATE
1680 goto yyoverflowlab;
1681# else
vlmfa67ddc2004-06-03 03:38:44 +00001682 /* Extend the stack our own way. */
vlm0c6d3812006-03-21 03:40:38 +00001683 if (yystacksize >= YYMAXDEPTH)
vlm1aeaddd2006-07-13 08:24:20 +00001684 goto yyoverflowlab;
vlmfa67ddc2004-06-03 03:38:44 +00001685 yystacksize *= 2;
vlm0c6d3812006-03-21 03:40:38 +00001686 if (yystacksize > YYMAXDEPTH)
vlmfa67ddc2004-06-03 03:38:44 +00001687 yystacksize = YYMAXDEPTH;
vlm1aeaddd2006-07-13 08:24:20 +00001688
1689 {
1690 short *yyss1 = yyss;
1691 union yyalloc *yyptr =
1692 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1693 if (! yyptr)
1694 goto yyoverflowlab;
1695 YYSTACK_RELOCATE (yyss);
1696 YYSTACK_RELOCATE (yyvs);
1697
1698# undef YYSTACK_RELOCATE
1699 if (yyss1 != yyssa)
1700 YYSTACK_FREE (yyss1);
1701 }
1702# endif
vlmfa67ddc2004-06-03 03:38:44 +00001703#endif /* no yyoverflow */
1704
vlm1aeaddd2006-07-13 08:24:20 +00001705 yyssp = yyss + yysize - 1;
1706 yyvsp = yyvs + yysize - 1;
vlmfa67ddc2004-06-03 03:38:44 +00001707
vlm1aeaddd2006-07-13 08:24:20 +00001708
1709 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1710 (unsigned long int) yystacksize));
vlmfa67ddc2004-06-03 03:38:44 +00001711
vlm0c6d3812006-03-21 03:40:38 +00001712 if (yyssp >= yyss + yystacksize - 1)
vlmfa67ddc2004-06-03 03:38:44 +00001713 YYABORT;
1714 }
1715
vlm1aeaddd2006-07-13 08:24:20 +00001716 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
vlmfa67ddc2004-06-03 03:38:44 +00001717
1718 goto yybackup;
vlm1aeaddd2006-07-13 08:24:20 +00001719
1720/*-----------.
1721| yybackup. |
1722`-----------*/
1723yybackup:
vlmfa67ddc2004-06-03 03:38:44 +00001724
1725/* Do appropriate processing given the current state. */
vlm0c6d3812006-03-21 03:40:38 +00001726/* Read a lookahead token if we need one and don't already have one. */
vlmfa67ddc2004-06-03 03:38:44 +00001727/* yyresume: */
1728
vlm0c6d3812006-03-21 03:40:38 +00001729 /* First try to decide what to do without reference to lookahead token. */
vlmfa67ddc2004-06-03 03:38:44 +00001730
1731 yyn = yypact[yystate];
vlm1aeaddd2006-07-13 08:24:20 +00001732 if (yyn == YYPACT_NINF)
vlmfa67ddc2004-06-03 03:38:44 +00001733 goto yydefault;
1734
vlm0c6d3812006-03-21 03:40:38 +00001735 /* Not known => get a lookahead token if don't already have one. */
vlmfa67ddc2004-06-03 03:38:44 +00001736
vlm0c6d3812006-03-21 03:40:38 +00001737 /* yychar is either YYEMPTY or YYEOF
1738 or a valid token in external form. */
1739
vlmfa67ddc2004-06-03 03:38:44 +00001740 if (yychar == YYEMPTY)
1741 {
vlm1aeaddd2006-07-13 08:24:20 +00001742 YYDPRINTF ((stderr, "Reading a token: "));
vlmfa67ddc2004-06-03 03:38:44 +00001743 yychar = YYLEX;
1744 }
1745
vlm1aeaddd2006-07-13 08:24:20 +00001746 /* Convert token to internal form (in yychar1) for indexing tables with. */
vlm0c6d3812006-03-21 03:40:38 +00001747
vlm1aeaddd2006-07-13 08:24:20 +00001748 if (yychar <= 0) /* This means end of input. */
vlmfa67ddc2004-06-03 03:38:44 +00001749 {
vlm0c6d3812006-03-21 03:40:38 +00001750 yychar1 = 0;
vlm1aeaddd2006-07-13 08:24:20 +00001751 yychar = YYEOF; /* Don't call YYLEX any more. */
vlm0c6d3812006-03-21 03:40:38 +00001752
vlm1aeaddd2006-07-13 08:24:20 +00001753 YYDPRINTF ((stderr, "Now at end of input.\n"));
vlmfa67ddc2004-06-03 03:38:44 +00001754 }
1755 else
1756 {
vlm1aeaddd2006-07-13 08:24:20 +00001757 yychar1 = YYTRANSLATE (yychar);
vlm0c6d3812006-03-21 03:40:38 +00001758
vlm1aeaddd2006-07-13 08:24:20 +00001759 /* We have to keep this `#if YYDEBUG', since we use variables
1760 which are defined only if `YYDEBUG' is set. */
1761 YYDPRINTF ((stderr, "Next token is "));
1762 YYDSYMPRINT ((stderr, yychar1, yylval));
1763 YYDPRINTF ((stderr, "\n"));
vlmfa67ddc2004-06-03 03:38:44 +00001764 }
1765
vlm1aeaddd2006-07-13 08:24:20 +00001766 /* If the proper action on seeing token YYCHAR1 is to reduce or to
1767 detect an error, take that action. */
vlm0c6d3812006-03-21 03:40:38 +00001768 yyn += yychar1;
vlm1aeaddd2006-07-13 08:24:20 +00001769 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yychar1)
vlmfa67ddc2004-06-03 03:38:44 +00001770 goto yydefault;
vlmfa67ddc2004-06-03 03:38:44 +00001771 yyn = yytable[yyn];
vlm1aeaddd2006-07-13 08:24:20 +00001772 if (yyn <= 0)
vlmfa67ddc2004-06-03 03:38:44 +00001773 {
vlm1aeaddd2006-07-13 08:24:20 +00001774 if (yyn == 0 || yyn == YYTABLE_NINF)
vlmfa67ddc2004-06-03 03:38:44 +00001775 goto yyerrlab;
1776 yyn = -yyn;
1777 goto yyreduce;
1778 }
vlmfa67ddc2004-06-03 03:38:44 +00001779
1780 if (yyn == YYFINAL)
1781 YYACCEPT;
1782
vlm0c6d3812006-03-21 03:40:38 +00001783 /* Shift the lookahead token. */
vlm1aeaddd2006-07-13 08:24:20 +00001784 YYDPRINTF ((stderr, "Shifting token %d (%s), ",
1785 yychar, yytname[yychar1]));
vlmfa67ddc2004-06-03 03:38:44 +00001786
1787 /* Discard the token being shifted unless it is eof. */
1788 if (yychar != YYEOF)
1789 yychar = YYEMPTY;
1790
1791 *++yyvsp = yylval;
vlmfa67ddc2004-06-03 03:38:44 +00001792
vlm1aeaddd2006-07-13 08:24:20 +00001793
1794 /* Count tokens shifted since error; after three, turn off error
1795 status. */
1796 if (yyerrstatus)
1797 yyerrstatus--;
vlmfa67ddc2004-06-03 03:38:44 +00001798
1799 yystate = yyn;
1800 goto yynewstate;
1801
vlm0c6d3812006-03-21 03:40:38 +00001802
vlm1aeaddd2006-07-13 08:24:20 +00001803/*-----------------------------------------------------------.
1804| yydefault -- do the default action for the current state. |
1805`-----------------------------------------------------------*/
1806yydefault:
vlmfa67ddc2004-06-03 03:38:44 +00001807 yyn = yydefact[yystate];
1808 if (yyn == 0)
1809 goto yyerrlab;
vlm1aeaddd2006-07-13 08:24:20 +00001810 goto yyreduce;
vlmfa67ddc2004-06-03 03:38:44 +00001811
vlm1aeaddd2006-07-13 08:24:20 +00001812
1813/*-----------------------------.
1814| yyreduce -- Do a reduction. |
1815`-----------------------------*/
vlmfa67ddc2004-06-03 03:38:44 +00001816yyreduce:
vlm1aeaddd2006-07-13 08:24:20 +00001817 /* yyn is the number of a rule to reduce with. */
vlmfa67ddc2004-06-03 03:38:44 +00001818 yylen = yyr2[yyn];
vlmfa67ddc2004-06-03 03:38:44 +00001819
vlm1aeaddd2006-07-13 08:24:20 +00001820 /* If YYLEN is nonzero, implement the default value of the action:
1821 `$$ = $1'.
1822
1823 Otherwise, the following line sets YYVAL to garbage.
1824 This behavior is undocumented and Bison
1825 users should not rely upon it. Assigning to YYVAL
1826 unconditionally makes the parser a bit smaller, and it avoids a
1827 GCC warning that YYVAL may be used uninitialized. */
1828 yyval = yyvsp[1-yylen];
1829
1830
1831
1832#if YYDEBUG
1833 /* We have to keep this `#if YYDEBUG', since we use variables which
1834 are defined only if `YYDEBUG' is set. */
vlm0c6d3812006-03-21 03:40:38 +00001835 if (yydebug)
vlmfa67ddc2004-06-03 03:38:44 +00001836 {
vlm1aeaddd2006-07-13 08:24:20 +00001837 int yyi;
vlm0c6d3812006-03-21 03:40:38 +00001838
vlm1aeaddd2006-07-13 08:24:20 +00001839 YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
1840 yyn - 1, yyrline[yyn]);
vlm0c6d3812006-03-21 03:40:38 +00001841
1842 /* Print the symbols being reduced, and their result. */
vlm1aeaddd2006-07-13 08:24:20 +00001843 for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++)
1844 YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
1845 YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
vlm0c6d3812006-03-21 03:40:38 +00001846 }
1847#endif
vlm1aeaddd2006-07-13 08:24:20 +00001848 switch (yyn)
1849 {
1850 case 2:
vlm8cc3f742006-10-18 18:40:14 +00001851#line 355 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001852 {
vlm0c6d3812006-03-21 03:40:38 +00001853 *(void **)param = yyvsp[0].a_grammar;
vlm1aeaddd2006-07-13 08:24:20 +00001854 }
1855 break;
1856
1857 case 3:
vlm8cc3f742006-10-18 18:40:14 +00001858#line 361 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001859 {
vlm0c6d3812006-03-21 03:40:38 +00001860 yyval.a_grammar = asn1p_new();
1861 checkmem(yyval.a_grammar);
1862 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm1aeaddd2006-07-13 08:24:20 +00001863 }
1864 break;
1865
1866 case 4:
vlm8cc3f742006-10-18 18:40:14 +00001867#line 366 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001868 {
vlm0c6d3812006-03-21 03:40:38 +00001869 yyval.a_grammar = yyvsp[-1].a_grammar;
1870 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm1aeaddd2006-07-13 08:24:20 +00001871 }
1872 break;
1873
1874 case 5:
vlm8cc3f742006-10-18 18:40:14 +00001875#line 383 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00001876 { currentModule = asn1p_module_new(); }
1877 break;
1878
1879 case 6:
vlm8cc3f742006-10-18 18:40:14 +00001880#line 388 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001881 {
vlm7e436752006-03-18 06:53:11 +00001882
vlm43c8ac52006-09-17 04:52:50 +00001883 yyval.a_module = currentModule;
1884
vlm0c6d3812006-03-21 03:40:38 +00001885 if(yyvsp[-1].a_module) {
vlm43c8ac52006-09-17 04:52:50 +00001886 asn1p_module_t tmp = *(yyval.a_module);
1887 *(yyval.a_module) = *(yyvsp[-1].a_module);
1888 *(yyvsp[-1].a_module) = tmp;
1889 asn1p_module_free(yyvsp[-1].a_module);
vlmfa67ddc2004-06-03 03:38:44 +00001890 } else {
1891 /* There's a chance that a module is just plain empty */
vlmfa67ddc2004-06-03 03:38:44 +00001892 }
vlmfa67ddc2004-06-03 03:38:44 +00001893
vlm43c8ac52006-09-17 04:52:50 +00001894 yyval.a_module->ModuleName = yyvsp[-8].tv_str;
vlm0c6d3812006-03-21 03:40:38 +00001895 yyval.a_module->module_oid = yyvsp[-6].a_oid;
1896 yyval.a_module->module_flags = yyvsp[-4].a_module_flags;
vlm1aeaddd2006-07-13 08:24:20 +00001897 }
1898 break;
1899
vlm43c8ac52006-09-17 04:52:50 +00001900 case 7:
vlm8cc3f742006-10-18 18:40:14 +00001901#line 412 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001902 { yyval.a_oid = 0; }
1903 break;
1904
vlm43c8ac52006-09-17 04:52:50 +00001905 case 8:
vlm8cc3f742006-10-18 18:40:14 +00001906#line 413 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001907 { yyval.a_oid = yyvsp[0].a_oid; }
1908 break;
1909
vlm43c8ac52006-09-17 04:52:50 +00001910 case 9:
vlm8cc3f742006-10-18 18:40:14 +00001911#line 417 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001912 {
vlm0c6d3812006-03-21 03:40:38 +00001913 yyval.a_oid = yyvsp[-1].a_oid;
vlm1aeaddd2006-07-13 08:24:20 +00001914 }
1915 break;
1916
vlm43c8ac52006-09-17 04:52:50 +00001917 case 10:
vlm8cc3f742006-10-18 18:40:14 +00001918#line 420 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001919 {
vlm0c6d3812006-03-21 03:40:38 +00001920 yyval.a_oid = 0;
vlm1aeaddd2006-07-13 08:24:20 +00001921 }
1922 break;
1923
vlm43c8ac52006-09-17 04:52:50 +00001924 case 11:
vlm8cc3f742006-10-18 18:40:14 +00001925#line 426 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001926 {
vlm0c6d3812006-03-21 03:40:38 +00001927 yyval.a_oid = asn1p_oid_new();
1928 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1929 if(yyvsp[0].a_oid_arc.name)
1930 free(yyvsp[0].a_oid_arc.name);
vlm1aeaddd2006-07-13 08:24:20 +00001931 }
1932 break;
1933
vlm43c8ac52006-09-17 04:52:50 +00001934 case 12:
vlm8cc3f742006-10-18 18:40:14 +00001935#line 432 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001936 {
vlm0c6d3812006-03-21 03:40:38 +00001937 yyval.a_oid = yyvsp[-1].a_oid;
1938 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1939 if(yyvsp[0].a_oid_arc.name)
1940 free(yyvsp[0].a_oid_arc.name);
vlm1aeaddd2006-07-13 08:24:20 +00001941 }
1942 break;
1943
vlm43c8ac52006-09-17 04:52:50 +00001944 case 13:
vlm8cc3f742006-10-18 18:40:14 +00001945#line 441 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001946 { /* iso */
vlm0c6d3812006-03-21 03:40:38 +00001947 yyval.a_oid_arc.name = yyvsp[0].tv_str;
1948 yyval.a_oid_arc.number = -1;
vlm1aeaddd2006-07-13 08:24:20 +00001949 }
1950 break;
1951
vlm43c8ac52006-09-17 04:52:50 +00001952 case 14:
vlm8cc3f742006-10-18 18:40:14 +00001953#line 445 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001954 { /* iso(1) */
vlm0c6d3812006-03-21 03:40:38 +00001955 yyval.a_oid_arc.name = yyvsp[-3].tv_str;
1956 yyval.a_oid_arc.number = yyvsp[-1].a_int;
vlm1aeaddd2006-07-13 08:24:20 +00001957 }
1958 break;
1959
vlm43c8ac52006-09-17 04:52:50 +00001960 case 15:
vlm8cc3f742006-10-18 18:40:14 +00001961#line 449 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001962 { /* 1 */
vlm0c6d3812006-03-21 03:40:38 +00001963 yyval.a_oid_arc.name = 0;
1964 yyval.a_oid_arc.number = yyvsp[0].a_int;
vlm1aeaddd2006-07-13 08:24:20 +00001965 }
1966 break;
1967
vlm43c8ac52006-09-17 04:52:50 +00001968 case 16:
vlm8cc3f742006-10-18 18:40:14 +00001969#line 459 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001970 { yyval.a_module_flags = MSF_NOFLAGS; }
1971 break;
1972
vlm1aeaddd2006-07-13 08:24:20 +00001973 case 17:
vlm8cc3f742006-10-18 18:40:14 +00001974#line 460 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001975 {
vlm0c6d3812006-03-21 03:40:38 +00001976 yyval.a_module_flags = yyvsp[0].a_module_flags;
vlm1aeaddd2006-07-13 08:24:20 +00001977 }
1978 break;
1979
1980 case 18:
vlm8cc3f742006-10-18 18:40:14 +00001981#line 469 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00001982 {
1983 yyval.a_module_flags = yyvsp[0].a_module_flags;
1984 }
1985 break;
1986
1987 case 19:
vlm8cc3f742006-10-18 18:40:14 +00001988#line 472 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001989 {
vlm0c6d3812006-03-21 03:40:38 +00001990 yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
vlm1aeaddd2006-07-13 08:24:20 +00001991 }
1992 break;
1993
vlm43c8ac52006-09-17 04:52:50 +00001994 case 20:
vlm8cc3f742006-10-18 18:40:14 +00001995#line 481 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001996 {
vlm0c6d3812006-03-21 03:40:38 +00001997 yyval.a_module_flags = MSF_EXPLICIT_TAGS;
vlm1aeaddd2006-07-13 08:24:20 +00001998 }
1999 break;
2000
vlm43c8ac52006-09-17 04:52:50 +00002001 case 21:
vlm8cc3f742006-10-18 18:40:14 +00002002#line 484 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002003 {
vlm0c6d3812006-03-21 03:40:38 +00002004 yyval.a_module_flags = MSF_IMPLICIT_TAGS;
vlm1aeaddd2006-07-13 08:24:20 +00002005 }
2006 break;
2007
vlm43c8ac52006-09-17 04:52:50 +00002008 case 22:
vlm8cc3f742006-10-18 18:40:14 +00002009#line 487 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002010 {
vlm0c6d3812006-03-21 03:40:38 +00002011 yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
vlm1aeaddd2006-07-13 08:24:20 +00002012 }
2013 break;
2014
vlm43c8ac52006-09-17 04:52:50 +00002015 case 23:
vlm8cc3f742006-10-18 18:40:14 +00002016#line 490 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002017 {
vlm0c6d3812006-03-21 03:40:38 +00002018 yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
vlm1aeaddd2006-07-13 08:24:20 +00002019 }
2020 break;
2021
vlm43c8ac52006-09-17 04:52:50 +00002022 case 24:
vlm8cc3f742006-10-18 18:40:14 +00002023#line 494 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002024 {
vlm9283dbe2004-08-18 04:59:12 +00002025 /* X.680Amd1 specifies TAG and XER */
vlm0c6d3812006-03-21 03:40:38 +00002026 if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
2027 yyval.a_module_flags = MSF_TAG_INSTRUCTIONS;
2028 } else if(strcmp(yyvsp[-1].tv_str, "XER") == 0) {
2029 yyval.a_module_flags = MSF_XER_INSTRUCTIONS;
vlm9283dbe2004-08-18 04:59:12 +00002030 } else {
2031 fprintf(stderr,
2032 "WARNING: %s INSTRUCTIONS at line %d: "
2033 "Unrecognized encoding reference\n",
vlm0c6d3812006-03-21 03:40:38 +00002034 yyvsp[-1].tv_str, yylineno);
2035 yyval.a_module_flags = MSF_unk_INSTRUCTIONS;
vlm9283dbe2004-08-18 04:59:12 +00002036 }
vlm0c6d3812006-03-21 03:40:38 +00002037 free(yyvsp[-1].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00002038 }
2039 break;
2040
vlm43c8ac52006-09-17 04:52:50 +00002041 case 25:
vlm8cc3f742006-10-18 18:40:14 +00002042#line 515 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002043 { yyval.a_module = 0; }
2044 break;
2045
vlm43c8ac52006-09-17 04:52:50 +00002046 case 26:
vlm8cc3f742006-10-18 18:40:14 +00002047#line 516 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002048 {
vlm0c6d3812006-03-21 03:40:38 +00002049 yyval.a_module = yyvsp[0].a_module;
vlm1aeaddd2006-07-13 08:24:20 +00002050 }
2051 break;
2052
vlm43c8ac52006-09-17 04:52:50 +00002053 case 27:
vlm8cc3f742006-10-18 18:40:14 +00002054#line 525 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002055 {
vlmd3420d32006-09-14 10:35:20 +00002056 yyval.a_module = asn1p_module_new();
2057 AL_IMPORT(yyval.a_module, exports, yyvsp[-2].a_module, xp_next);
2058 AL_IMPORT(yyval.a_module, imports, yyvsp[-1].a_module, xp_next);
2059 AL_IMPORT(yyval.a_module, members, yyvsp[0].a_module, next);
vlm1aeaddd2006-07-13 08:24:20 +00002060 }
2061 break;
2062
vlm43c8ac52006-09-17 04:52:50 +00002063 case 28:
vlm8cc3f742006-10-18 18:40:14 +00002064#line 534 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002065 {
vlm0c6d3812006-03-21 03:40:38 +00002066 yyval.a_module = yyvsp[0].a_module;
vlm1aeaddd2006-07-13 08:24:20 +00002067 }
2068 break;
2069
vlm43c8ac52006-09-17 04:52:50 +00002070 case 29:
vlm8cc3f742006-10-18 18:40:14 +00002071#line 537 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002072 {
2073 if(yyvsp[-1].a_module) {
2074 yyval.a_module = yyvsp[-1].a_module;
2075 } else {
2076 yyval.a_module = yyvsp[0].a_module;
2077 break;
2078 }
2079 AL_IMPORT(yyval.a_module, members, yyvsp[0].a_module, next);
2080 }
2081 break;
2082
vlm1aeaddd2006-07-13 08:24:20 +00002083 case 30:
vlm8cc3f742006-10-18 18:40:14 +00002084#line 553 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002085 {
vlm0c6d3812006-03-21 03:40:38 +00002086 yyval.a_module = asn1p_module_new();
2087 checkmem(yyval.a_module);
2088 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
2089 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
2090 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002091 }
2092 break;
2093
2094 case 31:
vlm8cc3f742006-10-18 18:40:14 +00002095#line 560 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002096 {
vlm0c6d3812006-03-21 03:40:38 +00002097 yyval.a_module = asn1p_module_new();
2098 checkmem(yyval.a_module);
2099 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
2100 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
2101 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002102 }
2103 break;
2104
2105 case 32:
vlm8cc3f742006-10-18 18:40:14 +00002106#line 573 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002107 {
2108 yyval.a_module = asn1p_module_new();
2109 checkmem(yyval.a_module);
2110 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
2111 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
2112 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
2113 }
vlm1aeaddd2006-07-13 08:24:20 +00002114 break;
2115
vlmd3420d32006-09-14 10:35:20 +00002116 case 33:
vlm8cc3f742006-10-18 18:40:14 +00002117#line 581 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002118 { asn1p_lexer_hack_push_encoding_control(); }
2119 break;
2120
2121 case 34:
vlm8cc3f742006-10-18 18:40:14 +00002122#line 582 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002123 {
vlm9283dbe2004-08-18 04:59:12 +00002124 fprintf(stderr,
2125 "WARNING: ENCODING-CONTROL %s "
2126 "specification at line %d ignored\n",
vlm0c6d3812006-03-21 03:40:38 +00002127 yyvsp[-1].tv_str, yylineno);
2128 free(yyvsp[-1].tv_str);
2129 yyval.a_module = 0;
vlm1aeaddd2006-07-13 08:24:20 +00002130 }
2131 break;
2132
vlm43c8ac52006-09-17 04:52:50 +00002133 case 35:
vlm8cc3f742006-10-18 18:40:14 +00002134#line 594 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002135 {
vlmfa67ddc2004-06-03 03:38:44 +00002136 return yyerror(
vlm1ac75e72005-11-26 11:21:55 +00002137 "Attempt to redefine a standard basic string type, "
2138 "please comment out or remove this type redefinition.");
vlm1aeaddd2006-07-13 08:24:20 +00002139 }
2140 break;
2141
vlm43c8ac52006-09-17 04:52:50 +00002142 case 36:
vlm8cc3f742006-10-18 18:40:14 +00002143#line 607 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002144 { yyval.a_module = 0; }
2145 break;
2146
vlm43c8ac52006-09-17 04:52:50 +00002147 case 38:
vlm8cc3f742006-10-18 18:40:14 +00002148#line 611 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002149 {
vlm931aeed2005-08-12 10:09:10 +00002150 if(!saved_aid && 0)
2151 return yyerror("Unterminated IMPORTS FROM, "
2152 "expected semicolon ';'");
2153 saved_aid = 0;
vlm0c6d3812006-03-21 03:40:38 +00002154 yyval.a_module = yyvsp[-1].a_module;
vlm1aeaddd2006-07-13 08:24:20 +00002155 }
2156 break;
2157
vlm43c8ac52006-09-17 04:52:50 +00002158 case 39:
vlm8cc3f742006-10-18 18:40:14 +00002159#line 621 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002160 {
vlmfa67ddc2004-06-03 03:38:44 +00002161 return yyerror("Empty IMPORTS list");
vlm1aeaddd2006-07-13 08:24:20 +00002162 }
2163 break;
2164
vlm43c8ac52006-09-17 04:52:50 +00002165 case 40:
vlm8cc3f742006-10-18 18:40:14 +00002166#line 627 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002167 { yyval.a_module = asn1p_module_new(); }
2168 break;
2169
2170 case 42:
vlm8cc3f742006-10-18 18:40:14 +00002171#line 631 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002172 {
vlm0c6d3812006-03-21 03:40:38 +00002173 yyval.a_module = asn1p_module_new();
2174 checkmem(yyval.a_module);
2175 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm1aeaddd2006-07-13 08:24:20 +00002176 }
2177 break;
2178
vlm86851cd2006-10-13 12:37:39 +00002179 case 43:
vlm8cc3f742006-10-18 18:40:14 +00002180#line 636 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002181 {
vlm0c6d3812006-03-21 03:40:38 +00002182 yyval.a_module = yyvsp[-1].a_module;
2183 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm1aeaddd2006-07-13 08:24:20 +00002184 }
2185 break;
2186
vlm86851cd2006-10-13 12:37:39 +00002187 case 44:
vlm8cc3f742006-10-18 18:40:14 +00002188#line 643 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002189 { memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); }
2190 break;
2191
vlm86851cd2006-10-13 12:37:39 +00002192 case 45:
vlm8cc3f742006-10-18 18:40:14 +00002193#line 644 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002194 { yyval.a_aid.oid = yyvsp[0].a_oid; }
2195 break;
2196
vlm86851cd2006-10-13 12:37:39 +00002197 case 46:
vlm8cc3f742006-10-18 18:40:14 +00002198#line 648 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002199 {
vlm0c6d3812006-03-21 03:40:38 +00002200 yyval.a_xports = yyvsp[-3].a_xports;
2201 yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
2202 yyval.a_xports->identifier = yyvsp[0].a_aid;
vlm931aeed2005-08-12 10:09:10 +00002203 /* This stupid thing is used for look-back hack. */
vlm0c6d3812006-03-21 03:40:38 +00002204 saved_aid = yyval.a_xports->identifier.oid ? 0 : &(yyval.a_xports->identifier);
2205 checkmem(yyval.a_xports);
vlm1aeaddd2006-07-13 08:24:20 +00002206 }
2207 break;
2208
vlm86851cd2006-10-13 12:37:39 +00002209 case 47:
vlm8cc3f742006-10-18 18:40:14 +00002210#line 659 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002211 {
vlm0c6d3812006-03-21 03:40:38 +00002212 yyval.a_xports = asn1p_xports_new();
2213 checkmem(yyval.a_xports);
2214 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002215 }
2216 break;
2217
vlm86851cd2006-10-13 12:37:39 +00002218 case 48:
vlm8cc3f742006-10-18 18:40:14 +00002219#line 664 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002220 {
vlm0c6d3812006-03-21 03:40:38 +00002221 yyval.a_xports = yyvsp[-2].a_xports;
2222 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002223 }
2224 break;
2225
vlm43c8ac52006-09-17 04:52:50 +00002226 case 49:
vlm8cc3f742006-10-18 18:40:14 +00002227#line 671 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002228 {
vlm43c8ac52006-09-17 04:52:50 +00002229 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002230 checkmem(yyval.a_expr);
2231 yyval.a_expr->Identifier = yyvsp[0].tv_str;
2232 yyval.a_expr->expr_type = A1TC_REFERENCE;
vlm1aeaddd2006-07-13 08:24:20 +00002233 }
2234 break;
2235
vlm43c8ac52006-09-17 04:52:50 +00002236 case 50:
vlm8cc3f742006-10-18 18:40:14 +00002237#line 677 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002238 { /* Completely equivalent to above */
2239 yyval.a_expr = NEW_EXPR();
2240 checkmem(yyval.a_expr);
2241 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2242 yyval.a_expr->expr_type = A1TC_REFERENCE;
2243 }
vlmd3420d32006-09-14 10:35:20 +00002244 break;
2245
vlm43c8ac52006-09-17 04:52:50 +00002246 case 51:
vlm8cc3f742006-10-18 18:40:14 +00002247#line 683 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002248 {
2249 yyval.a_expr = NEW_EXPR();
2250 checkmem(yyval.a_expr);
2251 yyval.a_expr->Identifier = yyvsp[0].tv_str;
2252 yyval.a_expr->expr_type = A1TC_REFERENCE;
2253 }
2254 break;
2255
2256 case 52:
vlm8cc3f742006-10-18 18:40:14 +00002257#line 693 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002258 { yyval.a_module = 0; }
2259 break;
2260
2261 case 53:
vlm8cc3f742006-10-18 18:40:14 +00002262#line 694 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002263 {
2264 yyval.a_module = asn1p_module_new();
2265 checkmem(yyval.a_module);
2266 if(yyvsp[0].a_xports) {
2267 TQ_ADD(&(yyval.a_module->exports), yyvsp[0].a_xports, xp_next);
2268 } else {
2269 /* "EXPORTS ALL;" */
2270 }
2271 }
2272 break;
2273
vlm86851cd2006-10-13 12:37:39 +00002274 case 54:
vlm8cc3f742006-10-18 18:40:14 +00002275#line 706 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002276 {
vlm0c6d3812006-03-21 03:40:38 +00002277 yyval.a_xports = yyvsp[-1].a_xports;
vlm1aeaddd2006-07-13 08:24:20 +00002278 }
2279 break;
2280
vlm86851cd2006-10-13 12:37:39 +00002281 case 55:
vlm8cc3f742006-10-18 18:40:14 +00002282#line 709 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002283 {
vlm0c6d3812006-03-21 03:40:38 +00002284 yyval.a_xports = 0;
vlm1aeaddd2006-07-13 08:24:20 +00002285 }
2286 break;
2287
vlm86851cd2006-10-13 12:37:39 +00002288 case 56:
vlm8cc3f742006-10-18 18:40:14 +00002289#line 712 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002290 {
vlmfa67ddc2004-06-03 03:38:44 +00002291 /* Empty EXPORTS clause effectively prohibits export. */
vlm0c6d3812006-03-21 03:40:38 +00002292 yyval.a_xports = asn1p_xports_new();
2293 checkmem(yyval.a_xports);
vlm1aeaddd2006-07-13 08:24:20 +00002294 }
2295 break;
2296
vlm86851cd2006-10-13 12:37:39 +00002297 case 57:
vlm8cc3f742006-10-18 18:40:14 +00002298#line 720 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002299 {
vlm0c6d3812006-03-21 03:40:38 +00002300 yyval.a_xports = asn1p_xports_new();
2301 assert(yyval.a_xports);
2302 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002303 }
2304 break;
2305
vlm86851cd2006-10-13 12:37:39 +00002306 case 58:
vlm8cc3f742006-10-18 18:40:14 +00002307#line 725 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002308 {
vlm0c6d3812006-03-21 03:40:38 +00002309 yyval.a_xports = yyvsp[-2].a_xports;
2310 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002311 }
2312 break;
2313
vlm43c8ac52006-09-17 04:52:50 +00002314 case 59:
vlm8cc3f742006-10-18 18:40:14 +00002315#line 732 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002316 {
vlm43c8ac52006-09-17 04:52:50 +00002317 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002318 checkmem(yyval.a_expr);
2319 yyval.a_expr->Identifier = yyvsp[0].tv_str;
2320 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
vlm1aeaddd2006-07-13 08:24:20 +00002321 }
2322 break;
2323
vlm43c8ac52006-09-17 04:52:50 +00002324 case 60:
vlm8cc3f742006-10-18 18:40:14 +00002325#line 738 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002326 {
2327 yyval.a_expr = NEW_EXPR();
2328 checkmem(yyval.a_expr);
2329 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2330 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
2331 }
vlm1aeaddd2006-07-13 08:24:20 +00002332 break;
2333
vlm43c8ac52006-09-17 04:52:50 +00002334 case 61:
vlm8cc3f742006-10-18 18:40:14 +00002335#line 744 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002336 {
2337 yyval.a_expr = NEW_EXPR();
2338 checkmem(yyval.a_expr);
2339 yyval.a_expr->Identifier = yyvsp[0].tv_str;
2340 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
2341 }
2342 break;
2343
2344 case 62:
vlm8cc3f742006-10-18 18:40:14 +00002345#line 753 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002346 { yyval.a_constr = yyvsp[-1].a_constr; }
2347 break;
2348
2349 case 63:
vlm8cc3f742006-10-18 18:40:14 +00002350#line 756 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002351 {
vlm59b620a2006-03-21 07:46:48 +00002352 yyval.a_expr = yyvsp[-2].a_expr;
vlm0c6d3812006-03-21 03:40:38 +00002353 assert(yyval.a_expr->Identifier == 0);
vlm59b620a2006-03-21 07:46:48 +00002354 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
vlm0c6d3812006-03-21 03:40:38 +00002355 yyval.a_expr->meta_type = AMT_VALUESET;
vlm59b620a2006-03-21 07:46:48 +00002356 yyval.a_expr->constraints = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00002357 }
2358 break;
2359
vlm86851cd2006-10-13 12:37:39 +00002360 case 64:
vlm8cc3f742006-10-18 18:40:14 +00002361#line 766 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002362 {
vlm17e65d02006-03-21 04:48:15 +00002363 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002364 }
2365 break;
2366
vlm86851cd2006-10-13 12:37:39 +00002367 case 65:
vlm8cc3f742006-10-18 18:40:14 +00002368#line 779 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002369 {
vlm43c8ac52006-09-17 04:52:50 +00002370 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002371 checkmem(yyval.a_expr);
2372 yyval.a_expr->reference = yyvsp[0].a_ref;
2373 yyval.a_expr->expr_type = A1TC_REFERENCE;
2374 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm1aeaddd2006-07-13 08:24:20 +00002375 }
2376 break;
2377
vlm86851cd2006-10-13 12:37:39 +00002378 case 66:
vlm8cc3f742006-10-18 18:40:14 +00002379#line 789 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002380 {
vlm43c8ac52006-09-17 04:52:50 +00002381 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002382 checkmem(yyval.a_expr);
vlm17e65d02006-03-21 04:48:15 +00002383 yyval.a_expr->reference = yyvsp[-3].a_ref;
2384 yyval.a_expr->rhs_pspecs = yyvsp[-1].a_expr;
2385 yyval.a_expr->expr_type = A1TC_REFERENCE;
2386 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm1aeaddd2006-07-13 08:24:20 +00002387 }
2388 break;
2389
vlm86851cd2006-10-13 12:37:39 +00002390 case 67:
vlm8cc3f742006-10-18 18:40:14 +00002391#line 809 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002392 {
vlm0c6d3812006-03-21 03:40:38 +00002393 yyval.a_expr = yyvsp[0].a_expr;
2394 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2395 assert(yyval.a_expr->expr_type);
2396 assert(yyval.a_expr->meta_type);
vlm1aeaddd2006-07-13 08:24:20 +00002397 }
2398 break;
2399
vlm86851cd2006-10-13 12:37:39 +00002400 case 68:
vlm8cc3f742006-10-18 18:40:14 +00002401#line 815 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002402 {
vlm0c6d3812006-03-21 03:40:38 +00002403 yyval.a_expr = yyvsp[0].a_expr;
2404 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2405 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
2406 assert(yyval.a_expr->meta_type == AMT_OBJECTCLASS);
vlm1aeaddd2006-07-13 08:24:20 +00002407 }
2408 break;
2409
vlm43c8ac52006-09-17 04:52:50 +00002410 case 69:
vlm8cc3f742006-10-18 18:40:14 +00002411#line 831 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002412 {
2413 yyval.a_expr = yyvsp[0].a_expr;
2414 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
2415 yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
2416 }
2417 break;
2418
2419 case 70:
vlm8cc3f742006-10-18 18:40:14 +00002420#line 837 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002421 {
2422 yyval.a_expr = yyvsp[0].a_expr;
2423 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
2424 yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
2425 }
2426 break;
2427
2428 case 71:
vlm8cc3f742006-10-18 18:40:14 +00002429#line 845 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002430 {
vlmfa67ddc2004-06-03 03:38:44 +00002431 int ret;
vlm0c6d3812006-03-21 03:40:38 +00002432 yyval.a_plist = asn1p_paramlist_new(yylineno);
2433 checkmem(yyval.a_plist);
2434 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
vlmfa67ddc2004-06-03 03:38:44 +00002435 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00002436 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
2437 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm1aeaddd2006-07-13 08:24:20 +00002438 }
2439 break;
2440
vlm86851cd2006-10-13 12:37:39 +00002441 case 72:
vlm8cc3f742006-10-18 18:40:14 +00002442#line 854 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002443 {
vlmfa67ddc2004-06-03 03:38:44 +00002444 int ret;
vlm0c6d3812006-03-21 03:40:38 +00002445 yyval.a_plist = yyvsp[-2].a_plist;
2446 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
vlmfa67ddc2004-06-03 03:38:44 +00002447 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00002448 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
2449 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm1aeaddd2006-07-13 08:24:20 +00002450 }
2451 break;
2452
vlm86851cd2006-10-13 12:37:39 +00002453 case 73:
vlm8cc3f742006-10-18 18:40:14 +00002454#line 865 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002455 {
vlm0c6d3812006-03-21 03:40:38 +00002456 yyval.a_parg.governor = NULL;
2457 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00002458 }
2459 break;
2460
vlmd3420d32006-09-14 10:35:20 +00002461 case 74:
vlm8cc3f742006-10-18 18:40:14 +00002462#line 869 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002463 {
2464 int ret;
2465 yyval.a_parg.governor = asn1p_ref_new(yylineno);
vlm86851cd2006-10-13 12:37:39 +00002466 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
vlmd3420d32006-09-14 10:35:20 +00002467 checkmem(ret == 0);
2468 yyval.a_parg.argument = yyvsp[0].tv_str;
2469 }
2470 break;
2471
2472 case 75:
vlm8cc3f742006-10-18 18:40:14 +00002473#line 876 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002474 {
2475 int ret;
2476 yyval.a_parg.governor = asn1p_ref_new(yylineno);
2477 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
2478 checkmem(ret == 0);
2479 yyval.a_parg.argument = yyvsp[0].tv_str;
2480 }
2481 break;
2482
2483 case 76:
vlm8cc3f742006-10-18 18:40:14 +00002484#line 883 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002485 {
vlm43c8ac52006-09-17 04:52:50 +00002486 int ret;
2487 yyval.a_parg.governor = asn1p_ref_new(yylineno);
2488 ret = asn1p_ref_add_component(yyval.a_parg.governor,
2489 ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
2490 checkmem(ret == 0);
2491 yyval.a_parg.argument = yyvsp[0].tv_str;
2492 }
2493 break;
2494
vlm86851cd2006-10-13 12:37:39 +00002495 case 77:
vlm8cc3f742006-10-18 18:40:14 +00002496#line 891 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002497 {
2498 int ret;
2499 yyval.a_parg.governor = asn1p_ref_new(yylineno);
2500 ret = asn1p_ref_add_component(yyval.a_parg.governor,
2501 ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
2502 checkmem(ret == 0);
2503 yyval.a_parg.argument = yyvsp[0].tv_str;
2504 }
2505 break;
2506
2507 case 78:
vlm8cc3f742006-10-18 18:40:14 +00002508#line 902 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002509 {
2510 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002511 checkmem(yyval.a_expr);
2512 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002513 }
2514 break;
2515
vlm86851cd2006-10-13 12:37:39 +00002516 case 79:
vlm8cc3f742006-10-18 18:40:14 +00002517#line 907 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002518 {
vlm0c6d3812006-03-21 03:40:38 +00002519 yyval.a_expr = yyvsp[-2].a_expr;
2520 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002521 }
2522 break;
2523
vlm86851cd2006-10-13 12:37:39 +00002524 case 80:
vlm8cc3f742006-10-18 18:40:14 +00002525#line 914 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002526 {
vlm0c6d3812006-03-21 03:40:38 +00002527 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002528 }
2529 break;
2530
vlm86851cd2006-10-13 12:37:39 +00002531 case 81:
vlm8cc3f742006-10-18 18:40:14 +00002532#line 917 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002533 {
vlm43c8ac52006-09-17 04:52:50 +00002534 yyval.a_expr = NEW_EXPR();
vlm17e65d02006-03-21 04:48:15 +00002535 checkmem(yyval.a_expr);
2536 yyval.a_expr->Identifier = "?";
2537 yyval.a_expr->expr_type = A1TC_REFERENCE;
2538 yyval.a_expr->meta_type = AMT_VALUE;
2539 yyval.a_expr->value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00002540 }
2541 break;
2542
vlm86851cd2006-10-13 12:37:39 +00002543 case 82:
vlm8cc3f742006-10-18 18:40:14 +00002544#line 925 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002545 {
vlm0c6d3812006-03-21 03:40:38 +00002546 asn1p_ref_t *ref;
vlm43c8ac52006-09-17 04:52:50 +00002547 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002548 checkmem(yyval.a_expr);
2549 yyval.a_expr->Identifier = yyvsp[0].tv_str;
2550 yyval.a_expr->expr_type = A1TC_REFERENCE;
2551 yyval.a_expr->meta_type = AMT_VALUE;
2552 ref = asn1p_ref_new(yylineno);
2553 asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
2554 yyval.a_expr->value = asn1p_value_fromref(ref, 0);
vlm1aeaddd2006-07-13 08:24:20 +00002555 }
2556 break;
2557
vlm86851cd2006-10-13 12:37:39 +00002558 case 83:
vlm8cc3f742006-10-18 18:40:14 +00002559#line 936 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002560 {
vlm43c8ac52006-09-17 04:52:50 +00002561 yyval.a_expr = NEW_EXPR();
vlmdfbff8c2006-03-21 09:41:28 +00002562 yyval.a_expr->expr_type = A1TC_VALUESET;
2563 yyval.a_expr->meta_type = AMT_VALUESET;
2564 yyval.a_expr->constraints = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00002565 }
2566 break;
2567
vlm86851cd2006-10-13 12:37:39 +00002568 case 84:
vlm8cc3f742006-10-18 18:40:14 +00002569#line 959 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002570 { yyval.a_expr = NEW_EXPR(); }
vlm1aeaddd2006-07-13 08:24:20 +00002571 break;
2572
vlm86851cd2006-10-13 12:37:39 +00002573 case 85:
vlm8cc3f742006-10-18 18:40:14 +00002574#line 960 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002575 { yyval.a_expr = yyvsp[0].a_expr; }
2576 break;
2577
vlm86851cd2006-10-13 12:37:39 +00002578 case 86:
vlm8cc3f742006-10-18 18:40:14 +00002579#line 963 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002580 {
vlm43c8ac52006-09-17 04:52:50 +00002581 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002582 checkmem(yyval.a_expr);
2583 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002584 }
2585 break;
2586
vlm86851cd2006-10-13 12:37:39 +00002587 case 87:
vlm8cc3f742006-10-18 18:40:14 +00002588#line 968 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002589 {
vlm0c6d3812006-03-21 03:40:38 +00002590 yyval.a_expr = yyvsp[-2].a_expr;
2591 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002592 }
2593 break;
2594
vlm86851cd2006-10-13 12:37:39 +00002595 case 88:
vlm8cc3f742006-10-18 18:40:14 +00002596#line 975 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002597 {
vlm0c6d3812006-03-21 03:40:38 +00002598 yyval.a_expr = yyvsp[-1].a_expr;
2599 assert(yyval.a_expr->Identifier == 0);
2600 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2601 yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
2602 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002603 }
2604 break;
2605
vlm86851cd2006-10-13 12:37:39 +00002606 case 89:
vlm8cc3f742006-10-18 18:40:14 +00002607#line 982 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002608 {
vlm0c6d3812006-03-21 03:40:38 +00002609 yyval.a_expr = yyvsp[-1].a_expr;
2610 yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
2611 yyval.a_expr->marker = yyvsp[0].a_marker;
2612 _fixup_anonymous_identifier(yyval.a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002613 }
2614 break;
2615
vlm86851cd2006-10-13 12:37:39 +00002616 case 90:
vlm8cc3f742006-10-18 18:40:14 +00002617#line 988 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002618 {
vlm43c8ac52006-09-17 04:52:50 +00002619 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002620 checkmem(yyval.a_expr);
2621 yyval.a_expr->meta_type = yyvsp[0].a_expr->meta_type;
2622 yyval.a_expr->expr_type = A1TC_COMPONENTS_OF;
2623 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002624 }
2625 break;
2626
vlm86851cd2006-10-13 12:37:39 +00002627 case 91:
vlm8cc3f742006-10-18 18:40:14 +00002628#line 995 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002629 {
vlm0c6d3812006-03-21 03:40:38 +00002630 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002631 }
2632 break;
2633
vlm86851cd2006-10-13 12:37:39 +00002634 case 92:
vlm8cc3f742006-10-18 18:40:14 +00002635#line 1001 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002636 {
vlm43c8ac52006-09-17 04:52:50 +00002637 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002638 checkmem(yyval.a_expr);
2639 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002640 }
2641 break;
2642
vlm86851cd2006-10-13 12:37:39 +00002643 case 93:
vlm8cc3f742006-10-18 18:40:14 +00002644#line 1006 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002645 {
vlm0c6d3812006-03-21 03:40:38 +00002646 yyval.a_expr = yyvsp[-2].a_expr;
2647 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002648 }
2649 break;
2650
vlm86851cd2006-10-13 12:37:39 +00002651 case 94:
vlm8cc3f742006-10-18 18:40:14 +00002652#line 1013 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002653 {
vlm0c6d3812006-03-21 03:40:38 +00002654 yyval.a_expr = yyvsp[0].a_expr;
2655 assert(yyval.a_expr->Identifier == 0);
2656 yyval.a_expr->Identifier = yyvsp[-1].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00002657 }
2658 break;
2659
vlm86851cd2006-10-13 12:37:39 +00002660 case 95:
vlm8cc3f742006-10-18 18:40:14 +00002661#line 1018 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002662 {
vlm0c6d3812006-03-21 03:40:38 +00002663 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002664 }
2665 break;
2666
vlm86851cd2006-10-13 12:37:39 +00002667 case 96:
vlm8cc3f742006-10-18 18:40:14 +00002668#line 1021 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002669 {
vlm0c6d3812006-03-21 03:40:38 +00002670 yyval.a_expr = yyvsp[0].a_expr;
2671 _fixup_anonymous_identifier(yyval.a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002672 }
2673 break;
2674
vlm86851cd2006-10-13 12:37:39 +00002675 case 97:
vlm8cc3f742006-10-18 18:40:14 +00002676#line 1028 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002677 {
vlm0c6d3812006-03-21 03:40:38 +00002678 yyval.a_expr = yyvsp[-2].a_expr;
2679 checkmem(yyval.a_expr);
2680 yyval.a_expr->with_syntax = yyvsp[0].a_wsynt;
2681 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
2682 assert(yyval.a_expr->meta_type == AMT_OBJECTCLASS);
vlm1aeaddd2006-07-13 08:24:20 +00002683 }
2684 break;
2685
vlm86851cd2006-10-13 12:37:39 +00002686 case 98:
vlm8cc3f742006-10-18 18:40:14 +00002687#line 1038 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002688 { yyval.a_int = 0; }
2689 break;
2690
vlm86851cd2006-10-13 12:37:39 +00002691 case 99:
vlm8cc3f742006-10-18 18:40:14 +00002692#line 1039 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002693 { yyval.a_int = 1; }
2694 break;
2695
vlm86851cd2006-10-13 12:37:39 +00002696 case 100:
vlm8cc3f742006-10-18 18:40:14 +00002697#line 1043 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002698 {
vlm43c8ac52006-09-17 04:52:50 +00002699 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002700 checkmem(yyval.a_expr);
2701 yyval.a_expr->expr_type = A1TC_CLASSDEF;
2702 yyval.a_expr->meta_type = AMT_OBJECTCLASS;
2703 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002704 }
2705 break;
2706
vlm86851cd2006-10-13 12:37:39 +00002707 case 101:
vlm8cc3f742006-10-18 18:40:14 +00002708#line 1050 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002709 {
vlm0c6d3812006-03-21 03:40:38 +00002710 yyval.a_expr = yyvsp[-2].a_expr;
2711 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002712 }
2713 break;
2714
vlm86851cd2006-10-13 12:37:39 +00002715 case 102:
vlm8cc3f742006-10-18 18:40:14 +00002716#line 1060 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002717 {
vlm43c8ac52006-09-17 04:52:50 +00002718 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002719 checkmem(yyval.a_expr);
2720 yyval.a_expr->Identifier = yyvsp[-1].tv_str;
2721 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2722 yyval.a_expr->expr_type = A1TC_CLASSFIELD_TFS; /* TypeFieldSpec */
2723 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002724 }
2725 break;
2726
vlm86851cd2006-10-13 12:37:39 +00002727 case 103:
vlm8cc3f742006-10-18 18:40:14 +00002728#line 1070 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002729 {
vlm43c8ac52006-09-17 04:52:50 +00002730 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002731 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
2732 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2733 yyval.a_expr->expr_type = A1TC_CLASSFIELD_FTVFS; /* FixedTypeValueFieldSpec */
2734 yyval.a_expr->unique = yyvsp[-1].a_int;
2735 yyval.a_expr->marker = yyvsp[0].a_marker;
2736 asn1p_expr_add(yyval.a_expr, yyvsp[-2].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002737 }
2738 break;
2739
vlm86851cd2006-10-13 12:37:39 +00002740 case 104:
vlm8cc3f742006-10-18 18:40:14 +00002741#line 1081 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002742 {
vlm43c8ac52006-09-17 04:52:50 +00002743 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002744 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2745 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2746 yyval.a_expr->expr_type = A1TC_CLASSFIELD_VTVFS;
2747 yyval.a_expr->reference = yyvsp[-1].a_ref;
2748 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002749 }
2750 break;
2751
vlm86851cd2006-10-13 12:37:39 +00002752 case 105:
vlm8cc3f742006-10-18 18:40:14 +00002753#line 1091 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002754 {
vlm43c8ac52006-09-17 04:52:50 +00002755 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002756 checkmem(yyval.a_expr);
2757 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2758 yyval.a_expr->reference = yyvsp[-1].a_ref;
2759 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2760 yyval.a_expr->expr_type = A1TC_CLASSFIELD_OFS;
2761 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002762 }
2763 break;
2764
vlm86851cd2006-10-13 12:37:39 +00002765 case 106:
vlm8cc3f742006-10-18 18:40:14 +00002766#line 1102 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002767 {
vlm43c8ac52006-09-17 04:52:50 +00002768 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002769 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2770 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2771 yyval.a_expr->expr_type = A1TC_CLASSFIELD_VTVSFS;
2772 yyval.a_expr->reference = yyvsp[-1].a_ref;
2773 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002774 }
2775 break;
2776
vlm86851cd2006-10-13 12:37:39 +00002777 case 107:
vlm8cc3f742006-10-18 18:40:14 +00002778#line 1112 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002779 {
vlm43c8ac52006-09-17 04:52:50 +00002780 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002781 checkmem(yyval.a_expr);
2782 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2783 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2784 yyval.a_expr->expr_type = A1TC_CLASSFIELD_FTVSFS;
2785 asn1p_expr_add(yyval.a_expr, yyvsp[-1].a_expr);
2786 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002787 }
2788 break;
2789
vlm86851cd2006-10-13 12:37:39 +00002790 case 108:
vlm8cc3f742006-10-18 18:40:14 +00002791#line 1123 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002792 {
vlm43c8ac52006-09-17 04:52:50 +00002793 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002794 checkmem(yyval.a_expr);
2795 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2796 yyval.a_expr->reference = yyvsp[-1].a_ref;
2797 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2798 yyval.a_expr->expr_type = A1TC_CLASSFIELD_OSFS;
2799 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002800 }
2801 break;
2802
vlm86851cd2006-10-13 12:37:39 +00002803 case 109:
vlm8cc3f742006-10-18 18:40:14 +00002804#line 1135 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002805 { yyval.a_wsynt = 0; }
2806 break;
2807
vlm86851cd2006-10-13 12:37:39 +00002808 case 110:
vlm8cc3f742006-10-18 18:40:14 +00002809#line 1136 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002810 {
vlm0c6d3812006-03-21 03:40:38 +00002811 yyval.a_wsynt = yyvsp[0].a_wsynt;
vlm1aeaddd2006-07-13 08:24:20 +00002812 }
2813 break;
2814
vlm86851cd2006-10-13 12:37:39 +00002815 case 111:
vlm8cc3f742006-10-18 18:40:14 +00002816#line 1143 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002817 { asn1p_lexer_hack_enable_with_syntax(); }
2818 break;
2819
vlm86851cd2006-10-13 12:37:39 +00002820 case 112:
vlm8cc3f742006-10-18 18:40:14 +00002821#line 1145 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002822 {
vlm0c6d3812006-03-21 03:40:38 +00002823 yyval.a_wsynt = yyvsp[-1].a_wsynt;
vlm1aeaddd2006-07-13 08:24:20 +00002824 }
2825 break;
2826
vlm86851cd2006-10-13 12:37:39 +00002827 case 113:
vlm8cc3f742006-10-18 18:40:14 +00002828#line 1151 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002829 {
vlm0c6d3812006-03-21 03:40:38 +00002830 yyval.a_wsynt = asn1p_wsyntx_new();
2831 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm1aeaddd2006-07-13 08:24:20 +00002832 }
2833 break;
2834
vlm86851cd2006-10-13 12:37:39 +00002835 case 114:
vlm8cc3f742006-10-18 18:40:14 +00002836#line 1155 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002837 {
vlm0c6d3812006-03-21 03:40:38 +00002838 yyval.a_wsynt = yyvsp[-1].a_wsynt;
2839 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm1aeaddd2006-07-13 08:24:20 +00002840 }
2841 break;
2842
vlm86851cd2006-10-13 12:37:39 +00002843 case 115:
vlm8cc3f742006-10-18 18:40:14 +00002844#line 1162 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002845 {
vlm1fcf7592006-08-18 02:27:55 +00002846 yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_opaque.buf, 0);
vlm0c6d3812006-03-21 03:40:38 +00002847 yyval.a_wchunk->type = WC_WHITESPACE;
vlm1aeaddd2006-07-13 08:24:20 +00002848 }
2849 break;
2850
vlm86851cd2006-10-13 12:37:39 +00002851 case 116:
vlm8cc3f742006-10-18 18:40:14 +00002852#line 1166 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002853 {
vlm1fcf7592006-08-18 02:27:55 +00002854 yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_str, 0);
vlm1aeaddd2006-07-13 08:24:20 +00002855 }
2856 break;
2857
vlm86851cd2006-10-13 12:37:39 +00002858 case 117:
vlm8cc3f742006-10-18 18:40:14 +00002859#line 1169 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002860 {
vlm1fcf7592006-08-18 02:27:55 +00002861 yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].a_refcomp.name, 0);
vlm0c6d3812006-03-21 03:40:38 +00002862 yyval.a_wchunk->type = WC_FIELD;
vlm1aeaddd2006-07-13 08:24:20 +00002863 }
2864 break;
2865
vlm86851cd2006-10-13 12:37:39 +00002866 case 118:
vlm8cc3f742006-10-18 18:40:14 +00002867#line 1173 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002868 {
vlm0c6d3812006-03-21 03:40:38 +00002869 yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt);
vlm1aeaddd2006-07-13 08:24:20 +00002870 }
2871 break;
2872
vlm43c8ac52006-09-17 04:52:50 +00002873 case 119:
vlm8cc3f742006-10-18 18:40:14 +00002874#line 1179 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002875 {
2876 yyval.a_expr = NEW_EXPR();
vlmd3420d32006-09-14 10:35:20 +00002877 checkmem(yyval.a_expr);
2878 yyval.a_expr->Identifier = strdup("...");
vlmd3420d32006-09-14 10:35:20 +00002879 checkmem(yyval.a_expr->Identifier);
2880 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2881 yyval.a_expr->meta_type = AMT_TYPE;
2882 }
2883 break;
2884
vlm43c8ac52006-09-17 04:52:50 +00002885 case 120:
vlm8cc3f742006-10-18 18:40:14 +00002886#line 1187 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002887 {
2888 yyval.a_expr = NEW_EXPR();
2889 checkmem(yyval.a_expr);
2890 yyval.a_expr->Identifier = strdup("...");
2891 checkmem(yyval.a_expr->Identifier);
2892 yyval.a_expr->value = yyvsp[0].a_value;
2893 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2894 yyval.a_expr->meta_type = AMT_TYPE;
2895 }
2896 break;
2897
2898 case 121:
vlm8cc3f742006-10-18 18:40:14 +00002899#line 1196 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002900 {
2901 yyval.a_expr = NEW_EXPR();
2902 checkmem(yyval.a_expr);
2903 yyval.a_expr->Identifier = strdup("...");
2904 yyval.a_expr->value = yyvsp[0].a_value;
2905 checkmem(yyval.a_expr->Identifier);
2906 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2907 yyval.a_expr->meta_type = AMT_TYPE;
2908 }
2909 break;
2910
2911 case 122:
vlm8cc3f742006-10-18 18:40:14 +00002912#line 1208 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002913 {
vlm0c6d3812006-03-21 03:40:38 +00002914 yyval.a_expr = yyvsp[-1].a_expr;
2915 yyval.a_expr->tag = yyvsp[-2].a_tag;
vlmec8f6812004-08-22 03:19:54 +00002916 /*
2917 * Outer constraint for SEQUENCE OF and SET OF applies
2918 * to the inner type.
2919 */
vlm0c6d3812006-03-21 03:40:38 +00002920 if(yyval.a_expr->expr_type == ASN_CONSTR_SEQUENCE_OF
2921 || yyval.a_expr->expr_type == ASN_CONSTR_SET_OF) {
2922 assert(!TQ_FIRST(&(yyval.a_expr->members))->constraints);
2923 TQ_FIRST(&(yyval.a_expr->members))->constraints = yyvsp[0].a_constr;
vlmec8f6812004-08-22 03:19:54 +00002924 } else {
vlm0c6d3812006-03-21 03:40:38 +00002925 if(yyval.a_expr->constraints) {
2926 assert(!yyvsp[-1].a_expr);
vlmec8f6812004-08-22 03:19:54 +00002927 } else {
vlm0c6d3812006-03-21 03:40:38 +00002928 yyval.a_expr->constraints = yyvsp[0].a_constr;
vlmec8f6812004-08-22 03:19:54 +00002929 }
2930 }
vlm1aeaddd2006-07-13 08:24:20 +00002931 }
2932 break;
2933
vlm86851cd2006-10-13 12:37:39 +00002934 case 123:
vlm8cc3f742006-10-18 18:40:14 +00002935#line 1230 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002936 {
vlm0c6d3812006-03-21 03:40:38 +00002937 yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
vlm7e436752006-03-18 06:53:11 +00002938 asn1p_as_pointer = 0;
vlm1aeaddd2006-07-13 08:24:20 +00002939 }
2940 break;
2941
vlm86851cd2006-10-13 12:37:39 +00002942 case 124:
vlm8cc3f742006-10-18 18:40:14 +00002943#line 1237 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002944 {
vlm0c6d3812006-03-21 03:40:38 +00002945 yyval.a_expr = yyvsp[0].a_expr;
2946 yyval.a_expr->marker.flags |= yyvsp[-1].a_int;
vlm7e436752006-03-18 06:53:11 +00002947
vlm0c6d3812006-03-21 03:40:38 +00002948 if((yyval.a_expr->marker.flags & EM_INDIRECT)
2949 && (yyval.a_expr->marker.flags & EM_OPTIONAL) != EM_OPTIONAL) {
vlm177a5b62005-09-05 05:17:57 +00002950 fprintf(stderr,
2951 "INFO: Directive <ASN1C:RepresentAsPointer> "
2952 "applied to %s at line %d\n",
vlm0c6d3812006-03-21 03:40:38 +00002953 ASN_EXPR_TYPE2STR(yyval.a_expr->expr_type)
2954 ? ASN_EXPR_TYPE2STR(yyval.a_expr->expr_type)
vlm177a5b62005-09-05 05:17:57 +00002955 : "member",
vlm0c6d3812006-03-21 03:40:38 +00002956 yyval.a_expr->_lineno
vlm177a5b62005-09-05 05:17:57 +00002957 );
2958 }
vlm1aeaddd2006-07-13 08:24:20 +00002959 }
2960 break;
2961
vlm86851cd2006-10-13 12:37:39 +00002962 case 125:
vlm8cc3f742006-10-18 18:40:14 +00002963#line 1256 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002964 {
vlm0c6d3812006-03-21 03:40:38 +00002965 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002966 }
2967 break;
2968
vlm86851cd2006-10-13 12:37:39 +00002969 case 126:
vlm8cc3f742006-10-18 18:40:14 +00002970#line 1259 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002971 {
vlm0c6d3812006-03-21 03:40:38 +00002972 yyval.a_expr = yyvsp[-1].a_expr;
2973 assert(yyval.a_expr->expr_type == A1TC_INVALID);
2974 yyval.a_expr->expr_type = ASN_CONSTR_CHOICE;
2975 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00002976 }
2977 break;
2978
vlm86851cd2006-10-13 12:37:39 +00002979 case 127:
vlm8cc3f742006-10-18 18:40:14 +00002980#line 1265 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002981 {
vlm0c6d3812006-03-21 03:40:38 +00002982 yyval.a_expr = yyvsp[-1].a_expr;
2983 assert(yyval.a_expr->expr_type == A1TC_INVALID);
2984 yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE;
2985 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00002986 }
2987 break;
2988
vlm86851cd2006-10-13 12:37:39 +00002989 case 128:
vlm8cc3f742006-10-18 18:40:14 +00002990#line 1271 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002991 {
vlm0c6d3812006-03-21 03:40:38 +00002992 yyval.a_expr = yyvsp[-1].a_expr;
2993 assert(yyval.a_expr->expr_type == A1TC_INVALID);
2994 yyval.a_expr->expr_type = ASN_CONSTR_SET;
2995 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00002996 }
2997 break;
2998
vlm86851cd2006-10-13 12:37:39 +00002999 case 129:
vlm8cc3f742006-10-18 18:40:14 +00003000#line 1277 "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_SEQUENCE_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
vlm86851cd2006-10-13 12:37:39 +00003013 case 130:
vlm8cc3f742006-10-18 18:40:14 +00003014#line 1287 "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->constraints = yyvsp[-4].a_constr;
3019 yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
3020 yyval.a_expr->meta_type = AMT_TYPE;
3021 yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
3022 yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
3023 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00003024 }
3025 break;
3026
vlm86851cd2006-10-13 12:37:39 +00003027 case 131:
vlm8cc3f742006-10-18 18:40:14 +00003028#line 1297 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003029 {
vlm43c8ac52006-09-17 04:52:50 +00003030 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003031 checkmem(yyval.a_expr);
3032 yyval.a_expr->expr_type = ASN_TYPE_ANY;
3033 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003034 }
3035 break;
3036
vlm86851cd2006-10-13 12:37:39 +00003037 case 132:
vlm8cc3f742006-10-18 18:40:14 +00003038#line 1303 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003039 {
vlmec8f6812004-08-22 03:19:54 +00003040 int ret;
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 = asn1p_ref_new(yylineno);
3044 ret = asn1p_ref_add_component(yyval.a_expr->reference,
3045 yyvsp[0].tv_str, RLT_lowercase);
vlmec8f6812004-08-22 03:19:54 +00003046 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003047 yyval.a_expr->expr_type = ASN_TYPE_ANY;
3048 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003049 }
3050 break;
3051
vlm86851cd2006-10-13 12:37:39 +00003052 case 133:
vlm8cc3f742006-10-18 18:40:14 +00003053#line 1314 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003054 {
vlm43c8ac52006-09-17 04:52:50 +00003055 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003056 checkmem(yyval.a_expr);
3057 yyval.a_expr->reference = yyvsp[0].a_ref;
3058 yyval.a_expr->expr_type = A1TC_INSTANCE;
3059 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003060 }
3061 break;
3062
vlm86851cd2006-10-13 12:37:39 +00003063 case 134:
vlm8cc3f742006-10-18 18:40:14 +00003064#line 1329 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003065 {
vlmfa67ddc2004-06-03 03:38:44 +00003066 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003067 yyval.a_ref = asn1p_ref_new(yylineno);
3068 checkmem(yyval.a_ref);
3069 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
vlmfa67ddc2004-06-03 03:38:44 +00003070 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003071 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003072 }
3073 break;
3074
vlm43c8ac52006-09-17 04:52:50 +00003075 case 135:
vlm8cc3f742006-10-18 18:40:14 +00003076#line 1337 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +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 136:
vlm8cc3f742006-10-18 18:40:14 +00003090#line 1347 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003091 {
3092 int ret;
3093 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);
3096 checkmem(ret == 0);
3097 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
3098 checkmem(ret == 0);
3099 free(yyvsp[-2].tv_str);
3100 }
3101 break;
3102
3103 case 137:
vlm8cc3f742006-10-18 18:40:14 +00003104#line 1357 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003105 {
vlm808411d2006-03-14 16:31:37 +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[-2].tv_str, RLT_UNKNOWN);
vlm808411d2006-03-14 16:31:37 +00003110 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003111 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
vlm808411d2006-03-14 16:31:37 +00003112 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003113 free(yyvsp[-2].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003114 }
3115 break;
3116
vlm86851cd2006-10-13 12:37:39 +00003117 case 138:
vlm8cc3f742006-10-18 18:40:14 +00003118#line 1367 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003119 {
vlmfa67ddc2004-06-03 03:38:44 +00003120 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003121 yyval.a_ref = asn1p_ref_new(yylineno);
3122 checkmem(yyval.a_ref);
3123 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
3124 free(yyvsp[0].tv_str);
vlmc94e28f2004-09-15 11:59:51 +00003125 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003126 }
3127 break;
3128
vlm86851cd2006-10-13 12:37:39 +00003129 case 139:
vlm8cc3f742006-10-18 18:40:14 +00003130#line 1375 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003131 {
vlmc94e28f2004-09-15 11:59:51 +00003132 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003133 yyval.a_ref = yyvsp[0].a_ref;
3134 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_CAPITALS);
3135 free(yyvsp[-2].tv_str);
vlmfa67ddc2004-06-03 03:38:44 +00003136 checkmem(ret == 0);
3137 /*
3138 * Move the last element infront.
3139 */
3140 {
3141 struct asn1p_ref_component_s tmp_comp;
vlm0c6d3812006-03-21 03:40:38 +00003142 tmp_comp = yyval.a_ref->components[yyval.a_ref->comp_count-1];
3143 memmove(&yyval.a_ref->components[1],
3144 &yyval.a_ref->components[0],
3145 sizeof(yyval.a_ref->components[0])
3146 * (yyval.a_ref->comp_count - 1));
3147 yyval.a_ref->components[0] = tmp_comp;
vlmfa67ddc2004-06-03 03:38:44 +00003148 }
vlm1aeaddd2006-07-13 08:24:20 +00003149 }
3150 break;
3151
vlm86851cd2006-10-13 12:37:39 +00003152 case 140:
vlm8cc3f742006-10-18 18:40:14 +00003153#line 1397 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003154 {
vlmfa67ddc2004-06-03 03:38:44 +00003155 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003156 yyval.a_ref = asn1p_ref_new(yylineno);
3157 checkmem(yyval.a_ref);
3158 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
3159 free(yyvsp[0].a_refcomp.name);
vlmfa67ddc2004-06-03 03:38:44 +00003160 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003161 }
3162 break;
3163
vlm86851cd2006-10-13 12:37:39 +00003164 case 141:
vlm8cc3f742006-10-18 18:40:14 +00003165#line 1405 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003166 {
vlmfa67ddc2004-06-03 03:38:44 +00003167 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003168 yyval.a_ref = yyvsp[-2].a_ref;
3169 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
3170 free(yyvsp[0].a_refcomp.name);
vlmfa67ddc2004-06-03 03:38:44 +00003171 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003172 }
3173 break;
3174
vlm86851cd2006-10-13 12:37:39 +00003175 case 143:
vlm8cc3f742006-10-18 18:40:14 +00003176#line 1418 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003177 {
vlm0c6d3812006-03-21 03:40:38 +00003178 yyval.a_refcomp.lex_type = RLT_AmpUppercase;
3179 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00003180 }
3181 break;
3182
vlm86851cd2006-10-13 12:37:39 +00003183 case 144:
vlm8cc3f742006-10-18 18:40:14 +00003184#line 1423 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003185 {
vlm0c6d3812006-03-21 03:40:38 +00003186 yyval.a_refcomp.lex_type = RLT_Amplowercase;
3187 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00003188 }
3189 break;
3190
vlm86851cd2006-10-13 12:37:39 +00003191 case 145:
vlm8cc3f742006-10-18 18:40:14 +00003192#line 1432 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003193 {
vlm0c6d3812006-03-21 03:40:38 +00003194 yyval.a_ref = asn1p_ref_new(yylineno);
3195 asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
vlm1aeaddd2006-07-13 08:24:20 +00003196 }
3197 break;
3198
vlm86851cd2006-10-13 12:37:39 +00003199 case 146:
vlm8cc3f742006-10-18 18:40:14 +00003200#line 1436 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003201 {
vlm0c6d3812006-03-21 03:40:38 +00003202 yyval.a_ref = yyval.a_ref;
3203 asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
vlm1aeaddd2006-07-13 08:24:20 +00003204 }
3205 break;
3206
vlm86851cd2006-10-13 12:37:39 +00003207 case 147:
vlm8cc3f742006-10-18 18:40:14 +00003208#line 1440 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003209 {
vlm0c6d3812006-03-21 03:40:38 +00003210 yyval.a_ref = yyval.a_ref;
3211 asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
vlm1aeaddd2006-07-13 08:24:20 +00003212 }
3213 break;
3214
vlm86851cd2006-10-13 12:37:39 +00003215 case 148:
vlm8cc3f742006-10-18 18:40:14 +00003216#line 1447 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003217 {
vlm0c6d3812006-03-21 03:40:38 +00003218 yyval.a_ref = asn1p_ref_new(yylineno);
3219 asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
vlm1aeaddd2006-07-13 08:24:20 +00003220 }
3221 break;
3222
vlm86851cd2006-10-13 12:37:39 +00003223 case 149:
vlm8cc3f742006-10-18 18:40:14 +00003224#line 1467 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003225 {
vlm0c6d3812006-03-21 03:40:38 +00003226 yyval.a_expr = yyvsp[-2].a_expr;
3227 assert(yyval.a_expr->Identifier == NULL);
3228 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
3229 yyval.a_expr->meta_type = AMT_VALUE;
3230 yyval.a_expr->value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003231 }
3232 break;
3233
vlm86851cd2006-10-13 12:37:39 +00003234 case 152:
vlm8cc3f742006-10-18 18:40:14 +00003235#line 1479 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003236 {
vlm0c6d3812006-03-21 03:40:38 +00003237 yyval.a_value = asn1p_value_fromint(0);
3238 checkmem(yyval.a_value);
3239 yyval.a_value->type = ATV_CHOICE_IDENTIFIER;
3240 yyval.a_value->value.choice_identifier.identifier = yyvsp[-2].tv_str;
3241 yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003242 }
3243 break;
3244
vlm86851cd2006-10-13 12:37:39 +00003245 case 153:
vlm8cc3f742006-10-18 18:40:14 +00003246#line 1486 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003247 { asn1p_lexer_hack_push_opaque_state(); }
3248 break;
3249
vlm86851cd2006-10-13 12:37:39 +00003250 case 154:
vlm8cc3f742006-10-18 18:40:14 +00003251#line 1486 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003252 {
vlm0c6d3812006-03-21 03:40:38 +00003253 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
3254 checkmem(yyval.a_value);
3255 yyval.a_value->type = ATV_UNPARSED;
vlm1aeaddd2006-07-13 08:24:20 +00003256 }
3257 break;
3258
vlm86851cd2006-10-13 12:37:39 +00003259 case 155:
vlm8cc3f742006-10-18 18:40:14 +00003260#line 1491 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003261 {
vlm0c6d3812006-03-21 03:40:38 +00003262 yyval.a_value = asn1p_value_fromint(0);
3263 checkmem(yyval.a_value);
3264 yyval.a_value->type = ATV_NULL;
vlm1aeaddd2006-07-13 08:24:20 +00003265 }
3266 break;
3267
vlm86851cd2006-10-13 12:37:39 +00003268 case 156:
vlm8cc3f742006-10-18 18:40:14 +00003269#line 1499 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003270 {
vlm0c6d3812006-03-21 03:40:38 +00003271 yyval.a_value = asn1p_value_fromint(0);
3272 checkmem(yyval.a_value);
3273 yyval.a_value->type = ATV_FALSE;
vlm1aeaddd2006-07-13 08:24:20 +00003274 }
3275 break;
3276
vlm86851cd2006-10-13 12:37:39 +00003277 case 157:
vlm8cc3f742006-10-18 18:40:14 +00003278#line 1504 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003279 {
vlm0c6d3812006-03-21 03:40:38 +00003280 yyval.a_value = asn1p_value_fromint(0);
3281 checkmem(yyval.a_value);
3282 yyval.a_value->type = ATV_TRUE;
vlm1aeaddd2006-07-13 08:24:20 +00003283 }
3284 break;
3285
vlm86851cd2006-10-13 12:37:39 +00003286 case 158:
vlm8cc3f742006-10-18 18:40:14 +00003287#line 1509 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003288 {
vlm0c6d3812006-03-21 03:40:38 +00003289 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
3290 checkmem(yyval.a_value);
vlm1aeaddd2006-07-13 08:24:20 +00003291 }
3292 break;
3293
vlm86851cd2006-10-13 12:37:39 +00003294 case 159:
vlm8cc3f742006-10-18 18:40:14 +00003295#line 1513 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003296 {
vlm0c6d3812006-03-21 03:40:38 +00003297 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
3298 checkmem(yyval.a_value);
vlm1aeaddd2006-07-13 08:24:20 +00003299 }
3300 break;
3301
vlm86851cd2006-10-13 12:37:39 +00003302 case 160:
vlm8cc3f742006-10-18 18:40:14 +00003303#line 1517 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003304 {
vlm0c6d3812006-03-21 03:40:38 +00003305 yyval.a_value = yyval.a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003306 }
3307 break;
3308
vlm86851cd2006-10-13 12:37:39 +00003309 case 161:
vlm8cc3f742006-10-18 18:40:14 +00003310#line 1520 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003311 {
vlm17e65d02006-03-21 04:48:15 +00003312 yyval.a_value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003313 }
3314 break;
3315
vlm86851cd2006-10-13 12:37:39 +00003316 case 162:
vlm8cc3f742006-10-18 18:40:14 +00003317#line 1526 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003318 {
vlmfa67ddc2004-06-03 03:38:44 +00003319 asn1p_ref_t *ref;
3320 int ret;
3321 ref = asn1p_ref_new(yylineno);
3322 checkmem(ref);
vlm0c6d3812006-03-21 03:40:38 +00003323 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
vlmfa67ddc2004-06-03 03:38:44 +00003324 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003325 yyval.a_value = asn1p_value_fromref(ref, 0);
3326 checkmem(yyval.a_value);
3327 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003328 }
3329 break;
3330
vlm86851cd2006-10-13 12:37:39 +00003331 case 163:
vlm8cc3f742006-10-18 18:40:14 +00003332#line 1537 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003333 {
vlmfa67ddc2004-06-03 03:38:44 +00003334 asn1p_ref_t *ref;
3335 int ret;
3336 ref = asn1p_ref_new(yylineno);
3337 checkmem(ref);
vlm0c6d3812006-03-21 03:40:38 +00003338 ret = asn1p_ref_add_component(ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
vlmfa67ddc2004-06-03 03:38:44 +00003339 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003340 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
vlmfa67ddc2004-06-03 03:38:44 +00003341 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003342 yyval.a_value = asn1p_value_fromref(ref, 0);
3343 checkmem(yyval.a_value);
3344 free(yyvsp[-2].tv_str);
3345 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003346 }
3347 break;
3348
vlm86851cd2006-10-13 12:37:39 +00003349 case 164:
vlm8cc3f742006-10-18 18:40:14 +00003350#line 1555 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003351 {
vlm0c6d3812006-03-21 03:40:38 +00003352 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
3353 checkmem(yyval.a_value);
vlm1aeaddd2006-07-13 08:24:20 +00003354 }
3355 break;
3356
vlm86851cd2006-10-13 12:37:39 +00003357 case 165:
vlm8cc3f742006-10-18 18:40:14 +00003358#line 1559 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003359 {
vlm0c6d3812006-03-21 03:40:38 +00003360 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3361 checkmem(yyval.a_value);
3362 yyval.a_value->type = ATV_TUPLE;
vlm1aeaddd2006-07-13 08:24:20 +00003363 }
3364 break;
3365
vlm86851cd2006-10-13 12:37:39 +00003366 case 166:
vlm8cc3f742006-10-18 18:40:14 +00003367#line 1564 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003368 {
vlm0c6d3812006-03-21 03:40:38 +00003369 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3370 checkmem(yyval.a_value);
3371 yyval.a_value->type = ATV_QUADRUPLE;
vlm1aeaddd2006-07-13 08:24:20 +00003372 }
3373 break;
3374
vlm86851cd2006-10-13 12:37:39 +00003375 case 167:
vlm8cc3f742006-10-18 18:40:14 +00003376#line 1598 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003377 {
vlm0c6d3812006-03-21 03:40:38 +00003378 yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
3379 yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
3380 checkmem(yyval.tv_opaque.buf);
3381 yyval.tv_opaque.buf[0] = '{';
3382 memcpy(yyval.tv_opaque.buf + 1, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
3383 yyval.tv_opaque.buf[yyval.tv_opaque.len] = '\0';
3384 free(yyvsp[0].tv_opaque.buf);
vlm1aeaddd2006-07-13 08:24:20 +00003385 }
3386 break;
3387
vlm86851cd2006-10-13 12:37:39 +00003388 case 168:
vlm8cc3f742006-10-18 18:40:14 +00003389#line 1607 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003390 {
vlm0c6d3812006-03-21 03:40:38 +00003391 int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
vlmfa67ddc2004-06-03 03:38:44 +00003392 char *p = malloc(newsize + 1);
3393 checkmem(p);
vlm0c6d3812006-03-21 03:40:38 +00003394 memcpy(p , yyvsp[-1].tv_opaque.buf, yyvsp[-1].tv_opaque.len);
3395 memcpy(p + yyvsp[-1].tv_opaque.len, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
vlmfa67ddc2004-06-03 03:38:44 +00003396 p[newsize] = '\0';
vlm0c6d3812006-03-21 03:40:38 +00003397 free(yyvsp[-1].tv_opaque.buf);
3398 free(yyvsp[0].tv_opaque.buf);
3399 yyval.tv_opaque.buf = p;
3400 yyval.tv_opaque.len = newsize;
vlm1aeaddd2006-07-13 08:24:20 +00003401 }
3402 break;
3403
vlm86851cd2006-10-13 12:37:39 +00003404 case 169:
vlm8cc3f742006-10-18 18:40:14 +00003405#line 1622 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003406 { yyval.a_type = ASN_BASIC_BOOLEAN; }
3407 break;
3408
vlm86851cd2006-10-13 12:37:39 +00003409 case 170:
vlm8cc3f742006-10-18 18:40:14 +00003410#line 1623 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003411 { yyval.a_type = ASN_BASIC_NULL; }
3412 break;
3413
vlm86851cd2006-10-13 12:37:39 +00003414 case 171:
vlm8cc3f742006-10-18 18:40:14 +00003415#line 1624 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003416 { yyval.a_type = ASN_BASIC_REAL; }
3417 break;
3418
vlm1aeaddd2006-07-13 08:24:20 +00003419 case 172:
vlm8cc3f742006-10-18 18:40:14 +00003420#line 1625 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003421 { yyval.a_type = yyvsp[0].a_type; }
vlm1aeaddd2006-07-13 08:24:20 +00003422 break;
3423
3424 case 173:
vlm8cc3f742006-10-18 18:40:14 +00003425#line 1626 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003426 { yyval.a_type = ASN_BASIC_OCTET_STRING; }
vlm1aeaddd2006-07-13 08:24:20 +00003427 break;
3428
3429 case 174:
vlm8cc3f742006-10-18 18:40:14 +00003430#line 1627 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003431 { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; }
vlm1aeaddd2006-07-13 08:24:20 +00003432 break;
3433
3434 case 175:
vlm8cc3f742006-10-18 18:40:14 +00003435#line 1628 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003436 { yyval.a_type = ASN_BASIC_RELATIVE_OID; }
vlm1aeaddd2006-07-13 08:24:20 +00003437 break;
3438
3439 case 176:
vlm8cc3f742006-10-18 18:40:14 +00003440#line 1629 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003441 { yyval.a_type = ASN_BASIC_EXTERNAL; }
vlm1aeaddd2006-07-13 08:24:20 +00003442 break;
3443
3444 case 177:
vlm8cc3f742006-10-18 18:40:14 +00003445#line 1630 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003446 { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; }
vlm1aeaddd2006-07-13 08:24:20 +00003447 break;
3448
3449 case 178:
vlm8cc3f742006-10-18 18:40:14 +00003450#line 1631 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003451 { yyval.a_type = ASN_BASIC_CHARACTER_STRING; }
vlm1aeaddd2006-07-13 08:24:20 +00003452 break;
3453
3454 case 179:
vlm8cc3f742006-10-18 18:40:14 +00003455#line 1632 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003456 { yyval.a_type = ASN_BASIC_UTCTime; }
vlmd3420d32006-09-14 10:35:20 +00003457 break;
3458
3459 case 180:
vlm8cc3f742006-10-18 18:40:14 +00003460#line 1633 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003461 { yyval.a_type = ASN_BASIC_GeneralizedTime; }
vlmd3420d32006-09-14 10:35:20 +00003462 break;
3463
3464 case 181:
vlm8cc3f742006-10-18 18:40:14 +00003465#line 1634 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003466 { yyval.a_type = yyvsp[0].a_type; }
vlmd3420d32006-09-14 10:35:20 +00003467 break;
3468
3469 case 182:
vlm8cc3f742006-10-18 18:40:14 +00003470#line 1641 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003471 { yyval.a_type = ASN_BASIC_INTEGER; }
vlm43c8ac52006-09-17 04:52:50 +00003472 break;
3473
3474 case 183:
vlm8cc3f742006-10-18 18:40:14 +00003475#line 1642 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003476 { yyval.a_type = ASN_BASIC_ENUMERATED; }
3477 break;
3478
3479 case 184:
vlm8cc3f742006-10-18 18:40:14 +00003480#line 1643 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003481 { yyval.a_type = ASN_BASIC_BIT_STRING; }
3482 break;
3483
3484 case 185:
vlm8cc3f742006-10-18 18:40:14 +00003485#line 1647 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003486 {
vlm43c8ac52006-09-17 04:52:50 +00003487 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003488 checkmem(yyval.a_expr);
3489 yyval.a_expr->expr_type = yyvsp[0].a_type;
3490 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003491 }
3492 break;
3493
vlm86851cd2006-10-13 12:37:39 +00003494 case 186:
vlm8cc3f742006-10-18 18:40:14 +00003495#line 1653 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003496 {
vlm0c6d3812006-03-21 03:40:38 +00003497 if(yyvsp[0].a_expr) {
3498 yyval.a_expr = yyvsp[0].a_expr;
vlmfa67ddc2004-06-03 03:38:44 +00003499 } else {
vlm43c8ac52006-09-17 04:52:50 +00003500 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003501 checkmem(yyval.a_expr);
vlmfa67ddc2004-06-03 03:38:44 +00003502 }
vlm0c6d3812006-03-21 03:40:38 +00003503 yyval.a_expr->expr_type = yyvsp[-1].a_type;
3504 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003505 }
3506 break;
3507
vlm86851cd2006-10-13 12:37:39 +00003508 case 187:
vlm8cc3f742006-10-18 18:40:14 +00003509#line 1666 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003510 { yyval.a_type = ASN_STRING_BMPString; }
3511 break;
3512
vlm86851cd2006-10-13 12:37:39 +00003513 case 188:
vlm8cc3f742006-10-18 18:40:14 +00003514#line 1667 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003515 {
vlm0c6d3812006-03-21 03:40:38 +00003516 yyval.a_type = ASN_STRING_GeneralString;
vlmc94e28f2004-09-15 11:59:51 +00003517 fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
vlm1aeaddd2006-07-13 08:24:20 +00003518 }
3519 break;
3520
vlm86851cd2006-10-13 12:37:39 +00003521 case 189:
vlm8cc3f742006-10-18 18:40:14 +00003522#line 1671 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003523 {
vlm0c6d3812006-03-21 03:40:38 +00003524 yyval.a_type = ASN_STRING_GraphicString;
vlmc94e28f2004-09-15 11:59:51 +00003525 fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
vlm1aeaddd2006-07-13 08:24:20 +00003526 }
3527 break;
3528
vlm86851cd2006-10-13 12:37:39 +00003529 case 190:
vlm8cc3f742006-10-18 18:40:14 +00003530#line 1675 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003531 { yyval.a_type = ASN_STRING_IA5String; }
3532 break;
3533
vlm86851cd2006-10-13 12:37:39 +00003534 case 191:
vlm8cc3f742006-10-18 18:40:14 +00003535#line 1676 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003536 { yyval.a_type = ASN_STRING_ISO646String; }
3537 break;
3538
vlm86851cd2006-10-13 12:37:39 +00003539 case 192:
vlm8cc3f742006-10-18 18:40:14 +00003540#line 1677 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003541 { yyval.a_type = ASN_STRING_NumericString; }
3542 break;
3543
vlm86851cd2006-10-13 12:37:39 +00003544 case 193:
vlm8cc3f742006-10-18 18:40:14 +00003545#line 1678 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003546 { yyval.a_type = ASN_STRING_PrintableString; }
3547 break;
3548
vlm86851cd2006-10-13 12:37:39 +00003549 case 194:
vlm8cc3f742006-10-18 18:40:14 +00003550#line 1679 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003551 {
vlm0c6d3812006-03-21 03:40:38 +00003552 yyval.a_type = ASN_STRING_T61String;
vlmc94e28f2004-09-15 11:59:51 +00003553 fprintf(stderr, "WARNING: T61String is not fully supported\n");
vlm1aeaddd2006-07-13 08:24:20 +00003554 }
3555 break;
3556
vlm86851cd2006-10-13 12:37:39 +00003557 case 195:
vlm8cc3f742006-10-18 18:40:14 +00003558#line 1683 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003559 { yyval.a_type = ASN_STRING_TeletexString; }
3560 break;
3561
vlm86851cd2006-10-13 12:37:39 +00003562 case 196:
vlm8cc3f742006-10-18 18:40:14 +00003563#line 1684 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003564 { yyval.a_type = ASN_STRING_UniversalString; }
3565 break;
3566
vlm86851cd2006-10-13 12:37:39 +00003567 case 197:
vlm8cc3f742006-10-18 18:40:14 +00003568#line 1685 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003569 { yyval.a_type = ASN_STRING_UTF8String; }
3570 break;
3571
vlm86851cd2006-10-13 12:37:39 +00003572 case 198:
vlm8cc3f742006-10-18 18:40:14 +00003573#line 1686 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003574 {
vlm0c6d3812006-03-21 03:40:38 +00003575 yyval.a_type = ASN_STRING_VideotexString;
vlmc94e28f2004-09-15 11:59:51 +00003576 fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
vlm1aeaddd2006-07-13 08:24:20 +00003577 }
3578 break;
3579
vlm86851cd2006-10-13 12:37:39 +00003580 case 199:
vlm8cc3f742006-10-18 18:40:14 +00003581#line 1690 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003582 { yyval.a_type = ASN_STRING_VisibleString; }
3583 break;
3584
vlm86851cd2006-10-13 12:37:39 +00003585 case 200:
vlm8cc3f742006-10-18 18:40:14 +00003586#line 1691 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003587 { yyval.a_type = ASN_STRING_ObjectDescriptor; }
3588 break;
3589
vlm86851cd2006-10-13 12:37:39 +00003590 case 205:
vlm8cc3f742006-10-18 18:40:14 +00003591#line 1702 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003592 { yyval.a_constr = 0; }
3593 break;
3594
vlm86851cd2006-10-13 12:37:39 +00003595 case 206:
vlm8cc3f742006-10-18 18:40:14 +00003596#line 1703 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003597 {
vlm0c6d3812006-03-21 03:40:38 +00003598 yyval.a_constr = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00003599 }
3600 break;
3601
vlm86851cd2006-10-13 12:37:39 +00003602 case 208:
vlm8cc3f742006-10-18 18:40:14 +00003603#line 1710 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003604 {
3605 yyval.a_constr = yyvsp[-1].a_constr;
3606 }
3607 break;
3608
vlm86851cd2006-10-13 12:37:39 +00003609 case 209:
vlm8cc3f742006-10-18 18:40:14 +00003610#line 1716 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003611 {
vlm0c6d3812006-03-21 03:40:38 +00003612 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003613 }
3614 break;
3615
vlm86851cd2006-10-13 12:37:39 +00003616 case 210:
vlm8cc3f742006-10-18 18:40:14 +00003617#line 1719 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003618 {
vlmfa67ddc2004-06-03 03:38:44 +00003619 /*
3620 * This is a special case, for compatibility purposes.
vlm9283dbe2004-08-18 04:59:12 +00003621 * It goes without parentheses.
vlmfa67ddc2004-06-03 03:38:44 +00003622 */
vlm0c6d3812006-03-21 03:40:38 +00003623 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003624 }
3625 break;
3626
vlm86851cd2006-10-13 12:37:39 +00003627 case 211:
vlm8cc3f742006-10-18 18:40:14 +00003628#line 1729 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003629 {
vlm0c6d3812006-03-21 03:40:38 +00003630 yyval.a_constr = yyvsp[-1].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00003631 }
3632 break;
3633
vlm86851cd2006-10-13 12:37:39 +00003634 case 212:
vlm8cc3f742006-10-18 18:40:14 +00003635#line 1732 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003636 {
vlm0c6d3812006-03-21 03:40:38 +00003637 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003638 }
3639 break;
3640
vlm86851cd2006-10-13 12:37:39 +00003641 case 213:
vlm8cc3f742006-10-18 18:40:14 +00003642#line 1738 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003643 {
vlmdfbff8c2006-03-21 09:41:28 +00003644 yyval.a_constr = asn1p_constraint_new(yylineno);
3645 yyval.a_constr->type = ACT_EL_EXT;
vlm1aeaddd2006-07-13 08:24:20 +00003646 }
3647 break;
3648
vlm86851cd2006-10-13 12:37:39 +00003649 case 214:
vlm8cc3f742006-10-18 18:40:14 +00003650#line 1742 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003651 {
vlm0c6d3812006-03-21 03:40:38 +00003652 yyval.a_constr = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00003653 }
3654 break;
3655
vlm86851cd2006-10-13 12:37:39 +00003656 case 215:
vlm8cc3f742006-10-18 18:40:14 +00003657#line 1745 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003658 {
vlmfa67ddc2004-06-03 03:38:44 +00003659 asn1p_constraint_t *ct;
3660 ct = asn1p_constraint_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003661 ct->type = ACT_EL_EXT;
vlm0c6d3812006-03-21 03:40:38 +00003662 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm1aeaddd2006-07-13 08:24:20 +00003663 }
3664 break;
3665
vlm86851cd2006-10-13 12:37:39 +00003666 case 216:
vlm8cc3f742006-10-18 18:40:14 +00003667#line 1751 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003668 {
vlmfa67ddc2004-06-03 03:38:44 +00003669 asn1p_constraint_t *ct;
3670 ct = asn1p_constraint_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003671 ct->type = ACT_EL_EXT;
vlm0c6d3812006-03-21 03:40:38 +00003672 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-4].a_constr, ct);
3673 ct = yyval.a_constr;
3674 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003675 }
3676 break;
3677
vlm86851cd2006-10-13 12:37:39 +00003678 case 218:
vlm8cc3f742006-10-18 18:40:14 +00003679#line 1763 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003680 {
vlm0c6d3812006-03-21 03:40:38 +00003681 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003682 }
3683 break;
3684
vlm86851cd2006-10-13 12:37:39 +00003685 case 220:
vlm8cc3f742006-10-18 18:40:14 +00003686#line 1770 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003687 {
vlm0c6d3812006-03-21 03:40:38 +00003688 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003689 }
3690 break;
3691
vlm86851cd2006-10-13 12:37:39 +00003692 case 222:
vlm8cc3f742006-10-18 18:40:14 +00003693#line 1777 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003694 {
vlm0c6d3812006-03-21 03:40:38 +00003695 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003696 }
3697 break;
3698
vlm86851cd2006-10-13 12:37:39 +00003699 case 224:
vlm8cc3f742006-10-18 18:40:14 +00003700#line 1785 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003701 {
vlm0c6d3812006-03-21 03:40:38 +00003702 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003703 }
3704 break;
3705
vlm86851cd2006-10-13 12:37:39 +00003706 case 225:
vlm8cc3f742006-10-18 18:40:14 +00003707#line 1791 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003708 {
vlmfa67ddc2004-06-03 03:38:44 +00003709 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003710 yyval.a_constr = asn1p_constraint_new(yylineno);
3711 checkmem(yyval.a_constr);
3712 yyval.a_constr->type = yyvsp[-3].a_ctype;
3713 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
vlmfa67ddc2004-06-03 03:38:44 +00003714 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003715 }
3716 break;
3717
vlm86851cd2006-10-13 12:37:39 +00003718 case 226:
vlm8cc3f742006-10-18 18:40:14 +00003719#line 1799 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003720 {
vlm9283dbe2004-08-18 04:59:12 +00003721 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003722 yyval.a_constr = asn1p_constraint_new(yylineno);
3723 checkmem(yyval.a_constr);
3724 yyval.a_constr->type = ACT_CA_SET;
3725 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
vlm9283dbe2004-08-18 04:59:12 +00003726 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003727 }
3728 break;
3729
vlm86851cd2006-10-13 12:37:39 +00003730 case 227:
vlm8cc3f742006-10-18 18:40:14 +00003731#line 1807 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003732 {
vlm0c6d3812006-03-21 03:40:38 +00003733 yyval.a_constr = asn1p_constraint_new(yylineno);
3734 checkmem(yyval.a_constr);
3735 yyval.a_constr->type = ACT_EL_VALUE;
3736 yyval.a_constr->value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003737 }
3738 break;
3739
vlm86851cd2006-10-13 12:37:39 +00003740 case 228:
vlm8cc3f742006-10-18 18:40:14 +00003741#line 1813 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003742 {
vlm0c6d3812006-03-21 03:40:38 +00003743 yyval.a_constr = asn1p_constraint_new(yylineno);
3744 checkmem(yyval.a_constr);
3745 yyval.a_constr->type = ACT_EL_TYPE;
3746 yyval.a_constr->containedSubtype = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003747 }
3748 break;
3749
vlm1bc782f2006-09-21 01:50:37 +00003750 case 229:
vlm8cc3f742006-10-18 18:40:14 +00003751#line 1819 "asn1p_y.y"
vlm1bc782f2006-09-21 01:50:37 +00003752 {
3753 yyval.a_constr = asn1p_constraint_new(yylineno);
3754 checkmem(yyval.a_constr);
3755 yyval.a_constr->type = yyvsp[-1].a_ctype;
3756 yyval.a_constr->range_start = yyvsp[-2].a_value;
vlm86851cd2006-10-13 12:37:39 +00003757 yyval.a_constr->range_stop = yyvsp[0].a_value;
vlm1bc782f2006-09-21 01:50:37 +00003758 }
3759 break;
3760
3761 case 230:
vlm8cc3f742006-10-18 18:40:14 +00003762#line 1826 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003763 {
3764 yyval.a_constr = asn1p_constraint_new(yylineno);
3765 checkmem(yyval.a_constr);
3766 yyval.a_constr->type = yyvsp[-1].a_ctype;
3767 yyval.a_constr->range_start = asn1p_value_fromint(-123);
3768 yyval.a_constr->range_stop = yyvsp[0].a_value;
3769 yyval.a_constr->range_start->type = ATV_MIN;
3770 }
3771 break;
3772
3773 case 231:
vlm8cc3f742006-10-18 18:40:14 +00003774#line 1834 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003775 {
3776 yyval.a_constr = asn1p_constraint_new(yylineno);
3777 checkmem(yyval.a_constr);
3778 yyval.a_constr->type = yyvsp[-1].a_ctype;
3779 yyval.a_constr->range_start = yyvsp[-2].a_value;
3780 yyval.a_constr->range_stop = asn1p_value_fromint(321);
3781 yyval.a_constr->range_stop->type = ATV_MAX;
3782 }
3783 break;
3784
3785 case 232:
vlm8cc3f742006-10-18 18:40:14 +00003786#line 1842 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003787 {
3788 yyval.a_constr = asn1p_constraint_new(yylineno);
3789 checkmem(yyval.a_constr);
3790 yyval.a_constr->type = yyvsp[-1].a_ctype;
3791 yyval.a_constr->range_start = asn1p_value_fromint(-123);
3792 yyval.a_constr->range_stop = asn1p_value_fromint(321);
3793 yyval.a_constr->range_start->type = ATV_MIN;
3794 yyval.a_constr->range_stop->type = ATV_MAX;
3795 }
3796 break;
3797
vlm86851cd2006-10-13 12:37:39 +00003798 case 233:
vlm8cc3f742006-10-18 18:40:14 +00003799#line 1851 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00003800 {
3801 yyval.a_constr = yyvsp[0].a_constr;
3802 }
3803 break;
3804
vlm86851cd2006-10-13 12:37:39 +00003805 case 234:
vlm8cc3f742006-10-18 18:40:14 +00003806#line 1854 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003807 {
vlm8cc3f742006-10-18 18:40:14 +00003808 yyval.a_constr = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00003809 }
3810 break;
3811
vlm86851cd2006-10-13 12:37:39 +00003812 case 235:
vlm8cc3f742006-10-18 18:40:14 +00003813#line 1860 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003814 {
vlm8cc3f742006-10-18 18:40:14 +00003815 yyval.a_constr = asn1p_constraint_new(yylineno);
3816 yyval.a_constr->type = ACT_CT_PATTERN;
3817 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003818 }
3819 break;
3820
vlm86851cd2006-10-13 12:37:39 +00003821 case 236:
3822#line 1865 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003823 {
vlm8cc3f742006-10-18 18:40:14 +00003824 asn1p_ref_t *ref;
3825 yyval.a_constr = asn1p_constraint_new(yylineno);
3826 yyval.a_constr->type = ACT_CT_PATTERN;
3827 ref = asn1p_ref_new(yylineno);
3828 asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
3829 yyval.a_constr->value = asn1p_value_fromref(ref, 0);
3830 }
3831 break;
3832
3833 case 237:
3834#line 1876 "asn1p_y.y"
3835 {
3836 yyval.a_ctype = ACT_CT_SIZE;
3837 }
3838 break;
3839
3840 case 238:
3841#line 1879 "asn1p_y.y"
3842 {
3843 yyval.a_ctype = ACT_CT_FROM;
3844 }
3845 break;
3846
3847 case 239:
3848#line 1885 "asn1p_y.y"
3849 {
vlm0c6d3812006-03-21 03:40:38 +00003850 yyval.a_value = asn1p_value_fromint(0);
3851 checkmem(yyval.a_value);
3852 yyval.a_value->type = ATV_FALSE;
vlm1aeaddd2006-07-13 08:24:20 +00003853 }
3854 break;
3855
vlm8cc3f742006-10-18 18:40:14 +00003856 case 240:
3857#line 1890 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003858 {
vlm0c6d3812006-03-21 03:40:38 +00003859 yyval.a_value = asn1p_value_fromint(1);
3860 checkmem(yyval.a_value);
3861 yyval.a_value->type = ATV_TRUE;
vlm1aeaddd2006-07-13 08:24:20 +00003862 }
3863 break;
3864
vlm8cc3f742006-10-18 18:40:14 +00003865 case 243:
3866#line 1897 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003867 {
vlmfa67ddc2004-06-03 03:38:44 +00003868 asn1p_ref_t *ref;
3869 int ret;
3870 ref = asn1p_ref_new(yylineno);
3871 checkmem(ref);
vlm0c6d3812006-03-21 03:40:38 +00003872 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
vlmfa67ddc2004-06-03 03:38:44 +00003873 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003874 yyval.a_value = asn1p_value_fromref(ref, 0);
3875 checkmem(yyval.a_value);
3876 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003877 }
3878 break;
3879
vlm8cc3f742006-10-18 18:40:14 +00003880 case 244:
3881#line 1911 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003882 {
vlm4053ca52005-02-18 16:34:21 +00003883 asn1p_ref_t *ref;
3884 int ret;
3885 ref = asn1p_ref_new(yylineno);
3886 checkmem(ref);
vlm0c6d3812006-03-21 03:40:38 +00003887 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_UNKNOWN);
vlm4053ca52005-02-18 16:34:21 +00003888 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003889 yyval.a_value = asn1p_value_fromref(ref, 0);
3890 checkmem(yyval.a_value);
3891 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003892 }
3893 break;
3894
vlm8cc3f742006-10-18 18:40:14 +00003895 case 245:
3896#line 1925 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003897 {
vlm0c6d3812006-03-21 03:40:38 +00003898 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003899 }
3900 break;
3901
vlm8cc3f742006-10-18 18:40:14 +00003902 case 246:
3903#line 1928 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003904 {
vlm0c6d3812006-03-21 03:40:38 +00003905 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003906 }
3907 break;
3908
vlm8cc3f742006-10-18 18:40:14 +00003909 case 247:
3910#line 1934 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003911 {
vlm0c6d3812006-03-21 03:40:38 +00003912 yyval.a_constr = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00003913 }
3914 break;
3915
vlm8cc3f742006-10-18 18:40:14 +00003916 case 248:
3917#line 1937 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003918 {
vlm0c6d3812006-03-21 03:40:38 +00003919 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003920 }
3921 break;
3922
vlm8cc3f742006-10-18 18:40:14 +00003923 case 249:
3924#line 1943 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003925 {
vlm0c6d3812006-03-21 03:40:38 +00003926 yyval.a_constr = asn1p_constraint_new(yylineno);
3927 checkmem(yyval.a_constr);
3928 yyval.a_constr->type = ACT_EL_EXT;
vlm1aeaddd2006-07-13 08:24:20 +00003929 yyval.a_constr->value = asn1p_value_frombuf("...", 3, 1);
3930 }
3931 break;
3932
vlm8cc3f742006-10-18 18:40:14 +00003933 case 250:
3934#line 1949 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003935 {
vlm0c6d3812006-03-21 03:40:38 +00003936 yyval.a_constr = asn1p_constraint_new(yylineno);
3937 checkmem(yyval.a_constr);
3938 yyval.a_constr->type = ACT_EL_VALUE;
3939 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[-2].tv_str, strlen(yyvsp[-2].tv_str), 0);
3940 yyval.a_constr->presence = yyvsp[0].a_pres;
3941 if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003942 }
3943 break;
3944
vlm8cc3f742006-10-18 18:40:14 +00003945 case 251:
3946#line 1963 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003947 { yyval.a_pres = ACPRES_DEFAULT; }
3948 break;
3949
vlm8cc3f742006-10-18 18:40:14 +00003950 case 252:
3951#line 1964 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003952 { yyval.a_pres = yyvsp[0].a_pres; }
3953 break;
3954
vlm8cc3f742006-10-18 18:40:14 +00003955 case 253:
3956#line 1968 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003957 {
vlm0c6d3812006-03-21 03:40:38 +00003958 yyval.a_pres = ACPRES_PRESENT;
vlm1aeaddd2006-07-13 08:24:20 +00003959 }
3960 break;
3961
vlm8cc3f742006-10-18 18:40:14 +00003962 case 254:
3963#line 1971 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003964 {
vlm0c6d3812006-03-21 03:40:38 +00003965 yyval.a_pres = ACPRES_ABSENT;
vlm1aeaddd2006-07-13 08:24:20 +00003966 }
3967 break;
3968
vlm8cc3f742006-10-18 18:40:14 +00003969 case 255:
3970#line 1974 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003971 {
vlm0c6d3812006-03-21 03:40:38 +00003972 yyval.a_pres = ACPRES_OPTIONAL;
vlm1aeaddd2006-07-13 08:24:20 +00003973 }
3974 break;
3975
vlm8cc3f742006-10-18 18:40:14 +00003976 case 259:
3977#line 1989 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003978 { asn1p_lexer_hack_push_opaque_state(); }
3979 break;
3980
vlm8cc3f742006-10-18 18:40:14 +00003981 case 260:
3982#line 1989 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003983 {
vlm43c8ac52006-09-17 04:52:50 +00003984 yyval.a_constr = asn1p_constraint_new(yylineno);
3985 checkmem(yyval.a_constr);
3986 yyval.a_constr->type = ACT_CT_CTDBY;
3987 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
3988 checkmem(yyval.a_constr->value);
3989 yyval.a_constr->value->type = ATV_UNPARSED;
vlm1aeaddd2006-07-13 08:24:20 +00003990 }
3991 break;
3992
vlm8cc3f742006-10-18 18:40:14 +00003993 case 261:
3994#line 2000 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003995 {
3996 yyval.a_constr = asn1p_constraint_new(yylineno);
3997 yyval.a_constr->type = ACT_CT_CTNG;
3998 yyval.a_constr->value = asn1p_value_fromtype(yyvsp[0].a_expr);
3999 }
4000 break;
4001
vlm8cc3f742006-10-18 18:40:14 +00004002 case 262:
4003#line 2008 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00004004 { yyval.a_ctype = ACT_EL_RANGE; }
4005 break;
4006
vlm8cc3f742006-10-18 18:40:14 +00004007 case 263:
4008#line 2009 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00004009 { yyval.a_ctype = ACT_EL_RLRANGE; }
4010 break;
4011
vlm8cc3f742006-10-18 18:40:14 +00004012 case 264:
4013#line 2010 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00004014 { yyval.a_ctype = ACT_EL_LLRANGE; }
4015 break;
4016
vlm8cc3f742006-10-18 18:40:14 +00004017 case 265:
4018#line 2011 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00004019 { yyval.a_ctype = ACT_EL_ULRANGE; }
4020 break;
4021
vlm8cc3f742006-10-18 18:40:14 +00004022 case 266:
4023#line 2014 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004024 {
4025 yyval.a_constr = yyvsp[0].a_constr;
4026 }
4027 break;
4028
vlm8cc3f742006-10-18 18:40:14 +00004029 case 267:
4030#line 2017 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004031 {
4032 yyval.a_constr = yyvsp[0].a_constr;
4033 }
4034 break;
4035
vlm8cc3f742006-10-18 18:40:14 +00004036 case 268:
4037#line 2026 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004038 {
vlmfa67ddc2004-06-03 03:38:44 +00004039 asn1p_ref_t *ref = asn1p_ref_new(yylineno);
4040 asn1p_constraint_t *ct;
4041 int ret;
vlm0c6d3812006-03-21 03:40:38 +00004042 ret = asn1p_ref_add_component(ref, yyvsp[-1].tv_str, 0);
vlmfa67ddc2004-06-03 03:38:44 +00004043 checkmem(ret == 0);
4044 ct = asn1p_constraint_new(yylineno);
vlm0c6d3812006-03-21 03:40:38 +00004045 checkmem(yyval.a_constr);
vlmfa67ddc2004-06-03 03:38:44 +00004046 ct->type = ACT_EL_VALUE;
4047 ct->value = asn1p_value_fromref(ref, 0);
vlm0c6d3812006-03-21 03:40:38 +00004048 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
vlm1aeaddd2006-07-13 08:24:20 +00004049 }
4050 break;
4051
vlm8cc3f742006-10-18 18:40:14 +00004052 case 269:
4053#line 2041 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004054 {
vlm0c6d3812006-03-21 03:40:38 +00004055 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00004056 }
4057 break;
4058
vlm8cc3f742006-10-18 18:40:14 +00004059 case 270:
4060#line 2047 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004061 {
vlm0c6d3812006-03-21 03:40:38 +00004062 yyval.a_constr = asn1p_constraint_new(yylineno);
4063 checkmem(yyval.a_constr);
4064 yyval.a_constr->type = ACT_EL_VALUE;
4065 yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
vlm1aeaddd2006-07-13 08:24:20 +00004066 }
4067 break;
4068
vlm8cc3f742006-10-18 18:40:14 +00004069 case 271:
4070#line 2053 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004071 {
vlmfa67ddc2004-06-03 03:38:44 +00004072 asn1p_constraint_t *ct;
4073 ct = asn1p_constraint_new(yylineno);
4074 checkmem(ct);
4075 ct->type = ACT_EL_VALUE;
vlm0c6d3812006-03-21 03:40:38 +00004076 ct->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
4077 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm1aeaddd2006-07-13 08:24:20 +00004078 }
4079 break;
4080
vlm8cc3f742006-10-18 18:40:14 +00004081 case 272:
4082#line 2067 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004083 {
vlm0c6d3812006-03-21 03:40:38 +00004084 char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
vlmfa67ddc2004-06-03 03:38:44 +00004085 int ret;
4086 *p = '@';
vlm0c6d3812006-03-21 03:40:38 +00004087 strcpy(p + 1, yyvsp[0].tv_str);
4088 yyval.a_ref = asn1p_ref_new(yylineno);
4089 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
vlmfa67ddc2004-06-03 03:38:44 +00004090 checkmem(ret == 0);
4091 free(p);
vlm0c6d3812006-03-21 03:40:38 +00004092 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00004093 }
4094 break;
4095
vlm8cc3f742006-10-18 18:40:14 +00004096 case 273:
4097#line 2078 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004098 {
vlm0c6d3812006-03-21 03:40:38 +00004099 char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
vlmfa67ddc2004-06-03 03:38:44 +00004100 int ret;
4101 p[0] = '@';
4102 p[1] = '.';
vlm0c6d3812006-03-21 03:40:38 +00004103 strcpy(p + 2, yyvsp[0].tv_str);
4104 yyval.a_ref = asn1p_ref_new(yylineno);
4105 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
vlmfa67ddc2004-06-03 03:38:44 +00004106 checkmem(ret == 0);
4107 free(p);
vlm0c6d3812006-03-21 03:40:38 +00004108 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00004109 }
4110 break;
4111
vlm8cc3f742006-10-18 18:40:14 +00004112 case 274:
4113#line 2094 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004114 {
vlm0c6d3812006-03-21 03:40:38 +00004115 yyval.tv_str = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00004116 }
4117 break;
4118
vlm8cc3f742006-10-18 18:40:14 +00004119 case 275:
4120#line 2097 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004121 {
vlm0c6d3812006-03-21 03:40:38 +00004122 int l1 = strlen(yyvsp[-2].tv_str);
4123 int l3 = strlen(yyvsp[0].tv_str);
4124 yyval.tv_str = malloc(l1 + 1 + l3 + 1);
4125 memcpy(yyval.tv_str, yyvsp[-2].tv_str, l1);
4126 yyval.tv_str[l1] = '.';
4127 memcpy(yyval.tv_str + l1 + 1, yyvsp[0].tv_str, l3);
4128 yyval.tv_str[l1 + 1 + l3] = '\0';
vlm1aeaddd2006-07-13 08:24:20 +00004129 }
4130 break;
4131
vlm8cc3f742006-10-18 18:40:14 +00004132 case 276:
4133#line 2115 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004134 {
vlm0c6d3812006-03-21 03:40:38 +00004135 yyval.a_marker.flags = EM_NOMARK;
4136 yyval.a_marker.default_value = 0;
vlm1aeaddd2006-07-13 08:24:20 +00004137 }
4138 break;
4139
vlm8cc3f742006-10-18 18:40:14 +00004140 case 277:
4141#line 2119 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004142 { yyval.a_marker = yyvsp[0].a_marker; }
4143 break;
4144
vlm8cc3f742006-10-18 18:40:14 +00004145 case 278:
4146#line 2123 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004147 {
vlm0c6d3812006-03-21 03:40:38 +00004148 yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
4149 yyval.a_marker.default_value = 0;
vlm1aeaddd2006-07-13 08:24:20 +00004150 }
4151 break;
4152
vlm8cc3f742006-10-18 18:40:14 +00004153 case 279:
4154#line 2127 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004155 {
vlm0c6d3812006-03-21 03:40:38 +00004156 yyval.a_marker.flags = EM_DEFAULT;
4157 yyval.a_marker.default_value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00004158 }
4159 break;
4160
vlm8cc3f742006-10-18 18:40:14 +00004161 case 280:
4162#line 2150 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004163 {
vlm43c8ac52006-09-17 04:52:50 +00004164 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004165 checkmem(yyval.a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00004166 }
4167 break;
4168
vlm8cc3f742006-10-18 18:40:14 +00004169 case 281:
4170#line 2154 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004171 {
vlm0c6d3812006-03-21 03:40:38 +00004172 yyval.a_expr = yyvsp[-1].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00004173 }
4174 break;
4175
vlm8cc3f742006-10-18 18:40:14 +00004176 case 282:
4177#line 2160 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004178 {
vlm43c8ac52006-09-17 04:52:50 +00004179 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004180 checkmem(yyval.a_expr);
4181 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00004182 }
4183 break;
4184
vlm8cc3f742006-10-18 18:40:14 +00004185 case 283:
4186#line 2165 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004187 {
vlm0c6d3812006-03-21 03:40:38 +00004188 yyval.a_expr = yyvsp[-2].a_expr;
4189 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00004190 }
4191 break;
4192
vlm8cc3f742006-10-18 18:40:14 +00004193 case 284:
4194#line 2172 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004195 {
vlm43c8ac52006-09-17 04:52:50 +00004196 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004197 checkmem(yyval.a_expr);
4198 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
4199 yyval.a_expr->meta_type = AMT_VALUE;
4200 yyval.a_expr->Identifier = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00004201 }
4202 break;
4203
vlm8cc3f742006-10-18 18:40:14 +00004204 case 285:
4205#line 2179 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004206 {
4207 yyval.a_expr = NEW_EXPR();
4208 checkmem(yyval.a_expr);
4209 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
4210 yyval.a_expr->meta_type = AMT_VALUE;
4211 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
4212 yyval.a_expr->value = yyvsp[-1].a_value;
4213 }
4214 break;
4215
vlm8cc3f742006-10-18 18:40:14 +00004216 case 286:
4217#line 2187 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004218 {
4219 yyval.a_expr = NEW_EXPR();
4220 checkmem(yyval.a_expr);
4221 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
4222 yyval.a_expr->meta_type = AMT_VALUE;
4223 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
4224 yyval.a_expr->value = yyvsp[-1].a_value;
4225 }
4226 break;
4227
vlm8cc3f742006-10-18 18:40:14 +00004228 case 287:
4229#line 2195 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004230 {
vlm43c8ac52006-09-17 04:52:50 +00004231 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004232 checkmem(yyval.a_expr);
4233 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
4234 yyval.a_expr->meta_type = AMT_VALUE;
4235 yyval.a_expr->value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00004236 }
4237 break;
4238
vlm8cc3f742006-10-18 18:40:14 +00004239 case 288:
4240#line 2202 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004241 {
vlm43c8ac52006-09-17 04:52:50 +00004242 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004243 checkmem(yyval.a_expr);
4244 yyval.a_expr->Identifier = strdup("...");
4245 checkmem(yyval.a_expr->Identifier);
4246 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
4247 yyval.a_expr->meta_type = AMT_VALUE;
vlm1aeaddd2006-07-13 08:24:20 +00004248 }
4249 break;
4250
vlm86851cd2006-10-13 12:37:39 +00004251 case 289:
vlm8cc3f742006-10-18 18:40:14 +00004252#line 2213 "asn1p_y.y"
4253 {
4254 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
4255 checkmem(yyval.a_value);
4256 }
4257 break;
4258
4259 case 290:
4260#line 2217 "asn1p_y.y"
4261 {
4262 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
4263 checkmem(yyval.a_value);
4264 }
4265 break;
4266
4267 case 292:
4268#line 2225 "asn1p_y.y"
vlme745fcd2006-09-05 16:18:34 +00004269 {
4270 yyval.a_value = asn1p_value_fromdouble(yyvsp[0].a_dbl);
4271 checkmem(yyval.a_value);
4272 }
vlm1aeaddd2006-07-13 08:24:20 +00004273 break;
4274
vlm8cc3f742006-10-18 18:40:14 +00004275 case 293:
4276#line 2256 "asn1p_y.y"
vlme745fcd2006-09-05 16:18:34 +00004277 { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); }
4278 break;
4279
vlm8cc3f742006-10-18 18:40:14 +00004280 case 294:
4281#line 2257 "asn1p_y.y"
vlme745fcd2006-09-05 16:18:34 +00004282 { yyval.a_tag = yyvsp[0].a_tag; }
4283 break;
4284
vlm8cc3f742006-10-18 18:40:14 +00004285 case 295:
4286#line 2261 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004287 {
vlm0c6d3812006-03-21 03:40:38 +00004288 yyval.a_tag = yyvsp[-1].a_tag;
4289 yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
vlm1aeaddd2006-07-13 08:24:20 +00004290 }
4291 break;
4292
vlm8cc3f742006-10-18 18:40:14 +00004293 case 296:
4294#line 2268 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004295 {
vlm0c6d3812006-03-21 03:40:38 +00004296 yyval.a_tag = yyvsp[-2].a_tag;
4297 yyval.a_tag.tag_value = yyvsp[-1].a_int;
vlm1aeaddd2006-07-13 08:24:20 +00004298 }
4299 break;
4300
vlm8cc3f742006-10-18 18:40:14 +00004301 case 297:
4302#line 2274 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004303 { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; }
4304 break;
4305
vlm8cc3f742006-10-18 18:40:14 +00004306 case 298:
4307#line 2275 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004308 { yyval.a_tag.tag_class = TC_UNIVERSAL; }
vlm1aeaddd2006-07-13 08:24:20 +00004309 break;
4310
vlm8cc3f742006-10-18 18:40:14 +00004311 case 299:
4312#line 2276 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004313 { yyval.a_tag.tag_class = TC_APPLICATION; }
vlm1aeaddd2006-07-13 08:24:20 +00004314 break;
4315
vlm8cc3f742006-10-18 18:40:14 +00004316 case 300:
4317#line 2277 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004318 { yyval.a_tag.tag_class = TC_PRIVATE; }
vlm1aeaddd2006-07-13 08:24:20 +00004319 break;
4320
vlm8cc3f742006-10-18 18:40:14 +00004321 case 301:
4322#line 2281 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004323 { yyval.a_tag.tag_mode = TM_DEFAULT; }
vlm1aeaddd2006-07-13 08:24:20 +00004324 break;
4325
vlm8cc3f742006-10-18 18:40:14 +00004326 case 302:
4327#line 2282 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004328 { yyval.a_tag.tag_mode = TM_IMPLICIT; }
vlm1aeaddd2006-07-13 08:24:20 +00004329 break;
4330
vlm8cc3f742006-10-18 18:40:14 +00004331 case 303:
4332#line 2283 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004333 { yyval.a_tag.tag_mode = TM_EXPLICIT; }
vlmd3420d32006-09-14 10:35:20 +00004334 break;
4335
vlm1bc782f2006-09-21 01:50:37 +00004336 case 304:
vlm8cc3f742006-10-18 18:40:14 +00004337#line 2287 "asn1p_y.y"
4338 {
4339 checkmem(yyvsp[0].tv_str);
4340 yyval.tv_str = yyvsp[0].tv_str;
4341 }
vlm86851cd2006-10-13 12:37:39 +00004342 break;
4343
4344 case 305:
vlm8cc3f742006-10-18 18:40:14 +00004345#line 2291 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004346 {
vlm8cc3f742006-10-18 18:40:14 +00004347 checkmem(yyvsp[0].tv_str);
vlm86851cd2006-10-13 12:37:39 +00004348 yyval.tv_str = yyvsp[0].tv_str;
4349 }
4350 break;
4351
4352 case 306:
vlm8cc3f742006-10-18 18:40:14 +00004353#line 2299 "asn1p_y.y"
4354 {
4355 checkmem(yyvsp[0].tv_str);
4356 yyval.tv_str = yyvsp[0].tv_str;
4357 }
4358 break;
4359
4360 case 307:
4361#line 2306 "asn1p_y.y"
4362 { yyval.tv_str = 0; }
4363 break;
4364
4365 case 308:
4366#line 2307 "asn1p_y.y"
4367 {
4368 yyval.tv_str = yyvsp[0].tv_str;
4369 }
4370 break;
4371
4372 case 309:
4373#line 2313 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00004374 {
4375 checkmem(yyvsp[0].tv_str);
4376 yyval.tv_str = yyvsp[0].tv_str;
4377 }
4378 break;
4379
vlm1aeaddd2006-07-13 08:24:20 +00004380
4381 }
4382
4383/* Line 1016 of /usr/local/share/bison/yacc.c. */
vlm8cc3f742006-10-18 18:40:14 +00004384#line 4385 "asn1p_y.c"
vlmfa67ddc2004-06-03 03:38:44 +00004385
4386 yyvsp -= yylen;
4387 yyssp -= yylen;
vlmfa67ddc2004-06-03 03:38:44 +00004388
vlm1aeaddd2006-07-13 08:24:20 +00004389
4390#if YYDEBUG
vlm0c6d3812006-03-21 03:40:38 +00004391 if (yydebug)
4392 {
vlm1aeaddd2006-07-13 08:24:20 +00004393 short *yyssp1 = yyss - 1;
4394 YYFPRINTF (stderr, "state stack now");
4395 while (yyssp1 != yyssp)
4396 YYFPRINTF (stderr, " %d", *++yyssp1);
4397 YYFPRINTF (stderr, "\n");
vlm0c6d3812006-03-21 03:40:38 +00004398 }
4399#endif
vlmfa67ddc2004-06-03 03:38:44 +00004400
4401 *++yyvsp = yyval;
4402
vlmfa67ddc2004-06-03 03:38:44 +00004403
vlm1aeaddd2006-07-13 08:24:20 +00004404 /* Now `shift' the result of the reduction. Determine what state
4405 that goes to, based on the state we popped back to and the rule
4406 number reduced by. */
vlmfa67ddc2004-06-03 03:38:44 +00004407
4408 yyn = yyr1[yyn];
4409
vlm1aeaddd2006-07-13 08:24:20 +00004410 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
4411 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
vlmfa67ddc2004-06-03 03:38:44 +00004412 yystate = yytable[yystate];
4413 else
vlm1aeaddd2006-07-13 08:24:20 +00004414 yystate = yydefgoto[yyn - YYNTOKENS];
vlmfa67ddc2004-06-03 03:38:44 +00004415
4416 goto yynewstate;
4417
vlmfa67ddc2004-06-03 03:38:44 +00004418
vlm1aeaddd2006-07-13 08:24:20 +00004419/*------------------------------------.
4420| yyerrlab -- here on detecting error |
4421`------------------------------------*/
4422yyerrlab:
4423 /* If not already recovering from an error, report this error. */
4424 if (!yyerrstatus)
vlmfa67ddc2004-06-03 03:38:44 +00004425 {
4426 ++yynerrs;
vlm1aeaddd2006-07-13 08:24:20 +00004427#if YYERROR_VERBOSE
vlmfa67ddc2004-06-03 03:38:44 +00004428 yyn = yypact[yystate];
4429
vlm1aeaddd2006-07-13 08:24:20 +00004430 if (YYPACT_NINF < yyn && yyn < YYLAST)
vlmfa67ddc2004-06-03 03:38:44 +00004431 {
vlm1aeaddd2006-07-13 08:24:20 +00004432 YYSIZE_T yysize = 0;
4433 int yytype = YYTRANSLATE (yychar);
4434 char *yymsg;
4435 int yyx, yycount;
vlmfa67ddc2004-06-03 03:38:44 +00004436
vlm1aeaddd2006-07-13 08:24:20 +00004437 yycount = 0;
4438 /* Start YYX at -YYN if negative to avoid negative indexes in
4439 YYCHECK. */
4440 for (yyx = yyn < 0 ? -yyn : 0;
4441 yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
4442 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
4443 yysize += yystrlen (yytname[yyx]) + 15, yycount++;
4444 yysize += yystrlen ("parse error, unexpected ") + 1;
4445 yysize += yystrlen (yytname[yytype]);
4446 yymsg = (char *) YYSTACK_ALLOC (yysize);
4447 if (yymsg != 0)
vlmfa67ddc2004-06-03 03:38:44 +00004448 {
vlm1aeaddd2006-07-13 08:24:20 +00004449 char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
4450 yyp = yystpcpy (yyp, yytname[yytype]);
vlm0c6d3812006-03-21 03:40:38 +00004451
vlm1aeaddd2006-07-13 08:24:20 +00004452 if (yycount < 5)
vlmfa67ddc2004-06-03 03:38:44 +00004453 {
vlm1aeaddd2006-07-13 08:24:20 +00004454 yycount = 0;
4455 for (yyx = yyn < 0 ? -yyn : 0;
4456 yyx < (int) (sizeof (yytname) / sizeof (char *));
4457 yyx++)
4458 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
vlm0c6d3812006-03-21 03:40:38 +00004459 {
vlm1aeaddd2006-07-13 08:24:20 +00004460 const char *yyq = ! yycount ? ", expecting " : " or ";
4461 yyp = yystpcpy (yyp, yyq);
4462 yyp = yystpcpy (yyp, yytname[yyx]);
4463 yycount++;
vlm0c6d3812006-03-21 03:40:38 +00004464 }
vlmfa67ddc2004-06-03 03:38:44 +00004465 }
vlm1aeaddd2006-07-13 08:24:20 +00004466 yyerror (yymsg);
4467 YYSTACK_FREE (yymsg);
vlmfa67ddc2004-06-03 03:38:44 +00004468 }
4469 else
vlm1aeaddd2006-07-13 08:24:20 +00004470 yyerror ("parse error; also virtual memory exhausted");
vlmfa67ddc2004-06-03 03:38:44 +00004471 }
4472 else
4473#endif /* YYERROR_VERBOSE */
vlm1aeaddd2006-07-13 08:24:20 +00004474 yyerror ("parse error");
vlmfa67ddc2004-06-03 03:38:44 +00004475 }
vlm0c6d3812006-03-21 03:40:38 +00004476 goto yyerrlab1;
vlmfa67ddc2004-06-03 03:38:44 +00004477
vlm1aeaddd2006-07-13 08:24:20 +00004478
4479/*----------------------------------------------------.
4480| yyerrlab1 -- error raised explicitly by an action. |
4481`----------------------------------------------------*/
4482yyerrlab1:
vlmfa67ddc2004-06-03 03:38:44 +00004483 if (yyerrstatus == 3)
4484 {
vlm1aeaddd2006-07-13 08:24:20 +00004485 /* If just tried and failed to reuse lookahead token after an
4486 error, discard it. */
vlmfa67ddc2004-06-03 03:38:44 +00004487
vlm1aeaddd2006-07-13 08:24:20 +00004488 /* Return failure if at end of input. */
vlm0c6d3812006-03-21 03:40:38 +00004489 if (yychar == YYEOF)
vlm1aeaddd2006-07-13 08:24:20 +00004490 {
4491 /* Pop the error token. */
4492 YYPOPSTACK;
4493 /* Pop the rest of the stack. */
4494 while (yyssp > yyss)
4495 {
4496 YYDPRINTF ((stderr, "Error: popping "));
4497 YYDSYMPRINT ((stderr,
4498 yystos[*yyssp],
4499 *yyvsp));
4500 YYDPRINTF ((stderr, "\n"));
4501 yydestruct (yystos[*yyssp], *yyvsp);
4502 YYPOPSTACK;
4503 }
4504 YYABORT;
4505 }
vlmfa67ddc2004-06-03 03:38:44 +00004506
vlm1aeaddd2006-07-13 08:24:20 +00004507 YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
4508 yychar, yytname[yychar1]));
4509 yydestruct (yychar1, yylval);
vlm0c6d3812006-03-21 03:40:38 +00004510 yychar = YYEMPTY;
vlmfa67ddc2004-06-03 03:38:44 +00004511 }
4512
vlm1aeaddd2006-07-13 08:24:20 +00004513 /* Else will try to reuse lookahead token after shifting the error
4514 token. */
vlm0c6d3812006-03-21 03:40:38 +00004515
vlm1aeaddd2006-07-13 08:24:20 +00004516 yyerrstatus = 3; /* Each real token shifted decrements this. */
vlm0c6d3812006-03-21 03:40:38 +00004517
vlm1aeaddd2006-07-13 08:24:20 +00004518 for (;;)
vlm0c6d3812006-03-21 03:40:38 +00004519 {
vlm1aeaddd2006-07-13 08:24:20 +00004520 yyn = yypact[yystate];
4521 if (yyn != YYPACT_NINF)
4522 {
4523 yyn += YYTERROR;
4524 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
4525 {
4526 yyn = yytable[yyn];
4527 if (0 < yyn)
4528 break;
4529 }
4530 }
4531
4532 /* Pop the current state because it cannot handle the error token. */
4533 if (yyssp == yyss)
4534 YYABORT;
4535
4536 YYDPRINTF ((stderr, "Error: popping "));
4537 YYDSYMPRINT ((stderr,
4538 yystos[*yyssp], *yyvsp));
4539 YYDPRINTF ((stderr, "\n"));
4540
4541 yydestruct (yystos[yystate], *yyvsp);
4542 yyvsp--;
4543 yystate = *--yyssp;
4544
4545
4546#if YYDEBUG
4547 if (yydebug)
4548 {
4549 short *yyssp1 = yyss - 1;
4550 YYFPRINTF (stderr, "Error: state stack now");
4551 while (yyssp1 != yyssp)
4552 YYFPRINTF (stderr, " %d", *++yyssp1);
4553 YYFPRINTF (stderr, "\n");
4554 }
vlm0c6d3812006-03-21 03:40:38 +00004555#endif
vlm0c6d3812006-03-21 03:40:38 +00004556 }
vlm0c6d3812006-03-21 03:40:38 +00004557
vlmfa67ddc2004-06-03 03:38:44 +00004558 if (yyn == YYFINAL)
4559 YYACCEPT;
4560
vlm1aeaddd2006-07-13 08:24:20 +00004561 YYDPRINTF ((stderr, "Shifting error token, "));
vlm0c6d3812006-03-21 03:40:38 +00004562
vlmfa67ddc2004-06-03 03:38:44 +00004563 *++yyvsp = yylval;
vlm1aeaddd2006-07-13 08:24:20 +00004564
vlmfa67ddc2004-06-03 03:38:44 +00004565
4566 yystate = yyn;
4567 goto yynewstate;
4568
vlm0c6d3812006-03-21 03:40:38 +00004569
vlm1aeaddd2006-07-13 08:24:20 +00004570/*-------------------------------------.
4571| yyacceptlab -- YYACCEPT comes here. |
4572`-------------------------------------*/
4573yyacceptlab:
4574 yyresult = 0;
4575 goto yyreturn;
4576
4577/*-----------------------------------.
4578| yyabortlab -- YYABORT comes here. |
4579`-----------------------------------*/
4580yyabortlab:
4581 yyresult = 1;
4582 goto yyreturn;
4583
4584#ifndef yyoverflow
4585/*----------------------------------------------.
4586| yyoverflowlab -- parser overflow comes here. |
4587`----------------------------------------------*/
4588yyoverflowlab:
4589 yyerror ("parser stack overflow");
4590 yyresult = 2;
4591 /* Fall through. */
vlm0c6d3812006-03-21 03:40:38 +00004592#endif
vlm1aeaddd2006-07-13 08:24:20 +00004593
4594yyreturn:
4595#ifndef yyoverflow
4596 if (yyss != yyssa)
4597 YYSTACK_FREE (yyss);
4598#endif
4599 return yyresult;
vlmfa67ddc2004-06-03 03:38:44 +00004600}
vlm1aeaddd2006-07-13 08:24:20 +00004601
4602
vlm8cc3f742006-10-18 18:40:14 +00004603#line 2319 "asn1p_y.y"
vlmfa67ddc2004-06-03 03:38:44 +00004604
4605
4606
4607/*
4608 * Convert Xstring ('0101'B or '5'H) to the binary vector.
4609 */
4610static asn1p_value_t *
4611_convert_bitstring2binary(char *str, int base) {
4612 asn1p_value_t *val;
4613 int slen;
4614 int memlen;
4615 int baselen;
4616 int bits;
4617 uint8_t *binary_vector;
4618 uint8_t *bv_ptr;
4619 uint8_t cur_val;
4620
4621 assert(str);
4622 assert(str[0] == '\'');
4623
4624 switch(base) {
4625 case 'B':
4626 baselen = 1;
4627 break;
4628 case 'H':
4629 baselen = 4;
4630 break;
4631 default:
4632 assert(base == 'B' || base == 'H');
4633 errno = EINVAL;
4634 return NULL;
4635 }
4636
4637 slen = strlen(str);
4638 assert(str[slen - 1] == base);
4639 assert(str[slen - 2] == '\'');
4640
4641 memlen = slen / (8 / baselen); /* Conservative estimate */
4642
4643 bv_ptr = binary_vector = malloc(memlen + 1);
4644 if(bv_ptr == NULL)
4645 /* ENOMEM */
4646 return NULL;
4647
4648 cur_val = 0;
4649 bits = 0;
4650 while(*(++str) != '\'') {
4651 switch(baselen) {
4652 case 1:
4653 switch(*str) {
4654 case '1':
4655 cur_val |= 1 << (7 - (bits % 8));
4656 case '0':
4657 break;
4658 default:
4659 assert(!"_y UNREACH1");
4660 case ' ': case '\r': case '\n':
4661 continue;
4662 }
4663 break;
4664 case 4:
4665 switch(*str) {
4666 case '0': case '1': case '2': case '3': case '4':
4667 case '5': case '6': case '7': case '8': case '9':
4668 cur_val |= (*str - '0') << (4 - (bits % 8));
4669 break;
4670 case 'A': case 'B': case 'C':
4671 case 'D': case 'E': case 'F':
4672 cur_val |= ((*str - 'A') + 10)
4673 << (4 - (bits % 8));
4674 break;
4675 default:
4676 assert(!"_y UNREACH2");
4677 case ' ': case '\r': case '\n':
4678 continue;
4679 }
4680 break;
4681 }
4682
4683 bits += baselen;
4684 if((bits % 8) == 0) {
4685 *bv_ptr++ = cur_val;
4686 cur_val = 0;
4687 }
4688 }
4689
4690 *bv_ptr = cur_val;
4691 assert((bv_ptr - binary_vector) <= memlen);
4692
4693 val = asn1p_value_frombits(binary_vector, bits, 0);
4694 if(val == NULL) {
4695 free(binary_vector);
4696 }
4697
4698 return val;
4699}
4700
vlm5d89c3d2005-08-13 09:07:11 +00004701/*
4702 * For unnamed types (used in old X.208 compliant modules)
4703 * generate some sort of interim names, to not to force human being to fix
4704 * the specification's compliance to modern ASN.1 standards.
4705 */
4706static void
4707_fixup_anonymous_identifier(asn1p_expr_t *expr) {
4708 char *p;
4709 assert(expr->Identifier == 0);
4710
4711 /*
4712 * Try to figure out the type name
4713 * without going too much into details
4714 */
4715 expr->Identifier = ASN_EXPR_TYPE2STR(expr->expr_type);
4716 if(expr->reference && expr->reference->comp_count > 0)
4717 expr->Identifier = expr->reference->components[0].name;
4718
4719 fprintf(stderr,
4720 "WARNING: Line %d: expected lower-case member identifier, "
4721 "found an unnamed %s.\n"
4722 "WARNING: Obsolete X.208 syntax detected, "
4723 "please give the member a name.\n",
4724 yylineno, expr->Identifier ? expr->Identifier : "type");
4725
4726 if(!expr->Identifier)
4727 expr->Identifier = "unnamed";
4728 expr->Identifier = strdup(expr->Identifier);
4729 assert(expr->Identifier);
4730 /* Make a lowercase identifier from the type name */
4731 for(p = expr->Identifier; *p; p++) {
4732 switch(*p) {
4733 case 'A' ... 'Z': *p += 32; break;
4734 case ' ': *p = '_'; break;
4735 case '-': *p = '_'; break;
4736 }
4737 }
4738 fprintf(stderr, "NOTE: Assigning temporary identifier \"%s\". "
4739 "Name clash may occur later.\n",
4740 expr->Identifier);
4741}
4742
vlmfa67ddc2004-06-03 03:38:44 +00004743int
4744yyerror(const char *msg) {
vlm808411d2006-03-14 16:31:37 +00004745 extern char *asn1p_text;
vlmfa67ddc2004-06-03 03:38:44 +00004746 fprintf(stderr,
4747 "ASN.1 grammar parse error "
4748 "near line %d (token \"%s\"): %s\n",
vlm39e5ed72004-09-05 10:40:41 +00004749 yylineno, asn1p_text, msg);
vlmfa67ddc2004-06-03 03:38:44 +00004750 return -1;
4751}
4752
vlm1aeaddd2006-07-13 08:24:20 +00004753