OPeNDAP Hyrax Back End Server (BES)  Updated for version 3.8.3
hdfeos.tab.cc
Go to the documentation of this file.
1 /* A Bison parser, made by GNU Bison 3.0.1. */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5  Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
6 
7  This program is free software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program. If not, see <http://www.gnu.org/licenses/>. */
19 
20 /* As a special exception, you may create a larger work that contains
21  part or all of the Bison parser skeleton and distribute that work
22  under terms of your choice, so long as that work isn't itself a
23  parser generator using the skeleton or a modified version thereof
24  as a parser skeleton. Alternatively, if you modify or redistribute
25  the parser skeleton itself, you may (at your option) remove this
26  special exception, which will cause the skeleton and the resulting
27  Bison output files to be licensed under the GNU General Public
28  License without this special exception.
29 
30  This special exception was added by the Free Software Foundation in
31  version 2.2 of Bison. */
32 
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34  simplifying the original so-called "semantic" parser. */
35 
36 /* All symbols defined below should begin with yy or YY, to avoid
37  infringing on user name space. This should be done even for local
38  variables, as they might otherwise be expanded by user macros.
39  There are some unavoidable exceptions within include files to
40  define necessary library symbols; they are noted "INFRINGES ON
41  USER NAME SPACE" below. */
42 
43 /* Identify Bison output. */
44 #define YYBISON 1
45 
46 /* Bison version. */
47 #define YYBISON_VERSION "3.0.1"
48 
49 /* Skeleton name. */
50 #define YYSKELETON_NAME "yacc.c"
51 
52 /* Pure parsers. */
53 #define YYPURE 0
54 
55 /* Push parsers. */
56 #define YYPUSH 0
57 
58 /* Pull parsers. */
59 #define YYPULL 1
60 
61 
62 /* Substitute the variable and function names. */
63 #define yyparse hdfeosparse
64 #define yylex hdfeoslex
65 #define yyerror hdfeoserror
66 #define yydebug hdfeosdebug
67 #define yynerrs hdfeosnerrs
68 
69 #define yylval hdfeoslval
70 #define yychar hdfeoschar
71 
72 /* Copy the first part of user declarations. */
73 
74 #line 75 "hdfeos.tab.cc" /* yacc.c:339 */
75 
76 # ifndef YY_NULLPTR
77 # if defined __cplusplus && 201103L <= __cplusplus
78 # define YY_NULLPTR nullptr
79 # else
80 # define YY_NULLPTR 0
81 # endif
82 # endif
83 
84 /* Enabling verbose error messages. */
85 #ifdef YYERROR_VERBOSE
86 # undef YYERROR_VERBOSE
87 # define YYERROR_VERBOSE 1
88 #else
89 # define YYERROR_VERBOSE 0
90 #endif
91 
92 /* In a future release of Bison, this section will be replaced
93  by #include "hdfeos.tab.hh". */
94 #ifndef YY_HDFEOS_HDFEOS_TAB_HH_INCLUDED
95 # define YY_HDFEOS_HDFEOS_TAB_HH_INCLUDED
96 /* Debug traces. */
97 #ifndef YYDEBUG
98 # define YYDEBUG 1
99 #endif
100 #if YYDEBUG
101 extern int hdfeosdebug;
102 #endif
103 /* "%code requires" blocks. */
104 #line 31 "hdfeos.yy" /* yacc.c:355 */
105 
106 
107 #define YYSTYPE char *
108 #define YYDEBUG 1
109 
110 // static char rcsid[] not_used = {"$Id$"};
111 
112 #include <stdio.h>
113 #include <stdlib.h>
114 #include <string>
115 #include <iostream>
116 #include <assert.h>
117 
118 #include <vector>
119 #include <sstream>
120 
121 using namespace std;
122 
123 #include "DAS.h"
124 #include "Error.h"
125 #include "BESDebug.h"
126 #include "parser.h"
127 //#include "hdfeos.tab.hh"
128 
129 #ifdef TRACE_NEW
130 #include "trace_new.h"
131 #endif
132 
133 using namespace libdap ;
134 
135 // These macros are used to access the `arguments' passed to the parser. A
136 // pointer to an error object and a pointer to an integer status variable are
137 // passed in to the parser within a structure (which itself is passed as a
138 // pointer). Note that the ERROR macro explicitly casts OBJ to an ERROR *.
139 
140 #define ATTR_OBJ(arg) ((AttrTable *)((parser_arg *)(arg))->_object)
141 #define ERROR_OBJ(arg) ((parser_arg *)(arg))->_error
142 #define STATUS(arg) ((parser_arg *)(arg))->_status
143 
144 // #define YYPARSE_PARAM arg
145 
146 extern int hdfeos_line_num; /* defined in hdfeos.lex */
147 
148 
149 #line 150 "hdfeos.tab.cc" /* yacc.c:355 */
150 
151 /* Token type. */
152 #ifndef YYTOKENTYPE
153 # define YYTOKENTYPE
155  {
156  GROUP = 258,
157  END_GROUP = 259,
158  OBJECT = 260,
159  END_OBJECT = 261,
160  END = 262,
161  INT = 263,
162  FLOAT = 264,
163  STR = 265,
164  COMMENT = 266
165  };
166 #endif
167 
168 /* Value type. */
169 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
170 typedef int YYSTYPE;
171 # define YYSTYPE_IS_TRIVIAL 1
172 # define YYSTYPE_IS_DECLARED 1
173 #endif
174 
175 
176 extern YYSTYPE hdfeoslval;
177 
178 int hdfeosparse (parser_arg *arg);
179 
180 #endif /* !YY_HDFEOS_HDFEOS_TAB_HH_INCLUDED */
181 
182 /* Copy the second part of user declarations. */
183 
184 #line 185 "hdfeos.tab.cc" /* yacc.c:358 */
185 /* Unqualified %code blocks. */
186 #line 76 "hdfeos.yy" /* yacc.c:359 */
187 
188 
189 static string name; /* holds name in attr_pair rule */
190 static string type; /* holds type in attr_pair rule */
191 static string last_grid_swath; /* holds HDF-EOS name for aliasing */
192 static int commentnum=0; /* number of current comment */
193 
194 using namespace libdap;
195 
196 static vector<AttrTable *> *attr_tab_stack;
197 
198 // I use a vector of AttrTable pointers for a stack
199 
200 #define TOP_OF_STACK (attr_tab_stack->back())
201 #define SECOND_IN_STACK ((*attr_tab_stack)[attr_tab_stack->size()-2])
202 #define PUSH(x) (attr_tab_stack->push_back(x))
203 #define POP (attr_tab_stack->pop_back())
204 #define STACK_LENGTH (attr_tab_stack->size())
205 #define STACK_EMPTY (attr_tab_stack->empty())
206 
207 #define TYPE_NAME_VALUE(x) type << " " << name << " " << (x)
208 
209 #if 0
210 static const char *NO_DAS_MSG =
211 "The attribute object returned from the dataset was null\n\
212 Check that the URL is correct.";
213 #endif
214 
215 void mem_list_report();
216 int hdfeoslex(void);
217 void hdfeoserror(parser_arg *arg, const char *s);
218 static void process_group(parser_arg *arg, const string &s);
219 
220 
221 #line 222 "hdfeos.tab.cc" /* yacc.c:359 */
222 
223 #ifdef short
224 # undef short
225 #endif
226 
227 #ifdef YYTYPE_UINT8
228 typedef YYTYPE_UINT8 yytype_uint8;
229 #else
230 typedef unsigned char yytype_uint8;
231 #endif
232 
233 #ifdef YYTYPE_INT8
234 typedef YYTYPE_INT8 yytype_int8;
235 #else
236 typedef signed char yytype_int8;
237 #endif
238 
239 #ifdef YYTYPE_UINT16
240 typedef YYTYPE_UINT16 yytype_uint16;
241 #else
242 typedef unsigned short int yytype_uint16;
243 #endif
244 
245 #ifdef YYTYPE_INT16
246 typedef YYTYPE_INT16 yytype_int16;
247 #else
248 typedef short int yytype_int16;
249 #endif
250 
251 #ifndef YYSIZE_T
252 # ifdef __SIZE_TYPE__
253 # define YYSIZE_T __SIZE_TYPE__
254 # elif defined size_t
255 # define YYSIZE_T size_t
256 # elif ! defined YYSIZE_T
257 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
258 # define YYSIZE_T size_t
259 # else
260 # define YYSIZE_T unsigned int
261 # endif
262 #endif
263 
264 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
265 
266 #ifndef YY_
267 # if defined YYENABLE_NLS && YYENABLE_NLS
268 # if ENABLE_NLS
269 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
270 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
271 # endif
272 # endif
273 # ifndef YY_
274 # define YY_(Msgid) Msgid
275 # endif
276 #endif
277 
278 #ifndef YY_ATTRIBUTE
279 # if (defined __GNUC__ \
280  && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
281  || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
282 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
283 # else
284 # define YY_ATTRIBUTE(Spec) /* empty */
285 # endif
286 #endif
287 
288 #ifndef YY_ATTRIBUTE_PURE
289 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
290 #endif
291 
292 #ifndef YY_ATTRIBUTE_UNUSED
293 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
294 #endif
295 
296 #if !defined _Noreturn \
297  && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
298 # if defined _MSC_VER && 1200 <= _MSC_VER
299 # define _Noreturn __declspec (noreturn)
300 # else
301 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
302 # endif
303 #endif
304 
305 /* Suppress unused-variable warnings by "using" E. */
306 #if ! defined lint || defined __GNUC__
307 # define YYUSE(E) ((void) (E))
308 #else
309 # define YYUSE(E) /* empty */
310 #endif
311 
312 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
313 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
314 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
315  _Pragma ("GCC diagnostic push") \
316  _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
317  _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
318 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
319  _Pragma ("GCC diagnostic pop")
320 #else
321 # define YY_INITIAL_VALUE(Value) Value
322 #endif
323 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
324 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
325 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
326 #endif
327 #ifndef YY_INITIAL_VALUE
328 # define YY_INITIAL_VALUE(Value) /* Nothing. */
329 #endif
330 
331 
332 #if ! defined yyoverflow || YYERROR_VERBOSE
333 
334 /* The parser invokes alloca or malloc; define the necessary symbols. */
335 
336 # ifdef YYSTACK_USE_ALLOCA
337 # if YYSTACK_USE_ALLOCA
338 # ifdef __GNUC__
339 # define YYSTACK_ALLOC __builtin_alloca
340 # elif defined __BUILTIN_VA_ARG_INCR
341 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
342 # elif defined _AIX
343 # define YYSTACK_ALLOC __alloca
344 # elif defined _MSC_VER
345 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
346 # define alloca _alloca
347 # else
348 # define YYSTACK_ALLOC alloca
349 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
350 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
351  /* Use EXIT_SUCCESS as a witness for stdlib.h. */
352 # ifndef EXIT_SUCCESS
353 # define EXIT_SUCCESS 0
354 # endif
355 # endif
356 # endif
357 # endif
358 # endif
359 
360 # ifdef YYSTACK_ALLOC
361  /* Pacify GCC's 'empty if-body' warning. */
362 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
363 # ifndef YYSTACK_ALLOC_MAXIMUM
364  /* The OS might guarantee only one guard page at the bottom of the stack,
365  and a page size can be as small as 4096 bytes. So we cannot safely
366  invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
367  to allow for a few compiler-allocated temporary stack slots. */
368 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
369 # endif
370 # else
371 # define YYSTACK_ALLOC YYMALLOC
372 # define YYSTACK_FREE YYFREE
373 # ifndef YYSTACK_ALLOC_MAXIMUM
374 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
375 # endif
376 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
377  && ! ((defined YYMALLOC || defined malloc) \
378  && (defined YYFREE || defined free)))
379 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
380 # ifndef EXIT_SUCCESS
381 # define EXIT_SUCCESS 0
382 # endif
383 # endif
384 # ifndef YYMALLOC
385 # define YYMALLOC malloc
386 # if ! defined malloc && ! defined EXIT_SUCCESS
387 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
388 # endif
389 # endif
390 # ifndef YYFREE
391 # define YYFREE free
392 # if ! defined free && ! defined EXIT_SUCCESS
393 void free (void *); /* INFRINGES ON USER NAME SPACE */
394 # endif
395 # endif
396 # endif
397 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
398 
399 
400 #if (! defined yyoverflow \
401  && (! defined __cplusplus \
402  || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
403 
404 /* A type that is properly aligned for any stack member. */
405 union yyalloc
406 {
407  yytype_int16 yyss_alloc;
408  YYSTYPE yyvs_alloc;
409 };
410 
411 /* The size of the maximum gap between one aligned stack and the next. */
412 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
413 
414 /* The size of an array large to enough to hold all stacks, each with
415  N elements. */
416 # define YYSTACK_BYTES(N) \
417  ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
418  + YYSTACK_GAP_MAXIMUM)
419 
420 # define YYCOPY_NEEDED 1
421 
422 /* Relocate STACK from its old location to the new one. The
423  local variables YYSIZE and YYSTACKSIZE give the old and new number of
424  elements in the stack, and YYPTR gives the new location of the
425  stack. Advance YYPTR to a properly aligned location for the next
426  stack. */
427 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
428  do \
429  { \
430  YYSIZE_T yynewbytes; \
431  YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
432  Stack = &yyptr->Stack_alloc; \
433  yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
434  yyptr += yynewbytes / sizeof (*yyptr); \
435  } \
436  while (0)
437 
438 #endif
439 
440 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
441 /* Copy COUNT objects from SRC to DST. The source and destination do
442  not overlap. */
443 # ifndef YYCOPY
444 # if defined __GNUC__ && 1 < __GNUC__
445 # define YYCOPY(Dst, Src, Count) \
446  __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
447 # else
448 # define YYCOPY(Dst, Src, Count) \
449  do \
450  { \
451  YYSIZE_T yyi; \
452  for (yyi = 0; yyi < (Count); yyi++) \
453  (Dst)[yyi] = (Src)[yyi]; \
454  } \
455  while (0)
456 # endif
457 # endif
458 #endif /* !YYCOPY_NEEDED */
459 
460 /* YYFINAL -- State number of the termination state. */
461 #define YYFINAL 3
462 /* YYLAST -- Last index in YYTABLE. */
463 #define YYLAST 71
464 
465 /* YYNTOKENS -- Number of terminals. */
466 #define YYNTOKENS 16
467 /* YYNNTS -- Number of nonterminals. */
468 #define YYNNTS 17
469 /* YYNRULES -- Number of rules. */
470 #define YYNRULES 33
471 /* YYNSTATES -- Number of states. */
472 #define YYNSTATES 54
473 
474 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
475  by yylex, with out-of-bounds checking. */
476 #define YYUNDEFTOK 2
477 #define YYMAXUTOK 266
478 
479 #define YYTRANSLATE(YYX) \
480  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
481 
482 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
483  as returned by yylex, without out-of-bounds checking. */
484 static const yytype_uint8 yytranslate[] =
485 {
486  0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
487  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
488  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
489  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
490  13, 14, 2, 2, 15, 2, 2, 2, 2, 2,
491  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
492  2, 12, 2, 2, 2, 2, 2, 2, 2, 2,
493  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
494  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
495  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
496  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
497  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
498  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
499  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
500  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
501  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
502  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
503  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
504  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
505  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
506  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
507  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
508  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
509  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
510  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
511  2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
512  5, 6, 7, 8, 9, 10, 11
513 };
514 
515 #if YYDEBUG
516  /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
517 static const yytype_uint16 yyrline[] =
518 {
519  0, 172, 172, 172, 177, 181, 185, 180, 193, 197,
520  192, 205, 204, 210, 233, 258, 259, 260, 263, 264,
521  265, 266, 272, 273, 276, 300, 320, 337, 356, 373,
522  392, 392, 395, 419
523 };
524 #endif
525 
526 #if YYDEBUG || YYERROR_VERBOSE || 0
527 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
528  First, the terminals, then, starting at YYNTOKENS, nonterminals. */
529 static const char *const yytname[] =
530 {
531  "$end", "error", "$undefined", "GROUP", "END_GROUP", "OBJECT",
532  "END_OBJECT", "END", "INT", "FLOAT", "STR", "COMMENT", "'='", "'('",
533  "')'", "','", "$accept", "attributes", "$@1", "attribute", "$@2", "$@3",
534  "$@4", "$@5", "$@6", "attr_list", "data", "data2", "ints", "floats",
535  "floatints", "float_or_int", "strs", YY_NULLPTR
536 };
537 #endif
538 
539 # ifdef YYPRINT
540 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
541  (internal) symbol number NUM (which must be that of a token). */
542 static const yytype_uint16 yytoknum[] =
543 {
544  0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
545  265, 266, 61, 40, 41, 44
546 };
547 # endif
548 
549 #define YYPACT_NINF -9
550 
551 #define yypact_value_is_default(Yystate) \
552  (!!((Yystate) == (-9)))
553 
554 #define YYTABLE_NINF -16
555 
556 #define yytable_value_is_error(Yytable_value) \
557  0
558 
559  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
560  STATE-NUM. */
561 static const yytype_int8 yypact[] =
562 {
563  -9, 2, 52, -9, -9, -8, 11, -9, -9, -9,
564  -9, 1, 4, 14, -9, -9, 51, 5, 19, -9,
565  -9, -9, 9, -9, 6, 17, 23, -9, 30, 41,
566  -9, -9, 25, 33, -9, 23, 35, 36, 39, -9,
567  46, 48, -9, 28, -9, -9, -9, 44, 53, -9,
568  56, 57, -9, -9
569 };
570 
571  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
572  Performed when YYTABLE does not specify something else to do. Zero
573  means the default is an error. */
574 static const yytype_uint8 yydefact[] =
575 {
576  2, 0, 0, 1, 14, 0, 0, 11, 13, 4,
577  3, 0, 0, 0, 5, 8, 0, 0, 0, 24,
578  26, 32, 0, 12, 18, 19, 20, 16, 0, 0,
579  31, 30, 0, 22, 28, 23, 0, 0, 0, 17,
580  0, 0, 21, 0, 25, 27, 33, 0, 0, 29,
581  0, 0, 7, 10
582 };
583 
584  /* YYPGOTO[NTERM-NUM]. */
585 static const yytype_int8 yypgoto[] =
586 {
587  -9, -9, -9, -1, -9, -9, -9, -9, -9, 40,
588  -9, -9, -9, -9, -9, 26, 49
589 };
590 
591  /* YYDEFGOTO[NTERM-NUM]. */
592 static const yytype_int8 yydefgoto[] =
593 {
594  -1, 1, 2, 27, 17, 40, 18, 41, 13, 28,
595  23, 32, 24, 25, 33, 34, 26
596 };
597 
598  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
599  positive, shift that token. If negative, reduce the rule whose
600  number is the opposite. If YYTABLE_NINF, syntax error. */
601 static const yytype_int8 yytable[] =
602 {
603  9, 10, 3, 4, 11, 5, 4, 6, 5, -15,
604  6, 14, 7, 8, 15, 7, 8, 30, 31, 21,
605  4, 36, 5, 12, 6, -15, 16, 39, 39, 7,
606  8, 4, 37, 5, -6, 6, 30, 31, 38, 42,
607  7, 8, 4, 44, 5, 45, 6, -9, 43, 46,
608  47, 7, 8, 4, 48, 5, 50, 6, 29, 19,
609  20, 21, 7, 8, 22, 51, 52, 53, 0, 49,
610  0, 35
611 };
612 
613 static const yytype_int8 yycheck[] =
614 {
615  1, 2, 0, 1, 12, 3, 1, 5, 3, 4,
616  5, 10, 10, 11, 10, 10, 11, 8, 9, 10,
617  1, 15, 3, 12, 5, 6, 12, 28, 29, 10,
618  11, 1, 15, 3, 4, 5, 8, 9, 15, 14,
619  10, 11, 1, 8, 3, 9, 5, 6, 15, 10,
620  4, 10, 11, 1, 6, 3, 12, 5, 18, 8,
621  9, 10, 10, 11, 13, 12, 10, 10, -1, 43,
622  -1, 22
623 };
624 
625  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
626  symbol of state STATE-NUM. */
627 static const yytype_uint8 yystos[] =
628 {
629  0, 17, 18, 0, 1, 3, 5, 10, 11, 19,
630  19, 12, 12, 24, 10, 10, 12, 20, 22, 8,
631  9, 10, 13, 26, 28, 29, 32, 19, 25, 25,
632  8, 9, 27, 30, 31, 32, 15, 15, 15, 19,
633  21, 23, 14, 15, 8, 9, 10, 4, 6, 31,
634  12, 12, 10, 10
635 };
636 
637  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
638 static const yytype_uint8 yyr1[] =
639 {
640  0, 16, 18, 17, 17, 20, 21, 19, 22, 23,
641  19, 24, 19, 19, 19, 25, 25, 25, 26, 26,
642  26, 26, 27, 27, 28, 28, 29, 29, 30, 30,
643  31, 31, 32, 32
644 };
645 
646  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
647 static const yytype_uint8 yyr2[] =
648 {
649  0, 2, 0, 2, 2, 0, 0, 9, 0, 0,
650  9, 0, 4, 1, 1, 0, 1, 2, 1, 1,
651  1, 3, 1, 1, 1, 3, 1, 3, 1, 3,
652  1, 1, 1, 3
653 };
654 
655 
656 #define yyerrok (yyerrstatus = 0)
657 #define yyclearin (yychar = YYEMPTY)
658 #define YYEMPTY (-2)
659 #define YYEOF 0
660 
661 #define YYACCEPT goto yyacceptlab
662 #define YYABORT goto yyabortlab
663 #define YYERROR goto yyerrorlab
664 
665 
666 #define YYRECOVERING() (!!yyerrstatus)
667 
668 #define YYBACKUP(Token, Value) \
669 do \
670  if (yychar == YYEMPTY) \
671  { \
672  yychar = (Token); \
673  yylval = (Value); \
674  YYPOPSTACK (yylen); \
675  yystate = *yyssp; \
676  goto yybackup; \
677  } \
678  else \
679  { \
680  yyerror (arg, YY_("syntax error: cannot back up")); \
681  YYERROR; \
682  } \
683 while (0)
684 
685 /* Error token number */
686 #define YYTERROR 1
687 #define YYERRCODE 256
688 
689 
690 
691 /* Enable debugging if requested. */
692 #if YYDEBUG
693 
694 # ifndef YYFPRINTF
695 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
696 # define YYFPRINTF fprintf
697 # endif
698 
699 # define YYDPRINTF(Args) \
700 do { \
701  if (yydebug) \
702  YYFPRINTF Args; \
703 } while (0)
704 
705 /* This macro is provided for backward compatibility. */
706 #ifndef YY_LOCATION_PRINT
707 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
708 #endif
709 
710 
711 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
712 do { \
713  if (yydebug) \
714  { \
715  YYFPRINTF (stderr, "%s ", Title); \
716  yy_symbol_print (stderr, \
717  Type, Value, arg); \
718  YYFPRINTF (stderr, "\n"); \
719  } \
720 } while (0)
721 
722 
723 /*----------------------------------------.
724 | Print this symbol's value on YYOUTPUT. |
725 `----------------------------------------*/
726 
727 static void
728 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_arg *arg)
729 {
730  FILE *yyo = yyoutput;
731  YYUSE (yyo);
732  YYUSE (arg);
733  if (!yyvaluep)
734  return;
735 # ifdef YYPRINT
736  if (yytype < YYNTOKENS)
737  YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
738 # endif
739  YYUSE (yytype);
740 }
741 
742 
743 /*--------------------------------.
744 | Print this symbol on YYOUTPUT. |
745 `--------------------------------*/
746 
747 static void
748 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_arg *arg)
749 {
750  YYFPRINTF (yyoutput, "%s %s (",
751  yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
752 
753  yy_symbol_value_print (yyoutput, yytype, yyvaluep, arg);
754  YYFPRINTF (yyoutput, ")");
755 }
756 
757 /*------------------------------------------------------------------.
758 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
759 | TOP (included). |
760 `------------------------------------------------------------------*/
761 
762 static void
763 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
764 {
765  YYFPRINTF (stderr, "Stack now");
766  for (; yybottom <= yytop; yybottom++)
767  {
768  int yybot = *yybottom;
769  YYFPRINTF (stderr, " %d", yybot);
770  }
771  YYFPRINTF (stderr, "\n");
772 }
773 
774 # define YY_STACK_PRINT(Bottom, Top) \
775 do { \
776  if (yydebug) \
777  yy_stack_print ((Bottom), (Top)); \
778 } while (0)
779 
780 
781 /*------------------------------------------------.
782 | Report that the YYRULE is going to be reduced. |
783 `------------------------------------------------*/
784 
785 static void
786 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, parser_arg *arg)
787 {
788  unsigned long int yylno = yyrline[yyrule];
789  int yynrhs = yyr2[yyrule];
790  int yyi;
791  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
792  yyrule - 1, yylno);
793  /* The symbols being reduced. */
794  for (yyi = 0; yyi < yynrhs; yyi++)
795  {
796  YYFPRINTF (stderr, " $%d = ", yyi + 1);
797  yy_symbol_print (stderr,
798  yystos[yyssp[yyi + 1 - yynrhs]],
799  &(yyvsp[(yyi + 1) - (yynrhs)])
800  , arg);
801  YYFPRINTF (stderr, "\n");
802  }
803 }
804 
805 # define YY_REDUCE_PRINT(Rule) \
806 do { \
807  if (yydebug) \
808  yy_reduce_print (yyssp, yyvsp, Rule, arg); \
809 } while (0)
810 
811 /* Nonzero means print parse trace. It is left uninitialized so that
812  multiple parsers can coexist. */
814 #else /* !YYDEBUG */
815 # define YYDPRINTF(Args)
816 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
817 # define YY_STACK_PRINT(Bottom, Top)
818 # define YY_REDUCE_PRINT(Rule)
819 #endif /* !YYDEBUG */
820 
821 
822 /* YYINITDEPTH -- initial size of the parser's stacks. */
823 #ifndef YYINITDEPTH
824 # define YYINITDEPTH 200
825 #endif
826 
827 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
828  if the built-in stack extension method is used).
829 
830  Do not make this value too large; the results are undefined if
831  YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
832  evaluated with infinite-precision integer arithmetic. */
833 
834 #ifndef YYMAXDEPTH
835 # define YYMAXDEPTH 10000
836 #endif
837 
838 
839 #if YYERROR_VERBOSE
840 
841 # ifndef yystrlen
842 # if defined __GLIBC__ && defined _STRING_H
843 # define yystrlen strlen
844 # else
845 /* Return the length of YYSTR. */
846 static YYSIZE_T
847 yystrlen (const char *yystr)
848 {
849  YYSIZE_T yylen;
850  for (yylen = 0; yystr[yylen]; yylen++)
851  continue;
852  return yylen;
853 }
854 # endif
855 # endif
856 
857 # ifndef yystpcpy
858 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
859 # define yystpcpy stpcpy
860 # else
861 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
862  YYDEST. */
863 static char *
864 yystpcpy (char *yydest, const char *yysrc)
865 {
866  char *yyd = yydest;
867  const char *yys = yysrc;
868 
869  while ((*yyd++ = *yys++) != '\0')
870  continue;
871 
872  return yyd - 1;
873 }
874 # endif
875 # endif
876 
877 # ifndef yytnamerr
878 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
879  quotes and backslashes, so that it's suitable for yyerror. The
880  heuristic is that double-quoting is unnecessary unless the string
881  contains an apostrophe, a comma, or backslash (other than
882  backslash-backslash). YYSTR is taken from yytname. If YYRES is
883  null, do not copy; instead, return the length of what the result
884  would have been. */
885 static YYSIZE_T
886 yytnamerr (char *yyres, const char *yystr)
887 {
888  if (*yystr == '"')
889  {
890  YYSIZE_T yyn = 0;
891  char const *yyp = yystr;
892 
893  for (;;)
894  switch (*++yyp)
895  {
896  case '\'':
897  case ',':
898  goto do_not_strip_quotes;
899 
900  case '\\':
901  if (*++yyp != '\\')
902  goto do_not_strip_quotes;
903  /* Fall through. */
904  default:
905  if (yyres)
906  yyres[yyn] = *yyp;
907  yyn++;
908  break;
909 
910  case '"':
911  if (yyres)
912  yyres[yyn] = '\0';
913  return yyn;
914  }
915  do_not_strip_quotes: ;
916  }
917 
918  if (! yyres)
919  return yystrlen (yystr);
920 
921  return yystpcpy (yyres, yystr) - yyres;
922 }
923 # endif
924 
925 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
926  about the unexpected token YYTOKEN for the state stack whose top is
927  YYSSP.
928 
929  Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
930  not large enough to hold the message. In that case, also set
931  *YYMSG_ALLOC to the required number of bytes. Return 2 if the
932  required number of bytes is too large to store. */
933 static int
934 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
935  yytype_int16 *yyssp, int yytoken)
936 {
937  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
938  YYSIZE_T yysize = yysize0;
939  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
940  /* Internationalized format string. */
941  const char *yyformat = YY_NULLPTR;
942  /* Arguments of yyformat. */
943  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
944  /* Number of reported tokens (one for the "unexpected", one per
945  "expected"). */
946  int yycount = 0;
947 
948  /* There are many possibilities here to consider:
949  - If this state is a consistent state with a default action, then
950  the only way this function was invoked is if the default action
951  is an error action. In that case, don't check for expected
952  tokens because there are none.
953  - The only way there can be no lookahead present (in yychar) is if
954  this state is a consistent state with a default action. Thus,
955  detecting the absence of a lookahead is sufficient to determine
956  that there is no unexpected or expected token to report. In that
957  case, just report a simple "syntax error".
958  - Don't assume there isn't a lookahead just because this state is a
959  consistent state with a default action. There might have been a
960  previous inconsistent state, consistent state with a non-default
961  action, or user semantic action that manipulated yychar.
962  - Of course, the expected token list depends on states to have
963  correct lookahead information, and it depends on the parser not
964  to perform extra reductions after fetching a lookahead from the
965  scanner and before detecting a syntax error. Thus, state merging
966  (from LALR or IELR) and default reductions corrupt the expected
967  token list. However, the list is correct for canonical LR with
968  one exception: it will still contain any token that will not be
969  accepted due to an error action in a later state.
970  */
971  if (yytoken != YYEMPTY)
972  {
973  int yyn = yypact[*yyssp];
974  yyarg[yycount++] = yytname[yytoken];
975  if (!yypact_value_is_default (yyn))
976  {
977  /* Start YYX at -YYN if negative to avoid negative indexes in
978  YYCHECK. In other words, skip the first -YYN actions for
979  this state because they are default actions. */
980  int yyxbegin = yyn < 0 ? -yyn : 0;
981  /* Stay within bounds of both yycheck and yytname. */
982  int yychecklim = YYLAST - yyn + 1;
983  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
984  int yyx;
985 
986  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
987  if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
988  && !yytable_value_is_error (yytable[yyx + yyn]))
989  {
990  if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
991  {
992  yycount = 1;
993  yysize = yysize0;
994  break;
995  }
996  yyarg[yycount++] = yytname[yyx];
997  {
998  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
999  if (! (yysize <= yysize1
1000  && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1001  return 2;
1002  yysize = yysize1;
1003  }
1004  }
1005  }
1006  }
1007 
1008  switch (yycount)
1009  {
1010 # define YYCASE_(N, S) \
1011  case N: \
1012  yyformat = S; \
1013  break
1014  YYCASE_(0, YY_("syntax error"));
1015  YYCASE_(1, YY_("syntax error, unexpected %s"));
1016  YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1017  YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1018  YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1019  YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1020 # undef YYCASE_
1021  }
1022 
1023  {
1024  YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1025  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1026  return 2;
1027  yysize = yysize1;
1028  }
1029 
1030  if (*yymsg_alloc < yysize)
1031  {
1032  *yymsg_alloc = 2 * yysize;
1033  if (! (yysize <= *yymsg_alloc
1034  && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1035  *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1036  return 1;
1037  }
1038 
1039  /* Avoid sprintf, as that infringes on the user's name space.
1040  Don't have undefined behavior even if the translation
1041  produced a string with the wrong number of "%s"s. */
1042  {
1043  char *yyp = *yymsg;
1044  int yyi = 0;
1045  while ((*yyp = *yyformat) != '\0')
1046  if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1047  {
1048  yyp += yytnamerr (yyp, yyarg[yyi++]);
1049  yyformat += 2;
1050  }
1051  else
1052  {
1053  yyp++;
1054  yyformat++;
1055  }
1056  }
1057  return 0;
1058 }
1059 #endif /* YYERROR_VERBOSE */
1060 
1061 /*-----------------------------------------------.
1062 | Release the memory associated to this symbol. |
1063 `-----------------------------------------------*/
1064 
1065 static void
1066 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, parser_arg *arg)
1067 {
1068  YYUSE (yyvaluep);
1069  YYUSE (arg);
1070  if (!yymsg)
1071  yymsg = "Deleting";
1072  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1073 
1075  YYUSE (yytype);
1077 }
1078 
1079 
1080 
1081 
1082 /* The lookahead symbol. */
1084 
1085 /* The semantic value of the lookahead symbol. */
1087 /* Number of syntax errors so far. */
1089 
1090 
1091 /*----------.
1092 | yyparse. |
1093 `----------*/
1094 
1095 int
1096 yyparse (parser_arg *arg)
1097 {
1098  int yystate;
1099  /* Number of tokens to shift before error messages enabled. */
1100  int yyerrstatus;
1101 
1102  /* The stacks and their tools:
1103  'yyss': related to states.
1104  'yyvs': related to semantic values.
1105 
1106  Refer to the stacks through separate pointers, to allow yyoverflow
1107  to reallocate them elsewhere. */
1108 
1109  /* The state stack. */
1110  yytype_int16 yyssa[YYINITDEPTH];
1111  yytype_int16 *yyss;
1112  yytype_int16 *yyssp;
1113 
1114  /* The semantic value stack. */
1115  YYSTYPE yyvsa[YYINITDEPTH];
1116  YYSTYPE *yyvs;
1117  YYSTYPE *yyvsp;
1118 
1119  YYSIZE_T yystacksize;
1120 
1121  int yyn;
1122  int yyresult;
1123  /* Lookahead token as an internal (translated) token number. */
1124  int yytoken = 0;
1125  /* The variables used to return semantic value and location from the
1126  action routines. */
1127  YYSTYPE yyval;
1128 
1129 #if YYERROR_VERBOSE
1130  /* Buffer for error messages, and its allocated size. */
1131  char yymsgbuf[128];
1132  char *yymsg = yymsgbuf;
1133  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1134 #endif
1135 
1136 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1137 
1138  /* The number of symbols on the RHS of the reduced rule.
1139  Keep to zero when no symbol should be popped. */
1140  int yylen = 0;
1141 
1142  yyssp = yyss = yyssa;
1143  yyvsp = yyvs = yyvsa;
1144  yystacksize = YYINITDEPTH;
1145 
1146  YYDPRINTF ((stderr, "Starting parse\n"));
1147 
1148  yystate = 0;
1149  yyerrstatus = 0;
1150  yynerrs = 0;
1151  yychar = YYEMPTY; /* Cause a token to be read. */
1152  goto yysetstate;
1153 
1154 /*------------------------------------------------------------.
1155 | yynewstate -- Push a new state, which is found in yystate. |
1156 `------------------------------------------------------------*/
1157  yynewstate:
1158  /* In all cases, when you get here, the value and location stacks
1159  have just been pushed. So pushing a state here evens the stacks. */
1160  yyssp++;
1161 
1162  yysetstate:
1163  *yyssp = yystate;
1164 
1165  if (yyss + yystacksize - 1 <= yyssp)
1166  {
1167  /* Get the current used size of the three stacks, in elements. */
1168  YYSIZE_T yysize = yyssp - yyss + 1;
1169 
1170 #ifdef yyoverflow
1171  {
1172  /* Give user a chance to reallocate the stack. Use copies of
1173  these so that the &'s don't force the real ones into
1174  memory. */
1175  YYSTYPE *yyvs1 = yyvs;
1176  yytype_int16 *yyss1 = yyss;
1177 
1178  /* Each stack pointer address is followed by the size of the
1179  data in use in that stack, in bytes. This used to be a
1180  conditional around just the two extra args, but that might
1181  be undefined if yyoverflow is a macro. */
1182  yyoverflow (YY_("memory exhausted"),
1183  &yyss1, yysize * sizeof (*yyssp),
1184  &yyvs1, yysize * sizeof (*yyvsp),
1185  &yystacksize);
1186 
1187  yyss = yyss1;
1188  yyvs = yyvs1;
1189  }
1190 #else /* no yyoverflow */
1191 # ifndef YYSTACK_RELOCATE
1192  goto yyexhaustedlab;
1193 # else
1194  /* Extend the stack our own way. */
1195  if (YYMAXDEPTH <= yystacksize)
1196  goto yyexhaustedlab;
1197  yystacksize *= 2;
1198  if (YYMAXDEPTH < yystacksize)
1199  yystacksize = YYMAXDEPTH;
1200 
1201  {
1202  yytype_int16 *yyss1 = yyss;
1203  union yyalloc *yyptr =
1204  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1205  if (! yyptr)
1206  goto yyexhaustedlab;
1207  YYSTACK_RELOCATE (yyss_alloc, yyss);
1208  YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1209 # undef YYSTACK_RELOCATE
1210  if (yyss1 != yyssa)
1211  YYSTACK_FREE (yyss1);
1212  }
1213 # endif
1214 #endif /* no yyoverflow */
1215 
1216  yyssp = yyss + yysize - 1;
1217  yyvsp = yyvs + yysize - 1;
1218 
1219  YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1220  (unsigned long int) yystacksize));
1221 
1222  if (yyss + yystacksize - 1 <= yyssp)
1223  YYABORT;
1224  }
1225 
1226  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1227 
1228  if (yystate == YYFINAL)
1229  YYACCEPT;
1230 
1231  goto yybackup;
1232 
1233 /*-----------.
1234 | yybackup. |
1235 `-----------*/
1236 yybackup:
1237 
1238  /* Do appropriate processing given the current state. Read a
1239  lookahead token if we need one and don't already have one. */
1240 
1241  /* First try to decide what to do without reference to lookahead token. */
1242  yyn = yypact[yystate];
1243  if (yypact_value_is_default (yyn))
1244  goto yydefault;
1245 
1246  /* Not known => get a lookahead token if don't already have one. */
1247 
1248  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1249  if (yychar == YYEMPTY)
1250  {
1251  YYDPRINTF ((stderr, "Reading a token: "));
1252  yychar = yylex ();
1253  }
1254 
1255  if (yychar <= YYEOF)
1256  {
1257  yychar = yytoken = YYEOF;
1258  YYDPRINTF ((stderr, "Now at end of input.\n"));
1259  }
1260  else
1261  {
1262  yytoken = YYTRANSLATE (yychar);
1263  YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1264  }
1265 
1266  /* If the proper action on seeing token YYTOKEN is to reduce or to
1267  detect an error, take that action. */
1268  yyn += yytoken;
1269  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1270  goto yydefault;
1271  yyn = yytable[yyn];
1272  if (yyn <= 0)
1273  {
1274  if (yytable_value_is_error (yyn))
1275  goto yyerrlab;
1276  yyn = -yyn;
1277  goto yyreduce;
1278  }
1279 
1280  /* Count tokens shifted since error; after three, turn off error
1281  status. */
1282  if (yyerrstatus)
1283  yyerrstatus--;
1284 
1285  /* Shift the lookahead token. */
1286  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1287 
1288  /* Discard the shifted token. */
1289  yychar = YYEMPTY;
1290 
1291  yystate = yyn;
1293  *++yyvsp = yylval;
1295 
1296  goto yynewstate;
1297 
1298 
1299 /*-----------------------------------------------------------.
1300 | yydefault -- do the default action for the current state. |
1301 `-----------------------------------------------------------*/
1302 yydefault:
1303  yyn = yydefact[yystate];
1304  if (yyn == 0)
1305  goto yyerrlab;
1306  goto yyreduce;
1307 
1308 
1309 /*-----------------------------.
1310 | yyreduce -- Do a reduction. |
1311 `-----------------------------*/
1312 yyreduce:
1313  /* yyn is the number of a rule to reduce with. */
1314  yylen = yyr2[yyn];
1315 
1316  /* If YYLEN is nonzero, implement the default value of the action:
1317  '$$ = $1'.
1318 
1319  Otherwise, the following line sets YYVAL to garbage.
1320  This behavior is undocumented and Bison
1321  users should not rely upon it. Assigning to YYVAL
1322  unconditionally makes the parser a bit smaller, and it avoids a
1323  GCC warning that YYVAL may be used uninitialized. */
1324  yyval = yyvsp[1-yylen];
1325 
1326 
1327  YY_REDUCE_PRINT (yyn);
1328  switch (yyn)
1329  {
1330  case 2:
1331 #line 172 "hdfeos.yy" /* yacc.c:1646 */
1332  {
1333  if (!attr_tab_stack)
1334  attr_tab_stack = new vector<AttrTable *>;
1335  }
1336 #line 1337 "hdfeos.tab.cc" /* yacc.c:1646 */
1337  break;
1338 
1339  case 5:
1340 #line 181 "hdfeos.yy" /* yacc.c:1646 */
1341  {
1342  process_group((parser_arg *)arg, (yyvsp[0]));
1343  }
1344 #line 1345 "hdfeos.tab.cc" /* yacc.c:1646 */
1345  break;
1346 
1347  case 6:
1348 #line 185 "hdfeos.yy" /* yacc.c:1646 */
1349  {
1350  /* pop top of stack; store in attr_tab */
1351  BESDEBUG("h4", " Popped attr_tab: " << TOP_OF_STACK << endl);
1352  POP;
1353  }
1354 #line 1355 "hdfeos.tab.cc" /* yacc.c:1646 */
1355  break;
1356 
1357  case 8:
1358 #line 193 "hdfeos.yy" /* yacc.c:1646 */
1359  {
1360  process_group((parser_arg *)arg, (yyvsp[0]));
1361  }
1362 #line 1363 "hdfeos.tab.cc" /* yacc.c:1646 */
1363  break;
1364 
1365  case 9:
1366 #line 197 "hdfeos.yy" /* yacc.c:1646 */
1367  {
1368  /* pop top of stack; store in attr_tab */
1369  BESDEBUG("h4", " Popped attr_tab: " << TOP_OF_STACK << endl);
1370  POP;
1371  }
1372 #line 1373 "hdfeos.tab.cc" /* yacc.c:1646 */
1373  break;
1374 
1375  case 11:
1376 #line 205 "hdfeos.yy" /* yacc.c:1646 */
1377  {
1378  name = (yyvsp[0]);
1379  }
1380 #line 1381 "hdfeos.tab.cc" /* yacc.c:1646 */
1381  break;
1382 
1383  case 13:
1384 #line 210 "hdfeos.yy" /* yacc.c:1646 */
1385  {
1386  ostringstream name, comment;
1387  name << "comment" << commentnum++;
1388 #ifdef ATTR_STRING_QUOTE_FIX
1389  comment << (yyvsp[0]);
1390 #else
1391  comment << "\"" << (yyvsp[0]) << "\"";
1392 #endif
1393  BESDEBUG("h4",name.str() << ":" << comment.str() << endl);
1394 
1395  AttrTable *a;
1396  if (STACK_EMPTY)
1397  a = ATTR_OBJ(arg);
1398  else
1399  a = TOP_OF_STACK;
1400  if (!a->append_attr(name.str(), "String", comment.str())) {
1401  ostringstream msg;
1402  msg << "`" << name.str() << "' previously defined.";
1403  parse_error((parser_arg *)arg, msg.str().c_str());
1404  YYABORT;
1405  }
1406  }
1407 #line 1408 "hdfeos.tab.cc" /* yacc.c:1646 */
1408  break;
1409 
1410  case 14:
1411 #line 234 "hdfeos.yy" /* yacc.c:1646 */
1412  {
1413  AttrTable *a;
1414  if (STACK_EMPTY)
1415  a = ATTR_OBJ(arg);
1416  else
1417  a = TOP_OF_STACK;
1418 #ifdef ATTR_STRING_QUOTE_FIX
1419  a->append_attr(name.c_str(), "String", "Error processing EOS attributes");
1420 #else
1421  a->append_attr(name.c_str(), "String", "\"Error processing EOS attributes\"");
1422 #endif
1423  /*Using parse_error causes the memory leaking. So don't use this function. instead just
1424  set the status to FALSE. KY 2014-02-25*/
1425  arg->set_status(FALSE);
1426  /*string msg = "Could not parse item; was expecting a GROUP, OBJECT or String: ";
1427  msg += $1;
1428  parse_error((parser_arg *)arg, msg.c_str());
1429  */
1430  /* Don't abort; keep parsing to try and pick up more
1431  attributes. 3/30/2000 jhrg */
1432  /* YYABORT; */
1433  }
1434 #line 1435 "hdfeos.tab.cc" /* yacc.c:1646 */
1435  break;
1436 
1437  case 24:
1438 #line 277 "hdfeos.yy" /* yacc.c:1646 */
1439  {
1440  /* NB: On the Sun (SunOS 4) strtol does not check for */
1441  /* overflow. Thus it will never figure out that 4 */
1442  /* billion is way to large to fit in a 32 bit signed */
1443  /* integer. What's worse, long is 64 bits on Alpha and */
1444  /* SGI/IRIX 6.1... jhrg 10/27/96 */
1445  /* type = "Int32"; */
1446  BESDEBUG("h4", "Adding INT: " << TYPE_NAME_VALUE((yyvsp[0])) << endl);
1447  BESDEBUG("h4", " to AttrTable: " << TOP_OF_STACK << endl);
1448  if (!(check_int32((yyvsp[0]))
1449  || check_uint32((yyvsp[0])))) {
1450  ostringstream msg;
1451  msg << "`" << (yyvsp[0]) << "' is not an Int32 value.";
1452  parse_error((parser_arg *)arg, msg.str().c_str());
1453  YYABORT;
1454  }
1455  else if (!TOP_OF_STACK->append_attr(name, "Int32", (yyvsp[0]))) {
1456  ostringstream msg;
1457  msg << "`" << name << "' previously defined.";
1458  parse_error((parser_arg *)arg, msg.str().c_str());
1459  YYABORT;
1460  }
1461  }
1462 #line 1463 "hdfeos.tab.cc" /* yacc.c:1646 */
1463  break;
1464 
1465  case 25:
1466 #line 301 "hdfeos.yy" /* yacc.c:1646 */
1467  {
1468  type = "Int32";
1469  BESDEBUG("h4", "Adding INT: " << TYPE_NAME_VALUE((yyvsp[0])) << endl);
1470  if (!(check_int32((yyvsp[0]))
1471  || check_uint32((yyvsp[0])))) {
1472  ostringstream msg;
1473  msg << "`" << (yyvsp[0]) << "' is not an Int32 value.";
1474  parse_error((parser_arg *)arg, msg.str().c_str());
1475  YYABORT;
1476  }
1477  else if (!TOP_OF_STACK->append_attr(name, type, (yyvsp[0]))) {
1478  ostringstream msg;
1479  msg << "`" << name << "' previously defined.";
1480  parse_error((parser_arg *)arg, msg.str().c_str());
1481  YYABORT;
1482  }
1483  }
1484 #line 1485 "hdfeos.tab.cc" /* yacc.c:1646 */
1485  break;
1486 
1487  case 26:
1488 #line 321 "hdfeos.yy" /* yacc.c:1646 */
1489  {
1490  type = "Float64";
1491  BESDEBUG("h4", "Adding FLOAT: " << TYPE_NAME_VALUE((yyvsp[0])) << endl);
1492  if (!check_float64((yyvsp[0]))) {
1493  ostringstream msg;
1494  msg << "`" << (yyvsp[0]) << "' is not a Float64 value.";
1495  parse_error((parser_arg *)arg, msg.str().c_str());
1496  YYABORT;
1497  }
1498  else if (!TOP_OF_STACK->append_attr(name, type, (yyvsp[0]))) {
1499  ostringstream msg;
1500  msg << "`" << name << "' previously defined.";
1501  parse_error((parser_arg *)arg, msg.str().c_str());
1502  YYABORT;
1503  }
1504  }
1505 #line 1506 "hdfeos.tab.cc" /* yacc.c:1646 */
1506  break;
1507 
1508  case 27:
1509 #line 338 "hdfeos.yy" /* yacc.c:1646 */
1510  {
1511  type = "Float64";
1512  BESDEBUG("h4", "Adding FLOAT: " << TYPE_NAME_VALUE((yyvsp[0])) << endl);
1513  if (!check_float64((yyvsp[0]))) {
1514  ostringstream msg;
1515  msg << "`" << (yyvsp[-2]) << "' is not a Float64 value.";
1516  parse_error((parser_arg *)arg, msg.str().c_str());
1517  YYABORT;
1518  }
1519  else if (!TOP_OF_STACK->append_attr(name, type, (yyvsp[0]))) {
1520  ostringstream msg;
1521  msg << "`" << name << "' previously defined.";
1522  parse_error((parser_arg *)arg, msg.str().c_str());
1523  YYABORT;
1524  }
1525  }
1526 #line 1527 "hdfeos.tab.cc" /* yacc.c:1646 */
1527  break;
1528 
1529  case 28:
1530 #line 357 "hdfeos.yy" /* yacc.c:1646 */
1531  {
1532  type = "Float64";
1533  BESDEBUG("h4", "Adding FLOAT: " << TYPE_NAME_VALUE((yyvsp[0])) << endl);
1534  if (!check_float64((yyvsp[0]))) {
1535  ostringstream msg;
1536  msg << "`" << (yyvsp[0]) << "' is not a Float64 value.";
1537  parse_error((parser_arg *)arg, msg.str().c_str());
1538  YYABORT;
1539  }
1540  else if (!TOP_OF_STACK->append_attr(name, type, (yyvsp[0]))) {
1541  ostringstream msg;
1542  msg << "`" << name << "' previously defined.";
1543  parse_error((parser_arg *)arg, msg.str().c_str());
1544  YYABORT;
1545  }
1546  }
1547 #line 1548 "hdfeos.tab.cc" /* yacc.c:1646 */
1548  break;
1549 
1550  case 29:
1551 #line 374 "hdfeos.yy" /* yacc.c:1646 */
1552  {
1553  type = "Float64";
1554  BESDEBUG("h4", "Adding FLOAT: " << TYPE_NAME_VALUE((yyvsp[0])) << endl);
1555  if (!check_float64((yyvsp[0]))) {
1556  ostringstream msg;
1557  msg << "`" << (yyvsp[0]) << "' is not a Float64 value.";
1558  parse_error((parser_arg *)arg, msg.str().c_str());
1559  YYABORT;
1560  }
1561  else if (!TOP_OF_STACK->append_attr(name, type, (yyvsp[0]))) {
1562  ostringstream msg;
1563  msg << "`" << name << "' previously defined.";
1564  parse_error((parser_arg *)arg, msg.str().c_str());
1565  YYABORT;
1566  }
1567  }
1568 #line 1569 "hdfeos.tab.cc" /* yacc.c:1646 */
1569  break;
1570 
1571  case 32:
1572 #line 396 "hdfeos.yy" /* yacc.c:1646 */
1573  {
1574  type = "String";
1575  BESDEBUG("h4", "Adding STR: " << TYPE_NAME_VALUE((yyvsp[0])) << endl);
1576  if (!TOP_OF_STACK->append_attr(name, type, (yyvsp[0]))) {
1577  ostringstream msg;
1578  msg << "`" << name << "' previously defined.";
1579  parse_error((parser_arg *)arg, msg.str().c_str());
1580  YYABORT;
1581  }
1582 #if 0
1583  if (name=="GridName" || name=="SwathName" || name=="PointName") {
1584  // Strip off quotes in new ID
1585  string newname = (yyvsp[0])+1;
1586  newname.erase(newname.end()-1);
1587  // and convert embedded spaces to _
1588  string::size_type space = 0;
1589  while((space = newname.find_first_of(' ', space)) != newname.npos) {
1590  newname[space] = '_';
1591  }
1592  SECOND_IN_STACK->attr_alias(newname, last_grid_swath);
1593  }
1594 #endif
1595  }
1596 #line 1597 "hdfeos.tab.cc" /* yacc.c:1646 */
1597  break;
1598 
1599  case 33:
1600 #line 420 "hdfeos.yy" /* yacc.c:1646 */
1601  {
1602  type = "String";
1603  BESDEBUG("h4", "Adding STR: " << TYPE_NAME_VALUE((yyvsp[0])) << endl);
1604  if (!TOP_OF_STACK->append_attr(name, type, (yyvsp[0]))) {
1605  ostringstream msg;
1606  msg << "`" << name << "' previously defined.";
1607  parse_error((parser_arg *)arg, msg.str().c_str());
1608  YYABORT;
1609  }
1610  }
1611 #line 1612 "hdfeos.tab.cc" /* yacc.c:1646 */
1612  break;
1613 
1614 
1615 #line 1616 "hdfeos.tab.cc" /* yacc.c:1646 */
1616  default: break;
1617  }
1618  /* User semantic actions sometimes alter yychar, and that requires
1619  that yytoken be updated with the new translation. We take the
1620  approach of translating immediately before every use of yytoken.
1621  One alternative is translating here after every semantic action,
1622  but that translation would be missed if the semantic action invokes
1623  YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
1624  if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
1625  incorrect destructor might then be invoked immediately. In the
1626  case of YYERROR or YYBACKUP, subsequent parser actions might lead
1627  to an incorrect destructor call or verbose syntax error message
1628  before the lookahead is translated. */
1629  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
1630 
1631  YYPOPSTACK (yylen);
1632  yylen = 0;
1633  YY_STACK_PRINT (yyss, yyssp);
1634 
1635  *++yyvsp = yyval;
1636 
1637  /* Now 'shift' the result of the reduction. Determine what state
1638  that goes to, based on the state we popped back to and the rule
1639  number reduced by. */
1640 
1641  yyn = yyr1[yyn];
1642 
1643  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1644  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1645  yystate = yytable[yystate];
1646  else
1647  yystate = yydefgoto[yyn - YYNTOKENS];
1648 
1649  goto yynewstate;
1650 
1651 
1652 /*--------------------------------------.
1653 | yyerrlab -- here on detecting error. |
1654 `--------------------------------------*/
1655 yyerrlab:
1656  /* Make sure we have latest lookahead translation. See comments at
1657  user semantic actions for why this is necessary. */
1658  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
1659 
1660  /* If not already recovering from an error, report this error. */
1661  if (!yyerrstatus)
1662  {
1663  ++yynerrs;
1664 #if ! YYERROR_VERBOSE
1665  yyerror (arg, YY_("syntax error"));
1666 #else
1667 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
1668  yyssp, yytoken)
1669  {
1670  char const *yymsgp = YY_("syntax error");
1671  int yysyntax_error_status;
1672  yysyntax_error_status = YYSYNTAX_ERROR;
1673  if (yysyntax_error_status == 0)
1674  yymsgp = yymsg;
1675  else if (yysyntax_error_status == 1)
1676  {
1677  if (yymsg != yymsgbuf)
1678  YYSTACK_FREE (yymsg);
1679  yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
1680  if (!yymsg)
1681  {
1682  yymsg = yymsgbuf;
1683  yymsg_alloc = sizeof yymsgbuf;
1684  yysyntax_error_status = 2;
1685  }
1686  else
1687  {
1688  yysyntax_error_status = YYSYNTAX_ERROR;
1689  yymsgp = yymsg;
1690  }
1691  }
1692  yyerror (arg, yymsgp);
1693  if (yysyntax_error_status == 2)
1694  goto yyexhaustedlab;
1695  }
1696 # undef YYSYNTAX_ERROR
1697 #endif
1698  }
1699 
1700 
1701 
1702  if (yyerrstatus == 3)
1703  {
1704  /* If just tried and failed to reuse lookahead token after an
1705  error, discard it. */
1706 
1707  if (yychar <= YYEOF)
1708  {
1709  /* Return failure if at end of input. */
1710  if (yychar == YYEOF)
1711  YYABORT;
1712  }
1713  else
1714  {
1715  yydestruct ("Error: discarding",
1716  yytoken, &yylval, arg);
1717  yychar = YYEMPTY;
1718  }
1719  }
1720 
1721  /* Else will try to reuse lookahead token after shifting the error
1722  token. */
1723  goto yyerrlab1;
1724 
1725 
1726 /*---------------------------------------------------.
1727 | yyerrorlab -- error raised explicitly by YYERROR. |
1728 `---------------------------------------------------*/
1729 yyerrorlab:
1730 
1731  /* Pacify compilers like GCC when the user code never invokes
1732  YYERROR and the label yyerrorlab therefore never appears in user
1733  code. */
1734  if (/*CONSTCOND*/ 0)
1735  goto yyerrorlab;
1736 
1737  /* Do not reclaim the symbols of the rule whose action triggered
1738  this YYERROR. */
1739  YYPOPSTACK (yylen);
1740  yylen = 0;
1741  YY_STACK_PRINT (yyss, yyssp);
1742  yystate = *yyssp;
1743  goto yyerrlab1;
1744 
1745 
1746 /*-------------------------------------------------------------.
1747 | yyerrlab1 -- common code for both syntax error and YYERROR. |
1748 `-------------------------------------------------------------*/
1749 yyerrlab1:
1750  yyerrstatus = 3; /* Each real token shifted decrements this. */
1751 
1752  for (;;)
1753  {
1754  yyn = yypact[yystate];
1755  if (!yypact_value_is_default (yyn))
1756  {
1757  yyn += YYTERROR;
1758  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1759  {
1760  yyn = yytable[yyn];
1761  if (0 < yyn)
1762  break;
1763  }
1764  }
1765 
1766  /* Pop the current state because it cannot handle the error token. */
1767  if (yyssp == yyss)
1768  YYABORT;
1769 
1770 
1771  yydestruct ("Error: popping",
1772  yystos[yystate], yyvsp, arg);
1773  YYPOPSTACK (1);
1774  yystate = *yyssp;
1775  YY_STACK_PRINT (yyss, yyssp);
1776  }
1777 
1779  *++yyvsp = yylval;
1781 
1782 
1783  /* Shift the error token. */
1784  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
1785 
1786  yystate = yyn;
1787  goto yynewstate;
1788 
1789 
1790 /*-------------------------------------.
1791 | yyacceptlab -- YYACCEPT comes here. |
1792 `-------------------------------------*/
1793 yyacceptlab:
1794  yyresult = 0;
1795  goto yyreturn;
1796 
1797 /*-----------------------------------.
1798 | yyabortlab -- YYABORT comes here. |
1799 `-----------------------------------*/
1800 yyabortlab:
1801  yyresult = 1;
1802  goto yyreturn;
1803 
1804 #if !defined yyoverflow || YYERROR_VERBOSE
1805 /*-------------------------------------------------.
1806 | yyexhaustedlab -- memory exhaustion comes here. |
1807 `-------------------------------------------------*/
1808 yyexhaustedlab:
1809  yyerror (arg, YY_("memory exhausted"));
1810  yyresult = 2;
1811  /* Fall through. */
1812 #endif
1813 
1814 yyreturn:
1815  if (yychar != YYEMPTY)
1816  {
1817  /* Make sure we have latest lookahead translation. See comments at
1818  user semantic actions for why this is necessary. */
1819  yytoken = YYTRANSLATE (yychar);
1820  yydestruct ("Cleanup: discarding lookahead",
1821  yytoken, &yylval, arg);
1822  }
1823  /* Do not reclaim the symbols of the rule whose action triggered
1824  this YYABORT or YYACCEPT. */
1825  YYPOPSTACK (yylen);
1826  YY_STACK_PRINT (yyss, yyssp);
1827  while (yyssp != yyss)
1828  {
1829  yydestruct ("Cleanup: popping",
1830  yystos[*yyssp], yyvsp, arg);
1831  YYPOPSTACK (1);
1832  }
1833 #ifndef yyoverflow
1834  if (yyss != yyssa)
1835  YYSTACK_FREE (yyss);
1836 #endif
1837 #if YYERROR_VERBOSE
1838  if (yymsg != yymsgbuf)
1839  YYSTACK_FREE (yymsg);
1840 #endif
1841  return yyresult;
1842 }
1843 #line 432 "hdfeos.yy" /* yacc.c:1906 */
1844 
1845 
1846 // This function is required for linking, but DODS uses its own error
1847 // reporting mechanism.
1848 
1849 void
1850 hdfeoserror(parser_arg *, const char *)
1851 {
1852 }
1853 
1854 // I wrote this because I thought at one point that it was the solution to
1855 // having some of the libdap methods change out from under the hdfeos code
1856 // here. In the end, I added a new find method to the AttrTable class that
1857 // doesn't require FQNs for the paths. (see AttrTable::recurrsive_find)
1858 static string
1859 build_fqn(AttrTable *at, string fqn)
1860 {
1861  // The strange behavior at the top level is because the top level of an
1862  // AttrTable (i.e. the DAS) is anonymous. Another bad design... jhrg 2/8/06
1863  if (!at || !at->get_parent() || at->get_name().empty())
1864  return fqn;
1865  else
1866  return build_fqn(at->get_parent(), at->get_name() + string(".") + fqn);
1867 }
1868 
1869 static void
1870 process_group(parser_arg * arg, const string & id)
1871 {
1872  AttrTable *at;
1873  BESDEBUG("h4", "Processing ID: " << id << endl);
1874  /* If we are at the outer most level of attributes, make
1875  sure to use the AttrTable in the DAS. */
1876  if (STACK_EMPTY) {
1877  at = ATTR_OBJ(arg)->get_attr_table(id);
1878  if (!at)
1879  at = ATTR_OBJ(arg)->append_container(id);
1880  } else {
1881  at = TOP_OF_STACK->get_attr_table(id);
1882  if (!at)
1883  at = TOP_OF_STACK->append_container(id);
1884  }
1885 
1886  if (id.find("GRID_") == 0 || id.find("SWATH_") == 0 ||
1887  id.find("POINT_") == 0) {
1888  last_grid_swath = id;
1889  }
1890 
1891  PUSH(at);
1892  BESDEBUG("h4", " Pushed attr_tab: " << at << endl);
1893 }
#define yylex
Definition: hdfeos.tab.cc:64
#define YYSIZE_T
Definition: hdfeos.tab.cc:258
#define yypact_value_is_default(Yystate)
Definition: hdfeos.tab.cc:551
#define comment
Definition: lex.hdfeos.cc:606
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
Definition: hdfeos.tab.cc:324
#define YYNTOKENS
Definition: hdfeos.tab.cc:466
#define YY_STACK_PRINT(Bottom, Top)
Definition: hdfeos.tab.cc:774
#define yynerrs
Definition: hdfeos.tab.cc:67
#define TOP_OF_STACK
Definition: hdfeos.tab.cc:200
#define YYLAST
Definition: hdfeos.tab.cc:463
#define YYSTACK_BYTES(N)
Definition: hdfeos.tab.cc:416
#define YY_IGNORE_MAYBE_UNINITIALIZED_END
Definition: hdfeos.tab.cc:325
#define YYMAXDEPTH
Definition: hdfeos.tab.cc:835
#define YYSTACK_ALLOC
Definition: hdfeos.tab.cc:371
unsigned char yytype_uint8
Definition: hdfeos.tab.cc:230
void mem_list_report()
signed char yytype_int8
Definition: gse.tab.cc:206
signed char yytype_int8
Definition: hdfeos.tab.cc:236
unsigned short int yytype_uint16
Definition: hdfeos.tab.cc:242
#define POP
Definition: hdfeos.tab.cc:203
void hdfeoserror(parser_arg *arg, const char *s)
Definition: hdfeos.tab.cc:1850
#define YY_(Msgid)
Definition: hdfeos.tab.cc:274
#define YY_SYMBOL_PRINT(Title, Type, Value, Location)
Definition: hdfeos.tab.cc:711
#define SECOND_IN_STACK
Definition: hdfeos.tab.cc:201
yytokentype
Definition: gse.tab.cc:133
STL namespace.
int hdfeoslex(void)
#define YY_NULLPTR
Definition: hdfeos.tab.cc:80
#define TYPE_NAME_VALUE(x)
Definition: hdfeos.tab.cc:207
int hdfeosdebug
void * malloc(YYSIZE_T)
#define PUSH(x)
Definition: hdfeos.tab.cc:202
static class NCMLUtil overview
#define yytable_value_is_error(Yytable_value)
Definition: hdfeos.tab.cc:556
#define YYTRANSLATE(YYX)
Definition: hdfeos.tab.cc:479
#define YYINITDEPTH
Definition: hdfeos.tab.cc:824
#define YYSTYPE
Definition: hdfeos.tab.cc:107
#define YYSTACK_ALLOC_MAXIMUM
Definition: hdfeos.tab.cc:374
#define YY_REDUCE_PRINT(Rule)
Definition: hdfeos.tab.cc:805
int hdfeos_line_num
Definition: lex.hdfeos.cc:597
short int yytype_int16
Definition: hdfeos.tab.cc:248
#define YYSTACK_FREE
Definition: hdfeos.tab.cc:372
#define yyalloc
Definition: lex.gse.cc:24
#define ATTR_OBJ(arg)
Definition: hdfeos.tab.cc:140
#define YYPOPSTACK(N)
YYSTYPE hdfeoslval
#define YYFINAL
Definition: hdfeos.tab.cc:461
#define yychar
Definition: hdfeos.tab.cc:70
unsigned short int yytype_uint16
Definition: gse.tab.cc:212
#define YYFPRINTF
Definition: hdfeos.tab.cc:696
#define STACK_EMPTY
Definition: hdfeos.tab.cc:205
#define YYTERROR
Definition: hdfeos.tab.cc:686
#define YYUSE(E)
Definition: hdfeos.tab.cc:307
#define yydebug
Definition: hdfeos.tab.cc:66
#define YYABORT
Definition: hdfeos.tab.cc:662
#define yyparse
Definition: hdfeos.tab.cc:63
#define YYACCEPT
Definition: hdfeos.tab.cc:661
short int yytype_int16
Definition: gse.tab.cc:218
#define FALSE
Definition: gse_parser.h:33
#define YYDPRINTF(Args)
Definition: hdfeos.tab.cc:699
#define YYEOF
Definition: hdfeos.tab.cc:659
#define BESDEBUG(x, y)
macro used to send debug information to the debug stream
Definition: BESDebug.h:64
#define yylval
Definition: hdfeos.tab.cc:69
int hdfeosparse(parser_arg *arg)
#define YYEMPTY
Definition: hdfeos.tab.cc:658
#define yyerror
Definition: hdfeos.tab.cc:65
unsigned char yytype_uint8
Definition: gse.tab.cc:200
void free(void *)
#define YYSTACK_RELOCATE(Stack_alloc, Stack)
Definition: hdfeos.tab.cc:427