blob: f1d4ad4eccf3bd8a2a338fe9c071f2581bb7e676 [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
vlm64aaa9e2006-10-27 05:37:39 +0000526#define YYLAST 805
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. */
vlm64aaa9e2006-10-27 05:37:39 +0000531#define YYNNTS 122
vlm1aeaddd2006-07-13 08:24:20 +0000532/* YYNRULES -- Number of rules. */
vlm64aaa9e2006-10-27 05:37:39 +0000533#define YYNRULES 312
vlm1aeaddd2006-07-13 08:24:20 +0000534/* YYNRULES -- Number of states. */
vlm64aaa9e2006-10-27 05:37:39 +0000535#define YYNSTATES 470
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,
vlmb9f1c0d2006-10-21 05:54:49 +0000611 564, 566, 568, 570, 572, 574, 575, 577, 579, 581,
612 586, 590, 595, 597, 599, 603, 609, 611, 613, 617,
613 619, 623, 625, 629, 631, 635, 640, 644, 646, 648,
614 652, 656, 660, 664, 666, 668, 671, 674, 676, 678,
vlm64aaa9e2006-10-27 05:37:39 +0000615 680, 682, 684, 686, 688, 690, 692, 694, 696, 700,
616 706, 708, 712, 714, 718, 719, 721, 723, 725, 727,
617 729, 731, 733, 734, 740, 743, 745, 748, 751, 755,
618 757, 759, 763, 768, 770, 774, 777, 781, 783, 787,
619 788, 790, 792, 795, 798, 802, 804, 808, 810, 815,
620 820, 822, 824, 826, 828, 830, 832, 833, 835, 838,
621 843, 844, 846, 848, 850, 851, 853, 855, 857, 859,
622 861, 862, 864
vlm1aeaddd2006-07-13 08:24:20 +0000623};
624
625/* YYRHS -- A `-1'-separated list of the rules' RHS. */
626static const short yyrhs[] =
627{
vlme745fcd2006-09-05 16:18:34 +0000628 122, 0, -1, 123, -1, 124, -1, 123, 124, -1,
vlm64aaa9e2006-10-27 05:37:39 +0000629 -1, 239, 125, 126, 39, 130, 3, 26, 133, 44,
vlm43c8ac52006-09-17 04:52:50 +0000630 -1, -1, 127, -1, 108, 128, 109, -1, 108, 109,
vlm64aaa9e2006-10-27 05:37:39 +0000631 -1, 129, -1, 128, 129, -1, 242, -1, 242, 110,
vlm43c8ac52006-09-17 04:52:50 +0000632 10, 111, -1, 10, -1, -1, 131, -1, 132, -1,
633 131, 132, -1, 46, 89, -1, 57, 89, -1, 25,
634 89, -1, 48, 58, -1, 16, 62, -1, -1, 134,
vlm86851cd2006-10-13 12:37:39 +0000635 -1, 146, 138, 135, -1, 136, -1, 135, 136, -1,
636 153, -1, 183, -1, 151, -1, -1, 43, 16, 137,
637 -1, 193, -1, -1, 139, -1, 59, 140, 112, -1,
638 59, 51, -1, -1, 141, -1, 143, -1, 141, 143,
vlm64aaa9e2006-10-27 05:37:39 +0000639 -1, -1, 127, -1, 144, 51, 239, 142, -1, 145,
640 -1, 144, 113, 145, -1, 239, -1, 239, 108, 109,
641 -1, 242, -1, -1, 147, -1, 47, 148, 112, -1,
vlm86851cd2006-10-13 12:37:39 +0000642 47, 22, 112, -1, 47, 112, -1, 149, -1, 148,
vlm64aaa9e2006-10-27 05:37:39 +0000643 113, 149, -1, 239, -1, 239, 108, 109, -1, 242,
644 -1, 108, 200, 109, -1, 239, 152, 3, 150, -1,
645 192, -1, 177, -1, 177, 108, 156, 109, -1, 239,
646 3, 173, -1, 239, 3, 163, -1, 239, 108, 154,
647 109, 3, 173, -1, 239, 108, 154, 109, 3, 163,
648 -1, 155, -1, 154, 113, 155, -1, 239, -1, 239,
649 114, 242, -1, 239, 114, 239, -1, 190, 114, 242,
650 -1, 190, 114, 239, -1, 157, -1, 156, 113, 157,
651 -1, 173, -1, 186, -1, 242, -1, 150, -1, -1,
652 159, -1, 160, -1, 159, 113, 160, -1, 242, 173,
653 227, -1, 173, 227, -1, 35, 73, 173, -1, 172,
654 -1, 162, -1, 161, 113, 162, -1, 242, 173, -1,
vlm86851cd2006-10-13 12:37:39 +0000655 172, -1, 173, -1, 33, 108, 165, 109, 167, -1,
656 -1, 93, -1, 166, -1, 165, 113, 166, -1, 17,
vlm64aaa9e2006-10-27 05:37:39 +0000657 227, -1, 18, 173, 164, 227, -1, 18, 181, 227,
658 -1, 18, 182, 227, -1, 17, 181, 227, -1, 17,
659 173, 227, -1, 17, 182, 227, -1, -1, 168, -1,
vlm86851cd2006-10-13 12:37:39 +0000660 -1, 100, 87, 108, 169, 170, 109, -1, 171, -1,
661 170, 171, -1, 4, -1, 19, -1, 180, -1, 115,
662 170, 116, -1, 107, -1, 107, 117, 187, -1, 107,
vlm64aaa9e2006-10-27 05:37:39 +0000663 117, 232, -1, 234, 175, 196, -1, -1, 174, 176,
vlm86851cd2006-10-13 12:37:39 +0000664 -1, 152, -1, 32, 108, 161, 109, -1, 83, 108,
665 158, 109, -1, 84, 108, 158, 109, -1, 83, 196,
vlm64aaa9e2006-10-27 05:37:39 +0000666 73, 241, 234, 175, -1, 84, 196, 73, 241, 234,
667 175, -1, 23, -1, 23, 40, 30, 242, -1, 61,
668 73, 177, -1, 15, -1, 15, 118, 239, -1, 240,
669 118, 239, -1, 15, 118, 242, -1, 240, -1, 240,
vlm86851cd2006-10-13 12:37:39 +0000670 118, 178, -1, 179, -1, 178, 118, 179, -1, 180,
671 -1, 17, -1, 18, -1, 17, -1, 181, 118, 17,
vlm64aaa9e2006-10-27 05:37:39 +0000672 -1, 181, 118, 18, -1, 16, -1, 242, 173, 3,
673 184, -1, 186, -1, 187, -1, 242, 114, 184, -1,
vlm86851cd2006-10-13 12:37:39 +0000674 -1, 108, 185, 189, -1, 68, -1, 50, -1, 91,
vlm64aaa9e2006-10-27 05:37:39 +0000675 -1, 6, -1, 8, -1, 188, -1, 232, -1, 242,
676 -1, 239, 118, 242, -1, 7, -1, 13, -1, 14,
vlm86851cd2006-10-13 12:37:39 +0000677 -1, 5, -1, 189, 5, -1, 29, -1, 68, -1,
678 81, -1, 191, -1, 72, 86, -1, 70, 56, -1,
679 82, -1, 49, -1, 41, 76, -1, 31, 86, -1,
680 96, -1, 52, -1, 193, -1, 63, -1, 45, -1,
vlm64aaa9e2006-10-27 05:37:39 +0000681 27, 86, -1, 190, -1, 191, 229, -1, 28, -1,
vlm86851cd2006-10-13 12:37:39 +0000682 53, -1, 54, -1, 55, -1, 64, -1, 69, -1,
683 79, -1, 88, -1, 90, -1, 95, -1, 97, -1,
684 98, -1, 99, -1, 71, -1, 104, -1, 105, -1,
vlmb9f1c0d2006-10-21 05:54:49 +0000685 102, -1, 103, -1, -1, 197, -1, 198, -1, 199,
686 -1, 85, 110, 200, 111, -1, 110, 200, 111, -1,
687 199, 110, 200, 111, -1, 107, -1, 201, -1, 201,
vlm64aaa9e2006-10-27 05:37:39 +0000688 113, 107, -1, 201, 113, 107, 113, 201, -1, 216,
vlmb9f1c0d2006-10-21 05:54:49 +0000689 -1, 202, -1, 22, 101, 205, -1, 203, -1, 202,
690 194, 203, -1, 204, -1, 203, 195, 204, -1, 205,
691 -1, 205, 101, 205, -1, 207, 110, 200, 111, -1,
vlm64aaa9e2006-10-27 05:37:39 +0000692 110, 200, 111, -1, 208, -1, 210, -1, 208, 220,
693 208, -1, 66, 220, 208, -1, 208, 220, 65, -1,
694 66, 220, 65, -1, 211, -1, 206, -1, 75, 7,
695 -1, 75, 242, -1, 85, -1, 51, -1, 50, -1,
696 91, -1, 233, -1, 188, -1, 209, -1, 242, -1,
697 6, -1, 8, -1, 239, -1, 100, 34, 199, -1,
698 100, 35, 108, 212, 109, -1, 213, -1, 212, 113,
699 213, -1, 107, -1, 242, 196, 214, -1, -1, 215,
700 -1, 78, -1, 20, -1, 74, -1, 217, -1, 221,
701 -1, 219, -1, -1, 36, 30, 108, 218, 189, -1,
702 37, 173, -1, 106, -1, 106, 119, -1, 119, 106,
703 -1, 119, 106, 119, -1, 222, -1, 223, -1, 108,
704 239, 109, -1, 222, 108, 224, 109, -1, 225, -1,
705 224, 113, 225, -1, 120, 226, -1, 120, 118, 226,
706 -1, 242, -1, 226, 118, 242, -1, -1, 228, -1,
707 74, -1, 38, 184, -1, 108, 109, -1, 108, 230,
708 109, -1, 231, -1, 230, 113, 231, -1, 242, -1,
709 242, 110, 232, 111, -1, 242, 110, 187, 111, -1,
710 232, -1, 107, -1, 10, -1, 11, -1, 232, -1,
711 12, -1, -1, 235, -1, 236, 238, -1, 115, 237,
712 10, 116, -1, -1, 94, -1, 24, -1, 80, -1,
713 -1, 57, -1, 46, -1, 15, -1, 16, -1, 16,
714 -1, -1, 242, -1, 9, -1
vlm1aeaddd2006-07-13 08:24:20 +0000715};
716
717/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
718static const unsigned short yyrline[] =
719{
vlm64aaa9e2006-10-27 05:37:39 +0000720 0, 355, 355, 361, 367, 384, 383, 412, 414, 417,
721 421, 426, 433, 441, 446, 450, 459, 461, 469, 473,
722 481, 485, 488, 491, 495, 515, 517, 525, 534, 538,
723 553, 561, 574, 582, 581, 595, 607, 609, 611, 622,
724 627, 629, 631, 637, 643, 645, 648, 659, 665, 671,
725 678, 684, 693, 695, 706, 710, 713, 720, 726, 732,
726 739, 745, 754, 756, 766, 780, 790, 806, 816, 832,
727 838, 845, 855, 865, 870, 877, 884, 892, 902, 908,
728 914, 918, 926, 937, 959, 961, 963, 969, 975, 983,
729 989, 996, 1001, 1007, 1013, 1019, 1022, 1028, 1038, 1040,
730 1043, 1051, 1058, 1071, 1082, 1092, 1103, 1113, 1124, 1135,
731 1137, 1144, 1142, 1151, 1156, 1162, 1167, 1170, 1174, 1179,
732 1188, 1197, 1208, 1230, 1237, 1256, 1260, 1266, 1272, 1278,
733 1288, 1298, 1304, 1315, 1329, 1338, 1348, 1358, 1368, 1376,
734 1397, 1406, 1415, 1417, 1424, 1431, 1437, 1441, 1447, 1467,
735 1477, 1479, 1480, 1487, 1487, 1492, 1499, 1505, 1510, 1514,
736 1518, 1521, 1526, 1538, 1555, 1560, 1565, 1572, 1582, 1596,
737 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607,
738 1608, 1609, 1615, 1617, 1618, 1621, 1628, 1640, 1642, 1646,
739 1650, 1651, 1652, 1653, 1654, 1658, 1659, 1660, 1661, 1665,
740 1666, 1673, 1673, 1674, 1674, 1676, 1678, 1683, 1687, 1691,
741 1700, 1704, 1709, 1714, 1717, 1723, 1731, 1736, 1738, 1743,
742 1745, 1750, 1752, 1758, 1760, 1765, 1774, 1782, 1788, 1794,
743 1801, 1809, 1817, 1826, 1829, 1834, 1840, 1850, 1854, 1859,
744 1865, 1870, 1871, 1872, 1873, 1886, 1891, 1897, 1911, 1915,
745 1920, 1924, 1929, 1936, 1949, 1951, 1954, 1958, 1961, 1968,
746 1970, 1971, 1976, 1974, 1986, 1994, 1996, 1997, 1998, 2000,
747 2004, 2012, 2027, 2033, 2040, 2053, 2065, 2080, 2084, 2101,
748 2106, 2109, 2114, 2136, 2141, 2146, 2152, 2158, 2166, 2174,
749 2182, 2189, 2199, 2204, 2210, 2212, 2242, 2244, 2247, 2254,
750 2260, 2262, 2263, 2264, 2267, 2269, 2270, 2273, 2278, 2285,
751 2292, 2294, 2299
vlm1aeaddd2006-07-13 08:24:20 +0000752};
753#endif
754
755#if YYDEBUG || YYERROR_VERBOSE
756/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
757 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
758static const char *const yytname[] =
759{
760 "$end", "error", "$undefined", "TOK_PPEQ", "TOK_whitespace", "TOK_opaque",
761 "TOK_bstring", "TOK_cstring", "TOK_hstring", "TOK_identifier",
vlme745fcd2006-09-05 16:18:34 +0000762 "TOK_number", "TOK_number_negative", "TOK_realnumber", "TOK_tuple",
763 "TOK_quadruple", "TOK_typereference", "TOK_capitalreference",
764 "TOK_typefieldreference", "TOK_valuefieldreference", "TOK_Literal",
765 "TOK_ABSENT", "TOK_ABSTRACT_SYNTAX", "TOK_ALL", "TOK_ANY",
766 "TOK_APPLICATION", "TOK_AUTOMATIC", "TOK_BEGIN", "TOK_BIT",
767 "TOK_BMPString", "TOK_BOOLEAN", "TOK_BY", "TOK_CHARACTER", "TOK_CHOICE",
768 "TOK_CLASS", "TOK_COMPONENT", "TOK_COMPONENTS", "TOK_CONSTRAINED",
769 "TOK_CONTAINING", "TOK_DEFAULT", "TOK_DEFINITIONS", "TOK_DEFINED",
770 "TOK_EMBEDDED", "TOK_ENCODED", "TOK_ENCODING_CONTROL", "TOK_END",
771 "TOK_ENUMERATED", "TOK_EXPLICIT", "TOK_EXPORTS", "TOK_EXTENSIBILITY",
772 "TOK_EXTERNAL", "TOK_FALSE", "TOK_FROM", "TOK_GeneralizedTime",
773 "TOK_GeneralString", "TOK_GraphicString", "TOK_IA5String",
774 "TOK_IDENTIFIER", "TOK_IMPLICIT", "TOK_IMPLIED", "TOK_IMPORTS",
775 "TOK_INCLUDES", "TOK_INSTANCE", "TOK_INSTRUCTIONS", "TOK_INTEGER",
776 "TOK_ISO646String", "TOK_MAX", "TOK_MIN", "TOK_MINUS_INFINITY",
777 "TOK_NULL", "TOK_NumericString", "TOK_OBJECT", "TOK_ObjectDescriptor",
778 "TOK_OCTET", "TOK_OF", "TOK_OPTIONAL", "TOK_PATTERN", "TOK_PDV",
779 "TOK_PLUS_INFINITY", "TOK_PRESENT", "TOK_PrintableString",
780 "TOK_PRIVATE", "TOK_REAL", "TOK_RELATIVE_OID", "TOK_SEQUENCE",
781 "TOK_SET", "TOK_SIZE", "TOK_STRING", "TOK_SYNTAX", "TOK_T61String",
782 "TOK_TAGS", "TOK_TeletexString", "TOK_TRUE", "TOK_TYPE_IDENTIFIER",
783 "TOK_UNIQUE", "TOK_UNIVERSAL", "TOK_UniversalString", "TOK_UTCTime",
784 "TOK_UTF8String", "TOK_VideotexString", "TOK_VisibleString", "TOK_WITH",
785 "TOK_EXCEPT", "'^'", "TOK_INTERSECTION", "'|'", "TOK_UNION",
786 "TOK_TwoDots", "TOK_ThreeDots", "'{'", "'}'", "'('", "')'", "';'",
787 "','", "':'", "'['", "']'", "'!'", "'.'", "'<'", "'@'", "$accept",
vlm43c8ac52006-09-17 04:52:50 +0000788 "ParsedGrammar", "ModuleList", "ModuleDefinition", "@1",
vlme745fcd2006-09-05 16:18:34 +0000789 "optObjectIdentifier", "ObjectIdentifier", "ObjectIdentifierBody",
vlmd3420d32006-09-14 10:35:20 +0000790 "ObjectIdentifierElement", "optModuleDefinitionFlags",
791 "ModuleDefinitionFlags", "ModuleDefinitionFlag", "optModuleBody",
vlm43c8ac52006-09-17 04:52:50 +0000792 "ModuleBody", "AssignmentList", "Assignment", "@2", "optImports",
vlm86851cd2006-10-13 12:37:39 +0000793 "ImportsDefinition", "optImportsBundleSet", "ImportsBundleSet",
794 "AssignedIdentifier", "ImportsBundle", "ImportsList", "ImportsElement",
795 "optExports", "ExportsDefinition", "ExportsBody", "ExportsElement",
796 "ValueSet", "ValueSetTypeAssignment", "DefinedType",
797 "DataTypeReference", "ParameterArgumentList", "ParameterArgumentName",
798 "ActualParameterList", "ActualParameter", "optComponentTypeLists",
799 "ComponentTypeLists", "ComponentType", "AlternativeTypeLists",
800 "AlternativeType", "ObjectClass", "optUnique", "FieldSpec",
801 "ClassField", "optWithSyntax", "WithSyntax", "@3", "WithSyntaxList",
802 "WithSyntaxToken", "ExtensionAndException", "Type",
803 "NSTD_IndirectMarker", "TypeDeclaration", "TypeDeclarationSet",
804 "ComplexTypeReference", "ComplexTypeReferenceAmpList",
805 "ComplexTypeReferenceElement", "PrimitiveFieldReference", "FieldName",
vlmb9f1c0d2006-10-21 05:54:49 +0000806 "DefinedObjectClass", "ValueAssignment", "Value", "@4", "SimpleValue",
vlm86851cd2006-10-13 12:37:39 +0000807 "DefinedValue", "RestrictedCharacterStringValue", "Opaque",
808 "BasicTypeId", "BasicTypeId_UniverationCompatible", "BasicType",
809 "BasicString", "UnionMark", "IntersectionMark", "optConstraints",
810 "Constraint", "SubtypeConstraint", "SetOfConstraints",
811 "ElementSetSpecs", "ElementSetSpec", "Unions", "Intersections",
vlm8cc3f742006-10-18 18:40:14 +0000812 "IntersectionElements", "ConstraintSubtypeElement", "PatternConstraint",
vlm64aaa9e2006-10-27 05:37:39 +0000813 "ConstraintSpec", "SingleValue", "BitStringValue", "ContainedSubtype",
vlm8cc3f742006-10-18 18:40:14 +0000814 "InnerTypeConstraint", "WithComponentsList", "WithComponentsElement",
815 "optPresenceConstraint", "PresenceConstraint", "GeneralConstraint",
816 "UserDefinedConstraint", "@5", "ContentsConstraint",
817 "ConstraintRangeSpec", "TableConstraint", "SimpleTableConstraint",
818 "ComponentRelationConstraint", "AtNotationList", "AtNotationElement",
819 "ComponentIdList", "optMarker", "Marker", "UniverationDefinition",
820 "UniverationList", "UniverationElement", "SignedNumber", "RealValue",
821 "optTag", "Tag", "TagTypeValue", "TagClass", "TagPlicit", "TypeRefName",
vlme745fcd2006-09-05 16:18:34 +0000822 "ObjectClassReference", "optIdentifier", "Identifier", 0
vlm1aeaddd2006-07-13 08:24:20 +0000823};
824#endif
825
826# ifdef YYPRINT
827/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
828 token YYLEX-NUM. */
829static const unsigned short yytoknum[] =
830{
831 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
832 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
833 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
834 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
835 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
836 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
837 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
838 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
839 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
840 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
vlme745fcd2006-09-05 16:18:34 +0000841 355, 356, 94, 357, 124, 358, 359, 360, 123, 125,
842 40, 41, 59, 44, 58, 91, 93, 33, 46, 60,
843 64
vlm1aeaddd2006-07-13 08:24:20 +0000844};
845# endif
846
847/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
848static const unsigned char yyr1[] =
849{
vlm43c8ac52006-09-17 04:52:50 +0000850 0, 121, 122, 123, 123, 125, 124, 126, 126, 127,
851 127, 128, 128, 129, 129, 129, 130, 130, 131, 131,
852 132, 132, 132, 132, 132, 133, 133, 134, 135, 135,
853 136, 136, 136, 137, 136, 136, 138, 138, 139, 139,
vlm86851cd2006-10-13 12:37:39 +0000854 140, 140, 141, 141, 142, 142, 143, 144, 144, 145,
855 145, 145, 146, 146, 147, 147, 147, 148, 148, 149,
856 149, 149, 150, 151, 152, 152, 152, 153, 153, 153,
857 153, 154, 154, 155, 155, 155, 155, 155, 156, 156,
858 157, 157, 157, 157, 158, 158, 159, 159, 160, 160,
859 160, 160, 161, 161, 162, 162, 162, 163, 164, 164,
860 165, 165, 166, 166, 166, 166, 166, 166, 166, 167,
861 167, 169, 168, 170, 170, 171, 171, 171, 171, 172,
862 172, 172, 173, 174, 175, 176, 176, 176, 176, 176,
863 176, 176, 176, 176, 177, 177, 177, 177, 177, 177,
864 178, 178, 179, 180, 180, 181, 181, 181, 182, 183,
865 184, 184, 184, 185, 184, 184, 186, 186, 186, 186,
866 186, 186, 187, 187, 188, 188, 188, 189, 189, 190,
867 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
868 190, 190, 191, 191, 191, 192, 192, 193, 193, 193,
869 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
vlmb9f1c0d2006-10-21 05:54:49 +0000870 193, 194, 194, 195, 195, 196, 196, 197, 198, 198,
871 199, 199, 200, 200, 200, 200, 200, 201, 201, 202,
vlm86851cd2006-10-13 12:37:39 +0000872 202, 203, 203, 204, 204, 205, 205, 205, 205, 205,
vlm8cc3f742006-10-18 18:40:14 +0000873 205, 205, 205, 205, 205, 206, 206, 207, 207, 208,
vlm64aaa9e2006-10-27 05:37:39 +0000874 208, 208, 208, 208, 208, 209, 209, 210, 211, 211,
875 212, 212, 213, 213, 214, 214, 215, 215, 215, 216,
876 216, 216, 218, 217, 219, 220, 220, 220, 220, 221,
877 221, 222, 223, 224, 224, 225, 225, 226, 226, 227,
878 227, 228, 228, 229, 229, 230, 230, 231, 231, 231,
879 231, 231, 232, 232, 233, 233, 234, 234, 235, 236,
880 237, 237, 237, 237, 238, 238, 238, 239, 239, 240,
881 241, 241, 242
vlm1aeaddd2006-07-13 08:24:20 +0000882};
883
884/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
885static const unsigned char yyr2[] =
886{
vlm43c8ac52006-09-17 04:52:50 +0000887 0, 2, 1, 1, 2, 0, 9, 0, 1, 3,
888 2, 1, 2, 1, 4, 1, 0, 1, 1, 2,
889 2, 2, 2, 2, 2, 0, 1, 3, 1, 2,
890 1, 1, 1, 0, 3, 1, 0, 1, 3, 2,
vlm86851cd2006-10-13 12:37:39 +0000891 0, 1, 1, 2, 0, 1, 4, 1, 3, 1,
892 3, 1, 0, 1, 3, 3, 2, 1, 3, 1,
893 3, 1, 3, 4, 1, 1, 4, 3, 3, 6,
894 6, 1, 3, 1, 3, 3, 3, 3, 1, 3,
895 1, 1, 1, 1, 0, 1, 1, 3, 3, 2,
896 3, 1, 1, 3, 2, 1, 1, 5, 0, 1,
897 1, 3, 2, 4, 3, 3, 3, 3, 3, 0,
898 1, 0, 6, 1, 2, 1, 1, 1, 3, 1,
899 3, 3, 3, 0, 2, 1, 4, 4, 4, 6,
900 6, 1, 4, 3, 1, 3, 3, 3, 1, 3,
901 1, 3, 1, 1, 1, 1, 3, 3, 1, 4,
902 1, 1, 3, 0, 3, 1, 1, 1, 1, 1,
903 1, 1, 1, 3, 1, 1, 1, 1, 2, 1,
904 1, 1, 1, 2, 2, 1, 1, 2, 2, 1,
905 1, 1, 1, 1, 2, 1, 2, 1, 1, 1,
vlm1aeaddd2006-07-13 08:24:20 +0000906 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
vlmb9f1c0d2006-10-21 05:54:49 +0000907 1, 1, 1, 1, 1, 0, 1, 1, 1, 4,
908 3, 4, 1, 1, 3, 5, 1, 1, 3, 1,
vlm86851cd2006-10-13 12:37:39 +0000909 3, 1, 3, 1, 3, 4, 3, 1, 1, 3,
vlm8cc3f742006-10-18 18:40:14 +0000910 3, 3, 3, 1, 1, 2, 2, 1, 1, 1,
vlm64aaa9e2006-10-27 05:37:39 +0000911 1, 1, 1, 1, 1, 1, 1, 1, 3, 5,
912 1, 3, 1, 3, 0, 1, 1, 1, 1, 1,
913 1, 1, 0, 5, 2, 1, 2, 2, 3, 1,
914 1, 3, 4, 1, 3, 2, 3, 1, 3, 0,
915 1, 1, 2, 2, 3, 1, 3, 1, 4, 4,
916 1, 1, 1, 1, 1, 1, 0, 1, 2, 4,
917 0, 1, 1, 1, 0, 1, 1, 1, 1, 1,
918 0, 1, 1
vlm1aeaddd2006-07-13 08:24:20 +0000919};
920
921/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
922 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
923 means the default is an error. */
924static const unsigned short yydefact[] =
925{
vlm64aaa9e2006-10-27 05:37:39 +0000926 0, 307, 308, 0, 2, 3, 5, 1, 4, 7,
927 0, 0, 8, 312, 15, 10, 0, 11, 13, 16,
vlm43c8ac52006-09-17 04:52:50 +0000928 9, 12, 0, 0, 0, 0, 0, 0, 0, 17,
929 18, 0, 24, 22, 20, 23, 21, 0, 19, 14,
vlm86851cd2006-10-13 12:37:39 +0000930 52, 0, 0, 26, 36, 53, 0, 56, 0, 57,
931 59, 61, 6, 40, 0, 37, 55, 54, 0, 0,
932 39, 0, 41, 42, 0, 47, 49, 51, 187, 0,
933 188, 189, 190, 191, 192, 200, 193, 194, 195, 196,
934 197, 198, 199, 27, 28, 32, 30, 31, 35, 0,
vlm64aaa9e2006-10-27 05:37:39 +0000935 296, 58, 60, 38, 43, 0, 0, 0, 33, 29,
936 296, 134, 309, 0, 169, 0, 0, 183, 176, 180,
vlm86851cd2006-10-13 12:37:39 +0000937 182, 170, 0, 0, 171, 175, 179, 0, 0, 65,
vlm64aaa9e2006-10-27 05:37:39 +0000938 185, 172, 64, 181, 138, 300, 0, 123, 297, 304,
vlmb9f1c0d2006-10-21 05:54:49 +0000939 44, 48, 50, 34, 0, 68, 67, 0, 184, 178,
vlm64aaa9e2006-10-27 05:37:39 +0000940 177, 174, 173, 0, 71, 0, 172, 73, 0, 296,
941 0, 186, 0, 302, 303, 301, 0, 0, 0, 205,
942 306, 305, 298, 45, 46, 0, 135, 137, 0, 0,
943 0, 0, 0, 63, 158, 164, 159, 292, 293, 165,
vlm86851cd2006-10-13 12:37:39 +0000944 166, 156, 157, 83, 0, 78, 80, 81, 160, 161,
vlm64aaa9e2006-10-27 05:37:39 +0000945 82, 291, 283, 0, 285, 290, 287, 143, 144, 139,
vlmb9f1c0d2006-10-21 05:54:49 +0000946 140, 142, 136, 0, 155, 153, 149, 150, 151, 0,
947 162, 131, 0, 0, 205, 205, 125, 124, 0, 0,
vlm64aaa9e2006-10-27 05:37:39 +0000948 122, 206, 207, 208, 296, 296, 0, 100, 296, 72,
949 77, 76, 75, 74, 245, 246, 295, 0, 0, 296,
950 239, 238, 0, 0, 237, 240, 0, 212, 0, 0,
951 242, 0, 213, 217, 219, 221, 223, 234, 0, 227,
952 243, 228, 233, 216, 259, 261, 260, 269, 270, 294,
953 241, 247, 244, 66, 296, 284, 0, 0, 0, 299,
954 0, 0, 0, 0, 296, 0, 296, 0, 296, 0,
955 0, 0, 0, 148, 145, 0, 281, 279, 279, 279,
956 102, 280, 98, 279, 279, 109, 0, 70, 69, 0,
957 0, 264, 265, 0, 0, 235, 236, 0, 0, 0,
958 0, 62, 0, 201, 202, 0, 203, 204, 0, 0,
959 0, 0, 0, 79, 286, 0, 0, 162, 141, 167,
960 154, 163, 152, 0, 119, 0, 92, 95, 96, 296,
961 133, 0, 0, 85, 86, 91, 279, 296, 310, 0,
962 310, 0, 210, 0, 282, 107, 0, 106, 108, 99,
963 279, 104, 105, 0, 97, 110, 101, 218, 262, 266,
964 267, 232, 230, 248, 0, 271, 226, 214, 220, 222,
965 224, 0, 231, 229, 0, 0, 273, 289, 288, 168,
966 132, 0, 126, 296, 94, 296, 127, 296, 89, 279,
967 296, 311, 128, 296, 209, 211, 146, 147, 103, 0,
968 0, 268, 252, 0, 250, 205, 0, 225, 0, 275,
969 277, 272, 0, 120, 121, 93, 90, 87, 88, 123,
970 123, 111, 263, 249, 0, 254, 215, 276, 0, 274,
971 129, 130, 0, 251, 257, 258, 256, 253, 255, 278,
972 115, 116, 0, 0, 113, 117, 0, 112, 114, 118
vlm1aeaddd2006-07-13 08:24:20 +0000973};
974
975/* YYDEFGOTO[NTERM-NUM]. */
976static const short yydefgoto[] =
977{
vlm43c8ac52006-09-17 04:52:50 +0000978 -1, 3, 4, 5, 9, 11, 12, 16, 17, 28,
vlmb9f1c0d2006-10-21 05:54:49 +0000979 29, 30, 42, 43, 83, 84, 133, 54, 55, 61,
980 62, 164, 63, 64, 65, 44, 45, 48, 49, 183,
vlm64aaa9e2006-10-27 05:37:39 +0000981 85, 118, 86, 143, 144, 184, 185, 352, 353, 354,
982 345, 346, 135, 370, 226, 227, 374, 375, 452, 463,
983 464, 355, 356, 158, 159, 217, 119, 199, 200, 465,
984 298, 299, 87, 206, 280, 207, 208, 250, 340, 120,
985 121, 122, 123, 325, 328, 220, 221, 222, 223, 251,
986 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
987 262, 423, 424, 457, 458, 263, 264, 420, 265, 314,
988 266, 267, 268, 395, 396, 429, 300, 301, 151, 193,
989 194, 269, 270, 127, 128, 129, 156, 162, 271, 124,
990 410, 272
vlm1aeaddd2006-07-13 08:24:20 +0000991};
992
993/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
994 STATE-NUM. */
vlm64aaa9e2006-10-27 05:37:39 +0000995#define YYPACT_NINF -287
vlm1aeaddd2006-07-13 08:24:20 +0000996static const short yypact[] =
997{
vlm64aaa9e2006-10-27 05:37:39 +0000998 80, -287, -287, 24, 80, -287, -287, -287, -287, -57,
999 7, 17, -287, -287, -287, -287, 44, -287, -42, 240,
1000 -287, -287, 77, 42, 61, 119, 107, 129, 168, 240,
1001 -287, 114, -287, -287, -287, -287, -287, 205, -287, -287,
1002 82, 68, 190, -287, 178, -287, 140, -287, 98, -287,
1003 191, -287, -287, 198, 538, -287, -287, -287, 232, 184,
1004 -287, 202, 232, -287, 69, -287, 209, -287, -287, 304,
1005 -287, -287, -287, -287, -287, -287, -287, -287, -287, -287,
1006 -287, -287, -287, 538, -287, -287, -287, -287, -287, 274,
1007 207, -287, -287, -287, -287, 80, 232, 223, -287, -287,
1008 9, 218, -287, 255, -287, 261, 273, -287, -287, -287,
1009 -287, -287, 295, 266, -287, -287, -287, 706, 351, 249,
1010 -287, 250, -287, -287, 241, 79, 357, -287, -287, 186,
1011 -57, -287, -287, -287, 253, -287, -287, 232, -287, -287,
1012 -287, -287, -287, 145, -287, 251, -287, 252, 259, 101,
1013 16, -287, 291, -287, -287, -287, 353, 213, 630, -16,
1014 -287, -287, -287, -287, -287, 243, -287, -287, 365, 706,
1015 232, 232, 413, -287, -287, -287, -287, -287, -287, -287,
1016 -287, -287, -287, -287, 146, -287, -287, -287, -287, -287,
1017 -287, -287, -287, 166, -287, -287, 265, -287, -287, 258,
1018 -287, -287, -287, 262, -287, -287, -287, -287, -287, 263,
1019 269, 337, 271, 312, 85, 130, -287, -287, 270, 413,
1020 -287, -287, -287, 276, 81, 48, 171, -287, 9, -287,
1021 -287, -287, -287, -287, -287, -287, -287, 286, 358, 207,
1022 -287, -287, -17, 23, -287, -287, 234, -287, 80, 413,
1023 -287, 280, 277, 206, 210, -287, 293, -287, 282, -17,
1024 -287, -287, -287, -287, -287, -287, -287, 287, -287, -287,
1025 -287, -287, -287, -287, 101, -287, 71, 235, 307, -287,
1026 391, 389, 213, 369, 51, 315, 70, 327, 70, 328,
1027 413, 292, 413, -287, -287, 213, -287, -27, -19, -27,
1028 -287, -287, 309, -19, -27, 305, 243, -287, -287, 564,
1029 296, -287, 288, 302, 192, -287, -287, 299, 303, 301,
1030 306, -287, 308, -287, -287, 564, -287, -287, 564, 564,
1031 413, 446, 294, -287, -287, 319, 320, -287, -287, -287,
1032 407, -287, -287, 389, 316, 182, -287, -287, -287, 207,
1033 -287, 340, 323, 324, -287, -287, -27, 207, 389, 330,
1034 389, 325, -287, 329, -287, -287, 317, -287, -287, -287,
1035 -27, -287, -287, 354, -287, -287, -287, -287, -287, -287,
1036 297, -287, -287, 276, 76, -287, -287, 331, 210, -287,
1037 -287, 332, -287, -287, -1, 183, -287, -287, -287, -287,
1038 -287, 235, -287, 51, -287, 207, -287, 6, -287, -27,
1039 207, -287, -287, 207, -287, -287, -287, -287, -287, 334,
1040 391, -287, -287, 185, -287, -16, 459, -287, 389, 333,
1041 -287, -287, 294, -287, -287, -287, -287, -287, -287, -287,
1042 -287, -287, 407, -287, 76, 161, -287, 333, 389, -287,
1043 -287, -287, 57, -287, -287, -287, -287, -287, -287, -287,
1044 -287, -287, 57, 19, -287, -287, 53, -287, -287, -287
vlm1aeaddd2006-07-13 08:24:20 +00001045};
1046
1047/* YYPGOTO[NTERM-NUM]. */
1048static const short yypgoto[] =
1049{
vlm64aaa9e2006-10-27 05:37:39 +00001050 -287, -287, -287, 441, -287, -287, 318, -287, 430, -287,
1051 -287, 418, -287, -287, -287, 378, -287, -287, -287, -287,
1052 -287, -287, 400, -287, 380, -287, -287, -287, 419, 335,
1053 -287, 322, -287, -287, 313, -287, 204, 196, -287, 78,
1054 -287, 83, 264, -287, -287, 181, -287, -287, -287, 27,
1055 -277, -270, -87, -287, -100, -287, 208, -287, 212, -148,
1056 272, 275, -287, -65, -287, -142, -265, -139, 74, -51,
1057 67, -287, -5, -287, -287, -213, -287, -287, 174, -199,
1058 73, -287, 170, 173, -165, -287, -287, -286, -287, -287,
1059 -287, -287, 58, -287, -287, -287, -287, -287, -287, 244,
1060 -287, -287, -287, -287, 75, 84, -264, -287, -287, -287,
1061 229, -128, -287, -222, -287, -287, -287, -287, 5, -287,
1062 148, -10
vlm1aeaddd2006-07-13 08:24:20 +00001063};
1064
1065/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
1066 positive, shift that token. If negative, reduce the rule which
1067 number is the opposite. If zero, do what YYDEFACT says.
1068 If YYTABLE_NINF, parse error. */
vlm64aaa9e2006-10-27 05:37:39 +00001069#define YYTABLE_NINF -280
vlm1aeaddd2006-07-13 08:24:20 +00001070static const short yytable[] =
1071{
vlm64aaa9e2006-10-27 05:37:39 +00001072 18, 287, 289, 126, 201, 6, 18, 187, 13, 6,
1073 188, 295, 335, 136, 347, 13, 13, 14, 188, 295,
1074 291, 189, 195, 460, 7, 13, 177, 178, 382, 189,
1075 315, 51, 13, 365, 367, 368, 197, 198, 461, 371,
1076 372, 351, 134, 67, 90, 393, 50, 296, 51, 88,
1077 320, 10, 67, 13, 14, 296, 19, 460, 66, 89,
1078 13, 460, 186, 50, 293, 294, 145, 66, 22, 218,
1079 197, 198, 461, 90, 197, 198, 461, 13, 88, 13,
1080 13, 177, 178, 1, 2, 13, 67, 31, 89, 312,
1081 46, 361, 408, 363, 219, 1, 2, 293, 294, 366,
1082 130, 66, 313, 153, 32, 351, 418, 174, 175, 176,
1083 13, 177, 178, 344, 179, 180, 15, 428, 145, 295,
1084 95, 125, 147, 191, 125, 192, -25, 167, 467, 41,
1085 201, 391, 187, 347, 462, 188, 433, 297, 302, 190,
1086 196, 308, 166, 188, 377, 438, 189, 210, 195, 336,
1087 33, 181, 311, 20, 189, 296, 188, 202, 344, 154,
1088 231, 233, 209, 125, 390, 35, 125, 189, 462, 469,
1089 218, 37, 462, 155, 147, 230, 232, 344, 191, -84,
1090 47, 454, 96, 422, 146, 125, 468, 186, 439, 468,
1091 -279, 440, 182, 286, -279, 219, 125, 348, 234, 175,
1092 235, 13, 177, 178, 236, 179, 180, 13, 34, 172,
1093 57, 58, 445, 1, 2, 218, 125, 342, 36, 174,
1094 175, 176, 13, 177, 178, 39, 179, 180, 1, 2,
1095 364, 40, 160, 316, 52, 455, 146, 53, 288, 456,
1096 219, 13, 240, 161, 13, 177, 178, 1, 2, 60,
1097 1, 2, 56, 319, 168, 273, 23, 381, 169, 274,
1098 224, 225, 404, 181, 190, 24, 196, 337, 317, 318,
1099 409, 341, 210, 434, 349, 275, 357, 100, 357, 276,
1100 305, 204, 209, 245, 306, 210, 25, 209, 26, 101,
1101 102, 402, 431, 92, 443, 403, 432, 27, 444, 59,
1102 209, 103, 68, 104, 182, 105, 1, 2, 197, 198,
1103 323, 324, 326, 327, 93, 106, 348, 97, 436, 107,
1104 98, 205, 125, 108, 197, 198, 109, 70, 71, 72,
1105 101, 102, 132, 400, 416, 417, 137, 110, 73, 450,
1106 451, 138, 111, 74, 112, 75, 113, 139, 411, 140,
1107 411, 141, 142, 76, 148, 114, 115, 149, 150, 152,
1108 157, 165, 77, 203, 78, 170, 171, 172, 228, 79,
1109 116, 80, 81, 82, 425, 277, 278, 283, 279, 284,
1110 290, 281, 117, 282, 430, 285, 292, 309, 310, 321,
1111 322, 337, 330, 349, 329, 332, 339, 357, 13, 343,
1112 358, 360, 369, 362, 378, 373, 209, 379, 380, 219,
1113 385, 384, 399, 405, 394, 387, 421, 386, 430, 234,
1114 175, 235, 13, 177, 178, 236, 179, 180, 1, 2,
1115 397, 398, 406, 401, 425, 237, 414, 407, 459, 412,
1116 415, 419, 441, 427, 426, 8, 21, 38, 163, 238,
1117 239, 448, 234, 175, 235, 13, 177, 178, 236, 179,
1118 180, 99, 94, 240, 241, 234, 175, 235, 13, 177,
1119 178, 236, 179, 180, 1, 2, 131, 91, 333, 242,
1120 216, 237, 229, 173, 359, 437, 435, 376, 243, 466,
1121 338, 383, 307, 350, 442, 388, 240, 303, 244, 446,
1122 304, 389, 453, 331, 245, 334, 0, 449, 413, 240,
1123 241, 392, 447, 246, 0, 0, 0, 0, 0, 0,
1124 247, 248, 0, 249, 0, 242, 0, 0, 0, 0,
1125 0, 0, 0, 0, 243, 0, 0, 245, 0, 0,
1126 0, 0, 0, 0, 244, 0, 0, 13, 0, 0,
1127 245, 0, 0, 1, 2, 0, 0, 0, 0, 246,
1128 0, 0, 0, 0, 0, 0, 68, 0, 0, 249,
1129 234, 175, 235, 13, 177, 178, 236, 179, 180, 1,
1130 2, 69, 0, 0, 0, 0, 0, 0, 0, 0,
1131 0, 70, 71, 72, 0, 0, 0, 0, 0, 0,
1132 0, 0, 73, 0, 0, 0, 0, 74, 0, 75,
1133 0, 0, 0, 0, 240, 241, 0, 76, 0, 0,
1134 0, 0, 0, 0, 0, 0, 77, 0, 78, 0,
1135 242, 0, 0, 79, 0, 80, 81, 82, 0, 243,
1136 0, 0, 0, 0, 0, 101, 102, 0, 0, 244,
1137 0, 0, 0, 211, 0, 245, 0, 103, 68, 104,
1138 0, 105, 212, 0, 246, 0, 0, 0, 0, 0,
1139 0, 106, 0, 0, 249, 107, 0, 0, 0, 108,
vlm8cc3f742006-10-18 18:40:14 +00001140 0, 0, 109, 70, 71, 72, 0, 0, 0, 0,
vlmb9f1c0d2006-10-21 05:54:49 +00001141 0, 213, 0, 110, 73, 0, 0, 0, 111, 74,
vlm8cc3f742006-10-18 18:40:14 +00001142 112, 75, 113, 0, 0, 0, 0, 0, 0, 76,
vlmb9f1c0d2006-10-21 05:54:49 +00001143 0, 114, 115, 214, 215, 0, 0, 0, 77, 0,
1144 78, 1, 2, 0, 0, 79, 116, 80, 81, 82,
vlm8cc3f742006-10-18 18:40:14 +00001145 0, 0, 0, 103, 68, 104, 0, 105, 0, 0,
1146 0, 0, 0, 0, 0, 0, 0, 106, 0, 0,
1147 0, 107, 0, 0, 0, 108, 0, 0, 109, 70,
1148 71, 72, 0, 0, 0, 0, 0, 0, 0, 110,
1149 73, 0, 0, 0, 111, 74, 112, 75, 113, 0,
1150 0, 0, 0, 0, 0, 76, 0, 114, 115, 0,
vlmb9f1c0d2006-10-21 05:54:49 +00001151 0, 0, 0, 0, 77, 0, 78, 0, 0, 0,
1152 0, 79, 116, 80, 81, 82
vlm1aeaddd2006-07-13 08:24:20 +00001153};
1154
1155static const short yycheck[] =
1156{
vlm64aaa9e2006-10-27 05:37:39 +00001157 10, 214, 215, 90, 152, 0, 16, 149, 9, 4,
1158 149, 38, 277, 100, 284, 9, 9, 10, 157, 38,
1159 219, 149, 150, 4, 0, 9, 10, 11, 314, 157,
1160 7, 41, 9, 297, 298, 299, 17, 18, 19, 303,
1161 304, 35, 33, 53, 54, 331, 41, 74, 58, 54,
1162 249, 108, 62, 9, 10, 74, 39, 4, 53, 54,
1163 9, 4, 149, 58, 16, 17, 117, 62, 110, 85,
1164 17, 18, 19, 83, 17, 18, 19, 9, 83, 9,
1165 9, 10, 11, 15, 16, 9, 96, 10, 83, 106,
1166 22, 290, 356, 292, 110, 15, 16, 16, 17, 118,
1167 95, 96, 119, 24, 62, 35, 370, 6, 7, 8,
1168 9, 10, 11, 107, 13, 14, 109, 118, 169, 38,
1169 51, 115, 117, 107, 115, 109, 44, 137, 109, 47,
1170 278, 330, 274, 403, 115, 274, 401, 224, 225, 149,
1171 150, 228, 137, 282, 309, 409, 274, 157, 276, 277,
1172 89, 50, 239, 109, 282, 74, 295, 152, 107, 80,
1173 170, 171, 157, 115, 329, 58, 115, 295, 115, 116,
1174 85, 3, 115, 94, 169, 170, 171, 107, 107, 109,
1175 112, 20, 113, 107, 117, 115, 463, 274, 410, 466,
1176 109, 413, 91, 108, 113, 110, 115, 284, 6, 7,
1177 8, 9, 10, 11, 12, 13, 14, 9, 89, 108,
1178 112, 113, 425, 15, 16, 85, 115, 282, 89, 6,
1179 7, 8, 9, 10, 11, 111, 13, 14, 15, 16,
1180 295, 26, 46, 243, 44, 74, 169, 59, 108, 78,
1181 110, 9, 50, 57, 9, 10, 11, 15, 16, 51,
1182 15, 16, 112, 248, 109, 109, 16, 65, 113, 113,
1183 17, 18, 349, 50, 274, 25, 276, 277, 34, 35,
1184 357, 281, 282, 401, 284, 109, 286, 3, 288, 113,
1185 109, 68, 277, 91, 113, 295, 46, 282, 48, 15,
1186 16, 109, 109, 109, 109, 113, 113, 57, 113, 108,
1187 295, 27, 28, 29, 91, 31, 15, 16, 17, 18,
1188 104, 105, 102, 103, 112, 41, 403, 108, 405, 45,
1189 16, 108, 115, 49, 17, 18, 52, 53, 54, 55,
1190 15, 16, 109, 343, 17, 18, 118, 63, 64, 439,
1191 440, 86, 68, 69, 70, 71, 72, 86, 358, 76,
1192 360, 56, 86, 79, 3, 81, 82, 108, 108, 118,
1193 3, 108, 88, 10, 90, 114, 114, 108, 3, 95,
1194 96, 97, 98, 99, 384, 110, 118, 40, 116, 108,
1195 110, 118, 108, 114, 394, 73, 110, 101, 30, 109,
1196 113, 401, 110, 403, 101, 108, 5, 407, 9, 30,
1197 73, 73, 93, 111, 108, 100, 401, 119, 106, 110,
1198 109, 108, 5, 73, 120, 107, 119, 111, 428, 6,
1199 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1200 111, 111, 109, 117, 444, 22, 111, 113, 448, 109,
1201 111, 87, 108, 111, 113, 4, 16, 29, 130, 36,
1202 37, 118, 6, 7, 8, 9, 10, 11, 12, 13,
1203 14, 83, 62, 50, 51, 6, 7, 8, 9, 10,
1204 11, 12, 13, 14, 15, 16, 96, 58, 274, 66,
1205 158, 22, 169, 148, 288, 407, 403, 306, 75, 462,
1206 278, 317, 228, 285, 420, 325, 50, 225, 85, 426,
1207 225, 328, 444, 259, 91, 276, -1, 432, 360, 50,
1208 51, 65, 428, 100, -1, -1, -1, -1, -1, -1,
1209 107, 108, -1, 110, -1, 66, -1, -1, -1, -1,
1210 -1, -1, -1, -1, 75, -1, -1, 91, -1, -1,
1211 -1, -1, -1, -1, 85, -1, -1, 9, -1, -1,
1212 91, -1, -1, 15, 16, -1, -1, -1, -1, 100,
1213 -1, -1, -1, -1, -1, -1, 28, -1, -1, 110,
1214 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
1215 16, 43, -1, -1, -1, -1, -1, -1, -1, -1,
1216 -1, 53, 54, 55, -1, -1, -1, -1, -1, -1,
1217 -1, -1, 64, -1, -1, -1, -1, 69, -1, 71,
1218 -1, -1, -1, -1, 50, 51, -1, 79, -1, -1,
1219 -1, -1, -1, -1, -1, -1, 88, -1, 90, -1,
1220 66, -1, -1, 95, -1, 97, 98, 99, -1, 75,
1221 -1, -1, -1, -1, -1, 15, 16, -1, -1, 85,
1222 -1, -1, -1, 23, -1, 91, -1, 27, 28, 29,
1223 -1, 31, 32, -1, 100, -1, -1, -1, -1, -1,
1224 -1, 41, -1, -1, 110, 45, -1, -1, -1, 49,
vlm8cc3f742006-10-18 18:40:14 +00001225 -1, -1, 52, 53, 54, 55, -1, -1, -1, -1,
1226 -1, 61, -1, 63, 64, -1, -1, -1, 68, 69,
1227 70, 71, 72, -1, -1, -1, -1, -1, -1, 79,
1228 -1, 81, 82, 83, 84, -1, -1, -1, 88, -1,
1229 90, 15, 16, -1, -1, 95, 96, 97, 98, 99,
1230 -1, -1, -1, 27, 28, 29, -1, 31, -1, -1,
1231 -1, -1, -1, -1, -1, -1, -1, 41, -1, -1,
1232 -1, 45, -1, -1, -1, 49, -1, -1, 52, 53,
1233 54, 55, -1, -1, -1, -1, -1, -1, -1, 63,
1234 64, -1, -1, -1, 68, 69, 70, 71, 72, -1,
1235 -1, -1, -1, -1, -1, 79, -1, 81, 82, -1,
vlmb9f1c0d2006-10-21 05:54:49 +00001236 -1, -1, -1, -1, 88, -1, 90, -1, -1, -1,
1237 -1, 95, 96, 97, 98, 99
vlm1aeaddd2006-07-13 08:24:20 +00001238};
1239
1240/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1241 symbol of state STATE-NUM. */
1242static const unsigned char yystos[] =
1243{
vlm64aaa9e2006-10-27 05:37:39 +00001244 0, 15, 16, 122, 123, 124, 239, 0, 124, 125,
1245 108, 126, 127, 9, 10, 109, 128, 129, 242, 39,
vlm43c8ac52006-09-17 04:52:50 +00001246 109, 129, 110, 16, 25, 46, 48, 57, 130, 131,
1247 132, 10, 62, 89, 89, 58, 89, 3, 132, 111,
vlm86851cd2006-10-13 12:37:39 +00001248 26, 47, 133, 134, 146, 147, 22, 112, 148, 149,
vlm64aaa9e2006-10-27 05:37:39 +00001249 239, 242, 44, 59, 138, 139, 112, 112, 113, 108,
1250 51, 140, 141, 143, 144, 145, 239, 242, 28, 43,
vlm86851cd2006-10-13 12:37:39 +00001251 53, 54, 55, 64, 69, 71, 79, 88, 90, 95,
vlm64aaa9e2006-10-27 05:37:39 +00001252 97, 98, 99, 135, 136, 151, 153, 183, 193, 239,
1253 242, 149, 109, 112, 143, 51, 113, 108, 16, 136,
vlm86851cd2006-10-13 12:37:39 +00001254 3, 15, 16, 27, 29, 31, 41, 45, 49, 52,
1255 63, 68, 70, 72, 81, 82, 96, 108, 152, 177,
vlm64aaa9e2006-10-27 05:37:39 +00001256 190, 191, 192, 193, 240, 115, 173, 234, 235, 236,
1257 239, 145, 109, 137, 33, 163, 173, 118, 86, 86,
1258 76, 56, 86, 154, 155, 190, 191, 239, 3, 108,
1259 108, 229, 118, 24, 80, 94, 237, 3, 174, 175,
1260 46, 57, 238, 127, 142, 108, 239, 242, 109, 113,
vlm86851cd2006-10-13 12:37:39 +00001261 114, 114, 108, 150, 6, 7, 8, 10, 11, 13,
vlm64aaa9e2006-10-27 05:37:39 +00001262 14, 50, 91, 150, 156, 157, 173, 186, 188, 232,
1263 242, 107, 109, 230, 231, 232, 242, 17, 18, 178,
1264 179, 180, 239, 10, 68, 108, 184, 186, 187, 239,
1265 242, 23, 32, 61, 83, 84, 152, 176, 85, 110,
vlmb9f1c0d2006-10-21 05:54:49 +00001266 196, 197, 198, 199, 17, 18, 165, 166, 3, 155,
vlm64aaa9e2006-10-27 05:37:39 +00001267 239, 242, 239, 242, 6, 8, 12, 22, 36, 37,
1268 50, 51, 66, 75, 85, 91, 100, 107, 108, 110,
1269 188, 200, 201, 202, 203, 204, 205, 206, 207, 208,
1270 209, 210, 211, 216, 217, 219, 221, 222, 223, 232,
1271 233, 239, 242, 109, 113, 109, 113, 110, 118, 116,
1272 185, 118, 114, 40, 108, 73, 108, 196, 108, 196,
1273 110, 200, 110, 16, 17, 38, 74, 173, 181, 182,
1274 227, 228, 173, 181, 182, 109, 113, 163, 173, 101,
1275 30, 173, 106, 119, 220, 7, 242, 34, 35, 239,
1276 200, 109, 113, 104, 105, 194, 102, 103, 195, 101,
1277 110, 220, 108, 157, 231, 187, 232, 242, 179, 5,
1278 189, 242, 184, 30, 107, 161, 162, 172, 173, 242,
1279 177, 35, 158, 159, 160, 172, 173, 242, 73, 158,
1280 73, 200, 111, 200, 184, 227, 118, 227, 227, 93,
1281 164, 227, 227, 100, 167, 168, 166, 205, 108, 119,
1282 106, 65, 208, 199, 108, 109, 111, 107, 203, 204,
1283 205, 200, 65, 208, 120, 224, 225, 111, 111, 5,
1284 242, 117, 109, 113, 173, 73, 109, 113, 227, 173,
1285 241, 242, 109, 241, 111, 111, 17, 18, 227, 87,
1286 218, 119, 107, 212, 213, 242, 113, 111, 118, 226,
1287 242, 109, 113, 187, 232, 162, 173, 160, 227, 234,
1288 234, 108, 189, 109, 113, 196, 201, 226, 118, 225,
1289 175, 175, 169, 213, 20, 74, 78, 214, 215, 242,
1290 4, 19, 115, 170, 171, 180, 170, 109, 171, 116
vlm1aeaddd2006-07-13 08:24:20 +00001291};
1292
1293#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
1294# define YYSIZE_T __SIZE_TYPE__
1295#endif
1296#if ! defined (YYSIZE_T) && defined (size_t)
1297# define YYSIZE_T size_t
1298#endif
1299#if ! defined (YYSIZE_T)
1300# if defined (__STDC__) || defined (__cplusplus)
1301# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1302# define YYSIZE_T size_t
1303# endif
1304#endif
1305#if ! defined (YYSIZE_T)
1306# define YYSIZE_T unsigned int
1307#endif
vlmfa67ddc2004-06-03 03:38:44 +00001308
1309#define yyerrok (yyerrstatus = 0)
1310#define yyclearin (yychar = YYEMPTY)
vlm0c6d3812006-03-21 03:40:38 +00001311#define YYEMPTY -2
vlmfa67ddc2004-06-03 03:38:44 +00001312#define YYEOF 0
vlm1aeaddd2006-07-13 08:24:20 +00001313
vlmfa67ddc2004-06-03 03:38:44 +00001314#define YYACCEPT goto yyacceptlab
vlm1aeaddd2006-07-13 08:24:20 +00001315#define YYABORT goto yyabortlab
vlm0c6d3812006-03-21 03:40:38 +00001316#define YYERROR goto yyerrlab1
vlm1aeaddd2006-07-13 08:24:20 +00001317
1318/* Like YYERROR except do call yyerror. This remains here temporarily
1319 to ease the transition to the new meaning of YYERROR, for GCC.
vlmfa67ddc2004-06-03 03:38:44 +00001320 Once GCC version 2 has supplanted version 1, this can go. */
vlm1aeaddd2006-07-13 08:24:20 +00001321
vlmfa67ddc2004-06-03 03:38:44 +00001322#define YYFAIL goto yyerrlab
vlm1aeaddd2006-07-13 08:24:20 +00001323
vlmfa67ddc2004-06-03 03:38:44 +00001324#define YYRECOVERING() (!!yyerrstatus)
vlm1aeaddd2006-07-13 08:24:20 +00001325
1326#define YYBACKUP(Token, Value) \
vlmfa67ddc2004-06-03 03:38:44 +00001327do \
1328 if (yychar == YYEMPTY && yylen == 1) \
vlm1aeaddd2006-07-13 08:24:20 +00001329 { \
1330 yychar = (Token); \
1331 yylval = (Value); \
vlm0c6d3812006-03-21 03:40:38 +00001332 yychar1 = YYTRANSLATE (yychar); \
vlmfa67ddc2004-06-03 03:38:44 +00001333 YYPOPSTACK; \
1334 goto yybackup; \
1335 } \
1336 else \
vlm1aeaddd2006-07-13 08:24:20 +00001337 { \
1338 yyerror ("syntax error: cannot back up"); \
1339 YYERROR; \
1340 } \
vlmfa67ddc2004-06-03 03:38:44 +00001341while (0)
1342
1343#define YYTERROR 1
1344#define YYERRCODE 256
1345
vlm1aeaddd2006-07-13 08:24:20 +00001346/* YYLLOC_DEFAULT -- Compute the default location (before the actions
1347 are run). */
1348
1349#ifndef YYLLOC_DEFAULT
1350# define YYLLOC_DEFAULT(Current, Rhs, N) \
1351 Current.first_line = Rhs[1].first_line; \
1352 Current.first_column = Rhs[1].first_column; \
1353 Current.last_line = Rhs[N].last_line; \
1354 Current.last_column = Rhs[N].last_column;
vlmfa67ddc2004-06-03 03:38:44 +00001355#endif
1356
vlm1aeaddd2006-07-13 08:24:20 +00001357/* YYLEX -- calling `yylex' with the right arguments. */
vlm7e436752006-03-18 06:53:11 +00001358
vlm1aeaddd2006-07-13 08:24:20 +00001359#define YYLEX yylex ()
vlm7e436752006-03-18 06:53:11 +00001360
vlm1aeaddd2006-07-13 08:24:20 +00001361/* Enable debugging if requested. */
1362#if YYDEBUG
vlm7e436752006-03-18 06:53:11 +00001363
vlm1aeaddd2006-07-13 08:24:20 +00001364# ifndef YYFPRINTF
1365# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1366# define YYFPRINTF fprintf
1367# endif
vlm7e436752006-03-18 06:53:11 +00001368
vlm1aeaddd2006-07-13 08:24:20 +00001369# define YYDPRINTF(Args) \
1370do { \
1371 if (yydebug) \
1372 YYFPRINTF Args; \
1373} while (0)
1374# define YYDSYMPRINT(Args) \
1375do { \
1376 if (yydebug) \
1377 yysymprint Args; \
1378} while (0)
1379/* Nonzero means print parse trace. It is left uninitialized so that
1380 multiple parsers can coexist. */
1381int yydebug;
1382#else /* !YYDEBUG */
1383# define YYDPRINTF(Args)
1384# define YYDSYMPRINT(Args)
1385#endif /* !YYDEBUG */
vlm7e436752006-03-18 06:53:11 +00001386
vlm1aeaddd2006-07-13 08:24:20 +00001387/* YYINITDEPTH -- initial size of the parser's stacks. */
vlmfa67ddc2004-06-03 03:38:44 +00001388#ifndef YYINITDEPTH
vlm1aeaddd2006-07-13 08:24:20 +00001389# define YYINITDEPTH 200
vlmfa67ddc2004-06-03 03:38:44 +00001390#endif
1391
vlm1aeaddd2006-07-13 08:24:20 +00001392/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1393 if the built-in stack extension method is used).
1394
1395 Do not make this value too large; the results are undefined if
1396 SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
1397 evaluated with infinite-precision integer arithmetic. */
vlmfa67ddc2004-06-03 03:38:44 +00001398
vlm0c6d3812006-03-21 03:40:38 +00001399#if YYMAXDEPTH == 0
vlm1aeaddd2006-07-13 08:24:20 +00001400# undef YYMAXDEPTH
vlm0c6d3812006-03-21 03:40:38 +00001401#endif
vlmfa67ddc2004-06-03 03:38:44 +00001402
1403#ifndef YYMAXDEPTH
vlm1aeaddd2006-07-13 08:24:20 +00001404# define YYMAXDEPTH 10000
vlmfa67ddc2004-06-03 03:38:44 +00001405#endif
vlm1aeaddd2006-07-13 08:24:20 +00001406
vlmfa67ddc2004-06-03 03:38:44 +00001407
vlmfa67ddc2004-06-03 03:38:44 +00001408
vlm1aeaddd2006-07-13 08:24:20 +00001409#if YYERROR_VERBOSE
vlmfa67ddc2004-06-03 03:38:44 +00001410
vlm1aeaddd2006-07-13 08:24:20 +00001411# ifndef yystrlen
1412# if defined (__GLIBC__) && defined (_STRING_H)
1413# define yystrlen strlen
1414# else
1415/* Return the length of YYSTR. */
1416static YYSIZE_T
1417# if defined (__STDC__) || defined (__cplusplus)
1418yystrlen (const char *yystr)
1419# else
1420yystrlen (yystr)
1421 const char *yystr;
1422# endif
vlm0c6d3812006-03-21 03:40:38 +00001423{
vlm1aeaddd2006-07-13 08:24:20 +00001424 register const char *yys = yystr;
vlm0c6d3812006-03-21 03:40:38 +00001425
vlm1aeaddd2006-07-13 08:24:20 +00001426 while (*yys++ != '\0')
1427 continue;
1428
1429 return yys - yystr - 1;
1430}
1431# endif
1432# endif
1433
1434# ifndef yystpcpy
1435# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1436# define yystpcpy stpcpy
1437# else
1438/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1439 YYDEST. */
1440static char *
1441# if defined (__STDC__) || defined (__cplusplus)
1442yystpcpy (char *yydest, const char *yysrc)
1443# else
1444yystpcpy (yydest, yysrc)
1445 char *yydest;
1446 const char *yysrc;
1447# endif
1448{
1449 register char *yyd = yydest;
1450 register const char *yys = yysrc;
1451
1452 while ((*yyd++ = *yys++) != '\0')
1453 continue;
1454
1455 return yyd - 1;
1456}
1457# endif
1458# endif
1459
1460#endif /* !YYERROR_VERBOSE */
1461
1462
1463
1464#if YYDEBUG
1465/*-----------------------------.
1466| Print this symbol on YYOUT. |
1467`-----------------------------*/
1468
1469static void
1470#if defined (__STDC__) || defined (__cplusplus)
1471yysymprint (FILE* yyout, int yytype, YYSTYPE yyvalue)
1472#else
1473yysymprint (yyout, yytype, yyvalue)
1474 FILE* yyout;
1475 int yytype;
1476 YYSTYPE yyvalue;
1477#endif
1478{
1479 /* Pacify ``unused variable'' warnings. */
1480 (void) yyvalue;
1481
1482 if (yytype < YYNTOKENS)
1483 {
1484 YYFPRINTF (yyout, "token %s (", yytname[yytype]);
1485# ifdef YYPRINT
1486 YYPRINT (yyout, yytoknum[yytype], yyvalue);
1487# endif
1488 }
1489 else
1490 YYFPRINTF (yyout, "nterm %s (", yytname[yytype]);
1491
1492 switch (yytype)
1493 {
1494 default:
1495 break;
1496 }
1497 YYFPRINTF (yyout, ")");
1498}
1499#endif /* YYDEBUG. */
1500
1501
1502/*-----------------------------------------------.
1503| Release the memory associated to this symbol. |
1504`-----------------------------------------------*/
1505
1506static void
1507#if defined (__STDC__) || defined (__cplusplus)
1508yydestruct (int yytype, YYSTYPE yyvalue)
1509#else
1510yydestruct (yytype, yyvalue)
1511 int yytype;
1512 YYSTYPE yyvalue;
1513#endif
1514{
1515 /* Pacify ``unused variable'' warnings. */
1516 (void) yyvalue;
1517
1518 switch (yytype)
1519 {
1520 default:
1521 break;
1522 }
vlm0c6d3812006-03-21 03:40:38 +00001523}
1524
vlm7e436752006-03-18 06:53:11 +00001525
1526
vlm0c6d3812006-03-21 03:40:38 +00001527/* The user can define YYPARSE_PARAM as the name of an argument to be passed
1528 into yyparse. The argument should have type void *.
1529 It should actually point to an object.
1530 Grammar actions can access the variable by casting it
1531 to the proper pointer type. */
vlm7e436752006-03-18 06:53:11 +00001532
1533#ifdef YYPARSE_PARAM
vlm1aeaddd2006-07-13 08:24:20 +00001534# if defined (__STDC__) || defined (__cplusplus)
1535# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
1536# define YYPARSE_PARAM_DECL
1537# else
1538# define YYPARSE_PARAM_ARG YYPARSE_PARAM
1539# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1540# endif
1541#else /* !YYPARSE_PARAM */
1542# define YYPARSE_PARAM_ARG
1543# define YYPARSE_PARAM_DECL
1544#endif /* !YYPARSE_PARAM */
vlm0c6d3812006-03-21 03:40:38 +00001545
1546/* Prevent warning if -Wstrict-prototypes. */
1547#ifdef __GNUC__
vlm1aeaddd2006-07-13 08:24:20 +00001548# ifdef YYPARSE_PARAM
vlm0c6d3812006-03-21 03:40:38 +00001549int yyparse (void *);
vlm1aeaddd2006-07-13 08:24:20 +00001550# else
vlmfa67ddc2004-06-03 03:38:44 +00001551int yyparse (void);
vlm1aeaddd2006-07-13 08:24:20 +00001552# endif
vlm7e436752006-03-18 06:53:11 +00001553#endif
vlm1aeaddd2006-07-13 08:24:20 +00001554
1555
1556/* The lookahead symbol. */
1557int yychar;
1558
1559/* The semantic value of the lookahead symbol. */
1560YYSTYPE yylval;
1561
1562/* Number of parse errors so far. */
1563int yynerrs;
1564
vlm7e436752006-03-18 06:53:11 +00001565
vlm7e436752006-03-18 06:53:11 +00001566int
vlm1aeaddd2006-07-13 08:24:20 +00001567yyparse (YYPARSE_PARAM_ARG)
vlm0c6d3812006-03-21 03:40:38 +00001568 YYPARSE_PARAM_DECL
vlm7e436752006-03-18 06:53:11 +00001569{
vlm1aeaddd2006-07-13 08:24:20 +00001570
vlm0c6d3812006-03-21 03:40:38 +00001571 register int yystate;
1572 register int yyn;
vlm1aeaddd2006-07-13 08:24:20 +00001573 int yyresult;
1574 /* Number of tokens to shift before error messages enabled. */
1575 int yyerrstatus;
1576 /* Lookahead token as an internal (translated) token number. */
1577 int yychar1 = 0;
1578
1579 /* Three stacks and their tools:
1580 `yyss': related to states,
1581 `yyvs': related to semantic values,
1582 `yyls': related to locations.
1583
1584 Refer to the stacks thru separate pointers, to allow yyoverflow
1585 to reallocate them elsewhere. */
1586
1587 /* The state stack. */
1588 short yyssa[YYINITDEPTH];
1589 short *yyss = yyssa;
vlm0c6d3812006-03-21 03:40:38 +00001590 register short *yyssp;
vlm1aeaddd2006-07-13 08:24:20 +00001591
1592 /* The semantic value stack. */
1593 YYSTYPE yyvsa[YYINITDEPTH];
1594 YYSTYPE *yyvs = yyvsa;
vlm0c6d3812006-03-21 03:40:38 +00001595 register YYSTYPE *yyvsp;
vlm7e436752006-03-18 06:53:11 +00001596
vlm7e436752006-03-18 06:53:11 +00001597
vlm7e436752006-03-18 06:53:11 +00001598
vlmfa67ddc2004-06-03 03:38:44 +00001599#define YYPOPSTACK (yyvsp--, yyssp--)
vlmfa67ddc2004-06-03 03:38:44 +00001600
vlm1aeaddd2006-07-13 08:24:20 +00001601 YYSIZE_T yystacksize = YYINITDEPTH;
vlmfa67ddc2004-06-03 03:38:44 +00001602
vlm1aeaddd2006-07-13 08:24:20 +00001603 /* The variables used to return semantic value and location from the
1604 action routines. */
1605 YYSTYPE yyval;
vlmfa67ddc2004-06-03 03:38:44 +00001606
vlmfa67ddc2004-06-03 03:38:44 +00001607
vlm1aeaddd2006-07-13 08:24:20 +00001608 /* When reducing, the number of symbols on the RHS of the reduced
1609 rule. */
vlmfa67ddc2004-06-03 03:38:44 +00001610 int yylen;
1611
vlm1aeaddd2006-07-13 08:24:20 +00001612 YYDPRINTF ((stderr, "Starting parse\n"));
vlmfa67ddc2004-06-03 03:38:44 +00001613
1614 yystate = 0;
1615 yyerrstatus = 0;
1616 yynerrs = 0;
1617 yychar = YYEMPTY; /* Cause a token to be read. */
1618
1619 /* Initialize stack pointers.
1620 Waste one element of value and location stack
1621 so that they stay on the same level as the state stack.
1622 The wasted elements are never initialized. */
1623
vlm1aeaddd2006-07-13 08:24:20 +00001624 yyssp = yyss;
vlmfa67ddc2004-06-03 03:38:44 +00001625 yyvsp = yyvs;
vlmfa67ddc2004-06-03 03:38:44 +00001626
vlm1aeaddd2006-07-13 08:24:20 +00001627 goto yysetstate;
vlmfa67ddc2004-06-03 03:38:44 +00001628
vlm1aeaddd2006-07-13 08:24:20 +00001629/*------------------------------------------------------------.
1630| yynewstate -- Push a new state, which is found in yystate. |
1631`------------------------------------------------------------*/
1632 yynewstate:
1633 /* In all cases, when you get here, the value and location stacks
1634 have just been pushed. so pushing a state here evens the stacks.
1635 */
1636 yyssp++;
1637
1638 yysetstate:
1639 *yyssp = yystate;
vlmfa67ddc2004-06-03 03:38:44 +00001640
vlm0c6d3812006-03-21 03:40:38 +00001641 if (yyssp >= yyss + yystacksize - 1)
vlmfa67ddc2004-06-03 03:38:44 +00001642 {
vlmfa67ddc2004-06-03 03:38:44 +00001643 /* Get the current used size of the three stacks, in elements. */
vlm1aeaddd2006-07-13 08:24:20 +00001644 YYSIZE_T yysize = yyssp - yyss + 1;
vlmfa67ddc2004-06-03 03:38:44 +00001645
1646#ifdef yyoverflow
vlm1aeaddd2006-07-13 08:24:20 +00001647 {
1648 /* Give user a chance to reallocate the stack. Use copies of
1649 these so that the &'s don't force the real ones into
1650 memory. */
1651 YYSTYPE *yyvs1 = yyvs;
1652 short *yyss1 = yyss;
vlmfa67ddc2004-06-03 03:38:44 +00001653
vlm1aeaddd2006-07-13 08:24:20 +00001654
1655 /* Each stack pointer address is followed by the size of the
1656 data in use in that stack, in bytes. This used to be a
1657 conditional around just the two extra args, but that might
1658 be undefined if yyoverflow is a macro. */
1659 yyoverflow ("parser stack overflow",
1660 &yyss1, yysize * sizeof (*yyssp),
1661 &yyvs1, yysize * sizeof (*yyvsp),
1662
1663 &yystacksize);
1664
1665 yyss = yyss1;
1666 yyvs = yyvs1;
1667 }
vlmfa67ddc2004-06-03 03:38:44 +00001668#else /* no yyoverflow */
vlm1aeaddd2006-07-13 08:24:20 +00001669# ifndef YYSTACK_RELOCATE
1670 goto yyoverflowlab;
1671# else
vlmfa67ddc2004-06-03 03:38:44 +00001672 /* Extend the stack our own way. */
vlm0c6d3812006-03-21 03:40:38 +00001673 if (yystacksize >= YYMAXDEPTH)
vlm1aeaddd2006-07-13 08:24:20 +00001674 goto yyoverflowlab;
vlmfa67ddc2004-06-03 03:38:44 +00001675 yystacksize *= 2;
vlm0c6d3812006-03-21 03:40:38 +00001676 if (yystacksize > YYMAXDEPTH)
vlmfa67ddc2004-06-03 03:38:44 +00001677 yystacksize = YYMAXDEPTH;
vlm1aeaddd2006-07-13 08:24:20 +00001678
1679 {
1680 short *yyss1 = yyss;
1681 union yyalloc *yyptr =
1682 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1683 if (! yyptr)
1684 goto yyoverflowlab;
1685 YYSTACK_RELOCATE (yyss);
1686 YYSTACK_RELOCATE (yyvs);
1687
1688# undef YYSTACK_RELOCATE
1689 if (yyss1 != yyssa)
1690 YYSTACK_FREE (yyss1);
1691 }
1692# endif
vlmfa67ddc2004-06-03 03:38:44 +00001693#endif /* no yyoverflow */
1694
vlm1aeaddd2006-07-13 08:24:20 +00001695 yyssp = yyss + yysize - 1;
1696 yyvsp = yyvs + yysize - 1;
vlmfa67ddc2004-06-03 03:38:44 +00001697
vlm1aeaddd2006-07-13 08:24:20 +00001698
1699 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1700 (unsigned long int) yystacksize));
vlmfa67ddc2004-06-03 03:38:44 +00001701
vlm0c6d3812006-03-21 03:40:38 +00001702 if (yyssp >= yyss + yystacksize - 1)
vlmfa67ddc2004-06-03 03:38:44 +00001703 YYABORT;
1704 }
1705
vlm1aeaddd2006-07-13 08:24:20 +00001706 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
vlmfa67ddc2004-06-03 03:38:44 +00001707
1708 goto yybackup;
vlm1aeaddd2006-07-13 08:24:20 +00001709
1710/*-----------.
1711| yybackup. |
1712`-----------*/
1713yybackup:
vlmfa67ddc2004-06-03 03:38:44 +00001714
1715/* Do appropriate processing given the current state. */
vlm0c6d3812006-03-21 03:40:38 +00001716/* Read a lookahead token if we need one and don't already have one. */
vlmfa67ddc2004-06-03 03:38:44 +00001717/* yyresume: */
1718
vlm0c6d3812006-03-21 03:40:38 +00001719 /* First try to decide what to do without reference to lookahead token. */
vlmfa67ddc2004-06-03 03:38:44 +00001720
1721 yyn = yypact[yystate];
vlm1aeaddd2006-07-13 08:24:20 +00001722 if (yyn == YYPACT_NINF)
vlmfa67ddc2004-06-03 03:38:44 +00001723 goto yydefault;
1724
vlm0c6d3812006-03-21 03:40:38 +00001725 /* Not known => get a lookahead token if don't already have one. */
vlmfa67ddc2004-06-03 03:38:44 +00001726
vlm0c6d3812006-03-21 03:40:38 +00001727 /* yychar is either YYEMPTY or YYEOF
1728 or a valid token in external form. */
1729
vlmfa67ddc2004-06-03 03:38:44 +00001730 if (yychar == YYEMPTY)
1731 {
vlm1aeaddd2006-07-13 08:24:20 +00001732 YYDPRINTF ((stderr, "Reading a token: "));
vlmfa67ddc2004-06-03 03:38:44 +00001733 yychar = YYLEX;
1734 }
1735
vlm1aeaddd2006-07-13 08:24:20 +00001736 /* Convert token to internal form (in yychar1) for indexing tables with. */
vlm0c6d3812006-03-21 03:40:38 +00001737
vlm1aeaddd2006-07-13 08:24:20 +00001738 if (yychar <= 0) /* This means end of input. */
vlmfa67ddc2004-06-03 03:38:44 +00001739 {
vlm0c6d3812006-03-21 03:40:38 +00001740 yychar1 = 0;
vlm1aeaddd2006-07-13 08:24:20 +00001741 yychar = YYEOF; /* Don't call YYLEX any more. */
vlm0c6d3812006-03-21 03:40:38 +00001742
vlm1aeaddd2006-07-13 08:24:20 +00001743 YYDPRINTF ((stderr, "Now at end of input.\n"));
vlmfa67ddc2004-06-03 03:38:44 +00001744 }
1745 else
1746 {
vlm1aeaddd2006-07-13 08:24:20 +00001747 yychar1 = YYTRANSLATE (yychar);
vlm0c6d3812006-03-21 03:40:38 +00001748
vlm1aeaddd2006-07-13 08:24:20 +00001749 /* We have to keep this `#if YYDEBUG', since we use variables
1750 which are defined only if `YYDEBUG' is set. */
1751 YYDPRINTF ((stderr, "Next token is "));
1752 YYDSYMPRINT ((stderr, yychar1, yylval));
1753 YYDPRINTF ((stderr, "\n"));
vlmfa67ddc2004-06-03 03:38:44 +00001754 }
1755
vlm1aeaddd2006-07-13 08:24:20 +00001756 /* If the proper action on seeing token YYCHAR1 is to reduce or to
1757 detect an error, take that action. */
vlm0c6d3812006-03-21 03:40:38 +00001758 yyn += yychar1;
vlm1aeaddd2006-07-13 08:24:20 +00001759 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yychar1)
vlmfa67ddc2004-06-03 03:38:44 +00001760 goto yydefault;
vlmfa67ddc2004-06-03 03:38:44 +00001761 yyn = yytable[yyn];
vlm1aeaddd2006-07-13 08:24:20 +00001762 if (yyn <= 0)
vlmfa67ddc2004-06-03 03:38:44 +00001763 {
vlm1aeaddd2006-07-13 08:24:20 +00001764 if (yyn == 0 || yyn == YYTABLE_NINF)
vlmfa67ddc2004-06-03 03:38:44 +00001765 goto yyerrlab;
1766 yyn = -yyn;
1767 goto yyreduce;
1768 }
vlmfa67ddc2004-06-03 03:38:44 +00001769
1770 if (yyn == YYFINAL)
1771 YYACCEPT;
1772
vlm0c6d3812006-03-21 03:40:38 +00001773 /* Shift the lookahead token. */
vlm1aeaddd2006-07-13 08:24:20 +00001774 YYDPRINTF ((stderr, "Shifting token %d (%s), ",
1775 yychar, yytname[yychar1]));
vlmfa67ddc2004-06-03 03:38:44 +00001776
1777 /* Discard the token being shifted unless it is eof. */
1778 if (yychar != YYEOF)
1779 yychar = YYEMPTY;
1780
1781 *++yyvsp = yylval;
vlmfa67ddc2004-06-03 03:38:44 +00001782
vlm1aeaddd2006-07-13 08:24:20 +00001783
1784 /* Count tokens shifted since error; after three, turn off error
1785 status. */
1786 if (yyerrstatus)
1787 yyerrstatus--;
vlmfa67ddc2004-06-03 03:38:44 +00001788
1789 yystate = yyn;
1790 goto yynewstate;
1791
vlm0c6d3812006-03-21 03:40:38 +00001792
vlm1aeaddd2006-07-13 08:24:20 +00001793/*-----------------------------------------------------------.
1794| yydefault -- do the default action for the current state. |
1795`-----------------------------------------------------------*/
1796yydefault:
vlmfa67ddc2004-06-03 03:38:44 +00001797 yyn = yydefact[yystate];
1798 if (yyn == 0)
1799 goto yyerrlab;
vlm1aeaddd2006-07-13 08:24:20 +00001800 goto yyreduce;
vlmfa67ddc2004-06-03 03:38:44 +00001801
vlm1aeaddd2006-07-13 08:24:20 +00001802
1803/*-----------------------------.
1804| yyreduce -- Do a reduction. |
1805`-----------------------------*/
vlmfa67ddc2004-06-03 03:38:44 +00001806yyreduce:
vlm1aeaddd2006-07-13 08:24:20 +00001807 /* yyn is the number of a rule to reduce with. */
vlmfa67ddc2004-06-03 03:38:44 +00001808 yylen = yyr2[yyn];
vlmfa67ddc2004-06-03 03:38:44 +00001809
vlm1aeaddd2006-07-13 08:24:20 +00001810 /* If YYLEN is nonzero, implement the default value of the action:
1811 `$$ = $1'.
1812
1813 Otherwise, the following line sets YYVAL to garbage.
1814 This behavior is undocumented and Bison
1815 users should not rely upon it. Assigning to YYVAL
1816 unconditionally makes the parser a bit smaller, and it avoids a
1817 GCC warning that YYVAL may be used uninitialized. */
1818 yyval = yyvsp[1-yylen];
1819
1820
1821
1822#if YYDEBUG
1823 /* We have to keep this `#if YYDEBUG', since we use variables which
1824 are defined only if `YYDEBUG' is set. */
vlm0c6d3812006-03-21 03:40:38 +00001825 if (yydebug)
vlmfa67ddc2004-06-03 03:38:44 +00001826 {
vlm1aeaddd2006-07-13 08:24:20 +00001827 int yyi;
vlm0c6d3812006-03-21 03:40:38 +00001828
vlm1aeaddd2006-07-13 08:24:20 +00001829 YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
1830 yyn - 1, yyrline[yyn]);
vlm0c6d3812006-03-21 03:40:38 +00001831
1832 /* Print the symbols being reduced, and their result. */
vlm1aeaddd2006-07-13 08:24:20 +00001833 for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++)
1834 YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
1835 YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
vlm0c6d3812006-03-21 03:40:38 +00001836 }
1837#endif
vlm1aeaddd2006-07-13 08:24:20 +00001838 switch (yyn)
1839 {
1840 case 2:
vlm64aaa9e2006-10-27 05:37:39 +00001841#line 356 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001842 {
vlm0c6d3812006-03-21 03:40:38 +00001843 *(void **)param = yyvsp[0].a_grammar;
vlm1aeaddd2006-07-13 08:24:20 +00001844 }
1845 break;
1846
1847 case 3:
vlm64aaa9e2006-10-27 05:37:39 +00001848#line 362 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001849 {
vlm0c6d3812006-03-21 03:40:38 +00001850 yyval.a_grammar = asn1p_new();
1851 checkmem(yyval.a_grammar);
1852 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm1aeaddd2006-07-13 08:24:20 +00001853 }
1854 break;
1855
1856 case 4:
vlm64aaa9e2006-10-27 05:37:39 +00001857#line 367 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001858 {
vlm0c6d3812006-03-21 03:40:38 +00001859 yyval.a_grammar = yyvsp[-1].a_grammar;
1860 TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
vlm1aeaddd2006-07-13 08:24:20 +00001861 }
1862 break;
1863
1864 case 5:
vlm64aaa9e2006-10-27 05:37:39 +00001865#line 384 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00001866 { currentModule = asn1p_module_new(); }
1867 break;
1868
1869 case 6:
vlm64aaa9e2006-10-27 05:37:39 +00001870#line 389 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001871 {
vlm7e436752006-03-18 06:53:11 +00001872
vlm43c8ac52006-09-17 04:52:50 +00001873 yyval.a_module = currentModule;
1874
vlm0c6d3812006-03-21 03:40:38 +00001875 if(yyvsp[-1].a_module) {
vlm43c8ac52006-09-17 04:52:50 +00001876 asn1p_module_t tmp = *(yyval.a_module);
1877 *(yyval.a_module) = *(yyvsp[-1].a_module);
1878 *(yyvsp[-1].a_module) = tmp;
1879 asn1p_module_free(yyvsp[-1].a_module);
vlmfa67ddc2004-06-03 03:38:44 +00001880 } else {
1881 /* There's a chance that a module is just plain empty */
vlmfa67ddc2004-06-03 03:38:44 +00001882 }
vlmfa67ddc2004-06-03 03:38:44 +00001883
vlm43c8ac52006-09-17 04:52:50 +00001884 yyval.a_module->ModuleName = yyvsp[-8].tv_str;
vlm0c6d3812006-03-21 03:40:38 +00001885 yyval.a_module->module_oid = yyvsp[-6].a_oid;
1886 yyval.a_module->module_flags = yyvsp[-4].a_module_flags;
vlm1aeaddd2006-07-13 08:24:20 +00001887 }
1888 break;
1889
vlm43c8ac52006-09-17 04:52:50 +00001890 case 7:
vlm64aaa9e2006-10-27 05:37:39 +00001891#line 413 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001892 { yyval.a_oid = 0; }
1893 break;
1894
vlm43c8ac52006-09-17 04:52:50 +00001895 case 8:
vlm64aaa9e2006-10-27 05:37:39 +00001896#line 414 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001897 { yyval.a_oid = yyvsp[0].a_oid; }
1898 break;
1899
vlm43c8ac52006-09-17 04:52:50 +00001900 case 9:
vlm64aaa9e2006-10-27 05:37:39 +00001901#line 418 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001902 {
vlm0c6d3812006-03-21 03:40:38 +00001903 yyval.a_oid = yyvsp[-1].a_oid;
vlm1aeaddd2006-07-13 08:24:20 +00001904 }
1905 break;
1906
vlm43c8ac52006-09-17 04:52:50 +00001907 case 10:
vlm64aaa9e2006-10-27 05:37:39 +00001908#line 421 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001909 {
vlm0c6d3812006-03-21 03:40:38 +00001910 yyval.a_oid = 0;
vlm1aeaddd2006-07-13 08:24:20 +00001911 }
1912 break;
1913
vlm43c8ac52006-09-17 04:52:50 +00001914 case 11:
vlm64aaa9e2006-10-27 05:37:39 +00001915#line 427 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001916 {
vlm0c6d3812006-03-21 03:40:38 +00001917 yyval.a_oid = asn1p_oid_new();
1918 asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
1919 if(yyvsp[0].a_oid_arc.name)
1920 free(yyvsp[0].a_oid_arc.name);
vlm1aeaddd2006-07-13 08:24:20 +00001921 }
1922 break;
1923
vlm43c8ac52006-09-17 04:52:50 +00001924 case 12:
vlm64aaa9e2006-10-27 05:37:39 +00001925#line 433 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001926 {
vlm0c6d3812006-03-21 03:40:38 +00001927 yyval.a_oid = yyvsp[-1].a_oid;
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 13:
vlm64aaa9e2006-10-27 05:37:39 +00001935#line 442 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001936 { /* iso */
vlm0c6d3812006-03-21 03:40:38 +00001937 yyval.a_oid_arc.name = yyvsp[0].tv_str;
1938 yyval.a_oid_arc.number = -1;
vlm1aeaddd2006-07-13 08:24:20 +00001939 }
1940 break;
1941
vlm43c8ac52006-09-17 04:52:50 +00001942 case 14:
vlm64aaa9e2006-10-27 05:37:39 +00001943#line 446 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001944 { /* iso(1) */
vlm0c6d3812006-03-21 03:40:38 +00001945 yyval.a_oid_arc.name = yyvsp[-3].tv_str;
1946 yyval.a_oid_arc.number = yyvsp[-1].a_int;
vlm1aeaddd2006-07-13 08:24:20 +00001947 }
1948 break;
1949
vlm43c8ac52006-09-17 04:52:50 +00001950 case 15:
vlm64aaa9e2006-10-27 05:37:39 +00001951#line 450 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001952 { /* 1 */
vlm0c6d3812006-03-21 03:40:38 +00001953 yyval.a_oid_arc.name = 0;
1954 yyval.a_oid_arc.number = yyvsp[0].a_int;
vlm1aeaddd2006-07-13 08:24:20 +00001955 }
1956 break;
1957
vlm43c8ac52006-09-17 04:52:50 +00001958 case 16:
vlm64aaa9e2006-10-27 05:37:39 +00001959#line 460 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001960 { yyval.a_module_flags = MSF_NOFLAGS; }
1961 break;
1962
vlm1aeaddd2006-07-13 08:24:20 +00001963 case 17:
vlm64aaa9e2006-10-27 05:37:39 +00001964#line 461 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001965 {
vlm0c6d3812006-03-21 03:40:38 +00001966 yyval.a_module_flags = yyvsp[0].a_module_flags;
vlm1aeaddd2006-07-13 08:24:20 +00001967 }
1968 break;
1969
1970 case 18:
vlm64aaa9e2006-10-27 05:37:39 +00001971#line 470 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00001972 {
1973 yyval.a_module_flags = yyvsp[0].a_module_flags;
1974 }
1975 break;
1976
1977 case 19:
vlm64aaa9e2006-10-27 05:37:39 +00001978#line 473 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001979 {
vlm0c6d3812006-03-21 03:40:38 +00001980 yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
vlm1aeaddd2006-07-13 08:24:20 +00001981 }
1982 break;
1983
vlm43c8ac52006-09-17 04:52:50 +00001984 case 20:
vlm64aaa9e2006-10-27 05:37:39 +00001985#line 482 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001986 {
vlm0c6d3812006-03-21 03:40:38 +00001987 yyval.a_module_flags = MSF_EXPLICIT_TAGS;
vlm1aeaddd2006-07-13 08:24:20 +00001988 }
1989 break;
1990
vlm43c8ac52006-09-17 04:52:50 +00001991 case 21:
vlm64aaa9e2006-10-27 05:37:39 +00001992#line 485 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00001993 {
vlm0c6d3812006-03-21 03:40:38 +00001994 yyval.a_module_flags = MSF_IMPLICIT_TAGS;
vlm1aeaddd2006-07-13 08:24:20 +00001995 }
1996 break;
1997
vlm43c8ac52006-09-17 04:52:50 +00001998 case 22:
vlm64aaa9e2006-10-27 05:37:39 +00001999#line 488 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002000 {
vlm0c6d3812006-03-21 03:40:38 +00002001 yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
vlm1aeaddd2006-07-13 08:24:20 +00002002 }
2003 break;
2004
vlm43c8ac52006-09-17 04:52:50 +00002005 case 23:
vlm64aaa9e2006-10-27 05:37:39 +00002006#line 491 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002007 {
vlm0c6d3812006-03-21 03:40:38 +00002008 yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
vlm1aeaddd2006-07-13 08:24:20 +00002009 }
2010 break;
2011
vlm43c8ac52006-09-17 04:52:50 +00002012 case 24:
vlm64aaa9e2006-10-27 05:37:39 +00002013#line 495 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002014 {
vlm9283dbe2004-08-18 04:59:12 +00002015 /* X.680Amd1 specifies TAG and XER */
vlm0c6d3812006-03-21 03:40:38 +00002016 if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
2017 yyval.a_module_flags = MSF_TAG_INSTRUCTIONS;
2018 } else if(strcmp(yyvsp[-1].tv_str, "XER") == 0) {
2019 yyval.a_module_flags = MSF_XER_INSTRUCTIONS;
vlm9283dbe2004-08-18 04:59:12 +00002020 } else {
2021 fprintf(stderr,
2022 "WARNING: %s INSTRUCTIONS at line %d: "
2023 "Unrecognized encoding reference\n",
vlm0c6d3812006-03-21 03:40:38 +00002024 yyvsp[-1].tv_str, yylineno);
2025 yyval.a_module_flags = MSF_unk_INSTRUCTIONS;
vlm9283dbe2004-08-18 04:59:12 +00002026 }
vlm0c6d3812006-03-21 03:40:38 +00002027 free(yyvsp[-1].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00002028 }
2029 break;
2030
vlm43c8ac52006-09-17 04:52:50 +00002031 case 25:
vlm64aaa9e2006-10-27 05:37:39 +00002032#line 516 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002033 { yyval.a_module = 0; }
2034 break;
2035
vlm43c8ac52006-09-17 04:52:50 +00002036 case 26:
vlm64aaa9e2006-10-27 05:37:39 +00002037#line 517 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002038 {
vlm0c6d3812006-03-21 03:40:38 +00002039 yyval.a_module = yyvsp[0].a_module;
vlm1aeaddd2006-07-13 08:24:20 +00002040 }
2041 break;
2042
vlm43c8ac52006-09-17 04:52:50 +00002043 case 27:
vlm64aaa9e2006-10-27 05:37:39 +00002044#line 526 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002045 {
vlmd3420d32006-09-14 10:35:20 +00002046 yyval.a_module = asn1p_module_new();
2047 AL_IMPORT(yyval.a_module, exports, yyvsp[-2].a_module, xp_next);
2048 AL_IMPORT(yyval.a_module, imports, yyvsp[-1].a_module, xp_next);
2049 AL_IMPORT(yyval.a_module, members, yyvsp[0].a_module, next);
vlm1aeaddd2006-07-13 08:24:20 +00002050 }
2051 break;
2052
vlm43c8ac52006-09-17 04:52:50 +00002053 case 28:
vlm64aaa9e2006-10-27 05:37:39 +00002054#line 535 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002055 {
vlm0c6d3812006-03-21 03:40:38 +00002056 yyval.a_module = yyvsp[0].a_module;
vlm1aeaddd2006-07-13 08:24:20 +00002057 }
2058 break;
2059
vlm43c8ac52006-09-17 04:52:50 +00002060 case 29:
vlm64aaa9e2006-10-27 05:37:39 +00002061#line 538 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002062 {
2063 if(yyvsp[-1].a_module) {
2064 yyval.a_module = yyvsp[-1].a_module;
2065 } else {
2066 yyval.a_module = yyvsp[0].a_module;
2067 break;
2068 }
2069 AL_IMPORT(yyval.a_module, members, yyvsp[0].a_module, next);
2070 }
2071 break;
2072
vlm1aeaddd2006-07-13 08:24:20 +00002073 case 30:
vlm64aaa9e2006-10-27 05:37:39 +00002074#line 554 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002075 {
vlm0c6d3812006-03-21 03:40:38 +00002076 yyval.a_module = asn1p_module_new();
2077 checkmem(yyval.a_module);
2078 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
2079 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
2080 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002081 }
2082 break;
2083
2084 case 31:
vlm64aaa9e2006-10-27 05:37:39 +00002085#line 561 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002086 {
vlm0c6d3812006-03-21 03:40:38 +00002087 yyval.a_module = asn1p_module_new();
2088 checkmem(yyval.a_module);
2089 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
2090 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
2091 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002092 }
2093 break;
2094
2095 case 32:
vlm64aaa9e2006-10-27 05:37:39 +00002096#line 574 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002097 {
2098 yyval.a_module = asn1p_module_new();
2099 checkmem(yyval.a_module);
2100 assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
2101 assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
2102 TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
2103 }
vlm1aeaddd2006-07-13 08:24:20 +00002104 break;
2105
vlmd3420d32006-09-14 10:35:20 +00002106 case 33:
vlm64aaa9e2006-10-27 05:37:39 +00002107#line 582 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002108 { asn1p_lexer_hack_push_encoding_control(); }
2109 break;
2110
2111 case 34:
vlm64aaa9e2006-10-27 05:37:39 +00002112#line 583 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002113 {
vlm9283dbe2004-08-18 04:59:12 +00002114 fprintf(stderr,
2115 "WARNING: ENCODING-CONTROL %s "
2116 "specification at line %d ignored\n",
vlm0c6d3812006-03-21 03:40:38 +00002117 yyvsp[-1].tv_str, yylineno);
2118 free(yyvsp[-1].tv_str);
2119 yyval.a_module = 0;
vlm1aeaddd2006-07-13 08:24:20 +00002120 }
2121 break;
2122
vlm43c8ac52006-09-17 04:52:50 +00002123 case 35:
vlm64aaa9e2006-10-27 05:37:39 +00002124#line 595 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002125 {
vlmfa67ddc2004-06-03 03:38:44 +00002126 return yyerror(
vlm1ac75e72005-11-26 11:21:55 +00002127 "Attempt to redefine a standard basic string type, "
2128 "please comment out or remove this type redefinition.");
vlm1aeaddd2006-07-13 08:24:20 +00002129 }
2130 break;
2131
vlm43c8ac52006-09-17 04:52:50 +00002132 case 36:
vlm64aaa9e2006-10-27 05:37:39 +00002133#line 608 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002134 { yyval.a_module = 0; }
2135 break;
2136
vlm43c8ac52006-09-17 04:52:50 +00002137 case 38:
vlm64aaa9e2006-10-27 05:37:39 +00002138#line 612 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002139 {
vlm931aeed2005-08-12 10:09:10 +00002140 if(!saved_aid && 0)
2141 return yyerror("Unterminated IMPORTS FROM, "
2142 "expected semicolon ';'");
2143 saved_aid = 0;
vlm0c6d3812006-03-21 03:40:38 +00002144 yyval.a_module = yyvsp[-1].a_module;
vlm1aeaddd2006-07-13 08:24:20 +00002145 }
2146 break;
2147
vlm43c8ac52006-09-17 04:52:50 +00002148 case 39:
vlm64aaa9e2006-10-27 05:37:39 +00002149#line 622 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002150 {
vlmfa67ddc2004-06-03 03:38:44 +00002151 return yyerror("Empty IMPORTS list");
vlm1aeaddd2006-07-13 08:24:20 +00002152 }
2153 break;
2154
vlm43c8ac52006-09-17 04:52:50 +00002155 case 40:
vlm64aaa9e2006-10-27 05:37:39 +00002156#line 628 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002157 { yyval.a_module = asn1p_module_new(); }
2158 break;
2159
2160 case 42:
vlm64aaa9e2006-10-27 05:37:39 +00002161#line 632 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002162 {
vlm0c6d3812006-03-21 03:40:38 +00002163 yyval.a_module = asn1p_module_new();
2164 checkmem(yyval.a_module);
2165 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm1aeaddd2006-07-13 08:24:20 +00002166 }
2167 break;
2168
vlm86851cd2006-10-13 12:37:39 +00002169 case 43:
vlm64aaa9e2006-10-27 05:37:39 +00002170#line 637 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002171 {
vlm0c6d3812006-03-21 03:40:38 +00002172 yyval.a_module = yyvsp[-1].a_module;
2173 TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
vlm1aeaddd2006-07-13 08:24:20 +00002174 }
2175 break;
2176
vlm86851cd2006-10-13 12:37:39 +00002177 case 44:
vlm64aaa9e2006-10-27 05:37:39 +00002178#line 644 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002179 { memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); }
2180 break;
2181
vlm86851cd2006-10-13 12:37:39 +00002182 case 45:
vlm64aaa9e2006-10-27 05:37:39 +00002183#line 645 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002184 { yyval.a_aid.oid = yyvsp[0].a_oid; }
2185 break;
2186
vlm86851cd2006-10-13 12:37:39 +00002187 case 46:
vlm64aaa9e2006-10-27 05:37:39 +00002188#line 649 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002189 {
vlm0c6d3812006-03-21 03:40:38 +00002190 yyval.a_xports = yyvsp[-3].a_xports;
2191 yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
2192 yyval.a_xports->identifier = yyvsp[0].a_aid;
vlm931aeed2005-08-12 10:09:10 +00002193 /* This stupid thing is used for look-back hack. */
vlm0c6d3812006-03-21 03:40:38 +00002194 saved_aid = yyval.a_xports->identifier.oid ? 0 : &(yyval.a_xports->identifier);
2195 checkmem(yyval.a_xports);
vlm1aeaddd2006-07-13 08:24:20 +00002196 }
2197 break;
2198
vlm86851cd2006-10-13 12:37:39 +00002199 case 47:
vlm64aaa9e2006-10-27 05:37:39 +00002200#line 660 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002201 {
vlm0c6d3812006-03-21 03:40:38 +00002202 yyval.a_xports = asn1p_xports_new();
2203 checkmem(yyval.a_xports);
2204 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002205 }
2206 break;
2207
vlm86851cd2006-10-13 12:37:39 +00002208 case 48:
vlm64aaa9e2006-10-27 05:37:39 +00002209#line 665 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002210 {
vlm0c6d3812006-03-21 03:40:38 +00002211 yyval.a_xports = yyvsp[-2].a_xports;
2212 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002213 }
2214 break;
2215
vlm43c8ac52006-09-17 04:52:50 +00002216 case 49:
vlm64aaa9e2006-10-27 05:37:39 +00002217#line 672 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002218 {
vlm43c8ac52006-09-17 04:52:50 +00002219 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002220 checkmem(yyval.a_expr);
2221 yyval.a_expr->Identifier = yyvsp[0].tv_str;
2222 yyval.a_expr->expr_type = A1TC_REFERENCE;
vlm1aeaddd2006-07-13 08:24:20 +00002223 }
2224 break;
2225
vlm43c8ac52006-09-17 04:52:50 +00002226 case 50:
vlm64aaa9e2006-10-27 05:37:39 +00002227#line 678 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002228 { /* Completely equivalent to above */
2229 yyval.a_expr = NEW_EXPR();
2230 checkmem(yyval.a_expr);
2231 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2232 yyval.a_expr->expr_type = A1TC_REFERENCE;
2233 }
vlmd3420d32006-09-14 10:35:20 +00002234 break;
2235
vlm43c8ac52006-09-17 04:52:50 +00002236 case 51:
vlm64aaa9e2006-10-27 05:37:39 +00002237#line 684 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002238 {
2239 yyval.a_expr = NEW_EXPR();
2240 checkmem(yyval.a_expr);
2241 yyval.a_expr->Identifier = yyvsp[0].tv_str;
2242 yyval.a_expr->expr_type = A1TC_REFERENCE;
2243 }
2244 break;
2245
2246 case 52:
vlm64aaa9e2006-10-27 05:37:39 +00002247#line 694 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002248 { yyval.a_module = 0; }
2249 break;
2250
2251 case 53:
vlm64aaa9e2006-10-27 05:37:39 +00002252#line 695 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002253 {
2254 yyval.a_module = asn1p_module_new();
2255 checkmem(yyval.a_module);
2256 if(yyvsp[0].a_xports) {
2257 TQ_ADD(&(yyval.a_module->exports), yyvsp[0].a_xports, xp_next);
2258 } else {
2259 /* "EXPORTS ALL;" */
2260 }
2261 }
2262 break;
2263
vlm86851cd2006-10-13 12:37:39 +00002264 case 54:
vlm64aaa9e2006-10-27 05:37:39 +00002265#line 707 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002266 {
vlm0c6d3812006-03-21 03:40:38 +00002267 yyval.a_xports = yyvsp[-1].a_xports;
vlm1aeaddd2006-07-13 08:24:20 +00002268 }
2269 break;
2270
vlm86851cd2006-10-13 12:37:39 +00002271 case 55:
vlm64aaa9e2006-10-27 05:37:39 +00002272#line 710 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002273 {
vlm0c6d3812006-03-21 03:40:38 +00002274 yyval.a_xports = 0;
vlm1aeaddd2006-07-13 08:24:20 +00002275 }
2276 break;
2277
vlm86851cd2006-10-13 12:37:39 +00002278 case 56:
vlm64aaa9e2006-10-27 05:37:39 +00002279#line 713 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002280 {
vlmfa67ddc2004-06-03 03:38:44 +00002281 /* Empty EXPORTS clause effectively prohibits export. */
vlm0c6d3812006-03-21 03:40:38 +00002282 yyval.a_xports = asn1p_xports_new();
2283 checkmem(yyval.a_xports);
vlm1aeaddd2006-07-13 08:24:20 +00002284 }
2285 break;
2286
vlm86851cd2006-10-13 12:37:39 +00002287 case 57:
vlm64aaa9e2006-10-27 05:37:39 +00002288#line 721 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002289 {
vlm0c6d3812006-03-21 03:40:38 +00002290 yyval.a_xports = asn1p_xports_new();
2291 assert(yyval.a_xports);
2292 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002293 }
2294 break;
2295
vlm86851cd2006-10-13 12:37:39 +00002296 case 58:
vlm64aaa9e2006-10-27 05:37:39 +00002297#line 726 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002298 {
vlm0c6d3812006-03-21 03:40:38 +00002299 yyval.a_xports = yyvsp[-2].a_xports;
2300 TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
vlm1aeaddd2006-07-13 08:24:20 +00002301 }
2302 break;
2303
vlm43c8ac52006-09-17 04:52:50 +00002304 case 59:
vlm64aaa9e2006-10-27 05:37:39 +00002305#line 733 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002306 {
vlm43c8ac52006-09-17 04:52:50 +00002307 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002308 checkmem(yyval.a_expr);
2309 yyval.a_expr->Identifier = yyvsp[0].tv_str;
2310 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
vlm1aeaddd2006-07-13 08:24:20 +00002311 }
2312 break;
2313
vlm43c8ac52006-09-17 04:52:50 +00002314 case 60:
vlm64aaa9e2006-10-27 05:37:39 +00002315#line 739 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002316 {
2317 yyval.a_expr = NEW_EXPR();
2318 checkmem(yyval.a_expr);
2319 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2320 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
2321 }
vlm1aeaddd2006-07-13 08:24:20 +00002322 break;
2323
vlm43c8ac52006-09-17 04:52:50 +00002324 case 61:
vlm64aaa9e2006-10-27 05:37:39 +00002325#line 745 "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[0].tv_str;
2330 yyval.a_expr->expr_type = A1TC_EXPORTVAR;
2331 }
2332 break;
2333
2334 case 62:
vlm64aaa9e2006-10-27 05:37:39 +00002335#line 754 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002336 { yyval.a_constr = yyvsp[-1].a_constr; }
2337 break;
2338
2339 case 63:
vlm64aaa9e2006-10-27 05:37:39 +00002340#line 757 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002341 {
vlm59b620a2006-03-21 07:46:48 +00002342 yyval.a_expr = yyvsp[-2].a_expr;
vlm0c6d3812006-03-21 03:40:38 +00002343 assert(yyval.a_expr->Identifier == 0);
vlm59b620a2006-03-21 07:46:48 +00002344 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
vlm0c6d3812006-03-21 03:40:38 +00002345 yyval.a_expr->meta_type = AMT_VALUESET;
vlm59b620a2006-03-21 07:46:48 +00002346 yyval.a_expr->constraints = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00002347 }
2348 break;
2349
vlm86851cd2006-10-13 12:37:39 +00002350 case 64:
vlm64aaa9e2006-10-27 05:37:39 +00002351#line 767 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002352 {
vlm17e65d02006-03-21 04:48:15 +00002353 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002354 }
2355 break;
2356
vlm86851cd2006-10-13 12:37:39 +00002357 case 65:
vlm64aaa9e2006-10-27 05:37:39 +00002358#line 780 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002359 {
vlm43c8ac52006-09-17 04:52:50 +00002360 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002361 checkmem(yyval.a_expr);
2362 yyval.a_expr->reference = yyvsp[0].a_ref;
2363 yyval.a_expr->expr_type = A1TC_REFERENCE;
2364 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm1aeaddd2006-07-13 08:24:20 +00002365 }
2366 break;
2367
vlm86851cd2006-10-13 12:37:39 +00002368 case 66:
vlm64aaa9e2006-10-27 05:37:39 +00002369#line 790 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002370 {
vlm43c8ac52006-09-17 04:52:50 +00002371 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002372 checkmem(yyval.a_expr);
vlm17e65d02006-03-21 04:48:15 +00002373 yyval.a_expr->reference = yyvsp[-3].a_ref;
2374 yyval.a_expr->rhs_pspecs = yyvsp[-1].a_expr;
2375 yyval.a_expr->expr_type = A1TC_REFERENCE;
2376 yyval.a_expr->meta_type = AMT_TYPEREF;
vlm1aeaddd2006-07-13 08:24:20 +00002377 }
2378 break;
2379
vlm86851cd2006-10-13 12:37:39 +00002380 case 67:
vlm64aaa9e2006-10-27 05:37:39 +00002381#line 810 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002382 {
vlm0c6d3812006-03-21 03:40:38 +00002383 yyval.a_expr = yyvsp[0].a_expr;
2384 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2385 assert(yyval.a_expr->expr_type);
2386 assert(yyval.a_expr->meta_type);
vlm1aeaddd2006-07-13 08:24:20 +00002387 }
2388 break;
2389
vlm86851cd2006-10-13 12:37:39 +00002390 case 68:
vlm64aaa9e2006-10-27 05:37:39 +00002391#line 816 "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 == A1TC_CLASSDEF);
2396 assert(yyval.a_expr->meta_type == AMT_OBJECTCLASS);
vlm1aeaddd2006-07-13 08:24:20 +00002397 }
2398 break;
2399
vlm43c8ac52006-09-17 04:52:50 +00002400 case 69:
vlm64aaa9e2006-10-27 05:37:39 +00002401#line 832 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002402 {
2403 yyval.a_expr = yyvsp[0].a_expr;
2404 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
2405 yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
2406 }
2407 break;
2408
2409 case 70:
vlm64aaa9e2006-10-27 05:37:39 +00002410#line 838 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002411 {
2412 yyval.a_expr = yyvsp[0].a_expr;
2413 yyval.a_expr->Identifier = yyvsp[-5].tv_str;
2414 yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
2415 }
2416 break;
2417
2418 case 71:
vlm64aaa9e2006-10-27 05:37:39 +00002419#line 846 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002420 {
vlmfa67ddc2004-06-03 03:38:44 +00002421 int ret;
vlm0c6d3812006-03-21 03:40:38 +00002422 yyval.a_plist = asn1p_paramlist_new(yylineno);
2423 checkmem(yyval.a_plist);
2424 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
vlmfa67ddc2004-06-03 03:38:44 +00002425 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00002426 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
2427 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm1aeaddd2006-07-13 08:24:20 +00002428 }
2429 break;
2430
vlm86851cd2006-10-13 12:37:39 +00002431 case 72:
vlm64aaa9e2006-10-27 05:37:39 +00002432#line 855 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002433 {
vlmfa67ddc2004-06-03 03:38:44 +00002434 int ret;
vlm0c6d3812006-03-21 03:40:38 +00002435 yyval.a_plist = yyvsp[-2].a_plist;
2436 ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
vlmfa67ddc2004-06-03 03:38:44 +00002437 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00002438 if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
2439 if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
vlm1aeaddd2006-07-13 08:24:20 +00002440 }
2441 break;
2442
vlm86851cd2006-10-13 12:37:39 +00002443 case 73:
vlm64aaa9e2006-10-27 05:37:39 +00002444#line 866 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002445 {
vlm0c6d3812006-03-21 03:40:38 +00002446 yyval.a_parg.governor = NULL;
2447 yyval.a_parg.argument = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00002448 }
2449 break;
2450
vlmd3420d32006-09-14 10:35:20 +00002451 case 74:
vlm64aaa9e2006-10-27 05:37:39 +00002452#line 870 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00002453 {
2454 int ret;
2455 yyval.a_parg.governor = asn1p_ref_new(yylineno);
vlm86851cd2006-10-13 12:37:39 +00002456 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
vlmd3420d32006-09-14 10:35:20 +00002457 checkmem(ret == 0);
2458 yyval.a_parg.argument = yyvsp[0].tv_str;
2459 }
2460 break;
2461
2462 case 75:
vlm64aaa9e2006-10-27 05:37:39 +00002463#line 877 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002464 {
2465 int ret;
2466 yyval.a_parg.governor = asn1p_ref_new(yylineno);
2467 ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
2468 checkmem(ret == 0);
2469 yyval.a_parg.argument = yyvsp[0].tv_str;
2470 }
2471 break;
2472
2473 case 76:
vlm64aaa9e2006-10-27 05:37:39 +00002474#line 884 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002475 {
vlm43c8ac52006-09-17 04:52:50 +00002476 int ret;
2477 yyval.a_parg.governor = asn1p_ref_new(yylineno);
2478 ret = asn1p_ref_add_component(yyval.a_parg.governor,
2479 ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
2480 checkmem(ret == 0);
2481 yyval.a_parg.argument = yyvsp[0].tv_str;
2482 }
2483 break;
2484
vlm86851cd2006-10-13 12:37:39 +00002485 case 77:
vlm64aaa9e2006-10-27 05:37:39 +00002486#line 892 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002487 {
2488 int ret;
2489 yyval.a_parg.governor = asn1p_ref_new(yylineno);
2490 ret = asn1p_ref_add_component(yyval.a_parg.governor,
2491 ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
2492 checkmem(ret == 0);
2493 yyval.a_parg.argument = yyvsp[0].tv_str;
2494 }
2495 break;
2496
2497 case 78:
vlm64aaa9e2006-10-27 05:37:39 +00002498#line 903 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002499 {
2500 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002501 checkmem(yyval.a_expr);
2502 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002503 }
2504 break;
2505
vlm86851cd2006-10-13 12:37:39 +00002506 case 79:
vlm64aaa9e2006-10-27 05:37:39 +00002507#line 908 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002508 {
vlm0c6d3812006-03-21 03:40:38 +00002509 yyval.a_expr = yyvsp[-2].a_expr;
2510 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002511 }
2512 break;
2513
vlm86851cd2006-10-13 12:37:39 +00002514 case 80:
vlm64aaa9e2006-10-27 05:37:39 +00002515#line 915 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002516 {
vlm0c6d3812006-03-21 03:40:38 +00002517 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002518 }
2519 break;
2520
vlm86851cd2006-10-13 12:37:39 +00002521 case 81:
vlm64aaa9e2006-10-27 05:37:39 +00002522#line 918 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002523 {
vlm43c8ac52006-09-17 04:52:50 +00002524 yyval.a_expr = NEW_EXPR();
vlm17e65d02006-03-21 04:48:15 +00002525 checkmem(yyval.a_expr);
2526 yyval.a_expr->Identifier = "?";
2527 yyval.a_expr->expr_type = A1TC_REFERENCE;
2528 yyval.a_expr->meta_type = AMT_VALUE;
2529 yyval.a_expr->value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00002530 }
2531 break;
2532
vlm86851cd2006-10-13 12:37:39 +00002533 case 82:
vlm64aaa9e2006-10-27 05:37:39 +00002534#line 926 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002535 {
vlm0c6d3812006-03-21 03:40:38 +00002536 asn1p_ref_t *ref;
vlm43c8ac52006-09-17 04:52:50 +00002537 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002538 checkmem(yyval.a_expr);
2539 yyval.a_expr->Identifier = yyvsp[0].tv_str;
2540 yyval.a_expr->expr_type = A1TC_REFERENCE;
2541 yyval.a_expr->meta_type = AMT_VALUE;
2542 ref = asn1p_ref_new(yylineno);
2543 asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
2544 yyval.a_expr->value = asn1p_value_fromref(ref, 0);
vlm1aeaddd2006-07-13 08:24:20 +00002545 }
2546 break;
2547
vlm86851cd2006-10-13 12:37:39 +00002548 case 83:
vlm64aaa9e2006-10-27 05:37:39 +00002549#line 937 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002550 {
vlm43c8ac52006-09-17 04:52:50 +00002551 yyval.a_expr = NEW_EXPR();
vlmdfbff8c2006-03-21 09:41:28 +00002552 yyval.a_expr->expr_type = A1TC_VALUESET;
2553 yyval.a_expr->meta_type = AMT_VALUESET;
2554 yyval.a_expr->constraints = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00002555 }
2556 break;
2557
vlm86851cd2006-10-13 12:37:39 +00002558 case 84:
vlm64aaa9e2006-10-27 05:37:39 +00002559#line 960 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002560 { yyval.a_expr = NEW_EXPR(); }
vlm1aeaddd2006-07-13 08:24:20 +00002561 break;
2562
vlm86851cd2006-10-13 12:37:39 +00002563 case 85:
vlm64aaa9e2006-10-27 05:37:39 +00002564#line 961 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002565 { yyval.a_expr = yyvsp[0].a_expr; }
2566 break;
2567
vlm86851cd2006-10-13 12:37:39 +00002568 case 86:
vlm64aaa9e2006-10-27 05:37:39 +00002569#line 964 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002570 {
vlm43c8ac52006-09-17 04:52:50 +00002571 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002572 checkmem(yyval.a_expr);
2573 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002574 }
2575 break;
2576
vlm86851cd2006-10-13 12:37:39 +00002577 case 87:
vlm64aaa9e2006-10-27 05:37:39 +00002578#line 969 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002579 {
vlm0c6d3812006-03-21 03:40:38 +00002580 yyval.a_expr = yyvsp[-2].a_expr;
2581 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002582 }
2583 break;
2584
vlm86851cd2006-10-13 12:37:39 +00002585 case 88:
vlm64aaa9e2006-10-27 05:37:39 +00002586#line 976 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002587 {
vlm0c6d3812006-03-21 03:40:38 +00002588 yyval.a_expr = yyvsp[-1].a_expr;
2589 assert(yyval.a_expr->Identifier == 0);
2590 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2591 yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
2592 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002593 }
2594 break;
2595
vlm86851cd2006-10-13 12:37:39 +00002596 case 89:
vlm64aaa9e2006-10-27 05:37:39 +00002597#line 983 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002598 {
vlm0c6d3812006-03-21 03:40:38 +00002599 yyval.a_expr = yyvsp[-1].a_expr;
2600 yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
2601 yyval.a_expr->marker = yyvsp[0].a_marker;
2602 _fixup_anonymous_identifier(yyval.a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002603 }
2604 break;
2605
vlm86851cd2006-10-13 12:37:39 +00002606 case 90:
vlm64aaa9e2006-10-27 05:37:39 +00002607#line 989 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002608 {
vlm43c8ac52006-09-17 04:52:50 +00002609 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002610 checkmem(yyval.a_expr);
2611 yyval.a_expr->meta_type = yyvsp[0].a_expr->meta_type;
2612 yyval.a_expr->expr_type = A1TC_COMPONENTS_OF;
2613 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002614 }
2615 break;
2616
vlm86851cd2006-10-13 12:37:39 +00002617 case 91:
vlm64aaa9e2006-10-27 05:37:39 +00002618#line 996 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002619 {
vlm0c6d3812006-03-21 03:40:38 +00002620 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002621 }
2622 break;
2623
vlm86851cd2006-10-13 12:37:39 +00002624 case 92:
vlm64aaa9e2006-10-27 05:37:39 +00002625#line 1002 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002626 {
vlm43c8ac52006-09-17 04:52:50 +00002627 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002628 checkmem(yyval.a_expr);
2629 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002630 }
2631 break;
2632
vlm86851cd2006-10-13 12:37:39 +00002633 case 93:
vlm64aaa9e2006-10-27 05:37:39 +00002634#line 1007 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002635 {
vlm0c6d3812006-03-21 03:40:38 +00002636 yyval.a_expr = yyvsp[-2].a_expr;
2637 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002638 }
2639 break;
2640
vlm86851cd2006-10-13 12:37:39 +00002641 case 94:
vlm64aaa9e2006-10-27 05:37:39 +00002642#line 1014 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002643 {
vlm0c6d3812006-03-21 03:40:38 +00002644 yyval.a_expr = yyvsp[0].a_expr;
2645 assert(yyval.a_expr->Identifier == 0);
2646 yyval.a_expr->Identifier = yyvsp[-1].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00002647 }
2648 break;
2649
vlm86851cd2006-10-13 12:37:39 +00002650 case 95:
vlm64aaa9e2006-10-27 05:37:39 +00002651#line 1019 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002652 {
vlm0c6d3812006-03-21 03:40:38 +00002653 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002654 }
2655 break;
2656
vlm86851cd2006-10-13 12:37:39 +00002657 case 96:
vlm64aaa9e2006-10-27 05:37:39 +00002658#line 1022 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002659 {
vlm0c6d3812006-03-21 03:40:38 +00002660 yyval.a_expr = yyvsp[0].a_expr;
2661 _fixup_anonymous_identifier(yyval.a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002662 }
2663 break;
2664
vlm86851cd2006-10-13 12:37:39 +00002665 case 97:
vlm64aaa9e2006-10-27 05:37:39 +00002666#line 1029 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002667 {
vlm0c6d3812006-03-21 03:40:38 +00002668 yyval.a_expr = yyvsp[-2].a_expr;
2669 checkmem(yyval.a_expr);
2670 yyval.a_expr->with_syntax = yyvsp[0].a_wsynt;
2671 assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
2672 assert(yyval.a_expr->meta_type == AMT_OBJECTCLASS);
vlm1aeaddd2006-07-13 08:24:20 +00002673 }
2674 break;
2675
vlm86851cd2006-10-13 12:37:39 +00002676 case 98:
vlm64aaa9e2006-10-27 05:37:39 +00002677#line 1039 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002678 { yyval.a_int = 0; }
2679 break;
2680
vlm86851cd2006-10-13 12:37:39 +00002681 case 99:
vlm64aaa9e2006-10-27 05:37:39 +00002682#line 1040 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002683 { yyval.a_int = 1; }
2684 break;
2685
vlm86851cd2006-10-13 12:37:39 +00002686 case 100:
vlm64aaa9e2006-10-27 05:37:39 +00002687#line 1044 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002688 {
vlm43c8ac52006-09-17 04:52:50 +00002689 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002690 checkmem(yyval.a_expr);
2691 yyval.a_expr->expr_type = A1TC_CLASSDEF;
2692 yyval.a_expr->meta_type = AMT_OBJECTCLASS;
2693 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002694 }
2695 break;
2696
vlm86851cd2006-10-13 12:37:39 +00002697 case 101:
vlm64aaa9e2006-10-27 05:37:39 +00002698#line 1051 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002699 {
vlm0c6d3812006-03-21 03:40:38 +00002700 yyval.a_expr = yyvsp[-2].a_expr;
2701 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002702 }
2703 break;
2704
vlm86851cd2006-10-13 12:37:39 +00002705 case 102:
vlm64aaa9e2006-10-27 05:37:39 +00002706#line 1061 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002707 {
vlm43c8ac52006-09-17 04:52:50 +00002708 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002709 checkmem(yyval.a_expr);
2710 yyval.a_expr->Identifier = yyvsp[-1].tv_str;
2711 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2712 yyval.a_expr->expr_type = A1TC_CLASSFIELD_TFS; /* TypeFieldSpec */
2713 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002714 }
2715 break;
2716
vlm86851cd2006-10-13 12:37:39 +00002717 case 103:
vlm64aaa9e2006-10-27 05:37:39 +00002718#line 1071 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002719 {
vlm43c8ac52006-09-17 04:52:50 +00002720 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002721 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
2722 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2723 yyval.a_expr->expr_type = A1TC_CLASSFIELD_FTVFS; /* FixedTypeValueFieldSpec */
2724 yyval.a_expr->unique = yyvsp[-1].a_int;
2725 yyval.a_expr->marker = yyvsp[0].a_marker;
2726 asn1p_expr_add(yyval.a_expr, yyvsp[-2].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00002727 }
2728 break;
2729
vlm86851cd2006-10-13 12:37:39 +00002730 case 104:
vlm64aaa9e2006-10-27 05:37:39 +00002731#line 1082 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002732 {
vlm43c8ac52006-09-17 04:52:50 +00002733 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002734 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2735 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2736 yyval.a_expr->expr_type = A1TC_CLASSFIELD_VTVFS;
2737 yyval.a_expr->reference = yyvsp[-1].a_ref;
2738 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002739 }
2740 break;
2741
vlm86851cd2006-10-13 12:37:39 +00002742 case 105:
vlm64aaa9e2006-10-27 05:37:39 +00002743#line 1092 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002744 {
vlm43c8ac52006-09-17 04:52:50 +00002745 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002746 checkmem(yyval.a_expr);
2747 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2748 yyval.a_expr->reference = yyvsp[-1].a_ref;
2749 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2750 yyval.a_expr->expr_type = A1TC_CLASSFIELD_OFS;
2751 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002752 }
2753 break;
2754
vlm86851cd2006-10-13 12:37:39 +00002755 case 106:
vlm64aaa9e2006-10-27 05:37:39 +00002756#line 1103 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002757 {
vlm43c8ac52006-09-17 04:52:50 +00002758 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002759 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2760 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2761 yyval.a_expr->expr_type = A1TC_CLASSFIELD_VTVSFS;
2762 yyval.a_expr->reference = yyvsp[-1].a_ref;
2763 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002764 }
2765 break;
2766
vlm86851cd2006-10-13 12:37:39 +00002767 case 107:
vlm64aaa9e2006-10-27 05:37:39 +00002768#line 1113 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002769 {
vlm43c8ac52006-09-17 04:52:50 +00002770 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002771 checkmem(yyval.a_expr);
2772 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2773 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2774 yyval.a_expr->expr_type = A1TC_CLASSFIELD_FTVSFS;
2775 asn1p_expr_add(yyval.a_expr, yyvsp[-1].a_expr);
2776 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002777 }
2778 break;
2779
vlm86851cd2006-10-13 12:37:39 +00002780 case 108:
vlm64aaa9e2006-10-27 05:37:39 +00002781#line 1124 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002782 {
vlm43c8ac52006-09-17 04:52:50 +00002783 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002784 checkmem(yyval.a_expr);
2785 yyval.a_expr->Identifier = yyvsp[-2].tv_str;
2786 yyval.a_expr->reference = yyvsp[-1].a_ref;
2787 yyval.a_expr->meta_type = AMT_OBJECTFIELD;
2788 yyval.a_expr->expr_type = A1TC_CLASSFIELD_OSFS;
2789 yyval.a_expr->marker = yyvsp[0].a_marker;
vlm1aeaddd2006-07-13 08:24:20 +00002790 }
2791 break;
2792
vlm86851cd2006-10-13 12:37:39 +00002793 case 109:
vlm64aaa9e2006-10-27 05:37:39 +00002794#line 1136 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002795 { yyval.a_wsynt = 0; }
2796 break;
2797
vlm86851cd2006-10-13 12:37:39 +00002798 case 110:
vlm64aaa9e2006-10-27 05:37:39 +00002799#line 1137 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002800 {
vlm0c6d3812006-03-21 03:40:38 +00002801 yyval.a_wsynt = yyvsp[0].a_wsynt;
vlm1aeaddd2006-07-13 08:24:20 +00002802 }
2803 break;
2804
vlm86851cd2006-10-13 12:37:39 +00002805 case 111:
vlm64aaa9e2006-10-27 05:37:39 +00002806#line 1144 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002807 { asn1p_lexer_hack_enable_with_syntax(); }
2808 break;
2809
vlm86851cd2006-10-13 12:37:39 +00002810 case 112:
vlm64aaa9e2006-10-27 05:37:39 +00002811#line 1146 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002812 {
vlm0c6d3812006-03-21 03:40:38 +00002813 yyval.a_wsynt = yyvsp[-1].a_wsynt;
vlm1aeaddd2006-07-13 08:24:20 +00002814 }
2815 break;
2816
vlm86851cd2006-10-13 12:37:39 +00002817 case 113:
vlm64aaa9e2006-10-27 05:37:39 +00002818#line 1152 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002819 {
vlm0c6d3812006-03-21 03:40:38 +00002820 yyval.a_wsynt = asn1p_wsyntx_new();
2821 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm1aeaddd2006-07-13 08:24:20 +00002822 }
2823 break;
2824
vlm86851cd2006-10-13 12:37:39 +00002825 case 114:
vlm64aaa9e2006-10-27 05:37:39 +00002826#line 1156 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002827 {
vlm0c6d3812006-03-21 03:40:38 +00002828 yyval.a_wsynt = yyvsp[-1].a_wsynt;
2829 TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
vlm1aeaddd2006-07-13 08:24:20 +00002830 }
2831 break;
2832
vlm86851cd2006-10-13 12:37:39 +00002833 case 115:
vlm64aaa9e2006-10-27 05:37:39 +00002834#line 1163 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002835 {
vlm1fcf7592006-08-18 02:27:55 +00002836 yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_opaque.buf, 0);
vlm0c6d3812006-03-21 03:40:38 +00002837 yyval.a_wchunk->type = WC_WHITESPACE;
vlm1aeaddd2006-07-13 08:24:20 +00002838 }
2839 break;
2840
vlm86851cd2006-10-13 12:37:39 +00002841 case 116:
vlm64aaa9e2006-10-27 05:37:39 +00002842#line 1167 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002843 {
vlm1fcf7592006-08-18 02:27:55 +00002844 yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_str, 0);
vlm1aeaddd2006-07-13 08:24:20 +00002845 }
2846 break;
2847
vlm86851cd2006-10-13 12:37:39 +00002848 case 117:
vlm64aaa9e2006-10-27 05:37:39 +00002849#line 1170 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002850 {
vlm1fcf7592006-08-18 02:27:55 +00002851 yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].a_refcomp.name, 0);
vlm0c6d3812006-03-21 03:40:38 +00002852 yyval.a_wchunk->type = WC_FIELD;
vlm1aeaddd2006-07-13 08:24:20 +00002853 }
2854 break;
2855
vlm86851cd2006-10-13 12:37:39 +00002856 case 118:
vlm64aaa9e2006-10-27 05:37:39 +00002857#line 1174 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002858 {
vlm0c6d3812006-03-21 03:40:38 +00002859 yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt);
vlm1aeaddd2006-07-13 08:24:20 +00002860 }
2861 break;
2862
vlm43c8ac52006-09-17 04:52:50 +00002863 case 119:
vlm64aaa9e2006-10-27 05:37:39 +00002864#line 1180 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00002865 {
2866 yyval.a_expr = NEW_EXPR();
vlmd3420d32006-09-14 10:35:20 +00002867 checkmem(yyval.a_expr);
2868 yyval.a_expr->Identifier = strdup("...");
vlmd3420d32006-09-14 10:35:20 +00002869 checkmem(yyval.a_expr->Identifier);
2870 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2871 yyval.a_expr->meta_type = AMT_TYPE;
2872 }
2873 break;
2874
vlm43c8ac52006-09-17 04:52:50 +00002875 case 120:
vlm64aaa9e2006-10-27 05:37:39 +00002876#line 1188 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002877 {
2878 yyval.a_expr = NEW_EXPR();
2879 checkmem(yyval.a_expr);
2880 yyval.a_expr->Identifier = strdup("...");
2881 checkmem(yyval.a_expr->Identifier);
2882 yyval.a_expr->value = yyvsp[0].a_value;
2883 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2884 yyval.a_expr->meta_type = AMT_TYPE;
2885 }
2886 break;
2887
2888 case 121:
vlm64aaa9e2006-10-27 05:37:39 +00002889#line 1197 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00002890 {
2891 yyval.a_expr = NEW_EXPR();
2892 checkmem(yyval.a_expr);
2893 yyval.a_expr->Identifier = strdup("...");
2894 yyval.a_expr->value = yyvsp[0].a_value;
2895 checkmem(yyval.a_expr->Identifier);
2896 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
2897 yyval.a_expr->meta_type = AMT_TYPE;
2898 }
2899 break;
2900
2901 case 122:
vlm64aaa9e2006-10-27 05:37:39 +00002902#line 1209 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002903 {
vlm0c6d3812006-03-21 03:40:38 +00002904 yyval.a_expr = yyvsp[-1].a_expr;
2905 yyval.a_expr->tag = yyvsp[-2].a_tag;
vlmec8f6812004-08-22 03:19:54 +00002906 /*
2907 * Outer constraint for SEQUENCE OF and SET OF applies
2908 * to the inner type.
2909 */
vlm0c6d3812006-03-21 03:40:38 +00002910 if(yyval.a_expr->expr_type == ASN_CONSTR_SEQUENCE_OF
2911 || yyval.a_expr->expr_type == ASN_CONSTR_SET_OF) {
2912 assert(!TQ_FIRST(&(yyval.a_expr->members))->constraints);
2913 TQ_FIRST(&(yyval.a_expr->members))->constraints = yyvsp[0].a_constr;
vlmec8f6812004-08-22 03:19:54 +00002914 } else {
vlm0c6d3812006-03-21 03:40:38 +00002915 if(yyval.a_expr->constraints) {
2916 assert(!yyvsp[-1].a_expr);
vlmec8f6812004-08-22 03:19:54 +00002917 } else {
vlm0c6d3812006-03-21 03:40:38 +00002918 yyval.a_expr->constraints = yyvsp[0].a_constr;
vlmec8f6812004-08-22 03:19:54 +00002919 }
2920 }
vlm1aeaddd2006-07-13 08:24:20 +00002921 }
2922 break;
2923
vlm86851cd2006-10-13 12:37:39 +00002924 case 123:
vlm64aaa9e2006-10-27 05:37:39 +00002925#line 1231 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002926 {
vlm0c6d3812006-03-21 03:40:38 +00002927 yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
vlm7e436752006-03-18 06:53:11 +00002928 asn1p_as_pointer = 0;
vlm1aeaddd2006-07-13 08:24:20 +00002929 }
2930 break;
2931
vlm86851cd2006-10-13 12:37:39 +00002932 case 124:
vlm64aaa9e2006-10-27 05:37:39 +00002933#line 1238 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002934 {
vlm0c6d3812006-03-21 03:40:38 +00002935 yyval.a_expr = yyvsp[0].a_expr;
2936 yyval.a_expr->marker.flags |= yyvsp[-1].a_int;
vlm7e436752006-03-18 06:53:11 +00002937
vlm0c6d3812006-03-21 03:40:38 +00002938 if((yyval.a_expr->marker.flags & EM_INDIRECT)
2939 && (yyval.a_expr->marker.flags & EM_OPTIONAL) != EM_OPTIONAL) {
vlm177a5b62005-09-05 05:17:57 +00002940 fprintf(stderr,
2941 "INFO: Directive <ASN1C:RepresentAsPointer> "
2942 "applied to %s at line %d\n",
vlm0c6d3812006-03-21 03:40:38 +00002943 ASN_EXPR_TYPE2STR(yyval.a_expr->expr_type)
2944 ? ASN_EXPR_TYPE2STR(yyval.a_expr->expr_type)
vlm177a5b62005-09-05 05:17:57 +00002945 : "member",
vlm0c6d3812006-03-21 03:40:38 +00002946 yyval.a_expr->_lineno
vlm177a5b62005-09-05 05:17:57 +00002947 );
2948 }
vlm1aeaddd2006-07-13 08:24:20 +00002949 }
2950 break;
2951
vlm86851cd2006-10-13 12:37:39 +00002952 case 125:
vlm64aaa9e2006-10-27 05:37:39 +00002953#line 1257 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002954 {
vlm0c6d3812006-03-21 03:40:38 +00002955 yyval.a_expr = yyvsp[0].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00002956 }
2957 break;
2958
vlm86851cd2006-10-13 12:37:39 +00002959 case 126:
vlm64aaa9e2006-10-27 05:37:39 +00002960#line 1260 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002961 {
vlm0c6d3812006-03-21 03:40:38 +00002962 yyval.a_expr = yyvsp[-1].a_expr;
2963 assert(yyval.a_expr->expr_type == A1TC_INVALID);
2964 yyval.a_expr->expr_type = ASN_CONSTR_CHOICE;
2965 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00002966 }
2967 break;
2968
vlm86851cd2006-10-13 12:37:39 +00002969 case 127:
vlm64aaa9e2006-10-27 05:37:39 +00002970#line 1266 "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_SEQUENCE;
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 128:
vlm64aaa9e2006-10-27 05:37:39 +00002980#line 1272 "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_SET;
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 129:
vlm64aaa9e2006-10-27 05:37:39 +00002990#line 1278 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00002991 {
vlm43c8ac52006-09-17 04:52:50 +00002992 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00002993 checkmem(yyval.a_expr);
2994 yyval.a_expr->constraints = yyvsp[-4].a_constr;
2995 yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE_OF;
2996 yyval.a_expr->meta_type = AMT_TYPE;
2997 yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
2998 yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
2999 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00003000 }
3001 break;
3002
vlm86851cd2006-10-13 12:37:39 +00003003 case 130:
vlm64aaa9e2006-10-27 05:37:39 +00003004#line 1288 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003005 {
vlm43c8ac52006-09-17 04:52:50 +00003006 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003007 checkmem(yyval.a_expr);
3008 yyval.a_expr->constraints = yyvsp[-4].a_constr;
3009 yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
3010 yyval.a_expr->meta_type = AMT_TYPE;
3011 yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
3012 yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
3013 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00003014 }
3015 break;
3016
vlm86851cd2006-10-13 12:37:39 +00003017 case 131:
vlm64aaa9e2006-10-27 05:37:39 +00003018#line 1298 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003019 {
vlm43c8ac52006-09-17 04:52:50 +00003020 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003021 checkmem(yyval.a_expr);
3022 yyval.a_expr->expr_type = ASN_TYPE_ANY;
3023 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003024 }
3025 break;
3026
vlm86851cd2006-10-13 12:37:39 +00003027 case 132:
vlm64aaa9e2006-10-27 05:37:39 +00003028#line 1304 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003029 {
vlmec8f6812004-08-22 03:19:54 +00003030 int ret;
vlm43c8ac52006-09-17 04:52:50 +00003031 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003032 checkmem(yyval.a_expr);
3033 yyval.a_expr->reference = asn1p_ref_new(yylineno);
3034 ret = asn1p_ref_add_component(yyval.a_expr->reference,
3035 yyvsp[0].tv_str, RLT_lowercase);
vlmec8f6812004-08-22 03:19:54 +00003036 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003037 yyval.a_expr->expr_type = ASN_TYPE_ANY;
3038 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003039 }
3040 break;
3041
vlm86851cd2006-10-13 12:37:39 +00003042 case 133:
vlm64aaa9e2006-10-27 05:37:39 +00003043#line 1315 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003044 {
vlm43c8ac52006-09-17 04:52:50 +00003045 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003046 checkmem(yyval.a_expr);
3047 yyval.a_expr->reference = yyvsp[0].a_ref;
3048 yyval.a_expr->expr_type = A1TC_INSTANCE;
3049 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003050 }
3051 break;
3052
vlm86851cd2006-10-13 12:37:39 +00003053 case 134:
vlm64aaa9e2006-10-27 05:37:39 +00003054#line 1330 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003055 {
vlmfa67ddc2004-06-03 03:38:44 +00003056 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003057 yyval.a_ref = asn1p_ref_new(yylineno);
3058 checkmem(yyval.a_ref);
3059 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
vlmfa67ddc2004-06-03 03:38:44 +00003060 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003061 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003062 }
3063 break;
3064
vlm43c8ac52006-09-17 04:52:50 +00003065 case 135:
vlm64aaa9e2006-10-27 05:37:39 +00003066#line 1338 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003067 {
3068 int ret;
3069 yyval.a_ref = asn1p_ref_new(yylineno);
3070 checkmem(yyval.a_ref);
3071 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
3072 checkmem(ret == 0);
3073 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
3074 checkmem(ret == 0);
3075 free(yyvsp[-2].tv_str);
3076 }
3077 break;
3078
3079 case 136:
vlm64aaa9e2006-10-27 05:37:39 +00003080#line 1348 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003081 {
3082 int ret;
3083 yyval.a_ref = asn1p_ref_new(yylineno);
3084 checkmem(yyval.a_ref);
3085 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
3086 checkmem(ret == 0);
3087 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
3088 checkmem(ret == 0);
3089 free(yyvsp[-2].tv_str);
3090 }
3091 break;
3092
3093 case 137:
vlm64aaa9e2006-10-27 05:37:39 +00003094#line 1358 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003095 {
vlm808411d2006-03-14 16:31:37 +00003096 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003097 yyval.a_ref = asn1p_ref_new(yylineno);
3098 checkmem(yyval.a_ref);
3099 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
vlm808411d2006-03-14 16:31:37 +00003100 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003101 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
vlm808411d2006-03-14 16:31:37 +00003102 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003103 free(yyvsp[-2].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003104 }
3105 break;
3106
vlm86851cd2006-10-13 12:37:39 +00003107 case 138:
vlm64aaa9e2006-10-27 05:37:39 +00003108#line 1368 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003109 {
vlmfa67ddc2004-06-03 03:38:44 +00003110 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003111 yyval.a_ref = asn1p_ref_new(yylineno);
3112 checkmem(yyval.a_ref);
3113 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
3114 free(yyvsp[0].tv_str);
vlmc94e28f2004-09-15 11:59:51 +00003115 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003116 }
3117 break;
3118
vlm86851cd2006-10-13 12:37:39 +00003119 case 139:
vlm64aaa9e2006-10-27 05:37:39 +00003120#line 1376 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003121 {
vlmc94e28f2004-09-15 11:59:51 +00003122 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003123 yyval.a_ref = yyvsp[0].a_ref;
3124 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_CAPITALS);
3125 free(yyvsp[-2].tv_str);
vlmfa67ddc2004-06-03 03:38:44 +00003126 checkmem(ret == 0);
3127 /*
3128 * Move the last element infront.
3129 */
3130 {
3131 struct asn1p_ref_component_s tmp_comp;
vlm0c6d3812006-03-21 03:40:38 +00003132 tmp_comp = yyval.a_ref->components[yyval.a_ref->comp_count-1];
3133 memmove(&yyval.a_ref->components[1],
3134 &yyval.a_ref->components[0],
3135 sizeof(yyval.a_ref->components[0])
3136 * (yyval.a_ref->comp_count - 1));
3137 yyval.a_ref->components[0] = tmp_comp;
vlmfa67ddc2004-06-03 03:38:44 +00003138 }
vlm1aeaddd2006-07-13 08:24:20 +00003139 }
3140 break;
3141
vlm86851cd2006-10-13 12:37:39 +00003142 case 140:
vlm64aaa9e2006-10-27 05:37:39 +00003143#line 1398 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003144 {
vlmfa67ddc2004-06-03 03:38:44 +00003145 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003146 yyval.a_ref = asn1p_ref_new(yylineno);
3147 checkmem(yyval.a_ref);
3148 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
3149 free(yyvsp[0].a_refcomp.name);
vlmfa67ddc2004-06-03 03:38:44 +00003150 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003151 }
3152 break;
3153
vlm86851cd2006-10-13 12:37:39 +00003154 case 141:
vlm64aaa9e2006-10-27 05:37:39 +00003155#line 1406 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003156 {
vlmfa67ddc2004-06-03 03:38:44 +00003157 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003158 yyval.a_ref = yyvsp[-2].a_ref;
3159 ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
3160 free(yyvsp[0].a_refcomp.name);
vlmfa67ddc2004-06-03 03:38:44 +00003161 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003162 }
3163 break;
3164
vlm86851cd2006-10-13 12:37:39 +00003165 case 143:
vlm64aaa9e2006-10-27 05:37:39 +00003166#line 1419 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003167 {
vlm0c6d3812006-03-21 03:40:38 +00003168 yyval.a_refcomp.lex_type = RLT_AmpUppercase;
3169 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00003170 }
3171 break;
3172
vlm86851cd2006-10-13 12:37:39 +00003173 case 144:
vlm64aaa9e2006-10-27 05:37:39 +00003174#line 1424 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003175 {
vlm0c6d3812006-03-21 03:40:38 +00003176 yyval.a_refcomp.lex_type = RLT_Amplowercase;
3177 yyval.a_refcomp.name = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00003178 }
3179 break;
3180
vlm86851cd2006-10-13 12:37:39 +00003181 case 145:
vlm64aaa9e2006-10-27 05:37:39 +00003182#line 1433 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003183 {
vlm0c6d3812006-03-21 03:40:38 +00003184 yyval.a_ref = asn1p_ref_new(yylineno);
3185 asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
vlm1aeaddd2006-07-13 08:24:20 +00003186 }
3187 break;
3188
vlm86851cd2006-10-13 12:37:39 +00003189 case 146:
vlm64aaa9e2006-10-27 05:37:39 +00003190#line 1437 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003191 {
vlm0c6d3812006-03-21 03:40:38 +00003192 yyval.a_ref = yyval.a_ref;
3193 asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
vlm1aeaddd2006-07-13 08:24:20 +00003194 }
3195 break;
3196
vlm86851cd2006-10-13 12:37:39 +00003197 case 147:
vlm64aaa9e2006-10-27 05:37:39 +00003198#line 1441 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003199 {
vlm0c6d3812006-03-21 03:40:38 +00003200 yyval.a_ref = yyval.a_ref;
3201 asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
vlm1aeaddd2006-07-13 08:24:20 +00003202 }
3203 break;
3204
vlm86851cd2006-10-13 12:37:39 +00003205 case 148:
vlm64aaa9e2006-10-27 05:37:39 +00003206#line 1448 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003207 {
vlm0c6d3812006-03-21 03:40:38 +00003208 yyval.a_ref = asn1p_ref_new(yylineno);
3209 asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
vlm1aeaddd2006-07-13 08:24:20 +00003210 }
3211 break;
3212
vlm86851cd2006-10-13 12:37:39 +00003213 case 149:
vlm64aaa9e2006-10-27 05:37:39 +00003214#line 1468 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003215 {
vlm0c6d3812006-03-21 03:40:38 +00003216 yyval.a_expr = yyvsp[-2].a_expr;
3217 assert(yyval.a_expr->Identifier == NULL);
3218 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
3219 yyval.a_expr->meta_type = AMT_VALUE;
3220 yyval.a_expr->value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003221 }
3222 break;
3223
vlm86851cd2006-10-13 12:37:39 +00003224 case 152:
vlm64aaa9e2006-10-27 05:37:39 +00003225#line 1480 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003226 {
vlm0c6d3812006-03-21 03:40:38 +00003227 yyval.a_value = asn1p_value_fromint(0);
3228 checkmem(yyval.a_value);
3229 yyval.a_value->type = ATV_CHOICE_IDENTIFIER;
3230 yyval.a_value->value.choice_identifier.identifier = yyvsp[-2].tv_str;
3231 yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003232 }
3233 break;
3234
vlm86851cd2006-10-13 12:37:39 +00003235 case 153:
vlm64aaa9e2006-10-27 05:37:39 +00003236#line 1487 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003237 { asn1p_lexer_hack_push_opaque_state(); }
3238 break;
3239
vlm86851cd2006-10-13 12:37:39 +00003240 case 154:
vlm64aaa9e2006-10-27 05:37:39 +00003241#line 1487 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003242 {
vlm0c6d3812006-03-21 03:40:38 +00003243 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
3244 checkmem(yyval.a_value);
3245 yyval.a_value->type = ATV_UNPARSED;
vlm1aeaddd2006-07-13 08:24:20 +00003246 }
3247 break;
3248
vlm86851cd2006-10-13 12:37:39 +00003249 case 155:
vlm64aaa9e2006-10-27 05:37:39 +00003250#line 1492 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003251 {
vlm0c6d3812006-03-21 03:40:38 +00003252 yyval.a_value = asn1p_value_fromint(0);
3253 checkmem(yyval.a_value);
3254 yyval.a_value->type = ATV_NULL;
vlm1aeaddd2006-07-13 08:24:20 +00003255 }
3256 break;
3257
vlm86851cd2006-10-13 12:37:39 +00003258 case 156:
vlm64aaa9e2006-10-27 05:37:39 +00003259#line 1500 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003260 {
vlm0c6d3812006-03-21 03:40:38 +00003261 yyval.a_value = asn1p_value_fromint(0);
3262 checkmem(yyval.a_value);
3263 yyval.a_value->type = ATV_FALSE;
vlm1aeaddd2006-07-13 08:24:20 +00003264 }
3265 break;
3266
vlm86851cd2006-10-13 12:37:39 +00003267 case 157:
vlm64aaa9e2006-10-27 05:37:39 +00003268#line 1505 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003269 {
vlm0c6d3812006-03-21 03:40:38 +00003270 yyval.a_value = asn1p_value_fromint(0);
3271 checkmem(yyval.a_value);
3272 yyval.a_value->type = ATV_TRUE;
vlm1aeaddd2006-07-13 08:24:20 +00003273 }
3274 break;
3275
vlm86851cd2006-10-13 12:37:39 +00003276 case 158:
vlm64aaa9e2006-10-27 05:37:39 +00003277#line 1510 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003278 {
vlm0c6d3812006-03-21 03:40:38 +00003279 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
3280 checkmem(yyval.a_value);
vlm1aeaddd2006-07-13 08:24:20 +00003281 }
3282 break;
3283
vlm86851cd2006-10-13 12:37:39 +00003284 case 159:
vlm64aaa9e2006-10-27 05:37:39 +00003285#line 1514 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003286 {
vlm0c6d3812006-03-21 03:40:38 +00003287 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
3288 checkmem(yyval.a_value);
vlm1aeaddd2006-07-13 08:24:20 +00003289 }
3290 break;
3291
vlm86851cd2006-10-13 12:37:39 +00003292 case 160:
vlm64aaa9e2006-10-27 05:37:39 +00003293#line 1518 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003294 {
vlm0c6d3812006-03-21 03:40:38 +00003295 yyval.a_value = yyval.a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003296 }
3297 break;
3298
vlm86851cd2006-10-13 12:37:39 +00003299 case 161:
vlm64aaa9e2006-10-27 05:37:39 +00003300#line 1521 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003301 {
vlm17e65d02006-03-21 04:48:15 +00003302 yyval.a_value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003303 }
3304 break;
3305
vlm86851cd2006-10-13 12:37:39 +00003306 case 162:
vlm64aaa9e2006-10-27 05:37:39 +00003307#line 1527 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003308 {
vlmfa67ddc2004-06-03 03:38:44 +00003309 asn1p_ref_t *ref;
3310 int ret;
3311 ref = asn1p_ref_new(yylineno);
3312 checkmem(ref);
vlm0c6d3812006-03-21 03:40:38 +00003313 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
vlmfa67ddc2004-06-03 03:38:44 +00003314 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003315 yyval.a_value = asn1p_value_fromref(ref, 0);
3316 checkmem(yyval.a_value);
3317 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003318 }
3319 break;
3320
vlm86851cd2006-10-13 12:37:39 +00003321 case 163:
vlm64aaa9e2006-10-27 05:37:39 +00003322#line 1538 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003323 {
vlmfa67ddc2004-06-03 03:38:44 +00003324 asn1p_ref_t *ref;
3325 int ret;
3326 ref = asn1p_ref_new(yylineno);
3327 checkmem(ref);
vlm0c6d3812006-03-21 03:40:38 +00003328 ret = asn1p_ref_add_component(ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
vlmfa67ddc2004-06-03 03:38:44 +00003329 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003330 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
vlmfa67ddc2004-06-03 03:38:44 +00003331 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003332 yyval.a_value = asn1p_value_fromref(ref, 0);
3333 checkmem(yyval.a_value);
3334 free(yyvsp[-2].tv_str);
3335 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003336 }
3337 break;
3338
vlm86851cd2006-10-13 12:37:39 +00003339 case 164:
vlm64aaa9e2006-10-27 05:37:39 +00003340#line 1556 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003341 {
vlm0c6d3812006-03-21 03:40:38 +00003342 yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
3343 checkmem(yyval.a_value);
vlm1aeaddd2006-07-13 08:24:20 +00003344 }
3345 break;
3346
vlm86851cd2006-10-13 12:37:39 +00003347 case 165:
vlm64aaa9e2006-10-27 05:37:39 +00003348#line 1560 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003349 {
vlm0c6d3812006-03-21 03:40:38 +00003350 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3351 checkmem(yyval.a_value);
3352 yyval.a_value->type = ATV_TUPLE;
vlm1aeaddd2006-07-13 08:24:20 +00003353 }
3354 break;
3355
vlm86851cd2006-10-13 12:37:39 +00003356 case 166:
vlm64aaa9e2006-10-27 05:37:39 +00003357#line 1565 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003358 {
vlm0c6d3812006-03-21 03:40:38 +00003359 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
3360 checkmem(yyval.a_value);
3361 yyval.a_value->type = ATV_QUADRUPLE;
vlm1aeaddd2006-07-13 08:24:20 +00003362 }
3363 break;
3364
vlm86851cd2006-10-13 12:37:39 +00003365 case 167:
vlm64aaa9e2006-10-27 05:37:39 +00003366#line 1573 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003367 {
vlm0c6d3812006-03-21 03:40:38 +00003368 yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
3369 yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
3370 checkmem(yyval.tv_opaque.buf);
3371 yyval.tv_opaque.buf[0] = '{';
3372 memcpy(yyval.tv_opaque.buf + 1, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
3373 yyval.tv_opaque.buf[yyval.tv_opaque.len] = '\0';
3374 free(yyvsp[0].tv_opaque.buf);
vlm1aeaddd2006-07-13 08:24:20 +00003375 }
3376 break;
3377
vlm86851cd2006-10-13 12:37:39 +00003378 case 168:
vlm64aaa9e2006-10-27 05:37:39 +00003379#line 1582 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003380 {
vlm0c6d3812006-03-21 03:40:38 +00003381 int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
vlmfa67ddc2004-06-03 03:38:44 +00003382 char *p = malloc(newsize + 1);
3383 checkmem(p);
vlm0c6d3812006-03-21 03:40:38 +00003384 memcpy(p , yyvsp[-1].tv_opaque.buf, yyvsp[-1].tv_opaque.len);
3385 memcpy(p + yyvsp[-1].tv_opaque.len, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
vlmfa67ddc2004-06-03 03:38:44 +00003386 p[newsize] = '\0';
vlm0c6d3812006-03-21 03:40:38 +00003387 free(yyvsp[-1].tv_opaque.buf);
3388 free(yyvsp[0].tv_opaque.buf);
3389 yyval.tv_opaque.buf = p;
3390 yyval.tv_opaque.len = newsize;
vlm1aeaddd2006-07-13 08:24:20 +00003391 }
3392 break;
3393
vlm86851cd2006-10-13 12:37:39 +00003394 case 169:
vlm64aaa9e2006-10-27 05:37:39 +00003395#line 1597 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003396 { yyval.a_type = ASN_BASIC_BOOLEAN; }
3397 break;
3398
vlm86851cd2006-10-13 12:37:39 +00003399 case 170:
vlm64aaa9e2006-10-27 05:37:39 +00003400#line 1598 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003401 { yyval.a_type = ASN_BASIC_NULL; }
3402 break;
3403
vlm86851cd2006-10-13 12:37:39 +00003404 case 171:
vlm64aaa9e2006-10-27 05:37:39 +00003405#line 1599 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003406 { yyval.a_type = ASN_BASIC_REAL; }
3407 break;
3408
vlm1aeaddd2006-07-13 08:24:20 +00003409 case 172:
vlm64aaa9e2006-10-27 05:37:39 +00003410#line 1600 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003411 { yyval.a_type = yyvsp[0].a_type; }
vlm1aeaddd2006-07-13 08:24:20 +00003412 break;
3413
3414 case 173:
vlm64aaa9e2006-10-27 05:37:39 +00003415#line 1601 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003416 { yyval.a_type = ASN_BASIC_OCTET_STRING; }
vlm1aeaddd2006-07-13 08:24:20 +00003417 break;
3418
3419 case 174:
vlm64aaa9e2006-10-27 05:37:39 +00003420#line 1602 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003421 { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; }
vlm1aeaddd2006-07-13 08:24:20 +00003422 break;
3423
3424 case 175:
vlm64aaa9e2006-10-27 05:37:39 +00003425#line 1603 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003426 { yyval.a_type = ASN_BASIC_RELATIVE_OID; }
vlm1aeaddd2006-07-13 08:24:20 +00003427 break;
3428
3429 case 176:
vlm64aaa9e2006-10-27 05:37:39 +00003430#line 1604 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003431 { yyval.a_type = ASN_BASIC_EXTERNAL; }
vlm1aeaddd2006-07-13 08:24:20 +00003432 break;
3433
3434 case 177:
vlm64aaa9e2006-10-27 05:37:39 +00003435#line 1605 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003436 { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; }
vlm1aeaddd2006-07-13 08:24:20 +00003437 break;
3438
3439 case 178:
vlm64aaa9e2006-10-27 05:37:39 +00003440#line 1606 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003441 { yyval.a_type = ASN_BASIC_CHARACTER_STRING; }
vlm1aeaddd2006-07-13 08:24:20 +00003442 break;
3443
3444 case 179:
vlm64aaa9e2006-10-27 05:37:39 +00003445#line 1607 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003446 { yyval.a_type = ASN_BASIC_UTCTime; }
vlmd3420d32006-09-14 10:35:20 +00003447 break;
3448
3449 case 180:
vlm64aaa9e2006-10-27 05:37:39 +00003450#line 1608 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003451 { yyval.a_type = ASN_BASIC_GeneralizedTime; }
vlmd3420d32006-09-14 10:35:20 +00003452 break;
3453
3454 case 181:
vlm64aaa9e2006-10-27 05:37:39 +00003455#line 1609 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003456 { yyval.a_type = yyvsp[0].a_type; }
vlmd3420d32006-09-14 10:35:20 +00003457 break;
3458
3459 case 182:
vlm64aaa9e2006-10-27 05:37:39 +00003460#line 1616 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003461 { yyval.a_type = ASN_BASIC_INTEGER; }
vlm43c8ac52006-09-17 04:52:50 +00003462 break;
3463
3464 case 183:
vlm64aaa9e2006-10-27 05:37:39 +00003465#line 1617 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003466 { yyval.a_type = ASN_BASIC_ENUMERATED; }
3467 break;
3468
3469 case 184:
vlm64aaa9e2006-10-27 05:37:39 +00003470#line 1618 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003471 { yyval.a_type = ASN_BASIC_BIT_STRING; }
3472 break;
3473
3474 case 185:
vlm64aaa9e2006-10-27 05:37:39 +00003475#line 1622 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003476 {
vlm43c8ac52006-09-17 04:52:50 +00003477 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003478 checkmem(yyval.a_expr);
3479 yyval.a_expr->expr_type = yyvsp[0].a_type;
3480 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003481 }
3482 break;
3483
vlm86851cd2006-10-13 12:37:39 +00003484 case 186:
vlm64aaa9e2006-10-27 05:37:39 +00003485#line 1628 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003486 {
vlm0c6d3812006-03-21 03:40:38 +00003487 if(yyvsp[0].a_expr) {
3488 yyval.a_expr = yyvsp[0].a_expr;
vlmfa67ddc2004-06-03 03:38:44 +00003489 } else {
vlm43c8ac52006-09-17 04:52:50 +00003490 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00003491 checkmem(yyval.a_expr);
vlmfa67ddc2004-06-03 03:38:44 +00003492 }
vlm0c6d3812006-03-21 03:40:38 +00003493 yyval.a_expr->expr_type = yyvsp[-1].a_type;
3494 yyval.a_expr->meta_type = AMT_TYPE;
vlm1aeaddd2006-07-13 08:24:20 +00003495 }
3496 break;
3497
vlm86851cd2006-10-13 12:37:39 +00003498 case 187:
vlm64aaa9e2006-10-27 05:37:39 +00003499#line 1641 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003500 { yyval.a_type = ASN_STRING_BMPString; }
3501 break;
3502
vlm86851cd2006-10-13 12:37:39 +00003503 case 188:
vlm64aaa9e2006-10-27 05:37:39 +00003504#line 1642 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003505 {
vlm0c6d3812006-03-21 03:40:38 +00003506 yyval.a_type = ASN_STRING_GeneralString;
vlmc94e28f2004-09-15 11:59:51 +00003507 fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
vlm1aeaddd2006-07-13 08:24:20 +00003508 }
3509 break;
3510
vlm86851cd2006-10-13 12:37:39 +00003511 case 189:
vlm64aaa9e2006-10-27 05:37:39 +00003512#line 1646 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003513 {
vlm0c6d3812006-03-21 03:40:38 +00003514 yyval.a_type = ASN_STRING_GraphicString;
vlmc94e28f2004-09-15 11:59:51 +00003515 fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
vlm1aeaddd2006-07-13 08:24:20 +00003516 }
3517 break;
3518
vlm86851cd2006-10-13 12:37:39 +00003519 case 190:
vlm64aaa9e2006-10-27 05:37:39 +00003520#line 1650 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003521 { yyval.a_type = ASN_STRING_IA5String; }
3522 break;
3523
vlm86851cd2006-10-13 12:37:39 +00003524 case 191:
vlm64aaa9e2006-10-27 05:37:39 +00003525#line 1651 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003526 { yyval.a_type = ASN_STRING_ISO646String; }
3527 break;
3528
vlm86851cd2006-10-13 12:37:39 +00003529 case 192:
vlm64aaa9e2006-10-27 05:37:39 +00003530#line 1652 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003531 { yyval.a_type = ASN_STRING_NumericString; }
3532 break;
3533
vlm86851cd2006-10-13 12:37:39 +00003534 case 193:
vlm64aaa9e2006-10-27 05:37:39 +00003535#line 1653 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003536 { yyval.a_type = ASN_STRING_PrintableString; }
3537 break;
3538
vlm86851cd2006-10-13 12:37:39 +00003539 case 194:
vlm64aaa9e2006-10-27 05:37:39 +00003540#line 1654 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003541 {
vlm0c6d3812006-03-21 03:40:38 +00003542 yyval.a_type = ASN_STRING_T61String;
vlmc94e28f2004-09-15 11:59:51 +00003543 fprintf(stderr, "WARNING: T61String is not fully supported\n");
vlm1aeaddd2006-07-13 08:24:20 +00003544 }
3545 break;
3546
vlm86851cd2006-10-13 12:37:39 +00003547 case 195:
vlm64aaa9e2006-10-27 05:37:39 +00003548#line 1658 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003549 { yyval.a_type = ASN_STRING_TeletexString; }
3550 break;
3551
vlm86851cd2006-10-13 12:37:39 +00003552 case 196:
vlm64aaa9e2006-10-27 05:37:39 +00003553#line 1659 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003554 { yyval.a_type = ASN_STRING_UniversalString; }
3555 break;
3556
vlm86851cd2006-10-13 12:37:39 +00003557 case 197:
vlm64aaa9e2006-10-27 05:37:39 +00003558#line 1660 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003559 { yyval.a_type = ASN_STRING_UTF8String; }
3560 break;
3561
vlm86851cd2006-10-13 12:37:39 +00003562 case 198:
vlm64aaa9e2006-10-27 05:37:39 +00003563#line 1661 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003564 {
vlm0c6d3812006-03-21 03:40:38 +00003565 yyval.a_type = ASN_STRING_VideotexString;
vlmc94e28f2004-09-15 11:59:51 +00003566 fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
vlm1aeaddd2006-07-13 08:24:20 +00003567 }
3568 break;
3569
vlm86851cd2006-10-13 12:37:39 +00003570 case 199:
vlm64aaa9e2006-10-27 05:37:39 +00003571#line 1665 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003572 { yyval.a_type = ASN_STRING_VisibleString; }
3573 break;
3574
vlm86851cd2006-10-13 12:37:39 +00003575 case 200:
vlm64aaa9e2006-10-27 05:37:39 +00003576#line 1666 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003577 { yyval.a_type = ASN_STRING_ObjectDescriptor; }
3578 break;
3579
vlm86851cd2006-10-13 12:37:39 +00003580 case 205:
vlm64aaa9e2006-10-27 05:37:39 +00003581#line 1677 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003582 { yyval.a_constr = 0; }
3583 break;
3584
vlm86851cd2006-10-13 12:37:39 +00003585 case 206:
vlm64aaa9e2006-10-27 05:37:39 +00003586#line 1678 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003587 {
vlm0c6d3812006-03-21 03:40:38 +00003588 yyval.a_constr = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00003589 }
3590 break;
3591
vlm86851cd2006-10-13 12:37:39 +00003592 case 208:
vlm64aaa9e2006-10-27 05:37:39 +00003593#line 1688 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003594 {
vlm0c6d3812006-03-21 03:40:38 +00003595 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003596 }
3597 break;
3598
vlmb9f1c0d2006-10-21 05:54:49 +00003599 case 209:
vlm64aaa9e2006-10-27 05:37:39 +00003600#line 1691 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003601 {
vlmfa67ddc2004-06-03 03:38:44 +00003602 /*
3603 * This is a special case, for compatibility purposes.
vlm9283dbe2004-08-18 04:59:12 +00003604 * It goes without parentheses.
vlmfa67ddc2004-06-03 03:38:44 +00003605 */
vlm0c6d3812006-03-21 03:40:38 +00003606 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003607 }
3608 break;
3609
vlmb9f1c0d2006-10-21 05:54:49 +00003610 case 210:
vlm64aaa9e2006-10-27 05:37:39 +00003611#line 1701 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003612 {
vlm0c6d3812006-03-21 03:40:38 +00003613 yyval.a_constr = yyvsp[-1].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00003614 }
3615 break;
3616
vlmb9f1c0d2006-10-21 05:54:49 +00003617 case 211:
vlm64aaa9e2006-10-27 05:37:39 +00003618#line 1704 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003619 {
vlm0c6d3812006-03-21 03:40:38 +00003620 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003621 }
3622 break;
3623
vlmb9f1c0d2006-10-21 05:54:49 +00003624 case 212:
vlm64aaa9e2006-10-27 05:37:39 +00003625#line 1710 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003626 {
vlmdfbff8c2006-03-21 09:41:28 +00003627 yyval.a_constr = asn1p_constraint_new(yylineno);
3628 yyval.a_constr->type = ACT_EL_EXT;
vlm1aeaddd2006-07-13 08:24:20 +00003629 }
3630 break;
3631
vlmb9f1c0d2006-10-21 05:54:49 +00003632 case 213:
vlm64aaa9e2006-10-27 05:37:39 +00003633#line 1714 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003634 {
vlm0c6d3812006-03-21 03:40:38 +00003635 yyval.a_constr = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00003636 }
3637 break;
3638
vlmb9f1c0d2006-10-21 05:54:49 +00003639 case 214:
vlm64aaa9e2006-10-27 05:37:39 +00003640#line 1717 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003641 {
vlmfa67ddc2004-06-03 03:38:44 +00003642 asn1p_constraint_t *ct;
3643 ct = asn1p_constraint_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003644 ct->type = ACT_EL_EXT;
vlm0c6d3812006-03-21 03:40:38 +00003645 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm1aeaddd2006-07-13 08:24:20 +00003646 }
3647 break;
3648
vlmb9f1c0d2006-10-21 05:54:49 +00003649 case 215:
vlm64aaa9e2006-10-27 05:37:39 +00003650#line 1723 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003651 {
vlmfa67ddc2004-06-03 03:38:44 +00003652 asn1p_constraint_t *ct;
3653 ct = asn1p_constraint_new(yylineno);
vlmfa67ddc2004-06-03 03:38:44 +00003654 ct->type = ACT_EL_EXT;
vlm0c6d3812006-03-21 03:40:38 +00003655 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-4].a_constr, ct);
3656 ct = yyval.a_constr;
3657 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003658 }
3659 break;
3660
vlmb9f1c0d2006-10-21 05:54:49 +00003661 case 216:
vlm64aaa9e2006-10-27 05:37:39 +00003662#line 1731 "asn1p_y.y"
vlmb9f1c0d2006-10-21 05:54:49 +00003663 {
3664 yyval.a_constr = yyvsp[0].a_constr;
3665 }
3666 break;
3667
vlm86851cd2006-10-13 12:37:39 +00003668 case 218:
vlm64aaa9e2006-10-27 05:37:39 +00003669#line 1738 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003670 {
vlm0c6d3812006-03-21 03:40:38 +00003671 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003672 }
3673 break;
3674
vlm86851cd2006-10-13 12:37:39 +00003675 case 220:
vlm64aaa9e2006-10-27 05:37:39 +00003676#line 1745 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003677 {
vlm0c6d3812006-03-21 03:40:38 +00003678 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003679 }
3680 break;
3681
vlm86851cd2006-10-13 12:37:39 +00003682 case 222:
vlm64aaa9e2006-10-27 05:37:39 +00003683#line 1752 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003684 {
vlm0c6d3812006-03-21 03:40:38 +00003685 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003686 }
3687 break;
3688
vlm86851cd2006-10-13 12:37:39 +00003689 case 224:
vlm64aaa9e2006-10-27 05:37:39 +00003690#line 1760 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003691 {
vlm0c6d3812006-03-21 03:40:38 +00003692 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003693 }
3694 break;
3695
vlm86851cd2006-10-13 12:37:39 +00003696 case 225:
vlm64aaa9e2006-10-27 05:37:39 +00003697#line 1766 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003698 {
vlmfa67ddc2004-06-03 03:38:44 +00003699 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003700 yyval.a_constr = asn1p_constraint_new(yylineno);
3701 checkmem(yyval.a_constr);
3702 yyval.a_constr->type = yyvsp[-3].a_ctype;
3703 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
vlmfa67ddc2004-06-03 03:38:44 +00003704 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003705 }
3706 break;
3707
vlm86851cd2006-10-13 12:37:39 +00003708 case 226:
vlm64aaa9e2006-10-27 05:37:39 +00003709#line 1774 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003710 {
vlm9283dbe2004-08-18 04:59:12 +00003711 int ret;
vlm0c6d3812006-03-21 03:40:38 +00003712 yyval.a_constr = asn1p_constraint_new(yylineno);
3713 checkmem(yyval.a_constr);
3714 yyval.a_constr->type = ACT_CA_SET;
3715 ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
vlm9283dbe2004-08-18 04:59:12 +00003716 checkmem(ret == 0);
vlm1aeaddd2006-07-13 08:24:20 +00003717 }
3718 break;
3719
vlm86851cd2006-10-13 12:37:39 +00003720 case 227:
vlm64aaa9e2006-10-27 05:37:39 +00003721#line 1782 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003722 {
vlm0c6d3812006-03-21 03:40:38 +00003723 yyval.a_constr = asn1p_constraint_new(yylineno);
3724 checkmem(yyval.a_constr);
3725 yyval.a_constr->type = ACT_EL_VALUE;
3726 yyval.a_constr->value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003727 }
3728 break;
3729
vlm86851cd2006-10-13 12:37:39 +00003730 case 228:
vlm64aaa9e2006-10-27 05:37:39 +00003731#line 1788 "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_TYPE;
3736 yyval.a_constr->containedSubtype = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00003737 }
3738 break;
3739
vlm1bc782f2006-09-21 01:50:37 +00003740 case 229:
vlm64aaa9e2006-10-27 05:37:39 +00003741#line 1794 "asn1p_y.y"
vlm1bc782f2006-09-21 01:50:37 +00003742 {
3743 yyval.a_constr = asn1p_constraint_new(yylineno);
3744 checkmem(yyval.a_constr);
3745 yyval.a_constr->type = yyvsp[-1].a_ctype;
3746 yyval.a_constr->range_start = yyvsp[-2].a_value;
vlm86851cd2006-10-13 12:37:39 +00003747 yyval.a_constr->range_stop = yyvsp[0].a_value;
vlm1bc782f2006-09-21 01:50:37 +00003748 }
3749 break;
3750
3751 case 230:
vlm64aaa9e2006-10-27 05:37:39 +00003752#line 1801 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003753 {
3754 yyval.a_constr = asn1p_constraint_new(yylineno);
3755 checkmem(yyval.a_constr);
3756 yyval.a_constr->type = yyvsp[-1].a_ctype;
3757 yyval.a_constr->range_start = asn1p_value_fromint(-123);
3758 yyval.a_constr->range_stop = yyvsp[0].a_value;
3759 yyval.a_constr->range_start->type = ATV_MIN;
3760 }
3761 break;
3762
3763 case 231:
vlm64aaa9e2006-10-27 05:37:39 +00003764#line 1809 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00003765 {
3766 yyval.a_constr = asn1p_constraint_new(yylineno);
3767 checkmem(yyval.a_constr);
3768 yyval.a_constr->type = yyvsp[-1].a_ctype;
3769 yyval.a_constr->range_start = yyvsp[-2].a_value;
3770 yyval.a_constr->range_stop = asn1p_value_fromint(321);
3771 yyval.a_constr->range_stop->type = ATV_MAX;
3772 }
3773 break;
3774
3775 case 232:
vlm64aaa9e2006-10-27 05:37:39 +00003776#line 1817 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003777 {
3778 yyval.a_constr = asn1p_constraint_new(yylineno);
3779 checkmem(yyval.a_constr);
3780 yyval.a_constr->type = yyvsp[-1].a_ctype;
3781 yyval.a_constr->range_start = asn1p_value_fromint(-123);
3782 yyval.a_constr->range_stop = asn1p_value_fromint(321);
3783 yyval.a_constr->range_start->type = ATV_MIN;
3784 yyval.a_constr->range_stop->type = ATV_MAX;
3785 }
3786 break;
3787
vlm86851cd2006-10-13 12:37:39 +00003788 case 233:
vlm64aaa9e2006-10-27 05:37:39 +00003789#line 1826 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00003790 {
3791 yyval.a_constr = yyvsp[0].a_constr;
3792 }
3793 break;
3794
vlm86851cd2006-10-13 12:37:39 +00003795 case 234:
vlm64aaa9e2006-10-27 05:37:39 +00003796#line 1829 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003797 {
vlm8cc3f742006-10-18 18:40:14 +00003798 yyval.a_constr = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00003799 }
3800 break;
3801
vlm86851cd2006-10-13 12:37:39 +00003802 case 235:
vlm64aaa9e2006-10-27 05:37:39 +00003803#line 1835 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003804 {
vlm8cc3f742006-10-18 18:40:14 +00003805 yyval.a_constr = asn1p_constraint_new(yylineno);
3806 yyval.a_constr->type = ACT_CT_PATTERN;
3807 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003808 }
3809 break;
3810
vlm86851cd2006-10-13 12:37:39 +00003811 case 236:
vlm64aaa9e2006-10-27 05:37:39 +00003812#line 1840 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003813 {
vlm8cc3f742006-10-18 18:40:14 +00003814 asn1p_ref_t *ref;
3815 yyval.a_constr = asn1p_constraint_new(yylineno);
3816 yyval.a_constr->type = ACT_CT_PATTERN;
3817 ref = asn1p_ref_new(yylineno);
3818 asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
3819 yyval.a_constr->value = asn1p_value_fromref(ref, 0);
3820 }
3821 break;
3822
3823 case 237:
vlm64aaa9e2006-10-27 05:37:39 +00003824#line 1851 "asn1p_y.y"
vlm8cc3f742006-10-18 18:40:14 +00003825 {
3826 yyval.a_ctype = ACT_CT_SIZE;
3827 }
3828 break;
3829
3830 case 238:
vlm64aaa9e2006-10-27 05:37:39 +00003831#line 1854 "asn1p_y.y"
vlm8cc3f742006-10-18 18:40:14 +00003832 {
3833 yyval.a_ctype = ACT_CT_FROM;
3834 }
3835 break;
3836
3837 case 239:
vlm64aaa9e2006-10-27 05:37:39 +00003838#line 1860 "asn1p_y.y"
vlm8cc3f742006-10-18 18:40:14 +00003839 {
vlm0c6d3812006-03-21 03:40:38 +00003840 yyval.a_value = asn1p_value_fromint(0);
3841 checkmem(yyval.a_value);
3842 yyval.a_value->type = ATV_FALSE;
vlm1aeaddd2006-07-13 08:24:20 +00003843 }
3844 break;
3845
vlm8cc3f742006-10-18 18:40:14 +00003846 case 240:
vlm64aaa9e2006-10-27 05:37:39 +00003847#line 1865 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003848 {
vlm0c6d3812006-03-21 03:40:38 +00003849 yyval.a_value = asn1p_value_fromint(1);
3850 checkmem(yyval.a_value);
3851 yyval.a_value->type = ATV_TRUE;
vlm1aeaddd2006-07-13 08:24:20 +00003852 }
3853 break;
3854
vlm64aaa9e2006-10-27 05:37:39 +00003855 case 244:
3856#line 1873 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003857 {
vlmfa67ddc2004-06-03 03:38:44 +00003858 asn1p_ref_t *ref;
3859 int ret;
3860 ref = asn1p_ref_new(yylineno);
3861 checkmem(ref);
vlm0c6d3812006-03-21 03:40:38 +00003862 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
vlmfa67ddc2004-06-03 03:38:44 +00003863 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003864 yyval.a_value = asn1p_value_fromref(ref, 0);
3865 checkmem(yyval.a_value);
3866 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003867 }
3868 break;
3869
vlm64aaa9e2006-10-27 05:37:39 +00003870 case 245:
3871#line 1887 "asn1p_y.y"
3872 {
3873 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
3874 checkmem(yyval.a_value);
3875 }
3876 break;
3877
3878 case 246:
3879#line 1891 "asn1p_y.y"
3880 {
3881 yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
3882 checkmem(yyval.a_value);
3883 }
3884 break;
3885
3886 case 247:
3887#line 1898 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003888 {
vlm4053ca52005-02-18 16:34:21 +00003889 asn1p_ref_t *ref;
3890 int ret;
3891 ref = asn1p_ref_new(yylineno);
3892 checkmem(ref);
vlm0c6d3812006-03-21 03:40:38 +00003893 ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_UNKNOWN);
vlm4053ca52005-02-18 16:34:21 +00003894 checkmem(ret == 0);
vlm0c6d3812006-03-21 03:40:38 +00003895 yyval.a_value = asn1p_value_fromref(ref, 0);
3896 checkmem(yyval.a_value);
3897 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00003898 }
3899 break;
3900
vlm64aaa9e2006-10-27 05:37:39 +00003901 case 248:
3902#line 1912 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003903 {
vlm0c6d3812006-03-21 03:40:38 +00003904 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003905 }
3906 break;
3907
vlm64aaa9e2006-10-27 05:37:39 +00003908 case 249:
3909#line 1915 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003910 {
vlm0c6d3812006-03-21 03:40:38 +00003911 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
vlm1aeaddd2006-07-13 08:24:20 +00003912 }
3913 break;
3914
vlm64aaa9e2006-10-27 05:37:39 +00003915 case 250:
3916#line 1921 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003917 {
vlm0c6d3812006-03-21 03:40:38 +00003918 yyval.a_constr = yyvsp[0].a_constr;
vlm1aeaddd2006-07-13 08:24:20 +00003919 }
3920 break;
3921
vlm64aaa9e2006-10-27 05:37:39 +00003922 case 251:
3923#line 1924 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003924 {
vlm0c6d3812006-03-21 03:40:38 +00003925 CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003926 }
3927 break;
3928
vlm64aaa9e2006-10-27 05:37:39 +00003929 case 252:
3930#line 1930 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003931 {
vlm0c6d3812006-03-21 03:40:38 +00003932 yyval.a_constr = asn1p_constraint_new(yylineno);
3933 checkmem(yyval.a_constr);
3934 yyval.a_constr->type = ACT_EL_EXT;
vlm1aeaddd2006-07-13 08:24:20 +00003935 yyval.a_constr->value = asn1p_value_frombuf("...", 3, 1);
3936 }
3937 break;
3938
vlm64aaa9e2006-10-27 05:37:39 +00003939 case 253:
3940#line 1936 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003941 {
vlm0c6d3812006-03-21 03:40:38 +00003942 yyval.a_constr = asn1p_constraint_new(yylineno);
3943 checkmem(yyval.a_constr);
3944 yyval.a_constr->type = ACT_EL_VALUE;
3945 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[-2].tv_str, strlen(yyvsp[-2].tv_str), 0);
3946 yyval.a_constr->presence = yyvsp[0].a_pres;
3947 if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00003948 }
3949 break;
3950
vlm64aaa9e2006-10-27 05:37:39 +00003951 case 254:
3952#line 1950 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003953 { yyval.a_pres = ACPRES_DEFAULT; }
3954 break;
3955
vlm64aaa9e2006-10-27 05:37:39 +00003956 case 255:
3957#line 1951 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003958 { yyval.a_pres = yyvsp[0].a_pres; }
3959 break;
3960
vlm64aaa9e2006-10-27 05:37:39 +00003961 case 256:
3962#line 1955 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003963 {
vlm0c6d3812006-03-21 03:40:38 +00003964 yyval.a_pres = ACPRES_PRESENT;
vlm1aeaddd2006-07-13 08:24:20 +00003965 }
3966 break;
3967
vlm64aaa9e2006-10-27 05:37:39 +00003968 case 257:
3969#line 1958 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003970 {
vlm0c6d3812006-03-21 03:40:38 +00003971 yyval.a_pres = ACPRES_ABSENT;
vlm1aeaddd2006-07-13 08:24:20 +00003972 }
3973 break;
3974
vlm64aaa9e2006-10-27 05:37:39 +00003975 case 258:
3976#line 1961 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003977 {
vlm0c6d3812006-03-21 03:40:38 +00003978 yyval.a_pres = ACPRES_OPTIONAL;
vlm1aeaddd2006-07-13 08:24:20 +00003979 }
3980 break;
3981
vlm64aaa9e2006-10-27 05:37:39 +00003982 case 262:
3983#line 1976 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00003984 { asn1p_lexer_hack_push_opaque_state(); }
3985 break;
3986
vlm64aaa9e2006-10-27 05:37:39 +00003987 case 263:
3988#line 1976 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00003989 {
vlm43c8ac52006-09-17 04:52:50 +00003990 yyval.a_constr = asn1p_constraint_new(yylineno);
3991 checkmem(yyval.a_constr);
3992 yyval.a_constr->type = ACT_CT_CTDBY;
3993 yyval.a_constr->value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
3994 checkmem(yyval.a_constr->value);
3995 yyval.a_constr->value->type = ATV_UNPARSED;
vlm1aeaddd2006-07-13 08:24:20 +00003996 }
3997 break;
3998
vlm64aaa9e2006-10-27 05:37:39 +00003999 case 264:
4000#line 1987 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00004001 {
4002 yyval.a_constr = asn1p_constraint_new(yylineno);
4003 yyval.a_constr->type = ACT_CT_CTNG;
4004 yyval.a_constr->value = asn1p_value_fromtype(yyvsp[0].a_expr);
4005 }
4006 break;
4007
vlm64aaa9e2006-10-27 05:37:39 +00004008 case 265:
4009#line 1995 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00004010 { yyval.a_ctype = ACT_EL_RANGE; }
4011 break;
4012
vlm64aaa9e2006-10-27 05:37:39 +00004013 case 266:
4014#line 1996 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00004015 { yyval.a_ctype = ACT_EL_RLRANGE; }
4016 break;
4017
vlm64aaa9e2006-10-27 05:37:39 +00004018 case 267:
4019#line 1997 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00004020 { yyval.a_ctype = ACT_EL_LLRANGE; }
4021 break;
4022
vlm64aaa9e2006-10-27 05:37:39 +00004023 case 268:
4024#line 1998 "asn1p_y.y"
vlm43c8ac52006-09-17 04:52:50 +00004025 { yyval.a_ctype = ACT_EL_ULRANGE; }
4026 break;
4027
vlm64aaa9e2006-10-27 05:37:39 +00004028 case 269:
4029#line 2001 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004030 {
4031 yyval.a_constr = yyvsp[0].a_constr;
4032 }
4033 break;
4034
vlm64aaa9e2006-10-27 05:37:39 +00004035 case 270:
4036#line 2004 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004037 {
4038 yyval.a_constr = yyvsp[0].a_constr;
4039 }
4040 break;
4041
vlm64aaa9e2006-10-27 05:37:39 +00004042 case 271:
4043#line 2013 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004044 {
vlmfa67ddc2004-06-03 03:38:44 +00004045 asn1p_ref_t *ref = asn1p_ref_new(yylineno);
4046 asn1p_constraint_t *ct;
4047 int ret;
vlm0c6d3812006-03-21 03:40:38 +00004048 ret = asn1p_ref_add_component(ref, yyvsp[-1].tv_str, 0);
vlmfa67ddc2004-06-03 03:38:44 +00004049 checkmem(ret == 0);
4050 ct = asn1p_constraint_new(yylineno);
vlm0c6d3812006-03-21 03:40:38 +00004051 checkmem(yyval.a_constr);
vlmfa67ddc2004-06-03 03:38:44 +00004052 ct->type = ACT_EL_VALUE;
4053 ct->value = asn1p_value_fromref(ref, 0);
vlm0c6d3812006-03-21 03:40:38 +00004054 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
vlm1aeaddd2006-07-13 08:24:20 +00004055 }
4056 break;
4057
vlm64aaa9e2006-10-27 05:37:39 +00004058 case 272:
4059#line 2028 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004060 {
vlm0c6d3812006-03-21 03:40:38 +00004061 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
vlm1aeaddd2006-07-13 08:24:20 +00004062 }
4063 break;
4064
vlm64aaa9e2006-10-27 05:37:39 +00004065 case 273:
4066#line 2034 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004067 {
vlm0c6d3812006-03-21 03:40:38 +00004068 yyval.a_constr = asn1p_constraint_new(yylineno);
4069 checkmem(yyval.a_constr);
4070 yyval.a_constr->type = ACT_EL_VALUE;
4071 yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
vlm1aeaddd2006-07-13 08:24:20 +00004072 }
4073 break;
4074
vlm64aaa9e2006-10-27 05:37:39 +00004075 case 274:
4076#line 2040 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004077 {
vlmfa67ddc2004-06-03 03:38:44 +00004078 asn1p_constraint_t *ct;
4079 ct = asn1p_constraint_new(yylineno);
4080 checkmem(ct);
4081 ct->type = ACT_EL_VALUE;
vlm0c6d3812006-03-21 03:40:38 +00004082 ct->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
4083 CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
vlm1aeaddd2006-07-13 08:24:20 +00004084 }
4085 break;
4086
vlm64aaa9e2006-10-27 05:37:39 +00004087 case 275:
4088#line 2054 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004089 {
vlm0c6d3812006-03-21 03:40:38 +00004090 char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
vlmfa67ddc2004-06-03 03:38:44 +00004091 int ret;
4092 *p = '@';
vlm0c6d3812006-03-21 03:40:38 +00004093 strcpy(p + 1, yyvsp[0].tv_str);
4094 yyval.a_ref = asn1p_ref_new(yylineno);
4095 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
vlmfa67ddc2004-06-03 03:38:44 +00004096 checkmem(ret == 0);
4097 free(p);
vlm0c6d3812006-03-21 03:40:38 +00004098 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00004099 }
4100 break;
4101
vlm64aaa9e2006-10-27 05:37:39 +00004102 case 276:
4103#line 2065 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004104 {
vlm0c6d3812006-03-21 03:40:38 +00004105 char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
vlmfa67ddc2004-06-03 03:38:44 +00004106 int ret;
4107 p[0] = '@';
4108 p[1] = '.';
vlm0c6d3812006-03-21 03:40:38 +00004109 strcpy(p + 2, yyvsp[0].tv_str);
4110 yyval.a_ref = asn1p_ref_new(yylineno);
4111 ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
vlmfa67ddc2004-06-03 03:38:44 +00004112 checkmem(ret == 0);
4113 free(p);
vlm0c6d3812006-03-21 03:40:38 +00004114 free(yyvsp[0].tv_str);
vlm1aeaddd2006-07-13 08:24:20 +00004115 }
4116 break;
4117
vlm64aaa9e2006-10-27 05:37:39 +00004118 case 277:
4119#line 2081 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004120 {
vlm0c6d3812006-03-21 03:40:38 +00004121 yyval.tv_str = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00004122 }
4123 break;
4124
vlm64aaa9e2006-10-27 05:37:39 +00004125 case 278:
4126#line 2084 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004127 {
vlm0c6d3812006-03-21 03:40:38 +00004128 int l1 = strlen(yyvsp[-2].tv_str);
4129 int l3 = strlen(yyvsp[0].tv_str);
4130 yyval.tv_str = malloc(l1 + 1 + l3 + 1);
4131 memcpy(yyval.tv_str, yyvsp[-2].tv_str, l1);
4132 yyval.tv_str[l1] = '.';
4133 memcpy(yyval.tv_str + l1 + 1, yyvsp[0].tv_str, l3);
4134 yyval.tv_str[l1 + 1 + l3] = '\0';
vlm1aeaddd2006-07-13 08:24:20 +00004135 }
4136 break;
4137
vlm64aaa9e2006-10-27 05:37:39 +00004138 case 279:
4139#line 2102 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004140 {
vlm0c6d3812006-03-21 03:40:38 +00004141 yyval.a_marker.flags = EM_NOMARK;
4142 yyval.a_marker.default_value = 0;
vlm1aeaddd2006-07-13 08:24:20 +00004143 }
4144 break;
4145
vlm64aaa9e2006-10-27 05:37:39 +00004146 case 280:
4147#line 2106 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004148 { yyval.a_marker = yyvsp[0].a_marker; }
4149 break;
4150
vlm64aaa9e2006-10-27 05:37:39 +00004151 case 281:
4152#line 2110 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004153 {
vlm0c6d3812006-03-21 03:40:38 +00004154 yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
4155 yyval.a_marker.default_value = 0;
vlm1aeaddd2006-07-13 08:24:20 +00004156 }
4157 break;
4158
vlm64aaa9e2006-10-27 05:37:39 +00004159 case 282:
4160#line 2114 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004161 {
vlm0c6d3812006-03-21 03:40:38 +00004162 yyval.a_marker.flags = EM_DEFAULT;
4163 yyval.a_marker.default_value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00004164 }
4165 break;
4166
vlm64aaa9e2006-10-27 05:37:39 +00004167 case 283:
4168#line 2137 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004169 {
vlm43c8ac52006-09-17 04:52:50 +00004170 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004171 checkmem(yyval.a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00004172 }
4173 break;
4174
vlm64aaa9e2006-10-27 05:37:39 +00004175 case 284:
4176#line 2141 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004177 {
vlm0c6d3812006-03-21 03:40:38 +00004178 yyval.a_expr = yyvsp[-1].a_expr;
vlm1aeaddd2006-07-13 08:24:20 +00004179 }
4180 break;
4181
vlm64aaa9e2006-10-27 05:37:39 +00004182 case 285:
4183#line 2147 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004184 {
vlm43c8ac52006-09-17 04:52:50 +00004185 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004186 checkmem(yyval.a_expr);
4187 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00004188 }
4189 break;
4190
vlm64aaa9e2006-10-27 05:37:39 +00004191 case 286:
4192#line 2152 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004193 {
vlm0c6d3812006-03-21 03:40:38 +00004194 yyval.a_expr = yyvsp[-2].a_expr;
4195 asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
vlm1aeaddd2006-07-13 08:24:20 +00004196 }
4197 break;
4198
vlm64aaa9e2006-10-27 05:37:39 +00004199 case 287:
4200#line 2159 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004201 {
vlm43c8ac52006-09-17 04:52:50 +00004202 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004203 checkmem(yyval.a_expr);
4204 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
4205 yyval.a_expr->meta_type = AMT_VALUE;
4206 yyval.a_expr->Identifier = yyvsp[0].tv_str;
vlm1aeaddd2006-07-13 08:24:20 +00004207 }
4208 break;
4209
vlm64aaa9e2006-10-27 05:37:39 +00004210 case 288:
4211#line 2166 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004212 {
4213 yyval.a_expr = NEW_EXPR();
4214 checkmem(yyval.a_expr);
4215 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
4216 yyval.a_expr->meta_type = AMT_VALUE;
4217 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
4218 yyval.a_expr->value = yyvsp[-1].a_value;
4219 }
4220 break;
4221
vlm64aaa9e2006-10-27 05:37:39 +00004222 case 289:
4223#line 2174 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004224 {
4225 yyval.a_expr = NEW_EXPR();
4226 checkmem(yyval.a_expr);
4227 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
4228 yyval.a_expr->meta_type = AMT_VALUE;
4229 yyval.a_expr->Identifier = yyvsp[-3].tv_str;
4230 yyval.a_expr->value = yyvsp[-1].a_value;
4231 }
4232 break;
4233
vlm64aaa9e2006-10-27 05:37:39 +00004234 case 290:
4235#line 2182 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004236 {
vlm43c8ac52006-09-17 04:52:50 +00004237 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004238 checkmem(yyval.a_expr);
4239 yyval.a_expr->expr_type = A1TC_UNIVERVAL;
4240 yyval.a_expr->meta_type = AMT_VALUE;
4241 yyval.a_expr->value = yyvsp[0].a_value;
vlm1aeaddd2006-07-13 08:24:20 +00004242 }
4243 break;
4244
vlm64aaa9e2006-10-27 05:37:39 +00004245 case 291:
4246#line 2189 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004247 {
vlm43c8ac52006-09-17 04:52:50 +00004248 yyval.a_expr = NEW_EXPR();
vlm0c6d3812006-03-21 03:40:38 +00004249 checkmem(yyval.a_expr);
4250 yyval.a_expr->Identifier = strdup("...");
4251 checkmem(yyval.a_expr->Identifier);
4252 yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
4253 yyval.a_expr->meta_type = AMT_VALUE;
vlm1aeaddd2006-07-13 08:24:20 +00004254 }
4255 break;
4256
vlm8cc3f742006-10-18 18:40:14 +00004257 case 292:
vlm64aaa9e2006-10-27 05:37:39 +00004258#line 2200 "asn1p_y.y"
4259 {
4260 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
4261 checkmem(yyval.a_value);
4262 }
4263 break;
4264
4265 case 293:
4266#line 2204 "asn1p_y.y"
4267 {
4268 yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
4269 checkmem(yyval.a_value);
4270 }
4271 break;
4272
4273 case 295:
4274#line 2212 "asn1p_y.y"
vlme745fcd2006-09-05 16:18:34 +00004275 {
4276 yyval.a_value = asn1p_value_fromdouble(yyvsp[0].a_dbl);
4277 checkmem(yyval.a_value);
4278 }
vlm1aeaddd2006-07-13 08:24:20 +00004279 break;
4280
vlm64aaa9e2006-10-27 05:37:39 +00004281 case 296:
4282#line 2243 "asn1p_y.y"
vlme745fcd2006-09-05 16:18:34 +00004283 { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); }
4284 break;
4285
vlm64aaa9e2006-10-27 05:37:39 +00004286 case 297:
4287#line 2244 "asn1p_y.y"
vlme745fcd2006-09-05 16:18:34 +00004288 { yyval.a_tag = yyvsp[0].a_tag; }
4289 break;
4290
vlm64aaa9e2006-10-27 05:37:39 +00004291 case 298:
4292#line 2248 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004293 {
vlm0c6d3812006-03-21 03:40:38 +00004294 yyval.a_tag = yyvsp[-1].a_tag;
4295 yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
vlm1aeaddd2006-07-13 08:24:20 +00004296 }
4297 break;
4298
vlm64aaa9e2006-10-27 05:37:39 +00004299 case 299:
4300#line 2255 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004301 {
vlm0c6d3812006-03-21 03:40:38 +00004302 yyval.a_tag = yyvsp[-2].a_tag;
4303 yyval.a_tag.tag_value = yyvsp[-1].a_int;
vlm1aeaddd2006-07-13 08:24:20 +00004304 }
4305 break;
4306
vlm64aaa9e2006-10-27 05:37:39 +00004307 case 300:
4308#line 2261 "asn1p_y.y"
vlm1aeaddd2006-07-13 08:24:20 +00004309 { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; }
4310 break;
4311
vlm64aaa9e2006-10-27 05:37:39 +00004312 case 301:
4313#line 2262 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004314 { yyval.a_tag.tag_class = TC_UNIVERSAL; }
vlm1aeaddd2006-07-13 08:24:20 +00004315 break;
4316
vlm64aaa9e2006-10-27 05:37:39 +00004317 case 302:
4318#line 2263 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004319 { yyval.a_tag.tag_class = TC_APPLICATION; }
vlm1aeaddd2006-07-13 08:24:20 +00004320 break;
4321
vlm64aaa9e2006-10-27 05:37:39 +00004322 case 303:
4323#line 2264 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004324 { yyval.a_tag.tag_class = TC_PRIVATE; }
vlm1aeaddd2006-07-13 08:24:20 +00004325 break;
4326
vlm64aaa9e2006-10-27 05:37:39 +00004327 case 304:
4328#line 2268 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004329 { yyval.a_tag.tag_mode = TM_DEFAULT; }
vlm1aeaddd2006-07-13 08:24:20 +00004330 break;
4331
vlm64aaa9e2006-10-27 05:37:39 +00004332 case 305:
4333#line 2269 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004334 { yyval.a_tag.tag_mode = TM_IMPLICIT; }
vlm1aeaddd2006-07-13 08:24:20 +00004335 break;
4336
vlm64aaa9e2006-10-27 05:37:39 +00004337 case 306:
4338#line 2270 "asn1p_y.y"
vlm86851cd2006-10-13 12:37:39 +00004339 { yyval.a_tag.tag_mode = TM_EXPLICIT; }
vlmd3420d32006-09-14 10:35:20 +00004340 break;
4341
vlm8cc3f742006-10-18 18:40:14 +00004342 case 307:
vlm64aaa9e2006-10-27 05:37:39 +00004343#line 2274 "asn1p_y.y"
4344 {
4345 checkmem(yyvsp[0].tv_str);
4346 yyval.tv_str = yyvsp[0].tv_str;
4347 }
vlm8cc3f742006-10-18 18:40:14 +00004348 break;
4349
4350 case 308:
vlm64aaa9e2006-10-27 05:37:39 +00004351#line 2278 "asn1p_y.y"
vlm8cc3f742006-10-18 18:40:14 +00004352 {
vlm64aaa9e2006-10-27 05:37:39 +00004353 checkmem(yyvsp[0].tv_str);
vlm8cc3f742006-10-18 18:40:14 +00004354 yyval.tv_str = yyvsp[0].tv_str;
4355 }
4356 break;
4357
4358 case 309:
vlm64aaa9e2006-10-27 05:37:39 +00004359#line 2286 "asn1p_y.y"
4360 {
4361 checkmem(yyvsp[0].tv_str);
4362 yyval.tv_str = yyvsp[0].tv_str;
4363 }
4364 break;
4365
4366 case 310:
4367#line 2293 "asn1p_y.y"
4368 { yyval.tv_str = 0; }
4369 break;
4370
4371 case 311:
4372#line 2294 "asn1p_y.y"
4373 {
4374 yyval.tv_str = yyvsp[0].tv_str;
4375 }
4376 break;
4377
4378 case 312:
4379#line 2300 "asn1p_y.y"
vlmd3420d32006-09-14 10:35:20 +00004380 {
4381 checkmem(yyvsp[0].tv_str);
4382 yyval.tv_str = yyvsp[0].tv_str;
4383 }
4384 break;
4385
vlm1aeaddd2006-07-13 08:24:20 +00004386
4387 }
4388
4389/* Line 1016 of /usr/local/share/bison/yacc.c. */
vlm64aaa9e2006-10-27 05:37:39 +00004390#line 4391 "asn1p_y.c"
vlmfa67ddc2004-06-03 03:38:44 +00004391
4392 yyvsp -= yylen;
4393 yyssp -= yylen;
vlmfa67ddc2004-06-03 03:38:44 +00004394
vlm1aeaddd2006-07-13 08:24:20 +00004395
4396#if YYDEBUG
vlm0c6d3812006-03-21 03:40:38 +00004397 if (yydebug)
4398 {
vlm1aeaddd2006-07-13 08:24:20 +00004399 short *yyssp1 = yyss - 1;
4400 YYFPRINTF (stderr, "state stack now");
4401 while (yyssp1 != yyssp)
4402 YYFPRINTF (stderr, " %d", *++yyssp1);
4403 YYFPRINTF (stderr, "\n");
vlm0c6d3812006-03-21 03:40:38 +00004404 }
4405#endif
vlmfa67ddc2004-06-03 03:38:44 +00004406
4407 *++yyvsp = yyval;
4408
vlmfa67ddc2004-06-03 03:38:44 +00004409
vlm1aeaddd2006-07-13 08:24:20 +00004410 /* Now `shift' the result of the reduction. Determine what state
4411 that goes to, based on the state we popped back to and the rule
4412 number reduced by. */
vlmfa67ddc2004-06-03 03:38:44 +00004413
4414 yyn = yyr1[yyn];
4415
vlm1aeaddd2006-07-13 08:24:20 +00004416 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
4417 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
vlmfa67ddc2004-06-03 03:38:44 +00004418 yystate = yytable[yystate];
4419 else
vlm1aeaddd2006-07-13 08:24:20 +00004420 yystate = yydefgoto[yyn - YYNTOKENS];
vlmfa67ddc2004-06-03 03:38:44 +00004421
4422 goto yynewstate;
4423
vlmfa67ddc2004-06-03 03:38:44 +00004424
vlm1aeaddd2006-07-13 08:24:20 +00004425/*------------------------------------.
4426| yyerrlab -- here on detecting error |
4427`------------------------------------*/
4428yyerrlab:
4429 /* If not already recovering from an error, report this error. */
4430 if (!yyerrstatus)
vlmfa67ddc2004-06-03 03:38:44 +00004431 {
4432 ++yynerrs;
vlm1aeaddd2006-07-13 08:24:20 +00004433#if YYERROR_VERBOSE
vlmfa67ddc2004-06-03 03:38:44 +00004434 yyn = yypact[yystate];
4435
vlm1aeaddd2006-07-13 08:24:20 +00004436 if (YYPACT_NINF < yyn && yyn < YYLAST)
vlmfa67ddc2004-06-03 03:38:44 +00004437 {
vlm1aeaddd2006-07-13 08:24:20 +00004438 YYSIZE_T yysize = 0;
4439 int yytype = YYTRANSLATE (yychar);
4440 char *yymsg;
4441 int yyx, yycount;
vlmfa67ddc2004-06-03 03:38:44 +00004442
vlm1aeaddd2006-07-13 08:24:20 +00004443 yycount = 0;
4444 /* Start YYX at -YYN if negative to avoid negative indexes in
4445 YYCHECK. */
4446 for (yyx = yyn < 0 ? -yyn : 0;
4447 yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
4448 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
4449 yysize += yystrlen (yytname[yyx]) + 15, yycount++;
4450 yysize += yystrlen ("parse error, unexpected ") + 1;
4451 yysize += yystrlen (yytname[yytype]);
4452 yymsg = (char *) YYSTACK_ALLOC (yysize);
4453 if (yymsg != 0)
vlmfa67ddc2004-06-03 03:38:44 +00004454 {
vlm1aeaddd2006-07-13 08:24:20 +00004455 char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
4456 yyp = yystpcpy (yyp, yytname[yytype]);
vlm0c6d3812006-03-21 03:40:38 +00004457
vlm1aeaddd2006-07-13 08:24:20 +00004458 if (yycount < 5)
vlmfa67ddc2004-06-03 03:38:44 +00004459 {
vlm1aeaddd2006-07-13 08:24:20 +00004460 yycount = 0;
4461 for (yyx = yyn < 0 ? -yyn : 0;
4462 yyx < (int) (sizeof (yytname) / sizeof (char *));
4463 yyx++)
4464 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
vlm0c6d3812006-03-21 03:40:38 +00004465 {
vlm1aeaddd2006-07-13 08:24:20 +00004466 const char *yyq = ! yycount ? ", expecting " : " or ";
4467 yyp = yystpcpy (yyp, yyq);
4468 yyp = yystpcpy (yyp, yytname[yyx]);
4469 yycount++;
vlm0c6d3812006-03-21 03:40:38 +00004470 }
vlmfa67ddc2004-06-03 03:38:44 +00004471 }
vlm1aeaddd2006-07-13 08:24:20 +00004472 yyerror (yymsg);
4473 YYSTACK_FREE (yymsg);
vlmfa67ddc2004-06-03 03:38:44 +00004474 }
4475 else
vlm1aeaddd2006-07-13 08:24:20 +00004476 yyerror ("parse error; also virtual memory exhausted");
vlmfa67ddc2004-06-03 03:38:44 +00004477 }
4478 else
4479#endif /* YYERROR_VERBOSE */
vlm1aeaddd2006-07-13 08:24:20 +00004480 yyerror ("parse error");
vlmfa67ddc2004-06-03 03:38:44 +00004481 }
vlm0c6d3812006-03-21 03:40:38 +00004482 goto yyerrlab1;
vlmfa67ddc2004-06-03 03:38:44 +00004483
vlm1aeaddd2006-07-13 08:24:20 +00004484
4485/*----------------------------------------------------.
4486| yyerrlab1 -- error raised explicitly by an action. |
4487`----------------------------------------------------*/
4488yyerrlab1:
vlmfa67ddc2004-06-03 03:38:44 +00004489 if (yyerrstatus == 3)
4490 {
vlm1aeaddd2006-07-13 08:24:20 +00004491 /* If just tried and failed to reuse lookahead token after an
4492 error, discard it. */
vlmfa67ddc2004-06-03 03:38:44 +00004493
vlm1aeaddd2006-07-13 08:24:20 +00004494 /* Return failure if at end of input. */
vlm0c6d3812006-03-21 03:40:38 +00004495 if (yychar == YYEOF)
vlm1aeaddd2006-07-13 08:24:20 +00004496 {
4497 /* Pop the error token. */
4498 YYPOPSTACK;
4499 /* Pop the rest of the stack. */
4500 while (yyssp > yyss)
4501 {
4502 YYDPRINTF ((stderr, "Error: popping "));
4503 YYDSYMPRINT ((stderr,
4504 yystos[*yyssp],
4505 *yyvsp));
4506 YYDPRINTF ((stderr, "\n"));
4507 yydestruct (yystos[*yyssp], *yyvsp);
4508 YYPOPSTACK;
4509 }
4510 YYABORT;
4511 }
vlmfa67ddc2004-06-03 03:38:44 +00004512
vlm1aeaddd2006-07-13 08:24:20 +00004513 YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
4514 yychar, yytname[yychar1]));
4515 yydestruct (yychar1, yylval);
vlm0c6d3812006-03-21 03:40:38 +00004516 yychar = YYEMPTY;
vlmfa67ddc2004-06-03 03:38:44 +00004517 }
4518
vlm1aeaddd2006-07-13 08:24:20 +00004519 /* Else will try to reuse lookahead token after shifting the error
4520 token. */
vlm0c6d3812006-03-21 03:40:38 +00004521
vlm1aeaddd2006-07-13 08:24:20 +00004522 yyerrstatus = 3; /* Each real token shifted decrements this. */
vlm0c6d3812006-03-21 03:40:38 +00004523
vlm1aeaddd2006-07-13 08:24:20 +00004524 for (;;)
vlm0c6d3812006-03-21 03:40:38 +00004525 {
vlm1aeaddd2006-07-13 08:24:20 +00004526 yyn = yypact[yystate];
4527 if (yyn != YYPACT_NINF)
4528 {
4529 yyn += YYTERROR;
4530 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
4531 {
4532 yyn = yytable[yyn];
4533 if (0 < yyn)
4534 break;
4535 }
4536 }
4537
4538 /* Pop the current state because it cannot handle the error token. */
4539 if (yyssp == yyss)
4540 YYABORT;
4541
4542 YYDPRINTF ((stderr, "Error: popping "));
4543 YYDSYMPRINT ((stderr,
4544 yystos[*yyssp], *yyvsp));
4545 YYDPRINTF ((stderr, "\n"));
4546
4547 yydestruct (yystos[yystate], *yyvsp);
4548 yyvsp--;
4549 yystate = *--yyssp;
4550
4551
4552#if YYDEBUG
4553 if (yydebug)
4554 {
4555 short *yyssp1 = yyss - 1;
4556 YYFPRINTF (stderr, "Error: state stack now");
4557 while (yyssp1 != yyssp)
4558 YYFPRINTF (stderr, " %d", *++yyssp1);
4559 YYFPRINTF (stderr, "\n");
4560 }
vlm0c6d3812006-03-21 03:40:38 +00004561#endif
vlm0c6d3812006-03-21 03:40:38 +00004562 }
vlm0c6d3812006-03-21 03:40:38 +00004563
vlmfa67ddc2004-06-03 03:38:44 +00004564 if (yyn == YYFINAL)
4565 YYACCEPT;
4566
vlm1aeaddd2006-07-13 08:24:20 +00004567 YYDPRINTF ((stderr, "Shifting error token, "));
vlm0c6d3812006-03-21 03:40:38 +00004568
vlmfa67ddc2004-06-03 03:38:44 +00004569 *++yyvsp = yylval;
vlm1aeaddd2006-07-13 08:24:20 +00004570
vlmfa67ddc2004-06-03 03:38:44 +00004571
4572 yystate = yyn;
4573 goto yynewstate;
4574
vlm0c6d3812006-03-21 03:40:38 +00004575
vlm1aeaddd2006-07-13 08:24:20 +00004576/*-------------------------------------.
4577| yyacceptlab -- YYACCEPT comes here. |
4578`-------------------------------------*/
4579yyacceptlab:
4580 yyresult = 0;
4581 goto yyreturn;
4582
4583/*-----------------------------------.
4584| yyabortlab -- YYABORT comes here. |
4585`-----------------------------------*/
4586yyabortlab:
4587 yyresult = 1;
4588 goto yyreturn;
4589
4590#ifndef yyoverflow
4591/*----------------------------------------------.
4592| yyoverflowlab -- parser overflow comes here. |
4593`----------------------------------------------*/
4594yyoverflowlab:
4595 yyerror ("parser stack overflow");
4596 yyresult = 2;
4597 /* Fall through. */
vlm0c6d3812006-03-21 03:40:38 +00004598#endif
vlm1aeaddd2006-07-13 08:24:20 +00004599
4600yyreturn:
4601#ifndef yyoverflow
4602 if (yyss != yyssa)
4603 YYSTACK_FREE (yyss);
4604#endif
4605 return yyresult;
vlmfa67ddc2004-06-03 03:38:44 +00004606}
vlm1aeaddd2006-07-13 08:24:20 +00004607
4608
vlm64aaa9e2006-10-27 05:37:39 +00004609#line 2306 "asn1p_y.y"
vlmfa67ddc2004-06-03 03:38:44 +00004610
4611
4612
4613/*
4614 * Convert Xstring ('0101'B or '5'H) to the binary vector.
4615 */
4616static asn1p_value_t *
4617_convert_bitstring2binary(char *str, int base) {
4618 asn1p_value_t *val;
4619 int slen;
4620 int memlen;
4621 int baselen;
4622 int bits;
4623 uint8_t *binary_vector;
4624 uint8_t *bv_ptr;
4625 uint8_t cur_val;
4626
4627 assert(str);
4628 assert(str[0] == '\'');
4629
4630 switch(base) {
4631 case 'B':
4632 baselen = 1;
4633 break;
4634 case 'H':
4635 baselen = 4;
4636 break;
4637 default:
4638 assert(base == 'B' || base == 'H');
4639 errno = EINVAL;
4640 return NULL;
4641 }
4642
4643 slen = strlen(str);
4644 assert(str[slen - 1] == base);
4645 assert(str[slen - 2] == '\'');
4646
4647 memlen = slen / (8 / baselen); /* Conservative estimate */
4648
4649 bv_ptr = binary_vector = malloc(memlen + 1);
4650 if(bv_ptr == NULL)
4651 /* ENOMEM */
4652 return NULL;
4653
4654 cur_val = 0;
4655 bits = 0;
4656 while(*(++str) != '\'') {
4657 switch(baselen) {
4658 case 1:
4659 switch(*str) {
4660 case '1':
4661 cur_val |= 1 << (7 - (bits % 8));
4662 case '0':
4663 break;
4664 default:
4665 assert(!"_y UNREACH1");
4666 case ' ': case '\r': case '\n':
4667 continue;
4668 }
4669 break;
4670 case 4:
4671 switch(*str) {
4672 case '0': case '1': case '2': case '3': case '4':
4673 case '5': case '6': case '7': case '8': case '9':
4674 cur_val |= (*str - '0') << (4 - (bits % 8));
4675 break;
4676 case 'A': case 'B': case 'C':
4677 case 'D': case 'E': case 'F':
4678 cur_val |= ((*str - 'A') + 10)
4679 << (4 - (bits % 8));
4680 break;
4681 default:
4682 assert(!"_y UNREACH2");
4683 case ' ': case '\r': case '\n':
4684 continue;
4685 }
4686 break;
4687 }
4688
4689 bits += baselen;
4690 if((bits % 8) == 0) {
4691 *bv_ptr++ = cur_val;
4692 cur_val = 0;
4693 }
4694 }
4695
4696 *bv_ptr = cur_val;
4697 assert((bv_ptr - binary_vector) <= memlen);
4698
4699 val = asn1p_value_frombits(binary_vector, bits, 0);
4700 if(val == NULL) {
4701 free(binary_vector);
4702 }
4703
4704 return val;
4705}
4706
vlm5d89c3d2005-08-13 09:07:11 +00004707/*
4708 * For unnamed types (used in old X.208 compliant modules)
4709 * generate some sort of interim names, to not to force human being to fix
4710 * the specification's compliance to modern ASN.1 standards.
4711 */
4712static void
4713_fixup_anonymous_identifier(asn1p_expr_t *expr) {
4714 char *p;
4715 assert(expr->Identifier == 0);
4716
4717 /*
4718 * Try to figure out the type name
4719 * without going too much into details
4720 */
4721 expr->Identifier = ASN_EXPR_TYPE2STR(expr->expr_type);
4722 if(expr->reference && expr->reference->comp_count > 0)
4723 expr->Identifier = expr->reference->components[0].name;
4724
4725 fprintf(stderr,
4726 "WARNING: Line %d: expected lower-case member identifier, "
4727 "found an unnamed %s.\n"
4728 "WARNING: Obsolete X.208 syntax detected, "
4729 "please give the member a name.\n",
4730 yylineno, expr->Identifier ? expr->Identifier : "type");
4731
4732 if(!expr->Identifier)
4733 expr->Identifier = "unnamed";
4734 expr->Identifier = strdup(expr->Identifier);
4735 assert(expr->Identifier);
4736 /* Make a lowercase identifier from the type name */
4737 for(p = expr->Identifier; *p; p++) {
4738 switch(*p) {
4739 case 'A' ... 'Z': *p += 32; break;
4740 case ' ': *p = '_'; break;
4741 case '-': *p = '_'; break;
4742 }
4743 }
4744 fprintf(stderr, "NOTE: Assigning temporary identifier \"%s\". "
4745 "Name clash may occur later.\n",
4746 expr->Identifier);
4747}
4748
vlmfa67ddc2004-06-03 03:38:44 +00004749int
4750yyerror(const char *msg) {
vlm808411d2006-03-14 16:31:37 +00004751 extern char *asn1p_text;
vlmfa67ddc2004-06-03 03:38:44 +00004752 fprintf(stderr,
4753 "ASN.1 grammar parse error "
4754 "near line %d (token \"%s\"): %s\n",
vlm39e5ed72004-09-05 10:40:41 +00004755 yylineno, asn1p_text, msg);
vlmfa67ddc2004-06-03 03:38:44 +00004756 return -1;
4757}
4758
vlm1aeaddd2006-07-13 08:24:20 +00004759