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