xref: /freebsd/contrib/ntp/ntpd/ntp_parser.c (revision aa24f48b361effe51163877d84f1b70d32b77e04)
1 /* A Bison parser, made by GNU Bison 3.0.4.  */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5    Copyright (C) 1984, 1989-1990, 2000-2015 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.4"
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 
63 
64 /* Copy the first part of user declarations.  */
65 #line 11 "ntp_parser.y" /* yacc.c:339  */
66 
67   #ifdef HAVE_CONFIG_H
68   # include <config.h>
69   #endif
70 
71   #include "ntp.h"
72   #include "ntpd.h"
73   #include "ntp_machine.h"
74   #include "ntp_stdlib.h"
75   #include "ntp_filegen.h"
76   #include "ntp_scanner.h"
77   #include "ntp_config.h"
78   #include "ntp_crypto.h"
79 
80   #include "ntpsim.h"		/* HMS: Do we really want this all the time? */
81 				/* SK: It might be a good idea to always
82 				   include the simulator code. That way
83 				   someone can use the same configuration file
84 				   for both the simulator and the daemon
85 				*/
86 
87   #define YYMALLOC	emalloc
88   #define YYFREE	free
89   #define YYERROR_VERBOSE
90   #define YYMAXDEPTH	1000	/* stop the madness sooner */
91   void yyerror(const char *msg);
92 
93   #ifdef SIM
94   #  define ONLY_SIM(a)	(a)
95   #else
96   #  define ONLY_SIM(a)	NULL
97   #endif
98 
99 #line 100 "ntp_parser.c" /* yacc.c:339  */
100 
101 # ifndef YY_NULLPTR
102 #  if defined __cplusplus && 201103L <= __cplusplus
103 #   define YY_NULLPTR nullptr
104 #  else
105 #   define YY_NULLPTR 0
106 #  endif
107 # endif
108 
109 /* Enabling verbose error messages.  */
110 #ifdef YYERROR_VERBOSE
111 # undef YYERROR_VERBOSE
112 # define YYERROR_VERBOSE 1
113 #else
114 # define YYERROR_VERBOSE 0
115 #endif
116 
117 /* In a future release of Bison, this section will be replaced
118    by #include "y.tab.h".  */
119 #ifndef YY_YY_Y_TAB_H_INCLUDED
120 # define YY_YY_Y_TAB_H_INCLUDED
121 /* Debug traces.  */
122 #ifndef YYDEBUG
123 # define YYDEBUG 1
124 #endif
125 #if YYDEBUG
126 extern int yydebug;
127 #endif
128 
129 /* Token type.  */
130 #ifndef YYTOKENTYPE
131 # define YYTOKENTYPE
132   enum yytokentype
133   {
134     T_Abbrev = 258,
135     T_Age = 259,
136     T_All = 260,
137     T_Allan = 261,
138     T_Allpeers = 262,
139     T_Auth = 263,
140     T_Autokey = 264,
141     T_Automax = 265,
142     T_Average = 266,
143     T_Bclient = 267,
144     T_Bcpollbstep = 268,
145     T_Beacon = 269,
146     T_Broadcast = 270,
147     T_Broadcastclient = 271,
148     T_Broadcastdelay = 272,
149     T_Burst = 273,
150     T_Calibrate = 274,
151     T_Ceiling = 275,
152     T_Clockstats = 276,
153     T_Cohort = 277,
154     T_ControlKey = 278,
155     T_Crypto = 279,
156     T_Cryptostats = 280,
157     T_Ctl = 281,
158     T_Day = 282,
159     T_Default = 283,
160     T_Digest = 284,
161     T_Disable = 285,
162     T_Discard = 286,
163     T_Dispersion = 287,
164     T_Double = 288,
165     T_Driftfile = 289,
166     T_Drop = 290,
167     T_Dscp = 291,
168     T_Ellipsis = 292,
169     T_Enable = 293,
170     T_End = 294,
171     T_False = 295,
172     T_File = 296,
173     T_Filegen = 297,
174     T_Filenum = 298,
175     T_Flag1 = 299,
176     T_Flag2 = 300,
177     T_Flag3 = 301,
178     T_Flag4 = 302,
179     T_Flake = 303,
180     T_Floor = 304,
181     T_Freq = 305,
182     T_Fudge = 306,
183     T_Host = 307,
184     T_Huffpuff = 308,
185     T_Iburst = 309,
186     T_Ident = 310,
187     T_Ignore = 311,
188     T_Incalloc = 312,
189     T_Incmem = 313,
190     T_Initalloc = 314,
191     T_Initmem = 315,
192     T_Includefile = 316,
193     T_Integer = 317,
194     T_Interface = 318,
195     T_Intrange = 319,
196     T_Io = 320,
197     T_Ipv4 = 321,
198     T_Ipv4_flag = 322,
199     T_Ipv6 = 323,
200     T_Ipv6_flag = 324,
201     T_Kernel = 325,
202     T_Key = 326,
203     T_Keys = 327,
204     T_Keysdir = 328,
205     T_Kod = 329,
206     T_Mssntp = 330,
207     T_Leapfile = 331,
208     T_Leapsmearinterval = 332,
209     T_Limited = 333,
210     T_Link = 334,
211     T_Listen = 335,
212     T_Logconfig = 336,
213     T_Logfile = 337,
214     T_Loopstats = 338,
215     T_Lowpriotrap = 339,
216     T_Manycastclient = 340,
217     T_Manycastserver = 341,
218     T_Mask = 342,
219     T_Maxage = 343,
220     T_Maxclock = 344,
221     T_Maxdepth = 345,
222     T_Maxdist = 346,
223     T_Maxmem = 347,
224     T_Maxpoll = 348,
225     T_Mdnstries = 349,
226     T_Mem = 350,
227     T_Memlock = 351,
228     T_Minclock = 352,
229     T_Mindepth = 353,
230     T_Mindist = 354,
231     T_Minimum = 355,
232     T_Minpoll = 356,
233     T_Minsane = 357,
234     T_Mode = 358,
235     T_Mode7 = 359,
236     T_Monitor = 360,
237     T_Month = 361,
238     T_Mru = 362,
239     T_Multicastclient = 363,
240     T_Nic = 364,
241     T_Nolink = 365,
242     T_Nomodify = 366,
243     T_Nomrulist = 367,
244     T_None = 368,
245     T_Nonvolatile = 369,
246     T_Nopeer = 370,
247     T_Noquery = 371,
248     T_Noselect = 372,
249     T_Noserve = 373,
250     T_Notrap = 374,
251     T_Notrust = 375,
252     T_Ntp = 376,
253     T_Ntpport = 377,
254     T_NtpSignDsocket = 378,
255     T_Orphan = 379,
256     T_Orphanwait = 380,
257     T_PCEdigest = 381,
258     T_Panic = 382,
259     T_Peer = 383,
260     T_Peerstats = 384,
261     T_Phone = 385,
262     T_Pid = 386,
263     T_Pidfile = 387,
264     T_Pool = 388,
265     T_Port = 389,
266     T_Preempt = 390,
267     T_Prefer = 391,
268     T_Protostats = 392,
269     T_Pw = 393,
270     T_Randfile = 394,
271     T_Rawstats = 395,
272     T_Refid = 396,
273     T_Requestkey = 397,
274     T_Reset = 398,
275     T_Restrict = 399,
276     T_Revoke = 400,
277     T_Rlimit = 401,
278     T_Saveconfigdir = 402,
279     T_Server = 403,
280     T_Setvar = 404,
281     T_Source = 405,
282     T_Stacksize = 406,
283     T_Statistics = 407,
284     T_Stats = 408,
285     T_Statsdir = 409,
286     T_Step = 410,
287     T_Stepback = 411,
288     T_Stepfwd = 412,
289     T_Stepout = 413,
290     T_Stratum = 414,
291     T_String = 415,
292     T_Sys = 416,
293     T_Sysstats = 417,
294     T_Tick = 418,
295     T_Time1 = 419,
296     T_Time2 = 420,
297     T_Timer = 421,
298     T_Timingstats = 422,
299     T_Tinker = 423,
300     T_Tos = 424,
301     T_Trap = 425,
302     T_True = 426,
303     T_Trustedkey = 427,
304     T_Ttl = 428,
305     T_Type = 429,
306     T_U_int = 430,
307     T_UEcrypto = 431,
308     T_UEcryptonak = 432,
309     T_UEdigest = 433,
310     T_Unconfig = 434,
311     T_Unpeer = 435,
312     T_Version = 436,
313     T_WanderThreshold = 437,
314     T_Week = 438,
315     T_Wildcard = 439,
316     T_Xleave = 440,
317     T_Year = 441,
318     T_Flag = 442,
319     T_EOC = 443,
320     T_Simulate = 444,
321     T_Beep_Delay = 445,
322     T_Sim_Duration = 446,
323     T_Server_Offset = 447,
324     T_Duration = 448,
325     T_Freq_Offset = 449,
326     T_Wander = 450,
327     T_Jitter = 451,
328     T_Prop_Delay = 452,
329     T_Proc_Delay = 453
330   };
331 #endif
332 /* Tokens.  */
333 #define T_Abbrev 258
334 #define T_Age 259
335 #define T_All 260
336 #define T_Allan 261
337 #define T_Allpeers 262
338 #define T_Auth 263
339 #define T_Autokey 264
340 #define T_Automax 265
341 #define T_Average 266
342 #define T_Bclient 267
343 #define T_Bcpollbstep 268
344 #define T_Beacon 269
345 #define T_Broadcast 270
346 #define T_Broadcastclient 271
347 #define T_Broadcastdelay 272
348 #define T_Burst 273
349 #define T_Calibrate 274
350 #define T_Ceiling 275
351 #define T_Clockstats 276
352 #define T_Cohort 277
353 #define T_ControlKey 278
354 #define T_Crypto 279
355 #define T_Cryptostats 280
356 #define T_Ctl 281
357 #define T_Day 282
358 #define T_Default 283
359 #define T_Digest 284
360 #define T_Disable 285
361 #define T_Discard 286
362 #define T_Dispersion 287
363 #define T_Double 288
364 #define T_Driftfile 289
365 #define T_Drop 290
366 #define T_Dscp 291
367 #define T_Ellipsis 292
368 #define T_Enable 293
369 #define T_End 294
370 #define T_False 295
371 #define T_File 296
372 #define T_Filegen 297
373 #define T_Filenum 298
374 #define T_Flag1 299
375 #define T_Flag2 300
376 #define T_Flag3 301
377 #define T_Flag4 302
378 #define T_Flake 303
379 #define T_Floor 304
380 #define T_Freq 305
381 #define T_Fudge 306
382 #define T_Host 307
383 #define T_Huffpuff 308
384 #define T_Iburst 309
385 #define T_Ident 310
386 #define T_Ignore 311
387 #define T_Incalloc 312
388 #define T_Incmem 313
389 #define T_Initalloc 314
390 #define T_Initmem 315
391 #define T_Includefile 316
392 #define T_Integer 317
393 #define T_Interface 318
394 #define T_Intrange 319
395 #define T_Io 320
396 #define T_Ipv4 321
397 #define T_Ipv4_flag 322
398 #define T_Ipv6 323
399 #define T_Ipv6_flag 324
400 #define T_Kernel 325
401 #define T_Key 326
402 #define T_Keys 327
403 #define T_Keysdir 328
404 #define T_Kod 329
405 #define T_Mssntp 330
406 #define T_Leapfile 331
407 #define T_Leapsmearinterval 332
408 #define T_Limited 333
409 #define T_Link 334
410 #define T_Listen 335
411 #define T_Logconfig 336
412 #define T_Logfile 337
413 #define T_Loopstats 338
414 #define T_Lowpriotrap 339
415 #define T_Manycastclient 340
416 #define T_Manycastserver 341
417 #define T_Mask 342
418 #define T_Maxage 343
419 #define T_Maxclock 344
420 #define T_Maxdepth 345
421 #define T_Maxdist 346
422 #define T_Maxmem 347
423 #define T_Maxpoll 348
424 #define T_Mdnstries 349
425 #define T_Mem 350
426 #define T_Memlock 351
427 #define T_Minclock 352
428 #define T_Mindepth 353
429 #define T_Mindist 354
430 #define T_Minimum 355
431 #define T_Minpoll 356
432 #define T_Minsane 357
433 #define T_Mode 358
434 #define T_Mode7 359
435 #define T_Monitor 360
436 #define T_Month 361
437 #define T_Mru 362
438 #define T_Multicastclient 363
439 #define T_Nic 364
440 #define T_Nolink 365
441 #define T_Nomodify 366
442 #define T_Nomrulist 367
443 #define T_None 368
444 #define T_Nonvolatile 369
445 #define T_Nopeer 370
446 #define T_Noquery 371
447 #define T_Noselect 372
448 #define T_Noserve 373
449 #define T_Notrap 374
450 #define T_Notrust 375
451 #define T_Ntp 376
452 #define T_Ntpport 377
453 #define T_NtpSignDsocket 378
454 #define T_Orphan 379
455 #define T_Orphanwait 380
456 #define T_PCEdigest 381
457 #define T_Panic 382
458 #define T_Peer 383
459 #define T_Peerstats 384
460 #define T_Phone 385
461 #define T_Pid 386
462 #define T_Pidfile 387
463 #define T_Pool 388
464 #define T_Port 389
465 #define T_Preempt 390
466 #define T_Prefer 391
467 #define T_Protostats 392
468 #define T_Pw 393
469 #define T_Randfile 394
470 #define T_Rawstats 395
471 #define T_Refid 396
472 #define T_Requestkey 397
473 #define T_Reset 398
474 #define T_Restrict 399
475 #define T_Revoke 400
476 #define T_Rlimit 401
477 #define T_Saveconfigdir 402
478 #define T_Server 403
479 #define T_Setvar 404
480 #define T_Source 405
481 #define T_Stacksize 406
482 #define T_Statistics 407
483 #define T_Stats 408
484 #define T_Statsdir 409
485 #define T_Step 410
486 #define T_Stepback 411
487 #define T_Stepfwd 412
488 #define T_Stepout 413
489 #define T_Stratum 414
490 #define T_String 415
491 #define T_Sys 416
492 #define T_Sysstats 417
493 #define T_Tick 418
494 #define T_Time1 419
495 #define T_Time2 420
496 #define T_Timer 421
497 #define T_Timingstats 422
498 #define T_Tinker 423
499 #define T_Tos 424
500 #define T_Trap 425
501 #define T_True 426
502 #define T_Trustedkey 427
503 #define T_Ttl 428
504 #define T_Type 429
505 #define T_U_int 430
506 #define T_UEcrypto 431
507 #define T_UEcryptonak 432
508 #define T_UEdigest 433
509 #define T_Unconfig 434
510 #define T_Unpeer 435
511 #define T_Version 436
512 #define T_WanderThreshold 437
513 #define T_Week 438
514 #define T_Wildcard 439
515 #define T_Xleave 440
516 #define T_Year 441
517 #define T_Flag 442
518 #define T_EOC 443
519 #define T_Simulate 444
520 #define T_Beep_Delay 445
521 #define T_Sim_Duration 446
522 #define T_Server_Offset 447
523 #define T_Duration 448
524 #define T_Freq_Offset 449
525 #define T_Wander 450
526 #define T_Jitter 451
527 #define T_Prop_Delay 452
528 #define T_Proc_Delay 453
529 
530 /* Value type.  */
531 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
532 
533 union YYSTYPE
534 {
535 #line 51 "ntp_parser.y" /* yacc.c:355  */
536 
537 	char *			String;
538 	double			Double;
539 	int			Integer;
540 	unsigned		U_int;
541 	gen_fifo *		Generic_fifo;
542 	attr_val *		Attr_val;
543 	attr_val_fifo *		Attr_val_fifo;
544 	int_fifo *		Int_fifo;
545 	string_fifo *		String_fifo;
546 	address_node *		Address_node;
547 	address_fifo *		Address_fifo;
548 	setvar_node *		Set_var;
549 	server_info *		Sim_server;
550 	server_info_fifo *	Sim_server_fifo;
551 	script_info *		Sim_script;
552 	script_info_fifo *	Sim_script_fifo;
553 
554 #line 555 "ntp_parser.c" /* yacc.c:355  */
555 };
556 
557 typedef union YYSTYPE YYSTYPE;
558 # define YYSTYPE_IS_TRIVIAL 1
559 # define YYSTYPE_IS_DECLARED 1
560 #endif
561 
562 
563 extern YYSTYPE yylval;
564 
565 int yyparse (void);
566 
567 #endif /* !YY_YY_Y_TAB_H_INCLUDED  */
568 
569 /* Copy the second part of user declarations.  */
570 
571 #line 572 "ntp_parser.c" /* yacc.c:358  */
572 
573 #ifdef short
574 # undef short
575 #endif
576 
577 #ifdef YYTYPE_UINT8
578 typedef YYTYPE_UINT8 yytype_uint8;
579 #else
580 typedef unsigned char yytype_uint8;
581 #endif
582 
583 #ifdef YYTYPE_INT8
584 typedef YYTYPE_INT8 yytype_int8;
585 #else
586 typedef signed char yytype_int8;
587 #endif
588 
589 #ifdef YYTYPE_UINT16
590 typedef YYTYPE_UINT16 yytype_uint16;
591 #else
592 typedef unsigned short int yytype_uint16;
593 #endif
594 
595 #ifdef YYTYPE_INT16
596 typedef YYTYPE_INT16 yytype_int16;
597 #else
598 typedef short int yytype_int16;
599 #endif
600 
601 #ifndef YYSIZE_T
602 # ifdef __SIZE_TYPE__
603 #  define YYSIZE_T __SIZE_TYPE__
604 # elif defined size_t
605 #  define YYSIZE_T size_t
606 # elif ! defined YYSIZE_T
607 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
608 #  define YYSIZE_T size_t
609 # else
610 #  define YYSIZE_T unsigned int
611 # endif
612 #endif
613 
614 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
615 
616 #ifndef YY_
617 # if defined YYENABLE_NLS && YYENABLE_NLS
618 #  if ENABLE_NLS
619 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
620 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
621 #  endif
622 # endif
623 # ifndef YY_
624 #  define YY_(Msgid) Msgid
625 # endif
626 #endif
627 
628 #ifndef YY_ATTRIBUTE
629 # if (defined __GNUC__                                               \
630       && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
631      || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
632 #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
633 # else
634 #  define YY_ATTRIBUTE(Spec) /* empty */
635 # endif
636 #endif
637 
638 #ifndef YY_ATTRIBUTE_PURE
639 # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
640 #endif
641 
642 #ifndef YY_ATTRIBUTE_UNUSED
643 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
644 #endif
645 
646 #if !defined _Noreturn \
647      && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
648 # if defined _MSC_VER && 1200 <= _MSC_VER
649 #  define _Noreturn __declspec (noreturn)
650 # else
651 #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
652 # endif
653 #endif
654 
655 /* Suppress unused-variable warnings by "using" E.  */
656 #if ! defined lint || defined __GNUC__
657 # define YYUSE(E) ((void) (E))
658 #else
659 # define YYUSE(E) /* empty */
660 #endif
661 
662 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
663 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
664 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
665     _Pragma ("GCC diagnostic push") \
666     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
667     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
668 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
669     _Pragma ("GCC diagnostic pop")
670 #else
671 # define YY_INITIAL_VALUE(Value) Value
672 #endif
673 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
674 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
675 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
676 #endif
677 #ifndef YY_INITIAL_VALUE
678 # define YY_INITIAL_VALUE(Value) /* Nothing. */
679 #endif
680 
681 
682 #if ! defined yyoverflow || YYERROR_VERBOSE
683 
684 /* The parser invokes alloca or malloc; define the necessary symbols.  */
685 
686 # ifdef YYSTACK_USE_ALLOCA
687 #  if YYSTACK_USE_ALLOCA
688 #   ifdef __GNUC__
689 #    define YYSTACK_ALLOC __builtin_alloca
690 #   elif defined __BUILTIN_VA_ARG_INCR
691 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
692 #   elif defined _AIX
693 #    define YYSTACK_ALLOC __alloca
694 #   elif defined _MSC_VER
695 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
696 #    define alloca _alloca
697 #   else
698 #    define YYSTACK_ALLOC alloca
699 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
700 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
701       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
702 #     ifndef EXIT_SUCCESS
703 #      define EXIT_SUCCESS 0
704 #     endif
705 #    endif
706 #   endif
707 #  endif
708 # endif
709 
710 # ifdef YYSTACK_ALLOC
711    /* Pacify GCC's 'empty if-body' warning.  */
712 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
713 #  ifndef YYSTACK_ALLOC_MAXIMUM
714     /* The OS might guarantee only one guard page at the bottom of the stack,
715        and a page size can be as small as 4096 bytes.  So we cannot safely
716        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
717        to allow for a few compiler-allocated temporary stack slots.  */
718 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
719 #  endif
720 # else
721 #  define YYSTACK_ALLOC YYMALLOC
722 #  define YYSTACK_FREE YYFREE
723 #  ifndef YYSTACK_ALLOC_MAXIMUM
724 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
725 #  endif
726 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
727        && ! ((defined YYMALLOC || defined malloc) \
728              && (defined YYFREE || defined free)))
729 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
730 #   ifndef EXIT_SUCCESS
731 #    define EXIT_SUCCESS 0
732 #   endif
733 #  endif
734 #  ifndef YYMALLOC
735 #   define YYMALLOC malloc
736 #   if ! defined malloc && ! defined EXIT_SUCCESS
737 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
738 #   endif
739 #  endif
740 #  ifndef YYFREE
741 #   define YYFREE free
742 #   if ! defined free && ! defined EXIT_SUCCESS
743 void free (void *); /* INFRINGES ON USER NAME SPACE */
744 #   endif
745 #  endif
746 # endif
747 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
748 
749 
750 #if (! defined yyoverflow \
751      && (! defined __cplusplus \
752          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
753 
754 /* A type that is properly aligned for any stack member.  */
755 union yyalloc
756 {
757   yytype_int16 yyss_alloc;
758   YYSTYPE yyvs_alloc;
759 };
760 
761 /* The size of the maximum gap between one aligned stack and the next.  */
762 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
763 
764 /* The size of an array large to enough to hold all stacks, each with
765    N elements.  */
766 # define YYSTACK_BYTES(N) \
767      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
768       + YYSTACK_GAP_MAXIMUM)
769 
770 # define YYCOPY_NEEDED 1
771 
772 /* Relocate STACK from its old location to the new one.  The
773    local variables YYSIZE and YYSTACKSIZE give the old and new number of
774    elements in the stack, and YYPTR gives the new location of the
775    stack.  Advance YYPTR to a properly aligned location for the next
776    stack.  */
777 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
778     do                                                                  \
779       {                                                                 \
780         YYSIZE_T yynewbytes;                                            \
781         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
782         Stack = &yyptr->Stack_alloc;                                    \
783         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
784         yyptr += yynewbytes / sizeof (*yyptr);                          \
785       }                                                                 \
786     while (0)
787 
788 #endif
789 
790 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
791 /* Copy COUNT objects from SRC to DST.  The source and destination do
792    not overlap.  */
793 # ifndef YYCOPY
794 #  if defined __GNUC__ && 1 < __GNUC__
795 #   define YYCOPY(Dst, Src, Count) \
796       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
797 #  else
798 #   define YYCOPY(Dst, Src, Count)              \
799       do                                        \
800         {                                       \
801           YYSIZE_T yyi;                         \
802           for (yyi = 0; yyi < (Count); yyi++)   \
803             (Dst)[yyi] = (Src)[yyi];            \
804         }                                       \
805       while (0)
806 #  endif
807 # endif
808 #endif /* !YYCOPY_NEEDED */
809 
810 /* YYFINAL -- State number of the termination state.  */
811 #define YYFINAL  215
812 /* YYLAST -- Last index in YYTABLE.  */
813 #define YYLAST   654
814 
815 /* YYNTOKENS -- Number of terminals.  */
816 #define YYNTOKENS  204
817 /* YYNNTS -- Number of nonterminals.  */
818 #define YYNNTS  105
819 /* YYNRULES -- Number of rules.  */
820 #define YYNRULES  318
821 /* YYNSTATES -- Number of states.  */
822 #define YYNSTATES  424
823 
824 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
825    by yylex, with out-of-bounds checking.  */
826 #define YYUNDEFTOK  2
827 #define YYMAXUTOK   453
828 
829 #define YYTRANSLATE(YYX)                                                \
830   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
831 
832 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
833    as returned by yylex, without out-of-bounds checking.  */
834 static const yytype_uint8 yytranslate[] =
835 {
836        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
837        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
838        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
839        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
840      200,   201,     2,     2,     2,     2,     2,     2,     2,     2,
841        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
842        2,   199,     2,     2,     2,     2,     2,     2,     2,     2,
843        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
844        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
845        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
846        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
847        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
848        2,     2,     2,   202,     2,   203,     2,     2,     2,     2,
849        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
850        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
851        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
852        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
853        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
854        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
855        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
856        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
857        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
858        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
859        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
860        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
861        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
862        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
863       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
864       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
865       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
866       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
867       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
868       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
869       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
870       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
871       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
872      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
873      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
874      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
875      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
876      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
877      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
878      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
879      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
880      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
881      195,   196,   197,   198
882 };
883 
884 #if YYDEBUG
885   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
886 static const yytype_uint16 yyrline[] =
887 {
888        0,   371,   371,   375,   376,   377,   392,   393,   394,   395,
889      396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
890      413,   423,   424,   425,   426,   427,   431,   432,   437,   442,
891      444,   450,   451,   459,   460,   461,   465,   470,   471,   472,
892      473,   474,   475,   476,   477,   481,   483,   488,   489,   490,
893      491,   492,   493,   497,   502,   511,   521,   522,   532,   534,
894      536,   538,   549,   556,   558,   563,   565,   567,   569,   571,
895      580,   586,   587,   595,   597,   609,   610,   611,   612,   613,
896      622,   627,   632,   640,   642,   644,   649,   650,   651,   652,
897      653,   654,   655,   656,   657,   661,   662,   671,   673,   682,
898      692,   697,   705,   706,   707,   708,   709,   710,   711,   712,
899      717,   718,   726,   736,   745,   760,   765,   766,   770,   771,
900      775,   776,   777,   778,   779,   780,   781,   790,   794,   798,
901      806,   814,   822,   837,   852,   865,   866,   874,   875,   876,
902      877,   878,   879,   880,   881,   882,   883,   884,   885,   886,
903      887,   888,   892,   897,   905,   910,   911,   912,   916,   921,
904      929,   934,   935,   936,   937,   938,   939,   940,   941,   949,
905      959,   964,   972,   974,   976,   985,   987,   992,   993,   997,
906      998,   999,  1000,  1008,  1013,  1018,  1026,  1031,  1032,  1033,
907     1042,  1044,  1049,  1054,  1062,  1064,  1081,  1082,  1083,  1084,
908     1085,  1086,  1090,  1091,  1092,  1093,  1094,  1095,  1103,  1108,
909     1113,  1121,  1126,  1127,  1128,  1129,  1130,  1131,  1132,  1133,
910     1134,  1135,  1144,  1145,  1146,  1153,  1160,  1167,  1183,  1202,
911     1204,  1206,  1208,  1210,  1212,  1219,  1224,  1225,  1226,  1230,
912     1234,  1243,  1244,  1248,  1249,  1250,  1254,  1265,  1279,  1291,
913     1296,  1298,  1303,  1304,  1312,  1314,  1322,  1327,  1335,  1360,
914     1367,  1377,  1378,  1382,  1383,  1384,  1385,  1389,  1390,  1391,
915     1395,  1400,  1405,  1413,  1414,  1415,  1416,  1417,  1418,  1419,
916     1429,  1434,  1442,  1447,  1455,  1457,  1461,  1466,  1471,  1479,
917     1484,  1492,  1501,  1502,  1506,  1507,  1516,  1534,  1538,  1543,
918     1551,  1556,  1557,  1561,  1566,  1574,  1579,  1584,  1589,  1594,
919     1602,  1607,  1612,  1620,  1625,  1626,  1627,  1628,  1629
920 };
921 #endif
922 
923 #if YYDEBUG || YYERROR_VERBOSE || 1
924 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
925    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
926 static const char *const yytname[] =
927 {
928   "$end", "error", "$undefined", "T_Abbrev", "T_Age", "T_All", "T_Allan",
929   "T_Allpeers", "T_Auth", "T_Autokey", "T_Automax", "T_Average",
930   "T_Bclient", "T_Bcpollbstep", "T_Beacon", "T_Broadcast",
931   "T_Broadcastclient", "T_Broadcastdelay", "T_Burst", "T_Calibrate",
932   "T_Ceiling", "T_Clockstats", "T_Cohort", "T_ControlKey", "T_Crypto",
933   "T_Cryptostats", "T_Ctl", "T_Day", "T_Default", "T_Digest", "T_Disable",
934   "T_Discard", "T_Dispersion", "T_Double", "T_Driftfile", "T_Drop",
935   "T_Dscp", "T_Ellipsis", "T_Enable", "T_End", "T_False", "T_File",
936   "T_Filegen", "T_Filenum", "T_Flag1", "T_Flag2", "T_Flag3", "T_Flag4",
937   "T_Flake", "T_Floor", "T_Freq", "T_Fudge", "T_Host", "T_Huffpuff",
938   "T_Iburst", "T_Ident", "T_Ignore", "T_Incalloc", "T_Incmem",
939   "T_Initalloc", "T_Initmem", "T_Includefile", "T_Integer", "T_Interface",
940   "T_Intrange", "T_Io", "T_Ipv4", "T_Ipv4_flag", "T_Ipv6", "T_Ipv6_flag",
941   "T_Kernel", "T_Key", "T_Keys", "T_Keysdir", "T_Kod", "T_Mssntp",
942   "T_Leapfile", "T_Leapsmearinterval", "T_Limited", "T_Link", "T_Listen",
943   "T_Logconfig", "T_Logfile", "T_Loopstats", "T_Lowpriotrap",
944   "T_Manycastclient", "T_Manycastserver", "T_Mask", "T_Maxage",
945   "T_Maxclock", "T_Maxdepth", "T_Maxdist", "T_Maxmem", "T_Maxpoll",
946   "T_Mdnstries", "T_Mem", "T_Memlock", "T_Minclock", "T_Mindepth",
947   "T_Mindist", "T_Minimum", "T_Minpoll", "T_Minsane", "T_Mode", "T_Mode7",
948   "T_Monitor", "T_Month", "T_Mru", "T_Multicastclient", "T_Nic",
949   "T_Nolink", "T_Nomodify", "T_Nomrulist", "T_None", "T_Nonvolatile",
950   "T_Nopeer", "T_Noquery", "T_Noselect", "T_Noserve", "T_Notrap",
951   "T_Notrust", "T_Ntp", "T_Ntpport", "T_NtpSignDsocket", "T_Orphan",
952   "T_Orphanwait", "T_PCEdigest", "T_Panic", "T_Peer", "T_Peerstats",
953   "T_Phone", "T_Pid", "T_Pidfile", "T_Pool", "T_Port", "T_Preempt",
954   "T_Prefer", "T_Protostats", "T_Pw", "T_Randfile", "T_Rawstats",
955   "T_Refid", "T_Requestkey", "T_Reset", "T_Restrict", "T_Revoke",
956   "T_Rlimit", "T_Saveconfigdir", "T_Server", "T_Setvar", "T_Source",
957   "T_Stacksize", "T_Statistics", "T_Stats", "T_Statsdir", "T_Step",
958   "T_Stepback", "T_Stepfwd", "T_Stepout", "T_Stratum", "T_String", "T_Sys",
959   "T_Sysstats", "T_Tick", "T_Time1", "T_Time2", "T_Timer", "T_Timingstats",
960   "T_Tinker", "T_Tos", "T_Trap", "T_True", "T_Trustedkey", "T_Ttl",
961   "T_Type", "T_U_int", "T_UEcrypto", "T_UEcryptonak", "T_UEdigest",
962   "T_Unconfig", "T_Unpeer", "T_Version", "T_WanderThreshold", "T_Week",
963   "T_Wildcard", "T_Xleave", "T_Year", "T_Flag", "T_EOC", "T_Simulate",
964   "T_Beep_Delay", "T_Sim_Duration", "T_Server_Offset", "T_Duration",
965   "T_Freq_Offset", "T_Wander", "T_Jitter", "T_Prop_Delay", "T_Proc_Delay",
966   "'='", "'('", "')'", "'{'", "'}'", "$accept", "configuration",
967   "command_list", "command", "server_command", "client_type", "address",
968   "ip_address", "address_fam", "option_list", "option", "option_flag",
969   "option_flag_keyword", "option_int", "option_int_keyword", "option_str",
970   "option_str_keyword", "unpeer_command", "unpeer_keyword",
971   "other_mode_command", "authentication_command", "crypto_command_list",
972   "crypto_command", "crypto_str_keyword", "orphan_mode_command",
973   "tos_option_list", "tos_option", "tos_option_int_keyword",
974   "tos_option_dbl_keyword", "monitoring_command", "stats_list", "stat",
975   "filegen_option_list", "filegen_option", "link_nolink", "enable_disable",
976   "filegen_type", "access_control_command", "ac_flag_list",
977   "access_control_flag", "discard_option_list", "discard_option",
978   "discard_option_keyword", "mru_option_list", "mru_option",
979   "mru_option_keyword", "fudge_command", "fudge_factor_list",
980   "fudge_factor", "fudge_factor_dbl_keyword", "fudge_factor_bool_keyword",
981   "rlimit_command", "rlimit_option_list", "rlimit_option",
982   "rlimit_option_keyword", "system_option_command", "system_option_list",
983   "system_option", "system_option_flag_keyword",
984   "system_option_local_flag_keyword", "tinker_command",
985   "tinker_option_list", "tinker_option", "tinker_option_keyword",
986   "miscellaneous_command", "misc_cmd_dbl_keyword", "misc_cmd_int_keyword",
987   "misc_cmd_str_keyword", "misc_cmd_str_lcl_keyword", "drift_parm",
988   "variable_assign", "t_default_or_zero", "trap_option_list",
989   "trap_option", "log_config_list", "log_config_command",
990   "interface_command", "interface_nic", "nic_rule_class",
991   "nic_rule_action", "reset_command", "counter_set_list",
992   "counter_set_keyword", "integer_list", "integer_list_range",
993   "integer_list_range_elt", "integer_range", "string_list", "address_list",
994   "boolean", "number", "simulate_command", "sim_conf_start",
995   "sim_init_statement_list", "sim_init_statement", "sim_init_keyword",
996   "sim_server_list", "sim_server", "sim_server_offset", "sim_server_name",
997   "sim_act_list", "sim_act", "sim_act_stmt_list", "sim_act_stmt",
998   "sim_act_keyword", YY_NULLPTR
999 };
1000 #endif
1001 
1002 # ifdef YYPRINT
1003 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1004    (internal) symbol number NUM (which must be that of a token).  */
1005 static const yytype_uint16 yytoknum[] =
1006 {
1007        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1008      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1009      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1010      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1011      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
1012      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
1013      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
1014      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
1015      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
1016      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
1017      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
1018      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
1019      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
1020      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
1021      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
1022      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
1023      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
1024      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
1025      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
1026      445,   446,   447,   448,   449,   450,   451,   452,   453,    61,
1027       40,    41,   123,   125
1028 };
1029 # endif
1030 
1031 #define YYPACT_NINF -189
1032 
1033 #define yypact_value_is_default(Yystate) \
1034   (!!((Yystate) == (-189)))
1035 
1036 #define YYTABLE_NINF -7
1037 
1038 #define yytable_value_is_error(Yytable_value) \
1039   0
1040 
1041   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1042      STATE-NUM.  */
1043 static const yytype_int16 yypact[] =
1044 {
1045       18,  -177,   -45,  -189,  -189,  -189,   -40,  -189,    32,     5,
1046     -129,  -189,    32,  -189,   204,   -44,  -189,  -117,  -189,  -110,
1047     -101,  -189,  -189,   -97,  -189,  -189,   -44,    -4,   495,   -44,
1048     -189,  -189,   -96,  -189,   -94,  -189,  -189,     8,    54,   258,
1049       10,   -28,  -189,  -189,   -89,   204,   -86,  -189,   270,   529,
1050      -85,   -56,    14,  -189,  -189,  -189,    83,   207,   -95,  -189,
1051      -44,  -189,   -44,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
1052     -189,  -189,  -189,    -7,    24,   -73,   -68,  -189,    -3,  -189,
1053     -189,  -106,  -189,  -189,  -189,   313,  -189,  -189,  -189,  -189,
1054     -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,    32,  -189,
1055     -189,  -189,  -189,  -189,  -189,     5,  -189,    35,    65,  -189,
1056       32,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
1057     -189,  -189,  -189,   110,  -189,   -59,   368,  -189,  -189,  -189,
1058      -97,  -189,  -189,   -44,  -189,  -189,  -189,  -189,  -189,  -189,
1059     -189,  -189,  -189,   495,  -189,    44,   -44,  -189,  -189,   -51,
1060     -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,    54,  -189,
1061     -189,    86,    89,  -189,  -189,    33,  -189,  -189,  -189,  -189,
1062      -28,  -189,    49,   -75,  -189,   204,  -189,  -189,  -189,  -189,
1063     -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,   270,  -189,
1064       -7,  -189,  -189,  -189,   -33,  -189,  -189,  -189,  -189,  -189,
1065     -189,  -189,  -189,   529,  -189,    66,    -7,  -189,  -189,    67,
1066      -56,  -189,  -189,  -189,    68,  -189,   -53,  -189,  -189,  -189,
1067     -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,    16,
1068     -153,  -189,  -189,  -189,  -189,  -189,    77,  -189,   -18,  -189,
1069     -189,  -189,  -189,   226,   -13,  -189,  -189,  -189,  -189,    -8,
1070       97,  -189,  -189,   110,  -189,    -7,   -33,  -189,  -189,  -189,
1071     -189,  -189,  -189,  -189,  -189,   449,  -189,  -189,   449,   449,
1072      -85,  -189,  -189,    11,  -189,  -189,  -189,  -189,  -189,  -189,
1073     -189,  -189,  -189,  -189,   -49,   108,  -189,  -189,  -189,   125,
1074     -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -102,   -20,
1075      -30,  -189,  -189,  -189,  -189,    13,  -189,  -189,     9,  -189,
1076     -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
1077     -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
1078     -189,  -189,  -189,  -189,   449,   449,  -189,   146,   -85,   113,
1079     -189,   116,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
1080     -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
1081     -189,   -54,  -189,    23,   -10,     6,  -138,  -189,    -9,  -189,
1082       -7,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
1083      449,  -189,  -189,  -189,  -189,   -17,  -189,  -189,  -189,   -44,
1084     -189,  -189,  -189,    20,  -189,  -189,  -189,     0,    21,    -7,
1085       22,  -173,  -189,    25,    -7,  -189,  -189,  -189,    17,     7,
1086     -189,  -189,  -189,  -189,  -189,   217,    39,    36,  -189,    46,
1087     -189,    -7,  -189,  -189
1088 };
1089 
1090   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1091      Performed when YYTABLE does not specify something else to do.  Zero
1092      means the default is an error.  */
1093 static const yytype_uint16 yydefact[] =
1094 {
1095        0,     0,     0,    24,    58,   236,     0,    71,     0,     0,
1096      248,   239,     0,   229,     0,     0,   241,     0,   261,     0,
1097        0,   242,   240,     0,   243,    25,     0,     0,     0,     0,
1098      262,   237,     0,    23,     0,   244,    22,     0,     0,     0,
1099        0,     0,   245,    21,     0,     0,     0,   238,     0,     0,
1100        0,     0,     0,    56,    57,   297,     0,     2,     0,     7,
1101        0,     8,     0,     9,    10,    13,    11,    12,    14,    15,
1102       16,    17,    18,     0,     0,     0,     0,   222,     0,   223,
1103       19,     0,     5,    62,    63,    64,   196,   197,   198,   199,
1104      202,   200,   201,   203,   204,   205,   206,   207,   191,   193,
1105      194,   195,   155,   156,   157,   127,   153,     0,   246,   230,
1106      190,   102,   103,   104,   105,   109,   106,   107,   108,   110,
1107       29,    30,    28,     0,    26,     0,     6,    65,    66,   258,
1108      231,   257,   290,    59,    61,   161,   162,   163,   164,   165,
1109      166,   167,   168,   128,   159,     0,    60,    70,   288,   232,
1110       67,   273,   274,   275,   276,   277,   278,   279,   270,   272,
1111      135,    29,    30,   135,   135,    26,    68,   189,   187,   188,
1112      183,   185,     0,     0,   233,    97,   101,    98,   212,   213,
1113      214,   215,   216,   217,   218,   219,   220,   221,   208,   210,
1114        0,    86,    87,    88,     0,    89,    90,    96,    91,    95,
1115       92,    93,    94,    80,    82,     0,     0,   252,   284,     0,
1116       69,   283,   285,   281,   235,     1,     0,     4,    31,    55,
1117      295,   294,   224,   225,   226,   227,   269,   268,   267,     0,
1118        0,    79,    75,    76,    77,    78,     0,    72,     0,   192,
1119      152,   154,   247,    99,     0,   179,   180,   181,   182,     0,
1120        0,   177,   178,   169,   171,     0,     0,    27,   228,   256,
1121      289,   158,   160,   287,   271,   131,   135,   135,   134,   129,
1122        0,   184,   186,     0,   100,   209,   211,   293,   291,   292,
1123       85,    81,    83,    84,   234,     0,   282,   280,     3,    20,
1124      263,   264,   265,   260,   266,   259,   301,   302,     0,     0,
1125        0,    74,    73,   119,   118,     0,   116,   117,     0,   111,
1126      114,   115,   175,   176,   174,   170,   172,   173,   137,   138,
1127      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
1128      149,   150,   151,   136,   132,   133,   135,   251,     0,     0,
1129      253,     0,    37,    38,    39,    54,    47,    49,    48,    51,
1130       40,    41,    42,    43,    50,    52,    44,    32,    33,    36,
1131       34,     0,    35,     0,     0,     0,     0,   304,     0,   299,
1132        0,   112,   126,   122,   124,   120,   121,   123,   125,   113,
1133      130,   250,   249,   255,   254,     0,    45,    46,    53,     0,
1134      298,   296,   303,     0,   300,   286,   307,     0,     0,     0,
1135        0,     0,   309,     0,     0,   305,   308,   306,     0,     0,
1136      314,   315,   316,   317,   318,     0,     0,     0,   310,     0,
1137      312,     0,   311,   313
1138 };
1139 
1140   /* YYPGOTO[NTERM-NUM].  */
1141 static const yytype_int16 yypgoto[] =
1142 {
1143     -189,  -189,  -189,   -48,  -189,  -189,   -15,   -38,  -189,  -189,
1144     -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
1145     -189,  -189,  -189,  -189,  -189,  -189,    37,  -189,  -189,  -189,
1146     -189,   -42,  -189,  -189,  -189,  -189,  -189,  -189,  -159,  -189,
1147     -189,   131,  -189,  -189,    96,  -189,  -189,  -189,    -6,  -189,
1148     -189,  -189,  -189,    74,  -189,  -189,   236,   -71,  -189,  -189,
1149     -189,  -189,    62,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
1150     -189,  -189,  -189,  -189,  -189,   122,  -189,  -189,  -189,  -189,
1151     -189,  -189,    95,  -189,  -189,    45,  -189,  -189,   225,     1,
1152     -188,  -189,  -189,  -189,   -39,  -189,  -189,  -103,  -189,  -189,
1153     -189,  -136,  -189,  -149,  -189
1154 };
1155 
1156   /* YYDEFGOTO[NTERM-NUM].  */
1157 static const yytype_int16 yydefgoto[] =
1158 {
1159       -1,    56,    57,    58,    59,    60,   132,   124,   125,   289,
1160      357,   358,   359,   360,   361,   362,   363,    61,    62,    63,
1161       64,    85,   237,   238,    65,   203,   204,   205,   206,    66,
1162      175,   119,   243,   309,   310,   311,   379,    67,   265,   333,
1163      105,   106,   107,   143,   144,   145,    68,   253,   254,   255,
1164      256,    69,   170,   171,   172,    70,    98,    99,   100,   101,
1165       71,   188,   189,   190,    72,    73,    74,    75,    76,   109,
1166      174,   382,   284,   340,   130,   131,    77,    78,   295,   229,
1167       79,   158,   159,   214,   210,   211,   212,   149,   133,   280,
1168      222,    80,    81,   298,   299,   300,   366,   367,   398,   368,
1169      401,   402,   415,   416,   417
1170 };
1171 
1172   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
1173      positive, shift that token.  If negative, reduce the rule whose
1174      number is the opposite.  If YYTABLE_NINF, syntax error.  */
1175 static const yytype_int16 yytable[] =
1176 {
1177      123,   165,   276,   176,   268,   269,   208,   277,   386,   216,
1178      364,    82,   207,   372,   338,   167,   102,    83,   283,     1,
1179      400,   290,    84,   120,   164,   121,   220,   239,     2,   278,
1180      405,   108,   226,     3,     4,     5,   373,   296,   297,   239,
1181       86,     6,     7,   126,    87,   218,   364,   219,     8,     9,
1182      127,    88,    10,   227,    11,   221,    12,    13,   134,   128,
1183       14,   151,   152,   129,   147,   391,   148,   316,   168,    15,
1184      150,   173,   166,    16,   177,   122,   213,   228,   258,    17,
1185      153,    18,   291,   215,   292,   339,   223,   224,   296,   297,
1186       19,    20,   225,   217,    21,    22,   230,   241,   242,    23,
1187       24,   257,    89,    25,    26,   103,   262,   334,   335,   263,
1188      104,   272,    27,   244,   266,   374,   122,   267,   260,   154,
1189      270,   387,   375,   169,   273,    28,    29,    30,   282,   285,
1190      287,   260,    31,   274,   342,   288,    90,    91,   279,   301,
1191      376,    32,   302,   343,   209,   341,    33,   312,    34,   155,
1192       35,    36,   313,    92,   245,   246,   247,   248,    93,   314,
1193       37,    38,    39,    40,    41,    42,    43,    44,   369,   370,
1194       45,   337,    46,   371,   381,   384,   293,   380,   385,   344,
1195      345,    47,   394,   388,   395,    94,    48,    49,    50,   389,
1196       51,    52,   377,   393,   390,   378,   346,    53,    54,   399,
1197      294,   410,   411,   412,   413,   414,    -6,    55,    95,    96,
1198       97,   403,   397,   407,   400,   156,   408,     2,   347,   409,
1199      157,   404,     3,     4,     5,   111,   348,   420,   349,   112,
1200        6,     7,   336,   423,   422,   421,   240,     8,     9,   261,
1201      281,    10,   350,    11,   271,    12,    13,   315,   110,    14,
1202      275,   249,   259,   264,   146,   286,   303,   317,    15,   365,
1203      351,   352,    16,   392,   304,   406,   419,   305,    17,   250,
1204       18,     0,     0,     0,   251,   252,   178,     0,     0,    19,
1205       20,     0,     0,    21,    22,     0,   160,   113,    23,    24,
1206        0,     0,    25,    26,     0,     0,   353,     0,   354,     0,
1207      383,    27,   179,     0,     0,   306,   355,     0,     0,     0,
1208      356,     0,     0,     0,    28,    29,    30,     0,     0,     0,
1209      180,    31,     0,   181,     0,   161,     0,   162,     0,     0,
1210       32,     0,     0,   114,     0,    33,   307,    34,     0,    35,
1211       36,   115,   231,     0,   116,     0,     0,     0,     0,    37,
1212       38,    39,    40,    41,    42,    43,    44,     0,     0,    45,
1213        0,    46,     0,     0,     0,   232,   117,     0,   233,     0,
1214       47,   118,     0,     0,   396,    48,    49,    50,     2,    51,
1215       52,     0,     0,     3,     4,     5,    53,    54,     0,     0,
1216        0,     6,     7,     0,     0,    -6,    55,   182,     8,     9,
1217      308,     0,    10,     0,    11,     0,    12,    13,   163,     0,
1218       14,   410,   411,   412,   413,   414,     0,     0,   122,    15,
1219      418,     0,     0,    16,     0,   183,   184,   185,   186,    17,
1220        0,    18,     0,   187,     0,     0,     0,     0,     0,     0,
1221       19,    20,     0,     0,    21,    22,     0,     0,     0,    23,
1222       24,   234,   235,    25,    26,     0,     0,     0,   236,     0,
1223        0,     0,    27,     0,     0,     0,     0,     0,     0,     0,
1224        0,     0,     0,     0,     0,    28,    29,    30,     0,     0,
1225        0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
1226        0,    32,     0,     0,     0,     0,    33,   318,    34,     0,
1227       35,    36,     0,     0,     0,   319,     0,     0,     0,     0,
1228       37,    38,    39,    40,    41,    42,    43,    44,     0,     0,
1229       45,     0,    46,   320,   321,     0,     0,   322,     0,     0,
1230        0,    47,     0,   323,     0,     0,    48,    49,    50,     0,
1231       51,    52,   191,   192,     0,     0,     0,    53,    54,   193,
1232        0,   194,   135,   136,   137,   138,     0,    55,     0,     0,
1233      324,   325,     0,     0,   326,   327,     0,   328,   329,   330,
1234        0,   331,     0,     0,     0,     0,     0,     0,   195,     0,
1235        0,     0,     0,   139,     0,   140,     0,   141,     0,     0,
1236        0,     0,     0,   142,     0,     0,     0,     0,     0,     0,
1237        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1238        0,     0,     0,     0,     0,     0,     0,     0,   196,     0,
1239      197,     0,     0,     0,     0,     0,   198,     0,   199,     0,
1240      332,   200,     0,     0,     0,     0,     0,     0,     0,     0,
1241        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1242        0,     0,     0,   201,   202
1243 };
1244 
1245 static const yytype_int16 yycheck[] =
1246 {
1247       15,    39,   190,    45,   163,   164,    62,    40,    62,    57,
1248      148,   188,    50,     4,    63,    43,    11,    62,   206,     1,
1249      193,     5,    62,    67,    39,    69,    33,    98,    10,    62,
1250      203,   160,    35,    15,    16,    17,    27,   190,   191,   110,
1251        8,    23,    24,   160,    12,    60,   148,    62,    30,    31,
1252      160,    19,    34,    56,    36,    62,    38,    39,    62,   160,
1253       42,     7,     8,   160,   160,   203,   160,   255,    96,    51,
1254       62,   160,    62,    55,   160,   160,    62,    80,   126,    61,
1255       26,    63,    66,     0,    68,   134,    62,   160,   190,   191,
1256       72,    73,   160,   188,    76,    77,   202,    62,    33,    81,
1257       82,   160,    70,    85,    86,   100,    62,   266,   267,   160,
1258      105,    62,    94,     3,    28,   106,   160,    28,   133,    65,
1259       87,   175,   113,   151,   199,   107,   108,   109,    62,    62,
1260       62,   146,   114,   175,     9,   188,   104,   105,   171,    62,
1261      131,   123,   160,    18,   200,    37,   128,   160,   130,    95,
1262      132,   133,   160,   121,    44,    45,    46,    47,   126,    62,
1263      142,   143,   144,   145,   146,   147,   148,   149,   188,   199,
1264      152,   160,   154,   160,    28,    62,   160,   336,    62,    54,
1265       55,   163,   370,   160,   201,   153,   168,   169,   170,   199,
1266      172,   173,   183,   202,   188,   186,    71,   179,   180,   199,
1267      184,   194,   195,   196,   197,   198,   188,   189,   176,   177,
1268      178,   399,   192,   188,   193,   161,   404,    10,    93,   202,
1269      166,   199,    15,    16,    17,    21,   101,   188,   103,    25,
1270       23,    24,   270,   421,   188,   199,   105,    30,    31,   143,
1271      203,    34,   117,    36,   170,    38,    39,   253,    12,    42,
1272      188,   141,   130,   158,    29,   210,    30,   256,    51,   298,
1273      135,   136,    55,   366,    38,   401,   415,    41,    61,   159,
1274       63,    -1,    -1,    -1,   164,   165,     6,    -1,    -1,    72,
1275       73,    -1,    -1,    76,    77,    -1,    28,    83,    81,    82,
1276       -1,    -1,    85,    86,    -1,    -1,   171,    -1,   173,    -1,
1277      338,    94,    32,    -1,    -1,    79,   181,    -1,    -1,    -1,
1278      185,    -1,    -1,    -1,   107,   108,   109,    -1,    -1,    -1,
1279       50,   114,    -1,    53,    -1,    67,    -1,    69,    -1,    -1,
1280      123,    -1,    -1,   129,    -1,   128,   110,   130,    -1,   132,
1281      133,   137,    29,    -1,   140,    -1,    -1,    -1,    -1,   142,
1282      143,   144,   145,   146,   147,   148,   149,    -1,    -1,   152,
1283       -1,   154,    -1,    -1,    -1,    52,   162,    -1,    55,    -1,
1284      163,   167,    -1,    -1,   389,   168,   169,   170,    10,   172,
1285      173,    -1,    -1,    15,    16,    17,   179,   180,    -1,    -1,
1286       -1,    23,    24,    -1,    -1,   188,   189,   127,    30,    31,
1287      174,    -1,    34,    -1,    36,    -1,    38,    39,   150,    -1,
1288       42,   194,   195,   196,   197,   198,    -1,    -1,   160,    51,
1289      203,    -1,    -1,    55,    -1,   155,   156,   157,   158,    61,
1290       -1,    63,    -1,   163,    -1,    -1,    -1,    -1,    -1,    -1,
1291       72,    73,    -1,    -1,    76,    77,    -1,    -1,    -1,    81,
1292       82,   138,   139,    85,    86,    -1,    -1,    -1,   145,    -1,
1293       -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1294       -1,    -1,    -1,    -1,    -1,   107,   108,   109,    -1,    -1,
1295       -1,    -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1296       -1,   123,    -1,    -1,    -1,    -1,   128,    48,   130,    -1,
1297      132,   133,    -1,    -1,    -1,    56,    -1,    -1,    -1,    -1,
1298      142,   143,   144,   145,   146,   147,   148,   149,    -1,    -1,
1299      152,    -1,   154,    74,    75,    -1,    -1,    78,    -1,    -1,
1300       -1,   163,    -1,    84,    -1,    -1,   168,   169,   170,    -1,
1301      172,   173,    13,    14,    -1,    -1,    -1,   179,   180,    20,
1302       -1,    22,    57,    58,    59,    60,    -1,   189,    -1,    -1,
1303      111,   112,    -1,    -1,   115,   116,    -1,   118,   119,   120,
1304       -1,   122,    -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,
1305       -1,    -1,    -1,    88,    -1,    90,    -1,    92,    -1,    -1,
1306       -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,    -1,
1307       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1308       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,
1309       91,    -1,    -1,    -1,    -1,    -1,    97,    -1,    99,    -1,
1310      181,   102,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1311       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1312       -1,    -1,    -1,   124,   125
1313 };
1314 
1315   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1316      symbol of state STATE-NUM.  */
1317 static const yytype_uint16 yystos[] =
1318 {
1319        0,     1,    10,    15,    16,    17,    23,    24,    30,    31,
1320       34,    36,    38,    39,    42,    51,    55,    61,    63,    72,
1321       73,    76,    77,    81,    82,    85,    86,    94,   107,   108,
1322      109,   114,   123,   128,   130,   132,   133,   142,   143,   144,
1323      145,   146,   147,   148,   149,   152,   154,   163,   168,   169,
1324      170,   172,   173,   179,   180,   189,   205,   206,   207,   208,
1325      209,   221,   222,   223,   224,   228,   233,   241,   250,   255,
1326      259,   264,   268,   269,   270,   271,   272,   280,   281,   284,
1327      295,   296,   188,    62,    62,   225,     8,    12,    19,    70,
1328      104,   105,   121,   126,   153,   176,   177,   178,   260,   261,
1329      262,   263,    11,   100,   105,   244,   245,   246,   160,   273,
1330      260,    21,    25,    83,   129,   137,   140,   162,   167,   235,
1331       67,    69,   160,   210,   211,   212,   160,   160,   160,   160,
1332      278,   279,   210,   292,    62,    57,    58,    59,    60,    88,
1333       90,    92,    98,   247,   248,   249,   292,   160,   160,   291,
1334       62,     7,     8,    26,    65,    95,   161,   166,   285,   286,
1335       28,    67,    69,   150,   210,   211,    62,    43,    96,   151,
1336      256,   257,   258,   160,   274,   234,   235,   160,     6,    32,
1337       50,    53,   127,   155,   156,   157,   158,   163,   265,   266,
1338      267,    13,    14,    20,    22,    49,    89,    91,    97,    99,
1339      102,   124,   125,   229,   230,   231,   232,   211,    62,   200,
1340      288,   289,   290,    62,   287,     0,   207,   188,   210,   210,
1341       33,    62,   294,    62,   160,   160,    35,    56,    80,   283,
1342      202,    29,    52,    55,   138,   139,   145,   226,   227,   261,
1343      245,    62,    33,   236,     3,    44,    45,    46,    47,   141,
1344      159,   164,   165,   251,   252,   253,   254,   160,   207,   279,
1345      210,   248,    62,   160,   286,   242,    28,    28,   242,   242,
1346       87,   257,    62,   199,   235,   266,   294,    40,    62,   171,
1347      293,   230,    62,   294,   276,    62,   289,    62,   188,   213,
1348        5,    66,    68,   160,   184,   282,   190,   191,   297,   298,
1349      299,    62,   160,    30,    38,    41,    79,   110,   174,   237,
1350      238,   239,   160,   160,    62,   252,   294,   293,    48,    56,
1351       74,    75,    78,    84,   111,   112,   115,   116,   118,   119,
1352      120,   122,   181,   243,   242,   242,   211,   160,    63,   134,
1353      277,    37,     9,    18,    54,    55,    71,    93,   101,   103,
1354      117,   135,   136,   171,   173,   181,   185,   214,   215,   216,
1355      217,   218,   219,   220,   148,   298,   300,   301,   303,   188,
1356      199,   160,     4,    27,   106,   113,   131,   183,   186,   240,
1357      242,    28,   275,   211,    62,    62,    62,   175,   160,   199,
1358      188,   203,   301,   202,   294,   201,   210,   192,   302,   199,
1359      193,   304,   305,   294,   199,   203,   305,   188,   294,   202,
1360      194,   195,   196,   197,   198,   306,   307,   308,   203,   307,
1361      188,   199,   188,   294
1362 };
1363 
1364   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1365 static const yytype_uint16 yyr1[] =
1366 {
1367        0,   204,   205,   206,   206,   206,   207,   207,   207,   207,
1368      207,   207,   207,   207,   207,   207,   207,   207,   207,   207,
1369      208,   209,   209,   209,   209,   209,   210,   210,   211,   212,
1370      212,   213,   213,   214,   214,   214,   215,   216,   216,   216,
1371      216,   216,   216,   216,   216,   217,   217,   218,   218,   218,
1372      218,   218,   218,   219,   220,   221,   222,   222,   223,   223,
1373      223,   223,   224,   224,   224,   224,   224,   224,   224,   224,
1374      224,   225,   225,   226,   226,   227,   227,   227,   227,   227,
1375      228,   229,   229,   230,   230,   230,   231,   231,   231,   231,
1376      231,   231,   231,   231,   231,   232,   232,   233,   233,   233,
1377      234,   234,   235,   235,   235,   235,   235,   235,   235,   235,
1378      236,   236,   237,   237,   237,   237,   238,   238,   239,   239,
1379      240,   240,   240,   240,   240,   240,   240,   241,   241,   241,
1380      241,   241,   241,   241,   241,   242,   242,   243,   243,   243,
1381      243,   243,   243,   243,   243,   243,   243,   243,   243,   243,
1382      243,   243,   244,   244,   245,   246,   246,   246,   247,   247,
1383      248,   249,   249,   249,   249,   249,   249,   249,   249,   250,
1384      251,   251,   252,   252,   252,   252,   252,   253,   253,   254,
1385      254,   254,   254,   255,   256,   256,   257,   258,   258,   258,
1386      259,   259,   260,   260,   261,   261,   262,   262,   262,   262,
1387      262,   262,   263,   263,   263,   263,   263,   263,   264,   265,
1388      265,   266,   267,   267,   267,   267,   267,   267,   267,   267,
1389      267,   267,   268,   268,   268,   268,   268,   268,   268,   268,
1390      268,   268,   268,   268,   268,   268,   269,   269,   269,   270,
1391      270,   271,   271,   272,   272,   272,   273,   273,   273,   274,
1392      275,   275,   276,   276,   277,   277,   278,   278,   279,   280,
1393      280,   281,   281,   282,   282,   282,   282,   283,   283,   283,
1394      284,   285,   285,   286,   286,   286,   286,   286,   286,   286,
1395      287,   287,   288,   288,   289,   289,   290,   291,   291,   292,
1396      292,   293,   293,   293,   294,   294,   295,   296,   297,   297,
1397      298,   299,   299,   300,   300,   301,   302,   303,   304,   304,
1398      305,   306,   306,   307,   308,   308,   308,   308,   308
1399 };
1400 
1401   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
1402 static const yytype_uint8 yyr2[] =
1403 {
1404        0,     2,     1,     3,     2,     2,     0,     1,     1,     1,
1405        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1406        3,     1,     1,     1,     1,     1,     1,     2,     1,     1,
1407        1,     0,     2,     1,     1,     1,     1,     1,     1,     1,
1408        1,     1,     1,     1,     1,     2,     2,     1,     1,     1,
1409        1,     1,     1,     2,     1,     2,     1,     1,     1,     2,
1410        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1411        2,     0,     2,     2,     2,     1,     1,     1,     1,     1,
1412        2,     2,     1,     2,     2,     2,     1,     1,     1,     1,
1413        1,     1,     1,     1,     1,     1,     1,     2,     2,     3,
1414        2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1415        0,     2,     2,     2,     1,     1,     1,     1,     1,     1,
1416        1,     1,     1,     1,     1,     1,     1,     2,     2,     3,
1417        5,     3,     4,     4,     3,     0,     2,     1,     1,     1,
1418        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1419        1,     1,     2,     1,     2,     1,     1,     1,     2,     1,
1420        2,     1,     1,     1,     1,     1,     1,     1,     1,     3,
1421        2,     1,     2,     2,     2,     2,     2,     1,     1,     1,
1422        1,     1,     1,     2,     2,     1,     2,     1,     1,     1,
1423        2,     2,     2,     1,     1,     1,     1,     1,     1,     1,
1424        1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
1425        1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1426        1,     1,     1,     1,     2,     2,     2,     2,     3,     1,
1427        2,     2,     2,     2,     3,     2,     1,     1,     1,     1,
1428        1,     1,     1,     1,     1,     1,     1,     2,     0,     4,
1429        1,     0,     0,     2,     2,     2,     2,     1,     1,     3,
1430        3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1431        2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1432        2,     1,     2,     1,     1,     1,     5,     2,     1,     2,
1433        1,     1,     1,     1,     1,     1,     5,     1,     3,     2,
1434        3,     1,     1,     2,     1,     5,     4,     3,     2,     1,
1435        6,     3,     2,     3,     1,     1,     1,     1,     1
1436 };
1437 
1438 
1439 #define yyerrok         (yyerrstatus = 0)
1440 #define yyclearin       (yychar = YYEMPTY)
1441 #define YYEMPTY         (-2)
1442 #define YYEOF           0
1443 
1444 #define YYACCEPT        goto yyacceptlab
1445 #define YYABORT         goto yyabortlab
1446 #define YYERROR         goto yyerrorlab
1447 
1448 
1449 #define YYRECOVERING()  (!!yyerrstatus)
1450 
1451 #define YYBACKUP(Token, Value)                                  \
1452 do                                                              \
1453   if (yychar == YYEMPTY)                                        \
1454     {                                                           \
1455       yychar = (Token);                                         \
1456       yylval = (Value);                                         \
1457       YYPOPSTACK (yylen);                                       \
1458       yystate = *yyssp;                                         \
1459       goto yybackup;                                            \
1460     }                                                           \
1461   else                                                          \
1462     {                                                           \
1463       yyerror (YY_("syntax error: cannot back up")); \
1464       YYERROR;                                                  \
1465     }                                                           \
1466 while (0)
1467 
1468 /* Error token number */
1469 #define YYTERROR        1
1470 #define YYERRCODE       256
1471 
1472 
1473 
1474 /* Enable debugging if requested.  */
1475 #if YYDEBUG
1476 
1477 # ifndef YYFPRINTF
1478 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1479 #  define YYFPRINTF fprintf
1480 # endif
1481 
1482 # define YYDPRINTF(Args)                        \
1483 do {                                            \
1484   if (yydebug)                                  \
1485     YYFPRINTF Args;                             \
1486 } while (0)
1487 
1488 /* This macro is provided for backward compatibility. */
1489 #ifndef YY_LOCATION_PRINT
1490 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1491 #endif
1492 
1493 
1494 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
1495 do {                                                                      \
1496   if (yydebug)                                                            \
1497     {                                                                     \
1498       YYFPRINTF (stderr, "%s ", Title);                                   \
1499       yy_symbol_print (stderr,                                            \
1500                   Type, Value); \
1501       YYFPRINTF (stderr, "\n");                                           \
1502     }                                                                     \
1503 } while (0)
1504 
1505 
1506 /*----------------------------------------.
1507 | Print this symbol's value on YYOUTPUT.  |
1508 `----------------------------------------*/
1509 
1510 static void
1511 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1512 {
1513   FILE *yyo = yyoutput;
1514   YYUSE (yyo);
1515   if (!yyvaluep)
1516     return;
1517 # ifdef YYPRINT
1518   if (yytype < YYNTOKENS)
1519     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1520 # endif
1521   YYUSE (yytype);
1522 }
1523 
1524 
1525 /*--------------------------------.
1526 | Print this symbol on YYOUTPUT.  |
1527 `--------------------------------*/
1528 
1529 static void
1530 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1531 {
1532   YYFPRINTF (yyoutput, "%s %s (",
1533              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1534 
1535   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1536   YYFPRINTF (yyoutput, ")");
1537 }
1538 
1539 /*------------------------------------------------------------------.
1540 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1541 | TOP (included).                                                   |
1542 `------------------------------------------------------------------*/
1543 
1544 static void
1545 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1546 {
1547   YYFPRINTF (stderr, "Stack now");
1548   for (; yybottom <= yytop; yybottom++)
1549     {
1550       int yybot = *yybottom;
1551       YYFPRINTF (stderr, " %d", yybot);
1552     }
1553   YYFPRINTF (stderr, "\n");
1554 }
1555 
1556 # define YY_STACK_PRINT(Bottom, Top)                            \
1557 do {                                                            \
1558   if (yydebug)                                                  \
1559     yy_stack_print ((Bottom), (Top));                           \
1560 } while (0)
1561 
1562 
1563 /*------------------------------------------------.
1564 | Report that the YYRULE is going to be reduced.  |
1565 `------------------------------------------------*/
1566 
1567 static void
1568 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
1569 {
1570   unsigned long int yylno = yyrline[yyrule];
1571   int yynrhs = yyr2[yyrule];
1572   int yyi;
1573   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1574              yyrule - 1, yylno);
1575   /* The symbols being reduced.  */
1576   for (yyi = 0; yyi < yynrhs; yyi++)
1577     {
1578       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1579       yy_symbol_print (stderr,
1580                        yystos[yyssp[yyi + 1 - yynrhs]],
1581                        &(yyvsp[(yyi + 1) - (yynrhs)])
1582                                               );
1583       YYFPRINTF (stderr, "\n");
1584     }
1585 }
1586 
1587 # define YY_REDUCE_PRINT(Rule)          \
1588 do {                                    \
1589   if (yydebug)                          \
1590     yy_reduce_print (yyssp, yyvsp, Rule); \
1591 } while (0)
1592 
1593 /* Nonzero means print parse trace.  It is left uninitialized so that
1594    multiple parsers can coexist.  */
1595 int yydebug;
1596 #else /* !YYDEBUG */
1597 # define YYDPRINTF(Args)
1598 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1599 # define YY_STACK_PRINT(Bottom, Top)
1600 # define YY_REDUCE_PRINT(Rule)
1601 #endif /* !YYDEBUG */
1602 
1603 
1604 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1605 #ifndef YYINITDEPTH
1606 # define YYINITDEPTH 200
1607 #endif
1608 
1609 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1610    if the built-in stack extension method is used).
1611 
1612    Do not make this value too large; the results are undefined if
1613    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1614    evaluated with infinite-precision integer arithmetic.  */
1615 
1616 #ifndef YYMAXDEPTH
1617 # define YYMAXDEPTH 10000
1618 #endif
1619 
1620 
1621 #if YYERROR_VERBOSE
1622 
1623 # ifndef yystrlen
1624 #  if defined __GLIBC__ && defined _STRING_H
1625 #   define yystrlen strlen
1626 #  else
1627 /* Return the length of YYSTR.  */
1628 static YYSIZE_T
1629 yystrlen (const char *yystr)
1630 {
1631   YYSIZE_T yylen;
1632   for (yylen = 0; yystr[yylen]; yylen++)
1633     continue;
1634   return yylen;
1635 }
1636 #  endif
1637 # endif
1638 
1639 # ifndef yystpcpy
1640 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1641 #   define yystpcpy stpcpy
1642 #  else
1643 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1644    YYDEST.  */
1645 static char *
1646 yystpcpy (char *yydest, const char *yysrc)
1647 {
1648   char *yyd = yydest;
1649   const char *yys = yysrc;
1650 
1651   while ((*yyd++ = *yys++) != '\0')
1652     continue;
1653 
1654   return yyd - 1;
1655 }
1656 #  endif
1657 # endif
1658 
1659 # ifndef yytnamerr
1660 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1661    quotes and backslashes, so that it's suitable for yyerror.  The
1662    heuristic is that double-quoting is unnecessary unless the string
1663    contains an apostrophe, a comma, or backslash (other than
1664    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1665    null, do not copy; instead, return the length of what the result
1666    would have been.  */
1667 static YYSIZE_T
1668 yytnamerr (char *yyres, const char *yystr)
1669 {
1670   if (*yystr == '"')
1671     {
1672       YYSIZE_T yyn = 0;
1673       char const *yyp = yystr;
1674 
1675       for (;;)
1676         switch (*++yyp)
1677           {
1678           case '\'':
1679           case ',':
1680             goto do_not_strip_quotes;
1681 
1682           case '\\':
1683             if (*++yyp != '\\')
1684               goto do_not_strip_quotes;
1685             /* Fall through.  */
1686           default:
1687             if (yyres)
1688               yyres[yyn] = *yyp;
1689             yyn++;
1690             break;
1691 
1692           case '"':
1693             if (yyres)
1694               yyres[yyn] = '\0';
1695             return yyn;
1696           }
1697     do_not_strip_quotes: ;
1698     }
1699 
1700   if (! yyres)
1701     return yystrlen (yystr);
1702 
1703   return yystpcpy (yyres, yystr) - yyres;
1704 }
1705 # endif
1706 
1707 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1708    about the unexpected token YYTOKEN for the state stack whose top is
1709    YYSSP.
1710 
1711    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
1712    not large enough to hold the message.  In that case, also set
1713    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
1714    required number of bytes is too large to store.  */
1715 static int
1716 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1717                 yytype_int16 *yyssp, int yytoken)
1718 {
1719   YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1720   YYSIZE_T yysize = yysize0;
1721   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1722   /* Internationalized format string. */
1723   const char *yyformat = YY_NULLPTR;
1724   /* Arguments of yyformat. */
1725   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1726   /* Number of reported tokens (one for the "unexpected", one per
1727      "expected"). */
1728   int yycount = 0;
1729 
1730   /* There are many possibilities here to consider:
1731      - If this state is a consistent state with a default action, then
1732        the only way this function was invoked is if the default action
1733        is an error action.  In that case, don't check for expected
1734        tokens because there are none.
1735      - The only way there can be no lookahead present (in yychar) is if
1736        this state is a consistent state with a default action.  Thus,
1737        detecting the absence of a lookahead is sufficient to determine
1738        that there is no unexpected or expected token to report.  In that
1739        case, just report a simple "syntax error".
1740      - Don't assume there isn't a lookahead just because this state is a
1741        consistent state with a default action.  There might have been a
1742        previous inconsistent state, consistent state with a non-default
1743        action, or user semantic action that manipulated yychar.
1744      - Of course, the expected token list depends on states to have
1745        correct lookahead information, and it depends on the parser not
1746        to perform extra reductions after fetching a lookahead from the
1747        scanner and before detecting a syntax error.  Thus, state merging
1748        (from LALR or IELR) and default reductions corrupt the expected
1749        token list.  However, the list is correct for canonical LR with
1750        one exception: it will still contain any token that will not be
1751        accepted due to an error action in a later state.
1752   */
1753   if (yytoken != YYEMPTY)
1754     {
1755       int yyn = yypact[*yyssp];
1756       yyarg[yycount++] = yytname[yytoken];
1757       if (!yypact_value_is_default (yyn))
1758         {
1759           /* Start YYX at -YYN if negative to avoid negative indexes in
1760              YYCHECK.  In other words, skip the first -YYN actions for
1761              this state because they are default actions.  */
1762           int yyxbegin = yyn < 0 ? -yyn : 0;
1763           /* Stay within bounds of both yycheck and yytname.  */
1764           int yychecklim = YYLAST - yyn + 1;
1765           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1766           int yyx;
1767 
1768           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1769             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1770                 && !yytable_value_is_error (yytable[yyx + yyn]))
1771               {
1772                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1773                   {
1774                     yycount = 1;
1775                     yysize = yysize0;
1776                     break;
1777                   }
1778                 yyarg[yycount++] = yytname[yyx];
1779                 {
1780                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1781                   if (! (yysize <= yysize1
1782                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1783                     return 2;
1784                   yysize = yysize1;
1785                 }
1786               }
1787         }
1788     }
1789 
1790   switch (yycount)
1791     {
1792 # define YYCASE_(N, S)                      \
1793       case N:                               \
1794         yyformat = S;                       \
1795       break
1796       YYCASE_(0, YY_("syntax error"));
1797       YYCASE_(1, YY_("syntax error, unexpected %s"));
1798       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1799       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1800       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1801       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1802 # undef YYCASE_
1803     }
1804 
1805   {
1806     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1807     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1808       return 2;
1809     yysize = yysize1;
1810   }
1811 
1812   if (*yymsg_alloc < yysize)
1813     {
1814       *yymsg_alloc = 2 * yysize;
1815       if (! (yysize <= *yymsg_alloc
1816              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1817         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1818       return 1;
1819     }
1820 
1821   /* Avoid sprintf, as that infringes on the user's name space.
1822      Don't have undefined behavior even if the translation
1823      produced a string with the wrong number of "%s"s.  */
1824   {
1825     char *yyp = *yymsg;
1826     int yyi = 0;
1827     while ((*yyp = *yyformat) != '\0')
1828       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1829         {
1830           yyp += yytnamerr (yyp, yyarg[yyi++]);
1831           yyformat += 2;
1832         }
1833       else
1834         {
1835           yyp++;
1836           yyformat++;
1837         }
1838   }
1839   return 0;
1840 }
1841 #endif /* YYERROR_VERBOSE */
1842 
1843 /*-----------------------------------------------.
1844 | Release the memory associated to this symbol.  |
1845 `-----------------------------------------------*/
1846 
1847 static void
1848 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1849 {
1850   YYUSE (yyvaluep);
1851   if (!yymsg)
1852     yymsg = "Deleting";
1853   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1854 
1855   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1856   YYUSE (yytype);
1857   YY_IGNORE_MAYBE_UNINITIALIZED_END
1858 }
1859 
1860 
1861 
1862 
1863 /* The lookahead symbol.  */
1864 int yychar;
1865 
1866 /* The semantic value of the lookahead symbol.  */
1867 YYSTYPE yylval;
1868 /* Number of syntax errors so far.  */
1869 int yynerrs;
1870 
1871 
1872 /*----------.
1873 | yyparse.  |
1874 `----------*/
1875 
1876 int
1877 yyparse (void)
1878 {
1879     int yystate;
1880     /* Number of tokens to shift before error messages enabled.  */
1881     int yyerrstatus;
1882 
1883     /* The stacks and their tools:
1884        'yyss': related to states.
1885        'yyvs': related to semantic values.
1886 
1887        Refer to the stacks through separate pointers, to allow yyoverflow
1888        to reallocate them elsewhere.  */
1889 
1890     /* The state stack.  */
1891     yytype_int16 yyssa[YYINITDEPTH];
1892     yytype_int16 *yyss;
1893     yytype_int16 *yyssp;
1894 
1895     /* The semantic value stack.  */
1896     YYSTYPE yyvsa[YYINITDEPTH];
1897     YYSTYPE *yyvs;
1898     YYSTYPE *yyvsp;
1899 
1900     YYSIZE_T yystacksize;
1901 
1902   int yyn;
1903   int yyresult;
1904   /* Lookahead token as an internal (translated) token number.  */
1905   int yytoken = 0;
1906   /* The variables used to return semantic value and location from the
1907      action routines.  */
1908   YYSTYPE yyval;
1909 
1910 #if YYERROR_VERBOSE
1911   /* Buffer for error messages, and its allocated size.  */
1912   char yymsgbuf[128];
1913   char *yymsg = yymsgbuf;
1914   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1915 #endif
1916 
1917 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1918 
1919   /* The number of symbols on the RHS of the reduced rule.
1920      Keep to zero when no symbol should be popped.  */
1921   int yylen = 0;
1922 
1923   yyssp = yyss = yyssa;
1924   yyvsp = yyvs = yyvsa;
1925   yystacksize = YYINITDEPTH;
1926 
1927   YYDPRINTF ((stderr, "Starting parse\n"));
1928 
1929   yystate = 0;
1930   yyerrstatus = 0;
1931   yynerrs = 0;
1932   yychar = YYEMPTY; /* Cause a token to be read.  */
1933   goto yysetstate;
1934 
1935 /*------------------------------------------------------------.
1936 | yynewstate -- Push a new state, which is found in yystate.  |
1937 `------------------------------------------------------------*/
1938  yynewstate:
1939   /* In all cases, when you get here, the value and location stacks
1940      have just been pushed.  So pushing a state here evens the stacks.  */
1941   yyssp++;
1942 
1943  yysetstate:
1944   *yyssp = yystate;
1945 
1946   if (yyss + yystacksize - 1 <= yyssp)
1947     {
1948       /* Get the current used size of the three stacks, in elements.  */
1949       YYSIZE_T yysize = yyssp - yyss + 1;
1950 
1951 #ifdef yyoverflow
1952       {
1953         /* Give user a chance to reallocate the stack.  Use copies of
1954            these so that the &'s don't force the real ones into
1955            memory.  */
1956         YYSTYPE *yyvs1 = yyvs;
1957         yytype_int16 *yyss1 = yyss;
1958 
1959         /* Each stack pointer address is followed by the size of the
1960            data in use in that stack, in bytes.  This used to be a
1961            conditional around just the two extra args, but that might
1962            be undefined if yyoverflow is a macro.  */
1963         yyoverflow (YY_("memory exhausted"),
1964                     &yyss1, yysize * sizeof (*yyssp),
1965                     &yyvs1, yysize * sizeof (*yyvsp),
1966                     &yystacksize);
1967 
1968         yyss = yyss1;
1969         yyvs = yyvs1;
1970       }
1971 #else /* no yyoverflow */
1972 # ifndef YYSTACK_RELOCATE
1973       goto yyexhaustedlab;
1974 # else
1975       /* Extend the stack our own way.  */
1976       if (YYMAXDEPTH <= yystacksize)
1977         goto yyexhaustedlab;
1978       yystacksize *= 2;
1979       if (YYMAXDEPTH < yystacksize)
1980         yystacksize = YYMAXDEPTH;
1981 
1982       {
1983         yytype_int16 *yyss1 = yyss;
1984         union yyalloc *yyptr =
1985           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1986         if (! yyptr)
1987           goto yyexhaustedlab;
1988         YYSTACK_RELOCATE (yyss_alloc, yyss);
1989         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1990 #  undef YYSTACK_RELOCATE
1991         if (yyss1 != yyssa)
1992           YYSTACK_FREE (yyss1);
1993       }
1994 # endif
1995 #endif /* no yyoverflow */
1996 
1997       yyssp = yyss + yysize - 1;
1998       yyvsp = yyvs + yysize - 1;
1999 
2000       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2001                   (unsigned long int) yystacksize));
2002 
2003       if (yyss + yystacksize - 1 <= yyssp)
2004         YYABORT;
2005     }
2006 
2007   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2008 
2009   if (yystate == YYFINAL)
2010     YYACCEPT;
2011 
2012   goto yybackup;
2013 
2014 /*-----------.
2015 | yybackup.  |
2016 `-----------*/
2017 yybackup:
2018 
2019   /* Do appropriate processing given the current state.  Read a
2020      lookahead token if we need one and don't already have one.  */
2021 
2022   /* First try to decide what to do without reference to lookahead token.  */
2023   yyn = yypact[yystate];
2024   if (yypact_value_is_default (yyn))
2025     goto yydefault;
2026 
2027   /* Not known => get a lookahead token if don't already have one.  */
2028 
2029   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
2030   if (yychar == YYEMPTY)
2031     {
2032       YYDPRINTF ((stderr, "Reading a token: "));
2033       yychar = yylex ();
2034     }
2035 
2036   if (yychar <= YYEOF)
2037     {
2038       yychar = yytoken = YYEOF;
2039       YYDPRINTF ((stderr, "Now at end of input.\n"));
2040     }
2041   else
2042     {
2043       yytoken = YYTRANSLATE (yychar);
2044       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2045     }
2046 
2047   /* If the proper action on seeing token YYTOKEN is to reduce or to
2048      detect an error, take that action.  */
2049   yyn += yytoken;
2050   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2051     goto yydefault;
2052   yyn = yytable[yyn];
2053   if (yyn <= 0)
2054     {
2055       if (yytable_value_is_error (yyn))
2056         goto yyerrlab;
2057       yyn = -yyn;
2058       goto yyreduce;
2059     }
2060 
2061   /* Count tokens shifted since error; after three, turn off error
2062      status.  */
2063   if (yyerrstatus)
2064     yyerrstatus--;
2065 
2066   /* Shift the lookahead token.  */
2067   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2068 
2069   /* Discard the shifted token.  */
2070   yychar = YYEMPTY;
2071 
2072   yystate = yyn;
2073   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2074   *++yyvsp = yylval;
2075   YY_IGNORE_MAYBE_UNINITIALIZED_END
2076 
2077   goto yynewstate;
2078 
2079 
2080 /*-----------------------------------------------------------.
2081 | yydefault -- do the default action for the current state.  |
2082 `-----------------------------------------------------------*/
2083 yydefault:
2084   yyn = yydefact[yystate];
2085   if (yyn == 0)
2086     goto yyerrlab;
2087   goto yyreduce;
2088 
2089 
2090 /*-----------------------------.
2091 | yyreduce -- Do a reduction.  |
2092 `-----------------------------*/
2093 yyreduce:
2094   /* yyn is the number of a rule to reduce with.  */
2095   yylen = yyr2[yyn];
2096 
2097   /* If YYLEN is nonzero, implement the default value of the action:
2098      '$$ = $1'.
2099 
2100      Otherwise, the following line sets YYVAL to garbage.
2101      This behavior is undocumented and Bison
2102      users should not rely upon it.  Assigning to YYVAL
2103      unconditionally makes the parser a bit smaller, and it avoids a
2104      GCC warning that YYVAL may be used uninitialized.  */
2105   yyval = yyvsp[1-yylen];
2106 
2107 
2108   YY_REDUCE_PRINT (yyn);
2109   switch (yyn)
2110     {
2111         case 5:
2112 #line 378 "ntp_parser.y" /* yacc.c:1646  */
2113     {
2114 			/* I will need to incorporate much more fine grained
2115 			 * error messages. The following should suffice for
2116 			 * the time being.
2117 			 */
2118 			struct FILE_INFO * ip_ctx = lex_current();
2119 			msyslog(LOG_ERR,
2120 				"syntax error in %s line %d, column %d",
2121 				ip_ctx->fname,
2122 				ip_ctx->errpos.nline,
2123 				ip_ctx->errpos.ncol);
2124 		}
2125 #line 2126 "ntp_parser.c" /* yacc.c:1646  */
2126     break;
2127 
2128   case 20:
2129 #line 414 "ntp_parser.y" /* yacc.c:1646  */
2130     {
2131 			peer_node *my_node;
2132 
2133 			my_node = create_peer_node((yyvsp[-2].Integer), (yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
2134 			APPEND_G_FIFO(cfgt.peers, my_node);
2135 		}
2136 #line 2137 "ntp_parser.c" /* yacc.c:1646  */
2137     break;
2138 
2139   case 27:
2140 #line 433 "ntp_parser.y" /* yacc.c:1646  */
2141     { (yyval.Address_node) = create_address_node((yyvsp[0].String), (yyvsp[-1].Integer)); }
2142 #line 2143 "ntp_parser.c" /* yacc.c:1646  */
2143     break;
2144 
2145   case 28:
2146 #line 438 "ntp_parser.y" /* yacc.c:1646  */
2147     { (yyval.Address_node) = create_address_node((yyvsp[0].String), AF_UNSPEC); }
2148 #line 2149 "ntp_parser.c" /* yacc.c:1646  */
2149     break;
2150 
2151   case 29:
2152 #line 443 "ntp_parser.y" /* yacc.c:1646  */
2153     { (yyval.Integer) = AF_INET; }
2154 #line 2155 "ntp_parser.c" /* yacc.c:1646  */
2155     break;
2156 
2157   case 30:
2158 #line 445 "ntp_parser.y" /* yacc.c:1646  */
2159     { (yyval.Integer) = AF_INET6; }
2160 #line 2161 "ntp_parser.c" /* yacc.c:1646  */
2161     break;
2162 
2163   case 31:
2164 #line 450 "ntp_parser.y" /* yacc.c:1646  */
2165     { (yyval.Attr_val_fifo) = NULL; }
2166 #line 2167 "ntp_parser.c" /* yacc.c:1646  */
2167     break;
2168 
2169   case 32:
2170 #line 452 "ntp_parser.y" /* yacc.c:1646  */
2171     {
2172 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2173 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2174 		}
2175 #line 2176 "ntp_parser.c" /* yacc.c:1646  */
2176     break;
2177 
2178   case 36:
2179 #line 466 "ntp_parser.y" /* yacc.c:1646  */
2180     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
2181 #line 2182 "ntp_parser.c" /* yacc.c:1646  */
2182     break;
2183 
2184   case 45:
2185 #line 482 "ntp_parser.y" /* yacc.c:1646  */
2186     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2187 #line 2188 "ntp_parser.c" /* yacc.c:1646  */
2188     break;
2189 
2190   case 46:
2191 #line 484 "ntp_parser.y" /* yacc.c:1646  */
2192     { (yyval.Attr_val) = create_attr_uval((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2193 #line 2194 "ntp_parser.c" /* yacc.c:1646  */
2194     break;
2195 
2196   case 53:
2197 #line 498 "ntp_parser.y" /* yacc.c:1646  */
2198     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2199 #line 2200 "ntp_parser.c" /* yacc.c:1646  */
2200     break;
2201 
2202   case 55:
2203 #line 512 "ntp_parser.y" /* yacc.c:1646  */
2204     {
2205 			unpeer_node *my_node;
2206 
2207 			my_node = create_unpeer_node((yyvsp[0].Address_node));
2208 			if (my_node)
2209 				APPEND_G_FIFO(cfgt.unpeers, my_node);
2210 		}
2211 #line 2212 "ntp_parser.c" /* yacc.c:1646  */
2212     break;
2213 
2214   case 58:
2215 #line 533 "ntp_parser.y" /* yacc.c:1646  */
2216     { cfgt.broadcastclient = 1; }
2217 #line 2218 "ntp_parser.c" /* yacc.c:1646  */
2218     break;
2219 
2220   case 59:
2221 #line 535 "ntp_parser.y" /* yacc.c:1646  */
2222     { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[0].Address_fifo)); }
2223 #line 2224 "ntp_parser.c" /* yacc.c:1646  */
2224     break;
2225 
2226   case 60:
2227 #line 537 "ntp_parser.y" /* yacc.c:1646  */
2228     { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[0].Address_fifo)); }
2229 #line 2230 "ntp_parser.c" /* yacc.c:1646  */
2230     break;
2231 
2232   case 61:
2233 #line 539 "ntp_parser.y" /* yacc.c:1646  */
2234     { cfgt.mdnstries = (yyvsp[0].Integer); }
2235 #line 2236 "ntp_parser.c" /* yacc.c:1646  */
2236     break;
2237 
2238   case 62:
2239 #line 550 "ntp_parser.y" /* yacc.c:1646  */
2240     {
2241 			attr_val *atrv;
2242 
2243 			atrv = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
2244 			APPEND_G_FIFO(cfgt.vars, atrv);
2245 		}
2246 #line 2247 "ntp_parser.c" /* yacc.c:1646  */
2247     break;
2248 
2249   case 63:
2250 #line 557 "ntp_parser.y" /* yacc.c:1646  */
2251     { cfgt.auth.control_key = (yyvsp[0].Integer); }
2252 #line 2253 "ntp_parser.c" /* yacc.c:1646  */
2253     break;
2254 
2255   case 64:
2256 #line 559 "ntp_parser.y" /* yacc.c:1646  */
2257     {
2258 			cfgt.auth.cryptosw++;
2259 			CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[0].Attr_val_fifo));
2260 		}
2261 #line 2262 "ntp_parser.c" /* yacc.c:1646  */
2262     break;
2263 
2264   case 65:
2265 #line 564 "ntp_parser.y" /* yacc.c:1646  */
2266     { cfgt.auth.keys = (yyvsp[0].String); }
2267 #line 2268 "ntp_parser.c" /* yacc.c:1646  */
2268     break;
2269 
2270   case 66:
2271 #line 566 "ntp_parser.y" /* yacc.c:1646  */
2272     { cfgt.auth.keysdir = (yyvsp[0].String); }
2273 #line 2274 "ntp_parser.c" /* yacc.c:1646  */
2274     break;
2275 
2276   case 67:
2277 #line 568 "ntp_parser.y" /* yacc.c:1646  */
2278     { cfgt.auth.request_key = (yyvsp[0].Integer); }
2279 #line 2280 "ntp_parser.c" /* yacc.c:1646  */
2280     break;
2281 
2282   case 68:
2283 #line 570 "ntp_parser.y" /* yacc.c:1646  */
2284     { cfgt.auth.revoke = (yyvsp[0].Integer); }
2285 #line 2286 "ntp_parser.c" /* yacc.c:1646  */
2286     break;
2287 
2288   case 69:
2289 #line 572 "ntp_parser.y" /* yacc.c:1646  */
2290     {
2291 			cfgt.auth.trusted_key_list = (yyvsp[0].Attr_val_fifo);
2292 
2293 			// if (!cfgt.auth.trusted_key_list)
2294 			// 	cfgt.auth.trusted_key_list = $2;
2295 			// else
2296 			// 	LINK_SLIST(cfgt.auth.trusted_key_list, $2, link);
2297 		}
2298 #line 2299 "ntp_parser.c" /* yacc.c:1646  */
2299     break;
2300 
2301   case 70:
2302 #line 581 "ntp_parser.y" /* yacc.c:1646  */
2303     { cfgt.auth.ntp_signd_socket = (yyvsp[0].String); }
2304 #line 2305 "ntp_parser.c" /* yacc.c:1646  */
2305     break;
2306 
2307   case 71:
2308 #line 586 "ntp_parser.y" /* yacc.c:1646  */
2309     { (yyval.Attr_val_fifo) = NULL; }
2310 #line 2311 "ntp_parser.c" /* yacc.c:1646  */
2311     break;
2312 
2313   case 72:
2314 #line 588 "ntp_parser.y" /* yacc.c:1646  */
2315     {
2316 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2317 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2318 		}
2319 #line 2320 "ntp_parser.c" /* yacc.c:1646  */
2320     break;
2321 
2322   case 73:
2323 #line 596 "ntp_parser.y" /* yacc.c:1646  */
2324     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2325 #line 2326 "ntp_parser.c" /* yacc.c:1646  */
2326     break;
2327 
2328   case 74:
2329 #line 598 "ntp_parser.y" /* yacc.c:1646  */
2330     {
2331 			(yyval.Attr_val) = NULL;
2332 			cfgt.auth.revoke = (yyvsp[0].Integer);
2333 			msyslog(LOG_WARNING,
2334 				"'crypto revoke %d' is deprecated, "
2335 				"please use 'revoke %d' instead.",
2336 				cfgt.auth.revoke, cfgt.auth.revoke);
2337 		}
2338 #line 2339 "ntp_parser.c" /* yacc.c:1646  */
2339     break;
2340 
2341   case 80:
2342 #line 623 "ntp_parser.y" /* yacc.c:1646  */
2343     { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[0].Attr_val_fifo)); }
2344 #line 2345 "ntp_parser.c" /* yacc.c:1646  */
2345     break;
2346 
2347   case 81:
2348 #line 628 "ntp_parser.y" /* yacc.c:1646  */
2349     {
2350 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2351 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2352 		}
2353 #line 2354 "ntp_parser.c" /* yacc.c:1646  */
2354     break;
2355 
2356   case 82:
2357 #line 633 "ntp_parser.y" /* yacc.c:1646  */
2358     {
2359 			(yyval.Attr_val_fifo) = NULL;
2360 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2361 		}
2362 #line 2363 "ntp_parser.c" /* yacc.c:1646  */
2363     break;
2364 
2365   case 83:
2366 #line 641 "ntp_parser.y" /* yacc.c:1646  */
2367     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
2368 #line 2369 "ntp_parser.c" /* yacc.c:1646  */
2369     break;
2370 
2371   case 84:
2372 #line 643 "ntp_parser.y" /* yacc.c:1646  */
2373     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
2374 #line 2375 "ntp_parser.c" /* yacc.c:1646  */
2375     break;
2376 
2377   case 85:
2378 #line 645 "ntp_parser.y" /* yacc.c:1646  */
2379     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
2380 #line 2381 "ntp_parser.c" /* yacc.c:1646  */
2381     break;
2382 
2383   case 97:
2384 #line 672 "ntp_parser.y" /* yacc.c:1646  */
2385     { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[0].Int_fifo)); }
2386 #line 2387 "ntp_parser.c" /* yacc.c:1646  */
2387     break;
2388 
2389   case 98:
2390 #line 674 "ntp_parser.y" /* yacc.c:1646  */
2391     {
2392 			if (lex_from_file()) {
2393 				cfgt.stats_dir = (yyvsp[0].String);
2394 			} else {
2395 				YYFREE((yyvsp[0].String));
2396 				yyerror("statsdir remote configuration ignored");
2397 			}
2398 		}
2399 #line 2400 "ntp_parser.c" /* yacc.c:1646  */
2400     break;
2401 
2402   case 99:
2403 #line 683 "ntp_parser.y" /* yacc.c:1646  */
2404     {
2405 			filegen_node *fgn;
2406 
2407 			fgn = create_filegen_node((yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo));
2408 			APPEND_G_FIFO(cfgt.filegen_opts, fgn);
2409 		}
2410 #line 2411 "ntp_parser.c" /* yacc.c:1646  */
2411     break;
2412 
2413   case 100:
2414 #line 693 "ntp_parser.y" /* yacc.c:1646  */
2415     {
2416 			(yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
2417 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
2418 		}
2419 #line 2420 "ntp_parser.c" /* yacc.c:1646  */
2420     break;
2421 
2422   case 101:
2423 #line 698 "ntp_parser.y" /* yacc.c:1646  */
2424     {
2425 			(yyval.Int_fifo) = NULL;
2426 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
2427 		}
2428 #line 2429 "ntp_parser.c" /* yacc.c:1646  */
2429     break;
2430 
2431   case 110:
2432 #line 717 "ntp_parser.y" /* yacc.c:1646  */
2433     { (yyval.Attr_val_fifo) = NULL; }
2434 #line 2435 "ntp_parser.c" /* yacc.c:1646  */
2435     break;
2436 
2437   case 111:
2438 #line 719 "ntp_parser.y" /* yacc.c:1646  */
2439     {
2440 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2441 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2442 		}
2443 #line 2444 "ntp_parser.c" /* yacc.c:1646  */
2444     break;
2445 
2446   case 112:
2447 #line 727 "ntp_parser.y" /* yacc.c:1646  */
2448     {
2449 			if (lex_from_file()) {
2450 				(yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
2451 			} else {
2452 				(yyval.Attr_val) = NULL;
2453 				YYFREE((yyvsp[0].String));
2454 				yyerror("filegen file remote config ignored");
2455 			}
2456 		}
2457 #line 2458 "ntp_parser.c" /* yacc.c:1646  */
2458     break;
2459 
2460   case 113:
2461 #line 737 "ntp_parser.y" /* yacc.c:1646  */
2462     {
2463 			if (lex_from_file()) {
2464 				(yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
2465 			} else {
2466 				(yyval.Attr_val) = NULL;
2467 				yyerror("filegen type remote config ignored");
2468 			}
2469 		}
2470 #line 2471 "ntp_parser.c" /* yacc.c:1646  */
2471     break;
2472 
2473   case 114:
2474 #line 746 "ntp_parser.y" /* yacc.c:1646  */
2475     {
2476 			const char *err;
2477 
2478 			if (lex_from_file()) {
2479 				(yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer));
2480 			} else {
2481 				(yyval.Attr_val) = NULL;
2482 				if (T_Link == (yyvsp[0].Integer))
2483 					err = "filegen link remote config ignored";
2484 				else
2485 					err = "filegen nolink remote config ignored";
2486 				yyerror(err);
2487 			}
2488 		}
2489 #line 2490 "ntp_parser.c" /* yacc.c:1646  */
2490     break;
2491 
2492   case 115:
2493 #line 761 "ntp_parser.y" /* yacc.c:1646  */
2494     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
2495 #line 2496 "ntp_parser.c" /* yacc.c:1646  */
2496     break;
2497 
2498   case 127:
2499 #line 791 "ntp_parser.y" /* yacc.c:1646  */
2500     {
2501 			CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[0].Attr_val_fifo));
2502 		}
2503 #line 2504 "ntp_parser.c" /* yacc.c:1646  */
2504     break;
2505 
2506   case 128:
2507 #line 795 "ntp_parser.y" /* yacc.c:1646  */
2508     {
2509 			CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[0].Attr_val_fifo));
2510 		}
2511 #line 2512 "ntp_parser.c" /* yacc.c:1646  */
2512     break;
2513 
2514   case 129:
2515 #line 799 "ntp_parser.y" /* yacc.c:1646  */
2516     {
2517 			restrict_node *rn;
2518 
2519 			rn = create_restrict_node((yyvsp[-1].Address_node), NULL, (yyvsp[0].Int_fifo),
2520 						  lex_current()->curpos.nline);
2521 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2522 		}
2523 #line 2524 "ntp_parser.c" /* yacc.c:1646  */
2524     break;
2525 
2526   case 130:
2527 #line 807 "ntp_parser.y" /* yacc.c:1646  */
2528     {
2529 			restrict_node *rn;
2530 
2531 			rn = create_restrict_node((yyvsp[-3].Address_node), (yyvsp[-1].Address_node), (yyvsp[0].Int_fifo),
2532 						  lex_current()->curpos.nline);
2533 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2534 		}
2535 #line 2536 "ntp_parser.c" /* yacc.c:1646  */
2536     break;
2537 
2538   case 131:
2539 #line 815 "ntp_parser.y" /* yacc.c:1646  */
2540     {
2541 			restrict_node *rn;
2542 
2543 			rn = create_restrict_node(NULL, NULL, (yyvsp[0].Int_fifo),
2544 						  lex_current()->curpos.nline);
2545 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2546 		}
2547 #line 2548 "ntp_parser.c" /* yacc.c:1646  */
2548     break;
2549 
2550   case 132:
2551 #line 823 "ntp_parser.y" /* yacc.c:1646  */
2552     {
2553 			restrict_node *rn;
2554 
2555 			rn = create_restrict_node(
2556 				create_address_node(
2557 					estrdup("0.0.0.0"),
2558 					AF_INET),
2559 				create_address_node(
2560 					estrdup("0.0.0.0"),
2561 					AF_INET),
2562 				(yyvsp[0].Int_fifo),
2563 				lex_current()->curpos.nline);
2564 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2565 		}
2566 #line 2567 "ntp_parser.c" /* yacc.c:1646  */
2567     break;
2568 
2569   case 133:
2570 #line 838 "ntp_parser.y" /* yacc.c:1646  */
2571     {
2572 			restrict_node *rn;
2573 
2574 			rn = create_restrict_node(
2575 				create_address_node(
2576 					estrdup("::"),
2577 					AF_INET6),
2578 				create_address_node(
2579 					estrdup("::"),
2580 					AF_INET6),
2581 				(yyvsp[0].Int_fifo),
2582 				lex_current()->curpos.nline);
2583 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2584 		}
2585 #line 2586 "ntp_parser.c" /* yacc.c:1646  */
2586     break;
2587 
2588   case 134:
2589 #line 853 "ntp_parser.y" /* yacc.c:1646  */
2590     {
2591 			restrict_node *	rn;
2592 
2593 			APPEND_G_FIFO((yyvsp[0].Int_fifo), create_int_node((yyvsp[-1].Integer)));
2594 			rn = create_restrict_node(
2595 				NULL, NULL, (yyvsp[0].Int_fifo), lex_current()->curpos.nline);
2596 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2597 		}
2598 #line 2599 "ntp_parser.c" /* yacc.c:1646  */
2599     break;
2600 
2601   case 135:
2602 #line 865 "ntp_parser.y" /* yacc.c:1646  */
2603     { (yyval.Int_fifo) = NULL; }
2604 #line 2605 "ntp_parser.c" /* yacc.c:1646  */
2605     break;
2606 
2607   case 136:
2608 #line 867 "ntp_parser.y" /* yacc.c:1646  */
2609     {
2610 			(yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
2611 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
2612 		}
2613 #line 2614 "ntp_parser.c" /* yacc.c:1646  */
2614     break;
2615 
2616   case 152:
2617 #line 893 "ntp_parser.y" /* yacc.c:1646  */
2618     {
2619 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2620 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2621 		}
2622 #line 2623 "ntp_parser.c" /* yacc.c:1646  */
2623     break;
2624 
2625   case 153:
2626 #line 898 "ntp_parser.y" /* yacc.c:1646  */
2627     {
2628 			(yyval.Attr_val_fifo) = NULL;
2629 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2630 		}
2631 #line 2632 "ntp_parser.c" /* yacc.c:1646  */
2632     break;
2633 
2634   case 154:
2635 #line 906 "ntp_parser.y" /* yacc.c:1646  */
2636     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2637 #line 2638 "ntp_parser.c" /* yacc.c:1646  */
2638     break;
2639 
2640   case 158:
2641 #line 917 "ntp_parser.y" /* yacc.c:1646  */
2642     {
2643 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2644 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2645 		}
2646 #line 2647 "ntp_parser.c" /* yacc.c:1646  */
2647     break;
2648 
2649   case 159:
2650 #line 922 "ntp_parser.y" /* yacc.c:1646  */
2651     {
2652 			(yyval.Attr_val_fifo) = NULL;
2653 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2654 		}
2655 #line 2656 "ntp_parser.c" /* yacc.c:1646  */
2656     break;
2657 
2658   case 160:
2659 #line 930 "ntp_parser.y" /* yacc.c:1646  */
2660     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2661 #line 2662 "ntp_parser.c" /* yacc.c:1646  */
2662     break;
2663 
2664   case 169:
2665 #line 950 "ntp_parser.y" /* yacc.c:1646  */
2666     {
2667 			addr_opts_node *aon;
2668 
2669 			aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
2670 			APPEND_G_FIFO(cfgt.fudge, aon);
2671 		}
2672 #line 2673 "ntp_parser.c" /* yacc.c:1646  */
2673     break;
2674 
2675   case 170:
2676 #line 960 "ntp_parser.y" /* yacc.c:1646  */
2677     {
2678 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2679 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2680 		}
2681 #line 2682 "ntp_parser.c" /* yacc.c:1646  */
2682     break;
2683 
2684   case 171:
2685 #line 965 "ntp_parser.y" /* yacc.c:1646  */
2686     {
2687 			(yyval.Attr_val_fifo) = NULL;
2688 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2689 		}
2690 #line 2691 "ntp_parser.c" /* yacc.c:1646  */
2691     break;
2692 
2693   case 172:
2694 #line 973 "ntp_parser.y" /* yacc.c:1646  */
2695     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
2696 #line 2697 "ntp_parser.c" /* yacc.c:1646  */
2697     break;
2698 
2699   case 173:
2700 #line 975 "ntp_parser.y" /* yacc.c:1646  */
2701     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2702 #line 2703 "ntp_parser.c" /* yacc.c:1646  */
2703     break;
2704 
2705   case 174:
2706 #line 977 "ntp_parser.y" /* yacc.c:1646  */
2707     {
2708 			if ((yyvsp[0].Integer) >= 0 && (yyvsp[0].Integer) <= 16) {
2709 				(yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
2710 			} else {
2711 				(yyval.Attr_val) = NULL;
2712 				yyerror("fudge factor: stratum value not in [0..16], ignored");
2713 			}
2714 		}
2715 #line 2716 "ntp_parser.c" /* yacc.c:1646  */
2716     break;
2717 
2718   case 175:
2719 #line 986 "ntp_parser.y" /* yacc.c:1646  */
2720     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2721 #line 2722 "ntp_parser.c" /* yacc.c:1646  */
2722     break;
2723 
2724   case 176:
2725 #line 988 "ntp_parser.y" /* yacc.c:1646  */
2726     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2727 #line 2728 "ntp_parser.c" /* yacc.c:1646  */
2728     break;
2729 
2730   case 183:
2731 #line 1009 "ntp_parser.y" /* yacc.c:1646  */
2732     { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[0].Attr_val_fifo)); }
2733 #line 2734 "ntp_parser.c" /* yacc.c:1646  */
2734     break;
2735 
2736   case 184:
2737 #line 1014 "ntp_parser.y" /* yacc.c:1646  */
2738     {
2739 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2740 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2741 		}
2742 #line 2743 "ntp_parser.c" /* yacc.c:1646  */
2743     break;
2744 
2745   case 185:
2746 #line 1019 "ntp_parser.y" /* yacc.c:1646  */
2747     {
2748 			(yyval.Attr_val_fifo) = NULL;
2749 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2750 		}
2751 #line 2752 "ntp_parser.c" /* yacc.c:1646  */
2752     break;
2753 
2754   case 186:
2755 #line 1027 "ntp_parser.y" /* yacc.c:1646  */
2756     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2757 #line 2758 "ntp_parser.c" /* yacc.c:1646  */
2758     break;
2759 
2760   case 190:
2761 #line 1043 "ntp_parser.y" /* yacc.c:1646  */
2762     { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[0].Attr_val_fifo)); }
2763 #line 2764 "ntp_parser.c" /* yacc.c:1646  */
2764     break;
2765 
2766   case 191:
2767 #line 1045 "ntp_parser.y" /* yacc.c:1646  */
2768     { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[0].Attr_val_fifo)); }
2769 #line 2770 "ntp_parser.c" /* yacc.c:1646  */
2770     break;
2771 
2772   case 192:
2773 #line 1050 "ntp_parser.y" /* yacc.c:1646  */
2774     {
2775 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2776 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2777 		}
2778 #line 2779 "ntp_parser.c" /* yacc.c:1646  */
2779     break;
2780 
2781   case 193:
2782 #line 1055 "ntp_parser.y" /* yacc.c:1646  */
2783     {
2784 			(yyval.Attr_val_fifo) = NULL;
2785 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2786 		}
2787 #line 2788 "ntp_parser.c" /* yacc.c:1646  */
2788     break;
2789 
2790   case 194:
2791 #line 1063 "ntp_parser.y" /* yacc.c:1646  */
2792     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
2793 #line 2794 "ntp_parser.c" /* yacc.c:1646  */
2794     break;
2795 
2796   case 195:
2797 #line 1065 "ntp_parser.y" /* yacc.c:1646  */
2798     {
2799 			if (lex_from_file()) {
2800 				(yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer));
2801 			} else {
2802 				char err_str[128];
2803 
2804 				(yyval.Attr_val) = NULL;
2805 				snprintf(err_str, sizeof(err_str),
2806 					 "enable/disable %s remote configuration ignored",
2807 					 keyword((yyvsp[0].Integer)));
2808 				yyerror(err_str);
2809 			}
2810 		}
2811 #line 2812 "ntp_parser.c" /* yacc.c:1646  */
2812     break;
2813 
2814   case 208:
2815 #line 1104 "ntp_parser.y" /* yacc.c:1646  */
2816     { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[0].Attr_val_fifo)); }
2817 #line 2818 "ntp_parser.c" /* yacc.c:1646  */
2818     break;
2819 
2820   case 209:
2821 #line 1109 "ntp_parser.y" /* yacc.c:1646  */
2822     {
2823 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2824 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2825 		}
2826 #line 2827 "ntp_parser.c" /* yacc.c:1646  */
2827     break;
2828 
2829   case 210:
2830 #line 1114 "ntp_parser.y" /* yacc.c:1646  */
2831     {
2832 			(yyval.Attr_val_fifo) = NULL;
2833 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2834 		}
2835 #line 2836 "ntp_parser.c" /* yacc.c:1646  */
2836     break;
2837 
2838   case 211:
2839 #line 1122 "ntp_parser.y" /* yacc.c:1646  */
2840     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
2841 #line 2842 "ntp_parser.c" /* yacc.c:1646  */
2842     break;
2843 
2844   case 224:
2845 #line 1147 "ntp_parser.y" /* yacc.c:1646  */
2846     {
2847 			attr_val *av;
2848 
2849 			av = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double));
2850 			APPEND_G_FIFO(cfgt.vars, av);
2851 		}
2852 #line 2853 "ntp_parser.c" /* yacc.c:1646  */
2853     break;
2854 
2855   case 225:
2856 #line 1154 "ntp_parser.y" /* yacc.c:1646  */
2857     {
2858 			attr_val *av;
2859 
2860 			av = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
2861 			APPEND_G_FIFO(cfgt.vars, av);
2862 		}
2863 #line 2864 "ntp_parser.c" /* yacc.c:1646  */
2864     break;
2865 
2866   case 226:
2867 #line 1161 "ntp_parser.y" /* yacc.c:1646  */
2868     {
2869 			attr_val *av;
2870 
2871 			av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
2872 			APPEND_G_FIFO(cfgt.vars, av);
2873 		}
2874 #line 2875 "ntp_parser.c" /* yacc.c:1646  */
2875     break;
2876 
2877   case 227:
2878 #line 1168 "ntp_parser.y" /* yacc.c:1646  */
2879     {
2880 			char error_text[64];
2881 			attr_val *av;
2882 
2883 			if (lex_from_file()) {
2884 				av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
2885 				APPEND_G_FIFO(cfgt.vars, av);
2886 			} else {
2887 				YYFREE((yyvsp[0].String));
2888 				snprintf(error_text, sizeof(error_text),
2889 					 "%s remote config ignored",
2890 					 keyword((yyvsp[-1].Integer)));
2891 				yyerror(error_text);
2892 			}
2893 		}
2894 #line 2895 "ntp_parser.c" /* yacc.c:1646  */
2895     break;
2896 
2897   case 228:
2898 #line 1184 "ntp_parser.y" /* yacc.c:1646  */
2899     {
2900 			if (!lex_from_file()) {
2901 				YYFREE((yyvsp[-1].String)); /* avoid leak */
2902 				yyerror("remote includefile ignored");
2903 				break;
2904 			}
2905 			if (lex_level() > MAXINCLUDELEVEL) {
2906 				fprintf(stderr, "getconfig: Maximum include file level exceeded.\n");
2907 				msyslog(LOG_ERR, "getconfig: Maximum include file level exceeded.");
2908 			} else {
2909 				const char * path = FindConfig((yyvsp[-1].String)); /* might return $2! */
2910 				if (!lex_push_file(path, "r")) {
2911 					fprintf(stderr, "getconfig: Couldn't open <%s>\n", path);
2912 					msyslog(LOG_ERR, "getconfig: Couldn't open <%s>", path);
2913 				}
2914 			}
2915 			YYFREE((yyvsp[-1].String)); /* avoid leak */
2916 		}
2917 #line 2918 "ntp_parser.c" /* yacc.c:1646  */
2918     break;
2919 
2920   case 229:
2921 #line 1203 "ntp_parser.y" /* yacc.c:1646  */
2922     { lex_flush_stack(); }
2923 #line 2924 "ntp_parser.c" /* yacc.c:1646  */
2924     break;
2925 
2926   case 230:
2927 #line 1205 "ntp_parser.y" /* yacc.c:1646  */
2928     { /* see drift_parm below for actions */ }
2929 #line 2930 "ntp_parser.c" /* yacc.c:1646  */
2930     break;
2931 
2932   case 231:
2933 #line 1207 "ntp_parser.y" /* yacc.c:1646  */
2934     { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[0].Attr_val_fifo)); }
2935 #line 2936 "ntp_parser.c" /* yacc.c:1646  */
2936     break;
2937 
2938   case 232:
2939 #line 1209 "ntp_parser.y" /* yacc.c:1646  */
2940     { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[0].String_fifo)); }
2941 #line 2942 "ntp_parser.c" /* yacc.c:1646  */
2942     break;
2943 
2944   case 233:
2945 #line 1211 "ntp_parser.y" /* yacc.c:1646  */
2946     { APPEND_G_FIFO(cfgt.setvar, (yyvsp[0].Set_var)); }
2947 #line 2948 "ntp_parser.c" /* yacc.c:1646  */
2948     break;
2949 
2950   case 234:
2951 #line 1213 "ntp_parser.y" /* yacc.c:1646  */
2952     {
2953 			addr_opts_node *aon;
2954 
2955 			aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
2956 			APPEND_G_FIFO(cfgt.trap, aon);
2957 		}
2958 #line 2959 "ntp_parser.c" /* yacc.c:1646  */
2959     break;
2960 
2961   case 235:
2962 #line 1220 "ntp_parser.y" /* yacc.c:1646  */
2963     { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[0].Attr_val_fifo)); }
2964 #line 2965 "ntp_parser.c" /* yacc.c:1646  */
2965     break;
2966 
2967   case 240:
2968 #line 1235 "ntp_parser.y" /* yacc.c:1646  */
2969     {
2970 #ifndef LEAP_SMEAR
2971 			yyerror("Built without LEAP_SMEAR support.");
2972 #endif
2973 		}
2974 #line 2975 "ntp_parser.c" /* yacc.c:1646  */
2975     break;
2976 
2977   case 246:
2978 #line 1255 "ntp_parser.y" /* yacc.c:1646  */
2979     {
2980 			if (lex_from_file()) {
2981 				attr_val *av;
2982 				av = create_attr_sval(T_Driftfile, (yyvsp[0].String));
2983 				APPEND_G_FIFO(cfgt.vars, av);
2984 			} else {
2985 				YYFREE((yyvsp[0].String));
2986 				yyerror("driftfile remote configuration ignored");
2987 			}
2988 		}
2989 #line 2990 "ntp_parser.c" /* yacc.c:1646  */
2990     break;
2991 
2992   case 247:
2993 #line 1266 "ntp_parser.y" /* yacc.c:1646  */
2994     {
2995 			if (lex_from_file()) {
2996 				attr_val *av;
2997 				av = create_attr_sval(T_Driftfile, (yyvsp[-1].String));
2998 				APPEND_G_FIFO(cfgt.vars, av);
2999 				av = create_attr_dval(T_WanderThreshold, (yyvsp[0].Double));
3000 				APPEND_G_FIFO(cfgt.vars, av);
3001 			} else {
3002 				YYFREE((yyvsp[-1].String));
3003 				yyerror("driftfile remote configuration ignored");
3004 			}
3005 		}
3006 #line 3007 "ntp_parser.c" /* yacc.c:1646  */
3007     break;
3008 
3009   case 248:
3010 #line 1279 "ntp_parser.y" /* yacc.c:1646  */
3011     {
3012 			if (lex_from_file()) {
3013 				attr_val *av;
3014 				av = create_attr_sval(T_Driftfile, estrdup(""));
3015 				APPEND_G_FIFO(cfgt.vars, av);
3016 			} else {
3017 				yyerror("driftfile remote configuration ignored");
3018 			}
3019 		}
3020 #line 3021 "ntp_parser.c" /* yacc.c:1646  */
3021     break;
3022 
3023   case 249:
3024 #line 1292 "ntp_parser.y" /* yacc.c:1646  */
3025     { (yyval.Set_var) = create_setvar_node((yyvsp[-3].String), (yyvsp[-1].String), (yyvsp[0].Integer)); }
3026 #line 3027 "ntp_parser.c" /* yacc.c:1646  */
3027     break;
3028 
3029   case 251:
3030 #line 1298 "ntp_parser.y" /* yacc.c:1646  */
3031     { (yyval.Integer) = 0; }
3032 #line 3033 "ntp_parser.c" /* yacc.c:1646  */
3033     break;
3034 
3035   case 252:
3036 #line 1303 "ntp_parser.y" /* yacc.c:1646  */
3037     { (yyval.Attr_val_fifo) = NULL; }
3038 #line 3039 "ntp_parser.c" /* yacc.c:1646  */
3039     break;
3040 
3041   case 253:
3042 #line 1305 "ntp_parser.y" /* yacc.c:1646  */
3043     {
3044 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
3045 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3046 		}
3047 #line 3048 "ntp_parser.c" /* yacc.c:1646  */
3048     break;
3049 
3050   case 254:
3051 #line 1313 "ntp_parser.y" /* yacc.c:1646  */
3052     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
3053 #line 3054 "ntp_parser.c" /* yacc.c:1646  */
3054     break;
3055 
3056   case 255:
3057 #line 1315 "ntp_parser.y" /* yacc.c:1646  */
3058     {
3059 			(yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), estrdup((yyvsp[0].Address_node)->address));
3060 			destroy_address_node((yyvsp[0].Address_node));
3061 		}
3062 #line 3063 "ntp_parser.c" /* yacc.c:1646  */
3063     break;
3064 
3065   case 256:
3066 #line 1323 "ntp_parser.y" /* yacc.c:1646  */
3067     {
3068 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
3069 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3070 		}
3071 #line 3072 "ntp_parser.c" /* yacc.c:1646  */
3072     break;
3073 
3074   case 257:
3075 #line 1328 "ntp_parser.y" /* yacc.c:1646  */
3076     {
3077 			(yyval.Attr_val_fifo) = NULL;
3078 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3079 		}
3080 #line 3081 "ntp_parser.c" /* yacc.c:1646  */
3081     break;
3082 
3083   case 258:
3084 #line 1336 "ntp_parser.y" /* yacc.c:1646  */
3085     {
3086 			char	prefix;
3087 			char *	type;
3088 
3089 			switch ((yyvsp[0].String)[0]) {
3090 
3091 			case '+':
3092 			case '-':
3093 			case '=':
3094 				prefix = (yyvsp[0].String)[0];
3095 				type = (yyvsp[0].String) + 1;
3096 				break;
3097 
3098 			default:
3099 				prefix = '=';
3100 				type = (yyvsp[0].String);
3101 			}
3102 
3103 			(yyval.Attr_val) = create_attr_sval(prefix, estrdup(type));
3104 			YYFREE((yyvsp[0].String));
3105 		}
3106 #line 3107 "ntp_parser.c" /* yacc.c:1646  */
3107     break;
3108 
3109   case 259:
3110 #line 1361 "ntp_parser.y" /* yacc.c:1646  */
3111     {
3112 			nic_rule_node *nrn;
3113 
3114 			nrn = create_nic_rule_node((yyvsp[0].Integer), NULL, (yyvsp[-1].Integer));
3115 			APPEND_G_FIFO(cfgt.nic_rules, nrn);
3116 		}
3117 #line 3118 "ntp_parser.c" /* yacc.c:1646  */
3118     break;
3119 
3120   case 260:
3121 #line 1368 "ntp_parser.y" /* yacc.c:1646  */
3122     {
3123 			nic_rule_node *nrn;
3124 
3125 			nrn = create_nic_rule_node(0, (yyvsp[0].String), (yyvsp[-1].Integer));
3126 			APPEND_G_FIFO(cfgt.nic_rules, nrn);
3127 		}
3128 #line 3129 "ntp_parser.c" /* yacc.c:1646  */
3129     break;
3130 
3131   case 270:
3132 #line 1396 "ntp_parser.y" /* yacc.c:1646  */
3133     { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[0].Int_fifo)); }
3134 #line 3135 "ntp_parser.c" /* yacc.c:1646  */
3135     break;
3136 
3137   case 271:
3138 #line 1401 "ntp_parser.y" /* yacc.c:1646  */
3139     {
3140 			(yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
3141 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
3142 		}
3143 #line 3144 "ntp_parser.c" /* yacc.c:1646  */
3144     break;
3145 
3146   case 272:
3147 #line 1406 "ntp_parser.y" /* yacc.c:1646  */
3148     {
3149 			(yyval.Int_fifo) = NULL;
3150 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
3151 		}
3152 #line 3153 "ntp_parser.c" /* yacc.c:1646  */
3153     break;
3154 
3155   case 280:
3156 #line 1430 "ntp_parser.y" /* yacc.c:1646  */
3157     {
3158 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
3159 			APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
3160 		}
3161 #line 3162 "ntp_parser.c" /* yacc.c:1646  */
3162     break;
3163 
3164   case 281:
3165 #line 1435 "ntp_parser.y" /* yacc.c:1646  */
3166     {
3167 			(yyval.Attr_val_fifo) = NULL;
3168 			APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
3169 		}
3170 #line 3171 "ntp_parser.c" /* yacc.c:1646  */
3171     break;
3172 
3173   case 282:
3174 #line 1443 "ntp_parser.y" /* yacc.c:1646  */
3175     {
3176 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
3177 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3178 		}
3179 #line 3180 "ntp_parser.c" /* yacc.c:1646  */
3180     break;
3181 
3182   case 283:
3183 #line 1448 "ntp_parser.y" /* yacc.c:1646  */
3184     {
3185 			(yyval.Attr_val_fifo) = NULL;
3186 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3187 		}
3188 #line 3189 "ntp_parser.c" /* yacc.c:1646  */
3189     break;
3190 
3191   case 284:
3192 #line 1456 "ntp_parser.y" /* yacc.c:1646  */
3193     { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[0].Integer)); }
3194 #line 3195 "ntp_parser.c" /* yacc.c:1646  */
3195     break;
3196 
3197   case 286:
3198 #line 1462 "ntp_parser.y" /* yacc.c:1646  */
3199     { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[-3].Integer), (yyvsp[-1].Integer)); }
3200 #line 3201 "ntp_parser.c" /* yacc.c:1646  */
3201     break;
3202 
3203   case 287:
3204 #line 1467 "ntp_parser.y" /* yacc.c:1646  */
3205     {
3206 			(yyval.String_fifo) = (yyvsp[-1].String_fifo);
3207 			APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
3208 		}
3209 #line 3210 "ntp_parser.c" /* yacc.c:1646  */
3210     break;
3211 
3212   case 288:
3213 #line 1472 "ntp_parser.y" /* yacc.c:1646  */
3214     {
3215 			(yyval.String_fifo) = NULL;
3216 			APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
3217 		}
3218 #line 3219 "ntp_parser.c" /* yacc.c:1646  */
3219     break;
3220 
3221   case 289:
3222 #line 1480 "ntp_parser.y" /* yacc.c:1646  */
3223     {
3224 			(yyval.Address_fifo) = (yyvsp[-1].Address_fifo);
3225 			APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
3226 		}
3227 #line 3228 "ntp_parser.c" /* yacc.c:1646  */
3228     break;
3229 
3230   case 290:
3231 #line 1485 "ntp_parser.y" /* yacc.c:1646  */
3232     {
3233 			(yyval.Address_fifo) = NULL;
3234 			APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
3235 		}
3236 #line 3237 "ntp_parser.c" /* yacc.c:1646  */
3237     break;
3238 
3239   case 291:
3240 #line 1493 "ntp_parser.y" /* yacc.c:1646  */
3241     {
3242 			if ((yyvsp[0].Integer) != 0 && (yyvsp[0].Integer) != 1) {
3243 				yyerror("Integer value is not boolean (0 or 1). Assuming 1");
3244 				(yyval.Integer) = 1;
3245 			} else {
3246 				(yyval.Integer) = (yyvsp[0].Integer);
3247 			}
3248 		}
3249 #line 3250 "ntp_parser.c" /* yacc.c:1646  */
3250     break;
3251 
3252   case 292:
3253 #line 1501 "ntp_parser.y" /* yacc.c:1646  */
3254     { (yyval.Integer) = 1; }
3255 #line 3256 "ntp_parser.c" /* yacc.c:1646  */
3256     break;
3257 
3258   case 293:
3259 #line 1502 "ntp_parser.y" /* yacc.c:1646  */
3260     { (yyval.Integer) = 0; }
3261 #line 3262 "ntp_parser.c" /* yacc.c:1646  */
3262     break;
3263 
3264   case 294:
3265 #line 1506 "ntp_parser.y" /* yacc.c:1646  */
3266     { (yyval.Double) = (double)(yyvsp[0].Integer); }
3267 #line 3268 "ntp_parser.c" /* yacc.c:1646  */
3268     break;
3269 
3270   case 296:
3271 #line 1517 "ntp_parser.y" /* yacc.c:1646  */
3272     {
3273 			sim_node *sn;
3274 
3275 			sn =  create_sim_node((yyvsp[-2].Attr_val_fifo), (yyvsp[-1].Sim_server_fifo));
3276 			APPEND_G_FIFO(cfgt.sim_details, sn);
3277 
3278 			/* Revert from ; to \n for end-of-command */
3279 			old_config_style = 1;
3280 		}
3281 #line 3282 "ntp_parser.c" /* yacc.c:1646  */
3282     break;
3283 
3284   case 297:
3285 #line 1534 "ntp_parser.y" /* yacc.c:1646  */
3286     { old_config_style = 0; }
3287 #line 3288 "ntp_parser.c" /* yacc.c:1646  */
3288     break;
3289 
3290   case 298:
3291 #line 1539 "ntp_parser.y" /* yacc.c:1646  */
3292     {
3293 			(yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
3294 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3295 		}
3296 #line 3297 "ntp_parser.c" /* yacc.c:1646  */
3297     break;
3298 
3299   case 299:
3300 #line 1544 "ntp_parser.y" /* yacc.c:1646  */
3301     {
3302 			(yyval.Attr_val_fifo) = NULL;
3303 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3304 		}
3305 #line 3306 "ntp_parser.c" /* yacc.c:1646  */
3306     break;
3307 
3308   case 300:
3309 #line 1552 "ntp_parser.y" /* yacc.c:1646  */
3310     { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
3311 #line 3312 "ntp_parser.c" /* yacc.c:1646  */
3312     break;
3313 
3314   case 303:
3315 #line 1562 "ntp_parser.y" /* yacc.c:1646  */
3316     {
3317 			(yyval.Sim_server_fifo) = (yyvsp[-1].Sim_server_fifo);
3318 			APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
3319 		}
3320 #line 3321 "ntp_parser.c" /* yacc.c:1646  */
3321     break;
3322 
3323   case 304:
3324 #line 1567 "ntp_parser.y" /* yacc.c:1646  */
3325     {
3326 			(yyval.Sim_server_fifo) = NULL;
3327 			APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
3328 		}
3329 #line 3330 "ntp_parser.c" /* yacc.c:1646  */
3330     break;
3331 
3332   case 305:
3333 #line 1575 "ntp_parser.y" /* yacc.c:1646  */
3334     { (yyval.Sim_server) = ONLY_SIM(create_sim_server((yyvsp[-4].Address_node), (yyvsp[-2].Double), (yyvsp[-1].Sim_script_fifo))); }
3335 #line 3336 "ntp_parser.c" /* yacc.c:1646  */
3336     break;
3337 
3338   case 306:
3339 #line 1580 "ntp_parser.y" /* yacc.c:1646  */
3340     { (yyval.Double) = (yyvsp[-1].Double); }
3341 #line 3342 "ntp_parser.c" /* yacc.c:1646  */
3342     break;
3343 
3344   case 307:
3345 #line 1585 "ntp_parser.y" /* yacc.c:1646  */
3346     { (yyval.Address_node) = (yyvsp[0].Address_node); }
3347 #line 3348 "ntp_parser.c" /* yacc.c:1646  */
3348     break;
3349 
3350   case 308:
3351 #line 1590 "ntp_parser.y" /* yacc.c:1646  */
3352     {
3353 			(yyval.Sim_script_fifo) = (yyvsp[-1].Sim_script_fifo);
3354 			APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
3355 		}
3356 #line 3357 "ntp_parser.c" /* yacc.c:1646  */
3357     break;
3358 
3359   case 309:
3360 #line 1595 "ntp_parser.y" /* yacc.c:1646  */
3361     {
3362 			(yyval.Sim_script_fifo) = NULL;
3363 			APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
3364 		}
3365 #line 3366 "ntp_parser.c" /* yacc.c:1646  */
3366     break;
3367 
3368   case 310:
3369 #line 1603 "ntp_parser.y" /* yacc.c:1646  */
3370     { (yyval.Sim_script) = ONLY_SIM(create_sim_script_info((yyvsp[-3].Double), (yyvsp[-1].Attr_val_fifo))); }
3371 #line 3372 "ntp_parser.c" /* yacc.c:1646  */
3372     break;
3373 
3374   case 311:
3375 #line 1608 "ntp_parser.y" /* yacc.c:1646  */
3376     {
3377 			(yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
3378 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3379 		}
3380 #line 3381 "ntp_parser.c" /* yacc.c:1646  */
3381     break;
3382 
3383   case 312:
3384 #line 1613 "ntp_parser.y" /* yacc.c:1646  */
3385     {
3386 			(yyval.Attr_val_fifo) = NULL;
3387 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3388 		}
3389 #line 3390 "ntp_parser.c" /* yacc.c:1646  */
3390     break;
3391 
3392   case 313:
3393 #line 1621 "ntp_parser.y" /* yacc.c:1646  */
3394     { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
3395 #line 3396 "ntp_parser.c" /* yacc.c:1646  */
3396     break;
3397 
3398 
3399 #line 3400 "ntp_parser.c" /* yacc.c:1646  */
3400       default: break;
3401     }
3402   /* User semantic actions sometimes alter yychar, and that requires
3403      that yytoken be updated with the new translation.  We take the
3404      approach of translating immediately before every use of yytoken.
3405      One alternative is translating here after every semantic action,
3406      but that translation would be missed if the semantic action invokes
3407      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3408      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
3409      incorrect destructor might then be invoked immediately.  In the
3410      case of YYERROR or YYBACKUP, subsequent parser actions might lead
3411      to an incorrect destructor call or verbose syntax error message
3412      before the lookahead is translated.  */
3413   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
3414 
3415   YYPOPSTACK (yylen);
3416   yylen = 0;
3417   YY_STACK_PRINT (yyss, yyssp);
3418 
3419   *++yyvsp = yyval;
3420 
3421   /* Now 'shift' the result of the reduction.  Determine what state
3422      that goes to, based on the state we popped back to and the rule
3423      number reduced by.  */
3424 
3425   yyn = yyr1[yyn];
3426 
3427   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3428   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3429     yystate = yytable[yystate];
3430   else
3431     yystate = yydefgoto[yyn - YYNTOKENS];
3432 
3433   goto yynewstate;
3434 
3435 
3436 /*--------------------------------------.
3437 | yyerrlab -- here on detecting error.  |
3438 `--------------------------------------*/
3439 yyerrlab:
3440   /* Make sure we have latest lookahead translation.  See comments at
3441      user semantic actions for why this is necessary.  */
3442   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
3443 
3444   /* If not already recovering from an error, report this error.  */
3445   if (!yyerrstatus)
3446     {
3447       ++yynerrs;
3448 #if ! YYERROR_VERBOSE
3449       yyerror (YY_("syntax error"));
3450 #else
3451 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
3452                                         yyssp, yytoken)
3453       {
3454         char const *yymsgp = YY_("syntax error");
3455         int yysyntax_error_status;
3456         yysyntax_error_status = YYSYNTAX_ERROR;
3457         if (yysyntax_error_status == 0)
3458           yymsgp = yymsg;
3459         else if (yysyntax_error_status == 1)
3460           {
3461             if (yymsg != yymsgbuf)
3462               YYSTACK_FREE (yymsg);
3463             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
3464             if (!yymsg)
3465               {
3466                 yymsg = yymsgbuf;
3467                 yymsg_alloc = sizeof yymsgbuf;
3468                 yysyntax_error_status = 2;
3469               }
3470             else
3471               {
3472                 yysyntax_error_status = YYSYNTAX_ERROR;
3473                 yymsgp = yymsg;
3474               }
3475           }
3476         yyerror (yymsgp);
3477         if (yysyntax_error_status == 2)
3478           goto yyexhaustedlab;
3479       }
3480 # undef YYSYNTAX_ERROR
3481 #endif
3482     }
3483 
3484 
3485 
3486   if (yyerrstatus == 3)
3487     {
3488       /* If just tried and failed to reuse lookahead token after an
3489          error, discard it.  */
3490 
3491       if (yychar <= YYEOF)
3492         {
3493           /* Return failure if at end of input.  */
3494           if (yychar == YYEOF)
3495             YYABORT;
3496         }
3497       else
3498         {
3499           yydestruct ("Error: discarding",
3500                       yytoken, &yylval);
3501           yychar = YYEMPTY;
3502         }
3503     }
3504 
3505   /* Else will try to reuse lookahead token after shifting the error
3506      token.  */
3507   goto yyerrlab1;
3508 
3509 
3510 /*---------------------------------------------------.
3511 | yyerrorlab -- error raised explicitly by YYERROR.  |
3512 `---------------------------------------------------*/
3513 yyerrorlab:
3514 
3515   /* Pacify compilers like GCC when the user code never invokes
3516      YYERROR and the label yyerrorlab therefore never appears in user
3517      code.  */
3518   if (/*CONSTCOND*/ 0)
3519      goto yyerrorlab;
3520 
3521   /* Do not reclaim the symbols of the rule whose action triggered
3522      this YYERROR.  */
3523   YYPOPSTACK (yylen);
3524   yylen = 0;
3525   YY_STACK_PRINT (yyss, yyssp);
3526   yystate = *yyssp;
3527   goto yyerrlab1;
3528 
3529 
3530 /*-------------------------------------------------------------.
3531 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
3532 `-------------------------------------------------------------*/
3533 yyerrlab1:
3534   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
3535 
3536   for (;;)
3537     {
3538       yyn = yypact[yystate];
3539       if (!yypact_value_is_default (yyn))
3540         {
3541           yyn += YYTERROR;
3542           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3543             {
3544               yyn = yytable[yyn];
3545               if (0 < yyn)
3546                 break;
3547             }
3548         }
3549 
3550       /* Pop the current state because it cannot handle the error token.  */
3551       if (yyssp == yyss)
3552         YYABORT;
3553 
3554 
3555       yydestruct ("Error: popping",
3556                   yystos[yystate], yyvsp);
3557       YYPOPSTACK (1);
3558       yystate = *yyssp;
3559       YY_STACK_PRINT (yyss, yyssp);
3560     }
3561 
3562   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3563   *++yyvsp = yylval;
3564   YY_IGNORE_MAYBE_UNINITIALIZED_END
3565 
3566 
3567   /* Shift the error token.  */
3568   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3569 
3570   yystate = yyn;
3571   goto yynewstate;
3572 
3573 
3574 /*-------------------------------------.
3575 | yyacceptlab -- YYACCEPT comes here.  |
3576 `-------------------------------------*/
3577 yyacceptlab:
3578   yyresult = 0;
3579   goto yyreturn;
3580 
3581 /*-----------------------------------.
3582 | yyabortlab -- YYABORT comes here.  |
3583 `-----------------------------------*/
3584 yyabortlab:
3585   yyresult = 1;
3586   goto yyreturn;
3587 
3588 #if !defined yyoverflow || YYERROR_VERBOSE
3589 /*-------------------------------------------------.
3590 | yyexhaustedlab -- memory exhaustion comes here.  |
3591 `-------------------------------------------------*/
3592 yyexhaustedlab:
3593   yyerror (YY_("memory exhausted"));
3594   yyresult = 2;
3595   /* Fall through.  */
3596 #endif
3597 
3598 yyreturn:
3599   if (yychar != YYEMPTY)
3600     {
3601       /* Make sure we have latest lookahead translation.  See comments at
3602          user semantic actions for why this is necessary.  */
3603       yytoken = YYTRANSLATE (yychar);
3604       yydestruct ("Cleanup: discarding lookahead",
3605                   yytoken, &yylval);
3606     }
3607   /* Do not reclaim the symbols of the rule whose action triggered
3608      this YYABORT or YYACCEPT.  */
3609   YYPOPSTACK (yylen);
3610   YY_STACK_PRINT (yyss, yyssp);
3611   while (yyssp != yyss)
3612     {
3613       yydestruct ("Cleanup: popping",
3614                   yystos[*yyssp], yyvsp);
3615       YYPOPSTACK (1);
3616     }
3617 #ifndef yyoverflow
3618   if (yyss != yyssa)
3619     YYSTACK_FREE (yyss);
3620 #endif
3621 #if YYERROR_VERBOSE
3622   if (yymsg != yymsgbuf)
3623     YYSTACK_FREE (yymsg);
3624 #endif
3625   return yyresult;
3626 }
3627 #line 1632 "ntp_parser.y" /* yacc.c:1906  */
3628 
3629 
3630 void
3631 yyerror(
3632 	const char *msg
3633 	)
3634 {
3635 	int retval;
3636 	struct FILE_INFO * ip_ctx;
3637 
3638 	ip_ctx = lex_current();
3639 	ip_ctx->errpos = ip_ctx->tokpos;
3640 
3641 	msyslog(LOG_ERR, "line %d column %d %s",
3642 		ip_ctx->errpos.nline, ip_ctx->errpos.ncol, msg);
3643 	if (!lex_from_file()) {
3644 		/* Save the error message in the correct buffer */
3645 		retval = snprintf(remote_config.err_msg + remote_config.err_pos,
3646 				  MAXLINE - remote_config.err_pos,
3647 				  "column %d %s",
3648 				  ip_ctx->errpos.ncol, msg);
3649 
3650 		/* Increment the value of err_pos */
3651 		if (retval > 0)
3652 			remote_config.err_pos += retval;
3653 
3654 		/* Increment the number of errors */
3655 		++remote_config.no_errors;
3656 	}
3657 }
3658 
3659 
3660 /*
3661  * token_name - convert T_ token integers to text
3662  *		example: token_name(T_Server) returns "T_Server"
3663  */
3664 const char *
3665 token_name(
3666 	int token
3667 	)
3668 {
3669 	return yytname[YYTRANSLATE(token)];
3670 }
3671 
3672 
3673 /* Initial Testing function -- ignore */
3674 #if 0
3675 int main(int argc, char *argv[])
3676 {
3677 	ip_file = FOPEN(argv[1], "r");
3678 	if (!ip_file)
3679 		fprintf(stderr, "ERROR!! Could not open file: %s\n", argv[1]);
3680 	yyparse();
3681 	return 0;
3682 }
3683 #endif
3684 
3685