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