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
|