1*ae771770SStanislav Sedov /* A Bison parser, made by GNU Bison 2.3. */ 2*ae771770SStanislav Sedov 3*ae771770SStanislav Sedov /* Skeleton implementation for Bison's Yacc-like parsers in C 4*ae771770SStanislav Sedov 5*ae771770SStanislav Sedov Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 6*ae771770SStanislav Sedov Free Software Foundation, Inc. 7*ae771770SStanislav Sedov 8*ae771770SStanislav Sedov This program is free software; you can redistribute it and/or modify 9*ae771770SStanislav Sedov it under the terms of the GNU General Public License as published by 10*ae771770SStanislav Sedov the Free Software Foundation; either version 2, or (at your option) 11*ae771770SStanislav Sedov any later version. 12*ae771770SStanislav Sedov 13*ae771770SStanislav Sedov This program is distributed in the hope that it will be useful, 14*ae771770SStanislav Sedov but WITHOUT ANY WARRANTY; without even the implied warranty of 15*ae771770SStanislav Sedov MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16*ae771770SStanislav Sedov GNU General Public License for more details. 17*ae771770SStanislav Sedov 18*ae771770SStanislav Sedov You should have received a copy of the GNU General Public License 19*ae771770SStanislav Sedov along with this program; if not, write to the Free Software 20*ae771770SStanislav Sedov Foundation, Inc., 51 Franklin Street, Fifth Floor, 21*ae771770SStanislav Sedov Boston, MA 02110-1301, USA. */ 22*ae771770SStanislav Sedov 23*ae771770SStanislav Sedov /* As a special exception, you may create a larger work that contains 24*ae771770SStanislav Sedov part or all of the Bison parser skeleton and distribute that work 25*ae771770SStanislav Sedov under terms of your choice, so long as that work isn't itself a 26*ae771770SStanislav Sedov parser generator using the skeleton or a modified version thereof 27*ae771770SStanislav Sedov as a parser skeleton. Alternatively, if you modify or redistribute 28*ae771770SStanislav Sedov the parser skeleton itself, you may (at your option) remove this 29*ae771770SStanislav Sedov special exception, which will cause the skeleton and the resulting 30*ae771770SStanislav Sedov Bison output files to be licensed under the GNU General Public 31*ae771770SStanislav Sedov License without this special exception. 32*ae771770SStanislav Sedov 33*ae771770SStanislav Sedov This special exception was added by the Free Software Foundation in 34*ae771770SStanislav Sedov version 2.2 of Bison. */ 35*ae771770SStanislav Sedov 36*ae771770SStanislav Sedov /* C LALR(1) parser skeleton written by Richard Stallman, by 37*ae771770SStanislav Sedov simplifying the original so-called "semantic" parser. */ 38*ae771770SStanislav Sedov 39*ae771770SStanislav Sedov /* All symbols defined below should begin with yy or YY, to avoid 40*ae771770SStanislav Sedov infringing on user name space. This should be done even for local 41*ae771770SStanislav Sedov variables, as they might otherwise be expanded by user macros. 42*ae771770SStanislav Sedov There are some unavoidable exceptions within include files to 43*ae771770SStanislav Sedov define necessary library symbols; they are noted "INFRINGES ON 44*ae771770SStanislav Sedov USER NAME SPACE" below. */ 45*ae771770SStanislav Sedov 46*ae771770SStanislav Sedov /* Identify Bison output. */ 47*ae771770SStanislav Sedov #define YYBISON 1 48*ae771770SStanislav Sedov 49*ae771770SStanislav Sedov /* Bison version. */ 50*ae771770SStanislav Sedov #define YYBISON_VERSION "2.3" 51*ae771770SStanislav Sedov 52*ae771770SStanislav Sedov /* Skeleton name. */ 53*ae771770SStanislav Sedov #define YYSKELETON_NAME "yacc.c" 54*ae771770SStanislav Sedov 55*ae771770SStanislav Sedov /* Pure parsers. */ 56*ae771770SStanislav Sedov #define YYPURE 0 57*ae771770SStanislav Sedov 58*ae771770SStanislav Sedov /* Using locations. */ 59*ae771770SStanislav Sedov #define YYLSP_NEEDED 0 60*ae771770SStanislav Sedov 61*ae771770SStanislav Sedov 62*ae771770SStanislav Sedov 63*ae771770SStanislav Sedov /* Tokens. */ 64*ae771770SStanislav Sedov #ifndef YYTOKENTYPE 65*ae771770SStanislav Sedov # define YYTOKENTYPE 66*ae771770SStanislav Sedov /* Put the tokens into the symbol table, so that GDB and other debuggers 67*ae771770SStanislav Sedov know about them. */ 68*ae771770SStanislav Sedov enum yytokentype { 69*ae771770SStanislav Sedov kw_ABSENT = 258, 70*ae771770SStanislav Sedov kw_ABSTRACT_SYNTAX = 259, 71*ae771770SStanislav Sedov kw_ALL = 260, 72*ae771770SStanislav Sedov kw_APPLICATION = 261, 73*ae771770SStanislav Sedov kw_AUTOMATIC = 262, 74*ae771770SStanislav Sedov kw_BEGIN = 263, 75*ae771770SStanislav Sedov kw_BIT = 264, 76*ae771770SStanislav Sedov kw_BMPString = 265, 77*ae771770SStanislav Sedov kw_BOOLEAN = 266, 78*ae771770SStanislav Sedov kw_BY = 267, 79*ae771770SStanislav Sedov kw_CHARACTER = 268, 80*ae771770SStanislav Sedov kw_CHOICE = 269, 81*ae771770SStanislav Sedov kw_CLASS = 270, 82*ae771770SStanislav Sedov kw_COMPONENT = 271, 83*ae771770SStanislav Sedov kw_COMPONENTS = 272, 84*ae771770SStanislav Sedov kw_CONSTRAINED = 273, 85*ae771770SStanislav Sedov kw_CONTAINING = 274, 86*ae771770SStanislav Sedov kw_DEFAULT = 275, 87*ae771770SStanislav Sedov kw_DEFINITIONS = 276, 88*ae771770SStanislav Sedov kw_EMBEDDED = 277, 89*ae771770SStanislav Sedov kw_ENCODED = 278, 90*ae771770SStanislav Sedov kw_END = 279, 91*ae771770SStanislav Sedov kw_ENUMERATED = 280, 92*ae771770SStanislav Sedov kw_EXCEPT = 281, 93*ae771770SStanislav Sedov kw_EXPLICIT = 282, 94*ae771770SStanislav Sedov kw_EXPORTS = 283, 95*ae771770SStanislav Sedov kw_EXTENSIBILITY = 284, 96*ae771770SStanislav Sedov kw_EXTERNAL = 285, 97*ae771770SStanislav Sedov kw_FALSE = 286, 98*ae771770SStanislav Sedov kw_FROM = 287, 99*ae771770SStanislav Sedov kw_GeneralString = 288, 100*ae771770SStanislav Sedov kw_GeneralizedTime = 289, 101*ae771770SStanislav Sedov kw_GraphicString = 290, 102*ae771770SStanislav Sedov kw_IA5String = 291, 103*ae771770SStanislav Sedov kw_IDENTIFIER = 292, 104*ae771770SStanislav Sedov kw_IMPLICIT = 293, 105*ae771770SStanislav Sedov kw_IMPLIED = 294, 106*ae771770SStanislav Sedov kw_IMPORTS = 295, 107*ae771770SStanislav Sedov kw_INCLUDES = 296, 108*ae771770SStanislav Sedov kw_INSTANCE = 297, 109*ae771770SStanislav Sedov kw_INTEGER = 298, 110*ae771770SStanislav Sedov kw_INTERSECTION = 299, 111*ae771770SStanislav Sedov kw_ISO646String = 300, 112*ae771770SStanislav Sedov kw_MAX = 301, 113*ae771770SStanislav Sedov kw_MIN = 302, 114*ae771770SStanislav Sedov kw_MINUS_INFINITY = 303, 115*ae771770SStanislav Sedov kw_NULL = 304, 116*ae771770SStanislav Sedov kw_NumericString = 305, 117*ae771770SStanislav Sedov kw_OBJECT = 306, 118*ae771770SStanislav Sedov kw_OCTET = 307, 119*ae771770SStanislav Sedov kw_OF = 308, 120*ae771770SStanislav Sedov kw_OPTIONAL = 309, 121*ae771770SStanislav Sedov kw_ObjectDescriptor = 310, 122*ae771770SStanislav Sedov kw_PATTERN = 311, 123*ae771770SStanislav Sedov kw_PDV = 312, 124*ae771770SStanislav Sedov kw_PLUS_INFINITY = 313, 125*ae771770SStanislav Sedov kw_PRESENT = 314, 126*ae771770SStanislav Sedov kw_PRIVATE = 315, 127*ae771770SStanislav Sedov kw_PrintableString = 316, 128*ae771770SStanislav Sedov kw_REAL = 317, 129*ae771770SStanislav Sedov kw_RELATIVE_OID = 318, 130*ae771770SStanislav Sedov kw_SEQUENCE = 319, 131*ae771770SStanislav Sedov kw_SET = 320, 132*ae771770SStanislav Sedov kw_SIZE = 321, 133*ae771770SStanislav Sedov kw_STRING = 322, 134*ae771770SStanislav Sedov kw_SYNTAX = 323, 135*ae771770SStanislav Sedov kw_T61String = 324, 136*ae771770SStanislav Sedov kw_TAGS = 325, 137*ae771770SStanislav Sedov kw_TRUE = 326, 138*ae771770SStanislav Sedov kw_TYPE_IDENTIFIER = 327, 139*ae771770SStanislav Sedov kw_TeletexString = 328, 140*ae771770SStanislav Sedov kw_UNION = 329, 141*ae771770SStanislav Sedov kw_UNIQUE = 330, 142*ae771770SStanislav Sedov kw_UNIVERSAL = 331, 143*ae771770SStanislav Sedov kw_UTCTime = 332, 144*ae771770SStanislav Sedov kw_UTF8String = 333, 145*ae771770SStanislav Sedov kw_UniversalString = 334, 146*ae771770SStanislav Sedov kw_VideotexString = 335, 147*ae771770SStanislav Sedov kw_VisibleString = 336, 148*ae771770SStanislav Sedov kw_WITH = 337, 149*ae771770SStanislav Sedov RANGE = 338, 150*ae771770SStanislav Sedov EEQUAL = 339, 151*ae771770SStanislav Sedov ELLIPSIS = 340, 152*ae771770SStanislav Sedov IDENTIFIER = 341, 153*ae771770SStanislav Sedov referencename = 342, 154*ae771770SStanislav Sedov STRING = 343, 155*ae771770SStanislav Sedov NUMBER = 344 156*ae771770SStanislav Sedov }; 157*ae771770SStanislav Sedov #endif 158*ae771770SStanislav Sedov /* Tokens. */ 159*ae771770SStanislav Sedov #define kw_ABSENT 258 160*ae771770SStanislav Sedov #define kw_ABSTRACT_SYNTAX 259 161*ae771770SStanislav Sedov #define kw_ALL 260 162*ae771770SStanislav Sedov #define kw_APPLICATION 261 163*ae771770SStanislav Sedov #define kw_AUTOMATIC 262 164*ae771770SStanislav Sedov #define kw_BEGIN 263 165*ae771770SStanislav Sedov #define kw_BIT 264 166*ae771770SStanislav Sedov #define kw_BMPString 265 167*ae771770SStanislav Sedov #define kw_BOOLEAN 266 168*ae771770SStanislav Sedov #define kw_BY 267 169*ae771770SStanislav Sedov #define kw_CHARACTER 268 170*ae771770SStanislav Sedov #define kw_CHOICE 269 171*ae771770SStanislav Sedov #define kw_CLASS 270 172*ae771770SStanislav Sedov #define kw_COMPONENT 271 173*ae771770SStanislav Sedov #define kw_COMPONENTS 272 174*ae771770SStanislav Sedov #define kw_CONSTRAINED 273 175*ae771770SStanislav Sedov #define kw_CONTAINING 274 176*ae771770SStanislav Sedov #define kw_DEFAULT 275 177*ae771770SStanislav Sedov #define kw_DEFINITIONS 276 178*ae771770SStanislav Sedov #define kw_EMBEDDED 277 179*ae771770SStanislav Sedov #define kw_ENCODED 278 180*ae771770SStanislav Sedov #define kw_END 279 181*ae771770SStanislav Sedov #define kw_ENUMERATED 280 182*ae771770SStanislav Sedov #define kw_EXCEPT 281 183*ae771770SStanislav Sedov #define kw_EXPLICIT 282 184*ae771770SStanislav Sedov #define kw_EXPORTS 283 185*ae771770SStanislav Sedov #define kw_EXTENSIBILITY 284 186*ae771770SStanislav Sedov #define kw_EXTERNAL 285 187*ae771770SStanislav Sedov #define kw_FALSE 286 188*ae771770SStanislav Sedov #define kw_FROM 287 189*ae771770SStanislav Sedov #define kw_GeneralString 288 190*ae771770SStanislav Sedov #define kw_GeneralizedTime 289 191*ae771770SStanislav Sedov #define kw_GraphicString 290 192*ae771770SStanislav Sedov #define kw_IA5String 291 193*ae771770SStanislav Sedov #define kw_IDENTIFIER 292 194*ae771770SStanislav Sedov #define kw_IMPLICIT 293 195*ae771770SStanislav Sedov #define kw_IMPLIED 294 196*ae771770SStanislav Sedov #define kw_IMPORTS 295 197*ae771770SStanislav Sedov #define kw_INCLUDES 296 198*ae771770SStanislav Sedov #define kw_INSTANCE 297 199*ae771770SStanislav Sedov #define kw_INTEGER 298 200*ae771770SStanislav Sedov #define kw_INTERSECTION 299 201*ae771770SStanislav Sedov #define kw_ISO646String 300 202*ae771770SStanislav Sedov #define kw_MAX 301 203*ae771770SStanislav Sedov #define kw_MIN 302 204*ae771770SStanislav Sedov #define kw_MINUS_INFINITY 303 205*ae771770SStanislav Sedov #define kw_NULL 304 206*ae771770SStanislav Sedov #define kw_NumericString 305 207*ae771770SStanislav Sedov #define kw_OBJECT 306 208*ae771770SStanislav Sedov #define kw_OCTET 307 209*ae771770SStanislav Sedov #define kw_OF 308 210*ae771770SStanislav Sedov #define kw_OPTIONAL 309 211*ae771770SStanislav Sedov #define kw_ObjectDescriptor 310 212*ae771770SStanislav Sedov #define kw_PATTERN 311 213*ae771770SStanislav Sedov #define kw_PDV 312 214*ae771770SStanislav Sedov #define kw_PLUS_INFINITY 313 215*ae771770SStanislav Sedov #define kw_PRESENT 314 216*ae771770SStanislav Sedov #define kw_PRIVATE 315 217*ae771770SStanislav Sedov #define kw_PrintableString 316 218*ae771770SStanislav Sedov #define kw_REAL 317 219*ae771770SStanislav Sedov #define kw_RELATIVE_OID 318 220*ae771770SStanislav Sedov #define kw_SEQUENCE 319 221*ae771770SStanislav Sedov #define kw_SET 320 222*ae771770SStanislav Sedov #define kw_SIZE 321 223*ae771770SStanislav Sedov #define kw_STRING 322 224*ae771770SStanislav Sedov #define kw_SYNTAX 323 225*ae771770SStanislav Sedov #define kw_T61String 324 226*ae771770SStanislav Sedov #define kw_TAGS 325 227*ae771770SStanislav Sedov #define kw_TRUE 326 228*ae771770SStanislav Sedov #define kw_TYPE_IDENTIFIER 327 229*ae771770SStanislav Sedov #define kw_TeletexString 328 230*ae771770SStanislav Sedov #define kw_UNION 329 231*ae771770SStanislav Sedov #define kw_UNIQUE 330 232*ae771770SStanislav Sedov #define kw_UNIVERSAL 331 233*ae771770SStanislav Sedov #define kw_UTCTime 332 234*ae771770SStanislav Sedov #define kw_UTF8String 333 235*ae771770SStanislav Sedov #define kw_UniversalString 334 236*ae771770SStanislav Sedov #define kw_VideotexString 335 237*ae771770SStanislav Sedov #define kw_VisibleString 336 238*ae771770SStanislav Sedov #define kw_WITH 337 239*ae771770SStanislav Sedov #define RANGE 338 240*ae771770SStanislav Sedov #define EEQUAL 339 241*ae771770SStanislav Sedov #define ELLIPSIS 340 242*ae771770SStanislav Sedov #define IDENTIFIER 341 243*ae771770SStanislav Sedov #define referencename 342 244*ae771770SStanislav Sedov #define STRING 343 245*ae771770SStanislav Sedov #define NUMBER 344 246*ae771770SStanislav Sedov 247*ae771770SStanislav Sedov 248*ae771770SStanislav Sedov 249*ae771770SStanislav Sedov 250*ae771770SStanislav Sedov /* Copy the first part of user declarations. */ 251*ae771770SStanislav Sedov #line 38 "asn1parse.y" 252*ae771770SStanislav Sedov 253*ae771770SStanislav Sedov 254*ae771770SStanislav Sedov #include <config.h> 255*ae771770SStanislav Sedov 256*ae771770SStanislav Sedov #include <stdio.h> 257*ae771770SStanislav Sedov #include <stdlib.h> 258*ae771770SStanislav Sedov #include <string.h> 259*ae771770SStanislav Sedov #include "symbol.h" 260*ae771770SStanislav Sedov #include "lex.h" 261*ae771770SStanislav Sedov #include "gen_locl.h" 262*ae771770SStanislav Sedov #include "der.h" 263*ae771770SStanislav Sedov 264*ae771770SStanislav Sedov RCSID("$Id$"); 265*ae771770SStanislav Sedov 266*ae771770SStanislav Sedov static Type *new_type (Typetype t); 267*ae771770SStanislav Sedov static struct constraint_spec *new_constraint_spec(enum ctype); 268*ae771770SStanislav Sedov static Type *new_tag(int tagclass, int tagvalue, int tagenv, Type *oldtype); 269*ae771770SStanislav Sedov void yyerror (const char *); 270*ae771770SStanislav Sedov static struct objid *new_objid(const char *label, int value); 271*ae771770SStanislav Sedov static void add_oid_to_tail(struct objid *, struct objid *); 272*ae771770SStanislav Sedov static void fix_labels(Symbol *s); 273*ae771770SStanislav Sedov 274*ae771770SStanislav Sedov struct string_list { 275*ae771770SStanislav Sedov char *string; 276*ae771770SStanislav Sedov struct string_list *next; 277*ae771770SStanislav Sedov }; 278*ae771770SStanislav Sedov 279*ae771770SStanislav Sedov /* Declarations for Bison */ 280*ae771770SStanislav Sedov #define YYMALLOC malloc 281*ae771770SStanislav Sedov #define YYFREE free 282*ae771770SStanislav Sedov 283*ae771770SStanislav Sedov 284*ae771770SStanislav Sedov 285*ae771770SStanislav Sedov /* Enabling traces. */ 286*ae771770SStanislav Sedov #ifndef YYDEBUG 287*ae771770SStanislav Sedov # define YYDEBUG 1 288*ae771770SStanislav Sedov #endif 289*ae771770SStanislav Sedov 290*ae771770SStanislav Sedov /* Enabling verbose error messages. */ 291*ae771770SStanislav Sedov #ifdef YYERROR_VERBOSE 292*ae771770SStanislav Sedov # undef YYERROR_VERBOSE 293*ae771770SStanislav Sedov # define YYERROR_VERBOSE 1 294*ae771770SStanislav Sedov #else 295*ae771770SStanislav Sedov # define YYERROR_VERBOSE 0 296*ae771770SStanislav Sedov #endif 297*ae771770SStanislav Sedov 298*ae771770SStanislav Sedov /* Enabling the token table. */ 299*ae771770SStanislav Sedov #ifndef YYTOKEN_TABLE 300*ae771770SStanislav Sedov # define YYTOKEN_TABLE 0 301*ae771770SStanislav Sedov #endif 302*ae771770SStanislav Sedov 303*ae771770SStanislav Sedov #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 304*ae771770SStanislav Sedov typedef union YYSTYPE 305*ae771770SStanislav Sedov #line 71 "asn1parse.y" 306*ae771770SStanislav Sedov { 307*ae771770SStanislav Sedov int constant; 308*ae771770SStanislav Sedov struct value *value; 309*ae771770SStanislav Sedov struct range *range; 310*ae771770SStanislav Sedov char *name; 311*ae771770SStanislav Sedov Type *type; 312*ae771770SStanislav Sedov Member *member; 313*ae771770SStanislav Sedov struct objid *objid; 314*ae771770SStanislav Sedov char *defval; 315*ae771770SStanislav Sedov struct string_list *sl; 316*ae771770SStanislav Sedov struct tagtype tag; 317*ae771770SStanislav Sedov struct memhead *members; 318*ae771770SStanislav Sedov struct constraint_spec *constraint_spec; 319*ae771770SStanislav Sedov } 320*ae771770SStanislav Sedov /* Line 193 of yacc.c. */ 321*ae771770SStanislav Sedov #line 322 "asn1parse.c" 322*ae771770SStanislav Sedov YYSTYPE; 323*ae771770SStanislav Sedov # define yystype YYSTYPE /* obsolescent; will be withdrawn */ 324*ae771770SStanislav Sedov # define YYSTYPE_IS_DECLARED 1 325*ae771770SStanislav Sedov # define YYSTYPE_IS_TRIVIAL 1 326*ae771770SStanislav Sedov #endif 327*ae771770SStanislav Sedov 328*ae771770SStanislav Sedov 329*ae771770SStanislav Sedov 330*ae771770SStanislav Sedov /* Copy the second part of user declarations. */ 331*ae771770SStanislav Sedov 332*ae771770SStanislav Sedov 333*ae771770SStanislav Sedov /* Line 216 of yacc.c. */ 334*ae771770SStanislav Sedov #line 335 "asn1parse.c" 335*ae771770SStanislav Sedov 336*ae771770SStanislav Sedov #ifdef short 337*ae771770SStanislav Sedov # undef short 338*ae771770SStanislav Sedov #endif 339*ae771770SStanislav Sedov 340*ae771770SStanislav Sedov #ifdef YYTYPE_UINT8 341*ae771770SStanislav Sedov typedef YYTYPE_UINT8 yytype_uint8; 342*ae771770SStanislav Sedov #else 343*ae771770SStanislav Sedov typedef unsigned char yytype_uint8; 344*ae771770SStanislav Sedov #endif 345*ae771770SStanislav Sedov 346*ae771770SStanislav Sedov #ifdef YYTYPE_INT8 347*ae771770SStanislav Sedov typedef YYTYPE_INT8 yytype_int8; 348*ae771770SStanislav Sedov #elif (defined __STDC__ || defined __C99__FUNC__ \ 349*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 350*ae771770SStanislav Sedov typedef signed char yytype_int8; 351*ae771770SStanislav Sedov #else 352*ae771770SStanislav Sedov typedef short int yytype_int8; 353*ae771770SStanislav Sedov #endif 354*ae771770SStanislav Sedov 355*ae771770SStanislav Sedov #ifdef YYTYPE_UINT16 356*ae771770SStanislav Sedov typedef YYTYPE_UINT16 yytype_uint16; 357*ae771770SStanislav Sedov #else 358*ae771770SStanislav Sedov typedef unsigned short int yytype_uint16; 359*ae771770SStanislav Sedov #endif 360*ae771770SStanislav Sedov 361*ae771770SStanislav Sedov #ifdef YYTYPE_INT16 362*ae771770SStanislav Sedov typedef YYTYPE_INT16 yytype_int16; 363*ae771770SStanislav Sedov #else 364*ae771770SStanislav Sedov typedef short int yytype_int16; 365*ae771770SStanislav Sedov #endif 366*ae771770SStanislav Sedov 367*ae771770SStanislav Sedov #ifndef YYSIZE_T 368*ae771770SStanislav Sedov # ifdef __SIZE_TYPE__ 369*ae771770SStanislav Sedov # define YYSIZE_T __SIZE_TYPE__ 370*ae771770SStanislav Sedov # elif defined size_t 371*ae771770SStanislav Sedov # define YYSIZE_T size_t 372*ae771770SStanislav Sedov # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 373*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 374*ae771770SStanislav Sedov # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 375*ae771770SStanislav Sedov # define YYSIZE_T size_t 376*ae771770SStanislav Sedov # else 377*ae771770SStanislav Sedov # define YYSIZE_T unsigned int 378*ae771770SStanislav Sedov # endif 379*ae771770SStanislav Sedov #endif 380*ae771770SStanislav Sedov 381*ae771770SStanislav Sedov #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 382*ae771770SStanislav Sedov 383*ae771770SStanislav Sedov #ifndef YY_ 384*ae771770SStanislav Sedov # if defined YYENABLE_NLS && YYENABLE_NLS 385*ae771770SStanislav Sedov # if ENABLE_NLS 386*ae771770SStanislav Sedov # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 387*ae771770SStanislav Sedov # define YY_(msgid) dgettext ("bison-runtime", msgid) 388*ae771770SStanislav Sedov # endif 389*ae771770SStanislav Sedov # endif 390*ae771770SStanislav Sedov # ifndef YY_ 391*ae771770SStanislav Sedov # define YY_(msgid) msgid 392*ae771770SStanislav Sedov # endif 393*ae771770SStanislav Sedov #endif 394*ae771770SStanislav Sedov 395*ae771770SStanislav Sedov /* Suppress unused-variable warnings by "using" E. */ 396*ae771770SStanislav Sedov #if ! defined lint || defined __GNUC__ 397*ae771770SStanislav Sedov # define YYUSE(e) ((void) (e)) 398*ae771770SStanislav Sedov #else 399*ae771770SStanislav Sedov # define YYUSE(e) /* empty */ 400*ae771770SStanislav Sedov #endif 401*ae771770SStanislav Sedov 402*ae771770SStanislav Sedov /* Identity function, used to suppress warnings about constant conditions. */ 403*ae771770SStanislav Sedov #ifndef lint 404*ae771770SStanislav Sedov # define YYID(n) (n) 405*ae771770SStanislav Sedov #else 406*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \ 407*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 408*ae771770SStanislav Sedov static int 409*ae771770SStanislav Sedov YYID (int i) 410*ae771770SStanislav Sedov #else 411*ae771770SStanislav Sedov static int 412*ae771770SStanislav Sedov YYID (i) 413*ae771770SStanislav Sedov int i; 414*ae771770SStanislav Sedov #endif 415*ae771770SStanislav Sedov { 416*ae771770SStanislav Sedov return i; 417*ae771770SStanislav Sedov } 418*ae771770SStanislav Sedov #endif 419*ae771770SStanislav Sedov 420*ae771770SStanislav Sedov #if ! defined yyoverflow || YYERROR_VERBOSE 421*ae771770SStanislav Sedov 422*ae771770SStanislav Sedov /* The parser invokes alloca or malloc; define the necessary symbols. */ 423*ae771770SStanislav Sedov 424*ae771770SStanislav Sedov # ifdef YYSTACK_USE_ALLOCA 425*ae771770SStanislav Sedov # if YYSTACK_USE_ALLOCA 426*ae771770SStanislav Sedov # ifdef __GNUC__ 427*ae771770SStanislav Sedov # define YYSTACK_ALLOC __builtin_alloca 428*ae771770SStanislav Sedov # elif defined __BUILTIN_VA_ARG_INCR 429*ae771770SStanislav Sedov # include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 430*ae771770SStanislav Sedov # elif defined _AIX 431*ae771770SStanislav Sedov # define YYSTACK_ALLOC __alloca 432*ae771770SStanislav Sedov # elif defined _MSC_VER 433*ae771770SStanislav Sedov # include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 434*ae771770SStanislav Sedov # define alloca _alloca 435*ae771770SStanislav Sedov # else 436*ae771770SStanislav Sedov # define YYSTACK_ALLOC alloca 437*ae771770SStanislav Sedov # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 438*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 439*ae771770SStanislav Sedov # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 440*ae771770SStanislav Sedov # ifndef _STDLIB_H 441*ae771770SStanislav Sedov # define _STDLIB_H 1 442*ae771770SStanislav Sedov # endif 443*ae771770SStanislav Sedov # endif 444*ae771770SStanislav Sedov # endif 445*ae771770SStanislav Sedov # endif 446*ae771770SStanislav Sedov # endif 447*ae771770SStanislav Sedov 448*ae771770SStanislav Sedov # ifdef YYSTACK_ALLOC 449*ae771770SStanislav Sedov /* Pacify GCC's `empty if-body' warning. */ 450*ae771770SStanislav Sedov # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) 451*ae771770SStanislav Sedov # ifndef YYSTACK_ALLOC_MAXIMUM 452*ae771770SStanislav Sedov /* The OS might guarantee only one guard page at the bottom of the stack, 453*ae771770SStanislav Sedov and a page size can be as small as 4096 bytes. So we cannot safely 454*ae771770SStanislav Sedov invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 455*ae771770SStanislav Sedov to allow for a few compiler-allocated temporary stack slots. */ 456*ae771770SStanislav Sedov # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 457*ae771770SStanislav Sedov # endif 458*ae771770SStanislav Sedov # else 459*ae771770SStanislav Sedov # define YYSTACK_ALLOC YYMALLOC 460*ae771770SStanislav Sedov # define YYSTACK_FREE YYFREE 461*ae771770SStanislav Sedov # ifndef YYSTACK_ALLOC_MAXIMUM 462*ae771770SStanislav Sedov # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 463*ae771770SStanislav Sedov # endif 464*ae771770SStanislav Sedov # if (defined __cplusplus && ! defined _STDLIB_H \ 465*ae771770SStanislav Sedov && ! ((defined YYMALLOC || defined malloc) \ 466*ae771770SStanislav Sedov && (defined YYFREE || defined free))) 467*ae771770SStanislav Sedov # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 468*ae771770SStanislav Sedov # ifndef _STDLIB_H 469*ae771770SStanislav Sedov # define _STDLIB_H 1 470*ae771770SStanislav Sedov # endif 471*ae771770SStanislav Sedov # endif 472*ae771770SStanislav Sedov # ifndef YYMALLOC 473*ae771770SStanislav Sedov # define YYMALLOC malloc 474*ae771770SStanislav Sedov # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 475*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 476*ae771770SStanislav Sedov void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 477*ae771770SStanislav Sedov # endif 478*ae771770SStanislav Sedov # endif 479*ae771770SStanislav Sedov # ifndef YYFREE 480*ae771770SStanislav Sedov # define YYFREE free 481*ae771770SStanislav Sedov # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 482*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 483*ae771770SStanislav Sedov void free (void *); /* INFRINGES ON USER NAME SPACE */ 484*ae771770SStanislav Sedov # endif 485*ae771770SStanislav Sedov # endif 486*ae771770SStanislav Sedov # endif 487*ae771770SStanislav Sedov #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 488*ae771770SStanislav Sedov 489*ae771770SStanislav Sedov 490*ae771770SStanislav Sedov #if (! defined yyoverflow \ 491*ae771770SStanislav Sedov && (! defined __cplusplus \ 492*ae771770SStanislav Sedov || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 493*ae771770SStanislav Sedov 494*ae771770SStanislav Sedov /* A type that is properly aligned for any stack member. */ 495*ae771770SStanislav Sedov union yyalloc 496*ae771770SStanislav Sedov { 497*ae771770SStanislav Sedov yytype_int16 yyss; 498*ae771770SStanislav Sedov YYSTYPE yyvs; 499*ae771770SStanislav Sedov }; 500*ae771770SStanislav Sedov 501*ae771770SStanislav Sedov /* The size of the maximum gap between one aligned stack and the next. */ 502*ae771770SStanislav Sedov # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 503*ae771770SStanislav Sedov 504*ae771770SStanislav Sedov /* The size of an array large to enough to hold all stacks, each with 505*ae771770SStanislav Sedov N elements. */ 506*ae771770SStanislav Sedov # define YYSTACK_BYTES(N) \ 507*ae771770SStanislav Sedov ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ 508*ae771770SStanislav Sedov + YYSTACK_GAP_MAXIMUM) 509*ae771770SStanislav Sedov 510*ae771770SStanislav Sedov /* Copy COUNT objects from FROM to TO. The source and destination do 511*ae771770SStanislav Sedov not overlap. */ 512*ae771770SStanislav Sedov # ifndef YYCOPY 513*ae771770SStanislav Sedov # if defined __GNUC__ && 1 < __GNUC__ 514*ae771770SStanislav Sedov # define YYCOPY(To, From, Count) \ 515*ae771770SStanislav Sedov __builtin_memcpy (To, From, (Count) * sizeof (*(From))) 516*ae771770SStanislav Sedov # else 517*ae771770SStanislav Sedov # define YYCOPY(To, From, Count) \ 518*ae771770SStanislav Sedov do \ 519*ae771770SStanislav Sedov { \ 520*ae771770SStanislav Sedov YYSIZE_T yyi; \ 521*ae771770SStanislav Sedov for (yyi = 0; yyi < (Count); yyi++) \ 522*ae771770SStanislav Sedov (To)[yyi] = (From)[yyi]; \ 523*ae771770SStanislav Sedov } \ 524*ae771770SStanislav Sedov while (YYID (0)) 525*ae771770SStanislav Sedov # endif 526*ae771770SStanislav Sedov # endif 527*ae771770SStanislav Sedov 528*ae771770SStanislav Sedov /* Relocate STACK from its old location to the new one. The 529*ae771770SStanislav Sedov local variables YYSIZE and YYSTACKSIZE give the old and new number of 530*ae771770SStanislav Sedov elements in the stack, and YYPTR gives the new location of the 531*ae771770SStanislav Sedov stack. Advance YYPTR to a properly aligned location for the next 532*ae771770SStanislav Sedov stack. */ 533*ae771770SStanislav Sedov # define YYSTACK_RELOCATE(Stack) \ 534*ae771770SStanislav Sedov do \ 535*ae771770SStanislav Sedov { \ 536*ae771770SStanislav Sedov YYSIZE_T yynewbytes; \ 537*ae771770SStanislav Sedov YYCOPY (&yyptr->Stack, Stack, yysize); \ 538*ae771770SStanislav Sedov Stack = &yyptr->Stack; \ 539*ae771770SStanislav Sedov yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 540*ae771770SStanislav Sedov yyptr += yynewbytes / sizeof (*yyptr); \ 541*ae771770SStanislav Sedov } \ 542*ae771770SStanislav Sedov while (YYID (0)) 543*ae771770SStanislav Sedov 544*ae771770SStanislav Sedov #endif 545*ae771770SStanislav Sedov 546*ae771770SStanislav Sedov /* YYFINAL -- State number of the termination state. */ 547*ae771770SStanislav Sedov #define YYFINAL 6 548*ae771770SStanislav Sedov /* YYLAST -- Last index in YYTABLE. */ 549*ae771770SStanislav Sedov #define YYLAST 203 550*ae771770SStanislav Sedov 551*ae771770SStanislav Sedov /* YYNTOKENS -- Number of terminals. */ 552*ae771770SStanislav Sedov #define YYNTOKENS 98 553*ae771770SStanislav Sedov /* YYNNTS -- Number of nonterminals. */ 554*ae771770SStanislav Sedov #define YYNNTS 69 555*ae771770SStanislav Sedov /* YYNRULES -- Number of rules. */ 556*ae771770SStanislav Sedov #define YYNRULES 140 557*ae771770SStanislav Sedov /* YYNRULES -- Number of states. */ 558*ae771770SStanislav Sedov #define YYNSTATES 220 559*ae771770SStanislav Sedov 560*ae771770SStanislav Sedov /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 561*ae771770SStanislav Sedov #define YYUNDEFTOK 2 562*ae771770SStanislav Sedov #define YYMAXUTOK 344 563*ae771770SStanislav Sedov 564*ae771770SStanislav Sedov #define YYTRANSLATE(YYX) \ 565*ae771770SStanislav Sedov ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 566*ae771770SStanislav Sedov 567*ae771770SStanislav Sedov /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 568*ae771770SStanislav Sedov static const yytype_uint8 yytranslate[] = 569*ae771770SStanislav Sedov { 570*ae771770SStanislav Sedov 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 571*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 572*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 573*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 574*ae771770SStanislav Sedov 92, 93, 2, 2, 91, 2, 2, 2, 2, 2, 575*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 90, 576*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 577*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 578*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 579*ae771770SStanislav Sedov 2, 96, 2, 97, 2, 2, 2, 2, 2, 2, 580*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 581*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 582*ae771770SStanislav Sedov 2, 2, 2, 94, 2, 95, 2, 2, 2, 2, 583*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 584*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 585*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 586*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 587*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 588*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 589*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 590*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 591*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 592*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 593*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 594*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 595*ae771770SStanislav Sedov 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 596*ae771770SStanislav Sedov 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 597*ae771770SStanislav Sedov 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 598*ae771770SStanislav Sedov 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 599*ae771770SStanislav Sedov 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 600*ae771770SStanislav Sedov 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 601*ae771770SStanislav Sedov 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 602*ae771770SStanislav Sedov 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 603*ae771770SStanislav Sedov 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 604*ae771770SStanislav Sedov 85, 86, 87, 88, 89 605*ae771770SStanislav Sedov }; 606*ae771770SStanislav Sedov 607*ae771770SStanislav Sedov #if YYDEBUG 608*ae771770SStanislav Sedov /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 609*ae771770SStanislav Sedov YYRHS. */ 610*ae771770SStanislav Sedov static const yytype_uint16 yyprhs[] = 611*ae771770SStanislav Sedov { 612*ae771770SStanislav Sedov 0, 0, 3, 13, 16, 19, 22, 23, 26, 27, 613*ae771770SStanislav Sedov 31, 32, 36, 37, 39, 40, 42, 45, 50, 54, 614*ae771770SStanislav Sedov 57, 58, 60, 63, 65, 67, 71, 73, 77, 79, 615*ae771770SStanislav Sedov 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 616*ae771770SStanislav Sedov 101, 103, 105, 107, 109, 111, 113, 119, 125, 131, 617*ae771770SStanislav Sedov 135, 137, 140, 145, 147, 151, 155, 160, 165, 167, 618*ae771770SStanislav Sedov 170, 176, 179, 183, 185, 186, 189, 194, 198, 203, 619*ae771770SStanislav Sedov 208, 212, 216, 221, 223, 225, 227, 229, 231, 234, 620*ae771770SStanislav Sedov 238, 240, 242, 244, 247, 251, 257, 262, 266, 271, 621*ae771770SStanislav Sedov 272, 274, 276, 278, 279, 281, 283, 288, 290, 292, 622*ae771770SStanislav Sedov 294, 296, 298, 300, 302, 304, 306, 308, 312, 316, 623*ae771770SStanislav Sedov 319, 321, 324, 328, 330, 334, 339, 341, 342, 346, 624*ae771770SStanislav Sedov 347, 350, 355, 357, 359, 361, 363, 365, 367, 369, 625*ae771770SStanislav Sedov 371, 373, 375, 377, 379, 381, 383, 385, 387, 389, 626*ae771770SStanislav Sedov 391 627*ae771770SStanislav Sedov }; 628*ae771770SStanislav Sedov 629*ae771770SStanislav Sedov /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 630*ae771770SStanislav Sedov static const yytype_int16 yyrhs[] = 631*ae771770SStanislav Sedov { 632*ae771770SStanislav Sedov 99, 0, -1, 86, 152, 21, 100, 101, 84, 8, 633*ae771770SStanislav Sedov 102, 24, -1, 27, 70, -1, 38, 70, -1, 7, 634*ae771770SStanislav Sedov 70, -1, -1, 29, 39, -1, -1, 107, 103, 108, 635*ae771770SStanislav Sedov -1, -1, 40, 104, 90, -1, -1, 105, -1, -1, 636*ae771770SStanislav Sedov 106, -1, 105, 106, -1, 110, 32, 86, 152, -1, 637*ae771770SStanislav Sedov 28, 110, 90, -1, 28, 5, -1, -1, 109, -1, 638*ae771770SStanislav Sedov 109, 108, -1, 111, -1, 144, -1, 86, 91, 110, 639*ae771770SStanislav Sedov -1, 86, -1, 86, 84, 112, -1, 113, -1, 131, 640*ae771770SStanislav Sedov -1, 134, -1, 121, -1, 114, -1, 145, -1, 130, 641*ae771770SStanislav Sedov -1, 119, -1, 116, -1, 124, -1, 122, -1, 123, 642*ae771770SStanislav Sedov -1, 126, -1, 127, -1, 128, -1, 129, -1, 140, 643*ae771770SStanislav Sedov -1, 11, -1, 92, 156, 83, 156, 93, -1, 92, 644*ae771770SStanislav Sedov 156, 83, 46, 93, -1, 92, 47, 83, 156, 93, 645*ae771770SStanislav Sedov -1, 92, 156, 93, -1, 43, -1, 43, 115, -1, 646*ae771770SStanislav Sedov 43, 94, 117, 95, -1, 118, -1, 117, 91, 118, 647*ae771770SStanislav Sedov -1, 117, 91, 85, -1, 86, 92, 164, 93, -1, 648*ae771770SStanislav Sedov 25, 94, 120, 95, -1, 117, -1, 9, 67, -1, 649*ae771770SStanislav Sedov 9, 67, 94, 150, 95, -1, 51, 37, -1, 52, 650*ae771770SStanislav Sedov 67, 125, -1, 49, -1, -1, 66, 115, -1, 64, 651*ae771770SStanislav Sedov 94, 147, 95, -1, 64, 94, 95, -1, 64, 125, 652*ae771770SStanislav Sedov 53, 112, -1, 65, 94, 147, 95, -1, 65, 94, 653*ae771770SStanislav Sedov 95, -1, 65, 53, 112, -1, 14, 94, 147, 95, 654*ae771770SStanislav Sedov -1, 132, -1, 133, -1, 86, -1, 34, -1, 77, 655*ae771770SStanislav Sedov -1, 112, 135, -1, 92, 136, 93, -1, 137, -1, 656*ae771770SStanislav Sedov 138, -1, 139, -1, 19, 112, -1, 23, 12, 156, 657*ae771770SStanislav Sedov -1, 19, 112, 23, 12, 156, -1, 18, 12, 94, 658*ae771770SStanislav Sedov 95, -1, 141, 143, 112, -1, 96, 142, 89, 97, 659*ae771770SStanislav Sedov -1, -1, 76, -1, 6, -1, 60, -1, -1, 27, 660*ae771770SStanislav Sedov -1, 38, -1, 86, 112, 84, 156, -1, 146, -1, 661*ae771770SStanislav Sedov 33, -1, 73, -1, 78, -1, 61, -1, 81, -1, 662*ae771770SStanislav Sedov 36, -1, 10, -1, 79, -1, 149, -1, 147, 91, 663*ae771770SStanislav Sedov 149, -1, 147, 91, 85, -1, 86, 112, -1, 148, 664*ae771770SStanislav Sedov -1, 148, 54, -1, 148, 20, 156, -1, 151, -1, 665*ae771770SStanislav Sedov 150, 91, 151, -1, 86, 92, 89, 93, -1, 153, 666*ae771770SStanislav Sedov -1, -1, 94, 154, 95, -1, -1, 155, 154, -1, 667*ae771770SStanislav Sedov 86, 92, 89, 93, -1, 86, -1, 89, -1, 157, 668*ae771770SStanislav Sedov -1, 158, -1, 162, -1, 161, -1, 163, -1, 166, 669*ae771770SStanislav Sedov -1, 165, -1, 159, -1, 160, -1, 86, -1, 88, 670*ae771770SStanislav Sedov -1, 71, -1, 31, -1, 164, -1, 89, -1, 49, 671*ae771770SStanislav Sedov -1, 153, -1 672*ae771770SStanislav Sedov }; 673*ae771770SStanislav Sedov 674*ae771770SStanislav Sedov /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 675*ae771770SStanislav Sedov static const yytype_uint16 yyrline[] = 676*ae771770SStanislav Sedov { 677*ae771770SStanislav Sedov 0, 239, 239, 246, 247, 249, 251, 254, 256, 259, 678*ae771770SStanislav Sedov 260, 263, 264, 267, 268, 271, 272, 275, 287, 293, 679*ae771770SStanislav Sedov 294, 297, 298, 301, 302, 305, 311, 319, 329, 330, 680*ae771770SStanislav Sedov 331, 334, 335, 336, 337, 338, 339, 340, 341, 342, 681*ae771770SStanislav Sedov 343, 344, 345, 346, 347, 350, 357, 367, 375, 383, 682*ae771770SStanislav Sedov 394, 399, 405, 413, 419, 424, 428, 441, 449, 452, 683*ae771770SStanislav Sedov 459, 467, 473, 482, 490, 491, 496, 502, 510, 519, 684*ae771770SStanislav Sedov 525, 533, 541, 548, 549, 552, 563, 568, 575, 591, 685*ae771770SStanislav Sedov 597, 600, 601, 604, 610, 618, 628, 634, 647, 656, 686*ae771770SStanislav Sedov 659, 663, 667, 674, 677, 681, 688, 699, 702, 707, 687*ae771770SStanislav Sedov 712, 717, 722, 727, 732, 737, 745, 751, 756, 767, 688*ae771770SStanislav Sedov 778, 784, 790, 798, 804, 811, 824, 825, 828, 835, 689*ae771770SStanislav Sedov 838, 849, 853, 864, 870, 871, 874, 875, 876, 877, 690*ae771770SStanislav Sedov 878, 881, 884, 887, 898, 906, 912, 920, 928, 931, 691*ae771770SStanislav Sedov 936 692*ae771770SStanislav Sedov }; 693*ae771770SStanislav Sedov #endif 694*ae771770SStanislav Sedov 695*ae771770SStanislav Sedov #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 696*ae771770SStanislav Sedov /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 697*ae771770SStanislav Sedov First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 698*ae771770SStanislav Sedov static const char *const yytname[] = 699*ae771770SStanislav Sedov { 700*ae771770SStanislav Sedov "$end", "error", "$undefined", "kw_ABSENT", "kw_ABSTRACT_SYNTAX", 701*ae771770SStanislav Sedov "kw_ALL", "kw_APPLICATION", "kw_AUTOMATIC", "kw_BEGIN", "kw_BIT", 702*ae771770SStanislav Sedov "kw_BMPString", "kw_BOOLEAN", "kw_BY", "kw_CHARACTER", "kw_CHOICE", 703*ae771770SStanislav Sedov "kw_CLASS", "kw_COMPONENT", "kw_COMPONENTS", "kw_CONSTRAINED", 704*ae771770SStanislav Sedov "kw_CONTAINING", "kw_DEFAULT", "kw_DEFINITIONS", "kw_EMBEDDED", 705*ae771770SStanislav Sedov "kw_ENCODED", "kw_END", "kw_ENUMERATED", "kw_EXCEPT", "kw_EXPLICIT", 706*ae771770SStanislav Sedov "kw_EXPORTS", "kw_EXTENSIBILITY", "kw_EXTERNAL", "kw_FALSE", "kw_FROM", 707*ae771770SStanislav Sedov "kw_GeneralString", "kw_GeneralizedTime", "kw_GraphicString", 708*ae771770SStanislav Sedov "kw_IA5String", "kw_IDENTIFIER", "kw_IMPLICIT", "kw_IMPLIED", 709*ae771770SStanislav Sedov "kw_IMPORTS", "kw_INCLUDES", "kw_INSTANCE", "kw_INTEGER", 710*ae771770SStanislav Sedov "kw_INTERSECTION", "kw_ISO646String", "kw_MAX", "kw_MIN", 711*ae771770SStanislav Sedov "kw_MINUS_INFINITY", "kw_NULL", "kw_NumericString", "kw_OBJECT", 712*ae771770SStanislav Sedov "kw_OCTET", "kw_OF", "kw_OPTIONAL", "kw_ObjectDescriptor", "kw_PATTERN", 713*ae771770SStanislav Sedov "kw_PDV", "kw_PLUS_INFINITY", "kw_PRESENT", "kw_PRIVATE", 714*ae771770SStanislav Sedov "kw_PrintableString", "kw_REAL", "kw_RELATIVE_OID", "kw_SEQUENCE", 715*ae771770SStanislav Sedov "kw_SET", "kw_SIZE", "kw_STRING", "kw_SYNTAX", "kw_T61String", "kw_TAGS", 716*ae771770SStanislav Sedov "kw_TRUE", "kw_TYPE_IDENTIFIER", "kw_TeletexString", "kw_UNION", 717*ae771770SStanislav Sedov "kw_UNIQUE", "kw_UNIVERSAL", "kw_UTCTime", "kw_UTF8String", 718*ae771770SStanislav Sedov "kw_UniversalString", "kw_VideotexString", "kw_VisibleString", "kw_WITH", 719*ae771770SStanislav Sedov "RANGE", "EEQUAL", "ELLIPSIS", "IDENTIFIER", "referencename", "STRING", 720*ae771770SStanislav Sedov "NUMBER", "';'", "','", "'('", "')'", "'{'", "'}'", "'['", "']'", 721*ae771770SStanislav Sedov "$accept", "ModuleDefinition", "TagDefault", "ExtensionDefault", 722*ae771770SStanislav Sedov "ModuleBody", "Imports", "SymbolsImported", "SymbolsFromModuleList", 723*ae771770SStanislav Sedov "SymbolsFromModule", "Exports", "AssignmentList", "Assignment", 724*ae771770SStanislav Sedov "referencenames", "TypeAssignment", "Type", "BuiltinType", "BooleanType", 725*ae771770SStanislav Sedov "range", "IntegerType", "NamedNumberList", "NamedNumber", 726*ae771770SStanislav Sedov "EnumeratedType", "Enumerations", "BitStringType", 727*ae771770SStanislav Sedov "ObjectIdentifierType", "OctetStringType", "NullType", "size", 728*ae771770SStanislav Sedov "SequenceType", "SequenceOfType", "SetType", "SetOfType", "ChoiceType", 729*ae771770SStanislav Sedov "ReferencedType", "DefinedType", "UsefulType", "ConstrainedType", 730*ae771770SStanislav Sedov "Constraint", "ConstraintSpec", "GeneralConstraint", 731*ae771770SStanislav Sedov "ContentsConstraint", "UserDefinedConstraint", "TaggedType", "Tag", 732*ae771770SStanislav Sedov "Class", "tagenv", "ValueAssignment", "CharacterStringType", 733*ae771770SStanislav Sedov "RestrictedCharactedStringType", "ComponentTypeList", "NamedType", 734*ae771770SStanislav Sedov "ComponentType", "NamedBitList", "NamedBit", "objid_opt", "objid", 735*ae771770SStanislav Sedov "objid_list", "objid_element", "Value", "BuiltinValue", 736*ae771770SStanislav Sedov "ReferencedValue", "DefinedValue", "Valuereference", 737*ae771770SStanislav Sedov "CharacterStringValue", "BooleanValue", "IntegerValue", "SignedNumber", 738*ae771770SStanislav Sedov "NullValue", "ObjectIdentifierValue", 0 739*ae771770SStanislav Sedov }; 740*ae771770SStanislav Sedov #endif 741*ae771770SStanislav Sedov 742*ae771770SStanislav Sedov # ifdef YYPRINT 743*ae771770SStanislav Sedov /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 744*ae771770SStanislav Sedov token YYLEX-NUM. */ 745*ae771770SStanislav Sedov static const yytype_uint16 yytoknum[] = 746*ae771770SStanislav Sedov { 747*ae771770SStanislav Sedov 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 748*ae771770SStanislav Sedov 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 749*ae771770SStanislav Sedov 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 750*ae771770SStanislav Sedov 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 751*ae771770SStanislav Sedov 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 752*ae771770SStanislav Sedov 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 753*ae771770SStanislav Sedov 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 754*ae771770SStanislav Sedov 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 755*ae771770SStanislav Sedov 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 756*ae771770SStanislav Sedov 59, 44, 40, 41, 123, 125, 91, 93 757*ae771770SStanislav Sedov }; 758*ae771770SStanislav Sedov # endif 759*ae771770SStanislav Sedov 760*ae771770SStanislav Sedov /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 761*ae771770SStanislav Sedov static const yytype_uint8 yyr1[] = 762*ae771770SStanislav Sedov { 763*ae771770SStanislav Sedov 0, 98, 99, 100, 100, 100, 100, 101, 101, 102, 764*ae771770SStanislav Sedov 102, 103, 103, 104, 104, 105, 105, 106, 107, 107, 765*ae771770SStanislav Sedov 107, 108, 108, 109, 109, 110, 110, 111, 112, 112, 766*ae771770SStanislav Sedov 112, 113, 113, 113, 113, 113, 113, 113, 113, 113, 767*ae771770SStanislav Sedov 113, 113, 113, 113, 113, 114, 115, 115, 115, 115, 768*ae771770SStanislav Sedov 116, 116, 116, 117, 117, 117, 118, 119, 120, 121, 769*ae771770SStanislav Sedov 121, 122, 123, 124, 125, 125, 126, 126, 127, 128, 770*ae771770SStanislav Sedov 128, 129, 130, 131, 131, 132, 133, 133, 134, 135, 771*ae771770SStanislav Sedov 136, 137, 137, 138, 138, 138, 139, 140, 141, 142, 772*ae771770SStanislav Sedov 142, 142, 142, 143, 143, 143, 144, 145, 146, 146, 773*ae771770SStanislav Sedov 146, 146, 146, 146, 146, 146, 147, 147, 147, 148, 774*ae771770SStanislav Sedov 149, 149, 149, 150, 150, 151, 152, 152, 153, 154, 775*ae771770SStanislav Sedov 154, 155, 155, 155, 156, 156, 157, 157, 157, 157, 776*ae771770SStanislav Sedov 157, 158, 159, 160, 161, 162, 162, 163, 164, 165, 777*ae771770SStanislav Sedov 166 778*ae771770SStanislav Sedov }; 779*ae771770SStanislav Sedov 780*ae771770SStanislav Sedov /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 781*ae771770SStanislav Sedov static const yytype_uint8 yyr2[] = 782*ae771770SStanislav Sedov { 783*ae771770SStanislav Sedov 0, 2, 9, 2, 2, 2, 0, 2, 0, 3, 784*ae771770SStanislav Sedov 0, 3, 0, 1, 0, 1, 2, 4, 3, 2, 785*ae771770SStanislav Sedov 0, 1, 2, 1, 1, 3, 1, 3, 1, 1, 786*ae771770SStanislav Sedov 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 787*ae771770SStanislav Sedov 1, 1, 1, 1, 1, 1, 5, 5, 5, 3, 788*ae771770SStanislav Sedov 1, 2, 4, 1, 3, 3, 4, 4, 1, 2, 789*ae771770SStanislav Sedov 5, 2, 3, 1, 0, 2, 4, 3, 4, 4, 790*ae771770SStanislav Sedov 3, 3, 4, 1, 1, 1, 1, 1, 2, 3, 791*ae771770SStanislav Sedov 1, 1, 1, 2, 3, 5, 4, 3, 4, 0, 792*ae771770SStanislav Sedov 1, 1, 1, 0, 1, 1, 4, 1, 1, 1, 793*ae771770SStanislav Sedov 1, 1, 1, 1, 1, 1, 1, 3, 3, 2, 794*ae771770SStanislav Sedov 1, 2, 3, 1, 3, 4, 1, 0, 3, 0, 795*ae771770SStanislav Sedov 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 796*ae771770SStanislav Sedov 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 797*ae771770SStanislav Sedov 1 798*ae771770SStanislav Sedov }; 799*ae771770SStanislav Sedov 800*ae771770SStanislav Sedov /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state 801*ae771770SStanislav Sedov STATE-NUM when YYTABLE doesn't specify something else to do. Zero 802*ae771770SStanislav Sedov means the default is an error. */ 803*ae771770SStanislav Sedov static const yytype_uint8 yydefact[] = 804*ae771770SStanislav Sedov { 805*ae771770SStanislav Sedov 0, 117, 0, 119, 0, 116, 1, 122, 123, 0, 806*ae771770SStanislav Sedov 119, 6, 0, 118, 120, 0, 0, 0, 8, 0, 807*ae771770SStanislav Sedov 5, 3, 4, 0, 0, 121, 7, 0, 20, 0, 808*ae771770SStanislav Sedov 0, 12, 19, 26, 0, 2, 14, 0, 0, 18, 809*ae771770SStanislav Sedov 0, 13, 15, 0, 0, 9, 21, 23, 24, 25, 810*ae771770SStanislav Sedov 11, 16, 0, 0, 104, 45, 0, 0, 98, 76, 811*ae771770SStanislav Sedov 103, 50, 63, 0, 0, 101, 64, 0, 99, 77, 812*ae771770SStanislav Sedov 100, 105, 102, 0, 75, 89, 0, 28, 32, 36, 813*ae771770SStanislav Sedov 35, 31, 38, 39, 37, 40, 41, 42, 43, 34, 814*ae771770SStanislav Sedov 29, 73, 74, 30, 44, 93, 33, 97, 22, 117, 815*ae771770SStanislav Sedov 59, 0, 0, 0, 0, 51, 61, 64, 0, 0, 816*ae771770SStanislav Sedov 0, 0, 0, 27, 91, 92, 90, 0, 0, 0, 817*ae771770SStanislav Sedov 78, 94, 95, 0, 17, 0, 0, 0, 110, 106, 818*ae771770SStanislav Sedov 0, 58, 53, 0, 136, 0, 139, 135, 133, 134, 819*ae771770SStanislav Sedov 138, 140, 0, 124, 125, 131, 132, 127, 126, 128, 820*ae771770SStanislav Sedov 137, 130, 129, 0, 62, 65, 67, 0, 0, 71, 821*ae771770SStanislav Sedov 70, 0, 0, 96, 0, 0, 0, 0, 80, 81, 822*ae771770SStanislav Sedov 82, 87, 0, 0, 113, 109, 0, 72, 0, 111, 823*ae771770SStanislav Sedov 0, 0, 57, 0, 0, 49, 52, 66, 68, 69, 824*ae771770SStanislav Sedov 88, 0, 83, 0, 79, 0, 0, 60, 108, 107, 825*ae771770SStanislav Sedov 112, 0, 55, 54, 0, 0, 0, 0, 0, 84, 826*ae771770SStanislav Sedov 0, 114, 56, 48, 47, 46, 86, 0, 115, 85 827*ae771770SStanislav Sedov }; 828*ae771770SStanislav Sedov 829*ae771770SStanislav Sedov /* YYDEFGOTO[NTERM-NUM]. */ 830*ae771770SStanislav Sedov static const yytype_int16 yydefgoto[] = 831*ae771770SStanislav Sedov { 832*ae771770SStanislav Sedov -1, 2, 18, 24, 30, 37, 40, 41, 42, 31, 833*ae771770SStanislav Sedov 45, 46, 43, 47, 76, 77, 78, 105, 79, 131, 834*ae771770SStanislav Sedov 132, 80, 133, 81, 82, 83, 84, 110, 85, 86, 835*ae771770SStanislav Sedov 87, 88, 89, 90, 91, 92, 93, 120, 167, 168, 836*ae771770SStanislav Sedov 169, 170, 94, 95, 117, 123, 48, 96, 97, 127, 837*ae771770SStanislav Sedov 128, 129, 173, 174, 4, 141, 9, 10, 142, 143, 838*ae771770SStanislav Sedov 144, 145, 146, 147, 148, 149, 150, 151, 152 839*ae771770SStanislav Sedov }; 840*ae771770SStanislav Sedov 841*ae771770SStanislav Sedov /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 842*ae771770SStanislav Sedov STATE-NUM. */ 843*ae771770SStanislav Sedov #define YYPACT_NINF -119 844*ae771770SStanislav Sedov static const yytype_int16 yypact[] = 845*ae771770SStanislav Sedov { 846*ae771770SStanislav Sedov -43, -56, 47, -65, 29, -119, -119, -31, -119, -25, 847*ae771770SStanislav Sedov -65, 4, -1, -119, -119, 17, 20, 26, 50, 13, 848*ae771770SStanislav Sedov -119, -119, -119, 63, 24, -119, -119, 104, 8, -2, 849*ae771770SStanislav Sedov 89, 74, -119, 33, 25, -119, 34, 39, 34, -119, 850*ae771770SStanislav Sedov 37, 34, -119, 98, 58, -119, 39, -119, -119, -119, 851*ae771770SStanislav Sedov -119, -119, 52, 66, -119, -119, 51, 53, -119, -119, 852*ae771770SStanislav Sedov -119, -79, -119, 109, 81, -119, -60, -48, -119, -119, 853*ae771770SStanislav Sedov -119, -119, -119, 107, -119, 2, -74, -119, -119, -119, 854*ae771770SStanislav Sedov -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, 855*ae771770SStanislav Sedov -119, -119, -119, -119, -119, -18, -119, -119, -119, -56, 856*ae771770SStanislav Sedov 55, 65, 67, -12, 67, -119, -119, 86, 68, -70, 857*ae771770SStanislav Sedov 102, 107, -69, 69, -119, -119, -119, 73, 40, 10, 858*ae771770SStanislav Sedov -119, -119, -119, 107, -119, 71, 107, -47, -13, -119, 859*ae771770SStanislav Sedov 72, 75, -119, 70, -119, 80, -119, -119, -119, -119, 860*ae771770SStanislav Sedov -119, -119, -71, -119, -119, -119, -119, -119, -119, -119, 861*ae771770SStanislav Sedov -119, -119, -119, -46, -119, -119, -119, -39, 107, 69, 862*ae771770SStanislav Sedov -119, -38, 76, -119, 155, 107, 157, 77, -119, -119, 863*ae771770SStanislav Sedov -119, 69, 82, -10, -119, 69, -22, -119, 40, -119, 864*ae771770SStanislav Sedov 87, 19, -119, 40, 9, -119, -119, -119, 69, -119, 865*ae771770SStanislav Sedov -119, 83, -19, 40, -119, 90, 71, -119, -119, -119, 866*ae771770SStanislav Sedov -119, 85, -119, -119, 88, 94, 96, 95, 163, -119, 867*ae771770SStanislav Sedov 99, -119, -119, -119, -119, -119, -119, 40, -119, -119 868*ae771770SStanislav Sedov }; 869*ae771770SStanislav Sedov 870*ae771770SStanislav Sedov /* YYPGOTO[NTERM-NUM]. */ 871*ae771770SStanislav Sedov static const yytype_int16 yypgoto[] = 872*ae771770SStanislav Sedov { 873*ae771770SStanislav Sedov -119, -119, -119, -119, -119, -119, -119, -119, 141, -119, 874*ae771770SStanislav Sedov 137, -119, -15, -119, -72, -119, -119, 91, -119, 92, 875*ae771770SStanislav Sedov 14, -119, -119, -119, -119, -119, -119, 84, -119, -119, 876*ae771770SStanislav Sedov -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, 877*ae771770SStanislav Sedov -119, -119, -119, -119, -119, -119, -119, -119, -119, -82, 878*ae771770SStanislav Sedov -119, 18, -119, 5, 101, 1, 187, -119, -118, -119, 879*ae771770SStanislav Sedov -119, -119, -119, -119, -119, -119, 22, -119, -119 880*ae771770SStanislav Sedov }; 881*ae771770SStanislav Sedov 882*ae771770SStanislav Sedov /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 883*ae771770SStanislav Sedov positive, shift that token. If negative, reduce the rule which 884*ae771770SStanislav Sedov number is the opposite. If zero, do what YYDEFACT says. 885*ae771770SStanislav Sedov If YYTABLE_NINF, syntax error. */ 886*ae771770SStanislav Sedov #define YYTABLE_NINF -11 887*ae771770SStanislav Sedov static const yytype_int16 yytable[] = 888*ae771770SStanislav Sedov { 889*ae771770SStanislav Sedov 163, 113, 5, 32, 208, 111, 108, 178, 114, 121, 890*ae771770SStanislav Sedov 118, 15, 184, 103, 34, 104, 126, 126, 119, 134, 891*ae771770SStanislav Sedov 122, 7, 185, 49, 8, 156, 160, 157, 164, 165, 892*ae771770SStanislav Sedov 161, 16, -10, 166, 109, 135, 29, 136, 3, 159, 893*ae771770SStanislav Sedov 134, 179, 17, 1, 176, 181, 112, 6, 177, 186, 894*ae771770SStanislav Sedov 11, 171, 176, 176, 175, 205, 187, 189, 136, 137, 895*ae771770SStanislav Sedov 200, 12, 115, 198, 126, 204, 206, 53, 54, 55, 896*ae771770SStanislav Sedov 13, 134, 56, 119, 138, 209, 139, 140, 116, 23, 897*ae771770SStanislav Sedov 137, 196, 3, 57, 33, 197, 188, 20, 19, 136, 898*ae771770SStanislav Sedov 21, 58, 59, 192, 60, 138, 22, 139, 140, 219, 899*ae771770SStanislav Sedov 5, 61, 26, 3, 202, 130, 25, 62, 27, 63, 900*ae771770SStanislav Sedov 64, 137, 28, 35, 36, 39, 53, 54, 55, 65, 901*ae771770SStanislav Sedov 33, 56, 66, 67, 38, 44, 138, 50, 139, 140, 902*ae771770SStanislav Sedov 52, 68, 57, 100, 3, 69, 70, 71, 99, 72, 903*ae771770SStanislav Sedov 58, 59, 73, 60, 74, 101, 106, 102, 107, 125, 904*ae771770SStanislav Sedov 61, 126, 108, 130, 75, 158, 62, 172, 63, 64, 905*ae771770SStanislav Sedov 103, 119, 162, 183, 180, 182, 181, 191, 65, 193, 906*ae771770SStanislav Sedov 194, 66, 67, 190, 195, 217, 140, 207, 212, 210, 907*ae771770SStanislav Sedov 68, 213, 51, 98, 69, 70, 71, 214, 72, 215, 908*ae771770SStanislav Sedov 216, 154, 218, 74, 199, 203, 153, 14, 0, 155, 909*ae771770SStanislav Sedov 124, 211, 201, 75 910*ae771770SStanislav Sedov }; 911*ae771770SStanislav Sedov 912*ae771770SStanislav Sedov static const yytype_int16 yycheck[] = 913*ae771770SStanislav Sedov { 914*ae771770SStanislav Sedov 118, 73, 1, 5, 23, 53, 66, 20, 6, 27, 915*ae771770SStanislav Sedov 84, 7, 83, 92, 29, 94, 86, 86, 92, 31, 916*ae771770SStanislav Sedov 38, 86, 93, 38, 89, 95, 95, 109, 18, 19, 917*ae771770SStanislav Sedov 112, 27, 24, 23, 94, 47, 28, 49, 94, 111, 918*ae771770SStanislav Sedov 31, 54, 38, 86, 91, 91, 94, 0, 95, 95, 919*ae771770SStanislav Sedov 21, 123, 91, 91, 126, 46, 95, 95, 49, 71, 920*ae771770SStanislav Sedov 178, 92, 60, 85, 86, 183, 184, 9, 10, 11, 921*ae771770SStanislav Sedov 95, 31, 14, 92, 86, 193, 88, 89, 76, 29, 922*ae771770SStanislav Sedov 71, 91, 94, 25, 86, 95, 158, 70, 89, 49, 923*ae771770SStanislav Sedov 70, 33, 34, 165, 36, 86, 70, 88, 89, 217, 924*ae771770SStanislav Sedov 99, 43, 39, 94, 85, 86, 93, 49, 84, 51, 925*ae771770SStanislav Sedov 52, 71, 8, 24, 40, 90, 9, 10, 11, 61, 926*ae771770SStanislav Sedov 86, 14, 64, 65, 91, 86, 86, 90, 88, 89, 927*ae771770SStanislav Sedov 32, 73, 25, 67, 94, 77, 78, 79, 86, 81, 928*ae771770SStanislav Sedov 33, 34, 84, 36, 86, 94, 37, 94, 67, 94, 929*ae771770SStanislav Sedov 43, 86, 66, 86, 96, 53, 49, 86, 51, 52, 930*ae771770SStanislav Sedov 92, 92, 89, 83, 92, 95, 91, 12, 61, 12, 931*ae771770SStanislav Sedov 93, 64, 65, 97, 92, 12, 89, 94, 93, 89, 932*ae771770SStanislav Sedov 73, 93, 41, 46, 77, 78, 79, 93, 81, 93, 933*ae771770SStanislav Sedov 95, 107, 93, 86, 176, 181, 104, 10, -1, 108, 934*ae771770SStanislav Sedov 99, 196, 180, 96 935*ae771770SStanislav Sedov }; 936*ae771770SStanislav Sedov 937*ae771770SStanislav Sedov /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 938*ae771770SStanislav Sedov symbol of state STATE-NUM. */ 939*ae771770SStanislav Sedov static const yytype_uint8 yystos[] = 940*ae771770SStanislav Sedov { 941*ae771770SStanislav Sedov 0, 86, 99, 94, 152, 153, 0, 86, 89, 154, 942*ae771770SStanislav Sedov 155, 21, 92, 95, 154, 7, 27, 38, 100, 89, 943*ae771770SStanislav Sedov 70, 70, 70, 29, 101, 93, 39, 84, 8, 28, 944*ae771770SStanislav Sedov 102, 107, 5, 86, 110, 24, 40, 103, 91, 90, 945*ae771770SStanislav Sedov 104, 105, 106, 110, 86, 108, 109, 111, 144, 110, 946*ae771770SStanislav Sedov 90, 106, 32, 9, 10, 11, 14, 25, 33, 34, 947*ae771770SStanislav Sedov 36, 43, 49, 51, 52, 61, 64, 65, 73, 77, 948*ae771770SStanislav Sedov 78, 79, 81, 84, 86, 96, 112, 113, 114, 116, 949*ae771770SStanislav Sedov 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 950*ae771770SStanislav Sedov 131, 132, 133, 134, 140, 141, 145, 146, 108, 86, 951*ae771770SStanislav Sedov 67, 94, 94, 92, 94, 115, 37, 67, 66, 94, 952*ae771770SStanislav Sedov 125, 53, 94, 112, 6, 60, 76, 142, 84, 92, 953*ae771770SStanislav Sedov 135, 27, 38, 143, 152, 94, 86, 147, 148, 149, 954*ae771770SStanislav Sedov 86, 117, 118, 120, 31, 47, 49, 71, 86, 88, 955*ae771770SStanislav Sedov 89, 153, 156, 157, 158, 159, 160, 161, 162, 163, 956*ae771770SStanislav Sedov 164, 165, 166, 117, 125, 115, 95, 147, 53, 112, 957*ae771770SStanislav Sedov 95, 147, 89, 156, 18, 19, 23, 136, 137, 138, 958*ae771770SStanislav Sedov 139, 112, 86, 150, 151, 112, 91, 95, 20, 54, 959*ae771770SStanislav Sedov 92, 91, 95, 83, 83, 93, 95, 95, 112, 95, 960*ae771770SStanislav Sedov 97, 12, 112, 12, 93, 92, 91, 95, 85, 149, 961*ae771770SStanislav Sedov 156, 164, 85, 118, 156, 46, 156, 94, 23, 156, 962*ae771770SStanislav Sedov 89, 151, 93, 93, 93, 93, 95, 12, 93, 156 963*ae771770SStanislav Sedov }; 964*ae771770SStanislav Sedov 965*ae771770SStanislav Sedov #define yyerrok (yyerrstatus = 0) 966*ae771770SStanislav Sedov #define yyclearin (yychar = YYEMPTY) 967*ae771770SStanislav Sedov #define YYEMPTY (-2) 968*ae771770SStanislav Sedov #define YYEOF 0 969*ae771770SStanislav Sedov 970*ae771770SStanislav Sedov #define YYACCEPT goto yyacceptlab 971*ae771770SStanislav Sedov #define YYABORT goto yyabortlab 972*ae771770SStanislav Sedov #define YYERROR goto yyerrorlab 973*ae771770SStanislav Sedov 974*ae771770SStanislav Sedov 975*ae771770SStanislav Sedov /* Like YYERROR except do call yyerror. This remains here temporarily 976*ae771770SStanislav Sedov to ease the transition to the new meaning of YYERROR, for GCC. 977*ae771770SStanislav Sedov Once GCC version 2 has supplanted version 1, this can go. */ 978*ae771770SStanislav Sedov 979*ae771770SStanislav Sedov #define YYFAIL goto yyerrlab 980*ae771770SStanislav Sedov 981*ae771770SStanislav Sedov #define YYRECOVERING() (!!yyerrstatus) 982*ae771770SStanislav Sedov 983*ae771770SStanislav Sedov #define YYBACKUP(Token, Value) \ 984*ae771770SStanislav Sedov do \ 985*ae771770SStanislav Sedov if (yychar == YYEMPTY && yylen == 1) \ 986*ae771770SStanislav Sedov { \ 987*ae771770SStanislav Sedov yychar = (Token); \ 988*ae771770SStanislav Sedov yylval = (Value); \ 989*ae771770SStanislav Sedov yytoken = YYTRANSLATE (yychar); \ 990*ae771770SStanislav Sedov YYPOPSTACK (1); \ 991*ae771770SStanislav Sedov goto yybackup; \ 992*ae771770SStanislav Sedov } \ 993*ae771770SStanislav Sedov else \ 994*ae771770SStanislav Sedov { \ 995*ae771770SStanislav Sedov yyerror (YY_("syntax error: cannot back up")); \ 996*ae771770SStanislav Sedov YYERROR; \ 997*ae771770SStanislav Sedov } \ 998*ae771770SStanislav Sedov while (YYID (0)) 999*ae771770SStanislav Sedov 1000*ae771770SStanislav Sedov 1001*ae771770SStanislav Sedov #define YYTERROR 1 1002*ae771770SStanislav Sedov #define YYERRCODE 256 1003*ae771770SStanislav Sedov 1004*ae771770SStanislav Sedov 1005*ae771770SStanislav Sedov /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 1006*ae771770SStanislav Sedov If N is 0, then set CURRENT to the empty location which ends 1007*ae771770SStanislav Sedov the previous symbol: RHS[0] (always defined). */ 1008*ae771770SStanislav Sedov 1009*ae771770SStanislav Sedov #define YYRHSLOC(Rhs, K) ((Rhs)[K]) 1010*ae771770SStanislav Sedov #ifndef YYLLOC_DEFAULT 1011*ae771770SStanislav Sedov # define YYLLOC_DEFAULT(Current, Rhs, N) \ 1012*ae771770SStanislav Sedov do \ 1013*ae771770SStanislav Sedov if (YYID (N)) \ 1014*ae771770SStanislav Sedov { \ 1015*ae771770SStanislav Sedov (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 1016*ae771770SStanislav Sedov (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 1017*ae771770SStanislav Sedov (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 1018*ae771770SStanislav Sedov (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 1019*ae771770SStanislav Sedov } \ 1020*ae771770SStanislav Sedov else \ 1021*ae771770SStanislav Sedov { \ 1022*ae771770SStanislav Sedov (Current).first_line = (Current).last_line = \ 1023*ae771770SStanislav Sedov YYRHSLOC (Rhs, 0).last_line; \ 1024*ae771770SStanislav Sedov (Current).first_column = (Current).last_column = \ 1025*ae771770SStanislav Sedov YYRHSLOC (Rhs, 0).last_column; \ 1026*ae771770SStanislav Sedov } \ 1027*ae771770SStanislav Sedov while (YYID (0)) 1028*ae771770SStanislav Sedov #endif 1029*ae771770SStanislav Sedov 1030*ae771770SStanislav Sedov 1031*ae771770SStanislav Sedov /* YY_LOCATION_PRINT -- Print the location on the stream. 1032*ae771770SStanislav Sedov This macro was not mandated originally: define only if we know 1033*ae771770SStanislav Sedov we won't break user code: when these are the locations we know. */ 1034*ae771770SStanislav Sedov 1035*ae771770SStanislav Sedov #ifndef YY_LOCATION_PRINT 1036*ae771770SStanislav Sedov # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 1037*ae771770SStanislav Sedov # define YY_LOCATION_PRINT(File, Loc) \ 1038*ae771770SStanislav Sedov fprintf (File, "%d.%d-%d.%d", \ 1039*ae771770SStanislav Sedov (Loc).first_line, (Loc).first_column, \ 1040*ae771770SStanislav Sedov (Loc).last_line, (Loc).last_column) 1041*ae771770SStanislav Sedov # else 1042*ae771770SStanislav Sedov # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 1043*ae771770SStanislav Sedov # endif 1044*ae771770SStanislav Sedov #endif 1045*ae771770SStanislav Sedov 1046*ae771770SStanislav Sedov 1047*ae771770SStanislav Sedov /* YYLEX -- calling `yylex' with the right arguments. */ 1048*ae771770SStanislav Sedov 1049*ae771770SStanislav Sedov #ifdef YYLEX_PARAM 1050*ae771770SStanislav Sedov # define YYLEX yylex (YYLEX_PARAM) 1051*ae771770SStanislav Sedov #else 1052*ae771770SStanislav Sedov # define YYLEX yylex () 1053*ae771770SStanislav Sedov #endif 1054*ae771770SStanislav Sedov 1055*ae771770SStanislav Sedov /* Enable debugging if requested. */ 1056*ae771770SStanislav Sedov #if YYDEBUG 1057*ae771770SStanislav Sedov 1058*ae771770SStanislav Sedov # ifndef YYFPRINTF 1059*ae771770SStanislav Sedov # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 1060*ae771770SStanislav Sedov # define YYFPRINTF fprintf 1061*ae771770SStanislav Sedov # endif 1062*ae771770SStanislav Sedov 1063*ae771770SStanislav Sedov # define YYDPRINTF(Args) \ 1064*ae771770SStanislav Sedov do { \ 1065*ae771770SStanislav Sedov if (yydebug) \ 1066*ae771770SStanislav Sedov YYFPRINTF Args; \ 1067*ae771770SStanislav Sedov } while (YYID (0)) 1068*ae771770SStanislav Sedov 1069*ae771770SStanislav Sedov # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 1070*ae771770SStanislav Sedov do { \ 1071*ae771770SStanislav Sedov if (yydebug) \ 1072*ae771770SStanislav Sedov { \ 1073*ae771770SStanislav Sedov YYFPRINTF (stderr, "%s ", Title); \ 1074*ae771770SStanislav Sedov yy_symbol_print (stderr, \ 1075*ae771770SStanislav Sedov Type, Value); \ 1076*ae771770SStanislav Sedov YYFPRINTF (stderr, "\n"); \ 1077*ae771770SStanislav Sedov } \ 1078*ae771770SStanislav Sedov } while (YYID (0)) 1079*ae771770SStanislav Sedov 1080*ae771770SStanislav Sedov 1081*ae771770SStanislav Sedov /*--------------------------------. 1082*ae771770SStanislav Sedov | Print this symbol on YYOUTPUT. | 1083*ae771770SStanislav Sedov `--------------------------------*/ 1084*ae771770SStanislav Sedov 1085*ae771770SStanislav Sedov /*ARGSUSED*/ 1086*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \ 1087*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 1088*ae771770SStanislav Sedov static void 1089*ae771770SStanislav Sedov yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 1090*ae771770SStanislav Sedov #else 1091*ae771770SStanislav Sedov static void 1092*ae771770SStanislav Sedov yy_symbol_value_print (yyoutput, yytype, yyvaluep) 1093*ae771770SStanislav Sedov FILE *yyoutput; 1094*ae771770SStanislav Sedov int yytype; 1095*ae771770SStanislav Sedov YYSTYPE const * const yyvaluep; 1096*ae771770SStanislav Sedov #endif 1097*ae771770SStanislav Sedov { 1098*ae771770SStanislav Sedov if (!yyvaluep) 1099*ae771770SStanislav Sedov return; 1100*ae771770SStanislav Sedov # ifdef YYPRINT 1101*ae771770SStanislav Sedov if (yytype < YYNTOKENS) 1102*ae771770SStanislav Sedov YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 1103*ae771770SStanislav Sedov # else 1104*ae771770SStanislav Sedov YYUSE (yyoutput); 1105*ae771770SStanislav Sedov # endif 1106*ae771770SStanislav Sedov switch (yytype) 1107*ae771770SStanislav Sedov { 1108*ae771770SStanislav Sedov default: 1109*ae771770SStanislav Sedov break; 1110*ae771770SStanislav Sedov } 1111*ae771770SStanislav Sedov } 1112*ae771770SStanislav Sedov 1113*ae771770SStanislav Sedov 1114*ae771770SStanislav Sedov /*--------------------------------. 1115*ae771770SStanislav Sedov | Print this symbol on YYOUTPUT. | 1116*ae771770SStanislav Sedov `--------------------------------*/ 1117*ae771770SStanislav Sedov 1118*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \ 1119*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 1120*ae771770SStanislav Sedov static void 1121*ae771770SStanislav Sedov yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 1122*ae771770SStanislav Sedov #else 1123*ae771770SStanislav Sedov static void 1124*ae771770SStanislav Sedov yy_symbol_print (yyoutput, yytype, yyvaluep) 1125*ae771770SStanislav Sedov FILE *yyoutput; 1126*ae771770SStanislav Sedov int yytype; 1127*ae771770SStanislav Sedov YYSTYPE const * const yyvaluep; 1128*ae771770SStanislav Sedov #endif 1129*ae771770SStanislav Sedov { 1130*ae771770SStanislav Sedov if (yytype < YYNTOKENS) 1131*ae771770SStanislav Sedov YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 1132*ae771770SStanislav Sedov else 1133*ae771770SStanislav Sedov YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 1134*ae771770SStanislav Sedov 1135*ae771770SStanislav Sedov yy_symbol_value_print (yyoutput, yytype, yyvaluep); 1136*ae771770SStanislav Sedov YYFPRINTF (yyoutput, ")"); 1137*ae771770SStanislav Sedov } 1138*ae771770SStanislav Sedov 1139*ae771770SStanislav Sedov /*------------------------------------------------------------------. 1140*ae771770SStanislav Sedov | yy_stack_print -- Print the state stack from its BOTTOM up to its | 1141*ae771770SStanislav Sedov | TOP (included). | 1142*ae771770SStanislav Sedov `------------------------------------------------------------------*/ 1143*ae771770SStanislav Sedov 1144*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \ 1145*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 1146*ae771770SStanislav Sedov static void 1147*ae771770SStanislav Sedov yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) 1148*ae771770SStanislav Sedov #else 1149*ae771770SStanislav Sedov static void 1150*ae771770SStanislav Sedov yy_stack_print (bottom, top) 1151*ae771770SStanislav Sedov yytype_int16 *bottom; 1152*ae771770SStanislav Sedov yytype_int16 *top; 1153*ae771770SStanislav Sedov #endif 1154*ae771770SStanislav Sedov { 1155*ae771770SStanislav Sedov YYFPRINTF (stderr, "Stack now"); 1156*ae771770SStanislav Sedov for (; bottom <= top; ++bottom) 1157*ae771770SStanislav Sedov YYFPRINTF (stderr, " %d", *bottom); 1158*ae771770SStanislav Sedov YYFPRINTF (stderr, "\n"); 1159*ae771770SStanislav Sedov } 1160*ae771770SStanislav Sedov 1161*ae771770SStanislav Sedov # define YY_STACK_PRINT(Bottom, Top) \ 1162*ae771770SStanislav Sedov do { \ 1163*ae771770SStanislav Sedov if (yydebug) \ 1164*ae771770SStanislav Sedov yy_stack_print ((Bottom), (Top)); \ 1165*ae771770SStanislav Sedov } while (YYID (0)) 1166*ae771770SStanislav Sedov 1167*ae771770SStanislav Sedov 1168*ae771770SStanislav Sedov /*------------------------------------------------. 1169*ae771770SStanislav Sedov | Report that the YYRULE is going to be reduced. | 1170*ae771770SStanislav Sedov `------------------------------------------------*/ 1171*ae771770SStanislav Sedov 1172*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \ 1173*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 1174*ae771770SStanislav Sedov static void 1175*ae771770SStanislav Sedov yy_reduce_print (YYSTYPE *yyvsp, int yyrule) 1176*ae771770SStanislav Sedov #else 1177*ae771770SStanislav Sedov static void 1178*ae771770SStanislav Sedov yy_reduce_print (yyvsp, yyrule) 1179*ae771770SStanislav Sedov YYSTYPE *yyvsp; 1180*ae771770SStanislav Sedov int yyrule; 1181*ae771770SStanislav Sedov #endif 1182*ae771770SStanislav Sedov { 1183*ae771770SStanislav Sedov int yynrhs = yyr2[yyrule]; 1184*ae771770SStanislav Sedov int yyi; 1185*ae771770SStanislav Sedov unsigned long int yylno = yyrline[yyrule]; 1186*ae771770SStanislav Sedov YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 1187*ae771770SStanislav Sedov yyrule - 1, yylno); 1188*ae771770SStanislav Sedov /* The symbols being reduced. */ 1189*ae771770SStanislav Sedov for (yyi = 0; yyi < yynrhs; yyi++) 1190*ae771770SStanislav Sedov { 1191*ae771770SStanislav Sedov fprintf (stderr, " $%d = ", yyi + 1); 1192*ae771770SStanislav Sedov yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 1193*ae771770SStanislav Sedov &(yyvsp[(yyi + 1) - (yynrhs)]) 1194*ae771770SStanislav Sedov ); 1195*ae771770SStanislav Sedov fprintf (stderr, "\n"); 1196*ae771770SStanislav Sedov } 1197*ae771770SStanislav Sedov } 1198*ae771770SStanislav Sedov 1199*ae771770SStanislav Sedov # define YY_REDUCE_PRINT(Rule) \ 1200*ae771770SStanislav Sedov do { \ 1201*ae771770SStanislav Sedov if (yydebug) \ 1202*ae771770SStanislav Sedov yy_reduce_print (yyvsp, Rule); \ 1203*ae771770SStanislav Sedov } while (YYID (0)) 1204*ae771770SStanislav Sedov 1205*ae771770SStanislav Sedov /* Nonzero means print parse trace. It is left uninitialized so that 1206*ae771770SStanislav Sedov multiple parsers can coexist. */ 1207*ae771770SStanislav Sedov int yydebug; 1208*ae771770SStanislav Sedov #else /* !YYDEBUG */ 1209*ae771770SStanislav Sedov # define YYDPRINTF(Args) 1210*ae771770SStanislav Sedov # define YY_SYMBOL_PRINT(Title, Type, Value, Location) 1211*ae771770SStanislav Sedov # define YY_STACK_PRINT(Bottom, Top) 1212*ae771770SStanislav Sedov # define YY_REDUCE_PRINT(Rule) 1213*ae771770SStanislav Sedov #endif /* !YYDEBUG */ 1214*ae771770SStanislav Sedov 1215*ae771770SStanislav Sedov 1216*ae771770SStanislav Sedov /* YYINITDEPTH -- initial size of the parser's stacks. */ 1217*ae771770SStanislav Sedov #ifndef YYINITDEPTH 1218*ae771770SStanislav Sedov # define YYINITDEPTH 200 1219*ae771770SStanislav Sedov #endif 1220*ae771770SStanislav Sedov 1221*ae771770SStanislav Sedov /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1222*ae771770SStanislav Sedov if the built-in stack extension method is used). 1223*ae771770SStanislav Sedov 1224*ae771770SStanislav Sedov Do not make this value too large; the results are undefined if 1225*ae771770SStanislav Sedov YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1226*ae771770SStanislav Sedov evaluated with infinite-precision integer arithmetic. */ 1227*ae771770SStanislav Sedov 1228*ae771770SStanislav Sedov #ifndef YYMAXDEPTH 1229*ae771770SStanislav Sedov # define YYMAXDEPTH 10000 1230*ae771770SStanislav Sedov #endif 1231*ae771770SStanislav Sedov 1232*ae771770SStanislav Sedov 1233*ae771770SStanislav Sedov 1234*ae771770SStanislav Sedov #if YYERROR_VERBOSE 1235*ae771770SStanislav Sedov 1236*ae771770SStanislav Sedov # ifndef yystrlen 1237*ae771770SStanislav Sedov # if defined __GLIBC__ && defined _STRING_H 1238*ae771770SStanislav Sedov # define yystrlen strlen 1239*ae771770SStanislav Sedov # else 1240*ae771770SStanislav Sedov /* Return the length of YYSTR. */ 1241*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \ 1242*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 1243*ae771770SStanislav Sedov static YYSIZE_T 1244*ae771770SStanislav Sedov yystrlen (const char *yystr) 1245*ae771770SStanislav Sedov #else 1246*ae771770SStanislav Sedov static YYSIZE_T 1247*ae771770SStanislav Sedov yystrlen (yystr) 1248*ae771770SStanislav Sedov const char *yystr; 1249*ae771770SStanislav Sedov #endif 1250*ae771770SStanislav Sedov { 1251*ae771770SStanislav Sedov YYSIZE_T yylen; 1252*ae771770SStanislav Sedov for (yylen = 0; yystr[yylen]; yylen++) 1253*ae771770SStanislav Sedov continue; 1254*ae771770SStanislav Sedov return yylen; 1255*ae771770SStanislav Sedov } 1256*ae771770SStanislav Sedov # endif 1257*ae771770SStanislav Sedov # endif 1258*ae771770SStanislav Sedov 1259*ae771770SStanislav Sedov # ifndef yystpcpy 1260*ae771770SStanislav Sedov # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 1261*ae771770SStanislav Sedov # define yystpcpy stpcpy 1262*ae771770SStanislav Sedov # else 1263*ae771770SStanislav Sedov /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 1264*ae771770SStanislav Sedov YYDEST. */ 1265*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \ 1266*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 1267*ae771770SStanislav Sedov static char * 1268*ae771770SStanislav Sedov yystpcpy (char *yydest, const char *yysrc) 1269*ae771770SStanislav Sedov #else 1270*ae771770SStanislav Sedov static char * 1271*ae771770SStanislav Sedov yystpcpy (yydest, yysrc) 1272*ae771770SStanislav Sedov char *yydest; 1273*ae771770SStanislav Sedov const char *yysrc; 1274*ae771770SStanislav Sedov #endif 1275*ae771770SStanislav Sedov { 1276*ae771770SStanislav Sedov char *yyd = yydest; 1277*ae771770SStanislav Sedov const char *yys = yysrc; 1278*ae771770SStanislav Sedov 1279*ae771770SStanislav Sedov while ((*yyd++ = *yys++) != '\0') 1280*ae771770SStanislav Sedov continue; 1281*ae771770SStanislav Sedov 1282*ae771770SStanislav Sedov return yyd - 1; 1283*ae771770SStanislav Sedov } 1284*ae771770SStanislav Sedov # endif 1285*ae771770SStanislav Sedov # endif 1286*ae771770SStanislav Sedov 1287*ae771770SStanislav Sedov # ifndef yytnamerr 1288*ae771770SStanislav Sedov /* Copy to YYRES the contents of YYSTR after stripping away unnecessary 1289*ae771770SStanislav Sedov quotes and backslashes, so that it's suitable for yyerror. The 1290*ae771770SStanislav Sedov heuristic is that double-quoting is unnecessary unless the string 1291*ae771770SStanislav Sedov contains an apostrophe, a comma, or backslash (other than 1292*ae771770SStanislav Sedov backslash-backslash). YYSTR is taken from yytname. If YYRES is 1293*ae771770SStanislav Sedov null, do not copy; instead, return the length of what the result 1294*ae771770SStanislav Sedov would have been. */ 1295*ae771770SStanislav Sedov static YYSIZE_T 1296*ae771770SStanislav Sedov yytnamerr (char *yyres, const char *yystr) 1297*ae771770SStanislav Sedov { 1298*ae771770SStanislav Sedov if (*yystr == '"') 1299*ae771770SStanislav Sedov { 1300*ae771770SStanislav Sedov YYSIZE_T yyn = 0; 1301*ae771770SStanislav Sedov char const *yyp = yystr; 1302*ae771770SStanislav Sedov 1303*ae771770SStanislav Sedov for (;;) 1304*ae771770SStanislav Sedov switch (*++yyp) 1305*ae771770SStanislav Sedov { 1306*ae771770SStanislav Sedov case '\'': 1307*ae771770SStanislav Sedov case ',': 1308*ae771770SStanislav Sedov goto do_not_strip_quotes; 1309*ae771770SStanislav Sedov 1310*ae771770SStanislav Sedov case '\\': 1311*ae771770SStanislav Sedov if (*++yyp != '\\') 1312*ae771770SStanislav Sedov goto do_not_strip_quotes; 1313*ae771770SStanislav Sedov /* Fall through. */ 1314*ae771770SStanislav Sedov default: 1315*ae771770SStanislav Sedov if (yyres) 1316*ae771770SStanislav Sedov yyres[yyn] = *yyp; 1317*ae771770SStanislav Sedov yyn++; 1318*ae771770SStanislav Sedov break; 1319*ae771770SStanislav Sedov 1320*ae771770SStanislav Sedov case '"': 1321*ae771770SStanislav Sedov if (yyres) 1322*ae771770SStanislav Sedov yyres[yyn] = '\0'; 1323*ae771770SStanislav Sedov return yyn; 1324*ae771770SStanislav Sedov } 1325*ae771770SStanislav Sedov do_not_strip_quotes: ; 1326*ae771770SStanislav Sedov } 1327*ae771770SStanislav Sedov 1328*ae771770SStanislav Sedov if (! yyres) 1329*ae771770SStanislav Sedov return yystrlen (yystr); 1330*ae771770SStanislav Sedov 1331*ae771770SStanislav Sedov return yystpcpy (yyres, yystr) - yyres; 1332*ae771770SStanislav Sedov } 1333*ae771770SStanislav Sedov # endif 1334*ae771770SStanislav Sedov 1335*ae771770SStanislav Sedov /* Copy into YYRESULT an error message about the unexpected token 1336*ae771770SStanislav Sedov YYCHAR while in state YYSTATE. Return the number of bytes copied, 1337*ae771770SStanislav Sedov including the terminating null byte. If YYRESULT is null, do not 1338*ae771770SStanislav Sedov copy anything; just return the number of bytes that would be 1339*ae771770SStanislav Sedov copied. As a special case, return 0 if an ordinary "syntax error" 1340*ae771770SStanislav Sedov message will do. Return YYSIZE_MAXIMUM if overflow occurs during 1341*ae771770SStanislav Sedov size calculation. */ 1342*ae771770SStanislav Sedov static YYSIZE_T 1343*ae771770SStanislav Sedov yysyntax_error (char *yyresult, int yystate, int yychar) 1344*ae771770SStanislav Sedov { 1345*ae771770SStanislav Sedov int yyn = yypact[yystate]; 1346*ae771770SStanislav Sedov 1347*ae771770SStanislav Sedov if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) 1348*ae771770SStanislav Sedov return 0; 1349*ae771770SStanislav Sedov else 1350*ae771770SStanislav Sedov { 1351*ae771770SStanislav Sedov int yytype = YYTRANSLATE (yychar); 1352*ae771770SStanislav Sedov YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); 1353*ae771770SStanislav Sedov YYSIZE_T yysize = yysize0; 1354*ae771770SStanislav Sedov YYSIZE_T yysize1; 1355*ae771770SStanislav Sedov int yysize_overflow = 0; 1356*ae771770SStanislav Sedov enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 1357*ae771770SStanislav Sedov char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 1358*ae771770SStanislav Sedov int yyx; 1359*ae771770SStanislav Sedov 1360*ae771770SStanislav Sedov # if 0 1361*ae771770SStanislav Sedov /* This is so xgettext sees the translatable formats that are 1362*ae771770SStanislav Sedov constructed on the fly. */ 1363*ae771770SStanislav Sedov YY_("syntax error, unexpected %s"); 1364*ae771770SStanislav Sedov YY_("syntax error, unexpected %s, expecting %s"); 1365*ae771770SStanislav Sedov YY_("syntax error, unexpected %s, expecting %s or %s"); 1366*ae771770SStanislav Sedov YY_("syntax error, unexpected %s, expecting %s or %s or %s"); 1367*ae771770SStanislav Sedov YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); 1368*ae771770SStanislav Sedov # endif 1369*ae771770SStanislav Sedov char *yyfmt; 1370*ae771770SStanislav Sedov char const *yyf; 1371*ae771770SStanislav Sedov static char const yyunexpected[] = "syntax error, unexpected %s"; 1372*ae771770SStanislav Sedov static char const yyexpecting[] = ", expecting %s"; 1373*ae771770SStanislav Sedov static char const yyor[] = " or %s"; 1374*ae771770SStanislav Sedov char yyformat[sizeof yyunexpected 1375*ae771770SStanislav Sedov + sizeof yyexpecting - 1 1376*ae771770SStanislav Sedov + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) 1377*ae771770SStanislav Sedov * (sizeof yyor - 1))]; 1378*ae771770SStanislav Sedov char const *yyprefix = yyexpecting; 1379*ae771770SStanislav Sedov 1380*ae771770SStanislav Sedov /* Start YYX at -YYN if negative to avoid negative indexes in 1381*ae771770SStanislav Sedov YYCHECK. */ 1382*ae771770SStanislav Sedov int yyxbegin = yyn < 0 ? -yyn : 0; 1383*ae771770SStanislav Sedov 1384*ae771770SStanislav Sedov /* Stay within bounds of both yycheck and yytname. */ 1385*ae771770SStanislav Sedov int yychecklim = YYLAST - yyn + 1; 1386*ae771770SStanislav Sedov int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 1387*ae771770SStanislav Sedov int yycount = 1; 1388*ae771770SStanislav Sedov 1389*ae771770SStanislav Sedov yyarg[0] = yytname[yytype]; 1390*ae771770SStanislav Sedov yyfmt = yystpcpy (yyformat, yyunexpected); 1391*ae771770SStanislav Sedov 1392*ae771770SStanislav Sedov for (yyx = yyxbegin; yyx < yyxend; ++yyx) 1393*ae771770SStanislav Sedov if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) 1394*ae771770SStanislav Sedov { 1395*ae771770SStanislav Sedov if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 1396*ae771770SStanislav Sedov { 1397*ae771770SStanislav Sedov yycount = 1; 1398*ae771770SStanislav Sedov yysize = yysize0; 1399*ae771770SStanislav Sedov yyformat[sizeof yyunexpected - 1] = '\0'; 1400*ae771770SStanislav Sedov break; 1401*ae771770SStanislav Sedov } 1402*ae771770SStanislav Sedov yyarg[yycount++] = yytname[yyx]; 1403*ae771770SStanislav Sedov yysize1 = yysize + yytnamerr (0, yytname[yyx]); 1404*ae771770SStanislav Sedov yysize_overflow |= (yysize1 < yysize); 1405*ae771770SStanislav Sedov yysize = yysize1; 1406*ae771770SStanislav Sedov yyfmt = yystpcpy (yyfmt, yyprefix); 1407*ae771770SStanislav Sedov yyprefix = yyor; 1408*ae771770SStanislav Sedov } 1409*ae771770SStanislav Sedov 1410*ae771770SStanislav Sedov yyf = YY_(yyformat); 1411*ae771770SStanislav Sedov yysize1 = yysize + yystrlen (yyf); 1412*ae771770SStanislav Sedov yysize_overflow |= (yysize1 < yysize); 1413*ae771770SStanislav Sedov yysize = yysize1; 1414*ae771770SStanislav Sedov 1415*ae771770SStanislav Sedov if (yysize_overflow) 1416*ae771770SStanislav Sedov return YYSIZE_MAXIMUM; 1417*ae771770SStanislav Sedov 1418*ae771770SStanislav Sedov if (yyresult) 1419*ae771770SStanislav Sedov { 1420*ae771770SStanislav Sedov /* Avoid sprintf, as that infringes on the user's name space. 1421*ae771770SStanislav Sedov Don't have undefined behavior even if the translation 1422*ae771770SStanislav Sedov produced a string with the wrong number of "%s"s. */ 1423*ae771770SStanislav Sedov char *yyp = yyresult; 1424*ae771770SStanislav Sedov int yyi = 0; 1425*ae771770SStanislav Sedov while ((*yyp = *yyf) != '\0') 1426*ae771770SStanislav Sedov { 1427*ae771770SStanislav Sedov if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) 1428*ae771770SStanislav Sedov { 1429*ae771770SStanislav Sedov yyp += yytnamerr (yyp, yyarg[yyi++]); 1430*ae771770SStanislav Sedov yyf += 2; 1431*ae771770SStanislav Sedov } 1432*ae771770SStanislav Sedov else 1433*ae771770SStanislav Sedov { 1434*ae771770SStanislav Sedov yyp++; 1435*ae771770SStanislav Sedov yyf++; 1436*ae771770SStanislav Sedov } 1437*ae771770SStanislav Sedov } 1438*ae771770SStanislav Sedov } 1439*ae771770SStanislav Sedov return yysize; 1440*ae771770SStanislav Sedov } 1441*ae771770SStanislav Sedov } 1442*ae771770SStanislav Sedov #endif /* YYERROR_VERBOSE */ 1443*ae771770SStanislav Sedov 1444*ae771770SStanislav Sedov 1445*ae771770SStanislav Sedov /*-----------------------------------------------. 1446*ae771770SStanislav Sedov | Release the memory associated to this symbol. | 1447*ae771770SStanislav Sedov `-----------------------------------------------*/ 1448*ae771770SStanislav Sedov 1449*ae771770SStanislav Sedov /*ARGSUSED*/ 1450*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \ 1451*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 1452*ae771770SStanislav Sedov static void 1453*ae771770SStanislav Sedov yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) 1454*ae771770SStanislav Sedov #else 1455*ae771770SStanislav Sedov static void 1456*ae771770SStanislav Sedov yydestruct (yymsg, yytype, yyvaluep) 1457*ae771770SStanislav Sedov const char *yymsg; 1458*ae771770SStanislav Sedov int yytype; 1459*ae771770SStanislav Sedov YYSTYPE *yyvaluep; 1460*ae771770SStanislav Sedov #endif 1461*ae771770SStanislav Sedov { 1462*ae771770SStanislav Sedov YYUSE (yyvaluep); 1463*ae771770SStanislav Sedov 1464*ae771770SStanislav Sedov if (!yymsg) 1465*ae771770SStanislav Sedov yymsg = "Deleting"; 1466*ae771770SStanislav Sedov YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 1467*ae771770SStanislav Sedov 1468*ae771770SStanislav Sedov switch (yytype) 1469*ae771770SStanislav Sedov { 1470*ae771770SStanislav Sedov 1471*ae771770SStanislav Sedov default: 1472*ae771770SStanislav Sedov break; 1473*ae771770SStanislav Sedov } 1474*ae771770SStanislav Sedov } 1475*ae771770SStanislav Sedov 1476*ae771770SStanislav Sedov 1477*ae771770SStanislav Sedov /* Prevent warnings from -Wmissing-prototypes. */ 1478*ae771770SStanislav Sedov 1479*ae771770SStanislav Sedov #ifdef YYPARSE_PARAM 1480*ae771770SStanislav Sedov #if defined __STDC__ || defined __cplusplus 1481*ae771770SStanislav Sedov int yyparse (void *YYPARSE_PARAM); 1482*ae771770SStanislav Sedov #else 1483*ae771770SStanislav Sedov int yyparse (); 1484*ae771770SStanislav Sedov #endif 1485*ae771770SStanislav Sedov #else /* ! YYPARSE_PARAM */ 1486*ae771770SStanislav Sedov #if defined __STDC__ || defined __cplusplus 1487*ae771770SStanislav Sedov int yyparse (void); 1488*ae771770SStanislav Sedov #else 1489*ae771770SStanislav Sedov int yyparse (); 1490*ae771770SStanislav Sedov #endif 1491*ae771770SStanislav Sedov #endif /* ! YYPARSE_PARAM */ 1492*ae771770SStanislav Sedov 1493*ae771770SStanislav Sedov 1494*ae771770SStanislav Sedov 1495*ae771770SStanislav Sedov /* The look-ahead symbol. */ 1496*ae771770SStanislav Sedov int yychar; 1497*ae771770SStanislav Sedov 1498*ae771770SStanislav Sedov /* The semantic value of the look-ahead symbol. */ 1499*ae771770SStanislav Sedov YYSTYPE yylval; 1500*ae771770SStanislav Sedov 1501*ae771770SStanislav Sedov /* Number of syntax errors so far. */ 1502*ae771770SStanislav Sedov int yynerrs; 1503*ae771770SStanislav Sedov 1504*ae771770SStanislav Sedov 1505*ae771770SStanislav Sedov 1506*ae771770SStanislav Sedov /*----------. 1507*ae771770SStanislav Sedov | yyparse. | 1508*ae771770SStanislav Sedov `----------*/ 1509*ae771770SStanislav Sedov 1510*ae771770SStanislav Sedov #ifdef YYPARSE_PARAM 1511*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \ 1512*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 1513*ae771770SStanislav Sedov int 1514*ae771770SStanislav Sedov yyparse (void *YYPARSE_PARAM) 1515*ae771770SStanislav Sedov #else 1516*ae771770SStanislav Sedov int 1517*ae771770SStanislav Sedov yyparse (YYPARSE_PARAM) 1518*ae771770SStanislav Sedov void *YYPARSE_PARAM; 1519*ae771770SStanislav Sedov #endif 1520*ae771770SStanislav Sedov #else /* ! YYPARSE_PARAM */ 1521*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \ 1522*ae771770SStanislav Sedov || defined __cplusplus || defined _MSC_VER) 1523*ae771770SStanislav Sedov int 1524*ae771770SStanislav Sedov yyparse (void) 1525*ae771770SStanislav Sedov #else 1526*ae771770SStanislav Sedov int 1527*ae771770SStanislav Sedov yyparse () 1528*ae771770SStanislav Sedov 1529*ae771770SStanislav Sedov #endif 1530*ae771770SStanislav Sedov #endif 1531*ae771770SStanislav Sedov { 1532*ae771770SStanislav Sedov 1533*ae771770SStanislav Sedov int yystate; 1534*ae771770SStanislav Sedov int yyn; 1535*ae771770SStanislav Sedov int yyresult; 1536*ae771770SStanislav Sedov /* Number of tokens to shift before error messages enabled. */ 1537*ae771770SStanislav Sedov int yyerrstatus; 1538*ae771770SStanislav Sedov /* Look-ahead token as an internal (translated) token number. */ 1539*ae771770SStanislav Sedov int yytoken = 0; 1540*ae771770SStanislav Sedov #if YYERROR_VERBOSE 1541*ae771770SStanislav Sedov /* Buffer for error messages, and its allocated size. */ 1542*ae771770SStanislav Sedov char yymsgbuf[128]; 1543*ae771770SStanislav Sedov char *yymsg = yymsgbuf; 1544*ae771770SStanislav Sedov YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 1545*ae771770SStanislav Sedov #endif 1546*ae771770SStanislav Sedov 1547*ae771770SStanislav Sedov /* Three stacks and their tools: 1548*ae771770SStanislav Sedov `yyss': related to states, 1549*ae771770SStanislav Sedov `yyvs': related to semantic values, 1550*ae771770SStanislav Sedov `yyls': related to locations. 1551*ae771770SStanislav Sedov 1552*ae771770SStanislav Sedov Refer to the stacks thru separate pointers, to allow yyoverflow 1553*ae771770SStanislav Sedov to reallocate them elsewhere. */ 1554*ae771770SStanislav Sedov 1555*ae771770SStanislav Sedov /* The state stack. */ 1556*ae771770SStanislav Sedov yytype_int16 yyssa[YYINITDEPTH]; 1557*ae771770SStanislav Sedov yytype_int16 *yyss = yyssa; 1558*ae771770SStanislav Sedov yytype_int16 *yyssp; 1559*ae771770SStanislav Sedov 1560*ae771770SStanislav Sedov /* The semantic value stack. */ 1561*ae771770SStanislav Sedov YYSTYPE yyvsa[YYINITDEPTH]; 1562*ae771770SStanislav Sedov YYSTYPE *yyvs = yyvsa; 1563*ae771770SStanislav Sedov YYSTYPE *yyvsp; 1564*ae771770SStanislav Sedov 1565*ae771770SStanislav Sedov 1566*ae771770SStanislav Sedov 1567*ae771770SStanislav Sedov #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) 1568*ae771770SStanislav Sedov 1569*ae771770SStanislav Sedov YYSIZE_T yystacksize = YYINITDEPTH; 1570*ae771770SStanislav Sedov 1571*ae771770SStanislav Sedov /* The variables used to return semantic value and location from the 1572*ae771770SStanislav Sedov action routines. */ 1573*ae771770SStanislav Sedov YYSTYPE yyval; 1574*ae771770SStanislav Sedov 1575*ae771770SStanislav Sedov 1576*ae771770SStanislav Sedov /* The number of symbols on the RHS of the reduced rule. 1577*ae771770SStanislav Sedov Keep to zero when no symbol should be popped. */ 1578*ae771770SStanislav Sedov int yylen = 0; 1579*ae771770SStanislav Sedov 1580*ae771770SStanislav Sedov YYDPRINTF ((stderr, "Starting parse\n")); 1581*ae771770SStanislav Sedov 1582*ae771770SStanislav Sedov yystate = 0; 1583*ae771770SStanislav Sedov yyerrstatus = 0; 1584*ae771770SStanislav Sedov yynerrs = 0; 1585*ae771770SStanislav Sedov yychar = YYEMPTY; /* Cause a token to be read. */ 1586*ae771770SStanislav Sedov 1587*ae771770SStanislav Sedov /* Initialize stack pointers. 1588*ae771770SStanislav Sedov Waste one element of value and location stack 1589*ae771770SStanislav Sedov so that they stay on the same level as the state stack. 1590*ae771770SStanislav Sedov The wasted elements are never initialized. */ 1591*ae771770SStanislav Sedov 1592*ae771770SStanislav Sedov yyssp = yyss; 1593*ae771770SStanislav Sedov yyvsp = yyvs; 1594*ae771770SStanislav Sedov 1595*ae771770SStanislav Sedov goto yysetstate; 1596*ae771770SStanislav Sedov 1597*ae771770SStanislav Sedov /*------------------------------------------------------------. 1598*ae771770SStanislav Sedov | yynewstate -- Push a new state, which is found in yystate. | 1599*ae771770SStanislav Sedov `------------------------------------------------------------*/ 1600*ae771770SStanislav Sedov yynewstate: 1601*ae771770SStanislav Sedov /* In all cases, when you get here, the value and location stacks 1602*ae771770SStanislav Sedov have just been pushed. So pushing a state here evens the stacks. */ 1603*ae771770SStanislav Sedov yyssp++; 1604*ae771770SStanislav Sedov 1605*ae771770SStanislav Sedov yysetstate: 1606*ae771770SStanislav Sedov *yyssp = yystate; 1607*ae771770SStanislav Sedov 1608*ae771770SStanislav Sedov if (yyss + yystacksize - 1 <= yyssp) 1609*ae771770SStanislav Sedov { 1610*ae771770SStanislav Sedov /* Get the current used size of the three stacks, in elements. */ 1611*ae771770SStanislav Sedov YYSIZE_T yysize = yyssp - yyss + 1; 1612*ae771770SStanislav Sedov 1613*ae771770SStanislav Sedov #ifdef yyoverflow 1614*ae771770SStanislav Sedov { 1615*ae771770SStanislav Sedov /* Give user a chance to reallocate the stack. Use copies of 1616*ae771770SStanislav Sedov these so that the &'s don't force the real ones into 1617*ae771770SStanislav Sedov memory. */ 1618*ae771770SStanislav Sedov YYSTYPE *yyvs1 = yyvs; 1619*ae771770SStanislav Sedov yytype_int16 *yyss1 = yyss; 1620*ae771770SStanislav Sedov 1621*ae771770SStanislav Sedov 1622*ae771770SStanislav Sedov /* Each stack pointer address is followed by the size of the 1623*ae771770SStanislav Sedov data in use in that stack, in bytes. This used to be a 1624*ae771770SStanislav Sedov conditional around just the two extra args, but that might 1625*ae771770SStanislav Sedov be undefined if yyoverflow is a macro. */ 1626*ae771770SStanislav Sedov yyoverflow (YY_("memory exhausted"), 1627*ae771770SStanislav Sedov &yyss1, yysize * sizeof (*yyssp), 1628*ae771770SStanislav Sedov &yyvs1, yysize * sizeof (*yyvsp), 1629*ae771770SStanislav Sedov 1630*ae771770SStanislav Sedov &yystacksize); 1631*ae771770SStanislav Sedov 1632*ae771770SStanislav Sedov yyss = yyss1; 1633*ae771770SStanislav Sedov yyvs = yyvs1; 1634*ae771770SStanislav Sedov } 1635*ae771770SStanislav Sedov #else /* no yyoverflow */ 1636*ae771770SStanislav Sedov # ifndef YYSTACK_RELOCATE 1637*ae771770SStanislav Sedov goto yyexhaustedlab; 1638*ae771770SStanislav Sedov # else 1639*ae771770SStanislav Sedov /* Extend the stack our own way. */ 1640*ae771770SStanislav Sedov if (YYMAXDEPTH <= yystacksize) 1641*ae771770SStanislav Sedov goto yyexhaustedlab; 1642*ae771770SStanislav Sedov yystacksize *= 2; 1643*ae771770SStanislav Sedov if (YYMAXDEPTH < yystacksize) 1644*ae771770SStanislav Sedov yystacksize = YYMAXDEPTH; 1645*ae771770SStanislav Sedov 1646*ae771770SStanislav Sedov { 1647*ae771770SStanislav Sedov yytype_int16 *yyss1 = yyss; 1648*ae771770SStanislav Sedov union yyalloc *yyptr = 1649*ae771770SStanislav Sedov (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 1650*ae771770SStanislav Sedov if (! yyptr) 1651*ae771770SStanislav Sedov goto yyexhaustedlab; 1652*ae771770SStanislav Sedov YYSTACK_RELOCATE (yyss); 1653*ae771770SStanislav Sedov YYSTACK_RELOCATE (yyvs); 1654*ae771770SStanislav Sedov 1655*ae771770SStanislav Sedov # undef YYSTACK_RELOCATE 1656*ae771770SStanislav Sedov if (yyss1 != yyssa) 1657*ae771770SStanislav Sedov YYSTACK_FREE (yyss1); 1658*ae771770SStanislav Sedov } 1659*ae771770SStanislav Sedov # endif 1660*ae771770SStanislav Sedov #endif /* no yyoverflow */ 1661*ae771770SStanislav Sedov 1662*ae771770SStanislav Sedov yyssp = yyss + yysize - 1; 1663*ae771770SStanislav Sedov yyvsp = yyvs + yysize - 1; 1664*ae771770SStanislav Sedov 1665*ae771770SStanislav Sedov 1666*ae771770SStanislav Sedov YYDPRINTF ((stderr, "Stack size increased to %lu\n", 1667*ae771770SStanislav Sedov (unsigned long int) yystacksize)); 1668*ae771770SStanislav Sedov 1669*ae771770SStanislav Sedov if (yyss + yystacksize - 1 <= yyssp) 1670*ae771770SStanislav Sedov YYABORT; 1671*ae771770SStanislav Sedov } 1672*ae771770SStanislav Sedov 1673*ae771770SStanislav Sedov YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 1674*ae771770SStanislav Sedov 1675*ae771770SStanislav Sedov goto yybackup; 1676*ae771770SStanislav Sedov 1677*ae771770SStanislav Sedov /*-----------. 1678*ae771770SStanislav Sedov | yybackup. | 1679*ae771770SStanislav Sedov `-----------*/ 1680*ae771770SStanislav Sedov yybackup: 1681*ae771770SStanislav Sedov 1682*ae771770SStanislav Sedov /* Do appropriate processing given the current state. Read a 1683*ae771770SStanislav Sedov look-ahead token if we need one and don't already have one. */ 1684*ae771770SStanislav Sedov 1685*ae771770SStanislav Sedov /* First try to decide what to do without reference to look-ahead token. */ 1686*ae771770SStanislav Sedov yyn = yypact[yystate]; 1687*ae771770SStanislav Sedov if (yyn == YYPACT_NINF) 1688*ae771770SStanislav Sedov goto yydefault; 1689*ae771770SStanislav Sedov 1690*ae771770SStanislav Sedov /* Not known => get a look-ahead token if don't already have one. */ 1691*ae771770SStanislav Sedov 1692*ae771770SStanislav Sedov /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ 1693*ae771770SStanislav Sedov if (yychar == YYEMPTY) 1694*ae771770SStanislav Sedov { 1695*ae771770SStanislav Sedov YYDPRINTF ((stderr, "Reading a token: ")); 1696*ae771770SStanislav Sedov yychar = YYLEX; 1697*ae771770SStanislav Sedov } 1698*ae771770SStanislav Sedov 1699*ae771770SStanislav Sedov if (yychar <= YYEOF) 1700*ae771770SStanislav Sedov { 1701*ae771770SStanislav Sedov yychar = yytoken = YYEOF; 1702*ae771770SStanislav Sedov YYDPRINTF ((stderr, "Now at end of input.\n")); 1703*ae771770SStanislav Sedov } 1704*ae771770SStanislav Sedov else 1705*ae771770SStanislav Sedov { 1706*ae771770SStanislav Sedov yytoken = YYTRANSLATE (yychar); 1707*ae771770SStanislav Sedov YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 1708*ae771770SStanislav Sedov } 1709*ae771770SStanislav Sedov 1710*ae771770SStanislav Sedov /* If the proper action on seeing token YYTOKEN is to reduce or to 1711*ae771770SStanislav Sedov detect an error, take that action. */ 1712*ae771770SStanislav Sedov yyn += yytoken; 1713*ae771770SStanislav Sedov if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 1714*ae771770SStanislav Sedov goto yydefault; 1715*ae771770SStanislav Sedov yyn = yytable[yyn]; 1716*ae771770SStanislav Sedov if (yyn <= 0) 1717*ae771770SStanislav Sedov { 1718*ae771770SStanislav Sedov if (yyn == 0 || yyn == YYTABLE_NINF) 1719*ae771770SStanislav Sedov goto yyerrlab; 1720*ae771770SStanislav Sedov yyn = -yyn; 1721*ae771770SStanislav Sedov goto yyreduce; 1722*ae771770SStanislav Sedov } 1723*ae771770SStanislav Sedov 1724*ae771770SStanislav Sedov if (yyn == YYFINAL) 1725*ae771770SStanislav Sedov YYACCEPT; 1726*ae771770SStanislav Sedov 1727*ae771770SStanislav Sedov /* Count tokens shifted since error; after three, turn off error 1728*ae771770SStanislav Sedov status. */ 1729*ae771770SStanislav Sedov if (yyerrstatus) 1730*ae771770SStanislav Sedov yyerrstatus--; 1731*ae771770SStanislav Sedov 1732*ae771770SStanislav Sedov /* Shift the look-ahead token. */ 1733*ae771770SStanislav Sedov YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 1734*ae771770SStanislav Sedov 1735*ae771770SStanislav Sedov /* Discard the shifted token unless it is eof. */ 1736*ae771770SStanislav Sedov if (yychar != YYEOF) 1737*ae771770SStanislav Sedov yychar = YYEMPTY; 1738*ae771770SStanislav Sedov 1739*ae771770SStanislav Sedov yystate = yyn; 1740*ae771770SStanislav Sedov *++yyvsp = yylval; 1741*ae771770SStanislav Sedov 1742*ae771770SStanislav Sedov goto yynewstate; 1743*ae771770SStanislav Sedov 1744*ae771770SStanislav Sedov 1745*ae771770SStanislav Sedov /*-----------------------------------------------------------. 1746*ae771770SStanislav Sedov | yydefault -- do the default action for the current state. | 1747*ae771770SStanislav Sedov `-----------------------------------------------------------*/ 1748*ae771770SStanislav Sedov yydefault: 1749*ae771770SStanislav Sedov yyn = yydefact[yystate]; 1750*ae771770SStanislav Sedov if (yyn == 0) 1751*ae771770SStanislav Sedov goto yyerrlab; 1752*ae771770SStanislav Sedov goto yyreduce; 1753*ae771770SStanislav Sedov 1754*ae771770SStanislav Sedov 1755*ae771770SStanislav Sedov /*-----------------------------. 1756*ae771770SStanislav Sedov | yyreduce -- Do a reduction. | 1757*ae771770SStanislav Sedov `-----------------------------*/ 1758*ae771770SStanislav Sedov yyreduce: 1759*ae771770SStanislav Sedov /* yyn is the number of a rule to reduce with. */ 1760*ae771770SStanislav Sedov yylen = yyr2[yyn]; 1761*ae771770SStanislav Sedov 1762*ae771770SStanislav Sedov /* If YYLEN is nonzero, implement the default value of the action: 1763*ae771770SStanislav Sedov `$$ = $1'. 1764*ae771770SStanislav Sedov 1765*ae771770SStanislav Sedov Otherwise, the following line sets YYVAL to garbage. 1766*ae771770SStanislav Sedov This behavior is undocumented and Bison 1767*ae771770SStanislav Sedov users should not rely upon it. Assigning to YYVAL 1768*ae771770SStanislav Sedov unconditionally makes the parser a bit smaller, and it avoids a 1769*ae771770SStanislav Sedov GCC warning that YYVAL may be used uninitialized. */ 1770*ae771770SStanislav Sedov yyval = yyvsp[1-yylen]; 1771*ae771770SStanislav Sedov 1772*ae771770SStanislav Sedov 1773*ae771770SStanislav Sedov YY_REDUCE_PRINT (yyn); 1774*ae771770SStanislav Sedov switch (yyn) 1775*ae771770SStanislav Sedov { 1776*ae771770SStanislav Sedov case 2: 1777*ae771770SStanislav Sedov #line 241 "asn1parse.y" 1778*ae771770SStanislav Sedov { 1779*ae771770SStanislav Sedov checkundefined(); 1780*ae771770SStanislav Sedov } 1781*ae771770SStanislav Sedov break; 1782*ae771770SStanislav Sedov 1783*ae771770SStanislav Sedov case 4: 1784*ae771770SStanislav Sedov #line 248 "asn1parse.y" 1785*ae771770SStanislav Sedov { lex_error_message("implicit tagging is not supported"); } 1786*ae771770SStanislav Sedov break; 1787*ae771770SStanislav Sedov 1788*ae771770SStanislav Sedov case 5: 1789*ae771770SStanislav Sedov #line 250 "asn1parse.y" 1790*ae771770SStanislav Sedov { lex_error_message("automatic tagging is not supported"); } 1791*ae771770SStanislav Sedov break; 1792*ae771770SStanislav Sedov 1793*ae771770SStanislav Sedov case 7: 1794*ae771770SStanislav Sedov #line 255 "asn1parse.y" 1795*ae771770SStanislav Sedov { lex_error_message("no extensibility options supported"); } 1796*ae771770SStanislav Sedov break; 1797*ae771770SStanislav Sedov 1798*ae771770SStanislav Sedov case 17: 1799*ae771770SStanislav Sedov #line 276 "asn1parse.y" 1800*ae771770SStanislav Sedov { 1801*ae771770SStanislav Sedov struct string_list *sl; 1802*ae771770SStanislav Sedov for(sl = (yyvsp[(1) - (4)].sl); sl != NULL; sl = sl->next) { 1803*ae771770SStanislav Sedov Symbol *s = addsym(sl->string); 1804*ae771770SStanislav Sedov s->stype = Stype; 1805*ae771770SStanislav Sedov gen_template_import(s); 1806*ae771770SStanislav Sedov } 1807*ae771770SStanislav Sedov add_import((yyvsp[(3) - (4)].name)); 1808*ae771770SStanislav Sedov } 1809*ae771770SStanislav Sedov break; 1810*ae771770SStanislav Sedov 1811*ae771770SStanislav Sedov case 18: 1812*ae771770SStanislav Sedov #line 288 "asn1parse.y" 1813*ae771770SStanislav Sedov { 1814*ae771770SStanislav Sedov struct string_list *sl; 1815*ae771770SStanislav Sedov for(sl = (yyvsp[(2) - (3)].sl); sl != NULL; sl = sl->next) 1816*ae771770SStanislav Sedov add_export(sl->string); 1817*ae771770SStanislav Sedov } 1818*ae771770SStanislav Sedov break; 1819*ae771770SStanislav Sedov 1820*ae771770SStanislav Sedov case 25: 1821*ae771770SStanislav Sedov #line 306 "asn1parse.y" 1822*ae771770SStanislav Sedov { 1823*ae771770SStanislav Sedov (yyval.sl) = emalloc(sizeof(*(yyval.sl))); 1824*ae771770SStanislav Sedov (yyval.sl)->string = (yyvsp[(1) - (3)].name); 1825*ae771770SStanislav Sedov (yyval.sl)->next = (yyvsp[(3) - (3)].sl); 1826*ae771770SStanislav Sedov } 1827*ae771770SStanislav Sedov break; 1828*ae771770SStanislav Sedov 1829*ae771770SStanislav Sedov case 26: 1830*ae771770SStanislav Sedov #line 312 "asn1parse.y" 1831*ae771770SStanislav Sedov { 1832*ae771770SStanislav Sedov (yyval.sl) = emalloc(sizeof(*(yyval.sl))); 1833*ae771770SStanislav Sedov (yyval.sl)->string = (yyvsp[(1) - (1)].name); 1834*ae771770SStanislav Sedov (yyval.sl)->next = NULL; 1835*ae771770SStanislav Sedov } 1836*ae771770SStanislav Sedov break; 1837*ae771770SStanislav Sedov 1838*ae771770SStanislav Sedov case 27: 1839*ae771770SStanislav Sedov #line 320 "asn1parse.y" 1840*ae771770SStanislav Sedov { 1841*ae771770SStanislav Sedov Symbol *s = addsym ((yyvsp[(1) - (3)].name)); 1842*ae771770SStanislav Sedov s->stype = Stype; 1843*ae771770SStanislav Sedov s->type = (yyvsp[(3) - (3)].type); 1844*ae771770SStanislav Sedov fix_labels(s); 1845*ae771770SStanislav Sedov generate_type (s); 1846*ae771770SStanislav Sedov } 1847*ae771770SStanislav Sedov break; 1848*ae771770SStanislav Sedov 1849*ae771770SStanislav Sedov case 45: 1850*ae771770SStanislav Sedov #line 351 "asn1parse.y" 1851*ae771770SStanislav Sedov { 1852*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_Boolean, 1853*ae771770SStanislav Sedov TE_EXPLICIT, new_type(TBoolean)); 1854*ae771770SStanislav Sedov } 1855*ae771770SStanislav Sedov break; 1856*ae771770SStanislav Sedov 1857*ae771770SStanislav Sedov case 46: 1858*ae771770SStanislav Sedov #line 358 "asn1parse.y" 1859*ae771770SStanislav Sedov { 1860*ae771770SStanislav Sedov if((yyvsp[(2) - (5)].value)->type != integervalue) 1861*ae771770SStanislav Sedov lex_error_message("Non-integer used in first part of range"); 1862*ae771770SStanislav Sedov if((yyvsp[(2) - (5)].value)->type != integervalue) 1863*ae771770SStanislav Sedov lex_error_message("Non-integer in second part of range"); 1864*ae771770SStanislav Sedov (yyval.range) = ecalloc(1, sizeof(*(yyval.range))); 1865*ae771770SStanislav Sedov (yyval.range)->min = (yyvsp[(2) - (5)].value)->u.integervalue; 1866*ae771770SStanislav Sedov (yyval.range)->max = (yyvsp[(4) - (5)].value)->u.integervalue; 1867*ae771770SStanislav Sedov } 1868*ae771770SStanislav Sedov break; 1869*ae771770SStanislav Sedov 1870*ae771770SStanislav Sedov case 47: 1871*ae771770SStanislav Sedov #line 368 "asn1parse.y" 1872*ae771770SStanislav Sedov { 1873*ae771770SStanislav Sedov if((yyvsp[(2) - (5)].value)->type != integervalue) 1874*ae771770SStanislav Sedov lex_error_message("Non-integer in first part of range"); 1875*ae771770SStanislav Sedov (yyval.range) = ecalloc(1, sizeof(*(yyval.range))); 1876*ae771770SStanislav Sedov (yyval.range)->min = (yyvsp[(2) - (5)].value)->u.integervalue; 1877*ae771770SStanislav Sedov (yyval.range)->max = (yyvsp[(2) - (5)].value)->u.integervalue - 1; 1878*ae771770SStanislav Sedov } 1879*ae771770SStanislav Sedov break; 1880*ae771770SStanislav Sedov 1881*ae771770SStanislav Sedov case 48: 1882*ae771770SStanislav Sedov #line 376 "asn1parse.y" 1883*ae771770SStanislav Sedov { 1884*ae771770SStanislav Sedov if((yyvsp[(4) - (5)].value)->type != integervalue) 1885*ae771770SStanislav Sedov lex_error_message("Non-integer in second part of range"); 1886*ae771770SStanislav Sedov (yyval.range) = ecalloc(1, sizeof(*(yyval.range))); 1887*ae771770SStanislav Sedov (yyval.range)->min = (yyvsp[(4) - (5)].value)->u.integervalue + 2; 1888*ae771770SStanislav Sedov (yyval.range)->max = (yyvsp[(4) - (5)].value)->u.integervalue; 1889*ae771770SStanislav Sedov } 1890*ae771770SStanislav Sedov break; 1891*ae771770SStanislav Sedov 1892*ae771770SStanislav Sedov case 49: 1893*ae771770SStanislav Sedov #line 384 "asn1parse.y" 1894*ae771770SStanislav Sedov { 1895*ae771770SStanislav Sedov if((yyvsp[(2) - (3)].value)->type != integervalue) 1896*ae771770SStanislav Sedov lex_error_message("Non-integer used in limit"); 1897*ae771770SStanislav Sedov (yyval.range) = ecalloc(1, sizeof(*(yyval.range))); 1898*ae771770SStanislav Sedov (yyval.range)->min = (yyvsp[(2) - (3)].value)->u.integervalue; 1899*ae771770SStanislav Sedov (yyval.range)->max = (yyvsp[(2) - (3)].value)->u.integervalue; 1900*ae771770SStanislav Sedov } 1901*ae771770SStanislav Sedov break; 1902*ae771770SStanislav Sedov 1903*ae771770SStanislav Sedov case 50: 1904*ae771770SStanislav Sedov #line 395 "asn1parse.y" 1905*ae771770SStanislav Sedov { 1906*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer, 1907*ae771770SStanislav Sedov TE_EXPLICIT, new_type(TInteger)); 1908*ae771770SStanislav Sedov } 1909*ae771770SStanislav Sedov break; 1910*ae771770SStanislav Sedov 1911*ae771770SStanislav Sedov case 51: 1912*ae771770SStanislav Sedov #line 400 "asn1parse.y" 1913*ae771770SStanislav Sedov { 1914*ae771770SStanislav Sedov (yyval.type) = new_type(TInteger); 1915*ae771770SStanislav Sedov (yyval.type)->range = (yyvsp[(2) - (2)].range); 1916*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer, TE_EXPLICIT, (yyval.type)); 1917*ae771770SStanislav Sedov } 1918*ae771770SStanislav Sedov break; 1919*ae771770SStanislav Sedov 1920*ae771770SStanislav Sedov case 52: 1921*ae771770SStanislav Sedov #line 406 "asn1parse.y" 1922*ae771770SStanislav Sedov { 1923*ae771770SStanislav Sedov (yyval.type) = new_type(TInteger); 1924*ae771770SStanislav Sedov (yyval.type)->members = (yyvsp[(3) - (4)].members); 1925*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer, TE_EXPLICIT, (yyval.type)); 1926*ae771770SStanislav Sedov } 1927*ae771770SStanislav Sedov break; 1928*ae771770SStanislav Sedov 1929*ae771770SStanislav Sedov case 53: 1930*ae771770SStanislav Sedov #line 414 "asn1parse.y" 1931*ae771770SStanislav Sedov { 1932*ae771770SStanislav Sedov (yyval.members) = emalloc(sizeof(*(yyval.members))); 1933*ae771770SStanislav Sedov ASN1_TAILQ_INIT((yyval.members)); 1934*ae771770SStanislav Sedov ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members); 1935*ae771770SStanislav Sedov } 1936*ae771770SStanislav Sedov break; 1937*ae771770SStanislav Sedov 1938*ae771770SStanislav Sedov case 54: 1939*ae771770SStanislav Sedov #line 420 "asn1parse.y" 1940*ae771770SStanislav Sedov { 1941*ae771770SStanislav Sedov ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members); 1942*ae771770SStanislav Sedov (yyval.members) = (yyvsp[(1) - (3)].members); 1943*ae771770SStanislav Sedov } 1944*ae771770SStanislav Sedov break; 1945*ae771770SStanislav Sedov 1946*ae771770SStanislav Sedov case 55: 1947*ae771770SStanislav Sedov #line 425 "asn1parse.y" 1948*ae771770SStanislav Sedov { (yyval.members) = (yyvsp[(1) - (3)].members); } 1949*ae771770SStanislav Sedov break; 1950*ae771770SStanislav Sedov 1951*ae771770SStanislav Sedov case 56: 1952*ae771770SStanislav Sedov #line 429 "asn1parse.y" 1953*ae771770SStanislav Sedov { 1954*ae771770SStanislav Sedov (yyval.member) = emalloc(sizeof(*(yyval.member))); 1955*ae771770SStanislav Sedov (yyval.member)->name = (yyvsp[(1) - (4)].name); 1956*ae771770SStanislav Sedov (yyval.member)->gen_name = estrdup((yyvsp[(1) - (4)].name)); 1957*ae771770SStanislav Sedov output_name ((yyval.member)->gen_name); 1958*ae771770SStanislav Sedov (yyval.member)->val = (yyvsp[(3) - (4)].constant); 1959*ae771770SStanislav Sedov (yyval.member)->optional = 0; 1960*ae771770SStanislav Sedov (yyval.member)->ellipsis = 0; 1961*ae771770SStanislav Sedov (yyval.member)->type = NULL; 1962*ae771770SStanislav Sedov } 1963*ae771770SStanislav Sedov break; 1964*ae771770SStanislav Sedov 1965*ae771770SStanislav Sedov case 57: 1966*ae771770SStanislav Sedov #line 442 "asn1parse.y" 1967*ae771770SStanislav Sedov { 1968*ae771770SStanislav Sedov (yyval.type) = new_type(TInteger); 1969*ae771770SStanislav Sedov (yyval.type)->members = (yyvsp[(3) - (4)].members); 1970*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_Enumerated, TE_EXPLICIT, (yyval.type)); 1971*ae771770SStanislav Sedov } 1972*ae771770SStanislav Sedov break; 1973*ae771770SStanislav Sedov 1974*ae771770SStanislav Sedov case 59: 1975*ae771770SStanislav Sedov #line 453 "asn1parse.y" 1976*ae771770SStanislav Sedov { 1977*ae771770SStanislav Sedov (yyval.type) = new_type(TBitString); 1978*ae771770SStanislav Sedov (yyval.type)->members = emalloc(sizeof(*(yyval.type)->members)); 1979*ae771770SStanislav Sedov ASN1_TAILQ_INIT((yyval.type)->members); 1980*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, (yyval.type)); 1981*ae771770SStanislav Sedov } 1982*ae771770SStanislav Sedov break; 1983*ae771770SStanislav Sedov 1984*ae771770SStanislav Sedov case 60: 1985*ae771770SStanislav Sedov #line 460 "asn1parse.y" 1986*ae771770SStanislav Sedov { 1987*ae771770SStanislav Sedov (yyval.type) = new_type(TBitString); 1988*ae771770SStanislav Sedov (yyval.type)->members = (yyvsp[(4) - (5)].members); 1989*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, (yyval.type)); 1990*ae771770SStanislav Sedov } 1991*ae771770SStanislav Sedov break; 1992*ae771770SStanislav Sedov 1993*ae771770SStanislav Sedov case 61: 1994*ae771770SStanislav Sedov #line 468 "asn1parse.y" 1995*ae771770SStanislav Sedov { 1996*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_OID, 1997*ae771770SStanislav Sedov TE_EXPLICIT, new_type(TOID)); 1998*ae771770SStanislav Sedov } 1999*ae771770SStanislav Sedov break; 2000*ae771770SStanislav Sedov 2001*ae771770SStanislav Sedov case 62: 2002*ae771770SStanislav Sedov #line 474 "asn1parse.y" 2003*ae771770SStanislav Sedov { 2004*ae771770SStanislav Sedov Type *t = new_type(TOctetString); 2005*ae771770SStanislav Sedov t->range = (yyvsp[(3) - (3)].range); 2006*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_OctetString, 2007*ae771770SStanislav Sedov TE_EXPLICIT, t); 2008*ae771770SStanislav Sedov } 2009*ae771770SStanislav Sedov break; 2010*ae771770SStanislav Sedov 2011*ae771770SStanislav Sedov case 63: 2012*ae771770SStanislav Sedov #line 483 "asn1parse.y" 2013*ae771770SStanislav Sedov { 2014*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_Null, 2015*ae771770SStanislav Sedov TE_EXPLICIT, new_type(TNull)); 2016*ae771770SStanislav Sedov } 2017*ae771770SStanislav Sedov break; 2018*ae771770SStanislav Sedov 2019*ae771770SStanislav Sedov case 64: 2020*ae771770SStanislav Sedov #line 490 "asn1parse.y" 2021*ae771770SStanislav Sedov { (yyval.range) = NULL; } 2022*ae771770SStanislav Sedov break; 2023*ae771770SStanislav Sedov 2024*ae771770SStanislav Sedov case 65: 2025*ae771770SStanislav Sedov #line 492 "asn1parse.y" 2026*ae771770SStanislav Sedov { (yyval.range) = (yyvsp[(2) - (2)].range); } 2027*ae771770SStanislav Sedov break; 2028*ae771770SStanislav Sedov 2029*ae771770SStanislav Sedov case 66: 2030*ae771770SStanislav Sedov #line 497 "asn1parse.y" 2031*ae771770SStanislav Sedov { 2032*ae771770SStanislav Sedov (yyval.type) = new_type(TSequence); 2033*ae771770SStanislav Sedov (yyval.type)->members = (yyvsp[(3) - (4)].members); 2034*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type)); 2035*ae771770SStanislav Sedov } 2036*ae771770SStanislav Sedov break; 2037*ae771770SStanislav Sedov 2038*ae771770SStanislav Sedov case 67: 2039*ae771770SStanislav Sedov #line 503 "asn1parse.y" 2040*ae771770SStanislav Sedov { 2041*ae771770SStanislav Sedov (yyval.type) = new_type(TSequence); 2042*ae771770SStanislav Sedov (yyval.type)->members = NULL; 2043*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type)); 2044*ae771770SStanislav Sedov } 2045*ae771770SStanislav Sedov break; 2046*ae771770SStanislav Sedov 2047*ae771770SStanislav Sedov case 68: 2048*ae771770SStanislav Sedov #line 511 "asn1parse.y" 2049*ae771770SStanislav Sedov { 2050*ae771770SStanislav Sedov (yyval.type) = new_type(TSequenceOf); 2051*ae771770SStanislav Sedov (yyval.type)->range = (yyvsp[(2) - (4)].range); 2052*ae771770SStanislav Sedov (yyval.type)->subtype = (yyvsp[(4) - (4)].type); 2053*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type)); 2054*ae771770SStanislav Sedov } 2055*ae771770SStanislav Sedov break; 2056*ae771770SStanislav Sedov 2057*ae771770SStanislav Sedov case 69: 2058*ae771770SStanislav Sedov #line 520 "asn1parse.y" 2059*ae771770SStanislav Sedov { 2060*ae771770SStanislav Sedov (yyval.type) = new_type(TSet); 2061*ae771770SStanislav Sedov (yyval.type)->members = (yyvsp[(3) - (4)].members); 2062*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type)); 2063*ae771770SStanislav Sedov } 2064*ae771770SStanislav Sedov break; 2065*ae771770SStanislav Sedov 2066*ae771770SStanislav Sedov case 70: 2067*ae771770SStanislav Sedov #line 526 "asn1parse.y" 2068*ae771770SStanislav Sedov { 2069*ae771770SStanislav Sedov (yyval.type) = new_type(TSet); 2070*ae771770SStanislav Sedov (yyval.type)->members = NULL; 2071*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type)); 2072*ae771770SStanislav Sedov } 2073*ae771770SStanislav Sedov break; 2074*ae771770SStanislav Sedov 2075*ae771770SStanislav Sedov case 71: 2076*ae771770SStanislav Sedov #line 534 "asn1parse.y" 2077*ae771770SStanislav Sedov { 2078*ae771770SStanislav Sedov (yyval.type) = new_type(TSetOf); 2079*ae771770SStanislav Sedov (yyval.type)->subtype = (yyvsp[(3) - (3)].type); 2080*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type)); 2081*ae771770SStanislav Sedov } 2082*ae771770SStanislav Sedov break; 2083*ae771770SStanislav Sedov 2084*ae771770SStanislav Sedov case 72: 2085*ae771770SStanislav Sedov #line 542 "asn1parse.y" 2086*ae771770SStanislav Sedov { 2087*ae771770SStanislav Sedov (yyval.type) = new_type(TChoice); 2088*ae771770SStanislav Sedov (yyval.type)->members = (yyvsp[(3) - (4)].members); 2089*ae771770SStanislav Sedov } 2090*ae771770SStanislav Sedov break; 2091*ae771770SStanislav Sedov 2092*ae771770SStanislav Sedov case 75: 2093*ae771770SStanislav Sedov #line 553 "asn1parse.y" 2094*ae771770SStanislav Sedov { 2095*ae771770SStanislav Sedov Symbol *s = addsym((yyvsp[(1) - (1)].name)); 2096*ae771770SStanislav Sedov (yyval.type) = new_type(TType); 2097*ae771770SStanislav Sedov if(s->stype != Stype && s->stype != SUndefined) 2098*ae771770SStanislav Sedov lex_error_message ("%s is not a type\n", (yyvsp[(1) - (1)].name)); 2099*ae771770SStanislav Sedov else 2100*ae771770SStanislav Sedov (yyval.type)->symbol = s; 2101*ae771770SStanislav Sedov } 2102*ae771770SStanislav Sedov break; 2103*ae771770SStanislav Sedov 2104*ae771770SStanislav Sedov case 76: 2105*ae771770SStanislav Sedov #line 564 "asn1parse.y" 2106*ae771770SStanislav Sedov { 2107*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_GeneralizedTime, 2108*ae771770SStanislav Sedov TE_EXPLICIT, new_type(TGeneralizedTime)); 2109*ae771770SStanislav Sedov } 2110*ae771770SStanislav Sedov break; 2111*ae771770SStanislav Sedov 2112*ae771770SStanislav Sedov case 77: 2113*ae771770SStanislav Sedov #line 569 "asn1parse.y" 2114*ae771770SStanislav Sedov { 2115*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_UTCTime, 2116*ae771770SStanislav Sedov TE_EXPLICIT, new_type(TUTCTime)); 2117*ae771770SStanislav Sedov } 2118*ae771770SStanislav Sedov break; 2119*ae771770SStanislav Sedov 2120*ae771770SStanislav Sedov case 78: 2121*ae771770SStanislav Sedov #line 576 "asn1parse.y" 2122*ae771770SStanislav Sedov { 2123*ae771770SStanislav Sedov /* if (Constraint.type == contentConstrant) { 2124*ae771770SStanislav Sedov assert(Constraint.u.constraint.type == octetstring|bitstring-w/o-NamedBitList); // remember to check type reference too 2125*ae771770SStanislav Sedov if (Constraint.u.constraint.type) { 2126*ae771770SStanislav Sedov assert((Constraint.u.constraint.type.length % 8) == 0); 2127*ae771770SStanislav Sedov } 2128*ae771770SStanislav Sedov } 2129*ae771770SStanislav Sedov if (Constraint.u.constraint.encoding) { 2130*ae771770SStanislav Sedov type == der-oid|ber-oid 2131*ae771770SStanislav Sedov } 2132*ae771770SStanislav Sedov */ 2133*ae771770SStanislav Sedov } 2134*ae771770SStanislav Sedov break; 2135*ae771770SStanislav Sedov 2136*ae771770SStanislav Sedov case 79: 2137*ae771770SStanislav Sedov #line 592 "asn1parse.y" 2138*ae771770SStanislav Sedov { 2139*ae771770SStanislav Sedov (yyval.constraint_spec) = (yyvsp[(2) - (3)].constraint_spec); 2140*ae771770SStanislav Sedov } 2141*ae771770SStanislav Sedov break; 2142*ae771770SStanislav Sedov 2143*ae771770SStanislav Sedov case 83: 2144*ae771770SStanislav Sedov #line 605 "asn1parse.y" 2145*ae771770SStanislav Sedov { 2146*ae771770SStanislav Sedov (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS); 2147*ae771770SStanislav Sedov (yyval.constraint_spec)->u.content.type = (yyvsp[(2) - (2)].type); 2148*ae771770SStanislav Sedov (yyval.constraint_spec)->u.content.encoding = NULL; 2149*ae771770SStanislav Sedov } 2150*ae771770SStanislav Sedov break; 2151*ae771770SStanislav Sedov 2152*ae771770SStanislav Sedov case 84: 2153*ae771770SStanislav Sedov #line 611 "asn1parse.y" 2154*ae771770SStanislav Sedov { 2155*ae771770SStanislav Sedov if ((yyvsp[(3) - (3)].value)->type != objectidentifiervalue) 2156*ae771770SStanislav Sedov lex_error_message("Non-OID used in ENCODED BY constraint"); 2157*ae771770SStanislav Sedov (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS); 2158*ae771770SStanislav Sedov (yyval.constraint_spec)->u.content.type = NULL; 2159*ae771770SStanislav Sedov (yyval.constraint_spec)->u.content.encoding = (yyvsp[(3) - (3)].value); 2160*ae771770SStanislav Sedov } 2161*ae771770SStanislav Sedov break; 2162*ae771770SStanislav Sedov 2163*ae771770SStanislav Sedov case 85: 2164*ae771770SStanislav Sedov #line 619 "asn1parse.y" 2165*ae771770SStanislav Sedov { 2166*ae771770SStanislav Sedov if ((yyvsp[(5) - (5)].value)->type != objectidentifiervalue) 2167*ae771770SStanislav Sedov lex_error_message("Non-OID used in ENCODED BY constraint"); 2168*ae771770SStanislav Sedov (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS); 2169*ae771770SStanislav Sedov (yyval.constraint_spec)->u.content.type = (yyvsp[(2) - (5)].type); 2170*ae771770SStanislav Sedov (yyval.constraint_spec)->u.content.encoding = (yyvsp[(5) - (5)].value); 2171*ae771770SStanislav Sedov } 2172*ae771770SStanislav Sedov break; 2173*ae771770SStanislav Sedov 2174*ae771770SStanislav Sedov case 86: 2175*ae771770SStanislav Sedov #line 629 "asn1parse.y" 2176*ae771770SStanislav Sedov { 2177*ae771770SStanislav Sedov (yyval.constraint_spec) = new_constraint_spec(CT_USER); 2178*ae771770SStanislav Sedov } 2179*ae771770SStanislav Sedov break; 2180*ae771770SStanislav Sedov 2181*ae771770SStanislav Sedov case 87: 2182*ae771770SStanislav Sedov #line 635 "asn1parse.y" 2183*ae771770SStanislav Sedov { 2184*ae771770SStanislav Sedov (yyval.type) = new_type(TTag); 2185*ae771770SStanislav Sedov (yyval.type)->tag = (yyvsp[(1) - (3)].tag); 2186*ae771770SStanislav Sedov (yyval.type)->tag.tagenv = (yyvsp[(2) - (3)].constant); 2187*ae771770SStanislav Sedov if((yyvsp[(3) - (3)].type)->type == TTag && (yyvsp[(2) - (3)].constant) == TE_IMPLICIT) { 2188*ae771770SStanislav Sedov (yyval.type)->subtype = (yyvsp[(3) - (3)].type)->subtype; 2189*ae771770SStanislav Sedov free((yyvsp[(3) - (3)].type)); 2190*ae771770SStanislav Sedov } else 2191*ae771770SStanislav Sedov (yyval.type)->subtype = (yyvsp[(3) - (3)].type); 2192*ae771770SStanislav Sedov } 2193*ae771770SStanislav Sedov break; 2194*ae771770SStanislav Sedov 2195*ae771770SStanislav Sedov case 88: 2196*ae771770SStanislav Sedov #line 648 "asn1parse.y" 2197*ae771770SStanislav Sedov { 2198*ae771770SStanislav Sedov (yyval.tag).tagclass = (yyvsp[(2) - (4)].constant); 2199*ae771770SStanislav Sedov (yyval.tag).tagvalue = (yyvsp[(3) - (4)].constant); 2200*ae771770SStanislav Sedov (yyval.tag).tagenv = TE_EXPLICIT; 2201*ae771770SStanislav Sedov } 2202*ae771770SStanislav Sedov break; 2203*ae771770SStanislav Sedov 2204*ae771770SStanislav Sedov case 89: 2205*ae771770SStanislav Sedov #line 656 "asn1parse.y" 2206*ae771770SStanislav Sedov { 2207*ae771770SStanislav Sedov (yyval.constant) = ASN1_C_CONTEXT; 2208*ae771770SStanislav Sedov } 2209*ae771770SStanislav Sedov break; 2210*ae771770SStanislav Sedov 2211*ae771770SStanislav Sedov case 90: 2212*ae771770SStanislav Sedov #line 660 "asn1parse.y" 2213*ae771770SStanislav Sedov { 2214*ae771770SStanislav Sedov (yyval.constant) = ASN1_C_UNIV; 2215*ae771770SStanislav Sedov } 2216*ae771770SStanislav Sedov break; 2217*ae771770SStanislav Sedov 2218*ae771770SStanislav Sedov case 91: 2219*ae771770SStanislav Sedov #line 664 "asn1parse.y" 2220*ae771770SStanislav Sedov { 2221*ae771770SStanislav Sedov (yyval.constant) = ASN1_C_APPL; 2222*ae771770SStanislav Sedov } 2223*ae771770SStanislav Sedov break; 2224*ae771770SStanislav Sedov 2225*ae771770SStanislav Sedov case 92: 2226*ae771770SStanislav Sedov #line 668 "asn1parse.y" 2227*ae771770SStanislav Sedov { 2228*ae771770SStanislav Sedov (yyval.constant) = ASN1_C_PRIVATE; 2229*ae771770SStanislav Sedov } 2230*ae771770SStanislav Sedov break; 2231*ae771770SStanislav Sedov 2232*ae771770SStanislav Sedov case 93: 2233*ae771770SStanislav Sedov #line 674 "asn1parse.y" 2234*ae771770SStanislav Sedov { 2235*ae771770SStanislav Sedov (yyval.constant) = TE_EXPLICIT; 2236*ae771770SStanislav Sedov } 2237*ae771770SStanislav Sedov break; 2238*ae771770SStanislav Sedov 2239*ae771770SStanislav Sedov case 94: 2240*ae771770SStanislav Sedov #line 678 "asn1parse.y" 2241*ae771770SStanislav Sedov { 2242*ae771770SStanislav Sedov (yyval.constant) = TE_EXPLICIT; 2243*ae771770SStanislav Sedov } 2244*ae771770SStanislav Sedov break; 2245*ae771770SStanislav Sedov 2246*ae771770SStanislav Sedov case 95: 2247*ae771770SStanislav Sedov #line 682 "asn1parse.y" 2248*ae771770SStanislav Sedov { 2249*ae771770SStanislav Sedov (yyval.constant) = TE_IMPLICIT; 2250*ae771770SStanislav Sedov } 2251*ae771770SStanislav Sedov break; 2252*ae771770SStanislav Sedov 2253*ae771770SStanislav Sedov case 96: 2254*ae771770SStanislav Sedov #line 689 "asn1parse.y" 2255*ae771770SStanislav Sedov { 2256*ae771770SStanislav Sedov Symbol *s; 2257*ae771770SStanislav Sedov s = addsym ((yyvsp[(1) - (4)].name)); 2258*ae771770SStanislav Sedov 2259*ae771770SStanislav Sedov s->stype = SValue; 2260*ae771770SStanislav Sedov s->value = (yyvsp[(4) - (4)].value); 2261*ae771770SStanislav Sedov generate_constant (s); 2262*ae771770SStanislav Sedov } 2263*ae771770SStanislav Sedov break; 2264*ae771770SStanislav Sedov 2265*ae771770SStanislav Sedov case 98: 2266*ae771770SStanislav Sedov #line 703 "asn1parse.y" 2267*ae771770SStanislav Sedov { 2268*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_GeneralString, 2269*ae771770SStanislav Sedov TE_EXPLICIT, new_type(TGeneralString)); 2270*ae771770SStanislav Sedov } 2271*ae771770SStanislav Sedov break; 2272*ae771770SStanislav Sedov 2273*ae771770SStanislav Sedov case 99: 2274*ae771770SStanislav Sedov #line 708 "asn1parse.y" 2275*ae771770SStanislav Sedov { 2276*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_TeletexString, 2277*ae771770SStanislav Sedov TE_EXPLICIT, new_type(TTeletexString)); 2278*ae771770SStanislav Sedov } 2279*ae771770SStanislav Sedov break; 2280*ae771770SStanislav Sedov 2281*ae771770SStanislav Sedov case 100: 2282*ae771770SStanislav Sedov #line 713 "asn1parse.y" 2283*ae771770SStanislav Sedov { 2284*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_UTF8String, 2285*ae771770SStanislav Sedov TE_EXPLICIT, new_type(TUTF8String)); 2286*ae771770SStanislav Sedov } 2287*ae771770SStanislav Sedov break; 2288*ae771770SStanislav Sedov 2289*ae771770SStanislav Sedov case 101: 2290*ae771770SStanislav Sedov #line 718 "asn1parse.y" 2291*ae771770SStanislav Sedov { 2292*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_PrintableString, 2293*ae771770SStanislav Sedov TE_EXPLICIT, new_type(TPrintableString)); 2294*ae771770SStanislav Sedov } 2295*ae771770SStanislav Sedov break; 2296*ae771770SStanislav Sedov 2297*ae771770SStanislav Sedov case 102: 2298*ae771770SStanislav Sedov #line 723 "asn1parse.y" 2299*ae771770SStanislav Sedov { 2300*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_VisibleString, 2301*ae771770SStanislav Sedov TE_EXPLICIT, new_type(TVisibleString)); 2302*ae771770SStanislav Sedov } 2303*ae771770SStanislav Sedov break; 2304*ae771770SStanislav Sedov 2305*ae771770SStanislav Sedov case 103: 2306*ae771770SStanislav Sedov #line 728 "asn1parse.y" 2307*ae771770SStanislav Sedov { 2308*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_IA5String, 2309*ae771770SStanislav Sedov TE_EXPLICIT, new_type(TIA5String)); 2310*ae771770SStanislav Sedov } 2311*ae771770SStanislav Sedov break; 2312*ae771770SStanislav Sedov 2313*ae771770SStanislav Sedov case 104: 2314*ae771770SStanislav Sedov #line 733 "asn1parse.y" 2315*ae771770SStanislav Sedov { 2316*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_BMPString, 2317*ae771770SStanislav Sedov TE_EXPLICIT, new_type(TBMPString)); 2318*ae771770SStanislav Sedov } 2319*ae771770SStanislav Sedov break; 2320*ae771770SStanislav Sedov 2321*ae771770SStanislav Sedov case 105: 2322*ae771770SStanislav Sedov #line 738 "asn1parse.y" 2323*ae771770SStanislav Sedov { 2324*ae771770SStanislav Sedov (yyval.type) = new_tag(ASN1_C_UNIV, UT_UniversalString, 2325*ae771770SStanislav Sedov TE_EXPLICIT, new_type(TUniversalString)); 2326*ae771770SStanislav Sedov } 2327*ae771770SStanislav Sedov break; 2328*ae771770SStanislav Sedov 2329*ae771770SStanislav Sedov case 106: 2330*ae771770SStanislav Sedov #line 746 "asn1parse.y" 2331*ae771770SStanislav Sedov { 2332*ae771770SStanislav Sedov (yyval.members) = emalloc(sizeof(*(yyval.members))); 2333*ae771770SStanislav Sedov ASN1_TAILQ_INIT((yyval.members)); 2334*ae771770SStanislav Sedov ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members); 2335*ae771770SStanislav Sedov } 2336*ae771770SStanislav Sedov break; 2337*ae771770SStanislav Sedov 2338*ae771770SStanislav Sedov case 107: 2339*ae771770SStanislav Sedov #line 752 "asn1parse.y" 2340*ae771770SStanislav Sedov { 2341*ae771770SStanislav Sedov ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members); 2342*ae771770SStanislav Sedov (yyval.members) = (yyvsp[(1) - (3)].members); 2343*ae771770SStanislav Sedov } 2344*ae771770SStanislav Sedov break; 2345*ae771770SStanislav Sedov 2346*ae771770SStanislav Sedov case 108: 2347*ae771770SStanislav Sedov #line 757 "asn1parse.y" 2348*ae771770SStanislav Sedov { 2349*ae771770SStanislav Sedov struct member *m = ecalloc(1, sizeof(*m)); 2350*ae771770SStanislav Sedov m->name = estrdup("..."); 2351*ae771770SStanislav Sedov m->gen_name = estrdup("asn1_ellipsis"); 2352*ae771770SStanislav Sedov m->ellipsis = 1; 2353*ae771770SStanislav Sedov ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), m, members); 2354*ae771770SStanislav Sedov (yyval.members) = (yyvsp[(1) - (3)].members); 2355*ae771770SStanislav Sedov } 2356*ae771770SStanislav Sedov break; 2357*ae771770SStanislav Sedov 2358*ae771770SStanislav Sedov case 109: 2359*ae771770SStanislav Sedov #line 768 "asn1parse.y" 2360*ae771770SStanislav Sedov { 2361*ae771770SStanislav Sedov (yyval.member) = emalloc(sizeof(*(yyval.member))); 2362*ae771770SStanislav Sedov (yyval.member)->name = (yyvsp[(1) - (2)].name); 2363*ae771770SStanislav Sedov (yyval.member)->gen_name = estrdup((yyvsp[(1) - (2)].name)); 2364*ae771770SStanislav Sedov output_name ((yyval.member)->gen_name); 2365*ae771770SStanislav Sedov (yyval.member)->type = (yyvsp[(2) - (2)].type); 2366*ae771770SStanislav Sedov (yyval.member)->ellipsis = 0; 2367*ae771770SStanislav Sedov } 2368*ae771770SStanislav Sedov break; 2369*ae771770SStanislav Sedov 2370*ae771770SStanislav Sedov case 110: 2371*ae771770SStanislav Sedov #line 779 "asn1parse.y" 2372*ae771770SStanislav Sedov { 2373*ae771770SStanislav Sedov (yyval.member) = (yyvsp[(1) - (1)].member); 2374*ae771770SStanislav Sedov (yyval.member)->optional = 0; 2375*ae771770SStanislav Sedov (yyval.member)->defval = NULL; 2376*ae771770SStanislav Sedov } 2377*ae771770SStanislav Sedov break; 2378*ae771770SStanislav Sedov 2379*ae771770SStanislav Sedov case 111: 2380*ae771770SStanislav Sedov #line 785 "asn1parse.y" 2381*ae771770SStanislav Sedov { 2382*ae771770SStanislav Sedov (yyval.member) = (yyvsp[(1) - (2)].member); 2383*ae771770SStanislav Sedov (yyval.member)->optional = 1; 2384*ae771770SStanislav Sedov (yyval.member)->defval = NULL; 2385*ae771770SStanislav Sedov } 2386*ae771770SStanislav Sedov break; 2387*ae771770SStanislav Sedov 2388*ae771770SStanislav Sedov case 112: 2389*ae771770SStanislav Sedov #line 791 "asn1parse.y" 2390*ae771770SStanislav Sedov { 2391*ae771770SStanislav Sedov (yyval.member) = (yyvsp[(1) - (3)].member); 2392*ae771770SStanislav Sedov (yyval.member)->optional = 0; 2393*ae771770SStanislav Sedov (yyval.member)->defval = (yyvsp[(3) - (3)].value); 2394*ae771770SStanislav Sedov } 2395*ae771770SStanislav Sedov break; 2396*ae771770SStanislav Sedov 2397*ae771770SStanislav Sedov case 113: 2398*ae771770SStanislav Sedov #line 799 "asn1parse.y" 2399*ae771770SStanislav Sedov { 2400*ae771770SStanislav Sedov (yyval.members) = emalloc(sizeof(*(yyval.members))); 2401*ae771770SStanislav Sedov ASN1_TAILQ_INIT((yyval.members)); 2402*ae771770SStanislav Sedov ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members); 2403*ae771770SStanislav Sedov } 2404*ae771770SStanislav Sedov break; 2405*ae771770SStanislav Sedov 2406*ae771770SStanislav Sedov case 114: 2407*ae771770SStanislav Sedov #line 805 "asn1parse.y" 2408*ae771770SStanislav Sedov { 2409*ae771770SStanislav Sedov ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members); 2410*ae771770SStanislav Sedov (yyval.members) = (yyvsp[(1) - (3)].members); 2411*ae771770SStanislav Sedov } 2412*ae771770SStanislav Sedov break; 2413*ae771770SStanislav Sedov 2414*ae771770SStanislav Sedov case 115: 2415*ae771770SStanislav Sedov #line 812 "asn1parse.y" 2416*ae771770SStanislav Sedov { 2417*ae771770SStanislav Sedov (yyval.member) = emalloc(sizeof(*(yyval.member))); 2418*ae771770SStanislav Sedov (yyval.member)->name = (yyvsp[(1) - (4)].name); 2419*ae771770SStanislav Sedov (yyval.member)->gen_name = estrdup((yyvsp[(1) - (4)].name)); 2420*ae771770SStanislav Sedov output_name ((yyval.member)->gen_name); 2421*ae771770SStanislav Sedov (yyval.member)->val = (yyvsp[(3) - (4)].constant); 2422*ae771770SStanislav Sedov (yyval.member)->optional = 0; 2423*ae771770SStanislav Sedov (yyval.member)->ellipsis = 0; 2424*ae771770SStanislav Sedov (yyval.member)->type = NULL; 2425*ae771770SStanislav Sedov } 2426*ae771770SStanislav Sedov break; 2427*ae771770SStanislav Sedov 2428*ae771770SStanislav Sedov case 117: 2429*ae771770SStanislav Sedov #line 825 "asn1parse.y" 2430*ae771770SStanislav Sedov { (yyval.objid) = NULL; } 2431*ae771770SStanislav Sedov break; 2432*ae771770SStanislav Sedov 2433*ae771770SStanislav Sedov case 118: 2434*ae771770SStanislav Sedov #line 829 "asn1parse.y" 2435*ae771770SStanislav Sedov { 2436*ae771770SStanislav Sedov (yyval.objid) = (yyvsp[(2) - (3)].objid); 2437*ae771770SStanislav Sedov } 2438*ae771770SStanislav Sedov break; 2439*ae771770SStanislav Sedov 2440*ae771770SStanislav Sedov case 119: 2441*ae771770SStanislav Sedov #line 835 "asn1parse.y" 2442*ae771770SStanislav Sedov { 2443*ae771770SStanislav Sedov (yyval.objid) = NULL; 2444*ae771770SStanislav Sedov } 2445*ae771770SStanislav Sedov break; 2446*ae771770SStanislav Sedov 2447*ae771770SStanislav Sedov case 120: 2448*ae771770SStanislav Sedov #line 839 "asn1parse.y" 2449*ae771770SStanislav Sedov { 2450*ae771770SStanislav Sedov if ((yyvsp[(2) - (2)].objid)) { 2451*ae771770SStanislav Sedov (yyval.objid) = (yyvsp[(2) - (2)].objid); 2452*ae771770SStanislav Sedov add_oid_to_tail((yyvsp[(2) - (2)].objid), (yyvsp[(1) - (2)].objid)); 2453*ae771770SStanislav Sedov } else { 2454*ae771770SStanislav Sedov (yyval.objid) = (yyvsp[(1) - (2)].objid); 2455*ae771770SStanislav Sedov } 2456*ae771770SStanislav Sedov } 2457*ae771770SStanislav Sedov break; 2458*ae771770SStanislav Sedov 2459*ae771770SStanislav Sedov case 121: 2460*ae771770SStanislav Sedov #line 850 "asn1parse.y" 2461*ae771770SStanislav Sedov { 2462*ae771770SStanislav Sedov (yyval.objid) = new_objid((yyvsp[(1) - (4)].name), (yyvsp[(3) - (4)].constant)); 2463*ae771770SStanislav Sedov } 2464*ae771770SStanislav Sedov break; 2465*ae771770SStanislav Sedov 2466*ae771770SStanislav Sedov case 122: 2467*ae771770SStanislav Sedov #line 854 "asn1parse.y" 2468*ae771770SStanislav Sedov { 2469*ae771770SStanislav Sedov Symbol *s = addsym((yyvsp[(1) - (1)].name)); 2470*ae771770SStanislav Sedov if(s->stype != SValue || 2471*ae771770SStanislav Sedov s->value->type != objectidentifiervalue) { 2472*ae771770SStanislav Sedov lex_error_message("%s is not an object identifier\n", 2473*ae771770SStanislav Sedov s->name); 2474*ae771770SStanislav Sedov exit(1); 2475*ae771770SStanislav Sedov } 2476*ae771770SStanislav Sedov (yyval.objid) = s->value->u.objectidentifiervalue; 2477*ae771770SStanislav Sedov } 2478*ae771770SStanislav Sedov break; 2479*ae771770SStanislav Sedov 2480*ae771770SStanislav Sedov case 123: 2481*ae771770SStanislav Sedov #line 865 "asn1parse.y" 2482*ae771770SStanislav Sedov { 2483*ae771770SStanislav Sedov (yyval.objid) = new_objid(NULL, (yyvsp[(1) - (1)].constant)); 2484*ae771770SStanislav Sedov } 2485*ae771770SStanislav Sedov break; 2486*ae771770SStanislav Sedov 2487*ae771770SStanislav Sedov case 133: 2488*ae771770SStanislav Sedov #line 888 "asn1parse.y" 2489*ae771770SStanislav Sedov { 2490*ae771770SStanislav Sedov Symbol *s = addsym((yyvsp[(1) - (1)].name)); 2491*ae771770SStanislav Sedov if(s->stype != SValue) 2492*ae771770SStanislav Sedov lex_error_message ("%s is not a value\n", 2493*ae771770SStanislav Sedov s->name); 2494*ae771770SStanislav Sedov else 2495*ae771770SStanislav Sedov (yyval.value) = s->value; 2496*ae771770SStanislav Sedov } 2497*ae771770SStanislav Sedov break; 2498*ae771770SStanislav Sedov 2499*ae771770SStanislav Sedov case 134: 2500*ae771770SStanislav Sedov #line 899 "asn1parse.y" 2501*ae771770SStanislav Sedov { 2502*ae771770SStanislav Sedov (yyval.value) = emalloc(sizeof(*(yyval.value))); 2503*ae771770SStanislav Sedov (yyval.value)->type = stringvalue; 2504*ae771770SStanislav Sedov (yyval.value)->u.stringvalue = (yyvsp[(1) - (1)].name); 2505*ae771770SStanislav Sedov } 2506*ae771770SStanislav Sedov break; 2507*ae771770SStanislav Sedov 2508*ae771770SStanislav Sedov case 135: 2509*ae771770SStanislav Sedov #line 907 "asn1parse.y" 2510*ae771770SStanislav Sedov { 2511*ae771770SStanislav Sedov (yyval.value) = emalloc(sizeof(*(yyval.value))); 2512*ae771770SStanislav Sedov (yyval.value)->type = booleanvalue; 2513*ae771770SStanislav Sedov (yyval.value)->u.booleanvalue = 0; 2514*ae771770SStanislav Sedov } 2515*ae771770SStanislav Sedov break; 2516*ae771770SStanislav Sedov 2517*ae771770SStanislav Sedov case 136: 2518*ae771770SStanislav Sedov #line 913 "asn1parse.y" 2519*ae771770SStanislav Sedov { 2520*ae771770SStanislav Sedov (yyval.value) = emalloc(sizeof(*(yyval.value))); 2521*ae771770SStanislav Sedov (yyval.value)->type = booleanvalue; 2522*ae771770SStanislav Sedov (yyval.value)->u.booleanvalue = 0; 2523*ae771770SStanislav Sedov } 2524*ae771770SStanislav Sedov break; 2525*ae771770SStanislav Sedov 2526*ae771770SStanislav Sedov case 137: 2527*ae771770SStanislav Sedov #line 921 "asn1parse.y" 2528*ae771770SStanislav Sedov { 2529*ae771770SStanislav Sedov (yyval.value) = emalloc(sizeof(*(yyval.value))); 2530*ae771770SStanislav Sedov (yyval.value)->type = integervalue; 2531*ae771770SStanislav Sedov (yyval.value)->u.integervalue = (yyvsp[(1) - (1)].constant); 2532*ae771770SStanislav Sedov } 2533*ae771770SStanislav Sedov break; 2534*ae771770SStanislav Sedov 2535*ae771770SStanislav Sedov case 139: 2536*ae771770SStanislav Sedov #line 932 "asn1parse.y" 2537*ae771770SStanislav Sedov { 2538*ae771770SStanislav Sedov } 2539*ae771770SStanislav Sedov break; 2540*ae771770SStanislav Sedov 2541*ae771770SStanislav Sedov case 140: 2542*ae771770SStanislav Sedov #line 937 "asn1parse.y" 2543*ae771770SStanislav Sedov { 2544*ae771770SStanislav Sedov (yyval.value) = emalloc(sizeof(*(yyval.value))); 2545*ae771770SStanislav Sedov (yyval.value)->type = objectidentifiervalue; 2546*ae771770SStanislav Sedov (yyval.value)->u.objectidentifiervalue = (yyvsp[(1) - (1)].objid); 2547*ae771770SStanislav Sedov } 2548*ae771770SStanislav Sedov break; 2549*ae771770SStanislav Sedov 2550*ae771770SStanislav Sedov 2551*ae771770SStanislav Sedov /* Line 1267 of yacc.c. */ 2552*ae771770SStanislav Sedov #line 2553 "asn1parse.c" 2553*ae771770SStanislav Sedov default: break; 2554*ae771770SStanislav Sedov } 2555*ae771770SStanislav Sedov YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 2556*ae771770SStanislav Sedov 2557*ae771770SStanislav Sedov YYPOPSTACK (yylen); 2558*ae771770SStanislav Sedov yylen = 0; 2559*ae771770SStanislav Sedov YY_STACK_PRINT (yyss, yyssp); 2560*ae771770SStanislav Sedov 2561*ae771770SStanislav Sedov *++yyvsp = yyval; 2562*ae771770SStanislav Sedov 2563*ae771770SStanislav Sedov 2564*ae771770SStanislav Sedov /* Now `shift' the result of the reduction. Determine what state 2565*ae771770SStanislav Sedov that goes to, based on the state we popped back to and the rule 2566*ae771770SStanislav Sedov number reduced by. */ 2567*ae771770SStanislav Sedov 2568*ae771770SStanislav Sedov yyn = yyr1[yyn]; 2569*ae771770SStanislav Sedov 2570*ae771770SStanislav Sedov yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 2571*ae771770SStanislav Sedov if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 2572*ae771770SStanislav Sedov yystate = yytable[yystate]; 2573*ae771770SStanislav Sedov else 2574*ae771770SStanislav Sedov yystate = yydefgoto[yyn - YYNTOKENS]; 2575*ae771770SStanislav Sedov 2576*ae771770SStanislav Sedov goto yynewstate; 2577*ae771770SStanislav Sedov 2578*ae771770SStanislav Sedov 2579*ae771770SStanislav Sedov /*------------------------------------. 2580*ae771770SStanislav Sedov | yyerrlab -- here on detecting error | 2581*ae771770SStanislav Sedov `------------------------------------*/ 2582*ae771770SStanislav Sedov yyerrlab: 2583*ae771770SStanislav Sedov /* If not already recovering from an error, report this error. */ 2584*ae771770SStanislav Sedov if (!yyerrstatus) 2585*ae771770SStanislav Sedov { 2586*ae771770SStanislav Sedov ++yynerrs; 2587*ae771770SStanislav Sedov #if ! YYERROR_VERBOSE 2588*ae771770SStanislav Sedov yyerror (YY_("syntax error")); 2589*ae771770SStanislav Sedov #else 2590*ae771770SStanislav Sedov { 2591*ae771770SStanislav Sedov YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); 2592*ae771770SStanislav Sedov if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) 2593*ae771770SStanislav Sedov { 2594*ae771770SStanislav Sedov YYSIZE_T yyalloc = 2 * yysize; 2595*ae771770SStanislav Sedov if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) 2596*ae771770SStanislav Sedov yyalloc = YYSTACK_ALLOC_MAXIMUM; 2597*ae771770SStanislav Sedov if (yymsg != yymsgbuf) 2598*ae771770SStanislav Sedov YYSTACK_FREE (yymsg); 2599*ae771770SStanislav Sedov yymsg = (char *) YYSTACK_ALLOC (yyalloc); 2600*ae771770SStanislav Sedov if (yymsg) 2601*ae771770SStanislav Sedov yymsg_alloc = yyalloc; 2602*ae771770SStanislav Sedov else 2603*ae771770SStanislav Sedov { 2604*ae771770SStanislav Sedov yymsg = yymsgbuf; 2605*ae771770SStanislav Sedov yymsg_alloc = sizeof yymsgbuf; 2606*ae771770SStanislav Sedov } 2607*ae771770SStanislav Sedov } 2608*ae771770SStanislav Sedov 2609*ae771770SStanislav Sedov if (0 < yysize && yysize <= yymsg_alloc) 2610*ae771770SStanislav Sedov { 2611*ae771770SStanislav Sedov (void) yysyntax_error (yymsg, yystate, yychar); 2612*ae771770SStanislav Sedov yyerror (yymsg); 2613*ae771770SStanislav Sedov } 2614*ae771770SStanislav Sedov else 2615*ae771770SStanislav Sedov { 2616*ae771770SStanislav Sedov yyerror (YY_("syntax error")); 2617*ae771770SStanislav Sedov if (yysize != 0) 2618*ae771770SStanislav Sedov goto yyexhaustedlab; 2619*ae771770SStanislav Sedov } 2620*ae771770SStanislav Sedov } 2621*ae771770SStanislav Sedov #endif 2622*ae771770SStanislav Sedov } 2623*ae771770SStanislav Sedov 2624*ae771770SStanislav Sedov 2625*ae771770SStanislav Sedov 2626*ae771770SStanislav Sedov if (yyerrstatus == 3) 2627*ae771770SStanislav Sedov { 2628*ae771770SStanislav Sedov /* If just tried and failed to reuse look-ahead token after an 2629*ae771770SStanislav Sedov error, discard it. */ 2630*ae771770SStanislav Sedov 2631*ae771770SStanislav Sedov if (yychar <= YYEOF) 2632*ae771770SStanislav Sedov { 2633*ae771770SStanislav Sedov /* Return failure if at end of input. */ 2634*ae771770SStanislav Sedov if (yychar == YYEOF) 2635*ae771770SStanislav Sedov YYABORT; 2636*ae771770SStanislav Sedov } 2637*ae771770SStanislav Sedov else 2638*ae771770SStanislav Sedov { 2639*ae771770SStanislav Sedov yydestruct ("Error: discarding", 2640*ae771770SStanislav Sedov yytoken, &yylval); 2641*ae771770SStanislav Sedov yychar = YYEMPTY; 2642*ae771770SStanislav Sedov } 2643*ae771770SStanislav Sedov } 2644*ae771770SStanislav Sedov 2645*ae771770SStanislav Sedov /* Else will try to reuse look-ahead token after shifting the error 2646*ae771770SStanislav Sedov token. */ 2647*ae771770SStanislav Sedov goto yyerrlab1; 2648*ae771770SStanislav Sedov 2649*ae771770SStanislav Sedov 2650*ae771770SStanislav Sedov /*---------------------------------------------------. 2651*ae771770SStanislav Sedov | yyerrorlab -- error raised explicitly by YYERROR. | 2652*ae771770SStanislav Sedov `---------------------------------------------------*/ 2653*ae771770SStanislav Sedov yyerrorlab: 2654*ae771770SStanislav Sedov 2655*ae771770SStanislav Sedov /* Pacify compilers like GCC when the user code never invokes 2656*ae771770SStanislav Sedov YYERROR and the label yyerrorlab therefore never appears in user 2657*ae771770SStanislav Sedov code. */ 2658*ae771770SStanislav Sedov if (/*CONSTCOND*/ 0) 2659*ae771770SStanislav Sedov goto yyerrorlab; 2660*ae771770SStanislav Sedov 2661*ae771770SStanislav Sedov /* Do not reclaim the symbols of the rule which action triggered 2662*ae771770SStanislav Sedov this YYERROR. */ 2663*ae771770SStanislav Sedov YYPOPSTACK (yylen); 2664*ae771770SStanislav Sedov yylen = 0; 2665*ae771770SStanislav Sedov YY_STACK_PRINT (yyss, yyssp); 2666*ae771770SStanislav Sedov yystate = *yyssp; 2667*ae771770SStanislav Sedov goto yyerrlab1; 2668*ae771770SStanislav Sedov 2669*ae771770SStanislav Sedov 2670*ae771770SStanislav Sedov /*-------------------------------------------------------------. 2671*ae771770SStanislav Sedov | yyerrlab1 -- common code for both syntax error and YYERROR. | 2672*ae771770SStanislav Sedov `-------------------------------------------------------------*/ 2673*ae771770SStanislav Sedov yyerrlab1: 2674*ae771770SStanislav Sedov yyerrstatus = 3; /* Each real token shifted decrements this. */ 2675*ae771770SStanislav Sedov 2676*ae771770SStanislav Sedov for (;;) 2677*ae771770SStanislav Sedov { 2678*ae771770SStanislav Sedov yyn = yypact[yystate]; 2679*ae771770SStanislav Sedov if (yyn != YYPACT_NINF) 2680*ae771770SStanislav Sedov { 2681*ae771770SStanislav Sedov yyn += YYTERROR; 2682*ae771770SStanislav Sedov if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 2683*ae771770SStanislav Sedov { 2684*ae771770SStanislav Sedov yyn = yytable[yyn]; 2685*ae771770SStanislav Sedov if (0 < yyn) 2686*ae771770SStanislav Sedov break; 2687*ae771770SStanislav Sedov } 2688*ae771770SStanislav Sedov } 2689*ae771770SStanislav Sedov 2690*ae771770SStanislav Sedov /* Pop the current state because it cannot handle the error token. */ 2691*ae771770SStanislav Sedov if (yyssp == yyss) 2692*ae771770SStanislav Sedov YYABORT; 2693*ae771770SStanislav Sedov 2694*ae771770SStanislav Sedov 2695*ae771770SStanislav Sedov yydestruct ("Error: popping", 2696*ae771770SStanislav Sedov yystos[yystate], yyvsp); 2697*ae771770SStanislav Sedov YYPOPSTACK (1); 2698*ae771770SStanislav Sedov yystate = *yyssp; 2699*ae771770SStanislav Sedov YY_STACK_PRINT (yyss, yyssp); 2700*ae771770SStanislav Sedov } 2701*ae771770SStanislav Sedov 2702*ae771770SStanislav Sedov if (yyn == YYFINAL) 2703*ae771770SStanislav Sedov YYACCEPT; 2704*ae771770SStanislav Sedov 2705*ae771770SStanislav Sedov *++yyvsp = yylval; 2706*ae771770SStanislav Sedov 2707*ae771770SStanislav Sedov 2708*ae771770SStanislav Sedov /* Shift the error token. */ 2709*ae771770SStanislav Sedov YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 2710*ae771770SStanislav Sedov 2711*ae771770SStanislav Sedov yystate = yyn; 2712*ae771770SStanislav Sedov goto yynewstate; 2713*ae771770SStanislav Sedov 2714*ae771770SStanislav Sedov 2715*ae771770SStanislav Sedov /*-------------------------------------. 2716*ae771770SStanislav Sedov | yyacceptlab -- YYACCEPT comes here. | 2717*ae771770SStanislav Sedov `-------------------------------------*/ 2718*ae771770SStanislav Sedov yyacceptlab: 2719*ae771770SStanislav Sedov yyresult = 0; 2720*ae771770SStanislav Sedov goto yyreturn; 2721*ae771770SStanislav Sedov 2722*ae771770SStanislav Sedov /*-----------------------------------. 2723*ae771770SStanislav Sedov | yyabortlab -- YYABORT comes here. | 2724*ae771770SStanislav Sedov `-----------------------------------*/ 2725*ae771770SStanislav Sedov yyabortlab: 2726*ae771770SStanislav Sedov yyresult = 1; 2727*ae771770SStanislav Sedov goto yyreturn; 2728*ae771770SStanislav Sedov 2729*ae771770SStanislav Sedov #ifndef yyoverflow 2730*ae771770SStanislav Sedov /*-------------------------------------------------. 2731*ae771770SStanislav Sedov | yyexhaustedlab -- memory exhaustion comes here. | 2732*ae771770SStanislav Sedov `-------------------------------------------------*/ 2733*ae771770SStanislav Sedov yyexhaustedlab: 2734*ae771770SStanislav Sedov yyerror (YY_("memory exhausted")); 2735*ae771770SStanislav Sedov yyresult = 2; 2736*ae771770SStanislav Sedov /* Fall through. */ 2737*ae771770SStanislav Sedov #endif 2738*ae771770SStanislav Sedov 2739*ae771770SStanislav Sedov yyreturn: 2740*ae771770SStanislav Sedov if (yychar != YYEOF && yychar != YYEMPTY) 2741*ae771770SStanislav Sedov yydestruct ("Cleanup: discarding lookahead", 2742*ae771770SStanislav Sedov yytoken, &yylval); 2743*ae771770SStanislav Sedov /* Do not reclaim the symbols of the rule which action triggered 2744*ae771770SStanislav Sedov this YYABORT or YYACCEPT. */ 2745*ae771770SStanislav Sedov YYPOPSTACK (yylen); 2746*ae771770SStanislav Sedov YY_STACK_PRINT (yyss, yyssp); 2747*ae771770SStanislav Sedov while (yyssp != yyss) 2748*ae771770SStanislav Sedov { 2749*ae771770SStanislav Sedov yydestruct ("Cleanup: popping", 2750*ae771770SStanislav Sedov yystos[*yyssp], yyvsp); 2751*ae771770SStanislav Sedov YYPOPSTACK (1); 2752*ae771770SStanislav Sedov } 2753*ae771770SStanislav Sedov #ifndef yyoverflow 2754*ae771770SStanislav Sedov if (yyss != yyssa) 2755*ae771770SStanislav Sedov YYSTACK_FREE (yyss); 2756*ae771770SStanislav Sedov #endif 2757*ae771770SStanislav Sedov #if YYERROR_VERBOSE 2758*ae771770SStanislav Sedov if (yymsg != yymsgbuf) 2759*ae771770SStanislav Sedov YYSTACK_FREE (yymsg); 2760*ae771770SStanislav Sedov #endif 2761*ae771770SStanislav Sedov /* Make sure YYID is used. */ 2762*ae771770SStanislav Sedov return YYID (yyresult); 2763*ae771770SStanislav Sedov } 2764*ae771770SStanislav Sedov 2765*ae771770SStanislav Sedov 2766*ae771770SStanislav Sedov #line 944 "asn1parse.y" 2767*ae771770SStanislav Sedov 2768*ae771770SStanislav Sedov 2769*ae771770SStanislav Sedov void 2770*ae771770SStanislav Sedov yyerror (const char *s) 2771*ae771770SStanislav Sedov { 2772*ae771770SStanislav Sedov lex_error_message ("%s\n", s); 2773*ae771770SStanislav Sedov } 2774*ae771770SStanislav Sedov 2775*ae771770SStanislav Sedov static Type * 2776*ae771770SStanislav Sedov new_tag(int tagclass, int tagvalue, int tagenv, Type *oldtype) 2777*ae771770SStanislav Sedov { 2778*ae771770SStanislav Sedov Type *t; 2779*ae771770SStanislav Sedov if(oldtype->type == TTag && oldtype->tag.tagenv == TE_IMPLICIT) { 2780*ae771770SStanislav Sedov t = oldtype; 2781*ae771770SStanislav Sedov oldtype = oldtype->subtype; /* XXX */ 2782*ae771770SStanislav Sedov } else 2783*ae771770SStanislav Sedov t = new_type (TTag); 2784*ae771770SStanislav Sedov 2785*ae771770SStanislav Sedov t->tag.tagclass = tagclass; 2786*ae771770SStanislav Sedov t->tag.tagvalue = tagvalue; 2787*ae771770SStanislav Sedov t->tag.tagenv = tagenv; 2788*ae771770SStanislav Sedov t->subtype = oldtype; 2789*ae771770SStanislav Sedov return t; 2790*ae771770SStanislav Sedov } 2791*ae771770SStanislav Sedov 2792*ae771770SStanislav Sedov static struct objid * 2793*ae771770SStanislav Sedov new_objid(const char *label, int value) 2794*ae771770SStanislav Sedov { 2795*ae771770SStanislav Sedov struct objid *s; 2796*ae771770SStanislav Sedov s = emalloc(sizeof(*s)); 2797*ae771770SStanislav Sedov s->label = label; 2798*ae771770SStanislav Sedov s->value = value; 2799*ae771770SStanislav Sedov s->next = NULL; 2800*ae771770SStanislav Sedov return s; 2801*ae771770SStanislav Sedov } 2802*ae771770SStanislav Sedov 2803*ae771770SStanislav Sedov static void 2804*ae771770SStanislav Sedov add_oid_to_tail(struct objid *head, struct objid *tail) 2805*ae771770SStanislav Sedov { 2806*ae771770SStanislav Sedov struct objid *o; 2807*ae771770SStanislav Sedov o = head; 2808*ae771770SStanislav Sedov while (o->next) 2809*ae771770SStanislav Sedov o = o->next; 2810*ae771770SStanislav Sedov o->next = tail; 2811*ae771770SStanislav Sedov } 2812*ae771770SStanislav Sedov 2813*ae771770SStanislav Sedov static Type * 2814*ae771770SStanislav Sedov new_type (Typetype tt) 2815*ae771770SStanislav Sedov { 2816*ae771770SStanislav Sedov Type *t = ecalloc(1, sizeof(*t)); 2817*ae771770SStanislav Sedov t->type = tt; 2818*ae771770SStanislav Sedov return t; 2819*ae771770SStanislav Sedov } 2820*ae771770SStanislav Sedov 2821*ae771770SStanislav Sedov static struct constraint_spec * 2822*ae771770SStanislav Sedov new_constraint_spec(enum ctype ct) 2823*ae771770SStanislav Sedov { 2824*ae771770SStanislav Sedov struct constraint_spec *c = ecalloc(1, sizeof(*c)); 2825*ae771770SStanislav Sedov c->ctype = ct; 2826*ae771770SStanislav Sedov return c; 2827*ae771770SStanislav Sedov } 2828*ae771770SStanislav Sedov 2829*ae771770SStanislav Sedov static void fix_labels2(Type *t, const char *prefix); 2830*ae771770SStanislav Sedov static void fix_labels1(struct memhead *members, const char *prefix) 2831*ae771770SStanislav Sedov { 2832*ae771770SStanislav Sedov Member *m; 2833*ae771770SStanislav Sedov 2834*ae771770SStanislav Sedov if(members == NULL) 2835*ae771770SStanislav Sedov return; 2836*ae771770SStanislav Sedov ASN1_TAILQ_FOREACH(m, members, members) { 2837*ae771770SStanislav Sedov if (asprintf(&m->label, "%s_%s", prefix, m->gen_name) < 0) 2838*ae771770SStanislav Sedov errx(1, "malloc"); 2839*ae771770SStanislav Sedov if (m->label == NULL) 2840*ae771770SStanislav Sedov errx(1, "malloc"); 2841*ae771770SStanislav Sedov if(m->type != NULL) 2842*ae771770SStanislav Sedov fix_labels2(m->type, m->label); 2843*ae771770SStanislav Sedov } 2844*ae771770SStanislav Sedov } 2845*ae771770SStanislav Sedov 2846*ae771770SStanislav Sedov static void fix_labels2(Type *t, const char *prefix) 2847*ae771770SStanislav Sedov { 2848*ae771770SStanislav Sedov for(; t; t = t->subtype) 2849*ae771770SStanislav Sedov fix_labels1(t->members, prefix); 2850*ae771770SStanislav Sedov } 2851*ae771770SStanislav Sedov 2852*ae771770SStanislav Sedov static void 2853*ae771770SStanislav Sedov fix_labels(Symbol *s) 2854*ae771770SStanislav Sedov { 2855*ae771770SStanislav Sedov char *p = NULL; 2856*ae771770SStanislav Sedov if (asprintf(&p, "choice_%s", s->gen_name) < 0 || p == NULL) 2857*ae771770SStanislav Sedov errx(1, "malloc"); 2858*ae771770SStanislav Sedov fix_labels2(s->type, p); 2859*ae771770SStanislav Sedov free(p); 2860*ae771770SStanislav Sedov } 2861*ae771770SStanislav Sedov 2862