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