1178825Sdfr/* A Bison parser, made by GNU Bison 2.3. */ 2178825Sdfr 3178825Sdfr/* Skeleton implementation for Bison's Yacc-like parsers in C 4178825Sdfr 5178825Sdfr Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 6178825Sdfr Free Software Foundation, Inc. 7178825Sdfr 8178825Sdfr This program is free software; you can redistribute it and/or modify 9178825Sdfr it under the terms of the GNU General Public License as published by 10178825Sdfr the Free Software Foundation; either version 2, or (at your option) 11178825Sdfr any later version. 12178825Sdfr 13178825Sdfr This program is distributed in the hope that it will be useful, 14178825Sdfr but WITHOUT ANY WARRANTY; without even the implied warranty of 15178825Sdfr MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16178825Sdfr GNU General Public License for more details. 17178825Sdfr 18178825Sdfr You should have received a copy of the GNU General Public License 19178825Sdfr along with this program; if not, write to the Free Software 20178825Sdfr Foundation, Inc., 51 Franklin Street, Fifth Floor, 21178825Sdfr Boston, MA 02110-1301, USA. */ 22178825Sdfr 23178825Sdfr/* As a special exception, you may create a larger work that contains 24178825Sdfr part or all of the Bison parser skeleton and distribute that work 25178825Sdfr under terms of your choice, so long as that work isn't itself a 26178825Sdfr parser generator using the skeleton or a modified version thereof 27178825Sdfr as a parser skeleton. Alternatively, if you modify or redistribute 28178825Sdfr the parser skeleton itself, you may (at your option) remove this 29178825Sdfr special exception, which will cause the skeleton and the resulting 30178825Sdfr Bison output files to be licensed under the GNU General Public 31178825Sdfr License without this special exception. 32178825Sdfr 33178825Sdfr This special exception was added by the Free Software Foundation in 34178825Sdfr version 2.2 of Bison. */ 35178825Sdfr 36178825Sdfr/* C LALR(1) parser skeleton written by Richard Stallman, by 37178825Sdfr simplifying the original so-called "semantic" parser. */ 38178825Sdfr 39178825Sdfr/* All symbols defined below should begin with yy or YY, to avoid 40178825Sdfr infringing on user name space. This should be done even for local 41178825Sdfr variables, as they might otherwise be expanded by user macros. 42178825Sdfr There are some unavoidable exceptions within include files to 43178825Sdfr define necessary library symbols; they are noted "INFRINGES ON 44178825Sdfr USER NAME SPACE" below. */ 45178825Sdfr 46178825Sdfr/* Identify Bison output. */ 47178825Sdfr#define YYBISON 1 48178825Sdfr 49178825Sdfr/* Bison version. */ 50178825Sdfr#define YYBISON_VERSION "2.3" 51178825Sdfr 52178825Sdfr/* Skeleton name. */ 53178825Sdfr#define YYSKELETON_NAME "yacc.c" 54178825Sdfr 55178825Sdfr/* Pure parsers. */ 56178825Sdfr#define YYPURE 0 57178825Sdfr 58178825Sdfr/* Using locations. */ 59178825Sdfr#define YYLSP_NEEDED 0 60178825Sdfr 61178825Sdfr 62178825Sdfr 63178825Sdfr/* Tokens. */ 64178825Sdfr#ifndef YYTOKENTYPE 65178825Sdfr# define YYTOKENTYPE 66178825Sdfr /* Put the tokens into the symbol table, so that GDB and other debuggers 67178825Sdfr know about them. */ 68178825Sdfr enum yytokentype { 69178825Sdfr kw_ABSENT = 258, 70178825Sdfr kw_ABSTRACT_SYNTAX = 259, 71178825Sdfr kw_ALL = 260, 72178825Sdfr kw_APPLICATION = 261, 73178825Sdfr kw_AUTOMATIC = 262, 74178825Sdfr kw_BEGIN = 263, 75178825Sdfr kw_BIT = 264, 76178825Sdfr kw_BMPString = 265, 77178825Sdfr kw_BOOLEAN = 266, 78178825Sdfr kw_BY = 267, 79178825Sdfr kw_CHARACTER = 268, 80178825Sdfr kw_CHOICE = 269, 81178825Sdfr kw_CLASS = 270, 82178825Sdfr kw_COMPONENT = 271, 83178825Sdfr kw_COMPONENTS = 272, 84178825Sdfr kw_CONSTRAINED = 273, 85178825Sdfr kw_CONTAINING = 274, 86178825Sdfr kw_DEFAULT = 275, 87178825Sdfr kw_DEFINITIONS = 276, 88178825Sdfr kw_EMBEDDED = 277, 89178825Sdfr kw_ENCODED = 278, 90178825Sdfr kw_END = 279, 91178825Sdfr kw_ENUMERATED = 280, 92178825Sdfr kw_EXCEPT = 281, 93178825Sdfr kw_EXPLICIT = 282, 94178825Sdfr kw_EXPORTS = 283, 95178825Sdfr kw_EXTENSIBILITY = 284, 96178825Sdfr kw_EXTERNAL = 285, 97178825Sdfr kw_FALSE = 286, 98178825Sdfr kw_FROM = 287, 99178825Sdfr kw_GeneralString = 288, 100178825Sdfr kw_GeneralizedTime = 289, 101178825Sdfr kw_GraphicString = 290, 102178825Sdfr kw_IA5String = 291, 103178825Sdfr kw_IDENTIFIER = 292, 104178825Sdfr kw_IMPLICIT = 293, 105178825Sdfr kw_IMPLIED = 294, 106178825Sdfr kw_IMPORTS = 295, 107178825Sdfr kw_INCLUDES = 296, 108178825Sdfr kw_INSTANCE = 297, 109178825Sdfr kw_INTEGER = 298, 110178825Sdfr kw_INTERSECTION = 299, 111178825Sdfr kw_ISO646String = 300, 112178825Sdfr kw_MAX = 301, 113178825Sdfr kw_MIN = 302, 114178825Sdfr kw_MINUS_INFINITY = 303, 115178825Sdfr kw_NULL = 304, 116178825Sdfr kw_NumericString = 305, 117178825Sdfr kw_OBJECT = 306, 118178825Sdfr kw_OCTET = 307, 119178825Sdfr kw_OF = 308, 120178825Sdfr kw_OPTIONAL = 309, 121178825Sdfr kw_ObjectDescriptor = 310, 122178825Sdfr kw_PATTERN = 311, 123178825Sdfr kw_PDV = 312, 124178825Sdfr kw_PLUS_INFINITY = 313, 125178825Sdfr kw_PRESENT = 314, 126178825Sdfr kw_PRIVATE = 315, 127178825Sdfr kw_PrintableString = 316, 128178825Sdfr kw_REAL = 317, 129178825Sdfr kw_RELATIVE_OID = 318, 130178825Sdfr kw_SEQUENCE = 319, 131178825Sdfr kw_SET = 320, 132178825Sdfr kw_SIZE = 321, 133178825Sdfr kw_STRING = 322, 134178825Sdfr kw_SYNTAX = 323, 135178825Sdfr kw_T61String = 324, 136178825Sdfr kw_TAGS = 325, 137178825Sdfr kw_TRUE = 326, 138178825Sdfr kw_TYPE_IDENTIFIER = 327, 139178825Sdfr kw_TeletexString = 328, 140178825Sdfr kw_UNION = 329, 141178825Sdfr kw_UNIQUE = 330, 142178825Sdfr kw_UNIVERSAL = 331, 143178825Sdfr kw_UTCTime = 332, 144178825Sdfr kw_UTF8String = 333, 145178825Sdfr kw_UniversalString = 334, 146178825Sdfr kw_VideotexString = 335, 147178825Sdfr kw_VisibleString = 336, 148178825Sdfr kw_WITH = 337, 149178825Sdfr RANGE = 338, 150178825Sdfr EEQUAL = 339, 151178825Sdfr ELLIPSIS = 340, 152178825Sdfr IDENTIFIER = 341, 153178825Sdfr referencename = 342, 154178825Sdfr STRING = 343, 155178825Sdfr NUMBER = 344 156178825Sdfr }; 157178825Sdfr#endif 158178825Sdfr/* Tokens. */ 159178825Sdfr#define kw_ABSENT 258 160178825Sdfr#define kw_ABSTRACT_SYNTAX 259 161178825Sdfr#define kw_ALL 260 162178825Sdfr#define kw_APPLICATION 261 163178825Sdfr#define kw_AUTOMATIC 262 164178825Sdfr#define kw_BEGIN 263 165178825Sdfr#define kw_BIT 264 166178825Sdfr#define kw_BMPString 265 167178825Sdfr#define kw_BOOLEAN 266 168178825Sdfr#define kw_BY 267 169178825Sdfr#define kw_CHARACTER 268 170178825Sdfr#define kw_CHOICE 269 171178825Sdfr#define kw_CLASS 270 172178825Sdfr#define kw_COMPONENT 271 173178825Sdfr#define kw_COMPONENTS 272 174178825Sdfr#define kw_CONSTRAINED 273 175178825Sdfr#define kw_CONTAINING 274 176178825Sdfr#define kw_DEFAULT 275 177178825Sdfr#define kw_DEFINITIONS 276 178178825Sdfr#define kw_EMBEDDED 277 179178825Sdfr#define kw_ENCODED 278 180178825Sdfr#define kw_END 279 181178825Sdfr#define kw_ENUMERATED 280 182178825Sdfr#define kw_EXCEPT 281 183178825Sdfr#define kw_EXPLICIT 282 184178825Sdfr#define kw_EXPORTS 283 185178825Sdfr#define kw_EXTENSIBILITY 284 186178825Sdfr#define kw_EXTERNAL 285 187178825Sdfr#define kw_FALSE 286 188178825Sdfr#define kw_FROM 287 189178825Sdfr#define kw_GeneralString 288 190178825Sdfr#define kw_GeneralizedTime 289 191178825Sdfr#define kw_GraphicString 290 192178825Sdfr#define kw_IA5String 291 193178825Sdfr#define kw_IDENTIFIER 292 194178825Sdfr#define kw_IMPLICIT 293 195178825Sdfr#define kw_IMPLIED 294 196178825Sdfr#define kw_IMPORTS 295 197178825Sdfr#define kw_INCLUDES 296 198178825Sdfr#define kw_INSTANCE 297 199178825Sdfr#define kw_INTEGER 298 200178825Sdfr#define kw_INTERSECTION 299 201178825Sdfr#define kw_ISO646String 300 202178825Sdfr#define kw_MAX 301 203178825Sdfr#define kw_MIN 302 204178825Sdfr#define kw_MINUS_INFINITY 303 205178825Sdfr#define kw_NULL 304 206178825Sdfr#define kw_NumericString 305 207178825Sdfr#define kw_OBJECT 306 208178825Sdfr#define kw_OCTET 307 209178825Sdfr#define kw_OF 308 210178825Sdfr#define kw_OPTIONAL 309 211178825Sdfr#define kw_ObjectDescriptor 310 212178825Sdfr#define kw_PATTERN 311 213178825Sdfr#define kw_PDV 312 214178825Sdfr#define kw_PLUS_INFINITY 313 215178825Sdfr#define kw_PRESENT 314 216178825Sdfr#define kw_PRIVATE 315 217178825Sdfr#define kw_PrintableString 316 218178825Sdfr#define kw_REAL 317 219178825Sdfr#define kw_RELATIVE_OID 318 220178825Sdfr#define kw_SEQUENCE 319 221178825Sdfr#define kw_SET 320 222178825Sdfr#define kw_SIZE 321 223178825Sdfr#define kw_STRING 322 224178825Sdfr#define kw_SYNTAX 323 225178825Sdfr#define kw_T61String 324 226178825Sdfr#define kw_TAGS 325 227178825Sdfr#define kw_TRUE 326 228178825Sdfr#define kw_TYPE_IDENTIFIER 327 229178825Sdfr#define kw_TeletexString 328 230178825Sdfr#define kw_UNION 329 231178825Sdfr#define kw_UNIQUE 330 232178825Sdfr#define kw_UNIVERSAL 331 233178825Sdfr#define kw_UTCTime 332 234178825Sdfr#define kw_UTF8String 333 235178825Sdfr#define kw_UniversalString 334 236178825Sdfr#define kw_VideotexString 335 237178825Sdfr#define kw_VisibleString 336 238178825Sdfr#define kw_WITH 337 239178825Sdfr#define RANGE 338 240178825Sdfr#define EEQUAL 339 241178825Sdfr#define ELLIPSIS 340 242178825Sdfr#define IDENTIFIER 341 243178825Sdfr#define referencename 342 244178825Sdfr#define STRING 343 245178825Sdfr#define NUMBER 344 246178825Sdfr 247178825Sdfr 248178825Sdfr 249178825Sdfr 250178825Sdfr/* Copy the first part of user declarations. */ 251178825Sdfr#line 36 "parse.y" 252178825Sdfr 253178825Sdfr#ifdef HAVE_CONFIG_H 254178825Sdfr#include <config.h> 255178825Sdfr#endif 256178825Sdfr#include <stdio.h> 257178825Sdfr#include <stdlib.h> 258178825Sdfr#include <string.h> 259178825Sdfr#include "symbol.h" 260178825Sdfr#include "lex.h" 261178825Sdfr#include "gen_locl.h" 262178825Sdfr#include "der.h" 263178825Sdfr 264178825SdfrRCSID("$Id: parse.y 21597 2007-07-16 18:48:58Z lha $"); 265178825Sdfr 266178825Sdfrstatic Type *new_type (Typetype t); 267178825Sdfrstatic struct constraint_spec *new_constraint_spec(enum ctype); 268178825Sdfrstatic Type *new_tag(int tagclass, int tagvalue, int tagenv, Type *oldtype); 269178825Sdfrvoid yyerror (const char *); 270178825Sdfrstatic struct objid *new_objid(const char *label, int value); 271178825Sdfrstatic void add_oid_to_tail(struct objid *, struct objid *); 272178825Sdfrstatic void fix_labels(Symbol *s); 273178825Sdfr 274178825Sdfrstruct string_list { 275178825Sdfr char *string; 276178825Sdfr struct string_list *next; 277178825Sdfr}; 278178825Sdfr 279178825Sdfr 280178825Sdfr 281178825Sdfr/* Enabling traces. */ 282178825Sdfr#ifndef YYDEBUG 283178825Sdfr# define YYDEBUG 1 284178825Sdfr#endif 285178825Sdfr 286178825Sdfr/* Enabling verbose error messages. */ 287178825Sdfr#ifdef YYERROR_VERBOSE 288178825Sdfr# undef YYERROR_VERBOSE 289178825Sdfr# define YYERROR_VERBOSE 1 290178825Sdfr#else 291178825Sdfr# define YYERROR_VERBOSE 0 292178825Sdfr#endif 293178825Sdfr 294178825Sdfr/* Enabling the token table. */ 295178825Sdfr#ifndef YYTOKEN_TABLE 296178825Sdfr# define YYTOKEN_TABLE 0 297178825Sdfr#endif 298178825Sdfr 299178825Sdfr#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 300178825Sdfrtypedef union YYSTYPE 301178825Sdfr#line 65 "parse.y" 302178825Sdfr{ 303178825Sdfr int constant; 304178825Sdfr struct value *value; 305178825Sdfr struct range *range; 306178825Sdfr char *name; 307178825Sdfr Type *type; 308178825Sdfr Member *member; 309178825Sdfr struct objid *objid; 310178825Sdfr char *defval; 311178825Sdfr struct string_list *sl; 312178825Sdfr struct tagtype tag; 313178825Sdfr struct memhead *members; 314178825Sdfr struct constraint_spec *constraint_spec; 315178825Sdfr} 316178825Sdfr/* Line 193 of yacc.c. */ 317178825Sdfr#line 318 "parse.c" 318178825Sdfr YYSTYPE; 319178825Sdfr# define yystype YYSTYPE /* obsolescent; will be withdrawn */ 320178825Sdfr# define YYSTYPE_IS_DECLARED 1 321178825Sdfr# define YYSTYPE_IS_TRIVIAL 1 322178825Sdfr#endif 323178825Sdfr 324178825Sdfr 325178825Sdfr 326178825Sdfr/* Copy the second part of user declarations. */ 327178825Sdfr 328178825Sdfr 329178825Sdfr/* Line 216 of yacc.c. */ 330178825Sdfr#line 331 "parse.c" 331178825Sdfr 332178825Sdfr#ifdef short 333178825Sdfr# undef short 334178825Sdfr#endif 335178825Sdfr 336178825Sdfr#ifdef YYTYPE_UINT8 337178825Sdfrtypedef YYTYPE_UINT8 yytype_uint8; 338178825Sdfr#else 339178825Sdfrtypedef unsigned char yytype_uint8; 340178825Sdfr#endif 341178825Sdfr 342178825Sdfr#ifdef YYTYPE_INT8 343178825Sdfrtypedef YYTYPE_INT8 yytype_int8; 344178825Sdfr#elif (defined __STDC__ || defined __C99__FUNC__ \ 345178825Sdfr || defined __cplusplus || defined _MSC_VER) 346178825Sdfrtypedef signed char yytype_int8; 347178825Sdfr#else 348178825Sdfrtypedef short int yytype_int8; 349178825Sdfr#endif 350178825Sdfr 351178825Sdfr#ifdef YYTYPE_UINT16 352178825Sdfrtypedef YYTYPE_UINT16 yytype_uint16; 353178825Sdfr#else 354178825Sdfrtypedef unsigned short int yytype_uint16; 355178825Sdfr#endif 356178825Sdfr 357178825Sdfr#ifdef YYTYPE_INT16 358178825Sdfrtypedef YYTYPE_INT16 yytype_int16; 359178825Sdfr#else 360178825Sdfrtypedef short int yytype_int16; 361178825Sdfr#endif 362178825Sdfr 363178825Sdfr#ifndef YYSIZE_T 364178825Sdfr# ifdef __SIZE_TYPE__ 365178825Sdfr# define YYSIZE_T __SIZE_TYPE__ 366178825Sdfr# elif defined size_t 367178825Sdfr# define YYSIZE_T size_t 368178825Sdfr# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 369178825Sdfr || defined __cplusplus || defined _MSC_VER) 370178825Sdfr# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 371178825Sdfr# define YYSIZE_T size_t 372178825Sdfr# else 373178825Sdfr# define YYSIZE_T unsigned int 374178825Sdfr# endif 375178825Sdfr#endif 376178825Sdfr 377178825Sdfr#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 378178825Sdfr 379178825Sdfr#ifndef YY_ 380178825Sdfr# if defined YYENABLE_NLS && YYENABLE_NLS 381178825Sdfr# if ENABLE_NLS 382178825Sdfr# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 383178825Sdfr# define YY_(msgid) dgettext ("bison-runtime", msgid) 384178825Sdfr# endif 385178825Sdfr# endif 386178825Sdfr# ifndef YY_ 387178825Sdfr# define YY_(msgid) msgid 388178825Sdfr# endif 389178825Sdfr#endif 390178825Sdfr 391178825Sdfr/* Suppress unused-variable warnings by "using" E. */ 392178825Sdfr#if ! defined lint || defined __GNUC__ 393178825Sdfr# define YYUSE(e) ((void) (e)) 394178825Sdfr#else 395178825Sdfr# define YYUSE(e) /* empty */ 396178825Sdfr#endif 397178825Sdfr 398178825Sdfr/* Identity function, used to suppress warnings about constant conditions. */ 399178825Sdfr#ifndef lint 400178825Sdfr# define YYID(n) (n) 401178825Sdfr#else 402178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \ 403178825Sdfr || defined __cplusplus || defined _MSC_VER) 404178825Sdfrstatic int 405178825SdfrYYID (int i) 406178825Sdfr#else 407178825Sdfrstatic int 408178825SdfrYYID (i) 409178825Sdfr int i; 410178825Sdfr#endif 411178825Sdfr{ 412178825Sdfr return i; 413178825Sdfr} 414178825Sdfr#endif 415178825Sdfr 416178825Sdfr#if ! defined yyoverflow || YYERROR_VERBOSE 417178825Sdfr 418178825Sdfr/* The parser invokes alloca or malloc; define the necessary symbols. */ 419178825Sdfr 420178825Sdfr# ifdef YYSTACK_USE_ALLOCA 421178825Sdfr# if YYSTACK_USE_ALLOCA 422178825Sdfr# ifdef __GNUC__ 423178825Sdfr# define YYSTACK_ALLOC __builtin_alloca 424178825Sdfr# elif defined __BUILTIN_VA_ARG_INCR 425178825Sdfr# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 426178825Sdfr# elif defined _AIX 427178825Sdfr# define YYSTACK_ALLOC __alloca 428178825Sdfr# elif defined _MSC_VER 429178825Sdfr# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 430178825Sdfr# define alloca _alloca 431178825Sdfr# else 432178825Sdfr# define YYSTACK_ALLOC alloca 433178825Sdfr# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 434178825Sdfr || defined __cplusplus || defined _MSC_VER) 435178825Sdfr# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 436178825Sdfr# ifndef _STDLIB_H 437178825Sdfr# define _STDLIB_H 1 438178825Sdfr# endif 439178825Sdfr# endif 440178825Sdfr# endif 441178825Sdfr# endif 442178825Sdfr# endif 443178825Sdfr 444178825Sdfr# ifdef YYSTACK_ALLOC 445178825Sdfr /* Pacify GCC's `empty if-body' warning. */ 446178825Sdfr# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) 447178825Sdfr# ifndef YYSTACK_ALLOC_MAXIMUM 448178825Sdfr /* The OS might guarantee only one guard page at the bottom of the stack, 449178825Sdfr and a page size can be as small as 4096 bytes. So we cannot safely 450178825Sdfr invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 451178825Sdfr to allow for a few compiler-allocated temporary stack slots. */ 452178825Sdfr# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 453178825Sdfr# endif 454178825Sdfr# else 455178825Sdfr# define YYSTACK_ALLOC YYMALLOC 456178825Sdfr# define YYSTACK_FREE YYFREE 457178825Sdfr# ifndef YYSTACK_ALLOC_MAXIMUM 458178825Sdfr# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 459178825Sdfr# endif 460178825Sdfr# if (defined __cplusplus && ! defined _STDLIB_H \ 461178825Sdfr && ! ((defined YYMALLOC || defined malloc) \ 462178825Sdfr && (defined YYFREE || defined free))) 463178825Sdfr# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 464178825Sdfr# ifndef _STDLIB_H 465178825Sdfr# define _STDLIB_H 1 466178825Sdfr# endif 467178825Sdfr# endif 468178825Sdfr# ifndef YYMALLOC 469178825Sdfr# define YYMALLOC malloc 470178825Sdfr# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 471178825Sdfr || defined __cplusplus || defined _MSC_VER) 472178825Sdfrvoid *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 473178825Sdfr# endif 474178825Sdfr# endif 475178825Sdfr# ifndef YYFREE 476178825Sdfr# define YYFREE free 477178825Sdfr# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 478178825Sdfr || defined __cplusplus || defined _MSC_VER) 479178825Sdfrvoid free (void *); /* INFRINGES ON USER NAME SPACE */ 480178825Sdfr# endif 481178825Sdfr# endif 482178825Sdfr# endif 483178825Sdfr#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 484178825Sdfr 485178825Sdfr 486178825Sdfr#if (! defined yyoverflow \ 487178825Sdfr && (! defined __cplusplus \ 488178825Sdfr || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 489178825Sdfr 490178825Sdfr/* A type that is properly aligned for any stack member. */ 491178825Sdfrunion yyalloc 492178825Sdfr{ 493178825Sdfr yytype_int16 yyss; 494178825Sdfr YYSTYPE yyvs; 495178825Sdfr }; 496178825Sdfr 497178825Sdfr/* The size of the maximum gap between one aligned stack and the next. */ 498178825Sdfr# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 499178825Sdfr 500178825Sdfr/* The size of an array large to enough to hold all stacks, each with 501178825Sdfr N elements. */ 502178825Sdfr# define YYSTACK_BYTES(N) \ 503178825Sdfr ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ 504178825Sdfr + YYSTACK_GAP_MAXIMUM) 505178825Sdfr 506178825Sdfr/* Copy COUNT objects from FROM to TO. The source and destination do 507178825Sdfr not overlap. */ 508178825Sdfr# ifndef YYCOPY 509178825Sdfr# if defined __GNUC__ && 1 < __GNUC__ 510178825Sdfr# define YYCOPY(To, From, Count) \ 511178825Sdfr __builtin_memcpy (To, From, (Count) * sizeof (*(From))) 512178825Sdfr# else 513178825Sdfr# define YYCOPY(To, From, Count) \ 514178825Sdfr do \ 515178825Sdfr { \ 516178825Sdfr YYSIZE_T yyi; \ 517178825Sdfr for (yyi = 0; yyi < (Count); yyi++) \ 518178825Sdfr (To)[yyi] = (From)[yyi]; \ 519178825Sdfr } \ 520178825Sdfr while (YYID (0)) 521178825Sdfr# endif 522178825Sdfr# endif 523178825Sdfr 524178825Sdfr/* Relocate STACK from its old location to the new one. The 525178825Sdfr local variables YYSIZE and YYSTACKSIZE give the old and new number of 526178825Sdfr elements in the stack, and YYPTR gives the new location of the 527178825Sdfr stack. Advance YYPTR to a properly aligned location for the next 528178825Sdfr stack. */ 529178825Sdfr# define YYSTACK_RELOCATE(Stack) \ 530178825Sdfr do \ 531178825Sdfr { \ 532178825Sdfr YYSIZE_T yynewbytes; \ 533178825Sdfr YYCOPY (&yyptr->Stack, Stack, yysize); \ 534178825Sdfr Stack = &yyptr->Stack; \ 535178825Sdfr yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 536178825Sdfr yyptr += yynewbytes / sizeof (*yyptr); \ 537178825Sdfr } \ 538178825Sdfr while (YYID (0)) 539178825Sdfr 540178825Sdfr#endif 541178825Sdfr 542178825Sdfr/* YYFINAL -- State number of the termination state. */ 543178825Sdfr#define YYFINAL 6 544178825Sdfr/* YYLAST -- Last index in YYTABLE. */ 545178825Sdfr#define YYLAST 195 546178825Sdfr 547178825Sdfr/* YYNTOKENS -- Number of terminals. */ 548178825Sdfr#define YYNTOKENS 98 549178825Sdfr/* YYNNTS -- Number of nonterminals. */ 550178825Sdfr#define YYNNTS 68 551178825Sdfr/* YYNRULES -- Number of rules. */ 552178825Sdfr#define YYNRULES 136 553178825Sdfr/* YYNRULES -- Number of states. */ 554178825Sdfr#define YYNSTATES 214 555178825Sdfr 556178825Sdfr/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 557178825Sdfr#define YYUNDEFTOK 2 558178825Sdfr#define YYMAXUTOK 344 559178825Sdfr 560178825Sdfr#define YYTRANSLATE(YYX) \ 561178825Sdfr ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 562178825Sdfr 563178825Sdfr/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 564178825Sdfrstatic const yytype_uint8 yytranslate[] = 565178825Sdfr{ 566178825Sdfr 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 567178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 568178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 569178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 570178825Sdfr 92, 93, 2, 2, 91, 2, 2, 2, 2, 2, 571178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 90, 572178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 573178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 574178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 575178825Sdfr 2, 96, 2, 97, 2, 2, 2, 2, 2, 2, 576178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 577178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 578178825Sdfr 2, 2, 2, 94, 2, 95, 2, 2, 2, 2, 579178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 580178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 581178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 582178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 583178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 584178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 585178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 586178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 587178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 588178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 589178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 590178825Sdfr 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 591178825Sdfr 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 592178825Sdfr 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 593178825Sdfr 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 594178825Sdfr 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 595178825Sdfr 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 596178825Sdfr 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 597178825Sdfr 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 598178825Sdfr 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 599178825Sdfr 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 600178825Sdfr 85, 86, 87, 88, 89 601178825Sdfr}; 602178825Sdfr 603178825Sdfr#if YYDEBUG 604178825Sdfr/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 605178825Sdfr YYRHS. */ 606178825Sdfrstatic const yytype_uint16 yyprhs[] = 607178825Sdfr{ 608178825Sdfr 0, 0, 3, 13, 16, 19, 22, 23, 26, 27, 609178825Sdfr 30, 31, 35, 36, 38, 39, 41, 44, 49, 51, 610178825Sdfr 54, 56, 58, 62, 64, 68, 70, 72, 74, 76, 611178825Sdfr 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 612178825Sdfr 98, 100, 102, 104, 110, 116, 122, 126, 128, 131, 613178825Sdfr 136, 138, 142, 146, 151, 156, 158, 161, 167, 170, 614178825Sdfr 174, 176, 177, 180, 185, 189, 194, 199, 203, 207, 615178825Sdfr 212, 214, 216, 218, 220, 222, 225, 229, 231, 233, 616178825Sdfr 235, 238, 242, 248, 253, 257, 262, 263, 265, 267, 617178825Sdfr 269, 270, 272, 274, 279, 281, 283, 285, 287, 289, 618178825Sdfr 291, 293, 295, 297, 301, 305, 308, 310, 313, 317, 619178825Sdfr 319, 323, 328, 330, 331, 335, 336, 339, 344, 346, 620178825Sdfr 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 621178825Sdfr 368, 370, 372, 374, 376, 378, 380 622178825Sdfr}; 623178825Sdfr 624178825Sdfr/* YYRHS -- A `-1'-separated list of the rules' RHS. */ 625178825Sdfrstatic const yytype_int16 yyrhs[] = 626178825Sdfr{ 627178825Sdfr 99, 0, -1, 86, 151, 21, 100, 101, 84, 8, 628178825Sdfr 102, 24, -1, 27, 70, -1, 38, 70, -1, 7, 629178825Sdfr 70, -1, -1, 29, 39, -1, -1, 103, 107, -1, 630178825Sdfr -1, 40, 104, 90, -1, -1, 105, -1, -1, 106, 631178825Sdfr -1, 105, 106, -1, 109, 32, 86, 151, -1, 108, 632178825Sdfr -1, 108, 107, -1, 110, -1, 143, -1, 86, 91, 633178825Sdfr 109, -1, 86, -1, 86, 84, 111, -1, 112, -1, 634178825Sdfr 130, -1, 133, -1, 120, -1, 113, -1, 144, -1, 635178825Sdfr 129, -1, 118, -1, 115, -1, 123, -1, 121, -1, 636178825Sdfr 122, -1, 125, -1, 126, -1, 127, -1, 128, -1, 637178825Sdfr 139, -1, 11, -1, 92, 155, 83, 155, 93, -1, 638178825Sdfr 92, 155, 83, 46, 93, -1, 92, 47, 83, 155, 639178825Sdfr 93, -1, 92, 155, 93, -1, 43, -1, 43, 114, 640178825Sdfr -1, 43, 94, 116, 95, -1, 117, -1, 116, 91, 641178825Sdfr 117, -1, 116, 91, 85, -1, 86, 92, 163, 93, 642178825Sdfr -1, 25, 94, 119, 95, -1, 116, -1, 9, 67, 643178825Sdfr -1, 9, 67, 94, 149, 95, -1, 51, 37, -1, 644178825Sdfr 52, 67, 124, -1, 49, -1, -1, 66, 114, -1, 645178825Sdfr 64, 94, 146, 95, -1, 64, 94, 95, -1, 64, 646178825Sdfr 124, 53, 111, -1, 65, 94, 146, 95, -1, 65, 647178825Sdfr 94, 95, -1, 65, 53, 111, -1, 14, 94, 146, 648178825Sdfr 95, -1, 131, -1, 132, -1, 86, -1, 34, -1, 649178825Sdfr 77, -1, 111, 134, -1, 92, 135, 93, -1, 136, 650178825Sdfr -1, 137, -1, 138, -1, 19, 111, -1, 23, 12, 651178825Sdfr 155, -1, 19, 111, 23, 12, 155, -1, 18, 12, 652178825Sdfr 94, 95, -1, 140, 142, 111, -1, 96, 141, 89, 653178825Sdfr 97, -1, -1, 76, -1, 6, -1, 60, -1, -1, 654178825Sdfr 27, -1, 38, -1, 86, 111, 84, 155, -1, 145, 655178825Sdfr -1, 33, -1, 78, -1, 61, -1, 81, -1, 36, 656178825Sdfr -1, 10, -1, 79, -1, 148, -1, 146, 91, 148, 657178825Sdfr -1, 146, 91, 85, -1, 86, 111, -1, 147, -1, 658178825Sdfr 147, 54, -1, 147, 20, 155, -1, 150, -1, 149, 659178825Sdfr 91, 150, -1, 86, 92, 89, 93, -1, 152, -1, 660178825Sdfr -1, 94, 153, 95, -1, -1, 154, 153, -1, 86, 661178825Sdfr 92, 89, 93, -1, 86, -1, 89, -1, 156, -1, 662178825Sdfr 157, -1, 161, -1, 160, -1, 162, -1, 165, -1, 663178825Sdfr 164, -1, 158, -1, 159, -1, 86, -1, 88, -1, 664178825Sdfr 71, -1, 31, -1, 163, -1, 89, -1, 49, -1, 665178825Sdfr 152, -1 666178825Sdfr}; 667178825Sdfr 668178825Sdfr/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 669178825Sdfrstatic const yytype_uint16 yyrline[] = 670178825Sdfr{ 671178825Sdfr 0, 233, 233, 240, 241, 243, 245, 248, 250, 253, 672178825Sdfr 254, 257, 258, 261, 262, 265, 266, 269, 280, 281, 673178825Sdfr 284, 285, 288, 294, 302, 312, 313, 314, 317, 318, 674178825Sdfr 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 675178825Sdfr 329, 330, 333, 340, 350, 358, 366, 377, 382, 388, 676178825Sdfr 396, 402, 407, 411, 424, 432, 435, 442, 450, 456, 677178825Sdfr 465, 473, 474, 479, 485, 493, 502, 508, 516, 524, 678178825Sdfr 531, 532, 535, 546, 551, 558, 574, 580, 583, 584, 679178825Sdfr 587, 593, 601, 611, 617, 630, 639, 642, 646, 650, 680178825Sdfr 657, 660, 664, 671, 682, 685, 690, 695, 700, 705, 681178825Sdfr 710, 715, 723, 729, 734, 745, 756, 762, 768, 776, 682178825Sdfr 782, 789, 802, 803, 806, 813, 816, 827, 831, 842, 683178825Sdfr 848, 849, 852, 853, 854, 855, 856, 859, 862, 865, 684178825Sdfr 876, 884, 890, 898, 906, 909, 914 685178825Sdfr}; 686178825Sdfr#endif 687178825Sdfr 688178825Sdfr#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 689178825Sdfr/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 690178825Sdfr First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 691178825Sdfrstatic const char *const yytname[] = 692178825Sdfr{ 693178825Sdfr "$end", "error", "$undefined", "kw_ABSENT", "kw_ABSTRACT_SYNTAX", 694178825Sdfr "kw_ALL", "kw_APPLICATION", "kw_AUTOMATIC", "kw_BEGIN", "kw_BIT", 695178825Sdfr "kw_BMPString", "kw_BOOLEAN", "kw_BY", "kw_CHARACTER", "kw_CHOICE", 696178825Sdfr "kw_CLASS", "kw_COMPONENT", "kw_COMPONENTS", "kw_CONSTRAINED", 697178825Sdfr "kw_CONTAINING", "kw_DEFAULT", "kw_DEFINITIONS", "kw_EMBEDDED", 698178825Sdfr "kw_ENCODED", "kw_END", "kw_ENUMERATED", "kw_EXCEPT", "kw_EXPLICIT", 699178825Sdfr "kw_EXPORTS", "kw_EXTENSIBILITY", "kw_EXTERNAL", "kw_FALSE", "kw_FROM", 700178825Sdfr "kw_GeneralString", "kw_GeneralizedTime", "kw_GraphicString", 701178825Sdfr "kw_IA5String", "kw_IDENTIFIER", "kw_IMPLICIT", "kw_IMPLIED", 702178825Sdfr "kw_IMPORTS", "kw_INCLUDES", "kw_INSTANCE", "kw_INTEGER", 703178825Sdfr "kw_INTERSECTION", "kw_ISO646String", "kw_MAX", "kw_MIN", 704178825Sdfr "kw_MINUS_INFINITY", "kw_NULL", "kw_NumericString", "kw_OBJECT", 705178825Sdfr "kw_OCTET", "kw_OF", "kw_OPTIONAL", "kw_ObjectDescriptor", "kw_PATTERN", 706178825Sdfr "kw_PDV", "kw_PLUS_INFINITY", "kw_PRESENT", "kw_PRIVATE", 707178825Sdfr "kw_PrintableString", "kw_REAL", "kw_RELATIVE_OID", "kw_SEQUENCE", 708178825Sdfr "kw_SET", "kw_SIZE", "kw_STRING", "kw_SYNTAX", "kw_T61String", "kw_TAGS", 709178825Sdfr "kw_TRUE", "kw_TYPE_IDENTIFIER", "kw_TeletexString", "kw_UNION", 710178825Sdfr "kw_UNIQUE", "kw_UNIVERSAL", "kw_UTCTime", "kw_UTF8String", 711178825Sdfr "kw_UniversalString", "kw_VideotexString", "kw_VisibleString", "kw_WITH", 712178825Sdfr "RANGE", "EEQUAL", "ELLIPSIS", "IDENTIFIER", "referencename", "STRING", 713178825Sdfr "NUMBER", "';'", "','", "'('", "')'", "'{'", "'}'", "'['", "']'", 714178825Sdfr "$accept", "ModuleDefinition", "TagDefault", "ExtensionDefault", 715178825Sdfr "ModuleBody", "Imports", "SymbolsImported", "SymbolsFromModuleList", 716178825Sdfr "SymbolsFromModule", "AssignmentList", "Assignment", "referencenames", 717178825Sdfr "TypeAssignment", "Type", "BuiltinType", "BooleanType", "range", 718178825Sdfr "IntegerType", "NamedNumberList", "NamedNumber", "EnumeratedType", 719178825Sdfr "Enumerations", "BitStringType", "ObjectIdentifierType", 720178825Sdfr "OctetStringType", "NullType", "size", "SequenceType", "SequenceOfType", 721178825Sdfr "SetType", "SetOfType", "ChoiceType", "ReferencedType", "DefinedType", 722178825Sdfr "UsefulType", "ConstrainedType", "Constraint", "ConstraintSpec", 723178825Sdfr "GeneralConstraint", "ContentsConstraint", "UserDefinedConstraint", 724178825Sdfr "TaggedType", "Tag", "Class", "tagenv", "ValueAssignment", 725178825Sdfr "CharacterStringType", "RestrictedCharactedStringType", 726178825Sdfr "ComponentTypeList", "NamedType", "ComponentType", "NamedBitList", 727178825Sdfr "NamedBit", "objid_opt", "objid", "objid_list", "objid_element", "Value", 728178825Sdfr "BuiltinValue", "ReferencedValue", "DefinedValue", "Valuereference", 729178825Sdfr "CharacterStringValue", "BooleanValue", "IntegerValue", "SignedNumber", 730178825Sdfr "NullValue", "ObjectIdentifierValue", 0 731178825Sdfr}; 732178825Sdfr#endif 733178825Sdfr 734178825Sdfr# ifdef YYPRINT 735178825Sdfr/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 736178825Sdfr token YYLEX-NUM. */ 737178825Sdfrstatic const yytype_uint16 yytoknum[] = 738178825Sdfr{ 739178825Sdfr 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 740178825Sdfr 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 741178825Sdfr 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 742178825Sdfr 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 743178825Sdfr 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 744178825Sdfr 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 745178825Sdfr 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 746178825Sdfr 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 747178825Sdfr 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 748178825Sdfr 59, 44, 40, 41, 123, 125, 91, 93 749178825Sdfr}; 750178825Sdfr# endif 751178825Sdfr 752178825Sdfr/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 753178825Sdfrstatic const yytype_uint8 yyr1[] = 754178825Sdfr{ 755178825Sdfr 0, 98, 99, 100, 100, 100, 100, 101, 101, 102, 756178825Sdfr 102, 103, 103, 104, 104, 105, 105, 106, 107, 107, 757178825Sdfr 108, 108, 109, 109, 110, 111, 111, 111, 112, 112, 758178825Sdfr 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 759178825Sdfr 112, 112, 113, 114, 114, 114, 114, 115, 115, 115, 760178825Sdfr 116, 116, 116, 117, 118, 119, 120, 120, 121, 122, 761178825Sdfr 123, 124, 124, 125, 125, 126, 127, 127, 128, 129, 762178825Sdfr 130, 130, 131, 132, 132, 133, 134, 135, 136, 136, 763178825Sdfr 137, 137, 137, 138, 139, 140, 141, 141, 141, 141, 764178825Sdfr 142, 142, 142, 143, 144, 145, 145, 145, 145, 145, 765178825Sdfr 145, 145, 146, 146, 146, 147, 148, 148, 148, 149, 766178825Sdfr 149, 150, 151, 151, 152, 153, 153, 154, 154, 154, 767178825Sdfr 155, 155, 156, 156, 156, 156, 156, 157, 158, 159, 768178825Sdfr 160, 161, 161, 162, 163, 164, 165 769178825Sdfr}; 770178825Sdfr 771178825Sdfr/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 772178825Sdfrstatic const yytype_uint8 yyr2[] = 773178825Sdfr{ 774178825Sdfr 0, 2, 9, 2, 2, 2, 0, 2, 0, 2, 775178825Sdfr 0, 3, 0, 1, 0, 1, 2, 4, 1, 2, 776178825Sdfr 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 777178825Sdfr 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 778178825Sdfr 1, 1, 1, 5, 5, 5, 3, 1, 2, 4, 779178825Sdfr 1, 3, 3, 4, 4, 1, 2, 5, 2, 3, 780178825Sdfr 1, 0, 2, 4, 3, 4, 4, 3, 3, 4, 781178825Sdfr 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 782178825Sdfr 2, 3, 5, 4, 3, 4, 0, 1, 1, 1, 783178825Sdfr 0, 1, 1, 4, 1, 1, 1, 1, 1, 1, 784178825Sdfr 1, 1, 1, 3, 3, 2, 1, 2, 3, 1, 785178825Sdfr 3, 4, 1, 0, 3, 0, 2, 4, 1, 1, 786178825Sdfr 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 787178825Sdfr 1, 1, 1, 1, 1, 1, 1 788178825Sdfr}; 789178825Sdfr 790178825Sdfr/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state 791178825Sdfr STATE-NUM when YYTABLE doesn't specify something else to do. Zero 792178825Sdfr means the default is an error. */ 793178825Sdfrstatic const yytype_uint8 yydefact[] = 794178825Sdfr{ 795178825Sdfr 0, 113, 0, 115, 0, 112, 1, 118, 119, 0, 796178825Sdfr 115, 6, 0, 114, 116, 0, 0, 0, 8, 0, 797178825Sdfr 5, 3, 4, 0, 0, 117, 7, 0, 10, 14, 798178825Sdfr 0, 0, 23, 0, 13, 15, 0, 2, 0, 9, 799178825Sdfr 18, 20, 21, 0, 11, 16, 0, 0, 100, 42, 800178825Sdfr 0, 0, 95, 73, 99, 47, 60, 0, 0, 97, 801178825Sdfr 61, 0, 74, 96, 101, 98, 0, 72, 86, 0, 802178825Sdfr 25, 29, 33, 32, 28, 35, 36, 34, 37, 38, 803178825Sdfr 39, 40, 31, 26, 70, 71, 27, 41, 90, 30, 804178825Sdfr 94, 19, 22, 113, 56, 0, 0, 0, 0, 48, 805178825Sdfr 58, 61, 0, 0, 0, 0, 0, 24, 88, 89, 806178825Sdfr 87, 0, 0, 0, 75, 91, 92, 0, 17, 0, 807178825Sdfr 0, 0, 106, 102, 0, 55, 50, 0, 132, 0, 808178825Sdfr 135, 131, 129, 130, 134, 136, 0, 120, 121, 127, 809178825Sdfr 128, 123, 122, 124, 133, 126, 125, 0, 59, 62, 810178825Sdfr 64, 0, 0, 68, 67, 0, 0, 93, 0, 0, 811178825Sdfr 0, 0, 77, 78, 79, 84, 0, 0, 109, 105, 812178825Sdfr 0, 69, 0, 107, 0, 0, 54, 0, 0, 46, 813178825Sdfr 49, 63, 65, 66, 85, 0, 80, 0, 76, 0, 814178825Sdfr 0, 57, 104, 103, 108, 0, 52, 51, 0, 0, 815178825Sdfr 0, 0, 0, 81, 0, 110, 53, 45, 44, 43, 816178825Sdfr 83, 0, 111, 82 817178825Sdfr}; 818178825Sdfr 819178825Sdfr/* YYDEFGOTO[NTERM-NUM]. */ 820178825Sdfrstatic const yytype_int16 yydefgoto[] = 821178825Sdfr{ 822178825Sdfr -1, 2, 18, 24, 30, 31, 33, 34, 35, 39, 823178825Sdfr 40, 36, 41, 69, 70, 71, 99, 72, 125, 126, 824178825Sdfr 73, 127, 74, 75, 76, 77, 104, 78, 79, 80, 825178825Sdfr 81, 82, 83, 84, 85, 86, 114, 161, 162, 163, 826178825Sdfr 164, 87, 88, 111, 117, 42, 89, 90, 121, 122, 827178825Sdfr 123, 167, 168, 4, 135, 9, 10, 136, 137, 138, 828178825Sdfr 139, 140, 141, 142, 143, 144, 145, 146 829178825Sdfr}; 830178825Sdfr 831178825Sdfr/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 832178825Sdfr STATE-NUM. */ 833178825Sdfr#define YYPACT_NINF -113 834178825Sdfrstatic const yytype_int16 yypact[] = 835178825Sdfr{ 836178825Sdfr -74, -67, 38, -69, 23, -113, -113, -44, -113, -41, 837178825Sdfr -69, 4, -26, -113, -113, -3, 1, 10, 52, -10, 838178825Sdfr -113, -113, -113, 45, 13, -113, -113, 77, -35, 15, 839178825Sdfr 64, 19, 17, 20, 15, -113, 85, -113, 25, -113, 840178825Sdfr 19, -113, -113, 15, -113, -113, 27, 47, -113, -113, 841178825Sdfr 26, 29, -113, -113, -113, -30, -113, 89, 61, -113, 842178825Sdfr -57, -47, -113, -113, -113, -113, 82, -113, -4, -68, 843178825Sdfr -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, 844178825Sdfr -113, -113, -113, -113, -113, -113, -113, -113, -17, -113, 845178825Sdfr -113, -113, -113, -67, 35, 33, 46, 51, 46, -113, 846178825Sdfr -113, 69, 44, -73, 88, 82, -72, 56, -113, -113, 847178825Sdfr -113, 49, 93, 7, -113, -113, -113, 82, -113, 58, 848178825Sdfr 82, -76, -13, -113, 57, 59, -113, 60, -113, 68, 849178825Sdfr -113, -113, -113, -113, -113, -113, -75, -113, -113, -113, 850178825Sdfr -113, -113, -113, -113, -113, -113, -113, -63, -113, -113, 851178825Sdfr -113, -62, 82, 56, -113, -46, 65, -113, 141, 82, 852178825Sdfr 142, 63, -113, -113, -113, 56, 66, -38, -113, 56, 853178825Sdfr -16, -113, 93, -113, 76, -7, -113, 93, 81, -113, 854178825Sdfr -113, -113, 56, -113, -113, 72, -19, 93, -113, 83, 855178825Sdfr 58, -113, -113, -113, -113, 78, -113, -113, 80, 84, 856178825Sdfr 87, 62, 162, -113, 90, -113, -113, -113, -113, -113, 857178825Sdfr -113, 93, -113, -113 858178825Sdfr}; 859178825Sdfr 860178825Sdfr/* YYPGOTO[NTERM-NUM]. */ 861178825Sdfrstatic const yytype_int16 yypgoto[] = 862178825Sdfr{ 863178825Sdfr -113, -113, -113, -113, -113, -113, -113, -113, 150, 136, 864178825Sdfr -113, 143, -113, -65, -113, -113, 86, -113, 91, 16, 865178825Sdfr -113, -113, -113, -113, -113, -113, 92, -113, -113, -113, 866178825Sdfr -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, 867178825Sdfr -113, -113, -113, -113, -113, -113, -113, -113, -60, -113, 868178825Sdfr 22, -113, -5, 97, 2, 184, -113, -112, -113, -113, 869178825Sdfr -113, -113, -113, -113, -113, 21, -113, -113 870178825Sdfr}; 871178825Sdfr 872178825Sdfr/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 873178825Sdfr positive, shift that token. If negative, reduce the rule which 874178825Sdfr number is the opposite. If zero, do what YYDEFACT says. 875178825Sdfr If YYTABLE_NINF, syntax error. */ 876178825Sdfr#define YYTABLE_NINF -13 877178825Sdfrstatic const yytype_int16 yytable[] = 878178825Sdfr{ 879178825Sdfr 157, 107, 108, 5, 202, 29, 105, 172, 178, 102, 880178825Sdfr 115, 15, 1, 120, 120, 170, 112, 7, 179, 171, 881178825Sdfr 8, 116, 150, 154, 113, 158, 159, 3, 175, 170, 882178825Sdfr 160, 16, 180, 181, 47, 48, 49, 103, 6, 50, 883178825Sdfr 153, 173, 17, 151, 11, 170, 155, 106, 12, 183, 884178825Sdfr 51, -12, 165, 190, 13, 169, 109, 191, 52, 53, 885178825Sdfr 194, 54, 97, 19, 98, 198, 200, 20, 55, 192, 886178825Sdfr 120, 21, 110, 113, 56, 203, 57, 58, 196, 124, 887178825Sdfr 22, 23, 128, 25, 26, 28, 59, 182, 37, 60, 888178825Sdfr 61, 47, 48, 49, 186, 5, 50, 27, 129, 213, 889178825Sdfr 130, 32, 62, 63, 64, 38, 65, 51, 43, 66, 890178825Sdfr 44, 67, 128, 93, 94, 52, 53, 46, 54, 120, 891178825Sdfr 95, 68, 131, 96, 128, 55, 100, 199, 101, 119, 892178825Sdfr 130, 56, 124, 57, 58, 102, 97, 132, 156, 133, 893178825Sdfr 134, 152, 130, 59, 166, 3, 60, 61, 113, 174, 894178825Sdfr 175, 177, 131, 185, 187, 176, 188, 210, 189, 62, 895178825Sdfr 63, 64, 184, 65, 131, 134, 201, 132, 67, 133, 896178825Sdfr 134, 206, 204, 207, 211, 3, 91, 208, 68, 132, 897178825Sdfr 209, 133, 134, 212, 45, 205, 92, 3, 149, 147, 898178825Sdfr 118, 197, 193, 148, 14, 195 899178825Sdfr}; 900178825Sdfr 901178825Sdfrstatic const yytype_uint8 yycheck[] = 902178825Sdfr{ 903178825Sdfr 112, 66, 6, 1, 23, 40, 53, 20, 83, 66, 904178825Sdfr 27, 7, 86, 86, 86, 91, 84, 86, 93, 95, 905178825Sdfr 89, 38, 95, 95, 92, 18, 19, 94, 91, 91, 906178825Sdfr 23, 27, 95, 95, 9, 10, 11, 94, 0, 14, 907178825Sdfr 105, 54, 38, 103, 21, 91, 106, 94, 92, 95, 908178825Sdfr 25, 86, 117, 91, 95, 120, 60, 95, 33, 34, 909178825Sdfr 172, 36, 92, 89, 94, 177, 178, 70, 43, 85, 910178825Sdfr 86, 70, 76, 92, 49, 187, 51, 52, 85, 86, 911178825Sdfr 70, 29, 31, 93, 39, 8, 61, 152, 24, 64, 912178825Sdfr 65, 9, 10, 11, 159, 93, 14, 84, 47, 211, 913178825Sdfr 49, 86, 77, 78, 79, 86, 81, 25, 91, 84, 914178825Sdfr 90, 86, 31, 86, 67, 33, 34, 32, 36, 86, 915178825Sdfr 94, 96, 71, 94, 31, 43, 37, 46, 67, 94, 916178825Sdfr 49, 49, 86, 51, 52, 66, 92, 86, 89, 88, 917178825Sdfr 89, 53, 49, 61, 86, 94, 64, 65, 92, 92, 918178825Sdfr 91, 83, 71, 12, 12, 95, 93, 95, 92, 77, 919178825Sdfr 78, 79, 97, 81, 71, 89, 94, 86, 86, 88, 920178825Sdfr 89, 93, 89, 93, 12, 94, 40, 93, 96, 86, 921178825Sdfr 93, 88, 89, 93, 34, 190, 43, 94, 102, 98, 922178825Sdfr 93, 175, 170, 101, 10, 174 923178825Sdfr}; 924178825Sdfr 925178825Sdfr/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 926178825Sdfr symbol of state STATE-NUM. */ 927178825Sdfrstatic const yytype_uint8 yystos[] = 928178825Sdfr{ 929178825Sdfr 0, 86, 99, 94, 151, 152, 0, 86, 89, 153, 930178825Sdfr 154, 21, 92, 95, 153, 7, 27, 38, 100, 89, 931178825Sdfr 70, 70, 70, 29, 101, 93, 39, 84, 8, 40, 932178825Sdfr 102, 103, 86, 104, 105, 106, 109, 24, 86, 107, 933178825Sdfr 108, 110, 143, 91, 90, 106, 32, 9, 10, 11, 934178825Sdfr 14, 25, 33, 34, 36, 43, 49, 51, 52, 61, 935178825Sdfr 64, 65, 77, 78, 79, 81, 84, 86, 96, 111, 936178825Sdfr 112, 113, 115, 118, 120, 121, 122, 123, 125, 126, 937178825Sdfr 127, 128, 129, 130, 131, 132, 133, 139, 140, 144, 938178825Sdfr 145, 107, 109, 86, 67, 94, 94, 92, 94, 114, 939178825Sdfr 37, 67, 66, 94, 124, 53, 94, 111, 6, 60, 940178825Sdfr 76, 141, 84, 92, 134, 27, 38, 142, 151, 94, 941178825Sdfr 86, 146, 147, 148, 86, 116, 117, 119, 31, 47, 942178825Sdfr 49, 71, 86, 88, 89, 152, 155, 156, 157, 158, 943178825Sdfr 159, 160, 161, 162, 163, 164, 165, 116, 124, 114, 944178825Sdfr 95, 146, 53, 111, 95, 146, 89, 155, 18, 19, 945178825Sdfr 23, 135, 136, 137, 138, 111, 86, 149, 150, 111, 946178825Sdfr 91, 95, 20, 54, 92, 91, 95, 83, 83, 93, 947178825Sdfr 95, 95, 111, 95, 97, 12, 111, 12, 93, 92, 948178825Sdfr 91, 95, 85, 148, 155, 163, 85, 117, 155, 46, 949178825Sdfr 155, 94, 23, 155, 89, 150, 93, 93, 93, 93, 950178825Sdfr 95, 12, 93, 155 951178825Sdfr}; 952178825Sdfr 953178825Sdfr#define yyerrok (yyerrstatus = 0) 954178825Sdfr#define yyclearin (yychar = YYEMPTY) 955178825Sdfr#define YYEMPTY (-2) 956178825Sdfr#define YYEOF 0 957178825Sdfr 958178825Sdfr#define YYACCEPT goto yyacceptlab 959178825Sdfr#define YYABORT goto yyabortlab 960178825Sdfr#define YYERROR goto yyerrorlab 961178825Sdfr 962178825Sdfr 963178825Sdfr/* Like YYERROR except do call yyerror. This remains here temporarily 964178825Sdfr to ease the transition to the new meaning of YYERROR, for GCC. 965178825Sdfr Once GCC version 2 has supplanted version 1, this can go. */ 966178825Sdfr 967178825Sdfr#define YYFAIL goto yyerrlab 968178825Sdfr 969178825Sdfr#define YYRECOVERING() (!!yyerrstatus) 970178825Sdfr 971178825Sdfr#define YYBACKUP(Token, Value) \ 972178825Sdfrdo \ 973178825Sdfr if (yychar == YYEMPTY && yylen == 1) \ 974178825Sdfr { \ 975178825Sdfr yychar = (Token); \ 976178825Sdfr yylval = (Value); \ 977178825Sdfr yytoken = YYTRANSLATE (yychar); \ 978178825Sdfr YYPOPSTACK (1); \ 979178825Sdfr goto yybackup; \ 980178825Sdfr } \ 981178825Sdfr else \ 982178825Sdfr { \ 983178825Sdfr yyerror (YY_("syntax error: cannot back up")); \ 984178825Sdfr YYERROR; \ 985178825Sdfr } \ 986178825Sdfrwhile (YYID (0)) 987178825Sdfr 988178825Sdfr 989178825Sdfr#define YYTERROR 1 990178825Sdfr#define YYERRCODE 256 991178825Sdfr 992178825Sdfr 993178825Sdfr/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 994178825Sdfr If N is 0, then set CURRENT to the empty location which ends 995178825Sdfr the previous symbol: RHS[0] (always defined). */ 996178825Sdfr 997178825Sdfr#define YYRHSLOC(Rhs, K) ((Rhs)[K]) 998178825Sdfr#ifndef YYLLOC_DEFAULT 999178825Sdfr# define YYLLOC_DEFAULT(Current, Rhs, N) \ 1000178825Sdfr do \ 1001178825Sdfr if (YYID (N)) \ 1002178825Sdfr { \ 1003178825Sdfr (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 1004178825Sdfr (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 1005178825Sdfr (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 1006178825Sdfr (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 1007178825Sdfr } \ 1008178825Sdfr else \ 1009178825Sdfr { \ 1010178825Sdfr (Current).first_line = (Current).last_line = \ 1011178825Sdfr YYRHSLOC (Rhs, 0).last_line; \ 1012178825Sdfr (Current).first_column = (Current).last_column = \ 1013178825Sdfr YYRHSLOC (Rhs, 0).last_column; \ 1014178825Sdfr } \ 1015178825Sdfr while (YYID (0)) 1016178825Sdfr#endif 1017178825Sdfr 1018178825Sdfr 1019178825Sdfr/* YY_LOCATION_PRINT -- Print the location on the stream. 1020178825Sdfr This macro was not mandated originally: define only if we know 1021178825Sdfr we won't break user code: when these are the locations we know. */ 1022178825Sdfr 1023178825Sdfr#ifndef YY_LOCATION_PRINT 1024178825Sdfr# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 1025178825Sdfr# define YY_LOCATION_PRINT(File, Loc) \ 1026178825Sdfr fprintf (File, "%d.%d-%d.%d", \ 1027178825Sdfr (Loc).first_line, (Loc).first_column, \ 1028178825Sdfr (Loc).last_line, (Loc).last_column) 1029178825Sdfr# else 1030178825Sdfr# define YY_LOCATION_PRINT(File, Loc) ((void) 0) 1031178825Sdfr# endif 1032178825Sdfr#endif 1033178825Sdfr 1034178825Sdfr 1035178825Sdfr/* YYLEX -- calling `yylex' with the right arguments. */ 1036178825Sdfr 1037178825Sdfr#ifdef YYLEX_PARAM 1038178825Sdfr# define YYLEX yylex (YYLEX_PARAM) 1039178825Sdfr#else 1040178825Sdfr# define YYLEX yylex () 1041178825Sdfr#endif 1042178825Sdfr 1043178825Sdfr/* Enable debugging if requested. */ 1044178825Sdfr#if YYDEBUG 1045178825Sdfr 1046178825Sdfr# ifndef YYFPRINTF 1047178825Sdfr# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 1048178825Sdfr# define YYFPRINTF fprintf 1049178825Sdfr# endif 1050178825Sdfr 1051178825Sdfr# define YYDPRINTF(Args) \ 1052178825Sdfrdo { \ 1053178825Sdfr if (yydebug) \ 1054178825Sdfr YYFPRINTF Args; \ 1055178825Sdfr} while (YYID (0)) 1056178825Sdfr 1057178825Sdfr# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 1058178825Sdfrdo { \ 1059178825Sdfr if (yydebug) \ 1060178825Sdfr { \ 1061178825Sdfr YYFPRINTF (stderr, "%s ", Title); \ 1062178825Sdfr yy_symbol_print (stderr, \ 1063178825Sdfr Type, Value); \ 1064178825Sdfr YYFPRINTF (stderr, "\n"); \ 1065178825Sdfr } \ 1066178825Sdfr} while (YYID (0)) 1067178825Sdfr 1068178825Sdfr 1069178825Sdfr/*--------------------------------. 1070178825Sdfr| Print this symbol on YYOUTPUT. | 1071178825Sdfr`--------------------------------*/ 1072178825Sdfr 1073178825Sdfr/*ARGSUSED*/ 1074178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \ 1075178825Sdfr || defined __cplusplus || defined _MSC_VER) 1076178825Sdfrstatic void 1077178825Sdfryy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 1078178825Sdfr#else 1079178825Sdfrstatic void 1080178825Sdfryy_symbol_value_print (yyoutput, yytype, yyvaluep) 1081178825Sdfr FILE *yyoutput; 1082178825Sdfr int yytype; 1083178825Sdfr YYSTYPE const * const yyvaluep; 1084178825Sdfr#endif 1085178825Sdfr{ 1086178825Sdfr if (!yyvaluep) 1087178825Sdfr return; 1088178825Sdfr# ifdef YYPRINT 1089178825Sdfr if (yytype < YYNTOKENS) 1090178825Sdfr YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 1091178825Sdfr# else 1092178825Sdfr YYUSE (yyoutput); 1093178825Sdfr# endif 1094178825Sdfr switch (yytype) 1095178825Sdfr { 1096178825Sdfr default: 1097178825Sdfr break; 1098178825Sdfr } 1099178825Sdfr} 1100178825Sdfr 1101178825Sdfr 1102178825Sdfr/*--------------------------------. 1103178825Sdfr| Print this symbol on YYOUTPUT. | 1104178825Sdfr`--------------------------------*/ 1105178825Sdfr 1106178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \ 1107178825Sdfr || defined __cplusplus || defined _MSC_VER) 1108178825Sdfrstatic void 1109178825Sdfryy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 1110178825Sdfr#else 1111178825Sdfrstatic void 1112178825Sdfryy_symbol_print (yyoutput, yytype, yyvaluep) 1113178825Sdfr FILE *yyoutput; 1114178825Sdfr int yytype; 1115178825Sdfr YYSTYPE const * const yyvaluep; 1116178825Sdfr#endif 1117178825Sdfr{ 1118178825Sdfr if (yytype < YYNTOKENS) 1119178825Sdfr YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 1120178825Sdfr else 1121178825Sdfr YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 1122178825Sdfr 1123178825Sdfr yy_symbol_value_print (yyoutput, yytype, yyvaluep); 1124178825Sdfr YYFPRINTF (yyoutput, ")"); 1125178825Sdfr} 1126178825Sdfr 1127178825Sdfr/*------------------------------------------------------------------. 1128178825Sdfr| yy_stack_print -- Print the state stack from its BOTTOM up to its | 1129178825Sdfr| TOP (included). | 1130178825Sdfr`------------------------------------------------------------------*/ 1131178825Sdfr 1132178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \ 1133178825Sdfr || defined __cplusplus || defined _MSC_VER) 1134178825Sdfrstatic void 1135178825Sdfryy_stack_print (yytype_int16 *bottom, yytype_int16 *top) 1136178825Sdfr#else 1137178825Sdfrstatic void 1138178825Sdfryy_stack_print (bottom, top) 1139178825Sdfr yytype_int16 *bottom; 1140178825Sdfr yytype_int16 *top; 1141178825Sdfr#endif 1142178825Sdfr{ 1143178825Sdfr YYFPRINTF (stderr, "Stack now"); 1144178825Sdfr for (; bottom <= top; ++bottom) 1145178825Sdfr YYFPRINTF (stderr, " %d", *bottom); 1146178825Sdfr YYFPRINTF (stderr, "\n"); 1147178825Sdfr} 1148178825Sdfr 1149178825Sdfr# define YY_STACK_PRINT(Bottom, Top) \ 1150178825Sdfrdo { \ 1151178825Sdfr if (yydebug) \ 1152178825Sdfr yy_stack_print ((Bottom), (Top)); \ 1153178825Sdfr} while (YYID (0)) 1154178825Sdfr 1155178825Sdfr 1156178825Sdfr/*------------------------------------------------. 1157178825Sdfr| Report that the YYRULE is going to be reduced. | 1158178825Sdfr`------------------------------------------------*/ 1159178825Sdfr 1160178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \ 1161178825Sdfr || defined __cplusplus || defined _MSC_VER) 1162178825Sdfrstatic void 1163178825Sdfryy_reduce_print (YYSTYPE *yyvsp, int yyrule) 1164178825Sdfr#else 1165178825Sdfrstatic void 1166178825Sdfryy_reduce_print (yyvsp, yyrule) 1167178825Sdfr YYSTYPE *yyvsp; 1168178825Sdfr int yyrule; 1169178825Sdfr#endif 1170178825Sdfr{ 1171178825Sdfr int yynrhs = yyr2[yyrule]; 1172178825Sdfr int yyi; 1173178825Sdfr unsigned long int yylno = yyrline[yyrule]; 1174178825Sdfr YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 1175178825Sdfr yyrule - 1, yylno); 1176178825Sdfr /* The symbols being reduced. */ 1177178825Sdfr for (yyi = 0; yyi < yynrhs; yyi++) 1178178825Sdfr { 1179178825Sdfr fprintf (stderr, " $%d = ", yyi + 1); 1180178825Sdfr yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 1181178825Sdfr &(yyvsp[(yyi + 1) - (yynrhs)]) 1182178825Sdfr ); 1183178825Sdfr fprintf (stderr, "\n"); 1184178825Sdfr } 1185178825Sdfr} 1186178825Sdfr 1187178825Sdfr# define YY_REDUCE_PRINT(Rule) \ 1188178825Sdfrdo { \ 1189178825Sdfr if (yydebug) \ 1190178825Sdfr yy_reduce_print (yyvsp, Rule); \ 1191178825Sdfr} while (YYID (0)) 1192178825Sdfr 1193178825Sdfr/* Nonzero means print parse trace. It is left uninitialized so that 1194178825Sdfr multiple parsers can coexist. */ 1195178825Sdfrint yydebug; 1196178825Sdfr#else /* !YYDEBUG */ 1197178825Sdfr# define YYDPRINTF(Args) 1198178825Sdfr# define YY_SYMBOL_PRINT(Title, Type, Value, Location) 1199178825Sdfr# define YY_STACK_PRINT(Bottom, Top) 1200178825Sdfr# define YY_REDUCE_PRINT(Rule) 1201178825Sdfr#endif /* !YYDEBUG */ 1202178825Sdfr 1203178825Sdfr 1204178825Sdfr/* YYINITDEPTH -- initial size of the parser's stacks. */ 1205178825Sdfr#ifndef YYINITDEPTH 1206178825Sdfr# define YYINITDEPTH 200 1207178825Sdfr#endif 1208178825Sdfr 1209178825Sdfr/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1210178825Sdfr if the built-in stack extension method is used). 1211178825Sdfr 1212178825Sdfr Do not make this value too large; the results are undefined if 1213178825Sdfr YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1214178825Sdfr evaluated with infinite-precision integer arithmetic. */ 1215178825Sdfr 1216178825Sdfr#ifndef YYMAXDEPTH 1217178825Sdfr# define YYMAXDEPTH 10000 1218178825Sdfr#endif 1219178825Sdfr 1220178825Sdfr 1221178825Sdfr 1222178825Sdfr#if YYERROR_VERBOSE 1223178825Sdfr 1224178825Sdfr# ifndef yystrlen 1225178825Sdfr# if defined __GLIBC__ && defined _STRING_H 1226178825Sdfr# define yystrlen strlen 1227178825Sdfr# else 1228178825Sdfr/* Return the length of YYSTR. */ 1229178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \ 1230178825Sdfr || defined __cplusplus || defined _MSC_VER) 1231178825Sdfrstatic YYSIZE_T 1232178825Sdfryystrlen (const char *yystr) 1233178825Sdfr#else 1234178825Sdfrstatic YYSIZE_T 1235178825Sdfryystrlen (yystr) 1236178825Sdfr const char *yystr; 1237178825Sdfr#endif 1238178825Sdfr{ 1239178825Sdfr YYSIZE_T yylen; 1240178825Sdfr for (yylen = 0; yystr[yylen]; yylen++) 1241178825Sdfr continue; 1242178825Sdfr return yylen; 1243178825Sdfr} 1244178825Sdfr# endif 1245178825Sdfr# endif 1246178825Sdfr 1247178825Sdfr# ifndef yystpcpy 1248178825Sdfr# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 1249178825Sdfr# define yystpcpy stpcpy 1250178825Sdfr# else 1251178825Sdfr/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 1252178825Sdfr YYDEST. */ 1253178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \ 1254178825Sdfr || defined __cplusplus || defined _MSC_VER) 1255178825Sdfrstatic char * 1256178825Sdfryystpcpy (char *yydest, const char *yysrc) 1257178825Sdfr#else 1258178825Sdfrstatic char * 1259178825Sdfryystpcpy (yydest, yysrc) 1260178825Sdfr char *yydest; 1261178825Sdfr const char *yysrc; 1262178825Sdfr#endif 1263178825Sdfr{ 1264178825Sdfr char *yyd = yydest; 1265178825Sdfr const char *yys = yysrc; 1266178825Sdfr 1267178825Sdfr while ((*yyd++ = *yys++) != '\0') 1268178825Sdfr continue; 1269178825Sdfr 1270178825Sdfr return yyd - 1; 1271178825Sdfr} 1272178825Sdfr# endif 1273178825Sdfr# endif 1274178825Sdfr 1275178825Sdfr# ifndef yytnamerr 1276178825Sdfr/* Copy to YYRES the contents of YYSTR after stripping away unnecessary 1277178825Sdfr quotes and backslashes, so that it's suitable for yyerror. The 1278178825Sdfr heuristic is that double-quoting is unnecessary unless the string 1279178825Sdfr contains an apostrophe, a comma, or backslash (other than 1280178825Sdfr backslash-backslash). YYSTR is taken from yytname. If YYRES is 1281178825Sdfr null, do not copy; instead, return the length of what the result 1282178825Sdfr would have been. */ 1283178825Sdfrstatic YYSIZE_T 1284178825Sdfryytnamerr (char *yyres, const char *yystr) 1285178825Sdfr{ 1286178825Sdfr if (*yystr == '"') 1287178825Sdfr { 1288178825Sdfr YYSIZE_T yyn = 0; 1289178825Sdfr char const *yyp = yystr; 1290178825Sdfr 1291178825Sdfr for (;;) 1292178825Sdfr switch (*++yyp) 1293178825Sdfr { 1294178825Sdfr case '\'': 1295178825Sdfr case ',': 1296178825Sdfr goto do_not_strip_quotes; 1297178825Sdfr 1298178825Sdfr case '\\': 1299178825Sdfr if (*++yyp != '\\') 1300178825Sdfr goto do_not_strip_quotes; 1301178825Sdfr /* Fall through. */ 1302178825Sdfr default: 1303178825Sdfr if (yyres) 1304178825Sdfr yyres[yyn] = *yyp; 1305178825Sdfr yyn++; 1306178825Sdfr break; 1307178825Sdfr 1308178825Sdfr case '"': 1309178825Sdfr if (yyres) 1310178825Sdfr yyres[yyn] = '\0'; 1311178825Sdfr return yyn; 1312178825Sdfr } 1313178825Sdfr do_not_strip_quotes: ; 1314178825Sdfr } 1315178825Sdfr 1316178825Sdfr if (! yyres) 1317178825Sdfr return yystrlen (yystr); 1318178825Sdfr 1319178825Sdfr return yystpcpy (yyres, yystr) - yyres; 1320178825Sdfr} 1321178825Sdfr# endif 1322178825Sdfr 1323178825Sdfr/* Copy into YYRESULT an error message about the unexpected token 1324178825Sdfr YYCHAR while in state YYSTATE. Return the number of bytes copied, 1325178825Sdfr including the terminating null byte. If YYRESULT is null, do not 1326178825Sdfr copy anything; just return the number of bytes that would be 1327178825Sdfr copied. As a special case, return 0 if an ordinary "syntax error" 1328178825Sdfr message will do. Return YYSIZE_MAXIMUM if overflow occurs during 1329178825Sdfr size calculation. */ 1330178825Sdfrstatic YYSIZE_T 1331178825Sdfryysyntax_error (char *yyresult, int yystate, int yychar) 1332178825Sdfr{ 1333178825Sdfr int yyn = yypact[yystate]; 1334178825Sdfr 1335178825Sdfr if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) 1336178825Sdfr return 0; 1337178825Sdfr else 1338178825Sdfr { 1339178825Sdfr int yytype = YYTRANSLATE (yychar); 1340178825Sdfr YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); 1341178825Sdfr YYSIZE_T yysize = yysize0; 1342178825Sdfr YYSIZE_T yysize1; 1343178825Sdfr int yysize_overflow = 0; 1344178825Sdfr enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 1345178825Sdfr char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 1346178825Sdfr int yyx; 1347178825Sdfr 1348178825Sdfr# if 0 1349178825Sdfr /* This is so xgettext sees the translatable formats that are 1350178825Sdfr constructed on the fly. */ 1351178825Sdfr YY_("syntax error, unexpected %s"); 1352178825Sdfr YY_("syntax error, unexpected %s, expecting %s"); 1353178825Sdfr YY_("syntax error, unexpected %s, expecting %s or %s"); 1354178825Sdfr YY_("syntax error, unexpected %s, expecting %s or %s or %s"); 1355178825Sdfr YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); 1356178825Sdfr# endif 1357178825Sdfr char *yyfmt; 1358178825Sdfr char const *yyf; 1359178825Sdfr static char const yyunexpected[] = "syntax error, unexpected %s"; 1360178825Sdfr static char const yyexpecting[] = ", expecting %s"; 1361178825Sdfr static char const yyor[] = " or %s"; 1362178825Sdfr char yyformat[sizeof yyunexpected 1363178825Sdfr + sizeof yyexpecting - 1 1364178825Sdfr + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) 1365178825Sdfr * (sizeof yyor - 1))]; 1366178825Sdfr char const *yyprefix = yyexpecting; 1367178825Sdfr 1368178825Sdfr /* Start YYX at -YYN if negative to avoid negative indexes in 1369178825Sdfr YYCHECK. */ 1370178825Sdfr int yyxbegin = yyn < 0 ? -yyn : 0; 1371178825Sdfr 1372178825Sdfr /* Stay within bounds of both yycheck and yytname. */ 1373178825Sdfr int yychecklim = YYLAST - yyn + 1; 1374178825Sdfr int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 1375178825Sdfr int yycount = 1; 1376178825Sdfr 1377178825Sdfr yyarg[0] = yytname[yytype]; 1378178825Sdfr yyfmt = yystpcpy (yyformat, yyunexpected); 1379178825Sdfr 1380178825Sdfr for (yyx = yyxbegin; yyx < yyxend; ++yyx) 1381178825Sdfr if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) 1382178825Sdfr { 1383178825Sdfr if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 1384178825Sdfr { 1385178825Sdfr yycount = 1; 1386178825Sdfr yysize = yysize0; 1387178825Sdfr yyformat[sizeof yyunexpected - 1] = '\0'; 1388178825Sdfr break; 1389178825Sdfr } 1390178825Sdfr yyarg[yycount++] = yytname[yyx]; 1391178825Sdfr yysize1 = yysize + yytnamerr (0, yytname[yyx]); 1392178825Sdfr yysize_overflow |= (yysize1 < yysize); 1393178825Sdfr yysize = yysize1; 1394178825Sdfr yyfmt = yystpcpy (yyfmt, yyprefix); 1395178825Sdfr yyprefix = yyor; 1396178825Sdfr } 1397178825Sdfr 1398178825Sdfr yyf = YY_(yyformat); 1399178825Sdfr yysize1 = yysize + yystrlen (yyf); 1400178825Sdfr yysize_overflow |= (yysize1 < yysize); 1401178825Sdfr yysize = yysize1; 1402178825Sdfr 1403178825Sdfr if (yysize_overflow) 1404178825Sdfr return YYSIZE_MAXIMUM; 1405178825Sdfr 1406178825Sdfr if (yyresult) 1407178825Sdfr { 1408178825Sdfr /* Avoid sprintf, as that infringes on the user's name space. 1409178825Sdfr Don't have undefined behavior even if the translation 1410178825Sdfr produced a string with the wrong number of "%s"s. */ 1411178825Sdfr char *yyp = yyresult; 1412178825Sdfr int yyi = 0; 1413178825Sdfr while ((*yyp = *yyf) != '\0') 1414178825Sdfr { 1415178825Sdfr if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) 1416178825Sdfr { 1417178825Sdfr yyp += yytnamerr (yyp, yyarg[yyi++]); 1418178825Sdfr yyf += 2; 1419178825Sdfr } 1420178825Sdfr else 1421178825Sdfr { 1422178825Sdfr yyp++; 1423178825Sdfr yyf++; 1424178825Sdfr } 1425178825Sdfr } 1426178825Sdfr } 1427178825Sdfr return yysize; 1428178825Sdfr } 1429178825Sdfr} 1430178825Sdfr#endif /* YYERROR_VERBOSE */ 1431178825Sdfr 1432178825Sdfr 1433178825Sdfr/*-----------------------------------------------. 1434178825Sdfr| Release the memory associated to this symbol. | 1435178825Sdfr`-----------------------------------------------*/ 1436178825Sdfr 1437178825Sdfr/*ARGSUSED*/ 1438178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \ 1439178825Sdfr || defined __cplusplus || defined _MSC_VER) 1440178825Sdfrstatic void 1441178825Sdfryydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) 1442178825Sdfr#else 1443178825Sdfrstatic void 1444178825Sdfryydestruct (yymsg, yytype, yyvaluep) 1445178825Sdfr const char *yymsg; 1446178825Sdfr int yytype; 1447178825Sdfr YYSTYPE *yyvaluep; 1448178825Sdfr#endif 1449178825Sdfr{ 1450178825Sdfr YYUSE (yyvaluep); 1451178825Sdfr 1452178825Sdfr if (!yymsg) 1453178825Sdfr yymsg = "Deleting"; 1454178825Sdfr YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 1455178825Sdfr 1456178825Sdfr switch (yytype) 1457178825Sdfr { 1458178825Sdfr 1459178825Sdfr default: 1460178825Sdfr break; 1461178825Sdfr } 1462178825Sdfr} 1463178825Sdfr 1464178825Sdfr 1465178825Sdfr/* Prevent warnings from -Wmissing-prototypes. */ 1466178825Sdfr 1467178825Sdfr#ifdef YYPARSE_PARAM 1468178825Sdfr#if defined __STDC__ || defined __cplusplus 1469178825Sdfrint yyparse (void *YYPARSE_PARAM); 1470178825Sdfr#else 1471178825Sdfrint yyparse (); 1472178825Sdfr#endif 1473178825Sdfr#else /* ! YYPARSE_PARAM */ 1474178825Sdfr#if defined __STDC__ || defined __cplusplus 1475178825Sdfrint yyparse (void); 1476178825Sdfr#else 1477178825Sdfrint yyparse (); 1478178825Sdfr#endif 1479178825Sdfr#endif /* ! YYPARSE_PARAM */ 1480178825Sdfr 1481178825Sdfr 1482178825Sdfr 1483178825Sdfr/* The look-ahead symbol. */ 1484178825Sdfrint yychar; 1485178825Sdfr 1486178825Sdfr/* The semantic value of the look-ahead symbol. */ 1487178825SdfrYYSTYPE yylval; 1488178825Sdfr 1489178825Sdfr/* Number of syntax errors so far. */ 1490178825Sdfrint yynerrs; 1491178825Sdfr 1492178825Sdfr 1493178825Sdfr 1494178825Sdfr/*----------. 1495178825Sdfr| yyparse. | 1496178825Sdfr`----------*/ 1497178825Sdfr 1498178825Sdfr#ifdef YYPARSE_PARAM 1499178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \ 1500178825Sdfr || defined __cplusplus || defined _MSC_VER) 1501178825Sdfrint 1502178825Sdfryyparse (void *YYPARSE_PARAM) 1503178825Sdfr#else 1504178825Sdfrint 1505178825Sdfryyparse (YYPARSE_PARAM) 1506178825Sdfr void *YYPARSE_PARAM; 1507178825Sdfr#endif 1508178825Sdfr#else /* ! YYPARSE_PARAM */ 1509178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \ 1510178825Sdfr || defined __cplusplus || defined _MSC_VER) 1511178825Sdfrint 1512178825Sdfryyparse (void) 1513178825Sdfr#else 1514178825Sdfrint 1515178825Sdfryyparse () 1516178825Sdfr 1517178825Sdfr#endif 1518178825Sdfr#endif 1519178825Sdfr{ 1520178825Sdfr 1521178825Sdfr int yystate; 1522178825Sdfr int yyn; 1523178825Sdfr int yyresult; 1524178825Sdfr /* Number of tokens to shift before error messages enabled. */ 1525178825Sdfr int yyerrstatus; 1526178825Sdfr /* Look-ahead token as an internal (translated) token number. */ 1527178825Sdfr int yytoken = 0; 1528178825Sdfr#if YYERROR_VERBOSE 1529178825Sdfr /* Buffer for error messages, and its allocated size. */ 1530178825Sdfr char yymsgbuf[128]; 1531178825Sdfr char *yymsg = yymsgbuf; 1532178825Sdfr YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 1533178825Sdfr#endif 1534178825Sdfr 1535178825Sdfr /* Three stacks and their tools: 1536178825Sdfr `yyss': related to states, 1537178825Sdfr `yyvs': related to semantic values, 1538178825Sdfr `yyls': related to locations. 1539178825Sdfr 1540178825Sdfr Refer to the stacks thru separate pointers, to allow yyoverflow 1541178825Sdfr to reallocate them elsewhere. */ 1542178825Sdfr 1543178825Sdfr /* The state stack. */ 1544178825Sdfr yytype_int16 yyssa[YYINITDEPTH]; 1545178825Sdfr yytype_int16 *yyss = yyssa; 1546178825Sdfr yytype_int16 *yyssp; 1547178825Sdfr 1548178825Sdfr /* The semantic value stack. */ 1549178825Sdfr YYSTYPE yyvsa[YYINITDEPTH]; 1550178825Sdfr YYSTYPE *yyvs = yyvsa; 1551178825Sdfr YYSTYPE *yyvsp; 1552178825Sdfr 1553178825Sdfr 1554178825Sdfr 1555178825Sdfr#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) 1556178825Sdfr 1557178825Sdfr YYSIZE_T yystacksize = YYINITDEPTH; 1558178825Sdfr 1559178825Sdfr /* The variables used to return semantic value and location from the 1560178825Sdfr action routines. */ 1561178825Sdfr YYSTYPE yyval; 1562178825Sdfr 1563178825Sdfr 1564178825Sdfr /* The number of symbols on the RHS of the reduced rule. 1565178825Sdfr Keep to zero when no symbol should be popped. */ 1566178825Sdfr int yylen = 0; 1567178825Sdfr 1568178825Sdfr YYDPRINTF ((stderr, "Starting parse\n")); 1569178825Sdfr 1570178825Sdfr yystate = 0; 1571178825Sdfr yyerrstatus = 0; 1572178825Sdfr yynerrs = 0; 1573178825Sdfr yychar = YYEMPTY; /* Cause a token to be read. */ 1574178825Sdfr 1575178825Sdfr /* Initialize stack pointers. 1576178825Sdfr Waste one element of value and location stack 1577178825Sdfr so that they stay on the same level as the state stack. 1578178825Sdfr The wasted elements are never initialized. */ 1579178825Sdfr 1580178825Sdfr yyssp = yyss; 1581178825Sdfr yyvsp = yyvs; 1582178825Sdfr 1583178825Sdfr goto yysetstate; 1584178825Sdfr 1585178825Sdfr/*------------------------------------------------------------. 1586178825Sdfr| yynewstate -- Push a new state, which is found in yystate. | 1587178825Sdfr`------------------------------------------------------------*/ 1588178825Sdfr yynewstate: 1589178825Sdfr /* In all cases, when you get here, the value and location stacks 1590178825Sdfr have just been pushed. So pushing a state here evens the stacks. */ 1591178825Sdfr yyssp++; 1592178825Sdfr 1593178825Sdfr yysetstate: 1594178825Sdfr *yyssp = yystate; 1595178825Sdfr 1596178825Sdfr if (yyss + yystacksize - 1 <= yyssp) 1597178825Sdfr { 1598178825Sdfr /* Get the current used size of the three stacks, in elements. */ 1599178825Sdfr YYSIZE_T yysize = yyssp - yyss + 1; 1600178825Sdfr 1601178825Sdfr#ifdef yyoverflow 1602178825Sdfr { 1603178825Sdfr /* Give user a chance to reallocate the stack. Use copies of 1604178825Sdfr these so that the &'s don't force the real ones into 1605178825Sdfr memory. */ 1606178825Sdfr YYSTYPE *yyvs1 = yyvs; 1607178825Sdfr yytype_int16 *yyss1 = yyss; 1608178825Sdfr 1609178825Sdfr 1610178825Sdfr /* Each stack pointer address is followed by the size of the 1611178825Sdfr data in use in that stack, in bytes. This used to be a 1612178825Sdfr conditional around just the two extra args, but that might 1613178825Sdfr be undefined if yyoverflow is a macro. */ 1614178825Sdfr yyoverflow (YY_("memory exhausted"), 1615178825Sdfr &yyss1, yysize * sizeof (*yyssp), 1616178825Sdfr &yyvs1, yysize * sizeof (*yyvsp), 1617178825Sdfr 1618178825Sdfr &yystacksize); 1619178825Sdfr 1620178825Sdfr yyss = yyss1; 1621178825Sdfr yyvs = yyvs1; 1622178825Sdfr } 1623178825Sdfr#else /* no yyoverflow */ 1624178825Sdfr# ifndef YYSTACK_RELOCATE 1625178825Sdfr goto yyexhaustedlab; 1626178825Sdfr# else 1627178825Sdfr /* Extend the stack our own way. */ 1628178825Sdfr if (YYMAXDEPTH <= yystacksize) 1629178825Sdfr goto yyexhaustedlab; 1630178825Sdfr yystacksize *= 2; 1631178825Sdfr if (YYMAXDEPTH < yystacksize) 1632178825Sdfr yystacksize = YYMAXDEPTH; 1633178825Sdfr 1634178825Sdfr { 1635178825Sdfr yytype_int16 *yyss1 = yyss; 1636178825Sdfr union yyalloc *yyptr = 1637178825Sdfr (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 1638178825Sdfr if (! yyptr) 1639178825Sdfr goto yyexhaustedlab; 1640178825Sdfr YYSTACK_RELOCATE (yyss); 1641178825Sdfr YYSTACK_RELOCATE (yyvs); 1642178825Sdfr 1643178825Sdfr# undef YYSTACK_RELOCATE 1644178825Sdfr if (yyss1 != yyssa) 1645178825Sdfr YYSTACK_FREE (yyss1); 1646178825Sdfr } 1647178825Sdfr# endif 1648178825Sdfr#endif /* no yyoverflow */ 1649178825Sdfr 1650178825Sdfr yyssp = yyss + yysize - 1; 1651178825Sdfr yyvsp = yyvs + yysize - 1; 1652178825Sdfr 1653178825Sdfr 1654178825Sdfr YYDPRINTF ((stderr, "Stack size increased to %lu\n", 1655178825Sdfr (unsigned long int) yystacksize)); 1656178825Sdfr 1657178825Sdfr if (yyss + yystacksize - 1 <= yyssp) 1658178825Sdfr YYABORT; 1659178825Sdfr } 1660178825Sdfr 1661178825Sdfr YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 1662178825Sdfr 1663178825Sdfr goto yybackup; 1664178825Sdfr 1665178825Sdfr/*-----------. 1666178825Sdfr| yybackup. | 1667178825Sdfr`-----------*/ 1668178825Sdfryybackup: 1669178825Sdfr 1670178825Sdfr /* Do appropriate processing given the current state. Read a 1671178825Sdfr look-ahead token if we need one and don't already have one. */ 1672178825Sdfr 1673178825Sdfr /* First try to decide what to do without reference to look-ahead token. */ 1674178825Sdfr yyn = yypact[yystate]; 1675178825Sdfr if (yyn == YYPACT_NINF) 1676178825Sdfr goto yydefault; 1677178825Sdfr 1678178825Sdfr /* Not known => get a look-ahead token if don't already have one. */ 1679178825Sdfr 1680178825Sdfr /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ 1681178825Sdfr if (yychar == YYEMPTY) 1682178825Sdfr { 1683178825Sdfr YYDPRINTF ((stderr, "Reading a token: ")); 1684178825Sdfr yychar = YYLEX; 1685178825Sdfr } 1686178825Sdfr 1687178825Sdfr if (yychar <= YYEOF) 1688178825Sdfr { 1689178825Sdfr yychar = yytoken = YYEOF; 1690178825Sdfr YYDPRINTF ((stderr, "Now at end of input.\n")); 1691178825Sdfr } 1692178825Sdfr else 1693178825Sdfr { 1694178825Sdfr yytoken = YYTRANSLATE (yychar); 1695178825Sdfr YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 1696178825Sdfr } 1697178825Sdfr 1698178825Sdfr /* If the proper action on seeing token YYTOKEN is to reduce or to 1699178825Sdfr detect an error, take that action. */ 1700178825Sdfr yyn += yytoken; 1701178825Sdfr if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 1702178825Sdfr goto yydefault; 1703178825Sdfr yyn = yytable[yyn]; 1704178825Sdfr if (yyn <= 0) 1705178825Sdfr { 1706178825Sdfr if (yyn == 0 || yyn == YYTABLE_NINF) 1707178825Sdfr goto yyerrlab; 1708178825Sdfr yyn = -yyn; 1709178825Sdfr goto yyreduce; 1710178825Sdfr } 1711178825Sdfr 1712178825Sdfr if (yyn == YYFINAL) 1713178825Sdfr YYACCEPT; 1714178825Sdfr 1715178825Sdfr /* Count tokens shifted since error; after three, turn off error 1716178825Sdfr status. */ 1717178825Sdfr if (yyerrstatus) 1718178825Sdfr yyerrstatus--; 1719178825Sdfr 1720178825Sdfr /* Shift the look-ahead token. */ 1721178825Sdfr YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 1722178825Sdfr 1723178825Sdfr /* Discard the shifted token unless it is eof. */ 1724178825Sdfr if (yychar != YYEOF) 1725178825Sdfr yychar = YYEMPTY; 1726178825Sdfr 1727178825Sdfr yystate = yyn; 1728178825Sdfr *++yyvsp = yylval; 1729178825Sdfr 1730178825Sdfr goto yynewstate; 1731178825Sdfr 1732178825Sdfr 1733178825Sdfr/*-----------------------------------------------------------. 1734178825Sdfr| yydefault -- do the default action for the current state. | 1735178825Sdfr`-----------------------------------------------------------*/ 1736178825Sdfryydefault: 1737178825Sdfr yyn = yydefact[yystate]; 1738178825Sdfr if (yyn == 0) 1739178825Sdfr goto yyerrlab; 1740178825Sdfr goto yyreduce; 1741178825Sdfr 1742178825Sdfr 1743178825Sdfr/*-----------------------------. 1744178825Sdfr| yyreduce -- Do a reduction. | 1745178825Sdfr`-----------------------------*/ 1746178825Sdfryyreduce: 1747178825Sdfr /* yyn is the number of a rule to reduce with. */ 1748178825Sdfr yylen = yyr2[yyn]; 1749178825Sdfr 1750178825Sdfr /* If YYLEN is nonzero, implement the default value of the action: 1751178825Sdfr `$$ = $1'. 1752178825Sdfr 1753178825Sdfr Otherwise, the following line sets YYVAL to garbage. 1754178825Sdfr This behavior is undocumented and Bison 1755178825Sdfr users should not rely upon it. Assigning to YYVAL 1756178825Sdfr unconditionally makes the parser a bit smaller, and it avoids a 1757178825Sdfr GCC warning that YYVAL may be used uninitialized. */ 1758178825Sdfr yyval = yyvsp[1-yylen]; 1759178825Sdfr 1760178825Sdfr 1761178825Sdfr YY_REDUCE_PRINT (yyn); 1762178825Sdfr switch (yyn) 1763178825Sdfr { 1764178825Sdfr case 2: 1765178825Sdfr#line 235 "parse.y" 1766178825Sdfr { 1767178825Sdfr checkundefined(); 1768178825Sdfr } 1769178825Sdfr break; 1770178825Sdfr 1771178825Sdfr case 4: 1772178825Sdfr#line 242 "parse.y" 1773178825Sdfr { error_message("implicit tagging is not supported"); } 1774178825Sdfr break; 1775178825Sdfr 1776178825Sdfr case 5: 1777178825Sdfr#line 244 "parse.y" 1778178825Sdfr { error_message("automatic tagging is not supported"); } 1779178825Sdfr break; 1780178825Sdfr 1781178825Sdfr case 7: 1782178825Sdfr#line 249 "parse.y" 1783178825Sdfr { error_message("no extensibility options supported"); } 1784178825Sdfr break; 1785178825Sdfr 1786178825Sdfr case 17: 1787178825Sdfr#line 270 "parse.y" 1788178825Sdfr { 1789178825Sdfr struct string_list *sl; 1790178825Sdfr for(sl = (yyvsp[(1) - (4)].sl); sl != NULL; sl = sl->next) { 1791178825Sdfr Symbol *s = addsym(sl->string); 1792178825Sdfr s->stype = Stype; 1793178825Sdfr } 1794178825Sdfr add_import((yyvsp[(3) - (4)].name)); 1795178825Sdfr } 1796178825Sdfr break; 1797178825Sdfr 1798178825Sdfr case 22: 1799178825Sdfr#line 289 "parse.y" 1800178825Sdfr { 1801178825Sdfr (yyval.sl) = emalloc(sizeof(*(yyval.sl))); 1802178825Sdfr (yyval.sl)->string = (yyvsp[(1) - (3)].name); 1803178825Sdfr (yyval.sl)->next = (yyvsp[(3) - (3)].sl); 1804178825Sdfr } 1805178825Sdfr break; 1806178825Sdfr 1807178825Sdfr case 23: 1808178825Sdfr#line 295 "parse.y" 1809178825Sdfr { 1810178825Sdfr (yyval.sl) = emalloc(sizeof(*(yyval.sl))); 1811178825Sdfr (yyval.sl)->string = (yyvsp[(1) - (1)].name); 1812178825Sdfr (yyval.sl)->next = NULL; 1813178825Sdfr } 1814178825Sdfr break; 1815178825Sdfr 1816178825Sdfr case 24: 1817178825Sdfr#line 303 "parse.y" 1818178825Sdfr { 1819178825Sdfr Symbol *s = addsym ((yyvsp[(1) - (3)].name)); 1820178825Sdfr s->stype = Stype; 1821178825Sdfr s->type = (yyvsp[(3) - (3)].type); 1822178825Sdfr fix_labels(s); 1823178825Sdfr generate_type (s); 1824178825Sdfr } 1825178825Sdfr break; 1826178825Sdfr 1827178825Sdfr case 42: 1828178825Sdfr#line 334 "parse.y" 1829178825Sdfr { 1830178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_Boolean, 1831178825Sdfr TE_EXPLICIT, new_type(TBoolean)); 1832178825Sdfr } 1833178825Sdfr break; 1834178825Sdfr 1835178825Sdfr case 43: 1836178825Sdfr#line 341 "parse.y" 1837178825Sdfr { 1838178825Sdfr if((yyvsp[(2) - (5)].value)->type != integervalue) 1839178825Sdfr error_message("Non-integer used in first part of range"); 1840178825Sdfr if((yyvsp[(2) - (5)].value)->type != integervalue) 1841178825Sdfr error_message("Non-integer in second part of range"); 1842178825Sdfr (yyval.range) = ecalloc(1, sizeof(*(yyval.range))); 1843178825Sdfr (yyval.range)->min = (yyvsp[(2) - (5)].value)->u.integervalue; 1844178825Sdfr (yyval.range)->max = (yyvsp[(4) - (5)].value)->u.integervalue; 1845178825Sdfr } 1846178825Sdfr break; 1847178825Sdfr 1848178825Sdfr case 44: 1849178825Sdfr#line 351 "parse.y" 1850178825Sdfr { 1851178825Sdfr if((yyvsp[(2) - (5)].value)->type != integervalue) 1852178825Sdfr error_message("Non-integer in first part of range"); 1853178825Sdfr (yyval.range) = ecalloc(1, sizeof(*(yyval.range))); 1854178825Sdfr (yyval.range)->min = (yyvsp[(2) - (5)].value)->u.integervalue; 1855178825Sdfr (yyval.range)->max = (yyvsp[(2) - (5)].value)->u.integervalue - 1; 1856178825Sdfr } 1857178825Sdfr break; 1858178825Sdfr 1859178825Sdfr case 45: 1860178825Sdfr#line 359 "parse.y" 1861178825Sdfr { 1862178825Sdfr if((yyvsp[(4) - (5)].value)->type != integervalue) 1863178825Sdfr error_message("Non-integer in second part of range"); 1864178825Sdfr (yyval.range) = ecalloc(1, sizeof(*(yyval.range))); 1865178825Sdfr (yyval.range)->min = (yyvsp[(4) - (5)].value)->u.integervalue + 2; 1866178825Sdfr (yyval.range)->max = (yyvsp[(4) - (5)].value)->u.integervalue; 1867178825Sdfr } 1868178825Sdfr break; 1869178825Sdfr 1870178825Sdfr case 46: 1871178825Sdfr#line 367 "parse.y" 1872178825Sdfr { 1873178825Sdfr if((yyvsp[(2) - (3)].value)->type != integervalue) 1874178825Sdfr error_message("Non-integer used in limit"); 1875178825Sdfr (yyval.range) = ecalloc(1, sizeof(*(yyval.range))); 1876178825Sdfr (yyval.range)->min = (yyvsp[(2) - (3)].value)->u.integervalue; 1877178825Sdfr (yyval.range)->max = (yyvsp[(2) - (3)].value)->u.integervalue; 1878178825Sdfr } 1879178825Sdfr break; 1880178825Sdfr 1881178825Sdfr case 47: 1882178825Sdfr#line 378 "parse.y" 1883178825Sdfr { 1884178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer, 1885178825Sdfr TE_EXPLICIT, new_type(TInteger)); 1886178825Sdfr } 1887178825Sdfr break; 1888178825Sdfr 1889178825Sdfr case 48: 1890178825Sdfr#line 383 "parse.y" 1891178825Sdfr { 1892178825Sdfr (yyval.type) = new_type(TInteger); 1893178825Sdfr (yyval.type)->range = (yyvsp[(2) - (2)].range); 1894178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer, TE_EXPLICIT, (yyval.type)); 1895178825Sdfr } 1896178825Sdfr break; 1897178825Sdfr 1898178825Sdfr case 49: 1899178825Sdfr#line 389 "parse.y" 1900178825Sdfr { 1901178825Sdfr (yyval.type) = new_type(TInteger); 1902178825Sdfr (yyval.type)->members = (yyvsp[(3) - (4)].members); 1903178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer, TE_EXPLICIT, (yyval.type)); 1904178825Sdfr } 1905178825Sdfr break; 1906178825Sdfr 1907178825Sdfr case 50: 1908178825Sdfr#line 397 "parse.y" 1909178825Sdfr { 1910178825Sdfr (yyval.members) = emalloc(sizeof(*(yyval.members))); 1911178825Sdfr ASN1_TAILQ_INIT((yyval.members)); 1912178825Sdfr ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members); 1913178825Sdfr } 1914178825Sdfr break; 1915178825Sdfr 1916178825Sdfr case 51: 1917178825Sdfr#line 403 "parse.y" 1918178825Sdfr { 1919178825Sdfr ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members); 1920178825Sdfr (yyval.members) = (yyvsp[(1) - (3)].members); 1921178825Sdfr } 1922178825Sdfr break; 1923178825Sdfr 1924178825Sdfr case 52: 1925178825Sdfr#line 408 "parse.y" 1926178825Sdfr { (yyval.members) = (yyvsp[(1) - (3)].members); } 1927178825Sdfr break; 1928178825Sdfr 1929178825Sdfr case 53: 1930178825Sdfr#line 412 "parse.y" 1931178825Sdfr { 1932178825Sdfr (yyval.member) = emalloc(sizeof(*(yyval.member))); 1933178825Sdfr (yyval.member)->name = (yyvsp[(1) - (4)].name); 1934178825Sdfr (yyval.member)->gen_name = estrdup((yyvsp[(1) - (4)].name)); 1935178825Sdfr output_name ((yyval.member)->gen_name); 1936178825Sdfr (yyval.member)->val = (yyvsp[(3) - (4)].constant); 1937178825Sdfr (yyval.member)->optional = 0; 1938178825Sdfr (yyval.member)->ellipsis = 0; 1939178825Sdfr (yyval.member)->type = NULL; 1940178825Sdfr } 1941178825Sdfr break; 1942178825Sdfr 1943178825Sdfr case 54: 1944178825Sdfr#line 425 "parse.y" 1945178825Sdfr { 1946178825Sdfr (yyval.type) = new_type(TInteger); 1947178825Sdfr (yyval.type)->members = (yyvsp[(3) - (4)].members); 1948178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_Enumerated, TE_EXPLICIT, (yyval.type)); 1949178825Sdfr } 1950178825Sdfr break; 1951178825Sdfr 1952178825Sdfr case 56: 1953178825Sdfr#line 436 "parse.y" 1954178825Sdfr { 1955178825Sdfr (yyval.type) = new_type(TBitString); 1956178825Sdfr (yyval.type)->members = emalloc(sizeof(*(yyval.type)->members)); 1957178825Sdfr ASN1_TAILQ_INIT((yyval.type)->members); 1958178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, (yyval.type)); 1959178825Sdfr } 1960178825Sdfr break; 1961178825Sdfr 1962178825Sdfr case 57: 1963178825Sdfr#line 443 "parse.y" 1964178825Sdfr { 1965178825Sdfr (yyval.type) = new_type(TBitString); 1966178825Sdfr (yyval.type)->members = (yyvsp[(4) - (5)].members); 1967178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, (yyval.type)); 1968178825Sdfr } 1969178825Sdfr break; 1970178825Sdfr 1971178825Sdfr case 58: 1972178825Sdfr#line 451 "parse.y" 1973178825Sdfr { 1974178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_OID, 1975178825Sdfr TE_EXPLICIT, new_type(TOID)); 1976178825Sdfr } 1977178825Sdfr break; 1978178825Sdfr 1979178825Sdfr case 59: 1980178825Sdfr#line 457 "parse.y" 1981178825Sdfr { 1982178825Sdfr Type *t = new_type(TOctetString); 1983178825Sdfr t->range = (yyvsp[(3) - (3)].range); 1984178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_OctetString, 1985178825Sdfr TE_EXPLICIT, t); 1986178825Sdfr } 1987178825Sdfr break; 1988178825Sdfr 1989178825Sdfr case 60: 1990178825Sdfr#line 466 "parse.y" 1991178825Sdfr { 1992178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_Null, 1993178825Sdfr TE_EXPLICIT, new_type(TNull)); 1994178825Sdfr } 1995178825Sdfr break; 1996178825Sdfr 1997178825Sdfr case 61: 1998178825Sdfr#line 473 "parse.y" 1999178825Sdfr { (yyval.range) = NULL; } 2000178825Sdfr break; 2001178825Sdfr 2002178825Sdfr case 62: 2003178825Sdfr#line 475 "parse.y" 2004178825Sdfr { (yyval.range) = (yyvsp[(2) - (2)].range); } 2005178825Sdfr break; 2006178825Sdfr 2007178825Sdfr case 63: 2008178825Sdfr#line 480 "parse.y" 2009178825Sdfr { 2010178825Sdfr (yyval.type) = new_type(TSequence); 2011178825Sdfr (yyval.type)->members = (yyvsp[(3) - (4)].members); 2012178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type)); 2013178825Sdfr } 2014178825Sdfr break; 2015178825Sdfr 2016178825Sdfr case 64: 2017178825Sdfr#line 486 "parse.y" 2018178825Sdfr { 2019178825Sdfr (yyval.type) = new_type(TSequence); 2020178825Sdfr (yyval.type)->members = NULL; 2021178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type)); 2022178825Sdfr } 2023178825Sdfr break; 2024178825Sdfr 2025178825Sdfr case 65: 2026178825Sdfr#line 494 "parse.y" 2027178825Sdfr { 2028178825Sdfr (yyval.type) = new_type(TSequenceOf); 2029178825Sdfr (yyval.type)->range = (yyvsp[(2) - (4)].range); 2030178825Sdfr (yyval.type)->subtype = (yyvsp[(4) - (4)].type); 2031178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type)); 2032178825Sdfr } 2033178825Sdfr break; 2034178825Sdfr 2035178825Sdfr case 66: 2036178825Sdfr#line 503 "parse.y" 2037178825Sdfr { 2038178825Sdfr (yyval.type) = new_type(TSet); 2039178825Sdfr (yyval.type)->members = (yyvsp[(3) - (4)].members); 2040178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type)); 2041178825Sdfr } 2042178825Sdfr break; 2043178825Sdfr 2044178825Sdfr case 67: 2045178825Sdfr#line 509 "parse.y" 2046178825Sdfr { 2047178825Sdfr (yyval.type) = new_type(TSet); 2048178825Sdfr (yyval.type)->members = NULL; 2049178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type)); 2050178825Sdfr } 2051178825Sdfr break; 2052178825Sdfr 2053178825Sdfr case 68: 2054178825Sdfr#line 517 "parse.y" 2055178825Sdfr { 2056178825Sdfr (yyval.type) = new_type(TSetOf); 2057178825Sdfr (yyval.type)->subtype = (yyvsp[(3) - (3)].type); 2058178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type)); 2059178825Sdfr } 2060178825Sdfr break; 2061178825Sdfr 2062178825Sdfr case 69: 2063178825Sdfr#line 525 "parse.y" 2064178825Sdfr { 2065178825Sdfr (yyval.type) = new_type(TChoice); 2066178825Sdfr (yyval.type)->members = (yyvsp[(3) - (4)].members); 2067178825Sdfr } 2068178825Sdfr break; 2069178825Sdfr 2070178825Sdfr case 72: 2071178825Sdfr#line 536 "parse.y" 2072178825Sdfr { 2073178825Sdfr Symbol *s = addsym((yyvsp[(1) - (1)].name)); 2074178825Sdfr (yyval.type) = new_type(TType); 2075178825Sdfr if(s->stype != Stype && s->stype != SUndefined) 2076178825Sdfr error_message ("%s is not a type\n", (yyvsp[(1) - (1)].name)); 2077178825Sdfr else 2078178825Sdfr (yyval.type)->symbol = s; 2079178825Sdfr } 2080178825Sdfr break; 2081178825Sdfr 2082178825Sdfr case 73: 2083178825Sdfr#line 547 "parse.y" 2084178825Sdfr { 2085178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_GeneralizedTime, 2086178825Sdfr TE_EXPLICIT, new_type(TGeneralizedTime)); 2087178825Sdfr } 2088178825Sdfr break; 2089178825Sdfr 2090178825Sdfr case 74: 2091178825Sdfr#line 552 "parse.y" 2092178825Sdfr { 2093178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_UTCTime, 2094178825Sdfr TE_EXPLICIT, new_type(TUTCTime)); 2095178825Sdfr } 2096178825Sdfr break; 2097178825Sdfr 2098178825Sdfr case 75: 2099178825Sdfr#line 559 "parse.y" 2100178825Sdfr { 2101178825Sdfr /* if (Constraint.type == contentConstrant) { 2102178825Sdfr assert(Constraint.u.constraint.type == octetstring|bitstring-w/o-NamedBitList); // remember to check type reference too 2103178825Sdfr if (Constraint.u.constraint.type) { 2104178825Sdfr assert((Constraint.u.constraint.type.length % 8) == 0); 2105178825Sdfr } 2106178825Sdfr } 2107178825Sdfr if (Constraint.u.constraint.encoding) { 2108178825Sdfr type == der-oid|ber-oid 2109178825Sdfr } 2110178825Sdfr */ 2111178825Sdfr } 2112178825Sdfr break; 2113178825Sdfr 2114178825Sdfr case 76: 2115178825Sdfr#line 575 "parse.y" 2116178825Sdfr { 2117178825Sdfr (yyval.constraint_spec) = (yyvsp[(2) - (3)].constraint_spec); 2118178825Sdfr } 2119178825Sdfr break; 2120178825Sdfr 2121178825Sdfr case 80: 2122178825Sdfr#line 588 "parse.y" 2123178825Sdfr { 2124178825Sdfr (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS); 2125178825Sdfr (yyval.constraint_spec)->u.content.type = (yyvsp[(2) - (2)].type); 2126178825Sdfr (yyval.constraint_spec)->u.content.encoding = NULL; 2127178825Sdfr } 2128178825Sdfr break; 2129178825Sdfr 2130178825Sdfr case 81: 2131178825Sdfr#line 594 "parse.y" 2132178825Sdfr { 2133178825Sdfr if ((yyvsp[(3) - (3)].value)->type != objectidentifiervalue) 2134178825Sdfr error_message("Non-OID used in ENCODED BY constraint"); 2135178825Sdfr (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS); 2136178825Sdfr (yyval.constraint_spec)->u.content.type = NULL; 2137178825Sdfr (yyval.constraint_spec)->u.content.encoding = (yyvsp[(3) - (3)].value); 2138178825Sdfr } 2139178825Sdfr break; 2140178825Sdfr 2141178825Sdfr case 82: 2142178825Sdfr#line 602 "parse.y" 2143178825Sdfr { 2144178825Sdfr if ((yyvsp[(5) - (5)].value)->type != objectidentifiervalue) 2145178825Sdfr error_message("Non-OID used in ENCODED BY constraint"); 2146178825Sdfr (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS); 2147178825Sdfr (yyval.constraint_spec)->u.content.type = (yyvsp[(2) - (5)].type); 2148178825Sdfr (yyval.constraint_spec)->u.content.encoding = (yyvsp[(5) - (5)].value); 2149178825Sdfr } 2150178825Sdfr break; 2151178825Sdfr 2152178825Sdfr case 83: 2153178825Sdfr#line 612 "parse.y" 2154178825Sdfr { 2155178825Sdfr (yyval.constraint_spec) = new_constraint_spec(CT_USER); 2156178825Sdfr } 2157178825Sdfr break; 2158178825Sdfr 2159178825Sdfr case 84: 2160178825Sdfr#line 618 "parse.y" 2161178825Sdfr { 2162178825Sdfr (yyval.type) = new_type(TTag); 2163178825Sdfr (yyval.type)->tag = (yyvsp[(1) - (3)].tag); 2164178825Sdfr (yyval.type)->tag.tagenv = (yyvsp[(2) - (3)].constant); 2165178825Sdfr if((yyvsp[(3) - (3)].type)->type == TTag && (yyvsp[(2) - (3)].constant) == TE_IMPLICIT) { 2166178825Sdfr (yyval.type)->subtype = (yyvsp[(3) - (3)].type)->subtype; 2167178825Sdfr free((yyvsp[(3) - (3)].type)); 2168178825Sdfr } else 2169178825Sdfr (yyval.type)->subtype = (yyvsp[(3) - (3)].type); 2170178825Sdfr } 2171178825Sdfr break; 2172178825Sdfr 2173178825Sdfr case 85: 2174178825Sdfr#line 631 "parse.y" 2175178825Sdfr { 2176178825Sdfr (yyval.tag).tagclass = (yyvsp[(2) - (4)].constant); 2177178825Sdfr (yyval.tag).tagvalue = (yyvsp[(3) - (4)].constant); 2178178825Sdfr (yyval.tag).tagenv = TE_EXPLICIT; 2179178825Sdfr } 2180178825Sdfr break; 2181178825Sdfr 2182178825Sdfr case 86: 2183178825Sdfr#line 639 "parse.y" 2184178825Sdfr { 2185178825Sdfr (yyval.constant) = ASN1_C_CONTEXT; 2186178825Sdfr } 2187178825Sdfr break; 2188178825Sdfr 2189178825Sdfr case 87: 2190178825Sdfr#line 643 "parse.y" 2191178825Sdfr { 2192178825Sdfr (yyval.constant) = ASN1_C_UNIV; 2193178825Sdfr } 2194178825Sdfr break; 2195178825Sdfr 2196178825Sdfr case 88: 2197178825Sdfr#line 647 "parse.y" 2198178825Sdfr { 2199178825Sdfr (yyval.constant) = ASN1_C_APPL; 2200178825Sdfr } 2201178825Sdfr break; 2202178825Sdfr 2203178825Sdfr case 89: 2204178825Sdfr#line 651 "parse.y" 2205178825Sdfr { 2206178825Sdfr (yyval.constant) = ASN1_C_PRIVATE; 2207178825Sdfr } 2208178825Sdfr break; 2209178825Sdfr 2210178825Sdfr case 90: 2211178825Sdfr#line 657 "parse.y" 2212178825Sdfr { 2213178825Sdfr (yyval.constant) = TE_EXPLICIT; 2214178825Sdfr } 2215178825Sdfr break; 2216178825Sdfr 2217178825Sdfr case 91: 2218178825Sdfr#line 661 "parse.y" 2219178825Sdfr { 2220178825Sdfr (yyval.constant) = TE_EXPLICIT; 2221178825Sdfr } 2222178825Sdfr break; 2223178825Sdfr 2224178825Sdfr case 92: 2225178825Sdfr#line 665 "parse.y" 2226178825Sdfr { 2227178825Sdfr (yyval.constant) = TE_IMPLICIT; 2228178825Sdfr } 2229178825Sdfr break; 2230178825Sdfr 2231178825Sdfr case 93: 2232178825Sdfr#line 672 "parse.y" 2233178825Sdfr { 2234178825Sdfr Symbol *s; 2235178825Sdfr s = addsym ((yyvsp[(1) - (4)].name)); 2236178825Sdfr 2237178825Sdfr s->stype = SValue; 2238178825Sdfr s->value = (yyvsp[(4) - (4)].value); 2239178825Sdfr generate_constant (s); 2240178825Sdfr } 2241178825Sdfr break; 2242178825Sdfr 2243178825Sdfr case 95: 2244178825Sdfr#line 686 "parse.y" 2245178825Sdfr { 2246178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_GeneralString, 2247178825Sdfr TE_EXPLICIT, new_type(TGeneralString)); 2248178825Sdfr } 2249178825Sdfr break; 2250178825Sdfr 2251178825Sdfr case 96: 2252178825Sdfr#line 691 "parse.y" 2253178825Sdfr { 2254178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_UTF8String, 2255178825Sdfr TE_EXPLICIT, new_type(TUTF8String)); 2256178825Sdfr } 2257178825Sdfr break; 2258178825Sdfr 2259178825Sdfr case 97: 2260178825Sdfr#line 696 "parse.y" 2261178825Sdfr { 2262178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_PrintableString, 2263178825Sdfr TE_EXPLICIT, new_type(TPrintableString)); 2264178825Sdfr } 2265178825Sdfr break; 2266178825Sdfr 2267178825Sdfr case 98: 2268178825Sdfr#line 701 "parse.y" 2269178825Sdfr { 2270178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_VisibleString, 2271178825Sdfr TE_EXPLICIT, new_type(TVisibleString)); 2272178825Sdfr } 2273178825Sdfr break; 2274178825Sdfr 2275178825Sdfr case 99: 2276178825Sdfr#line 706 "parse.y" 2277178825Sdfr { 2278178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_IA5String, 2279178825Sdfr TE_EXPLICIT, new_type(TIA5String)); 2280178825Sdfr } 2281178825Sdfr break; 2282178825Sdfr 2283178825Sdfr case 100: 2284178825Sdfr#line 711 "parse.y" 2285178825Sdfr { 2286178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_BMPString, 2287178825Sdfr TE_EXPLICIT, new_type(TBMPString)); 2288178825Sdfr } 2289178825Sdfr break; 2290178825Sdfr 2291178825Sdfr case 101: 2292178825Sdfr#line 716 "parse.y" 2293178825Sdfr { 2294178825Sdfr (yyval.type) = new_tag(ASN1_C_UNIV, UT_UniversalString, 2295178825Sdfr TE_EXPLICIT, new_type(TUniversalString)); 2296178825Sdfr } 2297178825Sdfr break; 2298178825Sdfr 2299178825Sdfr case 102: 2300178825Sdfr#line 724 "parse.y" 2301178825Sdfr { 2302178825Sdfr (yyval.members) = emalloc(sizeof(*(yyval.members))); 2303178825Sdfr ASN1_TAILQ_INIT((yyval.members)); 2304178825Sdfr ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members); 2305178825Sdfr } 2306178825Sdfr break; 2307178825Sdfr 2308178825Sdfr case 103: 2309178825Sdfr#line 730 "parse.y" 2310178825Sdfr { 2311178825Sdfr ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members); 2312178825Sdfr (yyval.members) = (yyvsp[(1) - (3)].members); 2313178825Sdfr } 2314178825Sdfr break; 2315178825Sdfr 2316178825Sdfr case 104: 2317178825Sdfr#line 735 "parse.y" 2318178825Sdfr { 2319178825Sdfr struct member *m = ecalloc(1, sizeof(*m)); 2320178825Sdfr m->name = estrdup("..."); 2321178825Sdfr m->gen_name = estrdup("asn1_ellipsis"); 2322178825Sdfr m->ellipsis = 1; 2323178825Sdfr ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), m, members); 2324178825Sdfr (yyval.members) = (yyvsp[(1) - (3)].members); 2325178825Sdfr } 2326178825Sdfr break; 2327178825Sdfr 2328178825Sdfr case 105: 2329178825Sdfr#line 746 "parse.y" 2330178825Sdfr { 2331178825Sdfr (yyval.member) = emalloc(sizeof(*(yyval.member))); 2332178825Sdfr (yyval.member)->name = (yyvsp[(1) - (2)].name); 2333178825Sdfr (yyval.member)->gen_name = estrdup((yyvsp[(1) - (2)].name)); 2334178825Sdfr output_name ((yyval.member)->gen_name); 2335178825Sdfr (yyval.member)->type = (yyvsp[(2) - (2)].type); 2336178825Sdfr (yyval.member)->ellipsis = 0; 2337178825Sdfr } 2338178825Sdfr break; 2339178825Sdfr 2340178825Sdfr case 106: 2341178825Sdfr#line 757 "parse.y" 2342178825Sdfr { 2343178825Sdfr (yyval.member) = (yyvsp[(1) - (1)].member); 2344178825Sdfr (yyval.member)->optional = 0; 2345178825Sdfr (yyval.member)->defval = NULL; 2346178825Sdfr } 2347178825Sdfr break; 2348178825Sdfr 2349178825Sdfr case 107: 2350178825Sdfr#line 763 "parse.y" 2351178825Sdfr { 2352178825Sdfr (yyval.member) = (yyvsp[(1) - (2)].member); 2353178825Sdfr (yyval.member)->optional = 1; 2354178825Sdfr (yyval.member)->defval = NULL; 2355178825Sdfr } 2356178825Sdfr break; 2357178825Sdfr 2358178825Sdfr case 108: 2359178825Sdfr#line 769 "parse.y" 2360178825Sdfr { 2361178825Sdfr (yyval.member) = (yyvsp[(1) - (3)].member); 2362178825Sdfr (yyval.member)->optional = 0; 2363178825Sdfr (yyval.member)->defval = (yyvsp[(3) - (3)].value); 2364178825Sdfr } 2365178825Sdfr break; 2366178825Sdfr 2367178825Sdfr case 109: 2368178825Sdfr#line 777 "parse.y" 2369178825Sdfr { 2370178825Sdfr (yyval.members) = emalloc(sizeof(*(yyval.members))); 2371178825Sdfr ASN1_TAILQ_INIT((yyval.members)); 2372178825Sdfr ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members); 2373178825Sdfr } 2374178825Sdfr break; 2375178825Sdfr 2376178825Sdfr case 110: 2377178825Sdfr#line 783 "parse.y" 2378178825Sdfr { 2379178825Sdfr ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members); 2380178825Sdfr (yyval.members) = (yyvsp[(1) - (3)].members); 2381178825Sdfr } 2382178825Sdfr break; 2383178825Sdfr 2384178825Sdfr case 111: 2385178825Sdfr#line 790 "parse.y" 2386178825Sdfr { 2387178825Sdfr (yyval.member) = emalloc(sizeof(*(yyval.member))); 2388178825Sdfr (yyval.member)->name = (yyvsp[(1) - (4)].name); 2389178825Sdfr (yyval.member)->gen_name = estrdup((yyvsp[(1) - (4)].name)); 2390178825Sdfr output_name ((yyval.member)->gen_name); 2391178825Sdfr (yyval.member)->val = (yyvsp[(3) - (4)].constant); 2392178825Sdfr (yyval.member)->optional = 0; 2393178825Sdfr (yyval.member)->ellipsis = 0; 2394178825Sdfr (yyval.member)->type = NULL; 2395178825Sdfr } 2396178825Sdfr break; 2397178825Sdfr 2398178825Sdfr case 113: 2399178825Sdfr#line 803 "parse.y" 2400178825Sdfr { (yyval.objid) = NULL; } 2401178825Sdfr break; 2402178825Sdfr 2403178825Sdfr case 114: 2404178825Sdfr#line 807 "parse.y" 2405178825Sdfr { 2406178825Sdfr (yyval.objid) = (yyvsp[(2) - (3)].objid); 2407178825Sdfr } 2408178825Sdfr break; 2409178825Sdfr 2410178825Sdfr case 115: 2411178825Sdfr#line 813 "parse.y" 2412178825Sdfr { 2413178825Sdfr (yyval.objid) = NULL; 2414178825Sdfr } 2415178825Sdfr break; 2416178825Sdfr 2417178825Sdfr case 116: 2418178825Sdfr#line 817 "parse.y" 2419178825Sdfr { 2420178825Sdfr if ((yyvsp[(2) - (2)].objid)) { 2421178825Sdfr (yyval.objid) = (yyvsp[(2) - (2)].objid); 2422178825Sdfr add_oid_to_tail((yyvsp[(2) - (2)].objid), (yyvsp[(1) - (2)].objid)); 2423178825Sdfr } else { 2424178825Sdfr (yyval.objid) = (yyvsp[(1) - (2)].objid); 2425178825Sdfr } 2426178825Sdfr } 2427178825Sdfr break; 2428178825Sdfr 2429178825Sdfr case 117: 2430178825Sdfr#line 828 "parse.y" 2431178825Sdfr { 2432178825Sdfr (yyval.objid) = new_objid((yyvsp[(1) - (4)].name), (yyvsp[(3) - (4)].constant)); 2433178825Sdfr } 2434178825Sdfr break; 2435178825Sdfr 2436178825Sdfr case 118: 2437178825Sdfr#line 832 "parse.y" 2438178825Sdfr { 2439178825Sdfr Symbol *s = addsym((yyvsp[(1) - (1)].name)); 2440178825Sdfr if(s->stype != SValue || 2441178825Sdfr s->value->type != objectidentifiervalue) { 2442178825Sdfr error_message("%s is not an object identifier\n", 2443178825Sdfr s->name); 2444178825Sdfr exit(1); 2445178825Sdfr } 2446178825Sdfr (yyval.objid) = s->value->u.objectidentifiervalue; 2447178825Sdfr } 2448178825Sdfr break; 2449178825Sdfr 2450178825Sdfr case 119: 2451178825Sdfr#line 843 "parse.y" 2452178825Sdfr { 2453178825Sdfr (yyval.objid) = new_objid(NULL, (yyvsp[(1) - (1)].constant)); 2454178825Sdfr } 2455178825Sdfr break; 2456178825Sdfr 2457178825Sdfr case 129: 2458178825Sdfr#line 866 "parse.y" 2459178825Sdfr { 2460178825Sdfr Symbol *s = addsym((yyvsp[(1) - (1)].name)); 2461178825Sdfr if(s->stype != SValue) 2462178825Sdfr error_message ("%s is not a value\n", 2463178825Sdfr s->name); 2464178825Sdfr else 2465178825Sdfr (yyval.value) = s->value; 2466178825Sdfr } 2467178825Sdfr break; 2468178825Sdfr 2469178825Sdfr case 130: 2470178825Sdfr#line 877 "parse.y" 2471178825Sdfr { 2472178825Sdfr (yyval.value) = emalloc(sizeof(*(yyval.value))); 2473178825Sdfr (yyval.value)->type = stringvalue; 2474178825Sdfr (yyval.value)->u.stringvalue = (yyvsp[(1) - (1)].name); 2475178825Sdfr } 2476178825Sdfr break; 2477178825Sdfr 2478178825Sdfr case 131: 2479178825Sdfr#line 885 "parse.y" 2480178825Sdfr { 2481178825Sdfr (yyval.value) = emalloc(sizeof(*(yyval.value))); 2482178825Sdfr (yyval.value)->type = booleanvalue; 2483178825Sdfr (yyval.value)->u.booleanvalue = 0; 2484178825Sdfr } 2485178825Sdfr break; 2486178825Sdfr 2487178825Sdfr case 132: 2488178825Sdfr#line 891 "parse.y" 2489178825Sdfr { 2490178825Sdfr (yyval.value) = emalloc(sizeof(*(yyval.value))); 2491178825Sdfr (yyval.value)->type = booleanvalue; 2492178825Sdfr (yyval.value)->u.booleanvalue = 0; 2493178825Sdfr } 2494178825Sdfr break; 2495178825Sdfr 2496178825Sdfr case 133: 2497178825Sdfr#line 899 "parse.y" 2498178825Sdfr { 2499178825Sdfr (yyval.value) = emalloc(sizeof(*(yyval.value))); 2500178825Sdfr (yyval.value)->type = integervalue; 2501178825Sdfr (yyval.value)->u.integervalue = (yyvsp[(1) - (1)].constant); 2502178825Sdfr } 2503178825Sdfr break; 2504178825Sdfr 2505178825Sdfr case 135: 2506178825Sdfr#line 910 "parse.y" 2507178825Sdfr { 2508178825Sdfr } 2509178825Sdfr break; 2510178825Sdfr 2511178825Sdfr case 136: 2512178825Sdfr#line 915 "parse.y" 2513178825Sdfr { 2514178825Sdfr (yyval.value) = emalloc(sizeof(*(yyval.value))); 2515178825Sdfr (yyval.value)->type = objectidentifiervalue; 2516178825Sdfr (yyval.value)->u.objectidentifiervalue = (yyvsp[(1) - (1)].objid); 2517178825Sdfr } 2518178825Sdfr break; 2519178825Sdfr 2520178825Sdfr 2521178825Sdfr/* Line 1267 of yacc.c. */ 2522178825Sdfr#line 2523 "parse.c" 2523178825Sdfr default: break; 2524178825Sdfr } 2525178825Sdfr YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 2526178825Sdfr 2527178825Sdfr YYPOPSTACK (yylen); 2528178825Sdfr yylen = 0; 2529178825Sdfr YY_STACK_PRINT (yyss, yyssp); 2530178825Sdfr 2531178825Sdfr *++yyvsp = yyval; 2532178825Sdfr 2533178825Sdfr 2534178825Sdfr /* Now `shift' the result of the reduction. Determine what state 2535178825Sdfr that goes to, based on the state we popped back to and the rule 2536178825Sdfr number reduced by. */ 2537178825Sdfr 2538178825Sdfr yyn = yyr1[yyn]; 2539178825Sdfr 2540178825Sdfr yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 2541178825Sdfr if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 2542178825Sdfr yystate = yytable[yystate]; 2543178825Sdfr else 2544178825Sdfr yystate = yydefgoto[yyn - YYNTOKENS]; 2545178825Sdfr 2546178825Sdfr goto yynewstate; 2547178825Sdfr 2548178825Sdfr 2549178825Sdfr/*------------------------------------. 2550178825Sdfr| yyerrlab -- here on detecting error | 2551178825Sdfr`------------------------------------*/ 2552178825Sdfryyerrlab: 2553178825Sdfr /* If not already recovering from an error, report this error. */ 2554178825Sdfr if (!yyerrstatus) 2555178825Sdfr { 2556178825Sdfr ++yynerrs; 2557178825Sdfr#if ! YYERROR_VERBOSE 2558178825Sdfr yyerror (YY_("syntax error")); 2559178825Sdfr#else 2560178825Sdfr { 2561178825Sdfr YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); 2562178825Sdfr if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) 2563178825Sdfr { 2564178825Sdfr YYSIZE_T yyalloc = 2 * yysize; 2565178825Sdfr if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) 2566178825Sdfr yyalloc = YYSTACK_ALLOC_MAXIMUM; 2567178825Sdfr if (yymsg != yymsgbuf) 2568178825Sdfr YYSTACK_FREE (yymsg); 2569178825Sdfr yymsg = (char *) YYSTACK_ALLOC (yyalloc); 2570178825Sdfr if (yymsg) 2571178825Sdfr yymsg_alloc = yyalloc; 2572178825Sdfr else 2573178825Sdfr { 2574178825Sdfr yymsg = yymsgbuf; 2575178825Sdfr yymsg_alloc = sizeof yymsgbuf; 2576178825Sdfr } 2577178825Sdfr } 2578178825Sdfr 2579178825Sdfr if (0 < yysize && yysize <= yymsg_alloc) 2580178825Sdfr { 2581178825Sdfr (void) yysyntax_error (yymsg, yystate, yychar); 2582178825Sdfr yyerror (yymsg); 2583178825Sdfr } 2584178825Sdfr else 2585178825Sdfr { 2586178825Sdfr yyerror (YY_("syntax error")); 2587178825Sdfr if (yysize != 0) 2588178825Sdfr goto yyexhaustedlab; 2589178825Sdfr } 2590178825Sdfr } 2591178825Sdfr#endif 2592178825Sdfr } 2593178825Sdfr 2594178825Sdfr 2595178825Sdfr 2596178825Sdfr if (yyerrstatus == 3) 2597178825Sdfr { 2598178825Sdfr /* If just tried and failed to reuse look-ahead token after an 2599178825Sdfr error, discard it. */ 2600178825Sdfr 2601178825Sdfr if (yychar <= YYEOF) 2602178825Sdfr { 2603178825Sdfr /* Return failure if at end of input. */ 2604178825Sdfr if (yychar == YYEOF) 2605178825Sdfr YYABORT; 2606178825Sdfr } 2607178825Sdfr else 2608178825Sdfr { 2609178825Sdfr yydestruct ("Error: discarding", 2610178825Sdfr yytoken, &yylval); 2611178825Sdfr yychar = YYEMPTY; 2612178825Sdfr } 2613178825Sdfr } 2614178825Sdfr 2615178825Sdfr /* Else will try to reuse look-ahead token after shifting the error 2616178825Sdfr token. */ 2617178825Sdfr goto yyerrlab1; 2618178825Sdfr 2619178825Sdfr 2620178825Sdfr/*---------------------------------------------------. 2621178825Sdfr| yyerrorlab -- error raised explicitly by YYERROR. | 2622178825Sdfr`---------------------------------------------------*/ 2623178825Sdfryyerrorlab: 2624178825Sdfr 2625178825Sdfr /* Pacify compilers like GCC when the user code never invokes 2626178825Sdfr YYERROR and the label yyerrorlab therefore never appears in user 2627178825Sdfr code. */ 2628178825Sdfr if (/*CONSTCOND*/ 0) 2629178825Sdfr goto yyerrorlab; 2630178825Sdfr 2631178825Sdfr /* Do not reclaim the symbols of the rule which action triggered 2632178825Sdfr this YYERROR. */ 2633178825Sdfr YYPOPSTACK (yylen); 2634178825Sdfr yylen = 0; 2635178825Sdfr YY_STACK_PRINT (yyss, yyssp); 2636178825Sdfr yystate = *yyssp; 2637178825Sdfr goto yyerrlab1; 2638178825Sdfr 2639178825Sdfr 2640178825Sdfr/*-------------------------------------------------------------. 2641178825Sdfr| yyerrlab1 -- common code for both syntax error and YYERROR. | 2642178825Sdfr`-------------------------------------------------------------*/ 2643178825Sdfryyerrlab1: 2644178825Sdfr yyerrstatus = 3; /* Each real token shifted decrements this. */ 2645178825Sdfr 2646178825Sdfr for (;;) 2647178825Sdfr { 2648178825Sdfr yyn = yypact[yystate]; 2649178825Sdfr if (yyn != YYPACT_NINF) 2650178825Sdfr { 2651178825Sdfr yyn += YYTERROR; 2652178825Sdfr if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 2653178825Sdfr { 2654178825Sdfr yyn = yytable[yyn]; 2655178825Sdfr if (0 < yyn) 2656178825Sdfr break; 2657178825Sdfr } 2658178825Sdfr } 2659178825Sdfr 2660178825Sdfr /* Pop the current state because it cannot handle the error token. */ 2661178825Sdfr if (yyssp == yyss) 2662178825Sdfr YYABORT; 2663178825Sdfr 2664178825Sdfr 2665178825Sdfr yydestruct ("Error: popping", 2666178825Sdfr yystos[yystate], yyvsp); 2667178825Sdfr YYPOPSTACK (1); 2668178825Sdfr yystate = *yyssp; 2669178825Sdfr YY_STACK_PRINT (yyss, yyssp); 2670178825Sdfr } 2671178825Sdfr 2672178825Sdfr if (yyn == YYFINAL) 2673178825Sdfr YYACCEPT; 2674178825Sdfr 2675178825Sdfr *++yyvsp = yylval; 2676178825Sdfr 2677178825Sdfr 2678178825Sdfr /* Shift the error token. */ 2679178825Sdfr YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 2680178825Sdfr 2681178825Sdfr yystate = yyn; 2682178825Sdfr goto yynewstate; 2683178825Sdfr 2684178825Sdfr 2685178825Sdfr/*-------------------------------------. 2686178825Sdfr| yyacceptlab -- YYACCEPT comes here. | 2687178825Sdfr`-------------------------------------*/ 2688178825Sdfryyacceptlab: 2689178825Sdfr yyresult = 0; 2690178825Sdfr goto yyreturn; 2691178825Sdfr 2692178825Sdfr/*-----------------------------------. 2693178825Sdfr| yyabortlab -- YYABORT comes here. | 2694178825Sdfr`-----------------------------------*/ 2695178825Sdfryyabortlab: 2696178825Sdfr yyresult = 1; 2697178825Sdfr goto yyreturn; 2698178825Sdfr 2699178825Sdfr#ifndef yyoverflow 2700178825Sdfr/*-------------------------------------------------. 2701178825Sdfr| yyexhaustedlab -- memory exhaustion comes here. | 2702178825Sdfr`-------------------------------------------------*/ 2703178825Sdfryyexhaustedlab: 2704178825Sdfr yyerror (YY_("memory exhausted")); 2705178825Sdfr yyresult = 2; 2706178825Sdfr /* Fall through. */ 2707178825Sdfr#endif 2708178825Sdfr 2709178825Sdfryyreturn: 2710178825Sdfr if (yychar != YYEOF && yychar != YYEMPTY) 2711178825Sdfr yydestruct ("Cleanup: discarding lookahead", 2712178825Sdfr yytoken, &yylval); 2713178825Sdfr /* Do not reclaim the symbols of the rule which action triggered 2714178825Sdfr this YYABORT or YYACCEPT. */ 2715178825Sdfr YYPOPSTACK (yylen); 2716178825Sdfr YY_STACK_PRINT (yyss, yyssp); 2717178825Sdfr while (yyssp != yyss) 2718178825Sdfr { 2719178825Sdfr yydestruct ("Cleanup: popping", 2720178825Sdfr yystos[*yyssp], yyvsp); 2721178825Sdfr YYPOPSTACK (1); 2722178825Sdfr } 2723178825Sdfr#ifndef yyoverflow 2724178825Sdfr if (yyss != yyssa) 2725178825Sdfr YYSTACK_FREE (yyss); 2726178825Sdfr#endif 2727178825Sdfr#if YYERROR_VERBOSE 2728178825Sdfr if (yymsg != yymsgbuf) 2729178825Sdfr YYSTACK_FREE (yymsg); 2730178825Sdfr#endif 2731178825Sdfr /* Make sure YYID is used. */ 2732178825Sdfr return YYID (yyresult); 2733178825Sdfr} 2734178825Sdfr 2735178825Sdfr 2736178825Sdfr#line 922 "parse.y" 2737178825Sdfr 2738178825Sdfr 2739178825Sdfrvoid 2740178825Sdfryyerror (const char *s) 2741178825Sdfr{ 2742178825Sdfr error_message ("%s\n", s); 2743178825Sdfr} 2744178825Sdfr 2745178825Sdfrstatic Type * 2746178825Sdfrnew_tag(int tagclass, int tagvalue, int tagenv, Type *oldtype) 2747178825Sdfr{ 2748178825Sdfr Type *t; 2749178825Sdfr if(oldtype->type == TTag && oldtype->tag.tagenv == TE_IMPLICIT) { 2750178825Sdfr t = oldtype; 2751178825Sdfr oldtype = oldtype->subtype; /* XXX */ 2752178825Sdfr } else 2753178825Sdfr t = new_type (TTag); 2754178825Sdfr 2755178825Sdfr t->tag.tagclass = tagclass; 2756178825Sdfr t->tag.tagvalue = tagvalue; 2757178825Sdfr t->tag.tagenv = tagenv; 2758178825Sdfr t->subtype = oldtype; 2759178825Sdfr return t; 2760178825Sdfr} 2761178825Sdfr 2762178825Sdfrstatic struct objid * 2763178825Sdfrnew_objid(const char *label, int value) 2764178825Sdfr{ 2765178825Sdfr struct objid *s; 2766178825Sdfr s = emalloc(sizeof(*s)); 2767178825Sdfr s->label = label; 2768178825Sdfr s->value = value; 2769178825Sdfr s->next = NULL; 2770178825Sdfr return s; 2771178825Sdfr} 2772178825Sdfr 2773178825Sdfrstatic void 2774178825Sdfradd_oid_to_tail(struct objid *head, struct objid *tail) 2775178825Sdfr{ 2776178825Sdfr struct objid *o; 2777178825Sdfr o = head; 2778178825Sdfr while (o->next) 2779178825Sdfr o = o->next; 2780178825Sdfr o->next = tail; 2781178825Sdfr} 2782178825Sdfr 2783178825Sdfrstatic Type * 2784178825Sdfrnew_type (Typetype tt) 2785178825Sdfr{ 2786178825Sdfr Type *t = ecalloc(1, sizeof(*t)); 2787178825Sdfr t->type = tt; 2788178825Sdfr return t; 2789178825Sdfr} 2790178825Sdfr 2791178825Sdfrstatic struct constraint_spec * 2792178825Sdfrnew_constraint_spec(enum ctype ct) 2793178825Sdfr{ 2794178825Sdfr struct constraint_spec *c = ecalloc(1, sizeof(*c)); 2795178825Sdfr c->ctype = ct; 2796178825Sdfr return c; 2797178825Sdfr} 2798178825Sdfr 2799178825Sdfrstatic void fix_labels2(Type *t, const char *prefix); 2800178825Sdfrstatic void fix_labels1(struct memhead *members, const char *prefix) 2801178825Sdfr{ 2802178825Sdfr Member *m; 2803178825Sdfr 2804178825Sdfr if(members == NULL) 2805178825Sdfr return; 2806178825Sdfr ASN1_TAILQ_FOREACH(m, members, members) { 2807178825Sdfr asprintf(&m->label, "%s_%s", prefix, m->gen_name); 2808178825Sdfr if (m->label == NULL) 2809178825Sdfr errx(1, "malloc"); 2810178825Sdfr if(m->type != NULL) 2811178825Sdfr fix_labels2(m->type, m->label); 2812178825Sdfr } 2813178825Sdfr} 2814178825Sdfr 2815178825Sdfrstatic void fix_labels2(Type *t, const char *prefix) 2816178825Sdfr{ 2817178825Sdfr for(; t; t = t->subtype) 2818178825Sdfr fix_labels1(t->members, prefix); 2819178825Sdfr} 2820178825Sdfr 2821178825Sdfrstatic void 2822178825Sdfrfix_labels(Symbol *s) 2823178825Sdfr{ 2824178825Sdfr char *p; 2825178825Sdfr asprintf(&p, "choice_%s", s->gen_name); 2826178825Sdfr if (p == NULL) 2827178825Sdfr errx(1, "malloc"); 2828178825Sdfr fix_labels2(s->type, p); 2829178825Sdfr free(p); 2830178825Sdfr} 2831178825Sdfr 2832