(file) Return to cimmof_tab.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Compiler

   1 karl  1.38 //%2006////////////////////////////////////////////////////////////////////////
   2            //
   3            // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
   4            // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
   5            // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
   6            // IBM Corp.; EMC Corporation, The Open Group.
   7            // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
   8            // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
   9            // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
  10            // EMC Corporation; VERITAS Software Corporation; The Open Group.
  11            // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
  12            // EMC Corporation; Symantec Corporation; The Open Group.
  13            //
  14            // Permission is hereby granted, free of charge, to any person obtaining a copy
  15            // of this software and associated documentation files (the "Software"), to
  16            // deal in the Software without restriction, including without limitation the
  17            // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  18            // sell copies of the Software, and to permit persons to whom the Software is
  19            // furnished to do so, subject to the following conditions:
  20            // 
  21            // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
  22 karl  1.38 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
  23            // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
  24            // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  25            // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  26            // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  27            // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  28            // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  29            //
  30            //==============================================================================
  31 kumpf 1.34 /* A Bison parser, made by GNU Bison 1.875.  */
  32            
  33            /* Skeleton parser for Yacc-like parsing with Bison,
  34               Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
  35            
  36               This program is free software; you can redistribute it and/or modify
  37               it under the terms of the GNU General Public License as published by
  38               the Free Software Foundation; either version 2, or (at your option)
  39               any later version.
  40            
  41               This program is distributed in the hope that it will be useful,
  42               but WITHOUT ANY WARRANTY; without even the implied warranty of
  43               MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  44               GNU General Public License for more details.
  45            
  46               You should have received a copy of the GNU General Public License
  47               along with this program; if not, write to the Free Software
  48               Foundation, Inc., 59 Temple Place - Suite 330,
  49               Boston, MA 02111-1307, USA.  */
  50            
  51            /* As a special exception, when this file is copied by Bison into a
  52 kumpf 1.34    Bison output file, you may use that output file without restriction.
  53               This special exception was added by the Free Software Foundation
  54               in version 1.24 of Bison.  */
  55            
  56            /* Written by Richard Stallman by simplifying the original so called
  57               ``semantic'' parser.  */
  58            
  59            /* All symbols defined below should begin with yy or YY, to avoid
  60               infringing on user name space.  This should be done even for local
  61               variables, as they might otherwise be expanded by user macros.
  62               There are some unavoidable exceptions within include files to
  63               define necessary library symbols; they are noted "INFRINGES ON
  64               USER NAME SPACE" below.  */
  65            
  66            /* Identify Bison output.  */
  67            #define YYBISON 1
  68            
  69            /* Skeleton name.  */
  70            #define YYSKELETON_NAME "yacc.c"
  71            
  72            /* Pure parsers.  */
  73 kumpf 1.34 #define YYPURE 0
  74            
  75            /* Using locations.  */
  76            #define YYLSP_NEEDED 0
  77            
  78            /* If NAME_PREFIX is specified substitute the variables and functions
  79               names.  */
  80 mike  1.3  #define yyparse cimmof_parse
  81 kumpf 1.34 #define yylex   cimmof_lex
  82 mike  1.3  #define yyerror cimmof_error
  83 kumpf 1.34 #define yylval  cimmof_lval
  84            #define yychar  cimmof_char
  85 mike  1.3  #define yydebug cimmof_debug
  86            #define yynerrs cimmof_nerrs
  87 kumpf 1.34 
  88            
  89            /* Tokens.  */
  90            #ifndef YYTOKENTYPE
  91            # define YYTOKENTYPE
  92               /* Put the tokens into the symbol table, so that GDB and other debuggers
  93                  know about them.  */
  94               enum yytokentype {
  95                 TOK_ALIAS_IDENTIFIER = 258,
  96                 TOK_ANY = 259,
  97                 TOK_AS = 260,
  98                 TOK_ASSOCIATION = 261,
  99                 TOK_BINARY_VALUE = 262,
 100                 TOK_CHAR_VALUE = 263,
 101                 TOK_CLASS = 264,
 102                 TOK_COLON = 265,
 103                 TOK_COMMA = 266,
 104                 TOK_DISABLEOVERRIDE = 267,
 105                 TOK_DQUOTE = 268,
 106                 TOK_DT_BOOL = 269,
 107                 TOK_DT_CHAR16 = 270,
 108 kumpf 1.34      TOK_DT_CHAR8 = 271,
 109                 TOK_DT_DATETIME = 272,
 110                 TOK_DT_REAL32 = 273,
 111                 TOK_DT_REAL64 = 274,
 112                 TOK_DT_SINT16 = 275,
 113                 TOK_DT_SINT32 = 276,
 114                 TOK_DT_SINT64 = 277,
 115                 TOK_DT_SINT8 = 278,
 116                 TOK_DT_STR = 279,
 117                 TOK_DT_UINT16 = 280,
 118                 TOK_DT_UINT32 = 281,
 119                 TOK_DT_UINT64 = 282,
 120                 TOK_DT_UINT8 = 283,
 121                 TOK_ENABLEOVERRIDE = 284,
 122                 TOK_END_OF_FILE = 285,
 123                 TOK_EQUAL = 286,
 124                 TOK_FALSE = 287,
 125                 TOK_FLAVOR = 288,
 126                 TOK_HEX_VALUE = 289,
 127                 TOK_INCLUDE = 290,
 128                 TOK_INDICATION = 291,
 129 kumpf 1.34      TOK_INSTANCE = 292,
 130                 TOK_LEFTCURLYBRACE = 293,
 131                 TOK_LEFTPAREN = 294,
 132                 TOK_LEFTSQUAREBRACKET = 295,
 133                 TOK_METHOD = 296,
 134                 TOK_NULL_VALUE = 297,
 135                 TOK_OCTAL_VALUE = 298,
 136                 TOK_OF = 299,
 137                 TOK_PARAMETER = 300,
 138                 TOK_PERIOD = 301,
 139                 TOK_POSITIVE_DECIMAL_VALUE = 302,
 140                 TOK_PRAGMA = 303,
 141                 TOK_PROPERTY = 304,
 142                 TOK_QUALIFIER = 305,
 143                 TOK_REAL_VALUE = 306,
 144                 TOK_REF = 307,
 145                 TOK_REFERENCE = 308,
 146                 TOK_RESTRICTED = 309,
 147                 TOK_RIGHTCURLYBRACE = 310,
 148                 TOK_RIGHTPAREN = 311,
 149                 TOK_RIGHTSQUAREBRACKET = 312,
 150 kumpf 1.34      TOK_SCHEMA = 313,
 151                 TOK_SCOPE = 314,
 152                 TOK_SEMICOLON = 315,
 153                 TOK_SIGNED_DECIMAL_VALUE = 316,
 154                 TOK_SIMPLE_IDENTIFIER = 317,
 155                 TOK_STRING_VALUE = 318,
 156                 TOK_TOSUBCLASS = 319,
 157                 TOK_TRANSLATABLE = 320,
 158                 TOK_TRUE = 321,
 159                 TOK_UNEXPECTED_CHAR = 322
 160               };
 161            #endif
 162            #define TOK_ALIAS_IDENTIFIER 258
 163            #define TOK_ANY 259
 164            #define TOK_AS 260
 165            #define TOK_ASSOCIATION 261
 166            #define TOK_BINARY_VALUE 262
 167            #define TOK_CHAR_VALUE 263
 168            #define TOK_CLASS 264
 169            #define TOK_COLON 265
 170            #define TOK_COMMA 266
 171 kumpf 1.34 #define TOK_DISABLEOVERRIDE 267
 172            #define TOK_DQUOTE 268
 173            #define TOK_DT_BOOL 269
 174            #define TOK_DT_CHAR16 270
 175            #define TOK_DT_CHAR8 271
 176            #define TOK_DT_DATETIME 272
 177            #define TOK_DT_REAL32 273
 178            #define TOK_DT_REAL64 274
 179            #define TOK_DT_SINT16 275
 180            #define TOK_DT_SINT32 276
 181            #define TOK_DT_SINT64 277
 182            #define TOK_DT_SINT8 278
 183            #define TOK_DT_STR 279
 184            #define TOK_DT_UINT16 280
 185            #define TOK_DT_UINT32 281
 186            #define TOK_DT_UINT64 282
 187            #define TOK_DT_UINT8 283
 188            #define TOK_ENABLEOVERRIDE 284
 189            #define TOK_END_OF_FILE 285
 190            #define TOK_EQUAL 286
 191            #define TOK_FALSE 287
 192 kumpf 1.34 #define TOK_FLAVOR 288
 193            #define TOK_HEX_VALUE 289
 194            #define TOK_INCLUDE 290
 195            #define TOK_INDICATION 291
 196            #define TOK_INSTANCE 292
 197            #define TOK_LEFTCURLYBRACE 293
 198            #define TOK_LEFTPAREN 294
 199            #define TOK_LEFTSQUAREBRACKET 295
 200            #define TOK_METHOD 296
 201            #define TOK_NULL_VALUE 297
 202            #define TOK_OCTAL_VALUE 298
 203            #define TOK_OF 299
 204            #define TOK_PARAMETER 300
 205            #define TOK_PERIOD 301
 206            #define TOK_POSITIVE_DECIMAL_VALUE 302
 207            #define TOK_PRAGMA 303
 208            #define TOK_PROPERTY 304
 209            #define TOK_QUALIFIER 305
 210            #define TOK_REAL_VALUE 306
 211            #define TOK_REF 307
 212            #define TOK_REFERENCE 308
 213 kumpf 1.34 #define TOK_RESTRICTED 309
 214            #define TOK_RIGHTCURLYBRACE 310
 215            #define TOK_RIGHTPAREN 311
 216            #define TOK_RIGHTSQUAREBRACKET 312
 217            #define TOK_SCHEMA 313
 218            #define TOK_SCOPE 314
 219            #define TOK_SEMICOLON 315
 220            #define TOK_SIGNED_DECIMAL_VALUE 316
 221            #define TOK_SIMPLE_IDENTIFIER 317
 222            #define TOK_STRING_VALUE 318
 223            #define TOK_TOSUBCLASS 319
 224            #define TOK_TRANSLATABLE 320
 225            #define TOK_TRUE 321
 226            #define TOK_UNEXPECTED_CHAR 322
 227            
 228            
 229            
 230            
 231            /* Copy the first part of user declarations.  */
 232            #line 29 "cimmof.y"
 233            
 234 mike  1.3    /* Flex grammar created from CIM Specification Version 2.2 Appendix A */
 235            
 236              /*
 237                 Note the following implementation details:
 238            
 239                   1. The MOF specification has a production of type assocDeclaration,
 240                   but an association is just a type of classDeclaration with a few
 241                   special rules.  At least for the first pass, I'm treating an
 242                   associationDeclaration as a classDeclaration and applying its
 243                   syntactical rules outside of the grammar definition.
 244            
 245                   2. Same with the indicationDeclaration.  It appears to be a normal
 246                   classDeclaration with the INDICATION qualifier and no special
 247                   syntactical rules.
 248            
 249                   3. The Parser uses String objects throughout to represent
 250                   character data.  However, the tokenizer underneath is probably
 251                   working with 8-bit chars.  If we later use an extended character
 252                   compatible tokenizer, I anticipate NO CHANGE to this parser.
 253            
 254                   4. Besides the tokenizer, this parser uses 2 sets of outside
 255 mike  1.3         services:
 256                      1)Class valueFactory.  This has a couple of static methods
 257            	  that assist in creating CIMValue objects from Strings.
 258            	  2)Class cimmofParser.  This has a wide variety of methods
 259            	  that fall into these catagories:
 260                        a) Interfaces to the Repository.  You call cimmofParser::
 261                        methods to query and store compiled CIM elements.
 262            	    b) Error handling.
 263                        c) Data format conversions.
 264                        d) Tokenizer manipulation
 265                        e) Pragma handling
 266                        f) Alias Handling
 267              */
 268            
 269 e.boden 1.30 
 270 mike    1.3  #define YYSTACKSIZE 2000
 271              
 272              #include <cstdlib>
 273 carson.hovey 1.33 #if !defined(PEGASUS_PLATFORM_ZOS_ZSERIES_IBM) && !defined(__OS400__) && !defined(PEGASUS_OS_VMS)
 274 dudhe.girish 1.28 #if defined(PEGASUS_PLATFORM_DARWIN_PPC_GNU)
 275                   #include <sys/malloc.h>
 276                   #else
 277 mike         1.3  #include <malloc.h>
 278 dudhe.girish 1.28 #endif
 279 karl         1.8  #endif
 280 mike         1.3  #include <cstdio>
 281                   #include <cstring>
 282                   #include <Pegasus/Common/String.h>
 283 kumpf        1.16 #include <Pegasus/Common/CIMName.h>
 284 mike         1.3  #include "cimmofParser.h"
 285                   #include "valueFactory.h"
 286                   #include "memobjs.h"
 287                   #include "qualifierList.h"
 288                   #include "objname.h"
 289                   
 290 kumpf        1.34 //include any useful debugging stuff here
 291 e.boden      1.30 
 292 karl         1.25 /* Debugging the parser.  Debugging is provided through
 293                      1. debug functions in Bison that are controlled by a compile time
 294                         flag (YYDEBUG) and a runtime flag (yydebug) which is redefined
 295                         to cimmof_debug.
 296                      2. Debug functions defined through YACCTRACE, a macro defined
 297                         in cimmofparser.h and turned on and off manually.
 298                      All debugging must be turned on manually at this point by
 299                      setting the YYDEBUG compile flag and also setting YACCTRACE.
 300                      ATTN: TODO: automate the debug information flags.
 301                   */
 302 kumpf        1.34 // Enable this define to compie Bison/Yacc tracing
 303                   // ATTN: p3 03092003 ks Enabling this flag currently causes a compile error
 304 karl         1.25 
 305 e.boden      1.30 #define YYDEBUG 1
 306 kumpf        1.34 //static int cimmof_debug;
 307 karl         1.25 
 308 kumpf        1.34 //extern cimmofParser g_cimmofParser;
 309 mike         1.3  
 310 e.boden      1.30 extern int   cimmof_lex(void);
 311                   extern int   cimmof_error(...);
 312 mike         1.3  extern char *cimmof_text;
 313 e.boden      1.30 extern void  cimmof_yy_less(int n);
 314                   extern int   cimmof_leng;
 315                   
 316 mike         1.3  
 317                   /* ------------------------------------------------------------------- */
 318                   /* These globals provide continuity between various pieces of a        */
 319                   /* declaration.  They are usually interpreted as "these modifiers were */
 320                   /* encountered and need to be applied to the finished object".  For    */
 321                   /* example, qualifiers are accumulated in g_qualifierList[] as they    */
 322                   /* encountered, then applied to the production they qualify when it    */
 323                   /* is completed.                                                       */
 324                   /* ------------------------------------------------------------------- */
 325 kumpf        1.18   CIMFlavor g_flavor = CIMFlavor (CIMFlavor::NONE);
 326                     CIMScope g_scope = CIMScope ();
 327 kumpf        1.34   //ATTN: BB 2001 BB P1 - Fixed size qualifier list max 20. Make larger or var
 328 karl         1.25   qualifierList g_qualifierList(20);
 329 mike         1.3    CIMMethod *g_currentMethod = 0;
 330                     CIMClass *g_currentClass = 0;
 331                     CIMInstance *g_currentInstance = 0;
 332 mike         1.37   String g_currentAliasRef;  // Alias reference
 333                     String g_currentAliasDecl; // Alias declaration
 334 kumpf        1.16   CIMName g_referenceClassName = CIMName();
 335 kumpf        1.34   Array<CIMKeyBinding> g_KeyBindingArray; // it gets created empty
 336 kumpf        1.10   TYPED_INITIALIZER_VALUE g_typedInitializerValue; 
 337 mike         1.3  
 338                   /* ------------------------------------------------------------------- */
 339                   /* Pragmas, except for the Include pragma, are not handled yet    */
 340                   /* I don't understand them, so it may be a while before they are       */ 
 341                   /* ------------------------------------------------------------------- */
 342                     struct pragma {
 343                       String name;
 344                       String value;
 345                     };
 346                   
 347                   /* ---------------------------------------------------------------- */
 348                   /* Use our general wrap manager to handle end-of-file               */
 349                   /* ---------------------------------------------------------------- */
 350                   extern "C" {
 351                   int
 352                   cimmof_wrap() {
 353                     return cimmofParser::Instance()->wrapCurrentBuffer();
 354                   }
 355                   }
 356                   
 357                   /* ---------------------------------------------------------------- */
 358 mike         1.3  /* Pass errors to our general log manager.                          */
 359                   /* ---------------------------------------------------------------- */
 360                   void
 361 kumpf        1.13 cimmof_error(const char *msg) {
 362 mike         1.3    cimmofParser::Instance()->log_parse_error(cimmof_text, msg);
 363 kumpf        1.34   // printf("Error: %s\n", msg);
 364 mike         1.3  }
 365                   
 366 jim.wunderlich 1.36 static void MOF_error(const char * str, const char * S);
 367                     static void MOF_trace(const char* str);
 368                     static void MOF_trace2(const char * str, const char * S);
 369                     
 370 kumpf          1.34 
 371                     
 372                     /* Enabling traces.  */
 373                     #ifndef YYDEBUG
 374                     # define YYDEBUG 0
 375                     #endif
 376                     
 377                     /* Enabling verbose error messages.  */
 378                     #ifdef YYERROR_VERBOSE
 379                     # undef YYERROR_VERBOSE
 380                     # define YYERROR_VERBOSE 1
 381                     #else
 382                     # define YYERROR_VERBOSE 0
 383                     #endif
 384                     
 385                     #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
 386 jim.wunderlich 1.36 #line 168 "cimmof.y"
 387 kumpf          1.34 typedef union YYSTYPE {
 388                       //char                     *strval;
 389 e.boden        1.30   CIMClass                 *mofclass;
 390                       CIMFlavor                *flavor;
 391                       CIMInstance              *instance;
 392                       CIMKeyBinding            *keybinding;
 393                       CIMMethod                *method;
 394                       CIMName                  *cimnameval;
 395                       CIMObjectPath            *reference;
 396                       CIMProperty              *property;
 397                       CIMQualifier             *qualifier;
 398                       CIMQualifierDecl         *mofqualifier;
 399                       CIMScope                 *scope;
 400                       CIMType                   datatype;
 401                       CIMValue                 *value;
 402                       int                       ival;
 403                       modelPath                *modelpath;
 404                       String                   *strptr;
 405                       String                   *strval;
 406                       struct pragma            *pragma;
 407                       TYPED_INITIALIZER_VALUE  *typedinitializer;
 408 mike           1.3  } YYSTYPE;
 409 kumpf          1.34 /* Line 191 of yacc.c.  */
 410 jim.wunderlich 1.36 #line 380 "cimmoftemp"
 411 kumpf          1.34 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 412                     # define YYSTYPE_IS_DECLARED 1
 413                     # define YYSTYPE_IS_TRIVIAL 1
 414                     #endif
 415                     
 416                     
 417                     
 418                     /* Copy the second part of user declarations.  */
 419                     
 420                     
 421                     /* Line 214 of yacc.c.  */
 422 jim.wunderlich 1.36 #line 392 "cimmoftemp"
 423 kumpf          1.34 
 424                     #if ! defined (yyoverflow) || YYERROR_VERBOSE
 425                     
 426                     /* The parser invokes alloca or malloc; define the necessary symbols.  */
 427                     
 428                     # if YYSTACK_USE_ALLOCA
 429                     #  define YYSTACK_ALLOC alloca
 430                     # else
 431                     #  ifndef YYSTACK_USE_ALLOCA
 432                     #   if defined (alloca) || defined (_ALLOCA_H)
 433                     #    define YYSTACK_ALLOC alloca
 434                     #   else
 435                     #    ifdef __GNUC__
 436                     #     define YYSTACK_ALLOC __builtin_alloca
 437                     #    endif
 438                     #   endif
 439                     #  endif
 440                     # endif
 441                     
 442                     # ifdef YYSTACK_ALLOC
 443                        /* Pacify GCC's `empty if-body' warning. */
 444 kumpf          1.34 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 445                     # else
 446                     #  if defined (__STDC__) || defined (__cplusplus)
 447                     #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
 448                     #   define YYSIZE_T size_t
 449                     #  endif
 450                     #  define YYSTACK_ALLOC malloc
 451                     #  define YYSTACK_FREE free
 452                     # endif
 453                     #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
 454                     
 455                     
 456                     #if (! defined (yyoverflow) \
 457                          && (! defined (__cplusplus) \
 458                     	 || (YYSTYPE_IS_TRIVIAL)))
 459                     
 460                     /* A type that is properly aligned for any stack member.  */
 461                     union yyalloc
 462                     {
 463                       short yyss;
 464                       YYSTYPE yyvs;
 465 kumpf          1.34   };
 466                     
 467                     /* The size of the maximum gap between one aligned stack and the next.  */
 468                     # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
 469                     
 470                     /* The size of an array large to enough to hold all stacks, each with
 471                        N elements.  */
 472                     # define YYSTACK_BYTES(N) \
 473                          ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
 474                           + YYSTACK_GAP_MAXIMUM)
 475                     
 476                     /* Copy COUNT objects from FROM to TO.  The source and destination do
 477                        not overlap.  */
 478                     # ifndef YYCOPY
 479                     #  if 1 < __GNUC__
 480                     #   define YYCOPY(To, From, Count) \
 481                           __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
 482                     #  else
 483                     #   define YYCOPY(To, From, Count)		\
 484                           do					\
 485                     	{					\
 486 kumpf          1.34 	  register YYSIZE_T yyi;		\
 487                     	  for (yyi = 0; yyi < (Count); yyi++)	\
 488                     	    (To)[yyi] = (From)[yyi];		\
 489                     	}					\
 490                           while (0)
 491                     #  endif
 492                     # endif
 493                     
 494                     /* Relocate STACK from its old location to the new one.  The
 495                        local variables YYSIZE and YYSTACKSIZE give the old and new number of
 496                        elements in the stack, and YYPTR gives the new location of the
 497                        stack.  Advance YYPTR to a properly aligned location for the next
 498                        stack.  */
 499                     # define YYSTACK_RELOCATE(Stack)					\
 500                         do									\
 501                           {									\
 502                     	YYSIZE_T yynewbytes;						\
 503                     	YYCOPY (&yyptr->Stack, Stack, yysize);				\
 504                     	Stack = &yyptr->Stack;						\
 505                     	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
 506                     	yyptr += yynewbytes / sizeof (*yyptr);				\
 507 kumpf          1.34       }									\
 508                         while (0)
 509                     
 510                     #endif
 511                     
 512                     #if defined (__STDC__) || defined (__cplusplus)
 513                        typedef signed char yysigned_char;
 514                     #else
 515                        typedef short yysigned_char;
 516                     #endif
 517                     
 518                     /* YYFINAL -- State number of the termination state. */
 519                     #define YYFINAL  32
 520                     /* YYLAST -- Last index in YYTABLE.  */
 521                     #define YYLAST   292
 522                     
 523                     /* YYNTOKENS -- Number of terminals. */
 524                     #define YYNTOKENS  68
 525                     /* YYNNTS -- Number of nonterminals. */
 526                     #define YYNNTS  84
 527                     /* YYNRULES -- Number of rules. */
 528 kumpf          1.34 #define YYNRULES  160
 529                     /* YYNRULES -- Number of states. */
 530                     #define YYNSTATES  239
 531                     
 532                     /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 533                     #define YYUNDEFTOK  2
 534                     #define YYMAXUTOK   322
 535                     
 536                     #define YYTRANSLATE(YYX) 						\
 537                       ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 538                     
 539                     /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
 540                     static const unsigned char yytranslate[] =
 541                     {
 542                            0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 543                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 544                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 545                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 546                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 547                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 548                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 549 kumpf          1.34        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 550                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 551                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 552                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 553                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 554                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 555                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 556                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 557                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 558                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 559                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 560                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 561                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 562                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 563                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 564                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 565                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 566                            2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 567                            2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
 568                            5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
 569                           15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
 570 kumpf          1.34       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
 571                           35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
 572                           45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
 573                           55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
 574                           65,    66,    67
 575                     };
 576                     
 577                     #if YYDEBUG
 578                     /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
 579                        YYRHS.  */
 580                     static const unsigned short yyprhs[] =
 581                     {
 582                            0,     0,     3,     5,     8,     9,    11,    13,    15,    17,
 583                           20,    26,    28,    31,    32,    37,    41,    43,    46,    48,
 584                           50,    52,    57,    60,    64,    66,    68,    70,    74,    75,
 585                           80,    82,    84,    88,    93,    95,   102,   104,   106,   109,
 586                          110,   113,   115,   117,   121,   124,   125,   128,   129,   131,
 587                          133,   135,   137,   139,   141,   143,   145,   149,   151,   153,
 588                          155,   157,   159,   161,   163,   165,   167,   169,   171,   173,
 589                          175,   177,   179,   182,   184,   188,   191,   193,   195,   200,
 590                          202,   205,   206,   208,   212,   214,   218,   222,   224,   227,
 591 kumpf          1.34      228,   230,   233,   239,   244,   246,   249,   255,   257,   259,
 592                          265,   267,   273,   280,   285,   289,   293,   295,   299,   301,
 593                          303,   305,   307,   309,   311,   313,   315,   317,   322,   323,
 594                          326,   328,   332,   334,   336,   338,   340,   342,   344,   345,
 595                          347,   350,   352,   354,   356,   358,   360,   362,   364,   366,
 596                          368,   370,   372,   374,   376,   378,   380,   382,   386,   387,
 597                          389,   391,   395,   399,   401,   403,   407,   411,   413,   414,
 598                          416
 599                     };
 600                     
 601                     /* YYRHS -- A `-1'-separated list of the rules' RHS. */
 602                     static const short yyrhs[] =
 603                     {
 604                           69,     0,    -1,    70,    -1,    71,    70,    -1,    -1,   125,
 605                           -1,   129,    -1,    72,    -1,   120,    -1,    73,    76,    -1,
 606                          144,     9,    74,   118,    75,    -1,    62,    -1,    10,    74,
 607                           -1,    -1,    38,    77,    55,    60,    -1,    38,    55,    60,
 608                           -1,    78,    -1,    77,    78,    -1,    87,    -1,    79,    -1,
 609                           90,    -1,   144,    80,    81,    82,    -1,   141,    83,    -1,
 610                           39,    84,    56,    -1,    60,    -1,    62,    -1,    85,    -1,
 611                           84,    11,    85,    -1,    -1,   144,    86,    95,    97,    -1,
 612 kumpf          1.34      141,    -1,    94,    -1,   144,    88,    89,    -1,   141,    96,
 613                           97,    98,    -1,    60,    -1,   144,    91,    52,    92,    93,
 614                           60,    -1,    62,    -1,    62,    -1,    31,   107,    -1,    -1,
 615                           74,    52,    -1,    62,    -1,    62,    -1,    40,    47,    57,
 616                           -1,    40,    57,    -1,    -1,    31,   100,    -1,    -1,   102,
 617                           -1,   108,    -1,   109,    -1,   103,    -1,    42,    -1,   108,
 618                           -1,   109,    -1,   102,    -1,   101,    11,   102,    -1,   103,
 619                           -1,    42,    -1,   104,    -1,    51,    -1,     8,    -1,   106,
 620                           -1,   105,    -1,    47,    -1,    61,    -1,    43,    -1,    34,
 621                           -1,     7,    -1,    32,    -1,    66,    -1,   107,    -1,   106,
 622                          107,    -1,    63,    -1,    38,   101,    55,    -1,    38,    55,
 623                           -1,   110,    -1,   111,    -1,    13,   112,   114,    13,    -1,
 624                          119,    -1,   113,    10,    -1,    -1,   107,    -1,    74,    46,
 625                          115,    -1,   116,    -1,   115,    11,   116,    -1,   117,    31,
 626                           99,    -1,    62,    -1,     5,   119,    -1,    -1,     3,    -1,
 627                          121,   122,    -1,   144,    37,    44,    74,   118,    -1,    38,
 628                          123,    55,    60,    -1,   124,    -1,   123,   124,    -1,   144,
 629                           62,    31,   100,    60,    -1,   126,    -1,   128,    -1,    48,
 630                           35,    39,   127,    56,    -1,   107,    -1,    48,   150,    39,
 631                          151,    56,    -1,    50,   148,   130,   131,   135,    60,    -1,
 632                           10,   141,    97,    98,    -1,   132,   133,    56,    -1,    11,
 633 kumpf          1.34       59,    39,    -1,   134,    -1,   133,    11,   134,    -1,     9,
 634                           -1,    58,    -1,     6,    -1,    36,    -1,    49,    -1,    53,
 635                           -1,    41,    -1,    45,    -1,     4,    -1,    11,   136,   137,
 636                           56,    -1,    -1,    33,    39,    -1,   138,    -1,   137,    11,
 637                          138,    -1,    29,    -1,    12,    -1,    54,    -1,    64,    -1,
 638                           65,    -1,   140,    -1,    -1,   138,    -1,   140,   138,    -1,
 639                          142,    -1,   143,    -1,    24,    -1,    14,    -1,    17,    -1,
 640                           28,    -1,    23,    -1,    25,    -1,    20,    -1,    26,    -1,
 641                           21,    -1,    27,    -1,    22,    -1,    15,    -1,    18,    -1,
 642                           19,    -1,   145,   146,    57,    -1,    -1,    40,    -1,   147,
 643                           -1,   146,    11,   147,    -1,   148,   149,   139,    -1,    62,
 644                           -1,   134,    -1,    39,   103,    56,    -1,    39,    42,    56,
 645                           -1,   108,    -1,    -1,    62,    -1,    63,    -1
 646                     };
 647                     
 648                     /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 649                     static const unsigned short yyrline[] =
 650                     {
 651 jim.wunderlich 1.36        0,   311,   311,   314,   315,   319,   320,   322,   324,   337,
 652                          345,   365,   368,   369,   372,   373,   376,   377,   380,   383,
 653                          386,   403,   414,   433,   436,   439,   445,   446,   447,   450,
 654                          476,   477,   492,   506,   522,   537,   554,   557,   560,   561,
 655                          564,   568,   571,   574,   579,   580,   583,   584,   591,   592,
 656                          593,   599,   605,   611,   617,   627,   629,   642,   643,   646,
 657                          647,   648,   649,   650,   653,   654,   655,   658,   661,   666,
 658                          667,   670,   671,   677,   709,   711,   715,   716,   719,   736,
 659                          763,   765,   768,   771,   777,   778,   781,   791,   794,   801,
 660                          807,   818,   838,   855,   860,   861,   868,   925,   929,   935,
 661                          942,   945,   963,   973,   981,   984,   988,   989,   994,   996,
 662                          997,   998,  1000,  1001,  1002,  1003,  1004,  1008,  1010,  1016,
 663                         1019,  1020,  1032,  1034,  1035,  1036,  1037,  1040,  1041,  1044,
 664                         1045,  1049,  1050,  1051,  1052,  1053,  1056,  1057,  1058,  1059,
 665                         1060,  1061,  1062,  1063,  1064,  1067,  1068,  1080,  1081,  1087,
 666                         1095,  1096,  1100,  1116,  1118,  1124,  1130,  1136,  1142,  1149,
 667                         1152
 668 mike           1.3  };
 669 kumpf          1.34 #endif
 670                     
 671                     #if YYDEBUG || YYERROR_VERBOSE
 672                     /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
 673                        First, the terminals, then, starting at YYNTOKENS, nonterminals. */
 674                     static const char *const yytname[] =
 675                     {
 676                       "$end", "error", "$undefined", "TOK_ALIAS_IDENTIFIER", "TOK_ANY", 
 677                       "TOK_AS", "TOK_ASSOCIATION", "TOK_BINARY_VALUE", "TOK_CHAR_VALUE", 
 678                       "TOK_CLASS", "TOK_COLON", "TOK_COMMA", "TOK_DISABLEOVERRIDE", 
 679                       "TOK_DQUOTE", "TOK_DT_BOOL", "TOK_DT_CHAR16", "TOK_DT_CHAR8", 
 680                       "TOK_DT_DATETIME", "TOK_DT_REAL32", "TOK_DT_REAL64", "TOK_DT_SINT16", 
 681                       "TOK_DT_SINT32", "TOK_DT_SINT64", "TOK_DT_SINT8", "TOK_DT_STR", 
 682                       "TOK_DT_UINT16", "TOK_DT_UINT32", "TOK_DT_UINT64", "TOK_DT_UINT8", 
 683                       "TOK_ENABLEOVERRIDE", "TOK_END_OF_FILE", "TOK_EQUAL", "TOK_FALSE", 
 684                       "TOK_FLAVOR", "TOK_HEX_VALUE", "TOK_INCLUDE", "TOK_INDICATION", 
 685                       "TOK_INSTANCE", "TOK_LEFTCURLYBRACE", "TOK_LEFTPAREN", 
 686                       "TOK_LEFTSQUAREBRACKET", "TOK_METHOD", "TOK_NULL_VALUE", 
 687                       "TOK_OCTAL_VALUE", "TOK_OF", "TOK_PARAMETER", "TOK_PERIOD", 
 688                       "TOK_POSITIVE_DECIMAL_VALUE", "TOK_PRAGMA", "TOK_PROPERTY", 
 689                       "TOK_QUALIFIER", "TOK_REAL_VALUE", "TOK_REF", "TOK_REFERENCE", 
 690 kumpf          1.34   "TOK_RESTRICTED", "TOK_RIGHTCURLYBRACE", "TOK_RIGHTPAREN", 
 691                       "TOK_RIGHTSQUAREBRACKET", "TOK_SCHEMA", "TOK_SCOPE", "TOK_SEMICOLON", 
 692                       "TOK_SIGNED_DECIMAL_VALUE", "TOK_SIMPLE_IDENTIFIER", "TOK_STRING_VALUE", 
 693                       "TOK_TOSUBCLASS", "TOK_TRANSLATABLE", "TOK_TRUE", "TOK_UNEXPECTED_CHAR", 
 694                       "$accept", "mofSpec", "mofProductions", "mofProduction", 
 695                       "classDeclaration", "classHead", "className", "superClass", "classBody", 
 696                       "classFeatures", "classFeature", "methodDeclaration", "methodHead", 
 697                       "methodBody", "methodEnd", "methodName", "parameters", "parameter", 
 698                       "parameterType", "propertyDeclaration", "propertyBody", "propertyEnd", 
 699                       "referenceDeclaration", "referencedObject", "referenceName", 
 700                       "referencePath", "objectRef", "parameterName", "propertyName", "array", 
 701                       "typedDefaultValue", "initializer", "typedInitializer", 
 702                       "constantValues", "constantValue", "nonNullConstantValue", 
 703                       "integerValue", "booleanValue", "stringValues", "stringValue", 
 704                       "arrayInitializer", "referenceInitializer", "objectHandle", 
 705                       "aliasInitializer", "namespaceHandleRef", "namespaceHandle", 
 706                       "modelPath", "keyValuePairList", "keyValuePair", "keyValuePairName", 
 707                       "alias", "aliasIdentifier", "instanceDeclaration", "instanceHead", 
 708                       "instanceBody", "valueInitializers", "valueInitializer", 
 709                       "compilerDirective", "compilerDirectiveInclude", "fileName", 
 710                       "compilerDirectivePragma", "qualifierDeclaration", "qualifierValue", 
 711 kumpf          1.34   "scope", "scope_begin", "metaElements", "metaElement", "defaultFlavor", 
 712                       "flavorHead", "explicitFlavors", "explicitFlavor", "flavor", 
 713                       "overrideFlavors", "dataType", "intDataType", "realDataType", 
 714                       "qualifierList", "qualifierListBegin", "qualifiers", "qualifier", 
 715                       "qualifierName", "typedQualifierParameter", "pragmaName", "pragmaVal", 0
 716 mike           1.3  };
 717 kumpf          1.34 #endif
 718                     
 719                     # ifdef YYPRINT
 720                     /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
 721                        token YYLEX-NUM.  */
 722                     static const unsigned short yytoknum[] =
 723                     {
 724                            0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
 725                          265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
 726                          275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
 727                          285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
 728                          295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
 729                          305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
 730                          315,   316,   317,   318,   319,   320,   321,   322
 731                     };
 732                     # endif
 733                     
 734                     /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 735                     static const unsigned char yyr1[] =
 736                     {
 737                            0,    68,    69,    70,    70,    71,    71,    71,    71,    72,
 738 kumpf          1.34       73,    74,    75,    75,    76,    76,    77,    77,    78,    78,
 739                           78,    79,    80,    81,    82,    83,    84,    84,    84,    85,
 740                           86,    86,    87,    88,    89,    90,    91,    92,    93,    93,
 741                           94,    95,    96,    97,    97,    97,    98,    98,    99,    99,
 742                           99,   100,   100,   100,   100,   101,   101,   102,   102,   103,
 743                          103,   103,   103,   103,   104,   104,   104,   104,   104,   105,
 744                          105,   106,   106,   107,   108,   108,   109,   109,   110,   111,
 745                          112,   112,   113,   114,   115,   115,   116,   117,   118,   118,
 746                          119,   120,   121,   122,   123,   123,   124,   125,   125,   126,
 747                          127,   128,   129,   130,   131,   132,   133,   133,   134,   134,
 748                          134,   134,   134,   134,   134,   134,   134,   135,   135,   136,
 749                          137,   137,   138,   138,   138,   138,   138,   139,   139,   140,
 750                          140,   141,   141,   141,   141,   141,   142,   142,   142,   142,
 751                          142,   142,   142,   142,   142,   143,   143,   144,   144,   145,
 752                          146,   146,   147,   148,   148,   149,   149,   149,   149,   150,
 753                          151
 754 mike           1.3  };
 755 kumpf          1.34 
 756                     /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 757                     static const unsigned char yyr2[] =
 758                     {
 759                            0,     2,     1,     2,     0,     1,     1,     1,     1,     2,
 760                            5,     1,     2,     0,     4,     3,     1,     2,     1,     1,
 761                            1,     4,     2,     3,     1,     1,     1,     3,     0,     4,
 762                            1,     1,     3,     4,     1,     6,     1,     1,     2,     0,
 763                            2,     1,     1,     3,     2,     0,     2,     0,     1,     1,
 764                            1,     1,     1,     1,     1,     1,     3,     1,     1,     1,
 765                            1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 766                            1,     1,     2,     1,     3,     2,     1,     1,     4,     1,
 767                            2,     0,     1,     3,     1,     3,     3,     1,     2,     0,
 768                            1,     2,     5,     4,     1,     2,     5,     1,     1,     5,
 769                            1,     5,     6,     4,     3,     3,     1,     3,     1,     1,
 770                            1,     1,     1,     1,     1,     1,     1,     4,     0,     2,
 771                            1,     3,     1,     1,     1,     1,     1,     1,     0,     1,
 772                            2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 773                            1,     1,     1,     1,     1,     1,     1,     3,     0,     1,
 774                            1,     3,     3,     1,     1,     3,     3,     1,     0,     1,
 775                            1
 776 mike           1.3  };
 777 kumpf          1.34 
 778                     /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
 779                        STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
 780                        means the default is an error.  */
 781                     static const unsigned char yydefact[] =
 782                     {
 783                          148,   149,     0,     0,     0,     2,   148,     7,     0,     8,
 784                            0,     5,    97,    98,     6,     0,     0,     0,   159,     0,
 785                          116,   110,   108,   111,   114,   115,   112,   113,   109,   153,
 786                          154,     0,     1,     3,   148,     9,   148,    91,     0,     0,
 787                            0,   150,   158,     0,     0,     0,     0,     0,   148,    16,
 788                           19,    18,    20,     0,   148,    94,     0,    11,    89,     0,
 789                            0,   147,     0,     0,   157,   128,    73,   100,     0,   160,
 790                            0,   134,   144,   135,   145,   146,   139,   141,   143,   137,
 791                          133,   138,   140,   142,   136,    45,   131,   132,     0,   118,
 792                            0,    15,     0,    17,    36,     0,     0,     0,     0,     0,
 793                           95,     0,     0,    13,    89,   151,    68,    61,    69,    67,
 794                           58,    66,    64,    60,    75,    65,    70,     0,    55,    57,
 795                           59,    63,    62,    71,     0,     0,   123,   122,   124,   125,
 796                          126,   129,   152,   127,    99,   101,     0,    47,     0,     0,
 797                            0,     0,   106,    14,   148,     0,    34,    32,     0,    42,
 798 kumpf          1.34       22,    45,    93,     0,    90,    88,     0,    10,    92,     0,
 799                           74,    72,   156,   155,   130,     0,    44,     0,   103,   105,
 800                            0,     0,   102,     0,   104,     0,    26,     0,    24,    21,
 801                           37,    39,    47,    81,    52,     0,    51,    53,    54,    76,
 802                           77,    79,    12,    56,    43,    46,   119,     0,   120,   107,
 803                          148,    23,     0,     0,    31,    30,     0,     0,    33,    82,
 804                            0,     0,    96,     0,   117,    27,    40,    41,    45,    38,
 805                           35,     0,     0,    80,   121,    29,     0,    78,    87,    83,
 806                           84,     0,     0,     0,    85,    86,    48,    49,    50
 807 mike           1.3  };
 808 kumpf          1.34 
 809                     /* YYDEFGOTO[NTERM-NUM]. */
 810                     static const short yydefgoto[] =
 811                     {
 812                           -1,     4,     5,     6,     7,     8,    58,   157,    35,    48,
 813                           49,    50,    95,   145,   179,   150,   175,   176,   203,    51,
 814                           96,   147,    52,    97,   181,   207,   204,   218,   151,   137,
 815                          168,   235,   185,   117,   118,   119,   120,   121,   122,   123,
 816                          187,   188,   189,   190,   210,   211,   222,   229,   230,   231,
 817                          103,   191,     9,    10,    37,    54,    55,    11,    12,    68,
 818                           13,    14,    46,    89,    90,   141,    30,   140,   171,   197,
 819                          131,   132,   133,    85,    86,    87,    15,    16,    40,    41,
 820                           42,    65,    19,    70
 821 mike           1.3  };
 822 kumpf          1.34 
 823                     /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
 824                        STATE-NUM.  */
 825                     #define YYPACT_NINF -151
 826                     static const short yypact[] =
 827                     {
 828                           14,  -151,   -17,   169,    27,  -151,    14,  -151,   -10,  -151,
 829                           -8,  -151,  -151,  -151,  -151,    11,   169,    -7,  -151,    -6,
 830                         -151,  -151,  -151,  -151,  -151,  -151,  -151,  -151,  -151,  -151,
 831                         -151,    26,  -151,  -151,    -5,  -151,    -3,  -151,   -13,    17,
 832                            0,  -151,   -14,    -4,     3,   245,    42,     7,    45,  -151,
 833                         -151,  -151,  -151,   215,    47,  -151,    24,  -151,    50,   -13,
 834                          169,  -151,    72,   105,  -151,    95,  -151,  -151,    33,  -151,
 835                           35,  -151,  -151,  -151,  -151,  -151,  -151,  -151,  -151,  -151,
 836                         -151,  -151,  -151,  -151,  -151,    53,  -151,  -151,    36,    87,
 837                          170,  -151,    39,  -151,  -151,    64,    48,    57,    43,    56,
 838                         -151,    86,   115,   110,    50,  -151,  -151,  -151,  -151,  -151,
 839                         -151,  -151,  -151,  -151,  -151,  -151,  -151,    29,  -151,  -151,
 840                         -151,  -151,    -4,  -151,    65,    69,  -151,  -151,  -151,  -151,
 841                         -151,  -151,  -151,    95,  -151,  -151,   -28,    97,    91,    93,
 842                           71,    12,  -151,  -151,     2,    74,  -151,  -151,    70,   101,
 843 kumpf          1.34     -151,    53,  -151,     9,  -151,  -151,   -13,  -151,  -151,   138,
 844                         -151,  -151,  -151,  -151,  -151,    79,  -151,     9,  -151,  -151,
 845                          102,    95,  -151,   170,  -151,    15,  -151,   230,  -151,  -151,
 846                         -151,   112,    97,    -4,  -151,    84,  -151,  -151,  -151,  -151,
 847                         -151,  -151,  -151,  -151,  -151,  -151,  -151,    20,  -151,  -151,
 848                           -3,  -151,    98,    89,  -151,  -151,    -4,    94,  -151,  -151,
 849                          -13,   143,  -151,    95,  -151,  -151,  -151,  -151,    53,  -151,
 850                         -151,   111,   145,  -151,  -151,  -151,    99,  -151,  -151,   151,
 851                         -151,   132,    99,    31,  -151,  -151,  -151,  -151,  -151
 852 mike           1.3  };
 853 kumpf          1.34 
 854                     /* YYPGOTO[NTERM-NUM].  */
 855                     static const short yypgoto[] =
 856                     {
 857                         -151,  -151,   158,  -151,  -151,  -151,   -55,  -151,  -151,  -151,
 858                          121,  -151,  -151,  -151,  -151,  -151,  -151,   -23,  -151,  -151,
 859                         -151,  -151,  -151,  -151,  -151,  -151,  -151,  -151,  -151,  -141,
 860                            1,  -151,    19,  -151,  -150,   -57,  -151,  -151,  -151,   -41,
 861                          -42,   -51,  -151,  -151,  -151,  -151,  -151,  -151,   -45,  -151,
 862                           80,    88,  -151,  -151,  -151,  -151,   134,  -151,  -151,  -151,
 863                         -151,  -151,  -151,  -151,  -151,  -151,   -83,  -151,  -151,  -151,
 864                         -125,  -151,  -151,   -48,  -151,  -151,   -33,  -151,  -151,   133,
 865                          189,  -151,  -151,  -151
 866 mike           1.3  };
 867 kumpf          1.34 
 868                     /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
 869                        positive, shift that token.  If negative, reduce the rule which
 870                        number is the opposite.  If zero, do what YYDEFACT says.
 871                        If YYTABLE_NINF, syntax error.  */
 872                     #define YYTABLE_NINF -29
 873                     static const short yytable[] =
 874                     {
 875                           64,    53,    67,    56,   104,    98,   125,   142,   164,   193,
 876                          182,    60,   154,   -28,    -4,    53,   106,   107,    17,   165,
 877                           38,    56,   183,   173,    62,    63,   200,    32,    34,   166,
 878                           36,   213,    43,    44,   154,     1,    45,     1,   106,   107,
 879                          159,   108,     1,   109,   183,    18,   198,    62,    39,    57,
 880                           47,   184,   111,    88,     1,   102,   112,    61,   -28,    66,
 881                          113,    59,     2,   108,     3,   109,    69,    91,   174,    62,
 882                          115,   201,    66,   110,   111,   116,   214,   225,   112,   106,
 883                          107,   161,   113,   236,   160,     1,   101,     1,   224,   134,
 884                          199,   135,   115,   136,    66,   138,   186,   116,   139,   143,
 885                           92,   192,    99,   144,   108,   149,   109,   126,   146,   148,
 886                          186,   177,   106,   107,   110,   111,   152,   153,   154,   112,
 887                          156,   162,   202,   113,   127,   163,   170,   114,   167,   205,
 888 kumpf          1.34      169,   172,   180,   115,   178,    66,   194,   108,   116,   109,
 889                          -25,   196,   209,   206,   212,   106,   107,   124,   111,   128,
 890                          216,   217,   112,   223,   220,   221,   113,   226,   227,   129,
 891                          130,   228,   232,   233,    33,   219,   115,   177,    66,    93,
 892                          108,   116,   109,    20,    20,    21,    21,   215,    22,    22,
 893                          110,   111,   238,   208,   158,   112,   195,   234,   100,   113,
 894                          155,   237,    31,   105,     0,     0,     0,     0,     0,   115,
 895                            0,    66,     0,     0,   116,    23,    23,     0,     0,     0,
 896                           24,    24,     0,     0,    25,    25,     0,     0,    26,    26,
 897                            0,     0,    27,    27,     0,     0,     0,    28,    28,    71,
 898                           72,    29,    73,    74,    75,    76,    77,    78,    79,    80,
 899                           81,    82,    83,    84,    71,    72,     0,    73,    74,    75,
 900                           76,    77,    78,    79,    80,    81,    82,    83,    84,    71,
 901                           72,     0,    73,    74,    75,    76,    77,    78,    79,    80,
 902                           81,    82,    83,    84,     0,     0,     0,    94,     0,     0,
 903                            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 904                            0,     0,    57
 905 mike           1.3  };
 906 kumpf          1.34 
 907                     static const short yycheck[] =
 908                     {
 909                           42,    34,    43,    36,    59,    53,    63,    90,   133,   159,
 910                          151,    11,     3,    11,     0,    48,     7,     8,    35,    47,
 911                            9,    54,    13,    11,    38,    39,    11,     0,    38,    57,
 912                           38,    11,    39,    39,     3,    40,    10,    40,     7,     8,
 913                           11,    32,    40,    34,    13,    62,   171,    38,    37,    62,
 914                           55,    42,    43,    11,    40,     5,    47,    57,    56,    63,
 915                           51,    44,    48,    32,    50,    34,    63,    60,    56,    38,
 916                           61,    56,    63,    42,    43,    66,    56,   218,    47,     7,
 917                            8,   122,    51,   233,    55,    40,    62,    40,   213,    56,
 918                          173,    56,    61,    40,    63,    59,   153,    66,    11,    60,
 919                           55,   156,    55,    39,    32,    62,    34,    12,    60,    52,
 920                          167,   144,     7,     8,    42,    43,    60,    31,     3,    47,
 921                           10,    56,   177,    51,    29,    56,    33,    55,    31,   177,
 922                           39,    60,    62,    61,    60,    63,    57,    32,    66,    34,
 923                           39,    39,   183,    31,    60,     7,     8,    42,    43,    54,
 924                           52,    62,    47,    10,    60,   210,    51,    46,    13,    64,
 925                           65,    62,    11,    31,     6,   206,    61,   200,    63,    48,
 926                           32,    66,    34,     4,     4,     6,     6,   200,     9,     9,
 927 kumpf          1.34       42,    43,   233,   182,   104,    47,   167,   232,    54,    51,
 928                          102,   233,     3,    60,    -1,    -1,    -1,    -1,    -1,    61,
 929                           -1,    63,    -1,    -1,    66,    36,    36,    -1,    -1,    -1,
 930                           41,    41,    -1,    -1,    45,    45,    -1,    -1,    49,    49,
 931                           -1,    -1,    53,    53,    -1,    -1,    -1,    58,    58,    14,
 932                           15,    62,    17,    18,    19,    20,    21,    22,    23,    24,
 933                           25,    26,    27,    28,    14,    15,    -1,    17,    18,    19,
 934                           20,    21,    22,    23,    24,    25,    26,    27,    28,    14,
 935                           15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
 936                           25,    26,    27,    28,    -1,    -1,    -1,    62,    -1,    -1,
 937                           -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 938                           -1,    -1,    62
 939 mike           1.3  };
 940 kumpf          1.34 
 941                     /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
 942                        symbol of state STATE-NUM.  */
 943                     static const unsigned char yystos[] =
 944                     {
 945                            0,    40,    48,    50,    69,    70,    71,    72,    73,   120,
 946                          121,   125,   126,   128,   129,   144,   145,    35,    62,   150,
 947                            4,     6,     9,    36,    41,    45,    49,    53,    58,    62,
 948                          134,   148,     0,    70,    38,    76,    38,   122,     9,    37,
 949                          146,   147,   148,    39,    39,    10,   130,    55,    77,    78,
 950                           79,    87,    90,   144,   123,   124,   144,    62,    74,    44,
 951                           11,    57,    38,    39,   108,   149,    63,   107,   127,    63,
 952                          151,    14,    15,    17,    18,    19,    20,    21,    22,    23,
 953                           24,    25,    26,    27,    28,   141,   142,   143,    11,   131,
 954                          132,    60,    55,    78,    62,    80,    88,    91,   141,    55,
 955                          124,    62,     5,   118,    74,   147,     7,     8,    32,    34,
 956                           42,    43,    47,    51,    55,    61,    66,   101,   102,   103,
 957                          104,   105,   106,   107,    42,   103,    12,    29,    54,    64,
 958                           65,   138,   139,   140,    56,    56,    40,    97,    59,    11,
 959                          135,   133,   134,    60,    39,    81,    60,    89,    52,    62,
 960                           83,    96,    60,    31,     3,   119,    10,    75,   118,    11,
 961 kumpf          1.34       55,   107,    56,    56,   138,    47,    57,    31,    98,    39,
 962                           33,   136,    60,    11,    56,    84,    85,   144,    60,    82,
 963                           62,    92,    97,    13,    42,   100,   103,   108,   109,   110,
 964                          111,   119,    74,   102,    57,   100,    39,   137,   138,   134,
 965                           11,    56,    74,    86,    94,   141,    31,    93,    98,   107,
 966                          112,   113,    60,    11,    56,    85,    52,    62,    95,   107,
 967                           60,    74,   114,    10,   138,    97,    46,    13,    62,   115,
 968                          116,   117,    11,    31,   116,    99,   102,   108,   109
 969 mike           1.3  };
 970 kumpf          1.34 
 971                     #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
 972                     # define YYSIZE_T __SIZE_TYPE__
 973                     #endif
 974                     #if ! defined (YYSIZE_T) && defined (size_t)
 975                     # define YYSIZE_T size_t
 976                     #endif
 977                     #if ! defined (YYSIZE_T)
 978                     # if defined (__STDC__) || defined (__cplusplus)
 979                     #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 980                     #  define YYSIZE_T size_t
 981                     # endif
 982                     #endif
 983                     #if ! defined (YYSIZE_T)
 984                     # define YYSIZE_T unsigned int
 985                     #endif
 986                     
 987                     #define yyerrok		(yyerrstatus = 0)
 988                     #define yyclearin	(yychar = YYEMPTY)
 989                     #define YYEMPTY		(-2)
 990                     #define YYEOF		0
 991 kumpf          1.34 
 992                     #define YYACCEPT	goto yyacceptlab
 993                     #define YYABORT		goto yyabortlab
 994                     #define YYERROR		goto yyerrlab1
 995                     
 996                     /* Like YYERROR except do call yyerror.  This remains here temporarily
 997                        to ease the transition to the new meaning of YYERROR, for GCC.
 998                        Once GCC version 2 has supplanted version 1, this can go.  */
 999                     
