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