1 /* A Bison parser, made by GNU Bison 2.5. */ 2 3 /* Bison implementation for Yacc-like parsers in C 4 5 Copyright (C) 1984, 1989-1990, 2000-2011 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 "2.5" 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 /* Using locations. */ 62 #define YYLSP_NEEDED 0 63 64 /* Substitute the variable and function names. */ 65 #define yyparse pcap_parse 66 #define yylex pcap_lex 67 #define yyerror pcap_error 68 #define yylval pcap_lval 69 #define yychar pcap_char 70 #define yydebug pcap_debug 71 #define yynerrs pcap_nerrs 72 73 74 /* Copy the first part of user declarations. */ 75 76 /* Line 268 of yacc.c */ 77 #line 1 "grammar.y" 78 79 /* 80 * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 81 * The Regents of the University of California. All rights reserved. 82 * 83 * Redistribution and use in source and binary forms, with or without 84 * modification, are permitted provided that: (1) source code distributions 85 * retain the above copyright notice and this paragraph in its entirety, (2) 86 * distributions including binary code include the above copyright notice and 87 * this paragraph in its entirety in the documentation or other materials 88 * provided with the distribution, and (3) all advertising materials mentioning 89 * features or use of this software display the following acknowledgement: 90 * ``This product includes software developed by the University of California, 91 * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of 92 * the University nor the names of its contributors may be used to endorse 93 * or promote products derived from this software without specific prior 94 * written permission. 95 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED 96 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 97 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 98 * 99 */ 100 #ifndef lint 101 static const char rcsid[] _U_ = 102 "@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.101 2007-11-18 02:03:52 guy Exp $ (LBL)"; 103 #endif 104 105 #ifdef HAVE_CONFIG_H 106 #include "config.h" 107 #endif 108 109 #ifdef WIN32 110 #include <pcap-stdinc.h> 111 #else /* WIN32 */ 112 #include <sys/types.h> 113 #include <sys/socket.h> 114 #endif /* WIN32 */ 115 116 #include <stdlib.h> 117 118 #ifndef WIN32 119 #if __STDC__ 120 struct mbuf; 121 struct rtentry; 122 #endif 123 124 #include <netinet/in.h> 125 #include <arpa/inet.h> 126 #endif /* WIN32 */ 127 128 #include <stdio.h> 129 130 #include "pcap-int.h" 131 132 #include "gencode.h" 133 #ifdef HAVE_NET_PFVAR_H 134 #include <net/if.h> 135 #include <net/pfvar.h> 136 #include <net/if_pflog.h> 137 #endif 138 #include "ieee80211.h" 139 #include <pcap/namedb.h> 140 141 #ifdef HAVE_OS_PROTO_H 142 #include "os-proto.h" 143 #endif 144 145 #define QSET(q, p, d, a) (q).proto = (p),\ 146 (q).dir = (d),\ 147 (q).addr = (a) 148 149 struct tok { 150 int v; /* value */ 151 const char *s; /* string */ 152 }; 153 154 static const struct tok ieee80211_types[] = { 155 { IEEE80211_FC0_TYPE_DATA, "data" }, 156 { IEEE80211_FC0_TYPE_MGT, "mgt" }, 157 { IEEE80211_FC0_TYPE_MGT, "management" }, 158 { IEEE80211_FC0_TYPE_CTL, "ctl" }, 159 { IEEE80211_FC0_TYPE_CTL, "control" }, 160 { 0, NULL } 161 }; 162 static const struct tok ieee80211_mgt_subtypes[] = { 163 { IEEE80211_FC0_SUBTYPE_ASSOC_REQ, "assocreq" }, 164 { IEEE80211_FC0_SUBTYPE_ASSOC_REQ, "assoc-req" }, 165 { IEEE80211_FC0_SUBTYPE_ASSOC_RESP, "assocresp" }, 166 { IEEE80211_FC0_SUBTYPE_ASSOC_RESP, "assoc-resp" }, 167 { IEEE80211_FC0_SUBTYPE_REASSOC_REQ, "reassocreq" }, 168 { IEEE80211_FC0_SUBTYPE_REASSOC_REQ, "reassoc-req" }, 169 { IEEE80211_FC0_SUBTYPE_REASSOC_RESP, "reassocresp" }, 170 { IEEE80211_FC0_SUBTYPE_REASSOC_RESP, "reassoc-resp" }, 171 { IEEE80211_FC0_SUBTYPE_PROBE_REQ, "probereq" }, 172 { IEEE80211_FC0_SUBTYPE_PROBE_REQ, "probe-req" }, 173 { IEEE80211_FC0_SUBTYPE_PROBE_RESP, "proberesp" }, 174 { IEEE80211_FC0_SUBTYPE_PROBE_RESP, "probe-resp" }, 175 { IEEE80211_FC0_SUBTYPE_BEACON, "beacon" }, 176 { IEEE80211_FC0_SUBTYPE_ATIM, "atim" }, 177 { IEEE80211_FC0_SUBTYPE_DISASSOC, "disassoc" }, 178 { IEEE80211_FC0_SUBTYPE_DISASSOC, "disassociation" }, 179 { IEEE80211_FC0_SUBTYPE_AUTH, "auth" }, 180 { IEEE80211_FC0_SUBTYPE_AUTH, "authentication" }, 181 { IEEE80211_FC0_SUBTYPE_DEAUTH, "deauth" }, 182 { IEEE80211_FC0_SUBTYPE_DEAUTH, "deauthentication" }, 183 { 0, NULL } 184 }; 185 static const struct tok ieee80211_ctl_subtypes[] = { 186 { IEEE80211_FC0_SUBTYPE_PS_POLL, "ps-poll" }, 187 { IEEE80211_FC0_SUBTYPE_RTS, "rts" }, 188 { IEEE80211_FC0_SUBTYPE_CTS, "cts" }, 189 { IEEE80211_FC0_SUBTYPE_ACK, "ack" }, 190 { IEEE80211_FC0_SUBTYPE_CF_END, "cf-end" }, 191 { IEEE80211_FC0_SUBTYPE_CF_END_ACK, "cf-end-ack" }, 192 { 0, NULL } 193 }; 194 static const struct tok ieee80211_data_subtypes[] = { 195 { IEEE80211_FC0_SUBTYPE_DATA, "data" }, 196 { IEEE80211_FC0_SUBTYPE_CF_ACK, "data-cf-ack" }, 197 { IEEE80211_FC0_SUBTYPE_CF_POLL, "data-cf-poll" }, 198 { IEEE80211_FC0_SUBTYPE_CF_ACPL, "data-cf-ack-poll" }, 199 { IEEE80211_FC0_SUBTYPE_NODATA, "null" }, 200 { IEEE80211_FC0_SUBTYPE_NODATA_CF_ACK, "cf-ack" }, 201 { IEEE80211_FC0_SUBTYPE_NODATA_CF_POLL, "cf-poll" }, 202 { IEEE80211_FC0_SUBTYPE_NODATA_CF_ACPL, "cf-ack-poll" }, 203 { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_DATA, "qos-data" }, 204 { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_CF_ACK, "qos-data-cf-ack" }, 205 { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_CF_POLL, "qos-data-cf-poll" }, 206 { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_CF_ACPL, "qos-data-cf-ack-poll" }, 207 { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_NODATA, "qos" }, 208 { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_NODATA_CF_POLL, "qos-cf-poll" }, 209 { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_NODATA_CF_ACPL, "qos-cf-ack-poll" }, 210 { 0, NULL } 211 }; 212 struct type2tok { 213 int type; 214 const struct tok *tok; 215 }; 216 static const struct type2tok ieee80211_type_subtypes[] = { 217 { IEEE80211_FC0_TYPE_MGT, ieee80211_mgt_subtypes }, 218 { IEEE80211_FC0_TYPE_CTL, ieee80211_ctl_subtypes }, 219 { IEEE80211_FC0_TYPE_DATA, ieee80211_data_subtypes }, 220 { 0, NULL } 221 }; 222 223 static int 224 str2tok(const char *str, const struct tok *toks) 225 { 226 int i; 227 228 for (i = 0; toks[i].s != NULL; i++) { 229 if (pcap_strcasecmp(toks[i].s, str) == 0) 230 return (toks[i].v); 231 } 232 return (-1); 233 } 234 235 int n_errors = 0; 236 237 static struct qual qerr = { Q_UNDEF, Q_UNDEF, Q_UNDEF, Q_UNDEF }; 238 239 static void 240 yyerror(const char *msg) 241 { 242 ++n_errors; 243 bpf_error("%s", msg); 244 /* NOTREACHED */ 245 } 246 247 #ifdef NEED_YYPARSE_WRAPPER 248 int yyparse(void); 249 250 int 251 pcap_parse() 252 { 253 return (yyparse()); 254 } 255 #endif 256 257 #ifdef HAVE_NET_PFVAR_H 258 static int 259 pfreason_to_num(const char *reason) 260 { 261 const char *reasons[] = PFRES_NAMES; 262 int i; 263 264 for (i = 0; reasons[i]; i++) { 265 if (pcap_strcasecmp(reason, reasons[i]) == 0) 266 return (i); 267 } 268 bpf_error("unknown PF reason"); 269 /*NOTREACHED*/ 270 } 271 272 static int 273 pfaction_to_num(const char *action) 274 { 275 if (pcap_strcasecmp(action, "pass") == 0 || 276 pcap_strcasecmp(action, "accept") == 0) 277 return (PF_PASS); 278 else if (pcap_strcasecmp(action, "drop") == 0 || 279 pcap_strcasecmp(action, "block") == 0) 280 return (PF_DROP); 281 #if HAVE_PF_NAT_THROUGH_PF_NORDR 282 else if (pcap_strcasecmp(action, "rdr") == 0) 283 return (PF_RDR); 284 else if (pcap_strcasecmp(action, "nat") == 0) 285 return (PF_NAT); 286 else if (pcap_strcasecmp(action, "binat") == 0) 287 return (PF_BINAT); 288 else if (pcap_strcasecmp(action, "nordr") == 0) 289 return (PF_NORDR); 290 #endif 291 else { 292 bpf_error("unknown PF action"); 293 /*NOTREACHED*/ 294 } 295 } 296 #else /* !HAVE_NET_PFVAR_H */ 297 static int 298 pfreason_to_num(const char *reason) 299 { 300 bpf_error("libpcap was compiled on a machine without pf support"); 301 /*NOTREACHED*/ 302 303 /* this is to make the VC compiler happy */ 304 return -1; 305 } 306 307 static int 308 pfaction_to_num(const char *action) 309 { 310 bpf_error("libpcap was compiled on a machine without pf support"); 311 /*NOTREACHED*/ 312 313 /* this is to make the VC compiler happy */ 314 return -1; 315 } 316 #endif /* HAVE_NET_PFVAR_H */ 317 318 319 /* Line 268 of yacc.c */ 320 #line 321 "y.tab.c" 321 322 /* Enabling traces. */ 323 #ifndef YYDEBUG 324 # define YYDEBUG 0 325 #endif 326 327 /* Enabling verbose error messages. */ 328 #ifdef YYERROR_VERBOSE 329 # undef YYERROR_VERBOSE 330 # define YYERROR_VERBOSE 1 331 #else 332 # define YYERROR_VERBOSE 0 333 #endif 334 335 /* Enabling the token table. */ 336 #ifndef YYTOKEN_TABLE 337 # define YYTOKEN_TABLE 0 338 #endif 339 340 341 /* Tokens. */ 342 #ifndef YYTOKENTYPE 343 # define YYTOKENTYPE 344 /* Put the tokens into the symbol table, so that GDB and other debuggers 345 know about them. */ 346 enum yytokentype { 347 DST = 258, 348 SRC = 259, 349 HOST = 260, 350 GATEWAY = 261, 351 NET = 262, 352 NETMASK = 263, 353 PORT = 264, 354 PORTRANGE = 265, 355 LESS = 266, 356 GREATER = 267, 357 PROTO = 268, 358 PROTOCHAIN = 269, 359 CBYTE = 270, 360 ARP = 271, 361 RARP = 272, 362 IP = 273, 363 SCTP = 274, 364 TCP = 275, 365 UDP = 276, 366 ICMP = 277, 367 IGMP = 278, 368 IGRP = 279, 369 PIM = 280, 370 VRRP = 281, 371 CARP = 282, 372 ATALK = 283, 373 AARP = 284, 374 DECNET = 285, 375 LAT = 286, 376 SCA = 287, 377 MOPRC = 288, 378 MOPDL = 289, 379 TK_BROADCAST = 290, 380 TK_MULTICAST = 291, 381 NUM = 292, 382 INBOUND = 293, 383 OUTBOUND = 294, 384 PF_IFNAME = 295, 385 PF_RSET = 296, 386 PF_RNR = 297, 387 PF_SRNR = 298, 388 PF_REASON = 299, 389 PF_ACTION = 300, 390 TYPE = 301, 391 SUBTYPE = 302, 392 DIR = 303, 393 ADDR1 = 304, 394 ADDR2 = 305, 395 ADDR3 = 306, 396 ADDR4 = 307, 397 RA = 308, 398 TA = 309, 399 LINK = 310, 400 GEQ = 311, 401 LEQ = 312, 402 NEQ = 313, 403 ID = 314, 404 EID = 315, 405 HID = 316, 406 HID6 = 317, 407 AID = 318, 408 LSH = 319, 409 RSH = 320, 410 LEN = 321, 411 IPV6 = 322, 412 ICMPV6 = 323, 413 AH = 324, 414 ESP = 325, 415 VLAN = 326, 416 MPLS = 327, 417 PPPOED = 328, 418 PPPOES = 329, 419 ISO = 330, 420 ESIS = 331, 421 CLNP = 332, 422 ISIS = 333, 423 L1 = 334, 424 L2 = 335, 425 IIH = 336, 426 LSP = 337, 427 SNP = 338, 428 CSNP = 339, 429 PSNP = 340, 430 STP = 341, 431 IPX = 342, 432 NETBEUI = 343, 433 LANE = 344, 434 LLC = 345, 435 METAC = 346, 436 BCC = 347, 437 SC = 348, 438 ILMIC = 349, 439 OAMF4EC = 350, 440 OAMF4SC = 351, 441 OAM = 352, 442 OAMF4 = 353, 443 CONNECTMSG = 354, 444 METACONNECT = 355, 445 VPI = 356, 446 VCI = 357, 447 RADIO = 358, 448 FISU = 359, 449 LSSU = 360, 450 MSU = 361, 451 HFISU = 362, 452 HLSSU = 363, 453 HMSU = 364, 454 SIO = 365, 455 OPC = 366, 456 DPC = 367, 457 SLS = 368, 458 HSIO = 369, 459 HOPC = 370, 460 HDPC = 371, 461 HSLS = 372, 462 AND = 373, 463 OR = 374, 464 UMINUS = 375 465 }; 466 #endif 467 /* Tokens. */ 468 #define DST 258 469 #define SRC 259 470 #define HOST 260 471 #define GATEWAY 261 472 #define NET 262 473 #define NETMASK 263 474 #define PORT 264 475 #define PORTRANGE 265 476 #define LESS 266 477 #define GREATER 267 478 #define PROTO 268 479 #define PROTOCHAIN 269 480 #define CBYTE 270 481 #define ARP 271 482 #define RARP 272 483 #define IP 273 484 #define SCTP 274 485 #define TCP 275 486 #define UDP 276 487 #define ICMP 277 488 #define IGMP 278 489 #define IGRP 279 490 #define PIM 280 491 #define VRRP 281 492 #define CARP 282 493 #define ATALK 283 494 #define AARP 284 495 #define DECNET 285 496 #define LAT 286 497 #define SCA 287 498 #define MOPRC 288 499 #define MOPDL 289 500 #define TK_BROADCAST 290 501 #define TK_MULTICAST 291 502 #define NUM 292 503 #define INBOUND 293 504 #define OUTBOUND 294 505 #define PF_IFNAME 295 506 #define PF_RSET 296 507 #define PF_RNR 297 508 #define PF_SRNR 298 509 #define PF_REASON 299 510 #define PF_ACTION 300 511 #define TYPE 301 512 #define SUBTYPE 302 513 #define DIR 303 514 #define ADDR1 304 515 #define ADDR2 305 516 #define ADDR3 306 517 #define ADDR4 307 518 #define RA 308 519 #define TA 309 520 #define LINK 310 521 #define GEQ 311 522 #define LEQ 312 523 #define NEQ 313 524 #define ID 314 525 #define EID 315 526 #define HID 316 527 #define HID6 317 528 #define AID 318 529 #define LSH 319 530 #define RSH 320 531 #define LEN 321 532 #define IPV6 322 533 #define ICMPV6 323 534 #define AH 324 535 #define ESP 325 536 #define VLAN 326 537 #define MPLS 327 538 #define PPPOED 328 539 #define PPPOES 329 540 #define ISO 330 541 #define ESIS 331 542 #define CLNP 332 543 #define ISIS 333 544 #define L1 334 545 #define L2 335 546 #define IIH 336 547 #define LSP 337 548 #define SNP 338 549 #define CSNP 339 550 #define PSNP 340 551 #define STP 341 552 #define IPX 342 553 #define NETBEUI 343 554 #define LANE 344 555 #define LLC 345 556 #define METAC 346 557 #define BCC 347 558 #define SC 348 559 #define ILMIC 349 560 #define OAMF4EC 350 561 #define OAMF4SC 351 562 #define OAM 352 563 #define OAMF4 353 564 #define CONNECTMSG 354 565 #define METACONNECT 355 566 #define VPI 356 567 #define VCI 357 568 #define RADIO 358 569 #define FISU 359 570 #define LSSU 360 571 #define MSU 361 572 #define HFISU 362 573 #define HLSSU 363 574 #define HMSU 364 575 #define SIO 365 576 #define OPC 366 577 #define DPC 367 578 #define SLS 368 579 #define HSIO 369 580 #define HOPC 370 581 #define HDPC 371 582 #define HSLS 372 583 #define AND 373 584 #define OR 374 585 #define UMINUS 375 586 587 588 589 590 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 591 typedef union YYSTYPE 592 { 593 594 /* Line 293 of yacc.c */ 595 #line 242 "grammar.y" 596 597 int i; 598 bpf_u_int32 h; 599 u_char *e; 600 char *s; 601 struct stmt *stmt; 602 struct arth *a; 603 struct { 604 struct qual q; 605 int atmfieldtype; 606 int mtp3fieldtype; 607 struct block *b; 608 } blk; 609 struct block *rblk; 610 611 612 613 /* Line 293 of yacc.c */ 614 #line 615 "y.tab.c" 615 } YYSTYPE; 616 # define YYSTYPE_IS_TRIVIAL 1 617 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ 618 # define YYSTYPE_IS_DECLARED 1 619 #endif 620 621 622 /* Copy the second part of user declarations. */ 623 624 625 /* Line 343 of yacc.c */ 626 #line 627 "y.tab.c" 627 628 #ifdef short 629 # undef short 630 #endif 631 632 #ifdef YYTYPE_UINT8 633 typedef YYTYPE_UINT8 yytype_uint8; 634 #else 635 typedef unsigned char yytype_uint8; 636 #endif 637 638 #ifdef YYTYPE_INT8 639 typedef YYTYPE_INT8 yytype_int8; 640 #elif (defined __STDC__ || defined __C99__FUNC__ \ 641 || defined __cplusplus || defined _MSC_VER) 642 typedef signed char yytype_int8; 643 #else 644 typedef short int yytype_int8; 645 #endif 646 647 #ifdef YYTYPE_UINT16 648 typedef YYTYPE_UINT16 yytype_uint16; 649 #else 650 typedef unsigned short int yytype_uint16; 651 #endif 652 653 #ifdef YYTYPE_INT16 654 typedef YYTYPE_INT16 yytype_int16; 655 #else 656 typedef short int yytype_int16; 657 #endif 658 659 #ifndef YYSIZE_T 660 # ifdef __SIZE_TYPE__ 661 # define YYSIZE_T __SIZE_TYPE__ 662 # elif defined size_t 663 # define YYSIZE_T size_t 664 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 665 || defined __cplusplus || defined _MSC_VER) 666 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 667 # define YYSIZE_T size_t 668 # else 669 # define YYSIZE_T unsigned int 670 # endif 671 #endif 672 673 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 674 675 #ifndef YY_ 676 # if defined YYENABLE_NLS && YYENABLE_NLS 677 # if ENABLE_NLS 678 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 679 # define YY_(msgid) dgettext ("bison-runtime", msgid) 680 # endif 681 # endif 682 # ifndef YY_ 683 # define YY_(msgid) msgid 684 # endif 685 #endif 686 687 /* Suppress unused-variable warnings by "using" E. */ 688 #if ! defined lint || defined __GNUC__ 689 # define YYUSE(e) ((void) (e)) 690 #else 691 # define YYUSE(e) /* empty */ 692 #endif 693 694 /* Identity function, used to suppress warnings about constant conditions. */ 695 #ifndef lint 696 # define YYID(n) (n) 697 #else 698 #if (defined __STDC__ || defined __C99__FUNC__ \ 699 || defined __cplusplus || defined _MSC_VER) 700 static int 701 YYID (int yyi) 702 #else 703 static int 704 YYID (yyi) 705 int yyi; 706 #endif 707 { 708 return yyi; 709 } 710 #endif 711 712 #if ! defined yyoverflow || YYERROR_VERBOSE 713 714 /* The parser invokes alloca or malloc; define the necessary symbols. */ 715 716 # ifdef YYSTACK_USE_ALLOCA 717 # if YYSTACK_USE_ALLOCA 718 # ifdef __GNUC__ 719 # define YYSTACK_ALLOC __builtin_alloca 720 # elif defined __BUILTIN_VA_ARG_INCR 721 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 722 # elif defined _AIX 723 # define YYSTACK_ALLOC __alloca 724 # elif defined _MSC_VER 725 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 726 # define alloca _alloca 727 # else 728 # define YYSTACK_ALLOC alloca 729 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 730 || defined __cplusplus || defined _MSC_VER) 731 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 732 # ifndef EXIT_SUCCESS 733 # define EXIT_SUCCESS 0 734 # endif 735 # endif 736 # endif 737 # endif 738 # endif 739 740 # ifdef YYSTACK_ALLOC 741 /* Pacify GCC's `empty if-body' warning. */ 742 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) 743 # ifndef YYSTACK_ALLOC_MAXIMUM 744 /* The OS might guarantee only one guard page at the bottom of the stack, 745 and a page size can be as small as 4096 bytes. So we cannot safely 746 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 747 to allow for a few compiler-allocated temporary stack slots. */ 748 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 749 # endif 750 # else 751 # define YYSTACK_ALLOC YYMALLOC 752 # define YYSTACK_FREE YYFREE 753 # ifndef YYSTACK_ALLOC_MAXIMUM 754 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 755 # endif 756 # if (defined __cplusplus && ! defined EXIT_SUCCESS \ 757 && ! ((defined YYMALLOC || defined malloc) \ 758 && (defined YYFREE || defined free))) 759 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 760 # ifndef EXIT_SUCCESS 761 # define EXIT_SUCCESS 0 762 # endif 763 # endif 764 # ifndef YYMALLOC 765 # define YYMALLOC malloc 766 # if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 767 || defined __cplusplus || defined _MSC_VER) 768 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 769 # endif 770 # endif 771 # ifndef YYFREE 772 # define YYFREE free 773 # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 774 || defined __cplusplus || defined _MSC_VER) 775 void free (void *); /* INFRINGES ON USER NAME SPACE */ 776 # endif 777 # endif 778 # endif 779 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 780 781 782 #if (! defined yyoverflow \ 783 && (! defined __cplusplus \ 784 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 785 786 /* A type that is properly aligned for any stack member. */ 787 union yyalloc 788 { 789 yytype_int16 yyss_alloc; 790 YYSTYPE yyvs_alloc; 791 }; 792 793 /* The size of the maximum gap between one aligned stack and the next. */ 794 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 795 796 /* The size of an array large to enough to hold all stacks, each with 797 N elements. */ 798 # define YYSTACK_BYTES(N) \ 799 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ 800 + YYSTACK_GAP_MAXIMUM) 801 802 # define YYCOPY_NEEDED 1 803 804 /* Relocate STACK from its old location to the new one. The 805 local variables YYSIZE and YYSTACKSIZE give the old and new number of 806 elements in the stack, and YYPTR gives the new location of the 807 stack. Advance YYPTR to a properly aligned location for the next 808 stack. */ 809 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ 810 do \ 811 { \ 812 YYSIZE_T yynewbytes; \ 813 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ 814 Stack = &yyptr->Stack_alloc; \ 815 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 816 yyptr += yynewbytes / sizeof (*yyptr); \ 817 } \ 818 while (YYID (0)) 819 820 #endif 821 822 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED 823 /* Copy COUNT objects from FROM to TO. The source and destination do 824 not overlap. */ 825 # ifndef YYCOPY 826 # if defined __GNUC__ && 1 < __GNUC__ 827 # define YYCOPY(To, From, Count) \ 828 __builtin_memcpy (To, From, (Count) * sizeof (*(From))) 829 # else 830 # define YYCOPY(To, From, Count) \ 831 do \ 832 { \ 833 YYSIZE_T yyi; \ 834 for (yyi = 0; yyi < (Count); yyi++) \ 835 (To)[yyi] = (From)[yyi]; \ 836 } \ 837 while (YYID (0)) 838 # endif 839 # endif 840 #endif /* !YYCOPY_NEEDED */ 841 842 /* YYFINAL -- State number of the termination state. */ 843 #define YYFINAL 3 844 /* YYLAST -- Last index in YYTABLE. */ 845 #define YYLAST 710 846 847 /* YYNTOKENS -- Number of terminals. */ 848 #define YYNTOKENS 136 849 /* YYNNTS -- Number of nonterminals. */ 850 #define YYNNTS 46 851 /* YYNRULES -- Number of rules. */ 852 #define YYNRULES 213 853 /* YYNRULES -- Number of states. */ 854 #define YYNSTATES 285 855 856 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 857 #define YYUNDEFTOK 2 858 #define YYMAXUTOK 375 859 860 #define YYTRANSLATE(YYX) \ 861 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 862 863 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 864 static const yytype_uint8 yytranslate[] = 865 { 866 0, 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, 120, 2, 2, 2, 2, 122, 2, 870 129, 128, 125, 123, 2, 124, 2, 126, 2, 2, 871 2, 2, 2, 2, 2, 2, 2, 2, 135, 2, 872 132, 131, 130, 2, 2, 2, 2, 2, 2, 2, 873 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 874 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 875 2, 133, 2, 134, 2, 2, 2, 2, 2, 2, 876 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 877 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 878 2, 2, 2, 2, 121, 2, 2, 2, 2, 2, 879 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 880 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 881 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 882 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 883 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 884 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 885 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 886 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 887 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 888 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 889 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 890 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 891 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 892 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 893 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 894 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 895 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 896 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 897 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 898 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 899 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 900 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 901 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 902 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 903 115, 116, 117, 118, 119, 127 904 }; 905 906 #if YYDEBUG 907 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 908 YYRHS. */ 909 static const yytype_uint16 yyprhs[] = 910 { 911 0, 0, 3, 6, 8, 9, 11, 15, 19, 23, 912 27, 29, 31, 33, 35, 39, 41, 45, 49, 51, 913 55, 57, 59, 61, 64, 66, 68, 70, 74, 78, 914 80, 82, 84, 87, 91, 94, 97, 100, 103, 106, 915 109, 113, 115, 119, 123, 125, 127, 129, 132, 134, 916 137, 139, 140, 142, 144, 148, 152, 156, 160, 162, 917 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 918 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 919 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 920 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 921 244, 246, 248, 250, 252, 254, 256, 258, 260, 263, 922 266, 269, 272, 277, 279, 281, 284, 286, 289, 291, 923 293, 296, 298, 300, 303, 306, 309, 312, 315, 318, 924 321, 326, 329, 332, 335, 337, 339, 341, 343, 345, 925 347, 349, 351, 353, 355, 357, 359, 361, 363, 365, 926 367, 369, 371, 376, 383, 387, 391, 395, 399, 403, 927 407, 411, 415, 418, 422, 424, 426, 428, 430, 432, 928 434, 436, 440, 442, 444, 446, 448, 450, 452, 454, 929 456, 458, 460, 462, 464, 466, 468, 470, 473, 476, 930 480, 482, 484, 488, 490, 492, 494, 496, 498, 500, 931 502, 504, 506, 508, 510, 512, 514, 516, 518, 521, 932 524, 528, 530, 532 933 }; 934 935 /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 936 static const yytype_int16 yyrhs[] = 937 { 938 137, 0, -1, 138, 139, -1, 138, -1, -1, 148, 939 -1, 139, 140, 148, -1, 139, 140, 142, -1, 139, 940 141, 148, -1, 139, 141, 142, -1, 118, -1, 119, 941 -1, 143, -1, 170, -1, 145, 146, 128, -1, 59, 942 -1, 61, 126, 37, -1, 61, 8, 61, -1, 61, 943 -1, 62, 126, 37, -1, 62, -1, 60, -1, 63, 944 -1, 144, 142, -1, 120, -1, 129, -1, 143, -1, 945 147, 140, 142, -1, 147, 141, 142, -1, 170, -1, 946 146, -1, 150, -1, 144, 148, -1, 151, 152, 153, 947 -1, 151, 152, -1, 151, 153, -1, 151, 13, -1, 948 151, 14, -1, 151, 154, -1, 149, 142, -1, 145, 949 139, 128, -1, 155, -1, 167, 165, 167, -1, 167, 950 166, 167, -1, 156, -1, 171, -1, 172, -1, 173, 951 174, -1, 177, -1, 178, 179, -1, 155, -1, -1, 952 4, -1, 3, -1, 4, 119, 3, -1, 3, 119, 953 4, -1, 4, 118, 3, -1, 3, 118, 4, -1, 954 49, -1, 50, -1, 51, -1, 52, -1, 53, -1, 955 54, -1, 5, -1, 7, -1, 9, -1, 10, -1, 956 6, -1, 55, -1, 18, -1, 16, -1, 17, -1, 957 19, -1, 20, -1, 21, -1, 22, -1, 23, -1, 958 24, -1, 25, -1, 26, -1, 27, -1, 28, -1, 959 29, -1, 30, -1, 31, -1, 32, -1, 34, -1, 960 33, -1, 67, -1, 68, -1, 69, -1, 70, -1, 961 75, -1, 76, -1, 78, -1, 79, -1, 80, -1, 962 81, -1, 82, -1, 83, -1, 85, -1, 84, -1, 963 77, -1, 86, -1, 87, -1, 88, -1, 103, -1, 964 151, 35, -1, 151, 36, -1, 11, 37, -1, 12, 965 37, -1, 15, 37, 169, 37, -1, 38, -1, 39, 966 -1, 71, 170, -1, 71, -1, 72, 170, -1, 72, 967 -1, 73, -1, 74, 170, -1, 74, -1, 157, -1, 968 151, 158, -1, 40, 59, -1, 41, 59, -1, 42, 969 37, -1, 43, 37, -1, 44, 163, -1, 45, 164, 970 -1, 46, 159, 47, 160, -1, 46, 159, -1, 47, 971 161, -1, 48, 162, -1, 37, -1, 59, -1, 37, 972 -1, 59, -1, 59, -1, 37, -1, 59, -1, 37, 973 -1, 59, -1, 59, -1, 130, -1, 56, -1, 131, 974 -1, 57, -1, 132, -1, 58, -1, 170, -1, 168, 975 -1, 155, 133, 167, 134, -1, 155, 133, 167, 135, 976 37, 134, -1, 167, 123, 167, -1, 167, 124, 167, 977 -1, 167, 125, 167, -1, 167, 126, 167, -1, 167, 978 122, 167, -1, 167, 121, 167, -1, 167, 64, 167, 979 -1, 167, 65, 167, -1, 124, 167, -1, 145, 168, 980 128, -1, 66, -1, 122, -1, 121, -1, 132, -1, 981 130, -1, 131, -1, 37, -1, 145, 170, 128, -1, 982 89, -1, 90, -1, 91, -1, 92, -1, 95, -1, 983 96, -1, 93, -1, 94, -1, 97, -1, 98, -1, 984 99, -1, 100, -1, 101, -1, 102, -1, 175, -1, 985 165, 37, -1, 166, 37, -1, 145, 176, 128, -1, 986 37, -1, 175, -1, 176, 141, 175, -1, 104, -1, 987 105, -1, 106, -1, 107, -1, 108, -1, 109, -1, 988 110, -1, 111, -1, 112, -1, 113, -1, 114, -1, 989 115, -1, 116, -1, 117, -1, 180, -1, 165, 37, 990 -1, 166, 37, -1, 145, 181, 128, -1, 37, -1, 991 180, -1, 181, 141, 180, -1 992 }; 993 994 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 995 static const yytype_uint16 yyrline[] = 996 { 997 0, 316, 316, 320, 322, 324, 325, 326, 327, 328, 998 330, 332, 334, 335, 337, 339, 340, 342, 344, 357, 999 366, 375, 384, 393, 395, 397, 399, 400, 401, 403, 1000 405, 407, 408, 410, 411, 412, 413, 414, 415, 417, 1001 418, 419, 420, 422, 424, 425, 426, 427, 428, 429, 1002 432, 433, 436, 437, 438, 439, 440, 441, 442, 443, 1003 444, 445, 446, 447, 450, 451, 452, 453, 456, 458, 1004 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 1005 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 1006 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 1007 489, 490, 491, 492, 493, 494, 495, 496, 498, 499, 1008 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 1009 510, 511, 512, 513, 516, 517, 518, 519, 520, 521, 1010 524, 529, 532, 536, 539, 540, 546, 547, 567, 583, 1011 584, 597, 598, 601, 604, 605, 606, 608, 609, 610, 1012 612, 613, 615, 616, 617, 618, 619, 620, 621, 622, 1013 623, 624, 625, 626, 627, 629, 630, 631, 632, 633, 1014 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 1015 647, 648, 649, 650, 653, 654, 656, 657, 658, 659, 1016 661, 668, 669, 672, 673, 674, 675, 676, 677, 680, 1017 681, 682, 683, 684, 685, 686, 687, 689, 690, 691, 1018 692, 694, 707, 708 1019 }; 1020 #endif 1021 1022 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 1023 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 1024 First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 1025 static const char *const yytname[] = 1026 { 1027 "$end", "error", "$undefined", "DST", "SRC", "HOST", "GATEWAY", "NET", 1028 "NETMASK", "PORT", "PORTRANGE", "LESS", "GREATER", "PROTO", "PROTOCHAIN", 1029 "CBYTE", "ARP", "RARP", "IP", "SCTP", "TCP", "UDP", "ICMP", "IGMP", 1030 "IGRP", "PIM", "VRRP", "CARP", "ATALK", "AARP", "DECNET", "LAT", "SCA", 1031 "MOPRC", "MOPDL", "TK_BROADCAST", "TK_MULTICAST", "NUM", "INBOUND", 1032 "OUTBOUND", "PF_IFNAME", "PF_RSET", "PF_RNR", "PF_SRNR", "PF_REASON", 1033 "PF_ACTION", "TYPE", "SUBTYPE", "DIR", "ADDR1", "ADDR2", "ADDR3", 1034 "ADDR4", "RA", "TA", "LINK", "GEQ", "LEQ", "NEQ", "ID", "EID", "HID", 1035 "HID6", "AID", "LSH", "RSH", "LEN", "IPV6", "ICMPV6", "AH", "ESP", 1036 "VLAN", "MPLS", "PPPOED", "PPPOES", "ISO", "ESIS", "CLNP", "ISIS", "L1", 1037 "L2", "IIH", "LSP", "SNP", "CSNP", "PSNP", "STP", "IPX", "NETBEUI", 1038 "LANE", "LLC", "METAC", "BCC", "SC", "ILMIC", "OAMF4EC", "OAMF4SC", 1039 "OAM", "OAMF4", "CONNECTMSG", "METACONNECT", "VPI", "VCI", "RADIO", 1040 "FISU", "LSSU", "MSU", "HFISU", "HLSSU", "HMSU", "SIO", "OPC", "DPC", 1041 "SLS", "HSIO", "HOPC", "HDPC", "HSLS", "AND", "OR", "'!'", "'|'", "'&'", 1042 "'+'", "'-'", "'*'", "'/'", "UMINUS", "')'", "'('", "'>'", "'='", "'<'", 1043 "'['", "']'", "':'", "$accept", "prog", "null", "expr", "and", "or", 1044 "id", "nid", "not", "paren", "pid", "qid", "term", "head", "rterm", 1045 "pqual", "dqual", "aqual", "ndaqual", "pname", "other", "pfvar", 1046 "p80211", "type", "subtype", "type_subtype", "dir", "reason", "action", 1047 "relop", "irelop", "arth", "narth", "byteop", "pnum", "atmtype", 1048 "atmmultitype", "atmfield", "atmvalue", "atmfieldvalue", "atmlistvalue", 1049 "mtp2type", "mtp3field", "mtp3value", "mtp3fieldvalue", "mtp3listvalue", 0 1050 }; 1051 #endif 1052 1053 # ifdef YYPRINT 1054 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 1055 token YYLEX-NUM. */ 1056 static const yytype_uint16 yytoknum[] = 1057 { 1058 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 1059 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 1060 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 1061 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 1062 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 1063 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 1064 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 1065 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 1066 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 1067 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 1068 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 1069 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 1070 33, 124, 38, 43, 45, 42, 47, 375, 41, 40, 1071 62, 61, 60, 91, 93, 58 1072 }; 1073 # endif 1074 1075 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 1076 static const yytype_uint8 yyr1[] = 1077 { 1078 0, 136, 137, 137, 138, 139, 139, 139, 139, 139, 1079 140, 141, 142, 142, 142, 143, 143, 143, 143, 143, 1080 143, 143, 143, 143, 144, 145, 146, 146, 146, 147, 1081 147, 148, 148, 149, 149, 149, 149, 149, 149, 150, 1082 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 1083 151, 151, 152, 152, 152, 152, 152, 152, 152, 152, 1084 152, 152, 152, 152, 153, 153, 153, 153, 154, 155, 1085 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 1086 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 1087 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 1088 155, 155, 155, 155, 155, 155, 155, 155, 156, 156, 1089 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 1090 156, 156, 156, 156, 157, 157, 157, 157, 157, 157, 1091 158, 158, 158, 158, 159, 159, 160, 160, 161, 162, 1092 162, 163, 163, 164, 165, 165, 165, 166, 166, 166, 1093 167, 167, 168, 168, 168, 168, 168, 168, 168, 168, 1094 168, 168, 168, 168, 168, 169, 169, 169, 169, 169, 1095 170, 170, 171, 171, 171, 171, 171, 171, 171, 171, 1096 172, 172, 172, 172, 173, 173, 174, 174, 174, 174, 1097 175, 176, 176, 177, 177, 177, 177, 177, 177, 178, 1098 178, 178, 178, 178, 178, 178, 178, 179, 179, 179, 1099 179, 180, 181, 181 1100 }; 1101 1102 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 1103 static const yytype_uint8 yyr2[] = 1104 { 1105 0, 2, 2, 1, 0, 1, 3, 3, 3, 3, 1106 1, 1, 1, 1, 3, 1, 3, 3, 1, 3, 1107 1, 1, 1, 2, 1, 1, 1, 3, 3, 1, 1108 1, 1, 2, 3, 2, 2, 2, 2, 2, 2, 1109 3, 1, 3, 3, 1, 1, 1, 2, 1, 2, 1110 1, 0, 1, 1, 3, 3, 3, 3, 1, 1, 1111 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1112 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1113 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1114 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1115 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1116 2, 2, 4, 1, 1, 2, 1, 2, 1, 1, 1117 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1118 4, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1119 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1120 1, 1, 4, 6, 3, 3, 3, 3, 3, 3, 1121 3, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1122 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1123 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 1124 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1125 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1126 3, 1, 1, 3 1127 }; 1128 1129 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. 1130 Performed when YYTABLE doesn't specify something else to do. Zero 1131 means the default is an error. */ 1132 static const yytype_uint8 yydefact[] = 1133 { 1134 4, 0, 51, 1, 0, 0, 0, 71, 72, 70, 1135 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 1136 83, 84, 85, 86, 88, 87, 170, 113, 114, 0, 1137 0, 0, 0, 0, 0, 69, 164, 89, 90, 91, 1138 92, 116, 118, 119, 121, 93, 94, 103, 95, 96, 1139 97, 98, 99, 100, 102, 101, 104, 105, 106, 172, 1140 173, 174, 175, 178, 179, 176, 177, 180, 181, 182, 1141 183, 184, 185, 107, 193, 194, 195, 196, 197, 198, 1142 199, 200, 201, 202, 203, 204, 205, 206, 24, 0, 1143 25, 2, 51, 51, 5, 0, 31, 0, 50, 44, 1144 122, 0, 151, 150, 45, 46, 0, 48, 0, 110, 1145 111, 0, 124, 125, 126, 127, 141, 142, 128, 143, 1146 129, 0, 115, 117, 120, 0, 0, 162, 10, 11, 1147 51, 51, 32, 0, 151, 150, 15, 21, 18, 20, 1148 22, 39, 12, 0, 0, 13, 53, 52, 64, 68, 1149 65, 66, 67, 36, 37, 108, 109, 0, 0, 0, 1150 58, 59, 60, 61, 62, 63, 34, 35, 38, 123, 1151 0, 145, 147, 149, 0, 0, 0, 0, 0, 0, 1152 0, 0, 144, 146, 148, 0, 0, 190, 0, 0, 1153 0, 47, 186, 211, 0, 0, 0, 49, 207, 166, 1154 165, 168, 169, 167, 0, 0, 0, 7, 51, 51, 1155 6, 150, 9, 8, 40, 163, 171, 0, 0, 0, 1156 23, 26, 30, 0, 29, 0, 0, 0, 0, 134, 1157 135, 131, 138, 132, 139, 140, 133, 33, 0, 160, 1158 161, 159, 158, 154, 155, 156, 157, 42, 43, 191, 1159 0, 187, 188, 212, 0, 208, 209, 112, 150, 17, 1160 16, 19, 14, 0, 0, 57, 55, 56, 54, 0, 1161 152, 0, 189, 0, 210, 0, 27, 28, 136, 137, 1162 130, 0, 192, 213, 153 1163 }; 1164 1165 /* YYDEFGOTO[NTERM-NUM]. */ 1166 static const yytype_int16 yydefgoto[] = 1167 { 1168 -1, 1, 2, 133, 130, 131, 220, 142, 143, 125, 1169 222, 223, 94, 95, 96, 97, 166, 167, 168, 126, 1170 99, 100, 169, 231, 280, 233, 236, 118, 120, 185, 1171 186, 101, 102, 204, 103, 104, 105, 106, 191, 192, 1172 250, 107, 108, 197, 198, 254 1173 }; 1174 1175 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 1176 STATE-NUM. */ 1177 #define YYPACT_NINF -208 1178 static const yytype_int16 yypact[] = 1179 { 1180 -208, 20, 226, -208, -10, -3, 1, -208, -208, -208, 1181 -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, 1182 -208, -208, -208, -208, -208, -208, -208, -208, -208, -28, 1183 -15, 49, 68, -18, 62, -208, -208, -208, -208, -208, 1184 -208, -26, -26, -208, -26, -208, -208, -208, -208, -208, 1185 -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, 1186 -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, 1187 -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, 1188 -208, -208, -208, -208, -208, -208, -208, -208, -208, 570, 1189 -208, -42, 456, 456, -208, 19, -208, 656, 12, -208, 1190 -208, 153, -208, -208, -208, -208, 55, -208, 59, -208, 1191 -208, -69, -208, -208, -208, -208, -208, -208, -208, -208, 1192 -208, -26, -208, -208, -208, 570, -19, -208, -208, -208, 1193 341, 341, -208, -93, -1, 21, -208, -208, -6, 34, 1194 -208, -208, -208, 19, 19, -208, -9, 6, -208, -208, 1195 -208, -208, -208, -208, -208, -208, -208, -14, 74, -13, 1196 -208, -208, -208, -208, -208, -208, 23, -208, -208, -208, 1197 570, -208, -208, -208, 570, 570, 570, 570, 570, 570, 1198 570, 570, -208, -208, -208, 570, 570, -208, 81, 134, 1199 139, -208, -208, -208, 140, 141, 142, -208, -208, -208, 1200 -208, -208, -208, -208, 143, 21, 79, -208, 341, 341, 1201 -208, 4, -208, -208, -208, -208, -208, 86, 144, 145, 1202 -208, -208, 64, -42, 21, 179, 189, 191, 192, -208, 1203 -208, 149, -208, -208, -208, -208, -208, -208, -51, 42, 1204 42, 99, 110, 33, 33, -208, -208, 79, 79, -208, 1205 -61, -208, -208, -208, -59, -208, -208, -208, -64, -208, 1206 -208, -208, -208, 19, 19, -208, -208, -208, -208, -8, 1207 -208, 160, -208, 81, -208, 140, -208, -208, -208, -208, 1208 -208, 65, -208, -208, -208 1209 }; 1210 1211 /* YYPGOTO[NTERM-NUM]. */ 1212 static const yytype_int16 yypgoto[] = 1213 { 1214 -208, -208, -208, 196, -11, -207, -94, -122, 5, -2, 1215 -208, -208, -82, -208, -208, -208, -208, 53, -208, 7, 1216 -208, -208, -208, -208, -208, -208, -208, -208, -208, -91, 1217 -40, -24, -75, -208, -36, -208, -208, -208, -208, -185, 1218 -208, -208, -208, -208, -173, -208 1219 }; 1220 1221 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 1222 positive, shift that token. If negative, reduce the rule which 1223 number is the opposite. If YYTABLE_NINF, syntax error. */ 1224 #define YYTABLE_NINF -42 1225 static const yytype_int16 yytable[] = 1226 { 1227 93, 141, 217, 249, -13, 122, 123, 92, 124, 98, 1228 132, 26, -41, 174, 175, 189, 264, 195, 134, 116, 1229 3, 253, 221, 229, 234, 128, 129, 109, 148, 278, 1230 150, 112, 151, 152, 110, 214, 207, 212, 111, 121, 1231 121, 117, 121, 273, 113, 230, 235, 275, 210, 213, 1232 134, 279, 199, 200, -29, -29, 26, 135, 129, 145, 1233 129, 201, 202, 203, 216, 127, 190, 272, 196, 274, 1234 176, 177, 178, 179, 180, 181, 128, 129, 136, 137, 1235 138, 139, 140, 270, 271, 205, 114, 221, 282, 135, 1236 93, 93, 187, 144, 211, 211, 193, 92, 92, 98, 1237 98, 206, 283, 90, 188, 115, 194, 145, 224, 225, 1238 226, 171, 172, 173, 170, 171, 172, 173, 187, 121, 1239 218, 119, -13, -13, 227, 228, 132, 215, 209, 209, 1240 -41, -41, -13, 232, 134, 208, 208, 98, 98, 88, 1241 -41, 144, 121, 174, 175, 170, 238, 259, 90, 216, 1242 239, 240, 241, 242, 243, 244, 245, 246, 180, 181, 1243 219, 247, 248, 174, 175, 178, 179, 180, 181, 276, 1244 277, 251, 211, 258, 174, 175, 252, 193, 255, 256, 1245 257, 260, 261, 265, 90, 182, 183, 184, 90, 182, 1246 183, 184, 262, 266, 267, 268, 269, 281, 91, 284, 1247 176, 177, 178, 179, 180, 181, 209, 93, 0, 171, 1248 172, 173, 263, 208, 208, 98, 98, 174, 175, 237, 1249 0, 177, 178, 179, 180, 181, -3, 145, 145, 0, 1250 0, 0, 0, 178, 179, 180, 181, 4, 5, 0, 1251 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1252 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 1253 25, 144, 144, 26, 27, 28, 29, 30, 31, 32, 1254 33, 34, 0, 0, 176, 177, 178, 179, 180, 181, 1255 0, 35, 0, 182, 183, 184, 0, 0, 0, 0, 1256 0, 0, 36, 37, 38, 39, 40, 41, 42, 43, 1257 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 1258 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 1259 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 1260 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 1261 84, 85, 86, 87, 0, 0, 88, 0, 0, 0, 1262 89, 0, 4, 5, 0, 90, 6, 7, 8, 9, 1263 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1264 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 1265 28, 29, 30, 31, 32, 33, 34, 0, 0, 0, 1266 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 1267 136, 137, 138, 139, 140, 0, 0, 36, 37, 38, 1268 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 1269 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 1270 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 1271 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 1272 79, 80, 81, 82, 83, 84, 85, 86, 87, 0, 1273 0, 88, 0, 0, 0, 89, 0, 4, 5, 0, 1274 90, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1275 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 1276 25, 0, 0, 26, 27, 28, 29, 30, 31, 32, 1277 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 1278 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 1279 0, 0, 36, 37, 38, 39, 40, 41, 42, 43, 1280 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 1281 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 1282 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 1283 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 1284 84, 85, 86, 87, 0, 0, 88, 0, 0, 0, 1285 89, 0, 0, 0, 0, 90, 7, 8, 9, 10, 1286 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1287 21, 22, 23, 24, 25, 0, 0, 26, 0, 0, 1288 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1289 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 1290 0, 0, 0, 0, 0, 0, 36, 37, 38, 39, 1291 40, 0, 0, 0, 0, 45, 46, 47, 48, 49, 1292 50, 51, 52, 53, 54, 55, 56, 57, 58, 146, 1293 147, 148, 149, 150, 0, 151, 152, 0, 0, 153, 1294 154, 0, 0, 73, 0, 0, 0, 0, 0, 0, 1295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1296 0, 155, 156, 0, 89, 0, 0, 0, 0, 90, 1297 0, 0, 157, 158, 159, 160, 161, 162, 163, 164, 1298 165 1299 }; 1300 1301 #define yypact_value_is_default(yystate) \ 1302 ((yystate) == (-208)) 1303 1304 #define yytable_value_is_error(yytable_value) \ 1305 YYID (0) 1306 1307 static const yytype_int16 yycheck[] = 1308 { 1309 2, 95, 8, 188, 0, 41, 42, 2, 44, 2, 1310 92, 37, 0, 64, 65, 106, 223, 108, 93, 37, 1311 0, 194, 144, 37, 37, 118, 119, 37, 5, 37, 1312 7, 59, 9, 10, 37, 128, 130, 131, 37, 41, 1313 42, 59, 44, 250, 59, 59, 59, 254, 130, 131, 1314 125, 59, 121, 122, 118, 119, 37, 93, 119, 95, 1315 119, 130, 131, 132, 128, 89, 106, 128, 108, 128, 1316 121, 122, 123, 124, 125, 126, 118, 119, 59, 60, 1317 61, 62, 63, 134, 135, 121, 37, 209, 273, 125, 1318 92, 93, 37, 95, 130, 131, 37, 92, 93, 92, 1319 93, 125, 275, 129, 106, 37, 108, 143, 144, 118, 1320 119, 56, 57, 58, 133, 56, 57, 58, 37, 121, 1321 126, 59, 118, 119, 118, 119, 208, 128, 130, 131, 1322 118, 119, 128, 59, 209, 130, 131, 130, 131, 120, 1323 128, 143, 144, 64, 65, 133, 170, 61, 129, 128, 1324 174, 175, 176, 177, 178, 179, 180, 181, 125, 126, 1325 126, 185, 186, 64, 65, 123, 124, 125, 126, 263, 1326 264, 37, 208, 209, 64, 65, 37, 37, 37, 37, 1327 37, 37, 37, 4, 129, 130, 131, 132, 129, 130, 1328 131, 132, 128, 4, 3, 3, 47, 37, 2, 134, 1329 121, 122, 123, 124, 125, 126, 208, 209, -1, 56, 1330 57, 58, 223, 208, 209, 208, 209, 64, 65, 166, 1331 -1, 122, 123, 124, 125, 126, 0, 263, 264, -1, 1332 -1, -1, -1, 123, 124, 125, 126, 11, 12, -1, 1333 -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 1334 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 1335 34, 263, 264, 37, 38, 39, 40, 41, 42, 43, 1336 44, 45, -1, -1, 121, 122, 123, 124, 125, 126, 1337 -1, 55, -1, 130, 131, 132, -1, -1, -1, -1, 1338 -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, 1339 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 1340 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 1341 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 1342 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 1343 114, 115, 116, 117, -1, -1, 120, -1, -1, -1, 1344 124, -1, 11, 12, -1, 129, 15, 16, 17, 18, 1345 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 1346 29, 30, 31, 32, 33, 34, -1, -1, 37, 38, 1347 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, 1348 -1, -1, -1, -1, -1, -1, 55, -1, -1, -1, 1349 59, 60, 61, 62, 63, -1, -1, 66, 67, 68, 1350 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 1351 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 1352 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 1353 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 1354 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 1355 -1, 120, -1, -1, -1, 124, -1, 11, 12, -1, 1356 129, 15, 16, 17, 18, 19, 20, 21, 22, 23, 1357 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 1358 34, -1, -1, 37, 38, 39, 40, 41, 42, 43, 1359 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, 1360 -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, 1361 -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, 1362 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 1363 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 1364 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 1365 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 1366 114, 115, 116, 117, -1, -1, 120, -1, -1, -1, 1367 124, -1, -1, -1, -1, 129, 16, 17, 18, 19, 1368 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 1369 30, 31, 32, 33, 34, -1, -1, 37, -1, -1, 1370 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1371 -1, -1, -1, -1, -1, 55, -1, -1, -1, -1, 1372 -1, -1, -1, -1, -1, -1, 66, 67, 68, 69, 1373 70, -1, -1, -1, -1, 75, 76, 77, 78, 79, 1374 80, 81, 82, 83, 84, 85, 86, 87, 88, 3, 1375 4, 5, 6, 7, -1, 9, 10, -1, -1, 13, 1376 14, -1, -1, 103, -1, -1, -1, -1, -1, -1, 1377 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1378 -1, 35, 36, -1, 124, -1, -1, -1, -1, 129, 1379 -1, -1, 46, 47, 48, 49, 50, 51, 52, 53, 1380 54 1381 }; 1382 1383 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 1384 symbol of state STATE-NUM. */ 1385 static const yytype_uint8 yystos[] = 1386 { 1387 0, 137, 138, 0, 11, 12, 15, 16, 17, 18, 1388 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 1389 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 1390 41, 42, 43, 44, 45, 55, 66, 67, 68, 69, 1391 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 1392 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 1393 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 1394 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 1395 110, 111, 112, 113, 114, 115, 116, 117, 120, 124, 1396 129, 139, 144, 145, 148, 149, 150, 151, 155, 156, 1397 157, 167, 168, 170, 171, 172, 173, 177, 178, 37, 1398 37, 37, 59, 59, 37, 37, 37, 59, 163, 59, 1399 164, 145, 170, 170, 170, 145, 155, 167, 118, 119, 1400 140, 141, 148, 139, 168, 170, 59, 60, 61, 62, 1401 63, 142, 143, 144, 145, 170, 3, 4, 5, 6, 1402 7, 9, 10, 13, 14, 35, 36, 46, 47, 48, 1403 49, 50, 51, 52, 53, 54, 152, 153, 154, 158, 1404 133, 56, 57, 58, 64, 65, 121, 122, 123, 124, 1405 125, 126, 130, 131, 132, 165, 166, 37, 145, 165, 1406 166, 174, 175, 37, 145, 165, 166, 179, 180, 121, 1407 122, 130, 131, 132, 169, 170, 167, 142, 144, 145, 1408 148, 170, 142, 148, 128, 128, 128, 8, 126, 126, 1409 142, 143, 146, 147, 170, 118, 119, 118, 119, 37, 1410 59, 159, 59, 161, 37, 59, 162, 153, 167, 167, 1411 167, 167, 167, 167, 167, 167, 167, 167, 167, 175, 1412 176, 37, 37, 180, 181, 37, 37, 37, 170, 61, 1413 37, 37, 128, 140, 141, 4, 4, 3, 3, 47, 1414 134, 135, 128, 141, 128, 141, 142, 142, 37, 59, 1415 160, 37, 175, 180, 134 1416 }; 1417 1418 #define yyerrok (yyerrstatus = 0) 1419 #define yyclearin (yychar = YYEMPTY) 1420 #define YYEMPTY (-2) 1421 #define YYEOF 0 1422 1423 #define YYACCEPT goto yyacceptlab 1424 #define YYABORT goto yyabortlab 1425 #define YYERROR goto yyerrorlab 1426 1427 1428 /* Like YYERROR except do call yyerror. This remains here temporarily 1429 to ease the transition to the new meaning of YYERROR, for GCC. 1430 Once GCC version 2 has supplanted version 1, this can go. However, 1431 YYFAIL appears to be in use. Nevertheless, it is formally deprecated 1432 in Bison 2.4.2's NEWS entry, where a plan to phase it out is 1433 discussed. */ 1434 1435 #define YYFAIL goto yyerrlab 1436 #if defined YYFAIL 1437 /* This is here to suppress warnings from the GCC cpp's 1438 -Wunused-macros. Normally we don't worry about that warning, but 1439 some users do, and we want to make it easy for users to remove 1440 YYFAIL uses, which will produce warnings from Bison 2.5. */ 1441 #endif 1442 1443 #define YYRECOVERING() (!!yyerrstatus) 1444 1445 #define YYBACKUP(Token, Value) \ 1446 do \ 1447 if (yychar == YYEMPTY && yylen == 1) \ 1448 { \ 1449 yychar = (Token); \ 1450 yylval = (Value); \ 1451 YYPOPSTACK (1); \ 1452 goto yybackup; \ 1453 } \ 1454 else \ 1455 { \ 1456 yyerror (YY_("syntax error: cannot back up")); \ 1457 YYERROR; \ 1458 } \ 1459 while (YYID (0)) 1460 1461 1462 #define YYTERROR 1 1463 #define YYERRCODE 256 1464 1465 1466 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 1467 If N is 0, then set CURRENT to the empty location which ends 1468 the previous symbol: RHS[0] (always defined). */ 1469 1470 #define YYRHSLOC(Rhs, K) ((Rhs)[K]) 1471 #ifndef YYLLOC_DEFAULT 1472 # define YYLLOC_DEFAULT(Current, Rhs, N) \ 1473 do \ 1474 if (YYID (N)) \ 1475 { \ 1476 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 1477 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 1478 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 1479 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 1480 } \ 1481 else \ 1482 { \ 1483 (Current).first_line = (Current).last_line = \ 1484 YYRHSLOC (Rhs, 0).last_line; \ 1485 (Current).first_column = (Current).last_column = \ 1486 YYRHSLOC (Rhs, 0).last_column; \ 1487 } \ 1488 while (YYID (0)) 1489 #endif 1490 1491 1492 /* This macro is provided for backward compatibility. */ 1493 1494 #ifndef YY_LOCATION_PRINT 1495 # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 1496 #endif 1497 1498 1499 /* YYLEX -- calling `yylex' with the right arguments. */ 1500 1501 #ifdef YYLEX_PARAM 1502 # define YYLEX yylex (YYLEX_PARAM) 1503 #else 1504 # define YYLEX yylex () 1505 #endif 1506 1507 /* Enable debugging if requested. */ 1508 #if YYDEBUG 1509 1510 # ifndef YYFPRINTF 1511 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 1512 # define YYFPRINTF fprintf 1513 # endif 1514 1515 # define YYDPRINTF(Args) \ 1516 do { \ 1517 if (yydebug) \ 1518 YYFPRINTF Args; \ 1519 } while (YYID (0)) 1520 1521 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 1522 do { \ 1523 if (yydebug) \ 1524 { \ 1525 YYFPRINTF (stderr, "%s ", Title); \ 1526 yy_symbol_print (stderr, \ 1527 Type, Value); \ 1528 YYFPRINTF (stderr, "\n"); \ 1529 } \ 1530 } while (YYID (0)) 1531 1532 1533 /*--------------------------------. 1534 | Print this symbol on YYOUTPUT. | 1535 `--------------------------------*/ 1536 1537 /*ARGSUSED*/ 1538 #if (defined __STDC__ || defined __C99__FUNC__ \ 1539 || defined __cplusplus || defined _MSC_VER) 1540 static void 1541 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 1542 #else 1543 static void 1544 yy_symbol_value_print (yyoutput, yytype, yyvaluep) 1545 FILE *yyoutput; 1546 int yytype; 1547 YYSTYPE const * const yyvaluep; 1548 #endif 1549 { 1550 if (!yyvaluep) 1551 return; 1552 # ifdef YYPRINT 1553 if (yytype < YYNTOKENS) 1554 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 1555 # else 1556 YYUSE (yyoutput); 1557 # endif 1558 switch (yytype) 1559 { 1560 default: 1561 break; 1562 } 1563 } 1564 1565 1566 /*--------------------------------. 1567 | Print this symbol on YYOUTPUT. | 1568 `--------------------------------*/ 1569 1570 #if (defined __STDC__ || defined __C99__FUNC__ \ 1571 || defined __cplusplus || defined _MSC_VER) 1572 static void 1573 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 1574 #else 1575 static void 1576 yy_symbol_print (yyoutput, yytype, yyvaluep) 1577 FILE *yyoutput; 1578 int yytype; 1579 YYSTYPE const * const yyvaluep; 1580 #endif 1581 { 1582 if (yytype < YYNTOKENS) 1583 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 1584 else 1585 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 1586 1587 yy_symbol_value_print (yyoutput, yytype, yyvaluep); 1588 YYFPRINTF (yyoutput, ")"); 1589 } 1590 1591 /*------------------------------------------------------------------. 1592 | yy_stack_print -- Print the state stack from its BOTTOM up to its | 1593 | TOP (included). | 1594 `------------------------------------------------------------------*/ 1595 1596 #if (defined __STDC__ || defined __C99__FUNC__ \ 1597 || defined __cplusplus || defined _MSC_VER) 1598 static void 1599 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) 1600 #else 1601 static void 1602 yy_stack_print (yybottom, yytop) 1603 yytype_int16 *yybottom; 1604 yytype_int16 *yytop; 1605 #endif 1606 { 1607 YYFPRINTF (stderr, "Stack now"); 1608 for (; yybottom <= yytop; yybottom++) 1609 { 1610 int yybot = *yybottom; 1611 YYFPRINTF (stderr, " %d", yybot); 1612 } 1613 YYFPRINTF (stderr, "\n"); 1614 } 1615 1616 # define YY_STACK_PRINT(Bottom, Top) \ 1617 do { \ 1618 if (yydebug) \ 1619 yy_stack_print ((Bottom), (Top)); \ 1620 } while (YYID (0)) 1621 1622 1623 /*------------------------------------------------. 1624 | Report that the YYRULE is going to be reduced. | 1625 `------------------------------------------------*/ 1626 1627 #if (defined __STDC__ || defined __C99__FUNC__ \ 1628 || defined __cplusplus || defined _MSC_VER) 1629 static void 1630 yy_reduce_print (YYSTYPE *yyvsp, int yyrule) 1631 #else 1632 static void 1633 yy_reduce_print (yyvsp, yyrule) 1634 YYSTYPE *yyvsp; 1635 int yyrule; 1636 #endif 1637 { 1638 int yynrhs = yyr2[yyrule]; 1639 int yyi; 1640 unsigned long int yylno = yyrline[yyrule]; 1641 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 1642 yyrule - 1, yylno); 1643 /* The symbols being reduced. */ 1644 for (yyi = 0; yyi < yynrhs; yyi++) 1645 { 1646 YYFPRINTF (stderr, " $%d = ", yyi + 1); 1647 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 1648 &(yyvsp[(yyi + 1) - (yynrhs)]) 1649 ); 1650 YYFPRINTF (stderr, "\n"); 1651 } 1652 } 1653 1654 # define YY_REDUCE_PRINT(Rule) \ 1655 do { \ 1656 if (yydebug) \ 1657 yy_reduce_print (yyvsp, Rule); \ 1658 } while (YYID (0)) 1659 1660 /* Nonzero means print parse trace. It is left uninitialized so that 1661 multiple parsers can coexist. */ 1662 int yydebug; 1663 #else /* !YYDEBUG */ 1664 # define YYDPRINTF(Args) 1665 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) 1666 # define YY_STACK_PRINT(Bottom, Top) 1667 # define YY_REDUCE_PRINT(Rule) 1668 #endif /* !YYDEBUG */ 1669 1670 1671 /* YYINITDEPTH -- initial size of the parser's stacks. */ 1672 #ifndef YYINITDEPTH 1673 # define YYINITDEPTH 200 1674 #endif 1675 1676 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1677 if the built-in stack extension method is used). 1678 1679 Do not make this value too large; the results are undefined if 1680 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1681 evaluated with infinite-precision integer arithmetic. */ 1682 1683 #ifndef YYMAXDEPTH 1684 # define YYMAXDEPTH 10000 1685 #endif 1686 1687 1688 #if YYERROR_VERBOSE 1689 1690 # ifndef yystrlen 1691 # if defined __GLIBC__ && defined _STRING_H 1692 # define yystrlen strlen 1693 # else 1694 /* Return the length of YYSTR. */ 1695 #if (defined __STDC__ || defined __C99__FUNC__ \ 1696 || defined __cplusplus || defined _MSC_VER) 1697 static YYSIZE_T 1698 yystrlen (const char *yystr) 1699 #else 1700 static YYSIZE_T 1701 yystrlen (yystr) 1702 const char *yystr; 1703 #endif 1704 { 1705 YYSIZE_T yylen; 1706 for (yylen = 0; yystr[yylen]; yylen++) 1707 continue; 1708 return yylen; 1709 } 1710 # endif 1711 # endif 1712 1713 # ifndef yystpcpy 1714 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 1715 # define yystpcpy stpcpy 1716 # else 1717 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 1718 YYDEST. */ 1719 #if (defined __STDC__ || defined __C99__FUNC__ \ 1720 || defined __cplusplus || defined _MSC_VER) 1721 static char * 1722 yystpcpy (char *yydest, const char *yysrc) 1723 #else 1724 static char * 1725 yystpcpy (yydest, yysrc) 1726 char *yydest; 1727 const char *yysrc; 1728 #endif 1729 { 1730 char *yyd = yydest; 1731 const char *yys = yysrc; 1732 1733 while ((*yyd++ = *yys++) != '\0') 1734 continue; 1735 1736 return yyd - 1; 1737 } 1738 # endif 1739 # endif 1740 1741 # ifndef yytnamerr 1742 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary 1743 quotes and backslashes, so that it's suitable for yyerror. The 1744 heuristic is that double-quoting is unnecessary unless the string 1745 contains an apostrophe, a comma, or backslash (other than 1746 backslash-backslash). YYSTR is taken from yytname. If YYRES is 1747 null, do not copy; instead, return the length of what the result 1748 would have been. */ 1749 static YYSIZE_T 1750 yytnamerr (char *yyres, const char *yystr) 1751 { 1752 if (*yystr == '"') 1753 { 1754 YYSIZE_T yyn = 0; 1755 char const *yyp = yystr; 1756 1757 for (;;) 1758 switch (*++yyp) 1759 { 1760 case '\'': 1761 case ',': 1762 goto do_not_strip_quotes; 1763 1764 case '\\': 1765 if (*++yyp != '\\') 1766 goto do_not_strip_quotes; 1767 /* Fall through. */ 1768 default: 1769 if (yyres) 1770 yyres[yyn] = *yyp; 1771 yyn++; 1772 break; 1773 1774 case '"': 1775 if (yyres) 1776 yyres[yyn] = '\0'; 1777 return yyn; 1778 } 1779 do_not_strip_quotes: ; 1780 } 1781 1782 if (! yyres) 1783 return yystrlen (yystr); 1784 1785 return yystpcpy (yyres, yystr) - yyres; 1786 } 1787 # endif 1788 1789 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message 1790 about the unexpected token YYTOKEN for the state stack whose top is 1791 YYSSP. 1792 1793 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is 1794 not large enough to hold the message. In that case, also set 1795 *YYMSG_ALLOC to the required number of bytes. Return 2 if the 1796 required number of bytes is too large to store. */ 1797 static int 1798 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, 1799 yytype_int16 *yyssp, int yytoken) 1800 { 1801 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); 1802 YYSIZE_T yysize = yysize0; 1803 YYSIZE_T yysize1; 1804 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 1805 /* Internationalized format string. */ 1806 const char *yyformat = 0; 1807 /* Arguments of yyformat. */ 1808 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 1809 /* Number of reported tokens (one for the "unexpected", one per 1810 "expected"). */ 1811 int yycount = 0; 1812 1813 /* There are many possibilities here to consider: 1814 - Assume YYFAIL is not used. It's too flawed to consider. See 1815 <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html> 1816 for details. YYERROR is fine as it does not invoke this 1817 function. 1818 - If this state is a consistent state with a default action, then 1819 the only way this function was invoked is if the default action 1820 is an error action. In that case, don't check for expected 1821 tokens because there are none. 1822 - The only way there can be no lookahead present (in yychar) is if 1823 this state is a consistent state with a default action. Thus, 1824 detecting the absence of a lookahead is sufficient to determine 1825 that there is no unexpected or expected token to report. In that 1826 case, just report a simple "syntax error". 1827 - Don't assume there isn't a lookahead just because this state is a 1828 consistent state with a default action. There might have been a 1829 previous inconsistent state, consistent state with a non-default 1830 action, or user semantic action that manipulated yychar. 1831 - Of course, the expected token list depends on states to have 1832 correct lookahead information, and it depends on the parser not 1833 to perform extra reductions after fetching a lookahead from the 1834 scanner and before detecting a syntax error. Thus, state merging 1835 (from LALR or IELR) and default reductions corrupt the expected 1836 token list. However, the list is correct for canonical LR with 1837 one exception: it will still contain any token that will not be 1838 accepted due to an error action in a later state. 1839 */ 1840 if (yytoken != YYEMPTY) 1841 { 1842 int yyn = yypact[*yyssp]; 1843 yyarg[yycount++] = yytname[yytoken]; 1844 if (!yypact_value_is_default (yyn)) 1845 { 1846 /* Start YYX at -YYN if negative to avoid negative indexes in 1847 YYCHECK. In other words, skip the first -YYN actions for 1848 this state because they are default actions. */ 1849 int yyxbegin = yyn < 0 ? -yyn : 0; 1850 /* Stay within bounds of both yycheck and yytname. */ 1851 int yychecklim = YYLAST - yyn + 1; 1852 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 1853 int yyx; 1854 1855 for (yyx = yyxbegin; yyx < yyxend; ++yyx) 1856 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR 1857 && !yytable_value_is_error (yytable[yyx + yyn])) 1858 { 1859 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 1860 { 1861 yycount = 1; 1862 yysize = yysize0; 1863 break; 1864 } 1865 yyarg[yycount++] = yytname[yyx]; 1866 yysize1 = yysize + yytnamerr (0, yytname[yyx]); 1867 if (! (yysize <= yysize1 1868 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 1869 return 2; 1870 yysize = yysize1; 1871 } 1872 } 1873 } 1874 1875 switch (yycount) 1876 { 1877 # define YYCASE_(N, S) \ 1878 case N: \ 1879 yyformat = S; \ 1880 break 1881 YYCASE_(0, YY_("syntax error")); 1882 YYCASE_(1, YY_("syntax error, unexpected %s")); 1883 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); 1884 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); 1885 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); 1886 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); 1887 # undef YYCASE_ 1888 } 1889 1890 yysize1 = yysize + yystrlen (yyformat); 1891 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 1892 return 2; 1893 yysize = yysize1; 1894 1895 if (*yymsg_alloc < yysize) 1896 { 1897 *yymsg_alloc = 2 * yysize; 1898 if (! (yysize <= *yymsg_alloc 1899 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) 1900 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; 1901 return 1; 1902 } 1903 1904 /* Avoid sprintf, as that infringes on the user's name space. 1905 Don't have undefined behavior even if the translation 1906 produced a string with the wrong number of "%s"s. */ 1907 { 1908 char *yyp = *yymsg; 1909 int yyi = 0; 1910 while ((*yyp = *yyformat) != '\0') 1911 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) 1912 { 1913 yyp += yytnamerr (yyp, yyarg[yyi++]); 1914 yyformat += 2; 1915 } 1916 else 1917 { 1918 yyp++; 1919 yyformat++; 1920 } 1921 } 1922 return 0; 1923 } 1924 #endif /* YYERROR_VERBOSE */ 1925 1926 /*-----------------------------------------------. 1927 | Release the memory associated to this symbol. | 1928 `-----------------------------------------------*/ 1929 1930 /*ARGSUSED*/ 1931 #if (defined __STDC__ || defined __C99__FUNC__ \ 1932 || defined __cplusplus || defined _MSC_VER) 1933 static void 1934 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) 1935 #else 1936 static void 1937 yydestruct (yymsg, yytype, yyvaluep) 1938 const char *yymsg; 1939 int yytype; 1940 YYSTYPE *yyvaluep; 1941 #endif 1942 { 1943 YYUSE (yyvaluep); 1944 1945 if (!yymsg) 1946 yymsg = "Deleting"; 1947 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 1948 1949 switch (yytype) 1950 { 1951 1952 default: 1953 break; 1954 } 1955 } 1956 1957 1958 /* Prevent warnings from -Wmissing-prototypes. */ 1959 #ifdef YYPARSE_PARAM 1960 #if defined __STDC__ || defined __cplusplus 1961 int yyparse (void *YYPARSE_PARAM); 1962 #else 1963 int yyparse (); 1964 #endif 1965 #else /* ! YYPARSE_PARAM */ 1966 #if defined __STDC__ || defined __cplusplus 1967 int yyparse (void); 1968 #else 1969 int yyparse (); 1970 #endif 1971 #endif /* ! YYPARSE_PARAM */ 1972 1973 1974 /* The lookahead symbol. */ 1975 int yychar; 1976 1977 /* The semantic value of the lookahead symbol. */ 1978 YYSTYPE yylval; 1979 1980 /* Number of syntax errors so far. */ 1981 int yynerrs; 1982 1983 1984 /*----------. 1985 | yyparse. | 1986 `----------*/ 1987 1988 #ifdef YYPARSE_PARAM 1989 #if (defined __STDC__ || defined __C99__FUNC__ \ 1990 || defined __cplusplus || defined _MSC_VER) 1991 int 1992 yyparse (void *YYPARSE_PARAM) 1993 #else 1994 int 1995 yyparse (YYPARSE_PARAM) 1996 void *YYPARSE_PARAM; 1997 #endif 1998 #else /* ! YYPARSE_PARAM */ 1999 #if (defined __STDC__ || defined __C99__FUNC__ \ 2000 || defined __cplusplus || defined _MSC_VER) 2001 int 2002 yyparse (void) 2003 #else 2004 int 2005 yyparse () 2006 2007 #endif 2008 #endif 2009 { 2010 int yystate; 2011 /* Number of tokens to shift before error messages enabled. */ 2012 int yyerrstatus; 2013 2014 /* The stacks and their tools: 2015 `yyss': related to states. 2016 `yyvs': related to semantic values. 2017 2018 Refer to the stacks thru separate pointers, to allow yyoverflow 2019 to reallocate them elsewhere. */ 2020 2021 /* The state stack. */ 2022 yytype_int16 yyssa[YYINITDEPTH]; 2023 yytype_int16 *yyss; 2024 yytype_int16 *yyssp; 2025 2026 /* The semantic value stack. */ 2027 YYSTYPE yyvsa[YYINITDEPTH]; 2028 YYSTYPE *yyvs; 2029 YYSTYPE *yyvsp; 2030 2031 YYSIZE_T yystacksize; 2032 2033 int yyn; 2034 int yyresult; 2035 /* Lookahead token as an internal (translated) token number. */ 2036 int yytoken; 2037 /* The variables used to return semantic value and location from the 2038 action routines. */ 2039 YYSTYPE yyval; 2040 2041 #if YYERROR_VERBOSE 2042 /* Buffer for error messages, and its allocated size. */ 2043 char yymsgbuf[128]; 2044 char *yymsg = yymsgbuf; 2045 YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 2046 #endif 2047 2048 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) 2049 2050 /* The number of symbols on the RHS of the reduced rule. 2051 Keep to zero when no symbol should be popped. */ 2052 int yylen = 0; 2053 2054 yytoken = 0; 2055 yyss = yyssa; 2056 yyvs = yyvsa; 2057 yystacksize = YYINITDEPTH; 2058 2059 YYDPRINTF ((stderr, "Starting parse\n")); 2060 2061 yystate = 0; 2062 yyerrstatus = 0; 2063 yynerrs = 0; 2064 yychar = YYEMPTY; /* Cause a token to be read. */ 2065 2066 /* Initialize stack pointers. 2067 Waste one element of value and location stack 2068 so that they stay on the same level as the state stack. 2069 The wasted elements are never initialized. */ 2070 yyssp = yyss; 2071 yyvsp = yyvs; 2072 2073 goto yysetstate; 2074 2075 /*------------------------------------------------------------. 2076 | yynewstate -- Push a new state, which is found in yystate. | 2077 `------------------------------------------------------------*/ 2078 yynewstate: 2079 /* In all cases, when you get here, the value and location stacks 2080 have just been pushed. So pushing a state here evens the stacks. */ 2081 yyssp++; 2082 2083 yysetstate: 2084 *yyssp = yystate; 2085 2086 if (yyss + yystacksize - 1 <= yyssp) 2087 { 2088 /* Get the current used size of the three stacks, in elements. */ 2089 YYSIZE_T yysize = yyssp - yyss + 1; 2090 2091 #ifdef yyoverflow 2092 { 2093 /* Give user a chance to reallocate the stack. Use copies of 2094 these so that the &'s don't force the real ones into 2095 memory. */ 2096 YYSTYPE *yyvs1 = yyvs; 2097 yytype_int16 *yyss1 = yyss; 2098 2099 /* Each stack pointer address is followed by the size of the 2100 data in use in that stack, in bytes. This used to be a 2101 conditional around just the two extra args, but that might 2102 be undefined if yyoverflow is a macro. */ 2103 yyoverflow (YY_("memory exhausted"), 2104 &yyss1, yysize * sizeof (*yyssp), 2105 &yyvs1, yysize * sizeof (*yyvsp), 2106 &yystacksize); 2107 2108 yyss = yyss1; 2109 yyvs = yyvs1; 2110 } 2111 #else /* no yyoverflow */ 2112 # ifndef YYSTACK_RELOCATE 2113 goto yyexhaustedlab; 2114 # else 2115 /* Extend the stack our own way. */ 2116 if (YYMAXDEPTH <= yystacksize) 2117 goto yyexhaustedlab; 2118 yystacksize *= 2; 2119 if (YYMAXDEPTH < yystacksize) 2120 yystacksize = YYMAXDEPTH; 2121 2122 { 2123 yytype_int16 *yyss1 = yyss; 2124 union yyalloc *yyptr = 2125 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 2126 if (! yyptr) 2127 goto yyexhaustedlab; 2128 YYSTACK_RELOCATE (yyss_alloc, yyss); 2129 YYSTACK_RELOCATE (yyvs_alloc, yyvs); 2130 # undef YYSTACK_RELOCATE 2131 if (yyss1 != yyssa) 2132 YYSTACK_FREE (yyss1); 2133 } 2134 # endif 2135 #endif /* no yyoverflow */ 2136 2137 yyssp = yyss + yysize - 1; 2138 yyvsp = yyvs + yysize - 1; 2139 2140 YYDPRINTF ((stderr, "Stack size increased to %lu\n", 2141 (unsigned long int) yystacksize)); 2142 2143 if (yyss + yystacksize - 1 <= yyssp) 2144 YYABORT; 2145 } 2146 2147 YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 2148 2149 if (yystate == YYFINAL) 2150 YYACCEPT; 2151 2152 goto yybackup; 2153 2154 /*-----------. 2155 | yybackup. | 2156 `-----------*/ 2157 yybackup: 2158 2159 /* Do appropriate processing given the current state. Read a 2160 lookahead token if we need one and don't already have one. */ 2161 2162 /* First try to decide what to do without reference to lookahead token. */ 2163 yyn = yypact[yystate]; 2164 if (yypact_value_is_default (yyn)) 2165 goto yydefault; 2166 2167 /* Not known => get a lookahead token if don't already have one. */ 2168 2169 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ 2170 if (yychar == YYEMPTY) 2171 { 2172 YYDPRINTF ((stderr, "Reading a token: ")); 2173 yychar = YYLEX; 2174 } 2175 2176 if (yychar <= YYEOF) 2177 { 2178 yychar = yytoken = YYEOF; 2179 YYDPRINTF ((stderr, "Now at end of input.\n")); 2180 } 2181 else 2182 { 2183 yytoken = YYTRANSLATE (yychar); 2184 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 2185 } 2186 2187 /* If the proper action on seeing token YYTOKEN is to reduce or to 2188 detect an error, take that action. */ 2189 yyn += yytoken; 2190 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 2191 goto yydefault; 2192 yyn = yytable[yyn]; 2193 if (yyn <= 0) 2194 { 2195 if (yytable_value_is_error (yyn)) 2196 goto yyerrlab; 2197 yyn = -yyn; 2198 goto yyreduce; 2199 } 2200 2201 /* Count tokens shifted since error; after three, turn off error 2202 status. */ 2203 if (yyerrstatus) 2204 yyerrstatus--; 2205 2206 /* Shift the lookahead token. */ 2207 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 2208 2209 /* Discard the shifted token. */ 2210 yychar = YYEMPTY; 2211 2212 yystate = yyn; 2213 *++yyvsp = yylval; 2214 2215 goto yynewstate; 2216 2217 2218 /*-----------------------------------------------------------. 2219 | yydefault -- do the default action for the current state. | 2220 `-----------------------------------------------------------*/ 2221 yydefault: 2222 yyn = yydefact[yystate]; 2223 if (yyn == 0) 2224 goto yyerrlab; 2225 goto yyreduce; 2226 2227 2228 /*-----------------------------. 2229 | yyreduce -- Do a reduction. | 2230 `-----------------------------*/ 2231 yyreduce: 2232 /* yyn is the number of a rule to reduce with. */ 2233 yylen = yyr2[yyn]; 2234 2235 /* If YYLEN is nonzero, implement the default value of the action: 2236 `$$ = $1'. 2237 2238 Otherwise, the following line sets YYVAL to garbage. 2239 This behavior is undocumented and Bison 2240 users should not rely upon it. Assigning to YYVAL 2241 unconditionally makes the parser a bit smaller, and it avoids a 2242 GCC warning that YYVAL may be used uninitialized. */ 2243 yyval = yyvsp[1-yylen]; 2244 2245 2246 YY_REDUCE_PRINT (yyn); 2247 switch (yyn) 2248 { 2249 case 2: 2250 2251 /* Line 1806 of yacc.c */ 2252 #line 317 "grammar.y" 2253 { 2254 finish_parse((yyvsp[(2) - (2)].blk).b); 2255 } 2256 break; 2257 2258 case 4: 2259 2260 /* Line 1806 of yacc.c */ 2261 #line 322 "grammar.y" 2262 { (yyval.blk).q = qerr; } 2263 break; 2264 2265 case 6: 2266 2267 /* Line 1806 of yacc.c */ 2268 #line 325 "grammar.y" 2269 { gen_and((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } 2270 break; 2271 2272 case 7: 2273 2274 /* Line 1806 of yacc.c */ 2275 #line 326 "grammar.y" 2276 { gen_and((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } 2277 break; 2278 2279 case 8: 2280 2281 /* Line 1806 of yacc.c */ 2282 #line 327 "grammar.y" 2283 { gen_or((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } 2284 break; 2285 2286 case 9: 2287 2288 /* Line 1806 of yacc.c */ 2289 #line 328 "grammar.y" 2290 { gen_or((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } 2291 break; 2292 2293 case 10: 2294 2295 /* Line 1806 of yacc.c */ 2296 #line 330 "grammar.y" 2297 { (yyval.blk) = (yyvsp[(0) - (1)].blk); } 2298 break; 2299 2300 case 11: 2301 2302 /* Line 1806 of yacc.c */ 2303 #line 332 "grammar.y" 2304 { (yyval.blk) = (yyvsp[(0) - (1)].blk); } 2305 break; 2306 2307 case 13: 2308 2309 /* Line 1806 of yacc.c */ 2310 #line 335 "grammar.y" 2311 { (yyval.blk).b = gen_ncode(NULL, (bpf_u_int32)(yyvsp[(1) - (1)].i), 2312 (yyval.blk).q = (yyvsp[(0) - (1)].blk).q); } 2313 break; 2314 2315 case 14: 2316 2317 /* Line 1806 of yacc.c */ 2318 #line 337 "grammar.y" 2319 { (yyval.blk) = (yyvsp[(2) - (3)].blk); } 2320 break; 2321 2322 case 15: 2323 2324 /* Line 1806 of yacc.c */ 2325 #line 339 "grammar.y" 2326 { (yyval.blk).b = gen_scode((yyvsp[(1) - (1)].s), (yyval.blk).q = (yyvsp[(0) - (1)].blk).q); } 2327 break; 2328 2329 case 16: 2330 2331 /* Line 1806 of yacc.c */ 2332 #line 340 "grammar.y" 2333 { (yyval.blk).b = gen_mcode((yyvsp[(1) - (3)].s), NULL, (yyvsp[(3) - (3)].i), 2334 (yyval.blk).q = (yyvsp[(0) - (3)].blk).q); } 2335 break; 2336 2337 case 17: 2338 2339 /* Line 1806 of yacc.c */ 2340 #line 342 "grammar.y" 2341 { (yyval.blk).b = gen_mcode((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].s), 0, 2342 (yyval.blk).q = (yyvsp[(0) - (3)].blk).q); } 2343 break; 2344 2345 case 18: 2346 2347 /* Line 1806 of yacc.c */ 2348 #line 344 "grammar.y" 2349 { 2350 /* Decide how to parse HID based on proto */ 2351 (yyval.blk).q = (yyvsp[(0) - (1)].blk).q; 2352 if ((yyval.blk).q.addr == Q_PORT) 2353 bpf_error("'port' modifier applied to ip host"); 2354 else if ((yyval.blk).q.addr == Q_PORTRANGE) 2355 bpf_error("'portrange' modifier applied to ip host"); 2356 else if ((yyval.blk).q.addr == Q_PROTO) 2357 bpf_error("'proto' modifier applied to ip host"); 2358 else if ((yyval.blk).q.addr == Q_PROTOCHAIN) 2359 bpf_error("'protochain' modifier applied to ip host"); 2360 (yyval.blk).b = gen_ncode((yyvsp[(1) - (1)].s), 0, (yyval.blk).q); 2361 } 2362 break; 2363 2364 case 19: 2365 2366 /* Line 1806 of yacc.c */ 2367 #line 357 "grammar.y" 2368 { 2369 #ifdef INET6 2370 (yyval.blk).b = gen_mcode6((yyvsp[(1) - (3)].s), NULL, (yyvsp[(3) - (3)].i), 2371 (yyval.blk).q = (yyvsp[(0) - (3)].blk).q); 2372 #else 2373 bpf_error("'ip6addr/prefixlen' not supported " 2374 "in this configuration"); 2375 #endif /*INET6*/ 2376 } 2377 break; 2378 2379 case 20: 2380 2381 /* Line 1806 of yacc.c */ 2382 #line 366 "grammar.y" 2383 { 2384 #ifdef INET6 2385 (yyval.blk).b = gen_mcode6((yyvsp[(1) - (1)].s), 0, 128, 2386 (yyval.blk).q = (yyvsp[(0) - (1)].blk).q); 2387 #else 2388 bpf_error("'ip6addr' not supported " 2389 "in this configuration"); 2390 #endif /*INET6*/ 2391 } 2392 break; 2393 2394 case 21: 2395 2396 /* Line 1806 of yacc.c */ 2397 #line 375 "grammar.y" 2398 { 2399 (yyval.blk).b = gen_ecode((yyvsp[(1) - (1)].e), (yyval.blk).q = (yyvsp[(0) - (1)].blk).q); 2400 /* 2401 * $1 was allocated by "pcap_ether_aton()", 2402 * so we must free it now that we're done 2403 * with it. 2404 */ 2405 free((yyvsp[(1) - (1)].e)); 2406 } 2407 break; 2408 2409 case 22: 2410 2411 /* Line 1806 of yacc.c */ 2412 #line 384 "grammar.y" 2413 { 2414 (yyval.blk).b = gen_acode((yyvsp[(1) - (1)].e), (yyval.blk).q = (yyvsp[(0) - (1)].blk).q); 2415 /* 2416 * $1 was allocated by "pcap_ether_aton()", 2417 * so we must free it now that we're done 2418 * with it. 2419 */ 2420 free((yyvsp[(1) - (1)].e)); 2421 } 2422 break; 2423 2424 case 23: 2425 2426 /* Line 1806 of yacc.c */ 2427 #line 393 "grammar.y" 2428 { gen_not((yyvsp[(2) - (2)].blk).b); (yyval.blk) = (yyvsp[(2) - (2)].blk); } 2429 break; 2430 2431 case 24: 2432 2433 /* Line 1806 of yacc.c */ 2434 #line 395 "grammar.y" 2435 { (yyval.blk) = (yyvsp[(0) - (1)].blk); } 2436 break; 2437 2438 case 25: 2439 2440 /* Line 1806 of yacc.c */ 2441 #line 397 "grammar.y" 2442 { (yyval.blk) = (yyvsp[(0) - (1)].blk); } 2443 break; 2444 2445 case 27: 2446 2447 /* Line 1806 of yacc.c */ 2448 #line 400 "grammar.y" 2449 { gen_and((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } 2450 break; 2451 2452 case 28: 2453 2454 /* Line 1806 of yacc.c */ 2455 #line 401 "grammar.y" 2456 { gen_or((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } 2457 break; 2458 2459 case 29: 2460 2461 /* Line 1806 of yacc.c */ 2462 #line 403 "grammar.y" 2463 { (yyval.blk).b = gen_ncode(NULL, (bpf_u_int32)(yyvsp[(1) - (1)].i), 2464 (yyval.blk).q = (yyvsp[(0) - (1)].blk).q); } 2465 break; 2466 2467 case 32: 2468 2469 /* Line 1806 of yacc.c */ 2470 #line 408 "grammar.y" 2471 { gen_not((yyvsp[(2) - (2)].blk).b); (yyval.blk) = (yyvsp[(2) - (2)].blk); } 2472 break; 2473 2474 case 33: 2475 2476 /* Line 1806 of yacc.c */ 2477 #line 410 "grammar.y" 2478 { QSET((yyval.blk).q, (yyvsp[(1) - (3)].i), (yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].i)); } 2479 break; 2480 2481 case 34: 2482 2483 /* Line 1806 of yacc.c */ 2484 #line 411 "grammar.y" 2485 { QSET((yyval.blk).q, (yyvsp[(1) - (2)].i), (yyvsp[(2) - (2)].i), Q_DEFAULT); } 2486 break; 2487 2488 case 35: 2489 2490 /* Line 1806 of yacc.c */ 2491 #line 412 "grammar.y" 2492 { QSET((yyval.blk).q, (yyvsp[(1) - (2)].i), Q_DEFAULT, (yyvsp[(2) - (2)].i)); } 2493 break; 2494 2495 case 36: 2496 2497 /* Line 1806 of yacc.c */ 2498 #line 413 "grammar.y" 2499 { QSET((yyval.blk).q, (yyvsp[(1) - (2)].i), Q_DEFAULT, Q_PROTO); } 2500 break; 2501 2502 case 37: 2503 2504 /* Line 1806 of yacc.c */ 2505 #line 414 "grammar.y" 2506 { QSET((yyval.blk).q, (yyvsp[(1) - (2)].i), Q_DEFAULT, Q_PROTOCHAIN); } 2507 break; 2508 2509 case 38: 2510 2511 /* Line 1806 of yacc.c */ 2512 #line 415 "grammar.y" 2513 { QSET((yyval.blk).q, (yyvsp[(1) - (2)].i), Q_DEFAULT, (yyvsp[(2) - (2)].i)); } 2514 break; 2515 2516 case 39: 2517 2518 /* Line 1806 of yacc.c */ 2519 #line 417 "grammar.y" 2520 { (yyval.blk) = (yyvsp[(2) - (2)].blk); } 2521 break; 2522 2523 case 40: 2524 2525 /* Line 1806 of yacc.c */ 2526 #line 418 "grammar.y" 2527 { (yyval.blk).b = (yyvsp[(2) - (3)].blk).b; (yyval.blk).q = (yyvsp[(1) - (3)].blk).q; } 2528 break; 2529 2530 case 41: 2531 2532 /* Line 1806 of yacc.c */ 2533 #line 419 "grammar.y" 2534 { (yyval.blk).b = gen_proto_abbrev((yyvsp[(1) - (1)].i)); (yyval.blk).q = qerr; } 2535 break; 2536 2537 case 42: 2538 2539 /* Line 1806 of yacc.c */ 2540 #line 420 "grammar.y" 2541 { (yyval.blk).b = gen_relation((yyvsp[(2) - (3)].i), (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a), 0); 2542 (yyval.blk).q = qerr; } 2543 break; 2544 2545 case 43: 2546 2547 /* Line 1806 of yacc.c */ 2548 #line 422 "grammar.y" 2549 { (yyval.blk).b = gen_relation((yyvsp[(2) - (3)].i), (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a), 1); 2550 (yyval.blk).q = qerr; } 2551 break; 2552 2553 case 44: 2554 2555 /* Line 1806 of yacc.c */ 2556 #line 424 "grammar.y" 2557 { (yyval.blk).b = (yyvsp[(1) - (1)].rblk); (yyval.blk).q = qerr; } 2558 break; 2559 2560 case 45: 2561 2562 /* Line 1806 of yacc.c */ 2563 #line 425 "grammar.y" 2564 { (yyval.blk).b = gen_atmtype_abbrev((yyvsp[(1) - (1)].i)); (yyval.blk).q = qerr; } 2565 break; 2566 2567 case 46: 2568 2569 /* Line 1806 of yacc.c */ 2570 #line 426 "grammar.y" 2571 { (yyval.blk).b = gen_atmmulti_abbrev((yyvsp[(1) - (1)].i)); (yyval.blk).q = qerr; } 2572 break; 2573 2574 case 47: 2575 2576 /* Line 1806 of yacc.c */ 2577 #line 427 "grammar.y" 2578 { (yyval.blk).b = (yyvsp[(2) - (2)].blk).b; (yyval.blk).q = qerr; } 2579 break; 2580 2581 case 48: 2582 2583 /* Line 1806 of yacc.c */ 2584 #line 428 "grammar.y" 2585 { (yyval.blk).b = gen_mtp2type_abbrev((yyvsp[(1) - (1)].i)); (yyval.blk).q = qerr; } 2586 break; 2587 2588 case 49: 2589 2590 /* Line 1806 of yacc.c */ 2591 #line 429 "grammar.y" 2592 { (yyval.blk).b = (yyvsp[(2) - (2)].blk).b; (yyval.blk).q = qerr; } 2593 break; 2594 2595 case 51: 2596 2597 /* Line 1806 of yacc.c */ 2598 #line 433 "grammar.y" 2599 { (yyval.i) = Q_DEFAULT; } 2600 break; 2601 2602 case 52: 2603 2604 /* Line 1806 of yacc.c */ 2605 #line 436 "grammar.y" 2606 { (yyval.i) = Q_SRC; } 2607 break; 2608 2609 case 53: 2610 2611 /* Line 1806 of yacc.c */ 2612 #line 437 "grammar.y" 2613 { (yyval.i) = Q_DST; } 2614 break; 2615 2616 case 54: 2617 2618 /* Line 1806 of yacc.c */ 2619 #line 438 "grammar.y" 2620 { (yyval.i) = Q_OR; } 2621 break; 2622 2623 case 55: 2624 2625 /* Line 1806 of yacc.c */ 2626 #line 439 "grammar.y" 2627 { (yyval.i) = Q_OR; } 2628 break; 2629 2630 case 56: 2631 2632 /* Line 1806 of yacc.c */ 2633 #line 440 "grammar.y" 2634 { (yyval.i) = Q_AND; } 2635 break; 2636 2637 case 57: 2638 2639 /* Line 1806 of yacc.c */ 2640 #line 441 "grammar.y" 2641 { (yyval.i) = Q_AND; } 2642 break; 2643 2644 case 58: 2645 2646 /* Line 1806 of yacc.c */ 2647 #line 442 "grammar.y" 2648 { (yyval.i) = Q_ADDR1; } 2649 break; 2650 2651 case 59: 2652 2653 /* Line 1806 of yacc.c */ 2654 #line 443 "grammar.y" 2655 { (yyval.i) = Q_ADDR2; } 2656 break; 2657 2658 case 60: 2659 2660 /* Line 1806 of yacc.c */ 2661 #line 444 "grammar.y" 2662 { (yyval.i) = Q_ADDR3; } 2663 break; 2664 2665 case 61: 2666 2667 /* Line 1806 of yacc.c */ 2668 #line 445 "grammar.y" 2669 { (yyval.i) = Q_ADDR4; } 2670 break; 2671 2672 case 62: 2673 2674 /* Line 1806 of yacc.c */ 2675 #line 446 "grammar.y" 2676 { (yyval.i) = Q_RA; } 2677 break; 2678 2679 case 63: 2680 2681 /* Line 1806 of yacc.c */ 2682 #line 447 "grammar.y" 2683 { (yyval.i) = Q_TA; } 2684 break; 2685 2686 case 64: 2687 2688 /* Line 1806 of yacc.c */ 2689 #line 450 "grammar.y" 2690 { (yyval.i) = Q_HOST; } 2691 break; 2692 2693 case 65: 2694 2695 /* Line 1806 of yacc.c */ 2696 #line 451 "grammar.y" 2697 { (yyval.i) = Q_NET; } 2698 break; 2699 2700 case 66: 2701 2702 /* Line 1806 of yacc.c */ 2703 #line 452 "grammar.y" 2704 { (yyval.i) = Q_PORT; } 2705 break; 2706 2707 case 67: 2708 2709 /* Line 1806 of yacc.c */ 2710 #line 453 "grammar.y" 2711 { (yyval.i) = Q_PORTRANGE; } 2712 break; 2713 2714 case 68: 2715 2716 /* Line 1806 of yacc.c */ 2717 #line 456 "grammar.y" 2718 { (yyval.i) = Q_GATEWAY; } 2719 break; 2720 2721 case 69: 2722 2723 /* Line 1806 of yacc.c */ 2724 #line 458 "grammar.y" 2725 { (yyval.i) = Q_LINK; } 2726 break; 2727 2728 case 70: 2729 2730 /* Line 1806 of yacc.c */ 2731 #line 459 "grammar.y" 2732 { (yyval.i) = Q_IP; } 2733 break; 2734 2735 case 71: 2736 2737 /* Line 1806 of yacc.c */ 2738 #line 460 "grammar.y" 2739 { (yyval.i) = Q_ARP; } 2740 break; 2741 2742 case 72: 2743 2744 /* Line 1806 of yacc.c */ 2745 #line 461 "grammar.y" 2746 { (yyval.i) = Q_RARP; } 2747 break; 2748 2749 case 73: 2750 2751 /* Line 1806 of yacc.c */ 2752 #line 462 "grammar.y" 2753 { (yyval.i) = Q_SCTP; } 2754 break; 2755 2756 case 74: 2757 2758 /* Line 1806 of yacc.c */ 2759 #line 463 "grammar.y" 2760 { (yyval.i) = Q_TCP; } 2761 break; 2762 2763 case 75: 2764 2765 /* Line 1806 of yacc.c */ 2766 #line 464 "grammar.y" 2767 { (yyval.i) = Q_UDP; } 2768 break; 2769 2770 case 76: 2771 2772 /* Line 1806 of yacc.c */ 2773 #line 465 "grammar.y" 2774 { (yyval.i) = Q_ICMP; } 2775 break; 2776 2777 case 77: 2778 2779 /* Line 1806 of yacc.c */ 2780 #line 466 "grammar.y" 2781 { (yyval.i) = Q_IGMP; } 2782 break; 2783 2784 case 78: 2785 2786 /* Line 1806 of yacc.c */ 2787 #line 467 "grammar.y" 2788 { (yyval.i) = Q_IGRP; } 2789 break; 2790 2791 case 79: 2792 2793 /* Line 1806 of yacc.c */ 2794 #line 468 "grammar.y" 2795 { (yyval.i) = Q_PIM; } 2796 break; 2797 2798 case 80: 2799 2800 /* Line 1806 of yacc.c */ 2801 #line 469 "grammar.y" 2802 { (yyval.i) = Q_VRRP; } 2803 break; 2804 2805 case 81: 2806 2807 /* Line 1806 of yacc.c */ 2808 #line 470 "grammar.y" 2809 { (yyval.i) = Q_CARP; } 2810 break; 2811 2812 case 82: 2813 2814 /* Line 1806 of yacc.c */ 2815 #line 471 "grammar.y" 2816 { (yyval.i) = Q_ATALK; } 2817 break; 2818 2819 case 83: 2820 2821 /* Line 1806 of yacc.c */ 2822 #line 472 "grammar.y" 2823 { (yyval.i) = Q_AARP; } 2824 break; 2825 2826 case 84: 2827 2828 /* Line 1806 of yacc.c */ 2829 #line 473 "grammar.y" 2830 { (yyval.i) = Q_DECNET; } 2831 break; 2832 2833 case 85: 2834 2835 /* Line 1806 of yacc.c */ 2836 #line 474 "grammar.y" 2837 { (yyval.i) = Q_LAT; } 2838 break; 2839 2840 case 86: 2841 2842 /* Line 1806 of yacc.c */ 2843 #line 475 "grammar.y" 2844 { (yyval.i) = Q_SCA; } 2845 break; 2846 2847 case 87: 2848 2849 /* Line 1806 of yacc.c */ 2850 #line 476 "grammar.y" 2851 { (yyval.i) = Q_MOPDL; } 2852 break; 2853 2854 case 88: 2855 2856 /* Line 1806 of yacc.c */ 2857 #line 477 "grammar.y" 2858 { (yyval.i) = Q_MOPRC; } 2859 break; 2860 2861 case 89: 2862 2863 /* Line 1806 of yacc.c */ 2864 #line 478 "grammar.y" 2865 { (yyval.i) = Q_IPV6; } 2866 break; 2867 2868 case 90: 2869 2870 /* Line 1806 of yacc.c */ 2871 #line 479 "grammar.y" 2872 { (yyval.i) = Q_ICMPV6; } 2873 break; 2874 2875 case 91: 2876 2877 /* Line 1806 of yacc.c */ 2878 #line 480 "grammar.y" 2879 { (yyval.i) = Q_AH; } 2880 break; 2881 2882 case 92: 2883 2884 /* Line 1806 of yacc.c */ 2885 #line 481 "grammar.y" 2886 { (yyval.i) = Q_ESP; } 2887 break; 2888 2889 case 93: 2890 2891 /* Line 1806 of yacc.c */ 2892 #line 482 "grammar.y" 2893 { (yyval.i) = Q_ISO; } 2894 break; 2895 2896 case 94: 2897 2898 /* Line 1806 of yacc.c */ 2899 #line 483 "grammar.y" 2900 { (yyval.i) = Q_ESIS; } 2901 break; 2902 2903 case 95: 2904 2905 /* Line 1806 of yacc.c */ 2906 #line 484 "grammar.y" 2907 { (yyval.i) = Q_ISIS; } 2908 break; 2909 2910 case 96: 2911 2912 /* Line 1806 of yacc.c */ 2913 #line 485 "grammar.y" 2914 { (yyval.i) = Q_ISIS_L1; } 2915 break; 2916 2917 case 97: 2918 2919 /* Line 1806 of yacc.c */ 2920 #line 486 "grammar.y" 2921 { (yyval.i) = Q_ISIS_L2; } 2922 break; 2923 2924 case 98: 2925 2926 /* Line 1806 of yacc.c */ 2927 #line 487 "grammar.y" 2928 { (yyval.i) = Q_ISIS_IIH; } 2929 break; 2930 2931 case 99: 2932 2933 /* Line 1806 of yacc.c */ 2934 #line 488 "grammar.y" 2935 { (yyval.i) = Q_ISIS_LSP; } 2936 break; 2937 2938 case 100: 2939 2940 /* Line 1806 of yacc.c */ 2941 #line 489 "grammar.y" 2942 { (yyval.i) = Q_ISIS_SNP; } 2943 break; 2944 2945 case 101: 2946 2947 /* Line 1806 of yacc.c */ 2948 #line 490 "grammar.y" 2949 { (yyval.i) = Q_ISIS_PSNP; } 2950 break; 2951 2952 case 102: 2953 2954 /* Line 1806 of yacc.c */ 2955 #line 491 "grammar.y" 2956 { (yyval.i) = Q_ISIS_CSNP; } 2957 break; 2958 2959 case 103: 2960 2961 /* Line 1806 of yacc.c */ 2962 #line 492 "grammar.y" 2963 { (yyval.i) = Q_CLNP; } 2964 break; 2965 2966 case 104: 2967 2968 /* Line 1806 of yacc.c */ 2969 #line 493 "grammar.y" 2970 { (yyval.i) = Q_STP; } 2971 break; 2972 2973 case 105: 2974 2975 /* Line 1806 of yacc.c */ 2976 #line 494 "grammar.y" 2977 { (yyval.i) = Q_IPX; } 2978 break; 2979 2980 case 106: 2981 2982 /* Line 1806 of yacc.c */ 2983 #line 495 "grammar.y" 2984 { (yyval.i) = Q_NETBEUI; } 2985 break; 2986 2987 case 107: 2988 2989 /* Line 1806 of yacc.c */ 2990 #line 496 "grammar.y" 2991 { (yyval.i) = Q_RADIO; } 2992 break; 2993 2994 case 108: 2995 2996 /* Line 1806 of yacc.c */ 2997 #line 498 "grammar.y" 2998 { (yyval.rblk) = gen_broadcast((yyvsp[(1) - (2)].i)); } 2999 break; 3000 3001 case 109: 3002 3003 /* Line 1806 of yacc.c */ 3004 #line 499 "grammar.y" 3005 { (yyval.rblk) = gen_multicast((yyvsp[(1) - (2)].i)); } 3006 break; 3007 3008 case 110: 3009 3010 /* Line 1806 of yacc.c */ 3011 #line 500 "grammar.y" 3012 { (yyval.rblk) = gen_less((yyvsp[(2) - (2)].i)); } 3013 break; 3014 3015 case 111: 3016 3017 /* Line 1806 of yacc.c */ 3018 #line 501 "grammar.y" 3019 { (yyval.rblk) = gen_greater((yyvsp[(2) - (2)].i)); } 3020 break; 3021 3022 case 112: 3023 3024 /* Line 1806 of yacc.c */ 3025 #line 502 "grammar.y" 3026 { (yyval.rblk) = gen_byteop((yyvsp[(3) - (4)].i), (yyvsp[(2) - (4)].i), (yyvsp[(4) - (4)].i)); } 3027 break; 3028 3029 case 113: 3030 3031 /* Line 1806 of yacc.c */ 3032 #line 503 "grammar.y" 3033 { (yyval.rblk) = gen_inbound(0); } 3034 break; 3035 3036 case 114: 3037 3038 /* Line 1806 of yacc.c */ 3039 #line 504 "grammar.y" 3040 { (yyval.rblk) = gen_inbound(1); } 3041 break; 3042 3043 case 115: 3044 3045 /* Line 1806 of yacc.c */ 3046 #line 505 "grammar.y" 3047 { (yyval.rblk) = gen_vlan((yyvsp[(2) - (2)].i)); } 3048 break; 3049 3050 case 116: 3051 3052 /* Line 1806 of yacc.c */ 3053 #line 506 "grammar.y" 3054 { (yyval.rblk) = gen_vlan(-1); } 3055 break; 3056 3057 case 117: 3058 3059 /* Line 1806 of yacc.c */ 3060 #line 507 "grammar.y" 3061 { (yyval.rblk) = gen_mpls((yyvsp[(2) - (2)].i)); } 3062 break; 3063 3064 case 118: 3065 3066 /* Line 1806 of yacc.c */ 3067 #line 508 "grammar.y" 3068 { (yyval.rblk) = gen_mpls(-1); } 3069 break; 3070 3071 case 119: 3072 3073 /* Line 1806 of yacc.c */ 3074 #line 509 "grammar.y" 3075 { (yyval.rblk) = gen_pppoed(); } 3076 break; 3077 3078 case 120: 3079 3080 /* Line 1806 of yacc.c */ 3081 #line 510 "grammar.y" 3082 { (yyval.rblk) = gen_pppoes((yyvsp[(2) - (2)].i)); } 3083 break; 3084 3085 case 121: 3086 3087 /* Line 1806 of yacc.c */ 3088 #line 511 "grammar.y" 3089 { (yyval.rblk) = gen_pppoes(-1); } 3090 break; 3091 3092 case 122: 3093 3094 /* Line 1806 of yacc.c */ 3095 #line 512 "grammar.y" 3096 { (yyval.rblk) = (yyvsp[(1) - (1)].rblk); } 3097 break; 3098 3099 case 123: 3100 3101 /* Line 1806 of yacc.c */ 3102 #line 513 "grammar.y" 3103 { (yyval.rblk) = (yyvsp[(2) - (2)].rblk); } 3104 break; 3105 3106 case 124: 3107 3108 /* Line 1806 of yacc.c */ 3109 #line 516 "grammar.y" 3110 { (yyval.rblk) = gen_pf_ifname((yyvsp[(2) - (2)].s)); } 3111 break; 3112 3113 case 125: 3114 3115 /* Line 1806 of yacc.c */ 3116 #line 517 "grammar.y" 3117 { (yyval.rblk) = gen_pf_ruleset((yyvsp[(2) - (2)].s)); } 3118 break; 3119 3120 case 126: 3121 3122 /* Line 1806 of yacc.c */ 3123 #line 518 "grammar.y" 3124 { (yyval.rblk) = gen_pf_rnr((yyvsp[(2) - (2)].i)); } 3125 break; 3126 3127 case 127: 3128 3129 /* Line 1806 of yacc.c */ 3130 #line 519 "grammar.y" 3131 { (yyval.rblk) = gen_pf_srnr((yyvsp[(2) - (2)].i)); } 3132 break; 3133 3134 case 128: 3135 3136 /* Line 1806 of yacc.c */ 3137 #line 520 "grammar.y" 3138 { (yyval.rblk) = gen_pf_reason((yyvsp[(2) - (2)].i)); } 3139 break; 3140 3141 case 129: 3142 3143 /* Line 1806 of yacc.c */ 3144 #line 521 "grammar.y" 3145 { (yyval.rblk) = gen_pf_action((yyvsp[(2) - (2)].i)); } 3146 break; 3147 3148 case 130: 3149 3150 /* Line 1806 of yacc.c */ 3151 #line 525 "grammar.y" 3152 { (yyval.rblk) = gen_p80211_type((yyvsp[(2) - (4)].i) | (yyvsp[(4) - (4)].i), 3153 IEEE80211_FC0_TYPE_MASK | 3154 IEEE80211_FC0_SUBTYPE_MASK); 3155 } 3156 break; 3157 3158 case 131: 3159 3160 /* Line 1806 of yacc.c */ 3161 #line 529 "grammar.y" 3162 { (yyval.rblk) = gen_p80211_type((yyvsp[(2) - (2)].i), 3163 IEEE80211_FC0_TYPE_MASK); 3164 } 3165 break; 3166 3167 case 132: 3168 3169 /* Line 1806 of yacc.c */ 3170 #line 532 "grammar.y" 3171 { (yyval.rblk) = gen_p80211_type((yyvsp[(2) - (2)].i), 3172 IEEE80211_FC0_TYPE_MASK | 3173 IEEE80211_FC0_SUBTYPE_MASK); 3174 } 3175 break; 3176 3177 case 133: 3178 3179 /* Line 1806 of yacc.c */ 3180 #line 536 "grammar.y" 3181 { (yyval.rblk) = gen_p80211_fcdir((yyvsp[(2) - (2)].i)); } 3182 break; 3183 3184 case 135: 3185 3186 /* Line 1806 of yacc.c */ 3187 #line 540 "grammar.y" 3188 { (yyval.i) = str2tok((yyvsp[(1) - (1)].s), ieee80211_types); 3189 if ((yyval.i) == -1) 3190 bpf_error("unknown 802.11 type name"); 3191 } 3192 break; 3193 3194 case 137: 3195 3196 /* Line 1806 of yacc.c */ 3197 #line 547 "grammar.y" 3198 { const struct tok *types = NULL; 3199 int i; 3200 for (i = 0;; i++) { 3201 if (ieee80211_type_subtypes[i].tok == NULL) { 3202 /* Ran out of types */ 3203 bpf_error("unknown 802.11 type"); 3204 break; 3205 } 3206 if ((yyvsp[(-1) - (1)].i) == ieee80211_type_subtypes[i].type) { 3207 types = ieee80211_type_subtypes[i].tok; 3208 break; 3209 } 3210 } 3211 3212 (yyval.i) = str2tok((yyvsp[(1) - (1)].s), types); 3213 if ((yyval.i) == -1) 3214 bpf_error("unknown 802.11 subtype name"); 3215 } 3216 break; 3217 3218 case 138: 3219 3220 /* Line 1806 of yacc.c */ 3221 #line 567 "grammar.y" 3222 { int i; 3223 for (i = 0;; i++) { 3224 if (ieee80211_type_subtypes[i].tok == NULL) { 3225 /* Ran out of types */ 3226 bpf_error("unknown 802.11 type name"); 3227 break; 3228 } 3229 (yyval.i) = str2tok((yyvsp[(1) - (1)].s), ieee80211_type_subtypes[i].tok); 3230 if ((yyval.i) != -1) { 3231 (yyval.i) |= ieee80211_type_subtypes[i].type; 3232 break; 3233 } 3234 } 3235 } 3236 break; 3237 3238 case 140: 3239 3240 /* Line 1806 of yacc.c */ 3241 #line 584 "grammar.y" 3242 { if (pcap_strcasecmp((yyvsp[(1) - (1)].s), "nods") == 0) 3243 (yyval.i) = IEEE80211_FC1_DIR_NODS; 3244 else if (pcap_strcasecmp((yyvsp[(1) - (1)].s), "tods") == 0) 3245 (yyval.i) = IEEE80211_FC1_DIR_TODS; 3246 else if (pcap_strcasecmp((yyvsp[(1) - (1)].s), "fromds") == 0) 3247 (yyval.i) = IEEE80211_FC1_DIR_FROMDS; 3248 else if (pcap_strcasecmp((yyvsp[(1) - (1)].s), "dstods") == 0) 3249 (yyval.i) = IEEE80211_FC1_DIR_DSTODS; 3250 else 3251 bpf_error("unknown 802.11 direction"); 3252 } 3253 break; 3254 3255 case 141: 3256 3257 /* Line 1806 of yacc.c */ 3258 #line 597 "grammar.y" 3259 { (yyval.i) = (yyvsp[(1) - (1)].i); } 3260 break; 3261 3262 case 142: 3263 3264 /* Line 1806 of yacc.c */ 3265 #line 598 "grammar.y" 3266 { (yyval.i) = pfreason_to_num((yyvsp[(1) - (1)].s)); } 3267 break; 3268 3269 case 143: 3270 3271 /* Line 1806 of yacc.c */ 3272 #line 601 "grammar.y" 3273 { (yyval.i) = pfaction_to_num((yyvsp[(1) - (1)].s)); } 3274 break; 3275 3276 case 144: 3277 3278 /* Line 1806 of yacc.c */ 3279 #line 604 "grammar.y" 3280 { (yyval.i) = BPF_JGT; } 3281 break; 3282 3283 case 145: 3284 3285 /* Line 1806 of yacc.c */ 3286 #line 605 "grammar.y" 3287 { (yyval.i) = BPF_JGE; } 3288 break; 3289 3290 case 146: 3291 3292 /* Line 1806 of yacc.c */ 3293 #line 606 "grammar.y" 3294 { (yyval.i) = BPF_JEQ; } 3295 break; 3296 3297 case 147: 3298 3299 /* Line 1806 of yacc.c */ 3300 #line 608 "grammar.y" 3301 { (yyval.i) = BPF_JGT; } 3302 break; 3303 3304 case 148: 3305 3306 /* Line 1806 of yacc.c */ 3307 #line 609 "grammar.y" 3308 { (yyval.i) = BPF_JGE; } 3309 break; 3310 3311 case 149: 3312 3313 /* Line 1806 of yacc.c */ 3314 #line 610 "grammar.y" 3315 { (yyval.i) = BPF_JEQ; } 3316 break; 3317 3318 case 150: 3319 3320 /* Line 1806 of yacc.c */ 3321 #line 612 "grammar.y" 3322 { (yyval.a) = gen_loadi((yyvsp[(1) - (1)].i)); } 3323 break; 3324 3325 case 152: 3326 3327 /* Line 1806 of yacc.c */ 3328 #line 615 "grammar.y" 3329 { (yyval.a) = gen_load((yyvsp[(1) - (4)].i), (yyvsp[(3) - (4)].a), 1); } 3330 break; 3331 3332 case 153: 3333 3334 /* Line 1806 of yacc.c */ 3335 #line 616 "grammar.y" 3336 { (yyval.a) = gen_load((yyvsp[(1) - (6)].i), (yyvsp[(3) - (6)].a), (yyvsp[(5) - (6)].i)); } 3337 break; 3338 3339 case 154: 3340 3341 /* Line 1806 of yacc.c */ 3342 #line 617 "grammar.y" 3343 { (yyval.a) = gen_arth(BPF_ADD, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } 3344 break; 3345 3346 case 155: 3347 3348 /* Line 1806 of yacc.c */ 3349 #line 618 "grammar.y" 3350 { (yyval.a) = gen_arth(BPF_SUB, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } 3351 break; 3352 3353 case 156: 3354 3355 /* Line 1806 of yacc.c */ 3356 #line 619 "grammar.y" 3357 { (yyval.a) = gen_arth(BPF_MUL, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } 3358 break; 3359 3360 case 157: 3361 3362 /* Line 1806 of yacc.c */ 3363 #line 620 "grammar.y" 3364 { (yyval.a) = gen_arth(BPF_DIV, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } 3365 break; 3366 3367 case 158: 3368 3369 /* Line 1806 of yacc.c */ 3370 #line 621 "grammar.y" 3371 { (yyval.a) = gen_arth(BPF_AND, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } 3372 break; 3373 3374 case 159: 3375 3376 /* Line 1806 of yacc.c */ 3377 #line 622 "grammar.y" 3378 { (yyval.a) = gen_arth(BPF_OR, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } 3379 break; 3380 3381 case 160: 3382 3383 /* Line 1806 of yacc.c */ 3384 #line 623 "grammar.y" 3385 { (yyval.a) = gen_arth(BPF_LSH, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } 3386 break; 3387 3388 case 161: 3389 3390 /* Line 1806 of yacc.c */ 3391 #line 624 "grammar.y" 3392 { (yyval.a) = gen_arth(BPF_RSH, (yyvsp[(1) - (3)].a), (yyvsp[(3) - (3)].a)); } 3393 break; 3394 3395 case 162: 3396 3397 /* Line 1806 of yacc.c */ 3398 #line 625 "grammar.y" 3399 { (yyval.a) = gen_neg((yyvsp[(2) - (2)].a)); } 3400 break; 3401 3402 case 163: 3403 3404 /* Line 1806 of yacc.c */ 3405 #line 626 "grammar.y" 3406 { (yyval.a) = (yyvsp[(2) - (3)].a); } 3407 break; 3408 3409 case 164: 3410 3411 /* Line 1806 of yacc.c */ 3412 #line 627 "grammar.y" 3413 { (yyval.a) = gen_loadlen(); } 3414 break; 3415 3416 case 165: 3417 3418 /* Line 1806 of yacc.c */ 3419 #line 629 "grammar.y" 3420 { (yyval.i) = '&'; } 3421 break; 3422 3423 case 166: 3424 3425 /* Line 1806 of yacc.c */ 3426 #line 630 "grammar.y" 3427 { (yyval.i) = '|'; } 3428 break; 3429 3430 case 167: 3431 3432 /* Line 1806 of yacc.c */ 3433 #line 631 "grammar.y" 3434 { (yyval.i) = '<'; } 3435 break; 3436 3437 case 168: 3438 3439 /* Line 1806 of yacc.c */ 3440 #line 632 "grammar.y" 3441 { (yyval.i) = '>'; } 3442 break; 3443 3444 case 169: 3445 3446 /* Line 1806 of yacc.c */ 3447 #line 633 "grammar.y" 3448 { (yyval.i) = '='; } 3449 break; 3450 3451 case 171: 3452 3453 /* Line 1806 of yacc.c */ 3454 #line 636 "grammar.y" 3455 { (yyval.i) = (yyvsp[(2) - (3)].i); } 3456 break; 3457 3458 case 172: 3459 3460 /* Line 1806 of yacc.c */ 3461 #line 638 "grammar.y" 3462 { (yyval.i) = A_LANE; } 3463 break; 3464 3465 case 173: 3466 3467 /* Line 1806 of yacc.c */ 3468 #line 639 "grammar.y" 3469 { (yyval.i) = A_LLC; } 3470 break; 3471 3472 case 174: 3473 3474 /* Line 1806 of yacc.c */ 3475 #line 640 "grammar.y" 3476 { (yyval.i) = A_METAC; } 3477 break; 3478 3479 case 175: 3480 3481 /* Line 1806 of yacc.c */ 3482 #line 641 "grammar.y" 3483 { (yyval.i) = A_BCC; } 3484 break; 3485 3486 case 176: 3487 3488 /* Line 1806 of yacc.c */ 3489 #line 642 "grammar.y" 3490 { (yyval.i) = A_OAMF4EC; } 3491 break; 3492 3493 case 177: 3494 3495 /* Line 1806 of yacc.c */ 3496 #line 643 "grammar.y" 3497 { (yyval.i) = A_OAMF4SC; } 3498 break; 3499 3500 case 178: 3501 3502 /* Line 1806 of yacc.c */ 3503 #line 644 "grammar.y" 3504 { (yyval.i) = A_SC; } 3505 break; 3506 3507 case 179: 3508 3509 /* Line 1806 of yacc.c */ 3510 #line 645 "grammar.y" 3511 { (yyval.i) = A_ILMIC; } 3512 break; 3513 3514 case 180: 3515 3516 /* Line 1806 of yacc.c */ 3517 #line 647 "grammar.y" 3518 { (yyval.i) = A_OAM; } 3519 break; 3520 3521 case 181: 3522 3523 /* Line 1806 of yacc.c */ 3524 #line 648 "grammar.y" 3525 { (yyval.i) = A_OAMF4; } 3526 break; 3527 3528 case 182: 3529 3530 /* Line 1806 of yacc.c */ 3531 #line 649 "grammar.y" 3532 { (yyval.i) = A_CONNECTMSG; } 3533 break; 3534 3535 case 183: 3536 3537 /* Line 1806 of yacc.c */ 3538 #line 650 "grammar.y" 3539 { (yyval.i) = A_METACONNECT; } 3540 break; 3541 3542 case 184: 3543 3544 /* Line 1806 of yacc.c */ 3545 #line 653 "grammar.y" 3546 { (yyval.blk).atmfieldtype = A_VPI; } 3547 break; 3548 3549 case 185: 3550 3551 /* Line 1806 of yacc.c */ 3552 #line 654 "grammar.y" 3553 { (yyval.blk).atmfieldtype = A_VCI; } 3554 break; 3555 3556 case 187: 3557 3558 /* Line 1806 of yacc.c */ 3559 #line 657 "grammar.y" 3560 { (yyval.blk).b = gen_atmfield_code((yyvsp[(0) - (2)].blk).atmfieldtype, (bpf_int32)(yyvsp[(2) - (2)].i), (bpf_u_int32)(yyvsp[(1) - (2)].i), 0); } 3561 break; 3562 3563 case 188: 3564 3565 /* Line 1806 of yacc.c */ 3566 #line 658 "grammar.y" 3567 { (yyval.blk).b = gen_atmfield_code((yyvsp[(0) - (2)].blk).atmfieldtype, (bpf_int32)(yyvsp[(2) - (2)].i), (bpf_u_int32)(yyvsp[(1) - (2)].i), 1); } 3568 break; 3569 3570 case 189: 3571 3572 /* Line 1806 of yacc.c */ 3573 #line 659 "grammar.y" 3574 { (yyval.blk).b = (yyvsp[(2) - (3)].blk).b; (yyval.blk).q = qerr; } 3575 break; 3576 3577 case 190: 3578 3579 /* Line 1806 of yacc.c */ 3580 #line 661 "grammar.y" 3581 { 3582 (yyval.blk).atmfieldtype = (yyvsp[(0) - (1)].blk).atmfieldtype; 3583 if ((yyval.blk).atmfieldtype == A_VPI || 3584 (yyval.blk).atmfieldtype == A_VCI) 3585 (yyval.blk).b = gen_atmfield_code((yyval.blk).atmfieldtype, (bpf_int32) (yyvsp[(1) - (1)].i), BPF_JEQ, 0); 3586 } 3587 break; 3588 3589 case 192: 3590 3591 /* Line 1806 of yacc.c */ 3592 #line 669 "grammar.y" 3593 { gen_or((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } 3594 break; 3595 3596 case 193: 3597 3598 /* Line 1806 of yacc.c */ 3599 #line 672 "grammar.y" 3600 { (yyval.i) = M_FISU; } 3601 break; 3602 3603 case 194: 3604 3605 /* Line 1806 of yacc.c */ 3606 #line 673 "grammar.y" 3607 { (yyval.i) = M_LSSU; } 3608 break; 3609 3610 case 195: 3611 3612 /* Line 1806 of yacc.c */ 3613 #line 674 "grammar.y" 3614 { (yyval.i) = M_MSU; } 3615 break; 3616 3617 case 196: 3618 3619 /* Line 1806 of yacc.c */ 3620 #line 675 "grammar.y" 3621 { (yyval.i) = MH_FISU; } 3622 break; 3623 3624 case 197: 3625 3626 /* Line 1806 of yacc.c */ 3627 #line 676 "grammar.y" 3628 { (yyval.i) = MH_LSSU; } 3629 break; 3630 3631 case 198: 3632 3633 /* Line 1806 of yacc.c */ 3634 #line 677 "grammar.y" 3635 { (yyval.i) = MH_MSU; } 3636 break; 3637 3638 case 199: 3639 3640 /* Line 1806 of yacc.c */ 3641 #line 680 "grammar.y" 3642 { (yyval.blk).mtp3fieldtype = M_SIO; } 3643 break; 3644 3645 case 200: 3646 3647 /* Line 1806 of yacc.c */ 3648 #line 681 "grammar.y" 3649 { (yyval.blk).mtp3fieldtype = M_OPC; } 3650 break; 3651 3652 case 201: 3653 3654 /* Line 1806 of yacc.c */ 3655 #line 682 "grammar.y" 3656 { (yyval.blk).mtp3fieldtype = M_DPC; } 3657 break; 3658 3659 case 202: 3660 3661 /* Line 1806 of yacc.c */ 3662 #line 683 "grammar.y" 3663 { (yyval.blk).mtp3fieldtype = M_SLS; } 3664 break; 3665 3666 case 203: 3667 3668 /* Line 1806 of yacc.c */ 3669 #line 684 "grammar.y" 3670 { (yyval.blk).mtp3fieldtype = MH_SIO; } 3671 break; 3672 3673 case 204: 3674 3675 /* Line 1806 of yacc.c */ 3676 #line 685 "grammar.y" 3677 { (yyval.blk).mtp3fieldtype = MH_OPC; } 3678 break; 3679 3680 case 205: 3681 3682 /* Line 1806 of yacc.c */ 3683 #line 686 "grammar.y" 3684 { (yyval.blk).mtp3fieldtype = MH_DPC; } 3685 break; 3686 3687 case 206: 3688 3689 /* Line 1806 of yacc.c */ 3690 #line 687 "grammar.y" 3691 { (yyval.blk).mtp3fieldtype = MH_SLS; } 3692 break; 3693 3694 case 208: 3695 3696 /* Line 1806 of yacc.c */ 3697 #line 690 "grammar.y" 3698 { (yyval.blk).b = gen_mtp3field_code((yyvsp[(0) - (2)].blk).mtp3fieldtype, (u_int)(yyvsp[(2) - (2)].i), (u_int)(yyvsp[(1) - (2)].i), 0); } 3699 break; 3700 3701 case 209: 3702 3703 /* Line 1806 of yacc.c */ 3704 #line 691 "grammar.y" 3705 { (yyval.blk).b = gen_mtp3field_code((yyvsp[(0) - (2)].blk).mtp3fieldtype, (u_int)(yyvsp[(2) - (2)].i), (u_int)(yyvsp[(1) - (2)].i), 1); } 3706 break; 3707 3708 case 210: 3709 3710 /* Line 1806 of yacc.c */ 3711 #line 692 "grammar.y" 3712 { (yyval.blk).b = (yyvsp[(2) - (3)].blk).b; (yyval.blk).q = qerr; } 3713 break; 3714 3715 case 211: 3716 3717 /* Line 1806 of yacc.c */ 3718 #line 694 "grammar.y" 3719 { 3720 (yyval.blk).mtp3fieldtype = (yyvsp[(0) - (1)].blk).mtp3fieldtype; 3721 if ((yyval.blk).mtp3fieldtype == M_SIO || 3722 (yyval.blk).mtp3fieldtype == M_OPC || 3723 (yyval.blk).mtp3fieldtype == M_DPC || 3724 (yyval.blk).mtp3fieldtype == M_SLS || 3725 (yyval.blk).mtp3fieldtype == MH_SIO || 3726 (yyval.blk).mtp3fieldtype == MH_OPC || 3727 (yyval.blk).mtp3fieldtype == MH_DPC || 3728 (yyval.blk).mtp3fieldtype == MH_SLS) 3729 (yyval.blk).b = gen_mtp3field_code((yyval.blk).mtp3fieldtype, (u_int) (yyvsp[(1) - (1)].i), BPF_JEQ, 0); 3730 } 3731 break; 3732 3733 case 213: 3734 3735 /* Line 1806 of yacc.c */ 3736 #line 708 "grammar.y" 3737 { gen_or((yyvsp[(1) - (3)].blk).b, (yyvsp[(3) - (3)].blk).b); (yyval.blk) = (yyvsp[(3) - (3)].blk); } 3738 break; 3739 3740 3741 3742 /* Line 1806 of yacc.c */ 3743 #line 3744 "y.tab.c" 3744 default: break; 3745 } 3746 /* User semantic actions sometimes alter yychar, and that requires 3747 that yytoken be updated with the new translation. We take the 3748 approach of translating immediately before every use of yytoken. 3749 One alternative is translating here after every semantic action, 3750 but that translation would be missed if the semantic action invokes 3751 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or 3752 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an 3753 incorrect destructor might then be invoked immediately. In the 3754 case of YYERROR or YYBACKUP, subsequent parser actions might lead 3755 to an incorrect destructor call or verbose syntax error message 3756 before the lookahead is translated. */ 3757 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 3758 3759 YYPOPSTACK (yylen); 3760 yylen = 0; 3761 YY_STACK_PRINT (yyss, yyssp); 3762 3763 *++yyvsp = yyval; 3764 3765 /* Now `shift' the result of the reduction. Determine what state 3766 that goes to, based on the state we popped back to and the rule 3767 number reduced by. */ 3768 3769 yyn = yyr1[yyn]; 3770 3771 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 3772 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 3773 yystate = yytable[yystate]; 3774 else 3775 yystate = yydefgoto[yyn - YYNTOKENS]; 3776 3777 goto yynewstate; 3778 3779 3780 /*------------------------------------. 3781 | yyerrlab -- here on detecting error | 3782 `------------------------------------*/ 3783 yyerrlab: 3784 /* Make sure we have latest lookahead translation. See comments at 3785 user semantic actions for why this is necessary. */ 3786 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); 3787 3788 /* If not already recovering from an error, report this error. */ 3789 if (!yyerrstatus) 3790 { 3791 ++yynerrs; 3792 #if ! YYERROR_VERBOSE 3793 yyerror (YY_("syntax error")); 3794 #else 3795 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ 3796 yyssp, yytoken) 3797 { 3798 char const *yymsgp = YY_("syntax error"); 3799 int yysyntax_error_status; 3800 yysyntax_error_status = YYSYNTAX_ERROR; 3801 if (yysyntax_error_status == 0) 3802 yymsgp = yymsg; 3803 else if (yysyntax_error_status == 1) 3804 { 3805 if (yymsg != yymsgbuf) 3806 YYSTACK_FREE (yymsg); 3807 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); 3808 if (!yymsg) 3809 { 3810 yymsg = yymsgbuf; 3811 yymsg_alloc = sizeof yymsgbuf; 3812 yysyntax_error_status = 2; 3813 } 3814 else 3815 { 3816 yysyntax_error_status = YYSYNTAX_ERROR; 3817 yymsgp = yymsg; 3818 } 3819 } 3820 yyerror (yymsgp); 3821 if (yysyntax_error_status == 2) 3822 goto yyexhaustedlab; 3823 } 3824 # undef YYSYNTAX_ERROR 3825 #endif 3826 } 3827 3828 3829 3830 if (yyerrstatus == 3) 3831 { 3832 /* If just tried and failed to reuse lookahead token after an 3833 error, discard it. */ 3834 3835 if (yychar <= YYEOF) 3836 { 3837 /* Return failure if at end of input. */ 3838 if (yychar == YYEOF) 3839 YYABORT; 3840 } 3841 else 3842 { 3843 yydestruct ("Error: discarding", 3844 yytoken, &yylval); 3845 yychar = YYEMPTY; 3846 } 3847 } 3848 3849 /* Else will try to reuse lookahead token after shifting the error 3850 token. */ 3851 goto yyerrlab1; 3852 3853 3854 /*---------------------------------------------------. 3855 | yyerrorlab -- error raised explicitly by YYERROR. | 3856 `---------------------------------------------------*/ 3857 yyerrorlab: 3858 3859 /* Pacify compilers like GCC when the user code never invokes 3860 YYERROR and the label yyerrorlab therefore never appears in user 3861 code. */ 3862 if (/*CONSTCOND*/ 0) 3863 goto yyerrorlab; 3864 3865 /* Do not reclaim the symbols of the rule which action triggered 3866 this YYERROR. */ 3867 YYPOPSTACK (yylen); 3868 yylen = 0; 3869 YY_STACK_PRINT (yyss, yyssp); 3870 yystate = *yyssp; 3871 goto yyerrlab1; 3872 3873 3874 /*-------------------------------------------------------------. 3875 | yyerrlab1 -- common code for both syntax error and YYERROR. | 3876 `-------------------------------------------------------------*/ 3877 yyerrlab1: 3878 yyerrstatus = 3; /* Each real token shifted decrements this. */ 3879 3880 for (;;) 3881 { 3882 yyn = yypact[yystate]; 3883 if (!yypact_value_is_default (yyn)) 3884 { 3885 yyn += YYTERROR; 3886 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 3887 { 3888 yyn = yytable[yyn]; 3889 if (0 < yyn) 3890 break; 3891 } 3892 } 3893 3894 /* Pop the current state because it cannot handle the error token. */ 3895 if (yyssp == yyss) 3896 YYABORT; 3897 3898 3899 yydestruct ("Error: popping", 3900 yystos[yystate], yyvsp); 3901 YYPOPSTACK (1); 3902 yystate = *yyssp; 3903 YY_STACK_PRINT (yyss, yyssp); 3904 } 3905 3906 *++yyvsp = yylval; 3907 3908 3909 /* Shift the error token. */ 3910 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 3911 3912 yystate = yyn; 3913 goto yynewstate; 3914 3915 3916 /*-------------------------------------. 3917 | yyacceptlab -- YYACCEPT comes here. | 3918 `-------------------------------------*/ 3919 yyacceptlab: 3920 yyresult = 0; 3921 goto yyreturn; 3922 3923 /*-----------------------------------. 3924 | yyabortlab -- YYABORT comes here. | 3925 `-----------------------------------*/ 3926 yyabortlab: 3927 yyresult = 1; 3928 goto yyreturn; 3929 3930 #if !defined(yyoverflow) || YYERROR_VERBOSE 3931 /*-------------------------------------------------. 3932 | yyexhaustedlab -- memory exhaustion comes here. | 3933 `-------------------------------------------------*/ 3934 yyexhaustedlab: 3935 yyerror (YY_("memory exhausted")); 3936 yyresult = 2; 3937 /* Fall through. */ 3938 #endif 3939 3940 yyreturn: 3941 if (yychar != YYEMPTY) 3942 { 3943 /* Make sure we have latest lookahead translation. See comments at 3944 user semantic actions for why this is necessary. */ 3945 yytoken = YYTRANSLATE (yychar); 3946 yydestruct ("Cleanup: discarding lookahead", 3947 yytoken, &yylval); 3948 } 3949 /* Do not reclaim the symbols of the rule which action triggered 3950 this YYABORT or YYACCEPT. */ 3951 YYPOPSTACK (yylen); 3952 YY_STACK_PRINT (yyss, yyssp); 3953 while (yyssp != yyss) 3954 { 3955 yydestruct ("Cleanup: popping", 3956 yystos[*yyssp], yyvsp); 3957 YYPOPSTACK (1); 3958 } 3959 #ifndef yyoverflow 3960 if (yyss != yyssa) 3961 YYSTACK_FREE (yyss); 3962 #endif 3963 #if YYERROR_VERBOSE 3964 if (yymsg != yymsgbuf) 3965 YYSTACK_FREE (yymsg); 3966 #endif 3967 /* Make sure YYID is used. */ 3968 return YYID (yyresult); 3969 } 3970 3971 3972 3973 /* Line 2067 of yacc.c */ 3974 #line 710 "grammar.y" 3975 3976 3977