1000                     #define YYFAIL		goto yyerrlab
1001                     
1002                     #define YYRECOVERING()  (!!yyerrstatus)
1003                     
1004                     #define YYBACKUP(Token, Value)					\
1005                     do								\
1006                       if (yychar == YYEMPTY && yylen == 1)				\
1007                         {								\
1008                           yychar = (Token);						\
1009                           yylval = (Value);						\
1010                           yytoken = YYTRANSLATE (yychar);				\
1011                           YYPOPSTACK;						\
1012 kumpf          1.34       goto yybackup;						\
1013                         }								\
1014                       else								\
1015                         { 								\
1016                           yyerror ("syntax error: cannot back up");\
1017                           YYERROR;							\
1018                         }								\
1019                     while (0)
1020                     
1021                     #define YYTERROR	1
1022                     #define YYERRCODE	256
1023                     
1024                     /* YYLLOC_DEFAULT -- Compute the default location (before the actions
1025                        are run).  */
1026                     
1027                     #ifndef YYLLOC_DEFAULT
1028                     # define YYLLOC_DEFAULT(Current, Rhs, N)         \
1029                       Current.first_line   = Rhs[1].first_line;      \
1030                       Current.first_column = Rhs[1].first_column;    \
1031                       Current.last_line    = Rhs[N].last_line;       \
1032                       Current.last_column  = Rhs[N].last_column;
1033 kumpf          1.21 #endif
1034 kumpf          1.34 
1035                     /* YYLEX -- calling `yylex' with the right arguments.  */
1036                     
1037                     #ifdef YYLEX_PARAM
1038                     # define YYLEX yylex (YYLEX_PARAM)
1039                     #else
1040                     # define YYLEX yylex ()
1041                     #endif
1042                     
1043                     /* Enable debugging if requested.  */
1044 dj.gorey       1.29 #if YYDEBUG
1045 kumpf          1.34 
1046                     # ifndef YYFPRINTF
1047                     #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1048                     #  define YYFPRINTF fprintf
1049                     # endif
1050                     
1051                     # define YYDPRINTF(Args)			\
1052                     do {						\
1053                       if (yydebug)					\
1054                         YYFPRINTF Args;				\
1055                     } while (0)
1056                     
1057                     # define YYDSYMPRINT(Args)			\
1058                     do {						\
1059                       if (yydebug)					\
1060                         yysymprint Args;				\
1061                     } while (0)
1062                     
1063                     # define YYDSYMPRINTF(Title, Token, Value, Location)		\
1064                     do {								\
1065                       if (yydebug)							\
1066 kumpf          1.34     {								\
1067                           YYFPRINTF (stderr, "%s ", Title);				\
1068                           yysymprint (stderr, 					\
1069                                       Token, Value);	\
1070                           YYFPRINTF (stderr, "\n");					\
1071                         }								\
1072                     } while (0)
1073                     
1074                     /*------------------------------------------------------------------.
1075                     | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1076                     | TOP (cinluded).                                                   |
1077                     `------------------------------------------------------------------*/
1078                     
1079                     #if defined (__STDC__) || defined (__cplusplus)
1080                     static void
1081                     yy_stack_print (short *bottom, short *top)
1082                     #else
1083                     static void
1084                     yy_stack_print (bottom, top)
1085                         short *bottom;
1086                         short *top;
1087 mike           1.3  #endif
1088 kumpf          1.34 {
1089                       YYFPRINTF (stderr, "Stack now");
1090                       for (/* Nothing. */; bottom <= top; ++bottom)
1091                         YYFPRINTF (stderr, " %d", *bottom);
1092                       YYFPRINTF (stderr, "\n");
1093                     }
1094                     
1095                     # define YY_STACK_PRINT(Bottom, Top)				\
1096                     do {								\
1097                       if (yydebug)							\
1098                         yy_stack_print ((Bottom), (Top));				\
1099                     } while (0)
1100                     
1101                     
1102                     /*------------------------------------------------.
1103                     | Report that the YYRULE is going to be reduced.  |
1104                     `------------------------------------------------*/
1105                     
1106                     #if defined (__STDC__) || defined (__cplusplus)
1107                     static void
1108                     yy_reduce_print (int yyrule)
1109 mike           1.3  #else
1110 kumpf          1.34 static void
1111                     yy_reduce_print (yyrule)
1112                         int yyrule;
1113                     #endif
1114                     {
1115                       int yyi;
1116                       unsigned int yylineno = yyrline[yyrule];
1117                       YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
1118                                  yyrule - 1, yylineno);
1119                       /* Print the symbols being reduced, and their result.  */
1120                       for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
1121                         YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
1122                       YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
1123                     }
1124                     
1125                     # define YY_REDUCE_PRINT(Rule)		\
1126                     do {					\
1127                       if (yydebug)				\
1128                         yy_reduce_print (Rule);		\
1129                     } while (0)
1130                     
1131 kumpf          1.34 /* Nonzero means print parse trace.  It is left uninitialized so that
1132                        multiple parsers can coexist.  */
1133                     int yydebug;
1134                     #else /* !YYDEBUG */
1135                     # define YYDPRINTF(Args)
1136                     # define YYDSYMPRINT(Args)
1137                     # define YYDSYMPRINTF(Title, Token, Value, Location)
1138                     # define YY_STACK_PRINT(Bottom, Top)
1139                     # define YY_REDUCE_PRINT(Rule)
1140                     #endif /* !YYDEBUG */
1141                     
1142                     
1143                     /* YYINITDEPTH -- initial size of the parser's stacks.  */
1144                     #ifndef	YYINITDEPTH
1145                     # define YYINITDEPTH 200
1146                     #endif
1147                     
1148                     /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1149                        if the built-in stack extension method is used).
1150                     
1151                        Do not make this value too large; the results are undefined if
1152 kumpf          1.34    SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
1153                        evaluated with infinite-precision integer arithmetic.  */
1154                     
1155                     #if YYMAXDEPTH == 0
1156                     # undef YYMAXDEPTH
1157 kumpf          1.21 #endif
1158 kumpf          1.34 
1159                     #ifndef YYMAXDEPTH
1160                     # define YYMAXDEPTH 10000
1161 mike           1.3  #endif
1162 kumpf          1.34 
1163                     
1164                     
1165                     #if YYERROR_VERBOSE
1166                     
1167                     # ifndef yystrlen
1168                     #  if defined (__GLIBC__) && defined (_STRING_H)
1169                     #   define yystrlen strlen
1170                     #  else
1171                     /* Return the length of YYSTR.  */
1172                     static YYSIZE_T
1173                     #   if defined (__STDC__) || defined (__cplusplus)
1174                     yystrlen (const char *yystr)
1175                     #   else
1176                     yystrlen (yystr)
1177                          const char *yystr;
1178                     #   endif
1179                     {
1180                       register const char *yys = yystr;
1181                     
1182                       while (*yys++ != '\0')
1183 kumpf          1.34     continue;
1184                     
1185                       return yys - yystr - 1;
1186                     }
1187                     #  endif
1188                     # endif
1189                     
1190                     # ifndef yystpcpy
1191                     #  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1192                     #   define yystpcpy stpcpy
1193                     #  else
1194                     /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1195                        YYDEST.  */
1196                     static char *
1197                     #   if defined (__STDC__) || defined (__cplusplus)
1198                     yystpcpy (char *yydest, const char *yysrc)
1199                     #   else
1200                     yystpcpy (yydest, yysrc)
1201                          char *yydest;
1202                          const char *yysrc;
1203                     #   endif
1204 kumpf          1.34 {
1205                       register char *yyd = yydest;
1206                       register const char *yys = yysrc;
1207                     
1208                       while ((*yyd++ = *yys++) != '\0')
1209                         continue;
1210                     
1211                       return yyd - 1;
1212 kumpf          1.21 }
1213 kumpf          1.34 #  endif
1214                     # endif
1215 kumpf          1.21 
1216 kumpf          1.34 #endif /* !YYERROR_VERBOSE */
1217 mike           1.3  
1218 kumpf          1.34 
1219                     
1220                     #if YYDEBUG
1221                     /*--------------------------------.
1222                     | Print this symbol on YYOUTPUT.  |
1223                     `--------------------------------*/
1224                     
1225                     #if defined (__STDC__) || defined (__cplusplus)
1226                     static void
1227                     yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
1228                     #else
1229                     static void
1230                     yysymprint (yyoutput, yytype, yyvaluep)
1231                         FILE *yyoutput;
1232                         int yytype;
1233                         YYSTYPE *yyvaluep;
1234                     #endif
1235 mike           1.3  {
1236 kumpf          1.34   /* Pacify ``unused variable'' warnings.  */
1237                       (void) yyvaluep;
1238                     
1239                       if (yytype < YYNTOKENS)
1240                         {
1241                           YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1242                     # ifdef YYPRINT
1243                           YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1244                     # endif
1245                         }
1246                       else
1247                         YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1248 kumpf          1.21 
1249 kumpf          1.34   switch (yytype)
1250 mike           1.3      {
1251 kumpf          1.34       default:
1252                             break;
1253 mike           1.3      }
1254 kumpf          1.34   YYFPRINTF (yyoutput, ")");
1255                     }
1256                     
1257                     #endif /* ! YYDEBUG */
1258                     /*-----------------------------------------------.
1259                     | Release the memory associated to this symbol.  |
1260                     `-----------------------------------------------*/
1261                     
1262                     #if defined (__STDC__) || defined (__cplusplus)
1263                     static void
1264                     yydestruct (int yytype, YYSTYPE *yyvaluep)
1265                     #else
1266                     static void
1267                     yydestruct (yytype, yyvaluep)
1268                         int yytype;
1269                         YYSTYPE *yyvaluep;
1270 kumpf          1.21 #endif
1271 kumpf          1.34 {
1272                       /* Pacify ``unused variable'' warnings.  */
1273                       (void) yyvaluep;
1274 kumpf          1.21 
1275 kumpf          1.34   switch (yytype)
1276 kumpf          1.21     {
1277 kumpf          1.34 
1278                           default:
1279                             break;
1280                         }
1281                     }
1282                     
1283                     
1284                     /* Prevent warnings from -Wmissing-prototypes.  */
1285                     
1286                     #ifdef YYPARSE_PARAM
1287                     # if defined (__STDC__) || defined (__cplusplus)
1288                     int yyparse (void *YYPARSE_PARAM);
1289                     # else
1290                     int yyparse ();
1291                     # endif
1292                     #else /* ! YYPARSE_PARAM */
1293                     #if defined (__STDC__) || defined (__cplusplus)
1294                     int yyparse (void);
1295                     #else
1296                     int yyparse ();
1297                     #endif
1298 kumpf          1.34 #endif /* ! YYPARSE_PARAM */
1299                     
1300                     
1301                     
1302                     /* The lookahead symbol.  */
1303                     int yychar;
1304                     
1305                     /* The semantic value of the lookahead symbol.  */
1306                     YYSTYPE yylval;
1307                     
1308                     /* Number of syntax errors so far.  */
1309                     int yynerrs;
1310                     
1311                     
1312                     
1313                     /*----------.
1314                     | yyparse.  |
1315                     `----------*/
1316                     
1317                     #ifdef YYPARSE_PARAM
1318                     # if defined (__STDC__) || defined (__cplusplus)
1319 kumpf          1.34 int yyparse (void *YYPARSE_PARAM)
1320                     # else
1321                     int yyparse (YYPARSE_PARAM)
1322                       void *YYPARSE_PARAM;
1323                     # endif
1324                     #else /* ! YYPARSE_PARAM */
1325                     #if defined (__STDC__) || defined (__cplusplus)
1326                     int
1327                     yyparse (void)
1328                     #else
1329                     int
1330                     yyparse ()
1331                     
1332                     #endif
1333 mike           1.3  #endif
1334 kumpf          1.34 {
1335                       
1336                       register int yystate;
1337                       register int yyn;
1338                       int yyresult;
1339                       /* Number of tokens to shift before error messages enabled.  */
1340                       int yyerrstatus;
1341                       /* Lookahead token as an internal (translated) token number.  */
1342                       int yytoken = 0;
1343                     
1344                       /* Three stacks and their tools:
1345                          `yyss': related to states,
1346                          `yyvs': related to semantic values,
1347                          `yyls': related to locations.
1348                     
1349                          Refer to the stacks thru separate pointers, to allow yyoverflow
1350                          to reallocate them elsewhere.  */
1351                     
1352                       /* The state stack.  */
1353                       short	yyssa[YYINITDEPTH];
1354                       short *yyss = yyssa;
1355 kumpf          1.34   register short *yyssp;
1356                     
1357                       /* The semantic value stack.  */
1358                       YYSTYPE yyvsa[YYINITDEPTH];
1359                       YYSTYPE *yyvs = yyvsa;
1360                       register YYSTYPE *yyvsp;
1361                     
1362                     
1363                     
1364                     #define YYPOPSTACK   (yyvsp--, yyssp--)
1365                     
1366                       YYSIZE_T yystacksize = YYINITDEPTH;
1367                     
1368                       /* The variables used to return semantic value and location from the
1369                          action routines.  */
1370                       YYSTYPE yyval;
1371                     
1372                     
1373                       /* When reducing, the number of symbols on the RHS of the reduced
1374                          rule.  */
1375                       int yylen;
1376 kumpf          1.34 
1377                       YYDPRINTF ((stderr, "Starting parse\n"));
1378                     
1379                       yystate = 0;
1380                       yyerrstatus = 0;
1381                       yynerrs = 0;
1382                       yychar = YYEMPTY;		/* Cause a token to be read.  */
1383                     
1384                       /* Initialize stack pointers.
1385                          Waste one element of value and location stack
1386                          so that they stay on the same level as the state stack.
1387                          The wasted elements are never initialized.  */
1388                     
1389                       yyssp = yyss;
1390                       yyvsp = yyvs;
1391                     
1392                       goto yysetstate;
1393                     
1394                     /*------------------------------------------------------------.
1395                     | yynewstate -- Push a new state, which is found in yystate.  |
1396                     `------------------------------------------------------------*/
1397 kumpf          1.34  yynewstate:
1398                       /* In all cases, when you get here, the value and location stacks
1399                          have just been pushed. so pushing a state here evens the stacks.
1400                          */
1401                       yyssp++;
1402                     
1403                      yysetstate:
1404                       *yyssp = yystate;
1405                     
1406                       if (yyss + yystacksize - 1 <= yyssp)
1407                         {
1408                           /* Get the current used size of the three stacks, in elements.  */
1409                           YYSIZE_T yysize = yyssp - yyss + 1;
1410                     
1411                     #ifdef yyoverflow
1412                           {
1413                     	/* Give user a chance to reallocate the stack. Use copies of
1414                     	   these so that the &'s don't force the real ones into
1415                     	   memory.  */
1416                     	YYSTYPE *yyvs1 = yyvs;
1417                     	short *yyss1 = yyss;
1418 kumpf          1.34 
1419                     
1420                     	/* Each stack pointer address is followed by the size of the
1421                     	   data in use in that stack, in bytes.  This used to be a
1422                     	   conditional around just the two extra args, but that might
1423                     	   be undefined if yyoverflow is a macro.  */
1424                     	yyoverflow ("parser stack overflow",
1425                     		    &yyss1, yysize * sizeof (*yyssp),
1426                     		    &yyvs1, yysize * sizeof (*yyvsp),
1427                     
1428                     		    &yystacksize);
1429                     
1430                     	yyss = yyss1;
1431                     	yyvs = yyvs1;
1432                           }
1433                     #else /* no yyoverflow */
1434                     # ifndef YYSTACK_RELOCATE
1435                           goto yyoverflowlab;
1436                     # else
1437                           /* Extend the stack our own way.  */
1438                           if (YYMAXDEPTH <= yystacksize)
1439 kumpf          1.34 	goto yyoverflowlab;
1440                           yystacksize *= 2;
1441                           if (YYMAXDEPTH < yystacksize)
1442                     	yystacksize = YYMAXDEPTH;
1443                     
1444                           {
1445                     	short *yyss1 = yyss;
1446                     	union yyalloc *yyptr =
1447                     	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1448                     	if (! yyptr)
1449                     	  goto yyoverflowlab;
1450                     	YYSTACK_RELOCATE (yyss);
1451                     	YYSTACK_RELOCATE (yyvs);
1452                     
1453                     #  undef YYSTACK_RELOCATE
1454                     	if (yyss1 != yyssa)
1455                     	  YYSTACK_FREE (yyss1);
1456                           }
1457                     # endif
1458                     #endif /* no yyoverflow */
1459                     
1460 kumpf          1.34       yyssp = yyss + yysize - 1;
1461                           yyvsp = yyvs + yysize - 1;
1462                     
1463                     
1464                           YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1465                     		  (unsigned long int) yystacksize));
1466                     
1467                           if (yyss + yystacksize - 1 <= yyssp)
1468                     	YYABORT;
1469 kumpf          1.21     }
1470 kumpf          1.34 
1471                       YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1472                     
1473                       goto yybackup;
1474                     
1475                     /*-----------.
1476                     | yybackup.  |
1477                     `-----------*/
1478                     yybackup:
1479                     
1480                     /* Do appropriate processing given the current state.  */
1481                     /* Read a lookahead token if we need one and don't already have one.  */
1482                     /* yyresume: */
1483                     
1484                       /* First try to decide what to do without reference to lookahead token.  */
1485                     
1486                       yyn = yypact[yystate];
1487                       if (yyn == YYPACT_NINF)
1488                         goto yydefault;
1489                     
1490                       /* Not known => get a lookahead token if don't already have one.  */
1491 kumpf          1.34 
1492                       /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1493                       if (yychar == YYEMPTY)
1494 mike           1.3      {
1495 kumpf          1.34       YYDPRINTF ((stderr, "Reading a token: "));
1496                           yychar = YYLEX;
1497 mike           1.3      }
1498 kumpf          1.34 
1499                       if (yychar <= YYEOF)
1500 mike           1.3      {
1501 kumpf          1.34       yychar = yytoken = YYEOF;
1502                           YYDPRINTF ((stderr, "Now at end of input.\n"));
1503 dj.gorey       1.29     }
1504 kumpf          1.34   else
1505 dj.gorey       1.29     {
1506 kumpf          1.34       yytoken = YYTRANSLATE (yychar);
1507                           YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
1508 mike           1.3      }
1509 kumpf          1.34 
1510                       /* If the proper action on seeing token YYTOKEN is to reduce or to
1511                          detect an error, take that action.  */
1512                       yyn += yytoken;
1513                       if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1514                         goto yydefault;
1515                       yyn = yytable[yyn];
1516                       if (yyn <= 0)
1517 mike           1.3      {
1518 kumpf          1.34       if (yyn == 0 || yyn == YYTABLE_NINF)
1519                     	goto yyerrlab;
1520                           yyn = -yyn;
1521                           goto yyreduce;
1522 mike           1.3      }
1523 kumpf          1.34 
1524                       if (yyn == YYFINAL)
1525                         YYACCEPT;
1526                     
1527                       /* Shift the lookahead token.  */
1528                       YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
1529                     
1530                       /* Discard the token being shifted unless it is eof.  */
1531                       if (yychar != YYEOF)
1532                         yychar = YYEMPTY;
1533                     
1534                       *++yyvsp = yylval;
1535                     
1536                     
1537                       /* Count tokens shifted since error; after three, turn off error
1538                          status.  */
1539                       if (yyerrstatus)
1540                         yyerrstatus--;
1541                     
1542                       yystate = yyn;
1543                       goto yynewstate;
1544 kumpf          1.34 
1545                     
1546                     /*-----------------------------------------------------------.
1547                     | yydefault -- do the default action for the current state.  |
1548                     `-----------------------------------------------------------*/
1549                     yydefault:
1550                       yyn = yydefact[yystate];
1551                       if (yyn == 0)
1552                         goto yyerrlab;
1553                       goto yyreduce;
1554                     
1555                     
1556                     /*-----------------------------.
1557                     | yyreduce -- Do a reduction.  |
1558                     `-----------------------------*/
1559 kumpf          1.21 yyreduce:
1560 kumpf          1.34   /* yyn is the number of a rule to reduce with.  */
1561                       yylen = yyr2[yyn];
1562                     
1563                       /* If YYLEN is nonzero, implement the default value of the action:
1564                          `$$ = $1'.
1565                     
1566                          Otherwise, the following line sets YYVAL to garbage.
1567                          This behavior is undocumented and Bison
1568                          users should not rely upon it.  Assigning to YYVAL
1569                          unconditionally makes the parser a bit smaller, and it avoids a
1570                          GCC warning that YYVAL may be used uninitialized.  */
1571                       yyval = yyvsp[1-yylen];
1572                     
1573                     
1574                       YY_REDUCE_PRINT (yyn);
1575                       switch (yyn)
1576                         {
1577                             case 5:
1578 jim.wunderlich 1.36 #line 319 "cimmof.y"
1579 kumpf          1.34     { /* FIXME: Where do we put directives? */ ;}
1580                         break;
1581                     
1582                       case 6:
1583 jim.wunderlich 1.36 #line 321 "cimmof.y"
1584 kumpf          1.34     { cimmofParser::Instance()->addQualifier(yyvsp[0].mofqualifier); delete yyvsp[0].mofqualifier; ;}
1585                         break;
1586                     
1587                       case 7:
1588 jim.wunderlich 1.36 #line 323 "cimmof.y"
1589 kumpf          1.34     { cimmofParser::Instance()->addClass(yyvsp[0].mofclass); ;}
1590                         break;
1591                     
1592                       case 8:
1593 jim.wunderlich 1.36 #line 325 "cimmof.y"
1594 kumpf          1.34     { cimmofParser::Instance()->addInstance(yyvsp[0].instance); ;}
1595                         break;
1596                     
1597                       case 9:
1598 jim.wunderlich 1.36 #line 338 "cimmof.y"
1599 kumpf          1.34     {
1600 karl           1.25     YACCTRACE("classDeclaration");
1601 jim.wunderlich 1.36     if (g_currentAliasDecl != String::EMPTY)
1602                         cimmofParser::Instance()->addClassAlias(g_currentAliasDecl, yyval.mofclass, false);
1603 kumpf          1.34 ;}
1604                         break;
1605                     
1606                       case 10:
1607 jim.wunderlich 1.36 #line 346 "cimmof.y"
1608 kumpf          1.34     {
1609                         // create new instance of class with className and superclassName
1610                         // put returned class object on stack
1611 karl           1.25     YACCTRACE("classHead:");
1612                         yyval.mofclass = cimmofParser::Instance()->newClassDecl(*yyvsp[-2].cimnameval, *yyvsp[0].cimnameval);
1613                         
1614 kumpf          1.34     // put list of qualifiers into class
1615 karl           1.25     applyQualifierList(&g_qualifierList, yyval.mofclass);
1616                         
1617 jim.wunderlich 1.36     g_currentAliasRef = *yyvsp[-1].strval;
1618 karl           1.25     if (g_currentClass)
1619                             delete g_currentClass;
1620                         g_currentClass = yyval.mofclass;
1621                         delete yyvsp[-2].cimnameval;
1622                         delete yyvsp[-1].strval;
1623                         delete yyvsp[0].cimnameval;
1624 kumpf          1.34 ;}
1625                         break;
1626                     
1627                       case 11:
1628 jim.wunderlich 1.36 #line 365 "cimmof.y"
1629 kumpf          1.34     {;}
1630                         break;
1631                     
1632                       case 12:
1633 jim.wunderlich 1.36 #line 368 "cimmof.y"
1634 kumpf          1.34     { yyval.cimnameval = new CIMName(*yyvsp[0].cimnameval); ;}
1635                         break;
1636                     
1637                       case 13:
1638 jim.wunderlich 1.36 #line 369 "cimmof.y"
1639 kumpf          1.34     { yyval.cimnameval = new CIMName(); ;}
1640                         break;
1641                     
1642                       case 18:
1643 jim.wunderlich 1.36 #line 380 "cimmof.y"
1644 kumpf          1.34     {
1645 karl           1.25   YACCTRACE("classFeature:applyProperty");
1646 kumpf          1.34   cimmofParser::Instance()->applyProperty(*g_currentClass, *yyvsp[0].property); delete yyvsp[0].property; ;}
1647                         break;
1648                     
1649                       case 19:
1650 jim.wunderlich 1.36 #line 383 "cimmof.y"
1651 kumpf          1.34     {
1652 karl           1.25   YACCTRACE("classFeature:applyMethod");
1653 kumpf          1.34   cimmofParser::Instance()->applyMethod(*g_currentClass, *yyvsp[0].method); ;}
1654                         break;
1655                     
1656                       case 20:
1657 jim.wunderlich 1.36 #line 386 "cimmof.y"
1658 kumpf          1.34     {
1659 karl           1.25   YACCTRACE("classFeature:applyProperty");
1660 kumpf          1.34   cimmofParser::Instance()->applyProperty(*g_currentClass, *yyvsp[0].property); delete yyvsp[0].property; ;}
1661                         break;
1662                     
1663                       case 21:
1664 jim.wunderlich 1.36 #line 404 "cimmof.y"
1665 kumpf          1.34     {
1666 karl           1.25   YACCTRACE("methodDeclaration");
1667 mike           1.3    yyval.method = yyvsp[-2].method;
1668 kumpf          1.34 ;}
1669                         break;
1670                     
1671                       case 22:
1672 jim.wunderlich 1.36 #line 415 "cimmof.y"
1673 kumpf          1.34     {
1674 karl           1.25     YACCTRACE("methodHead");
1675                         if (g_currentMethod)
1676 mike           1.3      delete g_currentMethod;
1677 karl           1.25 
1678 kumpf          1.34   // create new method instance with pointer to method name and datatype
1679 karl           1.25   g_currentMethod = cimmofParser::Instance()->newMethod(*yyvsp[0].cimnameval, yyvsp[-1].datatype) ;
1680                       
1681 kumpf          1.34   // put new method on stack
1682 mike           1.3    yyval.method = g_currentMethod;
1683 karl           1.25 
1684 kumpf          1.34   // apply the method qualifier list.
1685 karl           1.25   applyQualifierList(&g_qualifierList, yyval.method);
1686                     
1687 kumpf          1.16   delete yyvsp[0].cimnameval;
1688 kumpf          1.34 ;}
1689                         break;
1690                     
1691                       case 25:
1692 jim.wunderlich 1.36 #line 439 "cimmof.y"
1693 kumpf          1.34     { yyval.cimnameval = new CIMName(*yyvsp[0].strval); ;}
1694                         break;
1695                     
1696                       case 29:
1697 jim.wunderlich 1.36 #line 451 "cimmof.y"
1698 kumpf          1.34     { 
1699                       // ATTN: P2 2002 Question Need to create default value including type?
1700 karl           1.25   
1701                       YACCTRACE("parameter:");
1702                       CIMParameter *p = 0;
1703                       cimmofParser *cp = cimmofParser::Instance();
1704                     
1705 kumpf          1.34   // Create new parameter with name, type, isArray, array, referenceClassName
1706 karl           1.25   if (yyvsp[0].ival == -1) {
1707                         p = cp->newParameter(*yyvsp[-1].cimnameval, yyvsp[-2].datatype, false, 0, g_referenceClassName);
1708                       } else {
1709                         p = cp->newParameter(*yyvsp[-1].cimnameval, yyvsp[-2].datatype, true, yyvsp[0].ival, g_referenceClassName);
1710                       }
1711                     
1712                       g_referenceClassName = CIMName();
1713                     
1714                       YACCTRACE("parameter:applyQualifierList");
1715                       applyQualifierList(&g_qualifierList, p);
1716                     
1717                       cp->applyParameter(*g_currentMethod, *p);
1718                       delete p;
1719                       delete yyvsp[-1].cimnameval;
1720 kumpf          1.34 ;}
1721                         break;
1722                     
1723                       case 30:
1724 jim.wunderlich 1.36 #line 476 "cimmof.y"
1725 kumpf          1.34     { yyval.datatype = yyvsp[0].datatype; ;}
1726                         break;
1727                     
1728                       case 31:
1729 jim.wunderlich 1.36 #line 477 "cimmof.y"
1730 kumpf          1.34     { yyval.datatype = CIMTYPE_REFERENCE; ;}
1731                         break;
1732                     
1733                       case 32:
1734 jim.wunderlich 1.36 #line 493 "cimmof.y"
1735 kumpf          1.34     {
1736                         // set body to stack and apply qualifier list
1737                         // ATTN: the apply qualifer only works here because
1738                         // there are not lower level qualifiers.  We do productions
1739                         // that might have lower level qualifiers differently by
1740                         // setting up a xxxHead production where qualifiers are 
1741                         // applied.
1742 karl           1.25     YACCTRACE("propertyDeclaration:");
1743                         yyval.property = yyvsp[-1].property;
1744                         applyQualifierList(&g_qualifierList, yyval.property);
1745 kumpf          1.34 ;}
1746                         break;
1747                     
1748                       case 33:
1749 jim.wunderlich 1.36 #line 507 "cimmof.y"
1750 kumpf          1.34     {
1751 kumpf          1.11   CIMValue *v = valueFactory::createValue(yyvsp[-3].datatype, yyvsp[-1].ival, 
1752                                           (yyvsp[0].typedinitializer->type == CIMMOF_NULL_VALUE), yyvsp[0].typedinitializer->value);
1753 karl           1.7    if (yyvsp[-1].ival == -1) {
1754 kumpf          1.16     yyval.property = cimmofParser::Instance()->newProperty(*yyvsp[-2].cimnameval, *v, false, 0);
1755 karl           1.7  } else {                                           
1756 kumpf          1.16     yyval.property = cimmofParser::Instance()->newProperty(*yyvsp[-2].cimnameval, *v, true, yyvsp[-1].ival);
1757 karl           1.7    }
1758                     
1759 kumpf          1.16   delete yyvsp[-2].cimnameval;
1760 kumpf          1.12   delete yyvsp[0].typedinitializer->value;
1761 mike           1.3    delete v;
1762 kumpf          1.34 ;}
1763                         break;
1764                     
1765                       case 35:
1766 jim.wunderlich 1.36 #line 539 "cimmof.y"
1767 kumpf          1.34     {
1768 mike           1.3    String s(*yyvsp[-4].strval);
1769                       if (!String::equal(*yyvsp[-1].strval, String::EMPTY))
1770 kumpf          1.21     s.append("." + *yyvsp[-1].strval);
1771 kumpf          1.15   CIMValue *v = valueFactory::createValue(CIMTYPE_REFERENCE, -1, true, &s);
1772 kumpf          1.34   //KS add the isArray and arraysize parameters. 8 mar 2002
1773 karl           1.7    yyval.property = cimmofParser::Instance()->newProperty(*yyvsp[-2].strval, *v, false,0, *yyvsp[-4].strval);
1774 karl           1.25   applyQualifierList(&g_qualifierList, yyval.property);
1775 mike           1.3    delete yyvsp[-4].strval;
1776                       delete yyvsp[-2].strval;
1777                       delete yyvsp[-1].strval; 
1778                       delete v;
1779 kumpf          1.34 ;}
1780                         break;
1781                     
1782                       case 36:
1783 jim.wunderlich 1.36 #line 554 "cimmof.y"
1784 kumpf          1.34     { yyval.strval = yyvsp[0].strval; ;}
1785                         break;
1786                     
1787                       case 37:
1788 jim.wunderlich 1.36 #line 557 "cimmof.y"
1789 kumpf          1.34     { yyval.strval = yyvsp[0].strval; ;}
1790                         break;
1791                     
1792                       case 38:
1793 jim.wunderlich 1.36 #line 560 "cimmof.y"
1794 kumpf          1.34     { yyval.strval = yyvsp[0].strval; ;}
1795                         break;
1796                     
1797                       case 39:
1798 jim.wunderlich 1.36 #line 561 "cimmof.y"
1799 kumpf          1.34     { yyval.strval = new String(String::EMPTY); ;}
1800                         break;
1801                     
1802                       case 40:
1803 jim.wunderlich 1.36 #line 564 "cimmof.y"
1804 kumpf          1.34     {  
1805                                               g_referenceClassName = *yyvsp[-1].cimnameval; ;}
1806                         break;
1807                     
1808                       case 41:
1809 jim.wunderlich 1.36 #line 568 "cimmof.y"
1810 kumpf          1.34     { yyval.cimnameval = new CIMName(*yyvsp[0].strval); ;}
1811                         break;
1812                     
1813                       case 42:
1814 jim.wunderlich 1.36 #line 571 "cimmof.y"
1815 kumpf          1.34     { yyval.cimnameval = new CIMName(*yyvsp[0].strval); ;}
1816                         break;
1817                     
1818                       case 43:
1819 jim.wunderlich 1.36 #line 576 "cimmof.y"
1820 kumpf          1.34     { yyval.ival = valueFactory::Stoi(*yyvsp[-1].strval);
1821 mike           1.3  		   delete yyvsp[-1].strval;
1822 kumpf          1.34                  ;}
1823                         break;
1824                     
1825                       case 44:
1826 jim.wunderlich 1.36 #line 579 "cimmof.y"
1827 kumpf          1.34     { yyval.ival = 0; ;}
1828                         break;
1829                     
1830                       case 45:
1831 jim.wunderlich 1.36 #line 580 "cimmof.y"
1832 kumpf          1.34     { yyval.ival = -1; ;}
1833                         break;
1834                     
1835                       case 46:
1836 jim.wunderlich 1.36 #line 583 "cimmof.y"
1837 kumpf          1.34     { yyval.typedinitializer = yyvsp[0].typedinitializer; ;}
1838                         break;
1839                     
1840                       case 47:
1841 jim.wunderlich 1.36 #line 584 "cimmof.y"
1842 kumpf          1.34     {   /* empty */
1843 kumpf          1.11                   g_typedInitializerValue.type = CIMMOF_NULL_VALUE;
1844                                       g_typedInitializerValue.value = new String(String::EMPTY); 
1845                                       yyval.typedinitializer = &g_typedInitializerValue;
1846 kumpf          1.34               ;}
1847                         break;
1848                     
1849                       case 48:
1850 jim.wunderlich 1.36 #line 591 "cimmof.y"
1851 kumpf          1.34     { yyval.strval = yyvsp[0].strval; ;}
1852                         break;
1853                     
1854                       case 49:
1855 jim.wunderlich 1.36 #line 592 "cimmof.y"
1856 kumpf          1.34     { yyval.strval = yyvsp[0].strval; ;}
1857                         break;
1858                     
1859                       case 50:
1860 jim.wunderlich 1.36 #line 593 "cimmof.y"
1861 kumpf          1.34     { yyval.strval = yyvsp[0].strval; ;}
1862                         break;
1863                     
1864                       case 51:
1865 jim.wunderlich 1.36 #line 600 "cimmof.y"
1866 kumpf          1.34     { 
1867 kumpf          1.10            g_typedInitializerValue.type = CIMMOF_CONSTANT_VALUE;
1868                                g_typedInitializerValue.value =  yyvsp[0].strval; 
1869                                yyval.typedinitializer = &g_typedInitializerValue;
1870 kumpf          1.34            ;}
1871                         break;
1872                     
1873                       case 52:
1874 jim.wunderlich 1.36 #line 606 "cimmof.y"
1875 kumpf          1.34     {
1876 kumpf          1.10            g_typedInitializerValue.type = CIMMOF_NULL_VALUE;
1877                                g_typedInitializerValue.value = new String(String::EMPTY); 
1878                                yyval.typedinitializer = &g_typedInitializerValue;
1879 kumpf          1.34            ;}
1880                         break;
1881                     
1882                       case 53:
1883 jim.wunderlich 1.36 #line 612 "cimmof.y"
1884 kumpf          1.34     { 
1885 kumpf          1.10            g_typedInitializerValue.type = CIMMOF_ARRAY_VALUE;
1886                                g_typedInitializerValue.value =  yyvsp[0].strval; 
1887                                yyval.typedinitializer = &g_typedInitializerValue;
1888 kumpf          1.34            ;}
1889                         break;
1890                     
1891                       case 54:
1892 jim.wunderlich 1.36 #line 618 "cimmof.y"
1893 kumpf          1.34     { 
1894 kumpf          1.10            g_typedInitializerValue.type = CIMMOF_REFERENCE_VALUE;
1895                                g_typedInitializerValue.value =  yyvsp[0].strval; 
1896                                yyval.typedinitializer = &g_typedInitializerValue;
1897 kumpf          1.34            ;}
1898                         break;
1899                     
1900                       case 55:
1901 jim.wunderlich 1.36 #line 627 "cimmof.y"
1902 kumpf          1.34     { 
1903                                 *yyval.strval = valueFactory::stringWComma(String(*yyvsp[0].strval)); ;}
1904                         break;
1905                     
1906                       case 56:
1907 jim.wunderlich 1.36 #line 630 "cimmof.y"
1908 kumpf          1.34     {
1909 karl           1.26                 YACCTRACE("constantValues:1, Value= " << *yyvsp[0].strval);
1910                                     (*yyval.strval).append(","); 
1911 kumpf          1.34                 //(*$$).append(*$3);
1912 karl           1.26                 (*yyval.strval).append(valueFactory::stringWComma(String(*yyvsp[0].strval)));
1913                                     delete yyvsp[0].strval;
1914 kumpf          1.34               ;}
1915                         break;
1916                     
1917                       case 57:
1918 jim.wunderlich 1.36 #line 642 "cimmof.y"
1919 kumpf          1.34     {yyval.strval = yyvsp[0].strval;;}
1920                         break;
1921                     
1922                       case 58:
1923 jim.wunderlich 1.36 #line 643 "cimmof.y"
1924 kumpf          1.34     { yyval.strval = new String(String::EMPTY); ;}
1925                         break;
1926                     
1927                       case 59:
1928 jim.wunderlich 1.36 #line 646 "cimmof.y"
1929 kumpf          1.34     { yyval.strval = yyvsp[0].strval; ;}
1930                         break;
1931                     
1932                       case 60:
1933 jim.wunderlich 1.36 #line 647 "cimmof.y"
1934 kumpf          1.34     { yyval.strval = yyvsp[0].strval; ;}
1935                         break;
1936                     
1937                       case 61:
1938 jim.wunderlich 1.36 #line 648 "cimmof.y"
1939 kumpf          1.34     { yyval.strval =  yyvsp[0].strval; ;}
1940                         break;
1941                     
1942                       case 62:
1943 jim.wunderlich 1.36 #line 649 "cimmof.y"
1944 kumpf          1.34     { ;}
1945                         break;
1946                     
1947                       case 63:
1948 jim.wunderlich 1.36 #line 650 "cimmof.y"
1949 kumpf          1.34     { yyval.strval = new String(yyvsp[0].ival ? "T" : "F"); ;}
1950                         break;
1951                     
1952                       case 66:
1953 jim.wunderlich 1.36 #line 655 "cimmof.y"
1954 kumpf          1.34     {
1955 mike           1.3                     yyval.strval = new String(cimmofParser::Instance()->oct_to_dec(*yyvsp[0].strval));
1956 kumpf          1.34                    delete yyvsp[0].strval; ;}
1957                         break;
1958                     
1959                       case 67:
1960 jim.wunderlich 1.36 #line 658 "cimmof.y"
1961 kumpf          1.34     {
1962 mike           1.3                     yyval.strval = new String(cimmofParser::Instance()->hex_to_dec(*yyvsp[0].strval));
1963 kumpf          1.34 	           delete yyvsp[0].strval; ;}
1964                         break;
1965                     
1966                       case 68:
1967 jim.wunderlich 1.36 #line 661 "cimmof.y"
1968 kumpf          1.34     {
1969 mike           1.3                   yyval.strval = new String(cimmofParser::Instance()->binary_to_dec(*yyvsp[0].strval));
1970 kumpf          1.34 	           delete yyvsp[0].strval; ;}
1971                         break;
1972                     
1973                       case 69:
1974 jim.wunderlich 1.36 #line 666 "cimmof.y"
1975 kumpf          1.34     { yyval.ival = 0; ;}
1976                         break;
1977                     
1978                       case 70:
1979 jim.wunderlich 1.36 #line 667 "cimmof.y"
1980 kumpf          1.34     { yyval.ival = 1; ;}
1981                         break;
1982                     
1983                       case 71:
1984 jim.wunderlich 1.36 #line 670 "cimmof.y"
1985 kumpf          1.34     { yyval.strval = yyvsp[0].strval; ;}
1986                         break;
1987                     
1988                       case 72:
1989 jim.wunderlich 1.36 #line 672 "cimmof.y"
1990 kumpf          1.34     { 
1991 kumpf          1.21                 (*yyval.strval).append(*yyvsp[0].strval);  delete yyvsp[0].strval;
1992 kumpf          1.34               ;}
1993                         break;
1994                     
1995                       case 73:
1996 jim.wunderlich 1.36 #line 678 "cimmof.y"
1997 kumpf          1.34     { 
1998                        //String oldrep = *$1;
1999                        //String s(oldrep), s1(String::EMPTY);
2000                        // Handle quoted quote
2001                        //int len = s.size();
2002                        //if (s[len] == '\n') {
2003                            //error: new line inside a string constant unless it is quoted
2004                            //if (s[len - 2] == '\\') {
2005                                //if (len > 3)
2006                     	        //s1 = s.subString(1, len-3);
2007                            //} else {
2008                                //cimmof_error("New line in string constant");
2009                                //}
2010                            //cimmofParser::Instance()->increment_lineno();
2011                        //} else { // Can only be a quotation mark
2012                            //if (s[len - 2] == '\\') {  // if it is quoted
2013                                //if (len > 3) s1 = s.subString(1, len-3);
2014                                //s1.append('\"');
2015                                //cimmof_yy_less(len-1);
2016                            //} else { // This is the normal case:  real quotes on both end
2017                                //s1 = s.subString(1, len - 2) ;
2018 kumpf          1.34            //}
2019                            //}
2020                        //delete $1;
2021                        yyval.strval = //new String(s1);
2022 e.boden        1.30         new String(*yyvsp[0].strval);
2023                        delete yyvsp[0].strval;
2024 kumpf          1.34 ;}
2025                         break;
2026                     
2027                       case 74:
2028 jim.wunderlich 1.36 #line 710 "cimmof.y"
2029 kumpf          1.34     { yyval.strval = yyvsp[-1].strval; ;}
2030                         break;
2031                     
2032                       case 75:
2033 jim.wunderlich 1.36 #line 712 "cimmof.y"
2034 kumpf          1.34     { yyval.strval = new String(String::EMPTY); ;}
2035                         break;
2036                     
2037                       case 76:
2038 jim.wunderlich 1.36 #line 715 "cimmof.y"
2039 kumpf          1.34     {;}
2040                         break;
2041                     
2042                       case 77:
2043 jim.wunderlich 1.36 #line 716 "cimmof.y"
2044 kumpf          1.34     {  ;}
2045                         break;
2046                     
2047                       case 78:
2048 jim.wunderlich 1.36 #line 720 "cimmof.y"
2049 kumpf          1.34     { 
2050                       // The objectName string is decomposed for syntactical purposes 
2051                       // and reassembled here for later parsing in creation of an objname instance 
2052 mike           1.3    String *s = new String(*yyvsp[-2].strval);
2053                       if (!String::equal(*s, String::EMPTY) && yyvsp[-1].modelpath)
2054 kumpf          1.21     (*s).append(":");
2055 mike           1.3    if (yyvsp[-1].modelpath) {
2056 kumpf          1.21     (*s).append(yyvsp[-1].modelpath->Stringrep());
2057 mike           1.3    }
2058                       yyval.strval = s;
2059                       delete yyvsp[-2].strval;
2060                       delete yyvsp[-1].modelpath;
2061 jim.wunderlich 1.36   MOF_trace2 ("objectHandle done $$ = ", yyval.strval->getCString());
2062 kumpf          1.34 ;}
2063                         break;
2064                     
2065                       case 79:
2066 jim.wunderlich 1.36 #line 736 "cimmof.y"
2067                         {
2068                       
2069                       CIMObjectPath AOP;
2070                     
2071                       MOF_trace2("aliasInitializer $$ = ", yyval.strval->getCString());
2072                       MOF_trace2("aliasInitializer $1 = ", yyvsp[0].strval->getCString());
2073                     
2074                       g_currentAliasRef = *yyval.strval;
2075                     
2076                       MOF_trace2("aliasInitializer g_currentAliasRef = ", g_currentAliasRef.getCString());
2077                       if (cimmofParser::Instance()->getInstanceAlias(g_currentAliasRef, AOP) == 0)
2078 kumpf          1.34     {
2079 jim.wunderlich 1.36       yyerror("aliasInitializer - 'aliasIdentifier' NOT FOUND");
2080                           YYABORT;
2081                         }
2082                     
2083                       String *s = new String(AOP.toString());
2084                     
2085                       yyval.strval = s;
2086                       
2087                       delete yyvsp[0].strval;
2088                     
2089                       MOF_trace2 ("aliasInitializer done $$ = ", yyval.strval->getCString());
2090                       
2091                     ;}
2092 kumpf          1.34     break;
2093                     
2094                       case 80:
2095 jim.wunderlich 1.36 #line 764 "cimmof.y"
2096 kumpf          1.34     { ;}
2097                         break;
2098                     
2099                       case 81:
2100 jim.wunderlich 1.36 #line 765 "cimmof.y"
2101 kumpf          1.34     { yyval.strval = new String(String::EMPTY); ;}
2102                         break;
2103                     
2104                       case 82:
2105 jim.wunderlich 1.36 #line 768 "cimmof.y"
2106 kumpf          1.34     {;}
2107                         break;
2108                     
2109                       case 83:
2110 jim.wunderlich 1.36 #line 771 "cimmof.y"
2111 kumpf          1.34     {
2112 kumpf          1.23              modelPath *m = new modelPath((*yyvsp[-2].cimnameval).getString(), g_KeyBindingArray);
2113 mike           1.3               g_KeyBindingArray.clear(); 
2114 kumpf          1.34              delete yyvsp[-2].cimnameval;;}
2115                         break;
2116                     
2117                       case 84:
2118 jim.wunderlich 1.36 #line 777 "cimmof.y"
2119 kumpf          1.34     { yyval.ival = 0; ;}
2120                         break;
2121                     
2122                       case 85:
2123 jim.wunderlich 1.36 #line 778 "cimmof.y"
2124 kumpf          1.34     { yyval.ival = 0; ;}
2125                         break;
2126                     
2127                       case 86:
2128 jim.wunderlich 1.36 #line 782 "cimmof.y"
2129 kumpf          1.34     {
2130 kumpf          1.22 		CIMKeyBinding *kb = new CIMKeyBinding(*yyvsp[-2].strval, *yyvsp[0].strval,
2131 mike           1.3                                 modelPath::KeyBindingTypeOf(*yyvsp[0].strval));
2132                     		g_KeyBindingArray.append(*kb);
2133                     		delete kb;
2134                     		delete yyvsp[-2].strval;
2135 kumpf          1.34 	        delete yyvsp[0].strval; ;}
2136                         break;
2137                     
2138                       case 88:
2139 jim.wunderlich 1.36 #line 794 "cimmof.y"
2140                         {
2141 kumpf          1.35               yyval.strval = yyvsp[0].strval;
2142 jim.wunderlich 1.36 	      g_currentAliasDecl = *yyvsp[0].strval;
2143                     	      MOF_trace2("aliasIdentifier $$ = ", yyval.strval->getCString());
2144                     	      MOF_trace2("aliasIdentifier g_currentAliasDecl = ", g_currentAliasDecl.getCString());
2145                     
2146 kumpf          1.34               ;}
2147                         break;
2148                     
2149                       case 89:
2150 jim.wunderlich 1.36 #line 801 "cimmof.y"
2151                         { 
2152                                   yyval.strval = new String(String::EMPTY);
2153                                   g_currentAliasDecl = String::EMPTY;}
2154 kumpf          1.34     break;
2155                     
2156                       case 91:
2157 jim.wunderlich 1.36 #line 819 "cimmof.y"
2158 kumpf          1.34     { 
2159 mike           1.3    yyval.instance = g_currentInstance; 
2160 jim.wunderlich 1.36   if (g_currentAliasDecl != String::EMPTY)
2161                         {
2162                           MOF_trace2("instanceDeclaration g_currentAliasDecl = ", g_currentAliasDecl.getCString());
2163                           // MOF_trace2 ("instanceDeclaration instance = ", ((CIMObject *)$$)->toString().getCString());
2164                           if (cimmofParser::Instance()->addInstanceAlias(g_currentAliasDecl, yyval.instance, true) == 0)
2165                     	{
2166                     	  // Error alias already exist
2167                     	  MOF_error("ERROR: alias ALREADY EXISTS: aliasIdentifier = ",
2168                     		    g_currentAliasDecl.getCString());
2169                     	  yyerror("instanceDeclaration - 'aliasIdentifier' ALREADY EXISTS");
2170                     	  YYABORT;
2171                     	}
2172                         }
2173 kumpf          1.34 ;}
2174                         break;
2175                     
2176                       case 92:
2177 jim.wunderlich 1.36 #line 839 "cimmof.y"
2178 kumpf          1.34     {
2179 mike           1.3    if (g_currentInstance)
2180                         delete g_currentInstance;
2181 jim.wunderlich 1.36   g_currentAliasDecl = *yyvsp[0].strval;
2182 kumpf          1.16   g_currentInstance = cimmofParser::Instance()->newInstance(*yyvsp[-1].cimnameval);
2183 kumpf          1.34   // apply the qualifierlist to the current instance
2184 mike           1.3    yyval.instance = g_currentInstance;
2185 karl           1.25   applyQualifierList(&g_qualifierList, yyval.instance);
2186 kumpf          1.16   delete yyvsp[-1].cimnameval;
2187 mike           1.3    delete yyvsp[0].strval;
2188 jim.wunderlich 1.36   if (g_currentAliasDecl != String::EMPTY)
2189                         MOF_trace2("instanceHead g_currentAliasDecl = ", g_currentAliasDecl.getCString());
2190 kumpf          1.34 ;}
2191                         break;
2192                     
2193                       case 96:
2194 jim.wunderlich 1.36 #line 870 "cimmof.y"
2195 kumpf          1.34     {
2196 mike           1.3    cimmofParser *cp = cimmofParser::Instance();
2197 kumpf          1.34   // ATTN: P1 InstanceUpdate function 2001 BB  Instance update needs work here and CIMOM 
2198                       // a property.  It must be fixed in the Common code first.
2199                       // What we have to do here is create a CIMProperty  and initialize it with
2200                       // the value provided.  The name of the property is $2 and it belongs
2201                       // to the class whose name is in g_currentInstance->getClassName().
2202                       // The steps are
2203                       //   2. Get  property declaration's value object
2204 mike           1.3    CIMProperty *oldprop = cp->PropertyFromInstance(*g_currentInstance,
2205 kumpf          1.10 							*yyvsp[-3].strval);
2206 mike           1.3    CIMValue *oldv = cp->ValueFromProperty(*oldprop);
2207 kumpf          1.10 
2208 kumpf          1.34   //   3. create the new Value object of the same type
2209 kumpf          1.10 
2210 kumpf          1.34   // We want createValue to interpret a value as an array if is enclosed 
2211                       // in {}s (e.g., { 2 } or {2, 3, 5}) or it is NULL and the property is 
2212                       // defined as an array. createValue is responsible for the actual
2213                       // validation.
2214 kumpf          1.10 
2215                       CIMValue *v = valueFactory::createValue(oldv->getType(),
2216                                      ((yyvsp[-1].typedinitializer->type == CIMMOF_ARRAY_VALUE) |
2217                                       ((yyvsp[-1].typedinitializer->type == CIMMOF_NULL_VALUE) & oldprop->isArray()))?0:-1,
2218                                      (yyvsp[-1].typedinitializer->type == CIMMOF_NULL_VALUE),
2219                                      yyvsp[-1].typedinitializer->value);
2220                     
2221 e.boden        1.30 
2222 kumpf          1.34   //   4. create a clone property with the new value
2223 mike           1.3    CIMProperty *newprop = cp->copyPropertyWithNewValue(*oldprop, *v);
2224 karl           1.25 
2225 kumpf          1.34   //   5. apply the qualifiers; 
2226 karl           1.25   applyQualifierList(&g_qualifierList, newprop);
2227                     
2228 kumpf          1.34   //   6. and apply the CIMProperty to g_currentInstance.
2229 mike           1.3    cp->applyProperty(*g_currentInstance, *newprop);
2230 kumpf          1.10   delete yyvsp[-3].strval;
2231                       delete yyvsp[-1].typedinitializer->value;
2232 mike           1.3    delete oldprop;
2233                       delete oldv;
2234                       delete v;
2235                       delete newprop;
2236 kumpf          1.34 ;}
2237                         break;
2238                     
2239                       case 97:
2240 jim.wunderlich 1.36 #line 926 "cimmof.y"
2241 kumpf          1.34     {
2242                         //printf("compilerDirectiveInclude "); 
2243                     ;}
2244                         break;
2245                     
2246                       case 98:
2247 jim.wunderlich 1.36 #line 930 "cimmof.y"
2248 kumpf          1.34     {
2249                         //printf("compilerDirectivePragma ");
2250                     ;}
2251                         break;
2252                     
2253                       case 99:
2254 jim.wunderlich 1.36 #line 937 "cimmof.y"
2255 kumpf          1.34     {
2256 mike           1.3    cimmofParser::Instance()->enterInlineInclude(*yyvsp[-1].strval); delete yyvsp[-1].strval;
2257 kumpf          1.34 ;}
2258                         break;
2259                     
2260                       case 100:
2261 jim.wunderlich 1.36 #line 942 "cimmof.y"
2262 kumpf          1.34     { yyval.strval = yyvsp[0].strval; ;}
2263                         break;
2264                     
2265                       case 101:
2266 jim.wunderlich 1.36 #line 947 "cimmof.y"
2267 kumpf          1.34     { cimmofParser::Instance()->processPragma(*yyvsp[-3].strval, *yyvsp[-1].strval); 
2268 mike           1.3  		   delete yyvsp[-3].strval;
2269                     		   delete yyvsp[-1].strval;
2270 kumpf          1.34 		   ;}
2271                         break;
2272                     
2273                       case 102:
2274 jim.wunderlich 1.36 #line 965 "cimmof.y"
2275 kumpf          1.34     {
2276                     //    CIMQualifierDecl *qd = new CIMQualifierDecl($2, $3, $4, $5);
2277 kumpf          1.18 	yyval.mofqualifier = cimmofParser::Instance()->newQualifierDecl(*yyvsp[-4].strval, yyvsp[-3].value, *yyvsp[-2].scope, *yyvsp[-1].flavor);
2278 mike           1.3          delete yyvsp[-4].strval;
2279 kumpf          1.34 	delete yyvsp[-3].value;  // CIMValue object created in qualifierValue production
2280                     ;}
2281                         break;
2282                     
2283                       case 103:
2284 jim.wunderlich 1.36 #line 974 "cimmof.y"
2285 kumpf          1.34     {
2286 kumpf          1.11     yyval.value = valueFactory::createValue(yyvsp[-2].datatype, yyvsp[-1].ival, 
2287                                     yyvsp[0].typedinitializer->type == CIMMOF_NULL_VALUE, yyvsp[0].typedinitializer->value);
2288                         delete yyvsp[0].typedinitializer->value;
2289 kumpf          1.34 ;}
2290                         break;
2291                     
2292                       case 104:
2293 jim.wunderlich 1.36 #line 981 "cimmof.y"
2294 kumpf          1.34     { yyval.scope = yyvsp[-1].scope; ;}
2295                         break;
2296                     
2297                       case 105:
2298 jim.wunderlich 1.36 #line 984 "cimmof.y"
2299 kumpf          1.34     { 
2300                         g_scope = CIMScope (CIMScope::NONE); ;}
2301                         break;
2302                     
2303                       case 106:
2304 jim.wunderlich 1.36 #line 988 "cimmof.y"
2305 kumpf          1.34     { yyval.scope = yyvsp[0].scope; ;}
2306                         break;
2307                     
2308                       case 107:
2309 jim.wunderlich 1.36 #line 990 "cimmof.y"
2310 kumpf          1.34     { yyval.scope->addScope(*yyvsp[0].scope); ;}
2311                         break;
2312                     
2313                       case 108:
2314 jim.wunderlich 1.36 #line 994 "cimmof.y"
2315 kumpf          1.34     { yyval.scope = new CIMScope(CIMScope::CLASS);        ;}
2316                         break;
2317                     
2318                       case 109:
2319 jim.wunderlich 1.36 #line 996 "cimmof.y"
2320 kumpf          1.34     { yyval.scope = new CIMScope(CIMScope::CLASS); ;}
2321                         break;
2322                     
2323                       case 110:
2324 jim.wunderlich 1.36 #line 997 "cimmof.y"
2325 kumpf          1.34     { yyval.scope = new CIMScope(CIMScope::ASSOCIATION);  ;}
2326                         break;
2327                     
2328                       case 111:
2329 jim.wunderlich 1.36 #line 998 "cimmof.y"
2330 kumpf          1.34     { yyval.scope = new CIMScope(CIMScope::INDICATION);   ;}
2331                         break;
2332                     
2333                       case 112:
2334 jim.wunderlich 1.36 #line 1000 "cimmof.y"
2335 kumpf          1.34     { yyval.scope = new CIMScope(CIMScope::PROPERTY);     ;}
2336                         break;
2337                     
2338                       case 113:
2339 jim.wunderlich 1.36 #line 1001 "cimmof.y"
2340 kumpf          1.34     { yyval.scope = new CIMScope(CIMScope::REFERENCE);    ;}
2341                         break;
2342                     
2343                       case 114:
2344 jim.wunderlich 1.36 #line 1002 "cimmof.y"
2345 kumpf          1.34     { yyval.scope = new CIMScope(CIMScope::METHOD);       ;}
2346                         break;
2347                     
2348                       case 115:
2349 jim.wunderlich 1.36 #line 1003 "cimmof.y"
2350 kumpf          1.34     { yyval.scope = new CIMScope(CIMScope::PARAMETER);    ;}
2351                         break;
2352                     
2353                       case 116:
2354 jim.wunderlich 1.36 #line 1004 "cimmof.y"
2355 kumpf          1.34     { yyval.scope = new CIMScope(CIMScope::ANY);          ;}
2356                         break;
2357                     
2358                       case 117:
2359 jim.wunderlich 1.36 #line 1009 "cimmof.y"
2360 kumpf          1.34     { yyval.flavor = &g_flavor; ;}
2361                         break;
2362                     
2363                       case 118:
2364 jim.wunderlich 1.36 #line 1010 "cimmof.y"
2365 kumpf          1.34     { yyval.flavor = new CIMFlavor (CIMFlavor::NONE); ;}
2366                         break;
2367                     
2368                       case 119:
2369 jim.wunderlich 1.36 #line 1016 "cimmof.y"
2370 kumpf          1.34     {g_flavor = CIMFlavor (CIMFlavor::NONE);;}
2371                         break;
2372                     
2373                       case 122:
2374 jim.wunderlich 1.36 #line 1033 "cimmof.y"
2375 kumpf          1.34     { g_flavor.addFlavor (CIMFlavor::ENABLEOVERRIDE); ;}
2376                         break;
2377                     
2378                       case 123:
2379 jim.wunderlich 1.36 #line 1034 "cimmof.y"
2380 kumpf          1.34     { g_flavor.addFlavor (CIMFlavor::DISABLEOVERRIDE); ;}
2381                         break;
2382                     
2383                       case 124:
2384 jim.wunderlich 1.36 #line 1035 "cimmof.y"
2385 kumpf          1.34     { g_flavor.addFlavor (CIMFlavor::RESTRICTED); ;}
2386                         break;
2387                     
2388                       case 125:
2389 jim.wunderlich 1.36 #line 1036 "cimmof.y"
2390 kumpf          1.34     { g_flavor.addFlavor (CIMFlavor::TOSUBELEMENTS); ;}
2391                         break;
2392                     
2393                       case 126:
2394 jim.wunderlich 1.36 #line 1037 "cimmof.y"
2395 kumpf          1.34     { g_flavor.addFlavor (CIMFlavor::TRANSLATABLE); ;}
2396                         break;
2397                     
2398                       case 127:
2399 jim.wunderlich 1.36 #line 1040 "cimmof.y"
2400 kumpf          1.34     { yyval.flavor = &g_flavor; ;}
2401                         break;
2402                     
2403                       case 128:
2404 jim.wunderlich 1.36 #line 1041 "cimmof.y"
2405 kumpf          1.34     { yyval.flavor = new CIMFlavor (CIMFlavor::NONE); ;}
2406                         break;
2407                     
2408                       case 131:
2409 jim.wunderlich 1.36 #line 1049 "cimmof.y"
2410 kumpf          1.34     { yyval.datatype = yyvsp[0].datatype; ;}
2411                         break;
2412                     
2413                       case 132:
2414 jim.wunderlich 1.36 #line 1050 "cimmof.y"
2415 kumpf          1.34     { yyval.datatype = yyvsp[0].datatype; ;}
2416                         break;
2417                     
2418                       case 133:
2419 jim.wunderlich 1.36 #line 1051 "cimmof.y"
2420 kumpf          1.34     { yyval.datatype = CIMTYPE_STRING;   ;}
2421                         break;
2422                     
2423                       case 134:
2424 jim.wunderlich 1.36 #line 1052 "cimmof.y"
2425 kumpf          1.34     { yyval.datatype = CIMTYPE_BOOLEAN;  ;}
2426                         break;
2427                     
2428                       case 135:
2429 jim.wunderlich 1.36 #line 1053 "cimmof.y"
2430 kumpf          1.34     { yyval.datatype = CIMTYPE_DATETIME; ;}
2431                         break;
2432                     
2433                       case 136:
2434 jim.wunderlich 1.36 #line 1056 "cimmof.y"
2435 kumpf          1.34     { yyval.datatype = CIMTYPE_UINT8;  ;}
2436                         break;
2437                     
2438                       case 137:
2439 jim.wunderlich 1.36 #line 1057 "cimmof.y"
2440 kumpf          1.34     { yyval.datatype = CIMTYPE_SINT8;  ;}
2441                         break;
2442                     
2443                       case 138:
2444 jim.wunderlich 1.36 #line 1058 "cimmof.y"
2445 kumpf          1.34     { yyval.datatype = CIMTYPE_UINT16; ;}
2446                         break;
2447                     
2448                       case 139:
2449 jim.wunderlich 1.36 #line 1059 "cimmof.y"
2450 kumpf          1.34     { yyval.datatype = CIMTYPE_SINT16; ;}
2451                         break;
2452 e.boden        1.30 
2453 kumpf          1.34   case 140:
2454 jim.wunderlich 1.36 #line 1060 "cimmof.y"
2455 kumpf          1.34     { yyval.datatype = CIMTYPE_UINT32; ;}
2456                         break;
2457                     
2458                       case 141:
2459 jim.wunderlich 1.36 #line 1061 "cimmof.y"
2460 kumpf          1.34     { yyval.datatype = CIMTYPE_SINT32; ;}
2461                         break;
2462                     
2463                       case 142:
2464 jim.wunderlich 1.36 #line 1062 "cimmof.y"
2465 kumpf          1.34     { yyval.datatype = CIMTYPE_UINT64; ;}
2466                         break;
2467                     
2468                       case 143:
2469 jim.wunderlich 1.36 #line 1063 "cimmof.y"
2470 kumpf          1.34     { yyval.datatype = CIMTYPE_SINT64; ;}
2471                         break;
2472                     
2473                       case 144:
2474 jim.wunderlich 1.36 #line 1064 "cimmof.y"
2475 kumpf          1.34     { yyval.datatype = CIMTYPE_CHAR16; ;}
2476                         break;
2477                     
2478                       case 145:
2479 jim.wunderlich 1.36 #line 1067 "cimmof.y"
2480 kumpf          1.34     { yyval.datatype =CIMTYPE_REAL32; ;}
2481                         break;
2482                     
2483                       case 146:
2484 jim.wunderlich 1.36 #line 1068 "cimmof.y"
2485 kumpf          1.34     { yyval.datatype =CIMTYPE_REAL64; ;}
2486                         break;
2487                     
2488                       case 148:
2489 jim.wunderlich 1.36 #line 1081 "cimmof.y"
2490 kumpf          1.34     { 
2491                                      //yydebug = 1; stderr = stdout;
2492                                      ;}
2493                         break;
2494                     
2495                       case 149:
2496 jim.wunderlich 1.36 #line 1087 "cimmof.y"
2497 kumpf          1.34     { 
2498                     
2499                         //yydebug = 1; stderr = stdout;
2500                         YACCTRACE("qualifierListbegin");
2501                         g_qualifierList.init(); ;}
2502                         break;
2503                     
2504                       case 150:
2505 jim.wunderlich 1.36 #line 1095 "cimmof.y"
2506 kumpf          1.34     { ;}
2507                         break;
2508                     
2509                       case 151:
2510 jim.wunderlich 1.36 #line 1096 "cimmof.y"
2511 kumpf          1.34     { ;}
2512                         break;
2513                     
2514                       case 152:
2515 jim.wunderlich 1.36 #line 1101 "cimmof.y"
2516 kumpf          1.34     {
2517 mike           1.3    cimmofParser *p = cimmofParser::Instance();
2518 kumpf          1.34   // The qualifier value can't be set until we know the contents of the
2519                       // QualifierDeclaration.  That's what QualifierValue() does.
2520 kumpf          1.13   CIMValue *v = p->QualifierValue(*yyvsp[-2].strval, 
2521                                       (yyvsp[-1].typedinitializer->type == CIMMOF_NULL_VALUE), *yyvsp[-1].typedinitializer->value); 
2522 mike           1.3    yyval.qualifier = p->newQualifier(*yyvsp[-2].strval, *v, g_flavor);
2523                       g_qualifierList.add(yyval.qualifier);
2524                       delete yyvsp[-2].strval;
2525 kumpf          1.13   delete yyvsp[-1].typedinitializer->value;
2526 mike           1.3    delete v;
2527 kumpf          1.34  ;}
2528                         break;
2529                     
2530                       case 153:
2531 jim.wunderlich 1.36 #line 1116 "cimmof.y"
2532 kumpf          1.34     { 
2533                         g_flavor = CIMFlavor (CIMFlavor::NONE); ;}
2534                         break;
2535                     
2536                       case 154:
2537 jim.wunderlich 1.36 #line 1118 "cimmof.y"
2538 kumpf          1.34     { 
2539 kumpf          1.19                         yyval.strval = new String((*yyvsp[0].scope).toString ());
2540 kumpf          1.34                         g_flavor = CIMFlavor (CIMFlavor::NONE); ;}
2541                         break;
2542                     
2543                       case 155:
2544 jim.wunderlich 1.36 #line 1125 "cimmof.y"
2545 kumpf          1.34     {
2546 kumpf          1.13                     g_typedInitializerValue.type = CIMMOF_CONSTANT_VALUE;
2547                                         g_typedInitializerValue.value =  yyvsp[-1].strval;
2548                                         yyval.typedinitializer = &g_typedInitializerValue;
2549 kumpf          1.34                     ;}
2550                         break;
2551                     
2552                       case 156:
2553 jim.wunderlich 1.36 #line 1131 "cimmof.y"
2554 kumpf          1.34     {
2555 kumpf          1.13                     g_typedInitializerValue.type = CIMMOF_NULL_VALUE;
2556                                         g_typedInitializerValue.value = new String(String::EMPTY);
2557                                         yyval.typedinitializer = &g_typedInitializerValue;
2558 kumpf          1.34                     ;}
2559                         break;
2560                     
2561                       case 157:
2562 jim.wunderlich 1.36 #line 1137 "cimmof.y"
2563 kumpf          1.34     {
2564 kumpf          1.13                     g_typedInitializerValue.type = CIMMOF_ARRAY_VALUE;
2565                                         g_typedInitializerValue.value =  yyvsp[0].strval;
2566                                         yyval.typedinitializer = &g_typedInitializerValue;
2567 kumpf          1.34                     ;}
2568                         break;
2569                     
2570                       case 158:
2571 jim.wunderlich 1.36 #line 1142 "cimmof.y"
2572 kumpf          1.34     {   /* empty */
2573 kumpf          1.13                     g_typedInitializerValue.type = CIMMOF_NULL_VALUE;
2574                                         g_typedInitializerValue.value = new String(String::EMPTY);
2575                                         yyval.typedinitializer = &g_typedInitializerValue;
2576 kumpf          1.34                     ;}
2577                         break;
2578                     
2579                       case 159:
2580 jim.wunderlich 1.36 #line 1149 "cimmof.y"
2581 kumpf          1.34     { yyval.strval = yyvsp[0].strval; ;}
2582                         break;
2583                     
2584                       case 160:
2585 jim.wunderlich 1.36 #line 1152 "cimmof.y"
2586 kumpf          1.34     { yyval.strval = yyvsp[0].strval; ;}
2587                         break;
2588                     
2589                     
2590                         }
2591                     
2592                     /* Line 991 of yacc.c.  */
2593 jim.wunderlich 1.36 #line 2563 "cimmoftemp"
2594 kumpf          1.34 
2595                       yyvsp -= yylen;
2596                       yyssp -= yylen;
2597                     
2598                     
2599                       YY_STACK_PRINT (yyss, yyssp);
2600                     
2601                       *++yyvsp = yyval;
2602                     
2603                     
2604                       /* Now `shift' the result of the reduction.  Determine what state
2605                          that goes to, based on the state we popped back to and the rule
2606                          number reduced by.  */
2607                     
2608                       yyn = yyr1[yyn];
2609                     
2610                       yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2611                       if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2612                         yystate = yytable[yystate];
2613                       else
2614                         yystate = yydefgoto[yyn - YYNTOKENS];
2615 kumpf          1.34 
2616                       goto yynewstate;
2617                     
2618                     
2619                     /*------------------------------------.
2620                     | yyerrlab -- here on detecting error |
2621                     `------------------------------------*/
2622                     yyerrlab:
2623                       /* If not already recovering from an error, report this error.  */
2624                       if (!yyerrstatus)
2625                         {
2626                           ++yynerrs;
2627                     #if YYERROR_VERBOSE
2628                           yyn = yypact[yystate];
2629                     
2630                           if (YYPACT_NINF < yyn && yyn < YYLAST)
2631                     	{
2632                     	  YYSIZE_T yysize = 0;
2633                     	  int yytype = YYTRANSLATE (yychar);
2634                     	  char *yymsg;
2635                     	  int yyx, yycount;
2636 kumpf          1.34 
2637                     	  yycount = 0;
2638                     	  /* Start YYX at -YYN if negative to avoid negative indexes in
2639                     	     YYCHECK.  */
2640                     	  for (yyx = yyn < 0 ? -yyn : 0;
2641                     	       yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
2642                     	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2643                     	      yysize += yystrlen (yytname[yyx]) + 15, yycount++;
2644                     	  yysize += yystrlen ("syntax error, unexpected ") + 1;
2645                     	  yysize += yystrlen (yytname[yytype]);
2646                     	  yymsg = (char *) YYSTACK_ALLOC (yysize);
2647                     	  if (yymsg != 0)
2648                     	    {
2649                     	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
2650                     	      yyp = yystpcpy (yyp, yytname[yytype]);
2651                     
2652                     	      if (yycount < 5)
2653                     		{
2654                     		  yycount = 0;
2655                     		  for (yyx = yyn < 0 ? -yyn : 0;
2656                     		       yyx < (int) (sizeof (yytname) / sizeof (char *));
2657 kumpf          1.34 		       yyx++)
2658                     		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2659                     		      {
2660                     			const char *yyq = ! yycount ? ", expecting " : " or ";
2661                     			yyp = yystpcpy (yyp, yyq);
2662                     			yyp = yystpcpy (yyp, yytname[yyx]);
2663                     			yycount++;
2664                     		      }
2665                     		}
2666                     	      yyerror (yymsg);
2667                     	      YYSTACK_FREE (yymsg);
2668                     	    }
2669                     	  else
2670                     	    yyerror ("syntax error; also virtual memory exhausted");
2671                     	}
2672                           else
2673                     #endif /* YYERROR_VERBOSE */
2674                     	yyerror ("syntax error");
2675 mike           1.3      }
2676 kumpf          1.34 
2677                     
2678                     
2679                       if (yyerrstatus == 3)
2680 mike           1.3      {
2681 kumpf          1.34       /* If just tried and failed to reuse lookahead token after an
2682                     	 error, discard it.  */
2683                     
2684                           /* Return failure if at end of input.  */
2685                           if (yychar == YYEOF)
2686 dj.gorey       1.29         {
2687 kumpf          1.34 	  /* Pop the error token.  */
2688                               YYPOPSTACK;
2689                     	  /* Pop the rest of the stack.  */
2690                     	  while (yyss < yyssp)
2691                     	    {
2692                     	      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
2693                     	      yydestruct (yystos[*yyssp], yyvsp);
2694                     	      YYPOPSTACK;
2695                     	    }
2696                     	  YYABORT;
2697 dj.gorey       1.29         }
2698 kumpf          1.34 
2699                           YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
2700                           yydestruct (yytoken, &yylval);
2701                           yychar = YYEMPTY;
2702                     
2703 mike           1.3      }
2704 kumpf          1.34 
2705                       /* Else will try to reuse lookahead token after shifting the error
2706                          token.  */
2707                       goto yyerrlab2;
2708                     
2709                     
2710                     /*----------------------------------------------------.
2711                     | yyerrlab1 -- error raised explicitly by an action.  |
2712                     `----------------------------------------------------*/
2713                     yyerrlab1:
2714                     
2715                       /* Suppress GCC warning that yyerrlab1 is unused when no action
2716 jim.wunderlich 1.36      invokes YYERROR.  */
2717                     #if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__) \
2718                         && !defined __cplusplus
2719 kumpf          1.34   __attribute__ ((__unused__))
2720                     #endif
2721                     
2722                     
2723                       goto yyerrlab2;
2724                     
2725                     
2726                     /*---------------------------------------------------------------.
2727                     | yyerrlab2 -- pop states until the error token can be shifted.  |
2728                     `---------------------------------------------------------------*/
2729                     yyerrlab2:
2730                       yyerrstatus = 3;	/* Each real token shifted decrements this.  */
2731                     
2732                       for (;;)
2733 kumpf          1.21     {
2734 kumpf          1.34       yyn = yypact[yystate];
2735                           if (yyn != YYPACT_NINF)
2736                     	{
2737                     	  yyn += YYTERROR;
2738                     	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2739                     	    {
2740                     	      yyn = yytable[yyn];
2741                     	      if (0 < yyn)
2742                     		break;
2743                     	    }
2744                     	}
2745                     
2746                           /* Pop the current state because it cannot handle the error token.  */
2747                           if (yyssp == yyss)
2748                     	YYABORT;
2749                     
2750                           YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
2751                           yydestruct (yystos[yystate], yyvsp);
2752                           yyvsp--;
2753                           yystate = *--yyssp;
2754                     
2755 kumpf          1.34       YY_STACK_PRINT (yyss, yyssp);
2756 kumpf          1.21     }
2757 kumpf          1.34 
2758                       if (yyn == YYFINAL)
2759                         YYACCEPT;
2760                     
2761                       YYDPRINTF ((stderr, "Shifting error token, "));
2762                     
2763                       *++yyvsp = yylval;
2764                     
2765                     
2766                       yystate = yyn;
2767                       goto yynewstate;
2768                     
2769                     
2770                     /*-------------------------------------.
2771                     | yyacceptlab -- YYACCEPT comes here.  |
2772                     `-------------------------------------*/
2773                     yyacceptlab:
2774                       yyresult = 0;
2775                       goto yyreturn;
2776                     
2777                     /*-----------------------------------.
2778 kumpf          1.34 | yyabortlab -- YYABORT comes here.  |
2779                     `-----------------------------------*/
2780                     yyabortlab:
2781                       yyresult = 1;
2782                       goto yyreturn;
2783                     
2784                     #ifndef yyoverflow
2785                     /*----------------------------------------------.
2786                     | yyoverflowlab -- parser overflow comes here.  |
2787                     `----------------------------------------------*/
2788                     yyoverflowlab:
2789                       yyerror ("parser stack overflow");
2790                       yyresult = 2;
2791                       /* Fall through.  */
2792                     #endif
2793                     
2794                     yyreturn:
2795                     #ifndef yyoverflow
2796                       if (yyss != yyssa)
2797                         YYSTACK_FREE (yyss);
2798                     #endif
2799 kumpf          1.34   return yyresult;
2800 mike           1.3  }
2801 kumpf          1.34 
2802                     
2803 jim.wunderlich 1.36 #line 1154 "cimmof.y"
2804                     
2805                     
2806                     /*
2807                     **==============================================================================
2808                     **
2809                     ** MOF_error():
2810                     **
2811                     **==============================================================================
2812                     */
2813                     static void MOF_error(const char * str, const char * S)
2814                     {
2815                       printf("%s %s\n", str, S);
2816                     }
2817 kumpf          1.34 
2818 jim.wunderlich 1.36 /*
2819                     **==============================================================================
2820                     **
2821                     ** MOF_trace():
2822                     **
2823                     **==============================================================================
2824                     */
2825                     // #define DEBUG_cimmof 1
2826                     
2827                     static void MOF_trace(const char* str)
2828                     {
2829                     #ifdef DEBUG_cimmof
2830                         printf("MOF_trace(): %s \n", str);
2831                     #endif // DEBUG_cimmof
2832                     }
2833                     
2834                     static void MOF_trace2(const char * str, const char * S)
2835                     {
2836                     #ifdef DEBUG_cimmof
2837                       printf("MOF_trace2(): %s %s\n", str, S);
2838                     #endif // DEBUG_cimmof
2839 jim.wunderlich 1.36 }
2840 kumpf          1.34 

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2