cmdparse.cpp
Go to the documentation of this file.
1 
2 /* A Bison parser, made by GNU Bison 2.4.1. */
3 
4 /* Skeleton implementation for Bison's Yacc-like parsers in C
5 
6  Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
7  Free Software Foundation, Inc.
8 
9  This program is free software: you can redistribute it and/or modify
10  it under the terms of the GNU General Public License as published by
11  the Free Software Foundation, either version 3 of the License, or
12  (at your option) any later version.
13 
14  This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with this program. If not, see <https://www.gnu.org/licenses/>. */
21 
22 /* As a special exception, you may create a larger work that contains
23  part or all of the Bison parser skeleton and distribute that work
24  under terms of your choice, so long as that work isn't itself a
25  parser generator using the skeleton or a modified version thereof
26  as a parser skeleton. Alternatively, if you modify or redistribute
27  the parser skeleton itself, you may (at your option) remove this
28  special exception, which will cause the skeleton and the resulting
29  Bison output files to be licensed under the GNU General Public
30  License without this special exception.
31 
32  This special exception was added by the Free Software Foundation in
33  version 2.2 of Bison. */
34 
35 /* C LALR(1) parser skeleton written by Richard Stallman, by
36  simplifying the original so-called "semantic" parser. */
37 
38 /* All symbols defined below should begin with yy or YY, to avoid
39  infringing on user name space. This should be done even for local
40  variables, as they might otherwise be expanded by user macros.
41  There are some unavoidable exceptions within include files to
42  define necessary library symbols; they are noted "INFRINGES ON
43  USER NAME SPACE" below. */
44 
45 /* Identify Bison output. */
46 #define YYBISON 1
47 
48 /* Bison version. */
49 #define YYBISON_VERSION "2.4.1"
50 
51 /* Skeleton name. */
52 #define YYSKELETON_NAME "yacc.c"
53 
54 /* Pure parsers. */
55 #define YYPURE 0
56 
57 /* Push parsers. */
58 #define YYPUSH 0
59 
60 /* Pull parsers. */
61 #define YYPULL 1
62 
63 /* Using locations. */
64 #define YYLSP_NEEDED 0
65 
66 
67 
68 /* Copy the first part of user declarations. */
69 
70 /* Line 189 of yacc.c */
71 #line 1 "..\\..\\cmdparse.ypp"
72 
73 /*----------------------------------------------------------------------------*/
74 /* */
75 /* Copyright (c) 2009-2010 Rexx Language Association. All rights reserved. */
76 /* */
77 /* This program and the accompanying materials are made available under */
78 /* the terms of the Common Public License v1.0 which accompanies this */
79 /* distribution. A copy is also available at the following address: */
80 /* https://www.oorexx.org/license.html */
81 /* */
82 /* Redistribution and use in source and binary forms, with or */
83 /* without modification, are permitted provided that the following */
84 /* conditions are met: */
85 /* */
86 /* Redistributions of source code must retain the above copyright */
87 /* notice, this list of conditions and the following disclaimer. */
88 /* Redistributions in binary form must reproduce the above copyright */
89 /* notice, this list of conditions and the following disclaimer in */
90 /* the documentation and/or other materials provided with the distribution. */
91 /* */
92 /* Neither the name of Rexx Language Association nor the names */
93 /* of its contributors may be used to endorse or promote products */
94 /* derived from this software without specific prior written permission. */
95 /* */
96 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
97 /* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
98 /* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */
99 /* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
100 /* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
101 /* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
102 /* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
103 /* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */
104 /* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
105 /* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
106 /* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
107 /* */
108 /* Authors; */
109 /* W. David Ashley <dashley@us.ibm.com> */
110 /* */
111 /*----------------------------------------------------------------------------*/
112 
113 
114 /*----------------------------------------------------------------------------*/
115 /* !!!CAUTION!!! */
116 /* Do not edit the cmdparse.cpp file! This file is produced by yacc! You */
117 /* should edit the cmdparse.y file and regen the changes via make! */
118 /*----------------------------------------------------------------------------*/
119 
120 
121 #include <stdlib.h>
122 #include <string.h>
123 #include <stdio.h>
124 #include <ctype.h>
125 #include <rexx.h>
126 
127 #include "hostemu.h"
128 
129 /*--------------------------------------------------------------------*/
130 /* Local function prototypes */
131 /*--------------------------------------------------------------------*/
132 
133 int yylex (
134  void); /* no arguments */
135 void yyerror (
136  char * token); /* token string */
137 int kwsearch (
138  char * token); /* token string */
139 bool isnumeric (
140  char * token); /* token string */
141 
142 
143 
144 
145 /* Line 189 of yacc.c */
146 #line 147 "..\\..\\cmdparse.cpp"
147 
148 /* Enabling traces. */
149 #ifndef YYDEBUG
150 # define YYDEBUG 0
151 #endif
152 
153 /* Enabling verbose error messages. */
154 #ifdef YYERROR_VERBOSE
155 # undef YYERROR_VERBOSE
156 # define YYERROR_VERBOSE 1
157 #else
158 # define YYERROR_VERBOSE 0
159 #endif
160 
161 /* Enabling the token table. */
162 #ifndef YYTOKEN_TABLE
163 # define YYTOKEN_TABLE 0
164 #endif
165 
166 
167 /* Tokens. */
168 #ifndef YYTOKENTYPE
169 # define YYTOKENTYPE
170  /* Put the tokens into the symbol table, so that GDB and other debuggers
171  know about them. */
172  enum yytokentype {
173  EXECIO = 258,
174  HI = 259,
175  TE = 260,
176  TS = 261,
177  CONSTANT = 262,
178  DISKW = 263,
179  DISKR = 264,
180  STEM = 265,
181  FINIS = 266,
182  LIFO = 267,
183  FIFO = 268,
184  SKIP = 269
185  };
186 #endif
187 
188 
189 
190 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
191 typedef union YYSTYPE
192 {
193 
194 /* Line 214 of yacc.c */
195 #line 74 "..\\..\\cmdparse.ypp"
196 
197  int numval;
198  char * strval;
199 
200 
201 
202 /* Line 214 of yacc.c */
203 #line 204 "..\\..\\cmdparse.cpp"
205 # define YYSTYPE_IS_TRIVIAL 1
206 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
207 # define YYSTYPE_IS_DECLARED 1
208 #endif
209 
210 
211 /* Copy the second part of user declarations. */
212 
213 
214 /* Line 264 of yacc.c */
215 #line 216 "..\\..\\cmdparse.cpp"
216 
217 #ifdef short
218 # undef short
219 #endif
220 
221 #ifdef YYTYPE_UINT8
222 typedef YYTYPE_UINT8 yytype_uint8;
223 #else
224 typedef unsigned char yytype_uint8;
225 #endif
226 
227 #ifdef YYTYPE_INT8
228 typedef YYTYPE_INT8 yytype_int8;
229 #elif (defined __STDC__ || defined __C99__FUNC__ \
230  || defined __cplusplus || defined _MSC_VER)
231 typedef signed char yytype_int8;
232 #else
233 typedef short int yytype_int8;
234 #endif
235 
236 #ifdef YYTYPE_UINT16
237 typedef YYTYPE_UINT16 yytype_uint16;
238 #else
239 typedef unsigned short int yytype_uint16;
240 #endif
241 
242 #ifdef YYTYPE_INT16
243 typedef YYTYPE_INT16 yytype_int16;
244 #else
245 typedef short int yytype_int16;
246 #endif
247 
248 #ifndef YYSIZE_T
249 # ifdef __SIZE_TYPE__
250 # define YYSIZE_T __SIZE_TYPE__
251 # elif defined size_t
252 # define YYSIZE_T size_t
253 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
254  || defined __cplusplus || defined _MSC_VER)
255 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
256 # define YYSIZE_T size_t
257 # else
258 # define YYSIZE_T unsigned int
259 # endif
260 #endif
261 
262 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
263 
264 #ifndef YY_
265 # if YYENABLE_NLS
266 # if ENABLE_NLS
267 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
268 # define YY_(msgid) dgettext ("bison-runtime", msgid)
269 # endif
270 # endif
271 # ifndef YY_
272 # define YY_(msgid) msgid
273 # endif
274 #endif
275 
276 /* Suppress unused-variable warnings by "using" E. */
277 #if ! defined lint || defined __GNUC__
278 # define YYUSE(e) ((void) (e))
279 #else
280 # define YYUSE(e) /* empty */
281 #endif
282 
283 /* Identity function, used to suppress warnings about constant conditions. */
284 #ifndef lint
285 # define YYID(n) (n)
286 #else
287 #if (defined __STDC__ || defined __C99__FUNC__ \
288  || defined __cplusplus || defined _MSC_VER)
289 static int
290 YYID (int yyi)
291 #else
292 static int
293 YYID (yyi)
294  int yyi;
295 #endif
296 {
297  return yyi;
298 }
299 #endif
300 
301 #if ! defined yyoverflow || YYERROR_VERBOSE
302 
303 /* The parser invokes alloca or malloc; define the necessary symbols. */
304 
305 # ifdef YYSTACK_USE_ALLOCA
306 # if YYSTACK_USE_ALLOCA
307 # ifdef __GNUC__
308 # define YYSTACK_ALLOC __builtin_alloca
309 # elif defined __BUILTIN_VA_ARG_INCR
310 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
311 # elif defined _AIX
312 # define YYSTACK_ALLOC __alloca
313 # elif defined _MSC_VER
314 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
315 # define alloca _alloca
316 # else
317 # define YYSTACK_ALLOC alloca
318 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
319  || defined __cplusplus || defined _MSC_VER)
320 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
321 # ifndef _STDLIB_H
322 # define _STDLIB_H 1
323 # endif
324 # endif
325 # endif
326 # endif
327 # endif
328 
329 # ifdef YYSTACK_ALLOC
330  /* Pacify GCC's `empty if-body' warning. */
331 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
332 # ifndef YYSTACK_ALLOC_MAXIMUM
333  /* The OS might guarantee only one guard page at the bottom of the stack,
334  and a page size can be as small as 4096 bytes. So we cannot safely
335  invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
336  to allow for a few compiler-allocated temporary stack slots. */
337 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
338 # endif
339 # else
340 # define YYSTACK_ALLOC YYMALLOC
341 # define YYSTACK_FREE YYFREE
342 # ifndef YYSTACK_ALLOC_MAXIMUM
343 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
344 # endif
345 # if (defined __cplusplus && ! defined _STDLIB_H \
346  && ! ((defined YYMALLOC || defined malloc) \
347  && (defined YYFREE || defined free)))
348 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
349 # ifndef _STDLIB_H
350 # define _STDLIB_H 1
351 # endif
352 # endif
353 # ifndef YYMALLOC
354 # define YYMALLOC malloc
355 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
356  || defined __cplusplus || defined _MSC_VER)
357 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
358 # endif
359 # endif
360 # ifndef YYFREE
361 # define YYFREE free
362 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
363  || defined __cplusplus || defined _MSC_VER)
364 void free (void *); /* INFRINGES ON USER NAME SPACE */
365 # endif
366 # endif
367 # endif
368 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
369 
370 
371 #if (! defined yyoverflow \
372  && (! defined __cplusplus \
373  || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
374 
375 /* A type that is properly aligned for any stack member. */
376 union yyalloc
377 {
380 };
381 
382 /* The size of the maximum gap between one aligned stack and the next. */
383 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
384 
385 /* The size of an array large to enough to hold all stacks, each with
386  N elements. */
387 # define YYSTACK_BYTES(N) \
388  ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
389  + YYSTACK_GAP_MAXIMUM)
390 
391 /* Copy COUNT objects from FROM to TO. The source and destination do
392  not overlap. */
393 # ifndef YYCOPY
394 # if defined __GNUC__ && 1 < __GNUC__
395 # define YYCOPY(To, From, Count) \
396  __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
397 # else
398 # define YYCOPY(To, From, Count) \
399  do \
400  { \
401  YYSIZE_T yyi; \
402  for (yyi = 0; yyi < (Count); yyi++) \
403  (To)[yyi] = (From)[yyi]; \
404  } \
405  while (YYID (0))
406 # endif
407 # endif
408 
409 /* Relocate STACK from its old location to the new one. The
410  local variables YYSIZE and YYSTACKSIZE give the old and new number of
411  elements in the stack, and YYPTR gives the new location of the
412  stack. Advance YYPTR to a properly aligned location for the next
413  stack. */
414 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
415  do \
416  { \
417  YYSIZE_T yynewbytes; \
418  YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
419  Stack = &yyptr->Stack_alloc; \
420  yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
421  yyptr += yynewbytes / sizeof (*yyptr); \
422  } \
423  while (YYID (0))
424 
425 #endif
426 
427 /* YYFINAL -- State number of the termination state. */
428 #define YYFINAL 8
429 /* YYLAST -- Last index in YYTABLE. */
430 #define YYLAST 60
431 
432 /* YYNTOKENS -- Number of terminals. */
433 #define YYNTOKENS 18
434 /* YYNNTS -- Number of nonterminals. */
435 #define YYNNTS 11
436 /* YYNRULES -- Number of rules. */
437 #define YYNRULES 42
438 /* YYNRULES -- Number of states. */
439 #define YYNSTATES 51
440 
441 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
442 #define YYUNDEFTOK 2
443 #define YYMAXUTOK 269
444 
445 #define YYTRANSLATE(YYX) \
446  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
447 
448 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
449 static const yytype_uint8 yytranslate[] =
450 {
451  0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
452  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
453  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
454  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
455  16, 17, 15, 2, 2, 2, 2, 2, 2, 2,
456  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
457  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
458  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
459  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
460  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
461  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
462  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
463  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
464  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
465  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
466  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
467  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
468  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
469  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
470  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
471  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
472  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
473  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
474  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
475  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
476  2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
477  5, 6, 7, 8, 9, 10, 11, 12, 13, 14
478 };
479 
480 #if YYDEBUG
481 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
482  YYRHS. */
483 static const yytype_uint8 yyprhs[] =
484 {
485  0, 0, 3, 7, 11, 13, 15, 17, 21, 25,
486  30, 31, 34, 38, 39, 42, 46, 47, 49, 51,
487  53, 56, 59, 62, 65, 68, 71, 75, 79, 83,
488  87, 91, 95, 96, 98, 100, 103, 106, 108, 110,
489  113, 115, 117
490 };
491 
492 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
493 static const yytype_int8 yyrhs[] =
494 {
495  19, 0, -1, 3, 7, 20, -1, 3, 15, 20,
496  -1, 4, -1, 5, -1, 6, -1, 8, 7, 22,
497  -1, 9, 7, 21, -1, 9, 7, 7, 21, -1,
498  -1, 16, 23, -1, 16, 23, 17, -1, -1, 16,
499  24, -1, 16, 24, 17, -1, -1, 25, -1, 28,
500  -1, 26, -1, 25, 28, -1, 25, 26, -1, 28,
501  25, -1, 28, 26, -1, 26, 28, -1, 26, 25,
502  -1, 25, 28, 26, -1, 25, 26, 28, -1, 28,
503  25, 26, -1, 28, 26, 25, -1, 26, 28, 25,
504  -1, 26, 25, 28, -1, -1, 25, -1, 27, -1,
505  25, 27, -1, 27, 25, -1, 11, -1, 14, -1,
506  10, 7, -1, 13, -1, 12, -1, 27, -1
507 };
508 
509 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
510 static const yytype_uint8 yyrline[] =
511 {
512  0, 95, 95, 108, 113, 114, 115, 118, 123, 128,
513  144, 146, 147, 150, 152, 153, 156, 158, 159, 160,
514  161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
515  171, 172, 175, 177, 178, 179, 180, 184, 188, 192,
516  196, 197, 198
517 };
518 #endif
519 
520 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
521 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
522  First, the terminals, then, starting at YYNTOKENS, nonterminals. */
523 static const char *const yytname[] =
524 {
525  "$end", "error", "$undefined", "EXECIO", "HI", "TE", "TS", "CONSTANT",
526  "DISKW", "DISKR", "STEM", "FINIS", "LIFO", "FIFO", "SKIP", "'*'", "'('",
527  "')'", "$accept", "stmt", "disk_clause", "diskr_option", "diskw_option",
528  "diskr_options", "diskw_options", "finis", "skip", "stem", "data", 0
529 };
530 #endif
531 
532 # ifdef YYPRINT
533 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
534  token YYLEX-NUM. */
535 static const yytype_uint16 yytoknum[] =
536 {
537  0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
538  265, 266, 267, 268, 269, 42, 40, 41
539 };
540 # endif
541 
542 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
543 static const yytype_uint8 yyr1[] =
544 {
545  0, 18, 19, 19, 19, 19, 19, 20, 20, 20,
546  21, 21, 21, 22, 22, 22, 23, 23, 23, 23,
547  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
548  23, 23, 24, 24, 24, 24, 24, 25, 26, 27,
549  28, 28, 28
550 };
551 
552 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
553 static const yytype_uint8 yyr2[] =
554 {
555  0, 2, 3, 3, 1, 1, 1, 3, 3, 4,
556  0, 2, 3, 0, 2, 3, 0, 1, 1, 1,
557  2, 2, 2, 2, 2, 2, 3, 3, 3, 3,
558  3, 3, 0, 1, 1, 2, 2, 1, 1, 2,
559  1, 1, 1
560 };
561 
562 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
563  STATE-NUM when YYTABLE doesn't specify something else to do. Zero
564  means the default is an error. */
565 static const yytype_uint8 yydefact[] =
566 {
567  0, 0, 4, 5, 6, 0, 0, 0, 1, 0,
568  0, 2, 3, 13, 10, 32, 7, 10, 16, 8,
569  0, 37, 14, 33, 34, 9, 41, 40, 38, 11,
570  17, 19, 42, 18, 39, 15, 35, 36, 12, 21,
571  20, 25, 24, 22, 23, 27, 26, 31, 30, 28,
572  29
573 };
574 
575 /* YYDEFGOTO[NTERM-NUM]. */
576 static const yytype_int8 yydefgoto[] =
577 {
578  -1, 5, 11, 19, 16, 29, 22, 23, 31, 32,
579  33
580 };
581 
582 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
583  STATE-NUM. */
584 #define YYPACT_NINF -30
585 static const yytype_int8 yypact[] =
586 {
587  27, -5, -30, -30, -30, 5, 35, 35, -30, 32,
588  41, -30, -30, 33, -4, 36, -30, 34, 9, -30,
589  44, -30, 37, 42, 45, -30, -30, -30, -30, 38,
590  15, 24, -30, 31, -30, -30, -30, -30, -30, 28,
591  39, 28, 45, 39, 45, -30, -30, -30, -30, -30,
592  -30
593 };
594 
595 /* YYPGOTO[NTERM-NUM]. */
596 static const yytype_int8 yypgoto[] =
597 {
598  -30, -30, 50, 43, -30, -30, -30, -18, -29, -6,
599  -23
600 };
601 
602 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
603  positive, shift that token. If negative, reduce the rule which
604  number is the opposite. If zero, do what YYDEFACT says.
605  If YYTABLE_NINF, syntax error. */
606 #define YYTABLE_NINF -1
607 static const yytype_uint8 yytable[] =
608 {
609  30, 39, 6, 17, 44, 8, 37, 40, 42, 24,
610  7, 46, 18, 41, 49, 43, 45, 36, 47, 20,
611  21, 26, 27, 28, 48, 20, 50, 26, 27, 28,
612  1, 2, 3, 4, 20, 21, 26, 27, 20, 13,
613  26, 27, 21, 9, 10, 28, 20, 21, 14, 15,
614  18, 34, 20, 28, 35, 38, 21, 12, 0, 0,
615  25
616 };
617 
618 static const yytype_int8 yycheck[] =
619 {
620  18, 30, 7, 7, 33, 0, 24, 30, 31, 15,
621  15, 40, 16, 31, 43, 33, 39, 23, 41, 10,
622  11, 12, 13, 14, 42, 10, 44, 12, 13, 14,
623  3, 4, 5, 6, 10, 11, 12, 13, 10, 7,
624  12, 13, 11, 8, 9, 14, 10, 11, 7, 16,
625  16, 7, 10, 14, 17, 17, 11, 7, -1, -1,
626  17
627 };
628 
629 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
630  symbol of state STATE-NUM. */
631 static const yytype_uint8 yystos[] =
632 {
633  0, 3, 4, 5, 6, 19, 7, 15, 0, 8,
634  9, 20, 20, 7, 7, 16, 22, 7, 16, 21,
635  10, 11, 24, 25, 27, 21, 12, 13, 14, 23,
636  25, 26, 27, 28, 7, 17, 27, 25, 17, 26,
637  28, 25, 28, 25, 26, 28, 26, 28, 25, 26,
638  25
639 };
640 
641 #define yyerrok (yyerrstatus = 0)
642 #define yyclearin (yychar = YYEMPTY)
643 #define YYEMPTY (-2)
644 #define YYEOF 0
645 
646 #define YYACCEPT goto yyacceptlab
647 #define YYABORT goto yyabortlab
648 #define YYERROR goto yyerrorlab
649 
650 
651 /* Like YYERROR except do call yyerror. This remains here temporarily
652  to ease the transition to the new meaning of YYERROR, for GCC.
653  Once GCC version 2 has supplanted version 1, this can go. */
654 
655 #define YYFAIL goto yyerrlab
656 
657 #define YYRECOVERING() (!!yyerrstatus)
658 
659 #define YYBACKUP(Token, Value) \
660 do \
661  if (yychar == YYEMPTY && yylen == 1) \
662  { \
663  yychar = (Token); \
664  yylval = (Value); \
665  yytoken = YYTRANSLATE (yychar); \
666  YYPOPSTACK (1); \
667  goto yybackup; \
668  } \
669  else \
670  { \
671  yyerror (YY_("syntax error: cannot back up")); \
672  YYERROR; \
673  } \
674 while (YYID (0))
675 
676 
677 #define YYTERROR 1
678 #define YYERRCODE 256
679 
680 
681 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
682  If N is 0, then set CURRENT to the empty location which ends
683  the previous symbol: RHS[0] (always defined). */
684 
685 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
686 #ifndef YYLLOC_DEFAULT
687 # define YYLLOC_DEFAULT(Current, Rhs, N) \
688  do \
689  if (YYID (N)) \
690  { \
691  (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
692  (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
693  (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
694  (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
695  } \
696  else \
697  { \
698  (Current).first_line = (Current).last_line = \
699  YYRHSLOC (Rhs, 0).last_line; \
700  (Current).first_column = (Current).last_column = \
701  YYRHSLOC (Rhs, 0).last_column; \
702  } \
703  while (YYID (0))
704 #endif
705 
706 
707 /* YY_LOCATION_PRINT -- Print the location on the stream.
708  This macro was not mandated originally: define only if we know
709  we won't break user code: when these are the locations we know. */
710 
711 #ifndef YY_LOCATION_PRINT
712 # if YYLTYPE_IS_TRIVIAL
713 # define YY_LOCATION_PRINT(File, Loc) \
714  fprintf (File, "%d.%d-%d.%d", \
715  (Loc).first_line, (Loc).first_column, \
716  (Loc).last_line, (Loc).last_column)
717 # else
718 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
719 # endif
720 #endif
721 
722 
723 /* YYLEX -- calling `yylex' with the right arguments. */
724 
725 #ifdef YYLEX_PARAM
726 # define YYLEX yylex (YYLEX_PARAM)
727 #else
728 # define YYLEX yylex ()
729 #endif
730 
731 /* Enable debugging if requested. */
732 #if YYDEBUG
733 
734 # ifndef YYFPRINTF
735 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
736 # define YYFPRINTF fprintf
737 # endif
738 
739 # define YYDPRINTF(Args) \
740 do { \
741  if (yydebug) \
742  YYFPRINTF Args; \
743 } while (YYID (0))
744 
745 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
746 do { \
747  if (yydebug) \
748  { \
749  YYFPRINTF (stderr, "%s ", Title); \
750  yy_symbol_print (stderr, \
751  Type, Value); \
752  YYFPRINTF (stderr, "\n"); \
753  } \
754 } while (YYID (0))
755 
756 
757 /*--------------------------------.
758 | Print this symbol on YYOUTPUT. |
759 `--------------------------------*/
760 
761 /*ARGSUSED*/
762 #if (defined __STDC__ || defined __C99__FUNC__ \
763  || defined __cplusplus || defined _MSC_VER)
764 static void
765 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
766 #else
767 static void
768 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
769  FILE *yyoutput;
770  int yytype;
771  YYSTYPE const * const yyvaluep;
772 #endif
773 {
774  if (!yyvaluep)
775  return;
776 # ifdef YYPRINT
777  if (yytype < YYNTOKENS)
778  YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
779 # else
780  YYUSE (yyoutput);
781 # endif
782  switch (yytype)
783  {
784  default:
785  break;
786  }
787 }
788 
789 
790 /*--------------------------------.
791 | Print this symbol on YYOUTPUT. |
792 `--------------------------------*/
793 
794 #if (defined __STDC__ || defined __C99__FUNC__ \
795  || defined __cplusplus || defined _MSC_VER)
796 static void
797 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
798 #else
799 static void
800 yy_symbol_print (yyoutput, yytype, yyvaluep)
801  FILE *yyoutput;
802  int yytype;
803  YYSTYPE const * const yyvaluep;
804 #endif
805 {
806  if (yytype < YYNTOKENS)
807  YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
808  else
809  YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
810 
811  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
812  YYFPRINTF (yyoutput, ")");
813 }
814 
815 /*------------------------------------------------------------------.
816 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
817 | TOP (included). |
818 `------------------------------------------------------------------*/
819 
820 #if (defined __STDC__ || defined __C99__FUNC__ \
821  || defined __cplusplus || defined _MSC_VER)
822 static void
823 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
824 #else
825 static void
826 yy_stack_print (yybottom, yytop)
827  yytype_int16 *yybottom;
828  yytype_int16 *yytop;
829 #endif
830 {
831  YYFPRINTF (stderr, "Stack now");
832  for (; yybottom <= yytop; yybottom++)
833  {
834  int yybot = *yybottom;
835  YYFPRINTF (stderr, " %d", yybot);
836  }
837  YYFPRINTF (stderr, "\n");
838 }
839 
840 # define YY_STACK_PRINT(Bottom, Top) \
841 do { \
842  if (yydebug) \
843  yy_stack_print ((Bottom), (Top)); \
844 } while (YYID (0))
845 
846 
847 /*------------------------------------------------.
848 | Report that the YYRULE is going to be reduced. |
849 `------------------------------------------------*/
850 
851 #if (defined __STDC__ || defined __C99__FUNC__ \
852  || defined __cplusplus || defined _MSC_VER)
853 static void
854 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
855 #else
856 static void
857 yy_reduce_print (yyvsp, yyrule)
858  YYSTYPE *yyvsp;
859  int yyrule;
860 #endif
861 {
862  int yynrhs = yyr2[yyrule];
863  int yyi;
864  unsigned long int yylno = yyrline[yyrule];
865  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
866  yyrule - 1, yylno);
867  /* The symbols being reduced. */
868  for (yyi = 0; yyi < yynrhs; yyi++)
869  {
870  YYFPRINTF (stderr, " $%d = ", yyi + 1);
871  yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
872  &(yyvsp[(yyi + 1) - (yynrhs)])
873  );
874  YYFPRINTF (stderr, "\n");
875  }
876 }
877 
878 # define YY_REDUCE_PRINT(Rule) \
879 do { \
880  if (yydebug) \
881  yy_reduce_print (yyvsp, Rule); \
882 } while (YYID (0))
883 
884 /* Nonzero means print parse trace. It is left uninitialized so that
885  multiple parsers can coexist. */
886 int yydebug;
887 #else /* !YYDEBUG */
888 # define YYDPRINTF(Args)
889 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
890 # define YY_STACK_PRINT(Bottom, Top)
891 # define YY_REDUCE_PRINT(Rule)
892 #endif /* !YYDEBUG */
893 
894 
895 /* YYINITDEPTH -- initial size of the parser's stacks. */
896 #ifndef YYINITDEPTH
897 # define YYINITDEPTH 200
898 #endif
899 
900 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
901  if the built-in stack extension method is used).
902 
903  Do not make this value too large; the results are undefined if
904  YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
905  evaluated with infinite-precision integer arithmetic. */
906 
907 #ifndef YYMAXDEPTH
908 # define YYMAXDEPTH 10000
909 #endif
910 
911 ␌
912 
913 #if YYERROR_VERBOSE
914 
915 # ifndef yystrlen
916 # if defined __GLIBC__ && defined _STRING_H
917 # define yystrlen strlen
918 # else
919 /* Return the length of YYSTR. */
920 #if (defined __STDC__ || defined __C99__FUNC__ \
921  || defined __cplusplus || defined _MSC_VER)
922 static YYSIZE_T
923 yystrlen (const char *yystr)
924 #else
925 static YYSIZE_T
926 yystrlen (yystr)
927  const char *yystr;
928 #endif
929 {
930  YYSIZE_T yylen;
931  for (yylen = 0; yystr[yylen]; yylen++)
932  continue;
933  return yylen;
934 }
935 # endif
936 # endif
937 
938 # ifndef yystpcpy
939 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
940 # define yystpcpy stpcpy
941 # else
942 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
943  YYDEST. */
944 #if (defined __STDC__ || defined __C99__FUNC__ \
945  || defined __cplusplus || defined _MSC_VER)
946 static char *
947 yystpcpy (char *yydest, const char *yysrc)
948 #else
949 static char *
950 yystpcpy (yydest, yysrc)
951  char *yydest;
952  const char *yysrc;
953 #endif
954 {
955  char *yyd = yydest;
956  const char *yys = yysrc;
957 
958  while ((*yyd++ = *yys++) != '\0')
959  continue;
960 
961  return yyd - 1;
962 }
963 # endif
964 # endif
965 
966 # ifndef yytnamerr
967 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
968  quotes and backslashes, so that it's suitable for yyerror. The
969  heuristic is that double-quoting is unnecessary unless the string
970  contains an apostrophe, a comma, or backslash (other than
971  backslash-backslash). YYSTR is taken from yytname. If YYRES is
972  null, do not copy; instead, return the length of what the result
973  would have been. */
974 static YYSIZE_T
975 yytnamerr (char *yyres, const char *yystr)
976 {
977  if (*yystr == '"')
978  {
979  YYSIZE_T yyn = 0;
980  char const *yyp = yystr;
981 
982  for (;;)
983  switch (*++yyp)
984  {
985  case '\'':
986  case ',':
987  goto do_not_strip_quotes;
988 
989  case '\\':
990  if (*++yyp != '\\')
991  goto do_not_strip_quotes;
992  /* Fall through. */
993  default:
994  if (yyres)
995  yyres[yyn] = *yyp;
996  yyn++;
997  break;
998 
999  case '"':
1000  if (yyres)
1001  yyres[yyn] = '\0';
1002  return yyn;
1003  }
1004  do_not_strip_quotes: ;
1005  }
1006 
1007  if (! yyres)
1008  return yystrlen (yystr);
1009 
1010  return yystpcpy (yyres, yystr) - yyres;
1011 }
1012 # endif
1013 
1014 /* Copy into YYRESULT an error message about the unexpected token
1015  YYCHAR while in state YYSTATE. Return the number of bytes copied,
1016  including the terminating null byte. If YYRESULT is null, do not
1017  copy anything; just return the number of bytes that would be
1018  copied. As a special case, return 0 if an ordinary "syntax error"
1019  message will do. Return YYSIZE_MAXIMUM if overflow occurs during
1020  size calculation. */
1021 static YYSIZE_T
1022 yysyntax_error (char *yyresult, int yystate, int yychar)
1023 {
1024  int yyn = yypact[yystate];
1025 
1026  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1027  return 0;
1028  else
1029  {
1030  int yytype = YYTRANSLATE (yychar);
1031  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1032  YYSIZE_T yysize = yysize0;
1033  YYSIZE_T yysize1;
1034  int yysize_overflow = 0;
1035  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1036  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1037  int yyx;
1038 
1039 # if 0
1040  /* This is so xgettext sees the translatable formats that are
1041  constructed on the fly. */
1042  YY_("syntax error, unexpected %s");
1043  YY_("syntax error, unexpected %s, expecting %s");
1044  YY_("syntax error, unexpected %s, expecting %s or %s");
1045  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1046  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1047 # endif
1048  char *yyfmt;
1049  char const *yyf;
1050  static char const yyunexpected[] = "syntax error, unexpected %s";
1051  static char const yyexpecting[] = ", expecting %s";
1052  static char const yyor[] = " or %s";
1053  char yyformat[sizeof yyunexpected
1054  + sizeof yyexpecting - 1
1055  + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1056  * (sizeof yyor - 1))];
1057  char const *yyprefix = yyexpecting;
1058 
1059  /* Start YYX at -YYN if negative to avoid negative indexes in
1060  YYCHECK. */
1061  int yyxbegin = yyn < 0 ? -yyn : 0;
1062 
1063  /* Stay within bounds of both yycheck and yytname. */
1064  int yychecklim = YYLAST - yyn + 1;
1065  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1066  int yycount = 1;
1067 
1068  yyarg[0] = yytname[yytype];
1069  yyfmt = yystpcpy (yyformat, yyunexpected);
1070 
1071  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1072  if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1073  {
1074  if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1075  {
1076  yycount = 1;
1077  yysize = yysize0;
1078  yyformat[sizeof yyunexpected - 1] = '\0';
1079  break;
1080  }
1081  yyarg[yycount++] = yytname[yyx];
1082  yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1083  yysize_overflow |= (yysize1 < yysize);
1084  yysize = yysize1;
1085  yyfmt = yystpcpy (yyfmt, yyprefix);
1086  yyprefix = yyor;
1087  }
1088 
1089  yyf = YY_(yyformat);
1090  yysize1 = yysize + yystrlen (yyf);
1091  yysize_overflow |= (yysize1 < yysize);
1092  yysize = yysize1;
1093 
1094  if (yysize_overflow)
1095  return YYSIZE_MAXIMUM;
1096 
1097  if (yyresult)
1098  {
1099  /* Avoid sprintf, as that infringes on the user's name space.
1100  Don't have undefined behavior even if the translation
1101  produced a string with the wrong number of "%s"s. */
1102  char *yyp = yyresult;
1103  int yyi = 0;
1104  while ((*yyp = *yyf) != '\0')
1105  {
1106  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1107  {
1108  yyp += yytnamerr (yyp, yyarg[yyi++]);
1109  yyf += 2;
1110  }
1111  else
1112  {
1113  yyp++;
1114  yyf++;
1115  }
1116  }
1117  }
1118  return yysize;
1119  }
1120 }
1121 #endif /* YYERROR_VERBOSE */
1122 ␌
1123 
1124 /*-----------------------------------------------.
1125 | Release the memory associated to this symbol. |
1126 `-----------------------------------------------*/
1127 
1128 /*ARGSUSED*/
1129 #if (defined __STDC__ || defined __C99__FUNC__ \
1130  || defined __cplusplus || defined _MSC_VER)
1131 static void
1132 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1133 #else
1134 static void
1136  const char *yymsg;
1137  int yytype;
1139 #endif
1140 {
1141  YYUSE (yyvaluep);
1142 
1143  if (!yymsg)
1144  yymsg = "Deleting";
1145  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1146 
1147  switch (yytype)
1148  {
1149 
1150  default:
1151  break;
1152  }
1153 }
1154 
1155 /* Prevent warnings from -Wmissing-prototypes. */
1156 #ifdef YYPARSE_PARAM
1157 #if defined __STDC__ || defined __cplusplus
1158 int yyparse (void *YYPARSE_PARAM);
1159 #else
1160 int yyparse ();
1161 #endif
1162 #else /* ! YYPARSE_PARAM */
1163 #if defined __STDC__ || defined __cplusplus
1164 int yyparse (void);
1165 #else
1166 int yyparse ();
1167 #endif
1168 #endif /* ! YYPARSE_PARAM */
1169 
1170 
1171 /* The lookahead symbol. */
1173 
1174 /* The semantic value of the lookahead symbol. */
1176 
1177 /* Number of syntax errors so far. */
1179 
1180 
1181 
1182 /*-------------------------.
1183 | yyparse or yypush_parse. |
1184 `-------------------------*/
1185 
1186 #ifdef YYPARSE_PARAM
1187 #if (defined __STDC__ || defined __C99__FUNC__ \
1188  || defined __cplusplus || defined _MSC_VER)
1189 int
1190 yyparse (void *YYPARSE_PARAM)
1191 #else
1192 int
1193 yyparse (YYPARSE_PARAM)
1194  void *YYPARSE_PARAM;
1195 #endif
1196 #else /* ! YYPARSE_PARAM */
1197 #if (defined __STDC__ || defined __C99__FUNC__ \
1198  || defined __cplusplus || defined _MSC_VER)
1199 int
1200 yyparse (void)
1201 #else
1202 int
1204 
1205 #endif
1206 #endif
1207 {
1208 
1209 
1210  int yystate;
1211  /* Number of tokens to shift before error messages enabled. */
1212  int yyerrstatus;
1213 
1214  /* The stacks and their tools:
1215  `yyss': related to states.
1216  `yyvs': related to semantic values.
1217 
1218  Refer to the stacks thru separate pointers, to allow yyoverflow
1219  to reallocate them elsewhere. */
1220 
1221  /* The state stack. */
1222  yytype_int16 yyssa[YYINITDEPTH];
1223  yytype_int16 *yyss;
1224  yytype_int16 *yyssp;
1225 
1226  /* The semantic value stack. */
1227  YYSTYPE yyvsa[YYINITDEPTH];
1228  YYSTYPE *yyvs;
1229  YYSTYPE *yyvsp;
1230 
1231  YYSIZE_T yystacksize;
1232 
1233  int yyn;
1234  int yyresult;
1235  /* Lookahead token as an internal (translated) token number. */
1236  int yytoken;
1237  /* The variables used to return semantic value and location from the
1238  action routines. */
1239  YYSTYPE yyval;
1240 
1241 #if YYERROR_VERBOSE
1242  /* Buffer for error messages, and its allocated size. */
1243  char yymsgbuf[128];
1244  char *yymsg = yymsgbuf;
1245  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1246 #endif
1247 
1248 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1249 
1250  /* The number of symbols on the RHS of the reduced rule.
1251  Keep to zero when no symbol should be popped. */
1252  int yylen = 0;
1253 
1254  yytoken = 0;
1255  yyss = yyssa;
1256  yyvs = yyvsa;
1257  yystacksize = YYINITDEPTH;
1258 
1259  YYDPRINTF ((stderr, "Starting parse\n"));
1260 
1261  yystate = 0;
1262  yyerrstatus = 0;
1263  yynerrs = 0;
1264  yychar = YYEMPTY; /* Cause a token to be read. */
1265 
1266  /* Initialize stack pointers.
1267  Waste one element of value and location stack
1268  so that they stay on the same level as the state stack.
1269  The wasted elements are never initialized. */
1270  yyssp = yyss;
1271  yyvsp = yyvs;
1272 
1273  goto yysetstate;
1274 
1275 /*------------------------------------------------------------.
1276 | yynewstate -- Push a new state, which is found in yystate. |
1277 `------------------------------------------------------------*/
1278  yynewstate:
1279  /* In all cases, when you get here, the value and location stacks
1280  have just been pushed. So pushing a state here evens the stacks. */
1281  yyssp++;
1282 
1283  yysetstate:
1284  *yyssp = yystate;
1285 
1286  if (yyss + yystacksize - 1 <= yyssp)
1287  {
1288  /* Get the current used size of the three stacks, in elements. */
1289  YYSIZE_T yysize = yyssp - yyss + 1;
1290 
1291 #ifdef yyoverflow
1292  {
1293  /* Give user a chance to reallocate the stack. Use copies of
1294  these so that the &'s don't force the real ones into
1295  memory. */
1296  YYSTYPE *yyvs1 = yyvs;
1297  yytype_int16 *yyss1 = yyss;
1298 
1299  /* Each stack pointer address is followed by the size of the
1300  data in use in that stack, in bytes. This used to be a
1301  conditional around just the two extra args, but that might
1302  be undefined if yyoverflow is a macro. */
1303  yyoverflow (YY_("memory exhausted"),
1304  &yyss1, yysize * sizeof (*yyssp),
1305  &yyvs1, yysize * sizeof (*yyvsp),
1306  &yystacksize);
1307 
1308  yyss = yyss1;
1309  yyvs = yyvs1;
1310  }
1311 #else /* no yyoverflow */
1312 # ifndef YYSTACK_RELOCATE
1313  goto yyexhaustedlab;
1314 # else
1315  /* Extend the stack our own way. */
1316  if (YYMAXDEPTH <= yystacksize)
1317  goto yyexhaustedlab;
1318  yystacksize *= 2;
1319  if (YYMAXDEPTH < yystacksize)
1320  yystacksize = YYMAXDEPTH;
1321 
1322  {
1323  yytype_int16 *yyss1 = yyss;
1324  union yyalloc *yyptr =
1325  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1326  if (! yyptr)
1327  goto yyexhaustedlab;
1328  YYSTACK_RELOCATE (yyss_alloc, yyss);
1329  YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1330 # undef YYSTACK_RELOCATE
1331  if (yyss1 != yyssa)
1332  YYSTACK_FREE (yyss1);
1333  }
1334 # endif
1335 #endif /* no yyoverflow */
1336 
1337  yyssp = yyss + yysize - 1;
1338  yyvsp = yyvs + yysize - 1;
1339 
1340  YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1341  (unsigned long int) yystacksize));
1342 
1343  if (yyss + yystacksize - 1 <= yyssp)
1344  YYABORT;
1345  }
1346 
1347  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1348 
1349  if (yystate == YYFINAL)
1350  YYACCEPT;
1351 
1352  goto yybackup;
1353 
1354 /*-----------.
1355 | yybackup. |
1356 `-----------*/
1357 yybackup:
1358 
1359  /* Do appropriate processing given the current state. Read a
1360  lookahead token if we need one and don't already have one. */
1361 
1362  /* First try to decide what to do without reference to lookahead token. */
1363  yyn = yypact[yystate];
1364  if (yyn == YYPACT_NINF)
1365  goto yydefault;
1366 
1367  /* Not known => get a lookahead token if don't already have one. */
1368 
1369  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1370  if (yychar == YYEMPTY)
1371  {
1372  YYDPRINTF ((stderr, "Reading a token: "));
1373  yychar = YYLEX;
1374  }
1375 
1376  if (yychar <= YYEOF)
1377  {
1378  yychar = yytoken = YYEOF;
1379  YYDPRINTF ((stderr, "Now at end of input.\n"));
1380  }
1381  else
1382  {
1383  yytoken = YYTRANSLATE (yychar);
1384  YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1385  }
1386 
1387  /* If the proper action on seeing token YYTOKEN is to reduce or to
1388  detect an error, take that action. */
1389  yyn += yytoken;
1390  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1391  goto yydefault;
1392  yyn = yytable[yyn];
1393  if (yyn <= 0)
1394  {
1395  if (yyn == 0 || yyn == YYTABLE_NINF)
1396  goto yyerrlab;
1397  yyn = -yyn;
1398  goto yyreduce;
1399  }
1400 
1401  /* Count tokens shifted since error; after three, turn off error
1402  status. */
1403  if (yyerrstatus)
1404  yyerrstatus--;
1405 
1406  /* Shift the lookahead token. */
1407  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1408 
1409  /* Discard the shifted token. */
1410  yychar = YYEMPTY;
1411 
1412  yystate = yyn;
1413  *++yyvsp = yylval;
1414 
1415  goto yynewstate;
1416 
1417 
1418 /*-----------------------------------------------------------.
1419 | yydefault -- do the default action for the current state. |
1420 `-----------------------------------------------------------*/
1421 yydefault:
1422  yyn = yydefact[yystate];
1423  if (yyn == 0)
1424  goto yyerrlab;
1425  goto yyreduce;
1426 
1427 
1428 /*-----------------------------.
1429 | yyreduce -- Do a reduction. |
1430 `-----------------------------*/
1431 yyreduce:
1432  /* yyn is the number of a rule to reduce with. */
1433  yylen = yyr2[yyn];
1434 
1435  /* If YYLEN is nonzero, implement the default value of the action:
1436  `$$ = $1'.
1437 
1438  Otherwise, the following line sets YYVAL to garbage.
1439  This behavior is undocumented and Bison
1440  users should not rely upon it. Assigning to YYVAL
1441  unconditionally makes the parser a bit smaller, and it avoids a
1442  GCC warning that YYVAL may be used uninitialized. */
1443  yyval = yyvsp[1-yylen];
1444 
1445 
1446  YY_REDUCE_PRINT (yyn);
1447  switch (yyn)
1448  {
1449  case 2:
1450 
1451 /* Line 1455 of yacc.c */
1452 #line 96 "..\\..\\cmdparse.ypp"
1453  {
1455  /* if constant is not a numeric string we have an error */
1456  if (isnumeric ((yyvsp[(2) - (3)].strval)))
1457  {
1458  ExecIO_Options.lRcdCnt = atoi ((yyvsp[(2) - (3)].strval));
1459  }
1460  else
1461  {
1462  return 1;
1463  }
1464  ;}
1465  break;
1466 
1467  case 3:
1468 
1469 /* Line 1455 of yacc.c */
1470 #line 109 "..\\..\\cmdparse.ypp"
1471  {
1473  ExecIO_Options.lRcdCnt = -1;
1474  ;}
1475  break;
1476 
1477  case 4:
1478 
1479 /* Line 1455 of yacc.c */
1480 #line 113 "..\\..\\cmdparse.ypp"
1481  { lStmtType = HI_STMT; ;}
1482  break;
1483 
1484  case 5:
1485 
1486 /* Line 1455 of yacc.c */
1487 #line 114 "..\\..\\cmdparse.ypp"
1488  { lStmtType = TE_STMT; ;}
1489  break;
1490 
1491  case 6:
1492 
1493 /* Line 1455 of yacc.c */
1494 #line 115 "..\\..\\cmdparse.ypp"
1495  { lStmtType = TS_STMT; ;}
1496  break;
1497 
1498  case 7:
1499 
1500 /* Line 1455 of yacc.c */
1501 #line 119 "..\\..\\cmdparse.ypp"
1502  {
1503  ExecIO_Options.fRW = true;
1504  strcpy (ExecIO_Options.aFilename, (yyvsp[(2) - (3)].strval));
1505  ;}
1506  break;
1507 
1508  case 8:
1509 
1510 /* Line 1455 of yacc.c */
1511 #line 124 "..\\..\\cmdparse.ypp"
1512  {
1513  ExecIO_Options.fRW = false;
1514  strcpy (ExecIO_Options.aFilename, (yyvsp[(2) - (3)].strval));
1515  ;}
1516  break;
1517 
1518  case 9:
1519 
1520 /* Line 1455 of yacc.c */
1521 #line 129 "..\\..\\cmdparse.ypp"
1522  {
1523  ExecIO_Options.fRW = false;
1524  strcpy (ExecIO_Options.aFilename, (yyvsp[(2) - (4)].strval));
1525  /* if constant is not a numeric string we have an error */
1526  if (isnumeric ((yyvsp[(3) - (4)].strval)))
1527  {
1528  ExecIO_Options.lStartRcd = atoi ((yyvsp[(3) - (4)].strval));
1529  }
1530  else
1531  {
1532  return 1;
1533  }
1534  ;}
1535  break;
1536 
1537  case 37:
1538 
1539 /* Line 1455 of yacc.c */
1540 #line 184 "..\\..\\cmdparse.ypp"
1541  { ExecIO_Options.fFinis = true; ;}
1542  break;
1543 
1544  case 38:
1545 
1546 /* Line 1455 of yacc.c */
1547 #line 188 "..\\..\\cmdparse.ypp"
1548  { ExecIO_Options.lDirection = 2; ;}
1549  break;
1550 
1551  case 39:
1552 
1553 /* Line 1455 of yacc.c */
1554 #line 192 "..\\..\\cmdparse.ypp"
1555  { strcpy (ExecIO_Options.aStem, (yyvsp[(2) - (2)].strval)); ;}
1556  break;
1557 
1558  case 41:
1559 
1560 /* Line 1455 of yacc.c */
1561 #line 197 "..\\..\\cmdparse.ypp"
1562  { ExecIO_Options.lDirection = 1; ;}
1563  break;
1564 
1565 
1566 
1567 /* Line 1455 of yacc.c */
1568 #line 1569 "..\\..\\cmdparse.cpp"
1569  default: break;
1570  }
1571  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
1572 
1573  YYPOPSTACK (yylen);
1574  yylen = 0;
1575  YY_STACK_PRINT (yyss, yyssp);
1576 
1577  *++yyvsp = yyval;
1578 
1579  /* Now `shift' the result of the reduction. Determine what state
1580  that goes to, based on the state we popped back to and the rule
1581  number reduced by. */
1582 
1583  yyn = yyr1[yyn];
1584 
1585  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1586  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1587  yystate = yytable[yystate];
1588  else
1589  yystate = yydefgoto[yyn - YYNTOKENS];
1590 
1591  goto yynewstate;
1592 
1593 
1594 /*------------------------------------.
1595 | yyerrlab -- here on detecting error |
1596 `------------------------------------*/
1597 yyerrlab:
1598  /* If not already recovering from an error, report this error. */
1599  if (!yyerrstatus)
1600  {
1601  ++yynerrs;
1602 #if ! YYERROR_VERBOSE
1603  yyerror (YY_("syntax error"));
1604 #else
1605  {
1606  YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
1607  if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
1608  {
1609  YYSIZE_T yyalloc = 2 * yysize;
1610  if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
1612  if (yymsg != yymsgbuf)
1613  YYSTACK_FREE (yymsg);
1614  yymsg = (char *) YYSTACK_ALLOC (yyalloc);
1615  if (yymsg)
1616  yymsg_alloc = yyalloc;
1617  else
1618  {
1619  yymsg = yymsgbuf;
1620  yymsg_alloc = sizeof yymsgbuf;
1621  }
1622  }
1623 
1624  if (0 < yysize && yysize <= yymsg_alloc)
1625  {
1626  (void) yysyntax_error (yymsg, yystate, yychar);
1627  yyerror (yymsg);
1628  }
1629  else
1630  {
1631  yyerror (YY_("syntax error"));
1632  if (yysize != 0)
1633  goto yyexhaustedlab;
1634  }
1635  }
1636 #endif
1637  }
1638 
1639 
1640 
1641  if (yyerrstatus == 3)
1642  {
1643  /* If just tried and failed to reuse lookahead token after an
1644  error, discard it. */
1645 
1646  if (yychar <= YYEOF)
1647  {
1648  /* Return failure if at end of input. */
1649  if (yychar == YYEOF)
1650  YYABORT;
1651  }
1652  else
1653  {
1654  yydestruct ("Error: discarding",
1655  yytoken, &yylval);
1656  yychar = YYEMPTY;
1657  }
1658  }
1659 
1660  /* Else will try to reuse lookahead token after shifting the error
1661  token. */
1662  goto yyerrlab1;
1663 
1664 
1665 /*---------------------------------------------------.
1666 | yyerrorlab -- error raised explicitly by YYERROR. |
1667 `---------------------------------------------------*/
1668 yyerrorlab:
1669 
1670  /* Pacify compilers like GCC when the user code never invokes
1671  YYERROR and the label yyerrorlab therefore never appears in user
1672  code. */
1673  if (/*CONSTCOND*/ 0)
1674  goto yyerrorlab;
1675 
1676  /* Do not reclaim the symbols of the rule which action triggered
1677  this YYERROR. */
1678  YYPOPSTACK (yylen);
1679  yylen = 0;
1680  YY_STACK_PRINT (yyss, yyssp);
1681  yystate = *yyssp;
1682  goto yyerrlab1;
1683 
1684 
1685 /*-------------------------------------------------------------.
1686 | yyerrlab1 -- common code for both syntax error and YYERROR. |
1687 `-------------------------------------------------------------*/
1688 yyerrlab1:
1689  yyerrstatus = 3; /* Each real token shifted decrements this. */
1690 
1691  for (;;)
1692  {
1693  yyn = yypact[yystate];
1694  if (yyn != YYPACT_NINF)
1695  {
1696  yyn += YYTERROR;
1697  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1698  {
1699  yyn = yytable[yyn];
1700  if (0 < yyn)
1701  break;
1702  }
1703  }
1704 
1705  /* Pop the current state because it cannot handle the error token. */
1706  if (yyssp == yyss)
1707  YYABORT;
1708 
1709 
1710  yydestruct ("Error: popping",
1711  yystos[yystate], yyvsp);
1712  YYPOPSTACK (1);
1713  yystate = *yyssp;
1714  YY_STACK_PRINT (yyss, yyssp);
1715  }
1716 
1717  *++yyvsp = yylval;
1718 
1719 
1720  /* Shift the error token. */
1721  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
1722 
1723  yystate = yyn;
1724  goto yynewstate;
1725 
1726 
1727 /*-------------------------------------.
1728 | yyacceptlab -- YYACCEPT comes here. |
1729 `-------------------------------------*/
1730 yyacceptlab:
1731  yyresult = 0;
1732  goto yyreturn;
1733 
1734 /*-----------------------------------.
1735 | yyabortlab -- YYABORT comes here. |
1736 `-----------------------------------*/
1737 yyabortlab:
1738  yyresult = 1;
1739  goto yyreturn;
1740 
1741 #if !defined(yyoverflow) || YYERROR_VERBOSE
1742 /*-------------------------------------------------.
1743 | yyexhaustedlab -- memory exhaustion comes here. |
1744 `-------------------------------------------------*/
1745 yyexhaustedlab:
1746  yyerror (YY_("memory exhausted"));
1747  yyresult = 2;
1748  /* Fall through. */
1749 #endif
1750 
1751 yyreturn:
1752  if (yychar != YYEMPTY)
1753  yydestruct ("Cleanup: discarding lookahead",
1754  yytoken, &yylval);
1755  /* Do not reclaim the symbols of the rule which action triggered
1756  this YYABORT or YYACCEPT. */
1757  YYPOPSTACK (yylen);
1758  YY_STACK_PRINT (yyss, yyssp);
1759  while (yyssp != yyss)
1760  {
1761  yydestruct ("Cleanup: popping",
1762  yystos[*yyssp], yyvsp);
1763  YYPOPSTACK (1);
1764  }
1765 #ifndef yyoverflow
1766  if (yyss != yyssa)
1767  YYSTACK_FREE (yyss);
1768 #endif
1769 #if YYERROR_VERBOSE
1770  if (yymsg != yymsgbuf)
1771  YYSTACK_FREE (yymsg);
1772 #endif
1773  /* Make sure YYID is used. */
1774  return YYID (yyresult);
1775 }
1776 
1777 
1778 
1779 /* Line 1675 of yacc.c */
1780 #line 201 "..\\..\\cmdparse.ypp"
1781 
1782 
1783 
1784 /*--------------------------------------------------------------------*/
1785 /* */
1786 /* yylex () - lexical analyzer. */
1787 /* */
1788 /*--------------------------------------------------------------------*/
1789 
1790 int yylex (
1791  void) /* no arguments */
1792  {
1793 
1794  /* local function variables */
1795  int idx = 0;
1796  static char token [1024];
1797 
1798  while (*(prxCmd -> strptr + lCmdPtr) == ' ' ||
1799  *(prxCmd -> strptr + lCmdPtr) == '\t')
1800  lCmdPtr++;
1801  if (*(prxCmd -> strptr + lCmdPtr) == '\0')
1802  return 0;
1803  if (*(prxCmd -> strptr + lCmdPtr) == '*')
1804  {
1805  lCmdPtr++;
1806  return '*';
1807  }
1808  else if (*(prxCmd -> strptr + lCmdPtr) == '(')
1809  {
1810  lCmdPtr++;
1811  return '(';
1812  }
1813  else if (*(prxCmd -> strptr + lCmdPtr) == '\"')
1814  {
1815  lCmdPtr++;
1816  while (*(prxCmd -> strptr + lCmdPtr) != '\"')
1817  {
1818  if (*(prxCmd -> strptr + lCmdPtr) == '\0')
1819  return 0;
1820  if (idx == 1024)
1821  return 0;
1822  token[idx] = *(prxCmd -> strptr + lCmdPtr);
1823  lCmdPtr++;
1824  idx++;
1825  }
1826  token[idx] = '\0';
1827  lCmdPtr++;
1828  /* insert it into our symbol table */
1829  if (ulNumSym == SYMTABLESIZE)
1830  return 0;
1831  pszSymbol[ulNumSym] = (char *)malloc(strlen (token) + 1);
1832  strcpy (pszSymbol[ulNumSym], token);
1834  ulNumSym++;
1835  return CONSTANT;
1836  }
1837  else if (isalpha (*(prxCmd -> strptr + lCmdPtr)) ||
1838  isdigit (*(prxCmd -> strptr + lCmdPtr)) ||
1839  *(prxCmd -> strptr + lCmdPtr) == '\\')
1840  {
1841  while (*(prxCmd -> strptr + lCmdPtr) != ' ' &&
1842  *(prxCmd -> strptr + lCmdPtr) != '\0')
1843  {
1844  if (idx == 1024)
1845  return 0;
1846  token[idx] = *(prxCmd -> strptr + lCmdPtr);
1847  lCmdPtr++;
1848  idx++;
1849  }
1850  token[idx] = '\0';
1851  /* insert it into our symbol table */
1852  if (ulNumSym == SYMTABLESIZE)
1853  return 0;
1854  pszSymbol[ulNumSym] = (char *)malloc(strlen (token) + 1);
1855  strcpy (pszSymbol[ulNumSym], token);
1857  ulNumSym++;
1858  return kwsearch (token);
1859  }
1860  return 0;
1861  }
1862 
1863 
1864 /*--------------------------------------------------------------------*/
1865 /* */
1866 /* yyerror () - error handler. */
1867 /* */
1868 /*--------------------------------------------------------------------*/
1869 
1870 void yyerror (
1871  char * token) /* token string */
1872  {
1873 
1874  fprintf (stderr, "hostemu: bad PLIST, token \"%s\"\n", token);
1875  return;
1876  }
1877 
1878 
1879 /*--------------------------------------------------------------------*/
1880 /* */
1881 /* Keyword table */
1882 /* */
1883 /*--------------------------------------------------------------------*/
1884 
1885 static struct
1886  {
1887  const char * kw;
1888  int type;
1889  } kwtable [] = {
1890  "HI", HI,
1891  "TE", TE,
1892  "TS", TS,
1893  "EXECIO", EXECIO,
1894  "DISKW", DISKW,
1895  "DISKR", DISKR,
1896  "STEM", STEM,
1897  "FINIS", FINIS,
1898  "FIFO", FIFO,
1899  "LIFO", LIFO,
1900  "SKIP", SKIP,
1901  "eot", EOF
1902  };
1903 
1904 
1905 /*--------------------------------------------------------------------*/
1906 /* */
1907 /* kwsearch () - search for keywords. */
1908 /* */
1909 /*--------------------------------------------------------------------*/
1910 
1912  char * token) /* token string */
1913  {
1914 
1915  /* local function variables */
1916  int i;
1917  char *utoken, *uutoken;
1918 
1919  utoken = strdup(token);
1920  uutoken = utoken;
1921  while (*uutoken != '\0')
1922  {
1923  *uutoken = toupper(*uutoken);
1924  uutoken++;
1925  }
1926  for (i = 0; kwtable[i].type != EOF; i++)
1927  if (strcmp(utoken, kwtable[i].kw) == 0)
1928  {
1929  free(utoken);
1930  return kwtable[i].type;
1931  }
1932  free(utoken);
1933  return CONSTANT;
1934  }
1935 
1936 
1937 /*--------------------------------------------------------------------*/
1938 /* */
1939 /* isnumeric () - is a string numeric? */
1940 /* */
1941 /*--------------------------------------------------------------------*/
1942 
1944  char * token) /* token string */
1945  {
1946 
1947  /* local function variables */
1948  int i;
1949 
1950  for (i = 0; i < strlen (token); i++)
1951  if (!isdigit(*(token + i)))
1952  {
1953  return false;
1954  }
1955  return true;
1956  }
1957 
1958 
unsigned short int yytype_uint16
Definition: cmdparse.cpp:239
#define YYID(n)
Definition: cmdparse.cpp:285
static const yytype_uint8 yyr1[]
Definition: cmdparse.cpp:543
#define YYLEX
Definition: cmdparse.cpp:728
int yynerrs
Definition: cmdparse.cpp:1178
int yytype
Definition: cmdparse.cpp:1137
#define YYMAXDEPTH
Definition: cmdparse.cpp:908
yytokentype
Definition: cmdparse.cpp:172
@ EXECIO
Definition: cmdparse.cpp:173
@ TE
Definition: cmdparse.cpp:175
@ FIFO
Definition: cmdparse.cpp:183
@ STEM
Definition: cmdparse.cpp:180
@ DISKR
Definition: cmdparse.cpp:179
@ CONSTANT
Definition: cmdparse.cpp:177
@ SKIP
Definition: cmdparse.cpp:184
@ FINIS
Definition: cmdparse.cpp:181
@ TS
Definition: cmdparse.cpp:176
@ LIFO
Definition: cmdparse.cpp:182
@ DISKW
Definition: cmdparse.cpp:178
@ HI
Definition: cmdparse.cpp:174
static void yydestruct(yymsg, yytype, yyvaluep) const char *yymsg
#define YYSTACK_FREE
Definition: cmdparse.cpp:341
#define YY_SYMBOL_PRINT(Title, Type, Value, Location)
Definition: cmdparse.cpp:889
YYSTYPE * yyvaluep
Definition: cmdparse.cpp:1138
static const yytype_uint8 yytranslate[]
Definition: cmdparse.cpp:449
#define YYEOF
Definition: cmdparse.cpp:644
#define YYABORT
Definition: cmdparse.cpp:647
#define YYSTACK_BYTES(N)
Definition: cmdparse.cpp:387
static const yytype_int8 yycheck[]
Definition: cmdparse.cpp:618
#define YY_REDUCE_PRINT(Rule)
Definition: cmdparse.cpp:891
int kwsearch(char *token)
Definition: cmdparse.cpp:1911
#define YYTABLE_NINF
Definition: cmdparse.cpp:606
YYSTYPE yylval
Definition: cmdparse.cpp:1175
static const yytype_int8 yypact[]
Definition: cmdparse.cpp:585
const char * kw
Definition: cmdparse.cpp:1887
#define YYPACT_NINF
Definition: cmdparse.cpp:584
#define YYFINAL
Definition: cmdparse.cpp:428
#define YYNTOKENS
Definition: cmdparse.cpp:433
unsigned char yytype_uint8
Definition: cmdparse.cpp:224
#define YY_STACK_PRINT(Bottom, Top)
Definition: cmdparse.cpp:890
#define YYSIZE_T
Definition: cmdparse.cpp:258
#define YYSTACK_ALLOC_MAXIMUM
Definition: cmdparse.cpp:343
#define YY_(msgid)
Definition: cmdparse.cpp:272
int yylex(void)
Definition: cmdparse.cpp:1790
int yychar
Definition: cmdparse.cpp:1172
static const yytype_uint8 yyr2[]
Definition: cmdparse.cpp:553
#define YYACCEPT
Definition: cmdparse.cpp:646
void yyerror(char *token)
Definition: cmdparse.cpp:1870
#define YYTRANSLATE(YYX)
Definition: cmdparse.cpp:445
#define YYSIZE_MAXIMUM
Definition: cmdparse.cpp:262
static const yytype_int8 yypgoto[]
Definition: cmdparse.cpp:596
static const yytype_uint8 yystos[]
Definition: cmdparse.cpp:631
union YYSTYPE YYSTYPE
int type
Definition: cmdparse.cpp:1888
int yyparse()
Definition: cmdparse.cpp:1203
#define YYTERROR
Definition: cmdparse.cpp:677
#define YYPOPSTACK(N)
#define YYUSE(e)
Definition: cmdparse.cpp:278
static const yytype_int8 yydefgoto[]
Definition: cmdparse.cpp:576
short int yytype_int16
Definition: cmdparse.cpp:245
bool isnumeric(char *token)
Definition: cmdparse.cpp:1943
#define YYEMPTY
Definition: cmdparse.cpp:643
#define YYLAST
Definition: cmdparse.cpp:430
#define YYSTACK_RELOCATE(Stack_alloc, Stack)
Definition: cmdparse.cpp:414
#define YYINITDEPTH
Definition: cmdparse.cpp:897
static const yytype_uint8 yytable[]
Definition: cmdparse.cpp:607
static struct @21 kwtable[]
#define YYSTACK_ALLOC
Definition: cmdparse.cpp:340
#define YYDPRINTF(Args)
Definition: cmdparse.cpp:888
static const yytype_uint8 yydefact[]
Definition: cmdparse.cpp:565
short int yytype_int8
Definition: cmdparse.cpp:233
#define HI_STMT
Definition: hostemu.h:93
#define TS_STMT
Definition: hostemu.h:95
#define EXECIO_STMT
Definition: hostemu.h:92
#define SYMTABLESIZE
Definition: hostemu.h:91
#define TE_STMT
Definition: hostemu.h:94
long lStartRcd
Definition: hostemu.h:103
char aFilename[1024]
Definition: hostemu.h:100
long lRcdCnt
Definition: hostemu.h:98
char aStem[251]
Definition: hostemu.h:101
long lDirection
Definition: hostemu.h:104
int numval
Definition: cmdparse.cpp:197
char * strval
Definition: cmdparse.cpp:198
yytype_int16 yyss_alloc
Definition: cmdparse.cpp:378
YYSTYPE yyvs_alloc
Definition: cmdparse.cpp:379
long lStmtType
char * pszSymbol[SYMTABLESIZE]
long lCmdPtr
unsigned long ulNumSym
EXECIO_OPTIONS ExecIO_Options
PCONSTRXSTRING prxCmd