1 /* A Bison parser, made by GNU Bison 2.1. */ 2 3 /* Skeleton parser for Yacc-like parsing with Bison, 4 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2, or (at your option) 9 any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; if not, write to the Free Software 18 Foundation, Inc., 51 Franklin Street, Fifth Floor, 19 Boston, MA 02110-1301, USA. */ 20 21 /* As a special exception, when this file is copied by Bison into a 22 Bison output file, you may use that output file without restriction. 23 This special exception was added by the Free Software Foundation 24 in version 1.24 of Bison. */ 25 26 /* Written by Richard Stallman by simplifying the original so called 27 ``semantic'' parser. */ 28 29 /* All symbols defined below should begin with yy or YY, to avoid 30 infringing on user name space. This should be done even for local 31 variables, as they might otherwise be expanded by user macros. 32 There are some unavoidable exceptions within include files to 33 define necessary library symbols; they are noted "INFRINGES ON 34 USER NAME SPACE" below. */ 35 36 /* Identify Bison output. */ 37 #define YYBISON 1 38 39 /* Bison version. */ 40 #define YYBISON_VERSION "2.1" 41 42 /* Skeleton name. */ 43 #define YYSKELETON_NAME "yacc.c" 44 45 /* Pure parsers. */ 46 #define YYPURE 0 47 48 /* Using locations. */ 49 #define YYLSP_NEEDED 0 50 51 /* Substitute the variable and function names. */ 52 #define yyparse pcap_parse 53 #define yylex pcap_lex 54 #define yyerror pcap_error 55 #define yylval pcap_lval 56 #define yychar pcap_char 57 #define yydebug pcap_debug 58 #define yynerrs pcap_nerrs 59 60 61 /* Tokens. */ 62 #ifndef YYTOKENTYPE 63 # define YYTOKENTYPE 64 /* Put the tokens into the symbol table, so that GDB and other debuggers 65 know about them. */ 66 enum yytokentype { 67 DST = 258, 68 SRC = 259, 69 HOST = 260, 70 GATEWAY = 261, 71 NET = 262, 72 NETMASK = 263, 73 PORT = 264, 74 PORTRANGE = 265, 75 LESS = 266, 76 GREATER = 267, 77 PROTO = 268, 78 PROTOCHAIN = 269, 79 CBYTE = 270, 80 ARP = 271, 81 RARP = 272, 82 IP = 273, 83 SCTP = 274, 84 TCP = 275, 85 UDP = 276, 86 ICMP = 277, 87 IGMP = 278, 88 IGRP = 279, 89 PIM = 280, 90 VRRP = 281, 91 ATALK = 282, 92 AARP = 283, 93 DECNET = 284, 94 LAT = 285, 95 SCA = 286, 96 MOPRC = 287, 97 MOPDL = 288, 98 TK_BROADCAST = 289, 99 TK_MULTICAST = 290, 100 NUM = 291, 101 INBOUND = 292, 102 OUTBOUND = 293, 103 PF_IFNAME = 294, 104 PF_RSET = 295, 105 PF_RNR = 296, 106 PF_SRNR = 297, 107 PF_REASON = 298, 108 PF_ACTION = 299, 109 LINK = 300, 110 GEQ = 301, 111 LEQ = 302, 112 NEQ = 303, 113 ID = 304, 114 EID = 305, 115 HID = 306, 116 HID6 = 307, 117 AID = 308, 118 LSH = 309, 119 RSH = 310, 120 LEN = 311, 121 IPV6 = 312, 122 ICMPV6 = 313, 123 AH = 314, 124 ESP = 315, 125 VLAN = 316, 126 MPLS = 317, 127 PPPOED = 318, 128 PPPOES = 319, 129 ISO = 320, 130 ESIS = 321, 131 CLNP = 322, 132 ISIS = 323, 133 L1 = 324, 134 L2 = 325, 135 IIH = 326, 136 LSP = 327, 137 SNP = 328, 138 CSNP = 329, 139 PSNP = 330, 140 STP = 331, 141 IPX = 332, 142 NETBEUI = 333, 143 LANE = 334, 144 LLC = 335, 145 METAC = 336, 146 BCC = 337, 147 SC = 338, 148 ILMIC = 339, 149 OAMF4EC = 340, 150 OAMF4SC = 341, 151 OAM = 342, 152 OAMF4 = 343, 153 CONNECTMSG = 344, 154 METACONNECT = 345, 155 VPI = 346, 156 VCI = 347, 157 RADIO = 348, 158 FISU = 349, 159 LSSU = 350, 160 MSU = 351, 161 SIO = 352, 162 OPC = 353, 163 DPC = 354, 164 SLS = 355, 165 AND = 356, 166 OR = 357, 167 UMINUS = 358 168 }; 169 #endif 170 /* Tokens. */ 171 #define DST 258 172 #define SRC 259 173 #define HOST 260 174 #define GATEWAY 261 175 #define NET 262 176 #define NETMASK 263 177 #define PORT 264 178 #define PORTRANGE 265 179 #define LESS 266 180 #define GREATER 267 181 #define PROTO 268 182 #define PROTOCHAIN 269 183 #define CBYTE 270 184 #define ARP 271 185 #define RARP 272 186 #define IP 273 187 #define SCTP 274 188 #define TCP 275 189 #define UDP 276 190 #define ICMP 277 191 #define IGMP 278 192 #define IGRP 279 193 #define PIM 280 194 #define VRRP 281 195 #define ATALK 282 196 #define AARP 283 197 #define DECNET 284 198 #define LAT 285 199 #define SCA 286 200 #define MOPRC 287 201 #define MOPDL 288 202 #define TK_BROADCAST 289 203 #define TK_MULTICAST 290 204 #define NUM 291 205 #define INBOUND 292 206 #define OUTBOUND 293 207 #define PF_IFNAME 294 208 #define PF_RSET 295 209 #define PF_RNR 296 210 #define PF_SRNR 297 211 #define PF_REASON 298 212 #define PF_ACTION 299 213 #define LINK 300 214 #define GEQ 301 215 #define LEQ 302 216 #define NEQ 303 217 #define ID 304 218 #define EID 305 219 #define HID 306 220 #define HID6 307 221 #define AID 308 222 #define LSH 309 223 #define RSH 310 224 #define LEN 311 225 #define IPV6 312 226 #define ICMPV6 313 227 #define AH 314 228 #define ESP 315 229 #define VLAN 316 230 #define MPLS 317 231 #define PPPOED 318 232 #define PPPOES 319 233 #define ISO 320 234 #define ESIS 321 235 #define CLNP 322 236 #define ISIS 323 237 #define L1 324 238 #define L2 325 239 #define IIH 326 240 #define LSP 327 241 #define SNP 328 242 #define CSNP 329 243 #define PSNP 330 244 #define STP 331 245 #define IPX 332 246 #define NETBEUI 333 247 #define LANE 334 248 #define LLC 335 249 #define METAC 336 250 #define BCC 337 251 #define SC 338 252 #define ILMIC 339 253 #define OAMF4EC 340 254 #define OAMF4SC 341 255 #define OAM 342 256 #define OAMF4 343 257 #define CONNECTMSG 344 258 #define METACONNECT 345 259 #define VPI 346 260 #define VCI 347 261 #define RADIO 348 262 #define FISU 349 263 #define LSSU 350 264 #define MSU 351 265 #define SIO 352 266 #define OPC 353 267 #define DPC 354 268 #define SLS 355 269 #define AND 356 270 #define OR 357 271 #define UMINUS 358 272 273 274 275 276 /* Copy the first part of user declarations. */ 277 #line 1 "grammar.y" 278 279 /* 280 * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 281 * The Regents of the University of California. All rights reserved. 282 * 283 * Redistribution and use in source and binary forms, with or without 284 * modification, are permitted provided that: (1) source code distributions 285 * retain the above copyright notice and this paragraph in its entirety, (2) 286 * distributions including binary code include the above copyright notice and 287 * this paragraph in its entirety in the documentation or other materials 288 * provided with the distribution, and (3) all advertising materials mentioning 289 * features or use of this software display the following acknowledgement: 290 * ``This product includes software developed by the University of California, 291 * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of 292 * the University nor the names of its contributors may be used to endorse 293 * or promote products derived from this software without specific prior 294 * written permission. 295 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED 296 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 297 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 298 * 299 */ 300 #ifndef lint 301 static const char rcsid[] _U_ = 302 "@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.86.2.9 2007/09/12 19:17:25 guy Exp $ (LBL)"; 303 #endif 304 305 #ifdef HAVE_CONFIG_H 306 #include "config.h" 307 #endif 308 309 #ifdef WIN32 310 #include <pcap-stdinc.h> 311 #else /* WIN32 */ 312 #include <sys/types.h> 313 #include <sys/socket.h> 314 #endif /* WIN32 */ 315 316 #include <stdlib.h> 317 318 #ifndef WIN32 319 #if __STDC__ 320 struct mbuf; 321 struct rtentry; 322 #endif 323 324 #include <netinet/in.h> 325 #endif /* WIN32 */ 326 327 #include <stdio.h> 328 329 #include "pcap-int.h" 330 331 #include "gencode.h" 332 #ifdef HAVE_NET_PFVAR_H 333 #include <net/if.h> 334 #include <net/pfvar.h> 335 #include <net/if_pflog.h> 336 #endif 337 #include <pcap-namedb.h> 338 339 #ifdef HAVE_OS_PROTO_H 340 #include "os-proto.h" 341 #endif 342 343 #define QSET(q, p, d, a) (q).proto = (p),\ 344 (q).dir = (d),\ 345 (q).addr = (a) 346 347 int n_errors = 0; 348 349 static struct qual qerr = { Q_UNDEF, Q_UNDEF, Q_UNDEF, Q_UNDEF }; 350 351 static void 352 yyerror(const char *msg) 353 { 354 ++n_errors; 355 bpf_error("%s", msg); 356 /* NOTREACHED */ 357 } 358 359 #ifndef YYBISON 360 int yyparse(void); 361 362 int 363 pcap_parse() 364 { 365 return (yyparse()); 366 } 367 #endif 368 369 #ifdef HAVE_NET_PFVAR_H 370 static int 371 pfreason_to_num(const char *reason) 372 { 373 const char *reasons[] = PFRES_NAMES; 374 int i; 375 376 for (i = 0; reasons[i]; i++) { 377 if (pcap_strcasecmp(reason, reasons[i]) == 0) 378 return (i); 379 } 380 bpf_error("unknown PF reason"); 381 /*NOTREACHED*/ 382 } 383 384 static int 385 pfaction_to_num(const char *action) 386 { 387 if (pcap_strcasecmp(action, "pass") == 0 || 388 pcap_strcasecmp(action, "accept") == 0) 389 return (PF_PASS); 390 else if (pcap_strcasecmp(action, "drop") == 0 || 391 pcap_strcasecmp(action, "block") == 0) 392 return (PF_DROP); 393 else { 394 bpf_error("unknown PF action"); 395 /*NOTREACHED*/ 396 } 397 } 398 #else /* !HAVE_NET_PFVAR_H */ 399 static int 400 pfreason_to_num(const char *reason) 401 { 402 bpf_error("libpcap was compiled on a machine without pf support"); 403 /*NOTREACHED*/ 404 } 405 406 static int 407 pfaction_to_num(const char *action) 408 { 409 bpf_error("libpcap was compiled on a machine without pf support"); 410 /*NOTREACHED*/ 411 } 412 #endif /* HAVE_NET_PFVAR_H */ 413 414 415 /* Enabling traces. */ 416 #ifndef YYDEBUG 417 # define YYDEBUG 0 418 #endif 419 420 /* Enabling verbose error messages. */ 421 #ifdef YYERROR_VERBOSE 422 # undef YYERROR_VERBOSE 423 # define YYERROR_VERBOSE 1 424 #else 425 # define YYERROR_VERBOSE 0 426 #endif 427 428 /* Enabling the token table. */ 429 #ifndef YYTOKEN_TABLE 430 # define YYTOKEN_TABLE 0 431 #endif 432 433 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) 434 #line 138 "grammar.y" 435 typedef union YYSTYPE { 436 int i; 437 bpf_u_int32 h; 438 u_char *e; 439 char *s; 440 struct stmt *stmt; 441 struct arth *a; 442 struct { 443 struct qual q; 444 int atmfieldtype; 445 int mtp3fieldtype; 446 struct block *b; 447 } blk; 448 struct block *rblk; 449 } YYSTYPE; 450 /* Line 196 of yacc.c. */ 451 #line 452 "y.tab.c" 452 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ 453 # define YYSTYPE_IS_DECLARED 1 454 # define YYSTYPE_IS_TRIVIAL 1 455 #endif 456 457 458 459 /* Copy the second part of user declarations. */ 460 461 462 /* Line 219 of yacc.c. */ 463 #line 464 "y.tab.c" 464 465 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) 466 # define YYSIZE_T __SIZE_TYPE__ 467 #endif 468 #if ! defined (YYSIZE_T) && defined (size_t) 469 # define YYSIZE_T size_t 470 #endif 471 #if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus)) 472 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 473 # define YYSIZE_T size_t 474 #endif 475 #if ! defined (YYSIZE_T) 476 # define YYSIZE_T unsigned int 477 #endif 478 479 #ifndef YY_ 480 # if YYENABLE_NLS 481 # if ENABLE_NLS 482 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 483 # define YY_(msgid) dgettext ("bison-runtime", msgid) 484 # endif 485 # endif 486 # ifndef YY_ 487 # define YY_(msgid) msgid 488 # endif 489 #endif 490 491 #if ! defined (yyoverflow) || YYERROR_VERBOSE 492 493 /* The parser invokes alloca or malloc; define the necessary symbols. */ 494 495 # ifdef YYSTACK_USE_ALLOCA 496 # if YYSTACK_USE_ALLOCA 497 # ifdef __GNUC__ 498 # define YYSTACK_ALLOC __builtin_alloca 499 # else 500 # define YYSTACK_ALLOC alloca 501 # if defined (__STDC__) || defined (__cplusplus) 502 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 503 # define YYINCLUDED_STDLIB_H 504 # endif 505 # endif 506 # endif 507 # endif 508 509 # ifdef YYSTACK_ALLOC 510 /* Pacify GCC's `empty if-body' warning. */ 511 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) 512 # ifndef YYSTACK_ALLOC_MAXIMUM 513 /* The OS might guarantee only one guard page at the bottom of the stack, 514 and a page size can be as small as 4096 bytes. So we cannot safely 515 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 516 to allow for a few compiler-allocated temporary stack slots. */ 517 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */ 518 # endif 519 # else 520 # define YYSTACK_ALLOC YYMALLOC 521 # define YYSTACK_FREE YYFREE 522 # ifndef YYSTACK_ALLOC_MAXIMUM 523 # define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1) 524 # endif 525 # ifdef __cplusplus 526 extern "C" { 527 # endif 528 # ifndef YYMALLOC 529 # define YYMALLOC malloc 530 # if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \ 531 && (defined (__STDC__) || defined (__cplusplus))) 532 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 533 # endif 534 # endif 535 # ifndef YYFREE 536 # define YYFREE free 537 # if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \ 538 && (defined (__STDC__) || defined (__cplusplus))) 539 void free (void *); /* INFRINGES ON USER NAME SPACE */ 540 # endif 541 # endif 542 # ifdef __cplusplus 543 } 544 # endif 545 # endif 546 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ 547 548 549 #if (! defined (yyoverflow) \ 550 && (! defined (__cplusplus) \ 551 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))) 552 553 /* A type that is properly aligned for any stack member. */ 554 union yyalloc 555 { 556 short int yyss; 557 YYSTYPE yyvs; 558 }; 559 560 /* The size of the maximum gap between one aligned stack and the next. */ 561 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 562 563 /* The size of an array large to enough to hold all stacks, each with 564 N elements. */ 565 # define YYSTACK_BYTES(N) \ 566 ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \ 567 + YYSTACK_GAP_MAXIMUM) 568 569 /* Copy COUNT objects from FROM to TO. The source and destination do 570 not overlap. */ 571 # ifndef YYCOPY 572 # if defined (__GNUC__) && 1 < __GNUC__ 573 # define YYCOPY(To, From, Count) \ 574 __builtin_memcpy (To, From, (Count) * sizeof (*(From))) 575 # else 576 # define YYCOPY(To, From, Count) \ 577 do \ 578 { \ 579 YYSIZE_T yyi; \ 580 for (yyi = 0; yyi < (Count); yyi++) \ 581 (To)[yyi] = (From)[yyi]; \ 582 } \ 583 while (0) 584 # endif 585 # endif 586 587 /* Relocate STACK from its old location to the new one. The 588 local variables YYSIZE and YYSTACKSIZE give the old and new number of 589 elements in the stack, and YYPTR gives the new location of the 590 stack. Advance YYPTR to a properly aligned location for the next 591 stack. */ 592 # define YYSTACK_RELOCATE(Stack) \ 593 do \ 594 { \ 595 YYSIZE_T yynewbytes; \ 596 YYCOPY (&yyptr->Stack, Stack, yysize); \ 597 Stack = &yyptr->Stack; \ 598 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 599 yyptr += yynewbytes / sizeof (*yyptr); \ 600 } \ 601 while (0) 602 603 #endif 604 605 #if defined (__STDC__) || defined (__cplusplus) 606 typedef signed char yysigned_char; 607 #else 608 typedef short int yysigned_char; 609 #endif 610 611 /* YYFINAL -- State number of the termination state. */ 612 #define YYFINAL 3 613 /* YYLAST -- Last index in YYTABLE. */ 614 #define YYLAST 605 615 616 /* YYNTOKENS -- Number of terminals. */ 617 #define YYNTOKENS 119 618 /* YYNNTS -- Number of nonterminals. */ 619 #define YYNNTS 41 620 /* YYNRULES -- Number of rules. */ 621 #define YYNRULES 186 622 /* YYNRULES -- Number of states. */ 623 #define YYNSTATES 254 624 625 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 626 #define YYUNDEFTOK 2 627 #define YYMAXUTOK 358 628 629 #define YYTRANSLATE(YYX) \ 630 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 631 632 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 633 static const unsigned char yytranslate[] = 634 { 635 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 636 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 637 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 638 2, 2, 2, 103, 2, 2, 2, 2, 105, 2, 639 112, 111, 108, 106, 2, 107, 2, 109, 2, 2, 640 2, 2, 2, 2, 2, 2, 2, 2, 118, 2, 641 115, 114, 113, 2, 2, 2, 2, 2, 2, 2, 642 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 643 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 644 2, 116, 2, 117, 2, 2, 2, 2, 2, 2, 645 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 646 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 647 2, 2, 2, 2, 104, 2, 2, 2, 2, 2, 648 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 649 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 650 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 651 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 652 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 653 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 654 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 655 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 656 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 657 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 658 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 659 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 660 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 661 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 662 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 663 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 664 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 665 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 666 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 667 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 668 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 669 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 670 95, 96, 97, 98, 99, 100, 101, 102, 110 671 }; 672 673 #if YYDEBUG 674 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 675 YYRHS. */ 676 static const unsigned short int yyprhs[] = 677 { 678 0, 0, 3, 6, 8, 9, 11, 15, 19, 23, 679 27, 29, 31, 33, 35, 39, 41, 45, 49, 51, 680 55, 57, 59, 61, 64, 66, 68, 70, 74, 78, 681 80, 82, 84, 87, 91, 94, 97, 100, 103, 106, 682 109, 113, 115, 119, 123, 125, 127, 129, 132, 134, 683 137, 139, 140, 142, 144, 148, 152, 156, 160, 162, 684 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 685 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 686 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 687 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 688 244, 246, 249, 252, 255, 258, 263, 265, 267, 270, 689 272, 275, 277, 279, 281, 283, 286, 289, 292, 295, 690 298, 301, 303, 305, 307, 309, 311, 313, 315, 317, 691 319, 321, 323, 328, 335, 339, 343, 347, 351, 355, 692 359, 363, 367, 370, 374, 376, 378, 380, 382, 384, 693 386, 388, 392, 394, 396, 398, 400, 402, 404, 406, 694 408, 410, 412, 414, 416, 418, 420, 422, 425, 428, 695 432, 434, 436, 440, 442, 444, 446, 448, 450, 452, 696 454, 456, 459, 462, 466, 468, 470 697 }; 698 699 /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 700 static const short int yyrhs[] = 701 { 702 120, 0, -1, 121, 122, -1, 121, -1, -1, 131, 703 -1, 122, 123, 131, -1, 122, 123, 125, -1, 122, 704 124, 131, -1, 122, 124, 125, -1, 101, -1, 102, 705 -1, 126, -1, 148, -1, 128, 129, 111, -1, 49, 706 -1, 51, 109, 36, -1, 51, 8, 51, -1, 51, 707 -1, 52, 109, 36, -1, 52, -1, 50, -1, 53, 708 -1, 127, 125, -1, 103, -1, 112, -1, 126, -1, 709 130, 123, 125, -1, 130, 124, 125, -1, 148, -1, 710 129, -1, 133, -1, 127, 131, -1, 134, 135, 136, 711 -1, 134, 135, -1, 134, 136, -1, 134, 13, -1, 712 134, 14, -1, 134, 137, -1, 132, 125, -1, 128, 713 122, 111, -1, 138, -1, 145, 143, 145, -1, 145, 714 144, 145, -1, 139, -1, 149, -1, 150, -1, 151, 715 152, -1, 155, -1, 156, 157, -1, 138, -1, -1, 716 4, -1, 3, -1, 4, 102, 3, -1, 3, 102, 717 4, -1, 4, 101, 3, -1, 3, 101, 4, -1, 718 5, -1, 7, -1, 9, -1, 10, -1, 6, -1, 719 45, -1, 18, -1, 16, -1, 17, -1, 19, -1, 720 20, -1, 21, -1, 22, -1, 23, -1, 24, -1, 721 25, -1, 26, -1, 27, -1, 28, -1, 29, -1, 722 30, -1, 31, -1, 33, -1, 32, -1, 57, -1, 723 58, -1, 59, -1, 60, -1, 65, -1, 66, -1, 724 68, -1, 69, -1, 70, -1, 71, -1, 72, -1, 725 73, -1, 75, -1, 74, -1, 67, -1, 76, -1, 726 77, -1, 78, -1, 93, -1, 134, 34, -1, 134, 727 35, -1, 11, 36, -1, 12, 36, -1, 15, 36, 728 147, 36, -1, 37, -1, 38, -1, 61, 148, -1, 729 61, -1, 62, 148, -1, 62, -1, 63, -1, 64, 730 -1, 140, -1, 39, 49, -1, 40, 49, -1, 41, 731 36, -1, 42, 36, -1, 43, 141, -1, 44, 142, 732 -1, 36, -1, 49, -1, 49, -1, 113, -1, 46, 733 -1, 114, -1, 47, -1, 115, -1, 48, -1, 148, 734 -1, 146, -1, 138, 116, 145, 117, -1, 138, 116, 735 145, 118, 36, 117, -1, 145, 106, 145, -1, 145, 736 107, 145, -1, 145, 108, 145, -1, 145, 109, 145, 737 -1, 145, 105, 145, -1, 145, 104, 145, -1, 145, 738 54, 145, -1, 145, 55, 145, -1, 107, 145, -1, 739 128, 146, 111, -1, 56, -1, 105, -1, 104, -1, 740 115, -1, 113, -1, 114, -1, 36, -1, 128, 148, 741 111, -1, 79, -1, 80, -1, 81, -1, 82, -1, 742 85, -1, 86, -1, 83, -1, 84, -1, 87, -1, 743 88, -1, 89, -1, 90, -1, 91, -1, 92, -1, 744 153, -1, 143, 36, -1, 144, 36, -1, 128, 154, 745 111, -1, 36, -1, 153, -1, 154, 124, 153, -1, 746 94, -1, 95, -1, 96, -1, 97, -1, 98, -1, 747 99, -1, 100, -1, 158, -1, 143, 36, -1, 144, 748 36, -1, 128, 159, 111, -1, 36, -1, 158, -1, 749 159, 124, 158, -1 750 }; 751 752 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 753 static const unsigned short int yyrline[] = 754 { 755 0, 210, 210, 214, 216, 218, 219, 220, 221, 222, 756 224, 226, 228, 229, 231, 233, 234, 236, 238, 243, 757 252, 261, 270, 279, 281, 283, 285, 286, 287, 289, 758 291, 293, 294, 296, 297, 298, 299, 300, 301, 303, 759 304, 305, 306, 308, 310, 311, 312, 313, 314, 315, 760 318, 319, 322, 323, 324, 325, 326, 327, 330, 331, 761 332, 333, 336, 338, 339, 340, 341, 342, 343, 344, 762 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 763 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 764 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 765 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 766 386, 387, 388, 389, 390, 393, 394, 395, 396, 397, 767 398, 401, 402, 405, 408, 409, 410, 412, 413, 414, 768 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 769 427, 428, 429, 430, 431, 433, 434, 435, 436, 437, 770 439, 440, 442, 443, 444, 445, 446, 447, 448, 449, 771 451, 452, 453, 454, 457, 458, 460, 461, 462, 463, 772 465, 472, 473, 476, 477, 478, 481, 482, 483, 484, 773 486, 487, 488, 489, 491, 500, 501 774 }; 775 #endif 776 777 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 778 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 779 First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 780 static const char *const yytname[] = 781 { 782 "$end", "error", "$undefined", "DST", "SRC", "HOST", "GATEWAY", "NET", 783 "NETMASK", "PORT", "PORTRANGE", "LESS", "GREATER", "PROTO", "PROTOCHAIN", 784 "CBYTE", "ARP", "RARP", "IP", "SCTP", "TCP", "UDP", "ICMP", "IGMP", 785 "IGRP", "PIM", "VRRP", "ATALK", "AARP", "DECNET", "LAT", "SCA", "MOPRC", 786 "MOPDL", "TK_BROADCAST", "TK_MULTICAST", "NUM", "INBOUND", "OUTBOUND", 787 "PF_IFNAME", "PF_RSET", "PF_RNR", "PF_SRNR", "PF_REASON", "PF_ACTION", 788 "LINK", "GEQ", "LEQ", "NEQ", "ID", "EID", "HID", "HID6", "AID", "LSH", 789 "RSH", "LEN", "IPV6", "ICMPV6", "AH", "ESP", "VLAN", "MPLS", "PPPOED", 790 "PPPOES", "ISO", "ESIS", "CLNP", "ISIS", "L1", "L2", "IIH", "LSP", "SNP", 791 "CSNP", "PSNP", "STP", "IPX", "NETBEUI", "LANE", "LLC", "METAC", "BCC", 792 "SC", "ILMIC", "OAMF4EC", "OAMF4SC", "OAM", "OAMF4", "CONNECTMSG", 793 "METACONNECT", "VPI", "VCI", "RADIO", "FISU", "LSSU", "MSU", "SIO", 794 "OPC", "DPC", "SLS", "AND", "OR", "'!'", "'|'", "'&'", "'+'", "'-'", 795 "'*'", "'/'", "UMINUS", "')'", "'('", "'>'", "'='", "'<'", "'['", "']'", 796 "':'", "$accept", "prog", "null", "expr", "and", "or", "id", "nid", 797 "not", "paren", "pid", "qid", "term", "head", "rterm", "pqual", "dqual", 798 "aqual", "ndaqual", "pname", "other", "pfvar", "reason", "action", 799 "relop", "irelop", "arth", "narth", "byteop", "pnum", "atmtype", 800 "atmmultitype", "atmfield", "atmvalue", "atmfieldvalue", "atmlistvalue", 801 "mtp2type", "mtp3field", "mtp3value", "mtp3fieldvalue", "mtp3listvalue", 0 802 }; 803 #endif 804 805 # ifdef YYPRINT 806 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 807 token YYLEX-NUM. */ 808 static const unsigned short int yytoknum[] = 809 { 810 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 811 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 812 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 813 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 814 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 815 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 816 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 817 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 818 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 819 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 820 355, 356, 357, 33, 124, 38, 43, 45, 42, 47, 821 358, 41, 40, 62, 61, 60, 91, 93, 58 822 }; 823 # endif 824 825 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 826 static const unsigned char yyr1[] = 827 { 828 0, 119, 120, 120, 121, 122, 122, 122, 122, 122, 829 123, 124, 125, 125, 125, 126, 126, 126, 126, 126, 830 126, 126, 126, 126, 127, 128, 129, 129, 129, 130, 831 130, 131, 131, 132, 132, 132, 132, 132, 132, 133, 832 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 833 134, 134, 135, 135, 135, 135, 135, 135, 136, 136, 834 136, 136, 137, 138, 138, 138, 138, 138, 138, 138, 835 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 836 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 837 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 838 138, 139, 139, 139, 139, 139, 139, 139, 139, 139, 839 139, 139, 139, 139, 139, 140, 140, 140, 140, 140, 840 140, 141, 141, 142, 143, 143, 143, 144, 144, 144, 841 145, 145, 146, 146, 146, 146, 146, 146, 146, 146, 842 146, 146, 146, 146, 146, 147, 147, 147, 147, 147, 843 148, 148, 149, 149, 149, 149, 149, 149, 149, 149, 844 150, 150, 150, 150, 151, 151, 152, 152, 152, 152, 845 153, 154, 154, 155, 155, 155, 156, 156, 156, 156, 846 157, 157, 157, 157, 158, 159, 159 847 }; 848 849 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 850 static const unsigned char yyr2[] = 851 { 852 0, 2, 2, 1, 0, 1, 3, 3, 3, 3, 853 1, 1, 1, 1, 3, 1, 3, 3, 1, 3, 854 1, 1, 1, 2, 1, 1, 1, 3, 3, 1, 855 1, 1, 2, 3, 2, 2, 2, 2, 2, 2, 856 3, 1, 3, 3, 1, 1, 1, 2, 1, 2, 857 1, 0, 1, 1, 3, 3, 3, 3, 1, 1, 858 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 859 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 860 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 861 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 862 1, 2, 2, 2, 2, 4, 1, 1, 2, 1, 863 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 864 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 865 1, 1, 4, 6, 3, 3, 3, 3, 3, 3, 866 3, 3, 2, 3, 1, 1, 1, 1, 1, 1, 867 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 868 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 869 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 870 1, 2, 2, 3, 1, 1, 3 871 }; 872 873 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state 874 STATE-NUM when YYTABLE doesn't specify something else to do. Zero 875 means the default is an error. */ 876 static const unsigned char yydefact[] = 877 { 878 4, 0, 51, 1, 0, 0, 0, 65, 66, 64, 879 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 880 77, 78, 79, 81, 80, 150, 106, 107, 0, 0, 881 0, 0, 0, 0, 63, 144, 82, 83, 84, 85, 882 109, 111, 112, 113, 86, 87, 96, 88, 89, 90, 883 91, 92, 93, 95, 94, 97, 98, 99, 152, 153, 884 154, 155, 158, 159, 156, 157, 160, 161, 162, 163, 885 164, 165, 100, 173, 174, 175, 176, 177, 178, 179, 886 24, 0, 25, 2, 51, 51, 5, 0, 31, 0, 887 50, 44, 114, 0, 131, 130, 45, 46, 0, 48, 888 0, 103, 104, 0, 115, 116, 117, 118, 121, 122, 889 119, 123, 120, 0, 108, 110, 0, 0, 142, 10, 890 11, 51, 51, 32, 0, 131, 130, 15, 21, 18, 891 20, 22, 39, 12, 0, 0, 13, 53, 52, 58, 892 62, 59, 60, 61, 36, 37, 101, 102, 34, 35, 893 38, 0, 125, 127, 129, 0, 0, 0, 0, 0, 894 0, 0, 0, 124, 126, 128, 0, 0, 170, 0, 895 0, 0, 47, 166, 184, 0, 0, 0, 49, 180, 896 146, 145, 148, 149, 147, 0, 0, 0, 7, 51, 897 51, 6, 130, 9, 8, 40, 143, 151, 0, 0, 898 0, 23, 26, 30, 0, 29, 0, 0, 0, 0, 899 33, 0, 140, 141, 139, 138, 134, 135, 136, 137, 900 42, 43, 171, 0, 167, 168, 185, 0, 181, 182, 901 105, 130, 17, 16, 19, 14, 0, 0, 57, 55, 902 56, 54, 132, 0, 169, 0, 183, 0, 27, 28, 903 0, 172, 186, 133 904 }; 905 906 /* YYDEFGOTO[NTERM-NUM]. */ 907 static const short int yydefgoto[] = 908 { 909 -1, 1, 2, 124, 121, 122, 201, 133, 134, 116, 910 203, 204, 86, 87, 88, 89, 148, 149, 150, 117, 911 91, 92, 110, 112, 166, 167, 93, 94, 185, 95, 912 96, 97, 98, 172, 173, 223, 99, 100, 178, 179, 913 227 914 }; 915 916 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 917 STATE-NUM. */ 918 #define YYPACT_NINF -181 919 static const short int yypact[] = 920 { 921 -181, 19, 200, -181, -3, 1, 15, -181, -181, -181, 922 -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, 923 -181, -181, -181, -181, -181, -181, -181, -181, 13, 20, 924 18, 44, -26, 35, -181, -181, -181, -181, -181, -181, 925 -19, -19, -181, -181, -181, -181, -181, -181, -181, -181, 926 -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, 927 -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, 928 -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, 929 -181, 493, -181, 41, 396, 396, -181, -24, -181, 155, 930 2, -181, -181, 488, -181, -181, -181, -181, 9, -181, 931 134, -181, -181, 62, -181, -181, -181, -181, -181, -181, 932 -181, -181, -181, -19, -181, -181, 493, -9, -181, -181, 933 -181, 298, 298, -181, -53, -14, -1, -181, -181, 0, 934 3, -181, -181, -181, -24, -24, -181, 77, 82, -181, 935 -181, -181, -181, -181, -181, -181, -181, -181, 437, -181, 936 -181, 493, -181, -181, -181, 493, 493, 493, 493, 493, 937 493, 493, 493, -181, -181, -181, 493, 493, -181, 78, 938 81, 89, -181, -181, -181, 95, 108, 113, -181, -181, 939 -181, -181, -181, -181, -181, 120, -1, -34, -181, 298, 940 298, -181, 4, -181, -181, -181, -181, -181, 112, 149, 941 150, -181, -181, 80, 41, -1, 188, 189, 205, 206, 942 -181, -41, 65, 65, 98, 144, -93, -93, -181, -181, 943 -34, -34, -181, -80, -181, -181, -181, -58, -181, -181, 944 -181, 46, -181, -181, -181, -181, -24, -24, -181, -181, 945 -181, -181, -181, 174, -181, 78, -181, 95, -181, -181, 946 96, -181, -181, -181 947 }; 948 949 /* YYPGOTO[NTERM-NUM]. */ 950 static const short int yypgoto[] = 951 { 952 -181, -181, -181, 212, 50, -180, -86, -89, 5, -2, 953 -181, -181, -81, -181, -181, -181, -181, 107, -181, 7, 954 -181, -181, -181, -181, -66, -39, -21, -74, -181, -35, 955 -181, -181, -181, -181, -151, -181, -181, -181, -181, -145, 956 -181 957 }; 958 959 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 960 positive, shift that token. If negative, reduce the rule which 961 number is the opposite. If zero, do what YYDEFACT says. 962 If YYTABLE_NINF, syntax error. */ 963 #define YYTABLE_NINF -42 964 static const short int yytable[] = 965 { 966 85, 132, -41, 123, -13, 114, 115, 84, 198, 90, 967 108, 125, 25, 155, 156, 161, 162, 25, 222, 3, 968 155, 156, 120, 109, 237, 127, 128, 129, 130, 131, 969 226, 244, 170, 101, 176, 188, 193, 102, 113, 113, 970 191, 194, 125, 245, 120, 168, 202, 247, 119, 120, 971 126, 103, 136, 246, 106, 152, 153, 154, 195, 171, 972 118, 177, 104, 157, 158, 159, 160, 161, 162, 105, 973 157, 158, 159, 160, 161, 162, 242, 243, 186, 80, 974 107, 126, 85, 85, 111, 135, 192, 192, 82, 84, 975 84, 90, 90, 82, 251, 187, 169, 196, 175, 136, 976 205, 202, 252, -41, -41, -13, -13, 151, 123, 199, 977 197, 113, 200, -41, 168, -13, 125, 224, 151, 190, 978 190, 82, 163, 164, 165, 225, 189, 189, 90, 90, 979 211, 174, 135, 113, 212, 213, 214, 215, 216, 217, 980 218, 219, 119, 120, 228, 220, 221, -29, -29, 229, 981 248, 249, 155, 156, 192, 231, 230, 197, 137, 138, 982 139, 140, 141, 232, 142, 143, 180, 181, 144, 145, 983 174, 159, 160, 161, 162, 182, 183, 184, 206, 207, 984 152, 153, 154, 208, 209, 233, 234, 190, 85, 146, 985 147, 235, 238, 239, 189, 189, 90, 90, 155, 156, 986 -3, 136, 136, 158, 159, 160, 161, 162, 240, 241, 987 250, 4, 5, 253, 83, 6, 7, 8, 9, 10, 988 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 989 21, 22, 23, 24, 135, 135, 25, 26, 27, 28, 990 29, 30, 31, 32, 33, 34, 82, 163, 164, 165, 991 159, 160, 161, 162, 236, 210, 35, 36, 37, 38, 992 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 993 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 994 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 995 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 996 79, 0, 0, 80, 0, 0, 0, 81, 0, 4, 997 5, 0, 82, 6, 7, 8, 9, 10, 11, 12, 998 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 999 23, 24, 0, 0, 25, 26, 27, 28, 29, 30, 1000 31, 32, 33, 34, 0, 0, 0, 127, 128, 129, 1001 130, 131, 0, 0, 35, 36, 37, 38, 39, 40, 1002 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 1003 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 1004 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 1005 71, 72, 73, 74, 75, 76, 77, 78, 79, 0, 1006 0, 80, 0, 0, 0, 81, 0, 4, 5, 0, 1007 82, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1008 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 1009 0, 0, 25, 26, 27, 28, 29, 30, 31, 32, 1010 33, 34, 139, 0, 141, 0, 142, 143, 0, 0, 1011 0, 0, 35, 36, 37, 38, 39, 40, 41, 42, 1012 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 1013 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 1014 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 1015 73, 74, 75, 76, 77, 78, 79, 0, 0, 80, 1016 0, 0, 0, 81, 0, 0, 0, 0, 82, 7, 1017 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1018 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 1019 0, 0, 0, 0, 152, 153, 154, 0, 34, 0, 1020 0, 0, 155, 156, 0, 0, 0, 0, 0, 35, 1021 36, 37, 38, 39, 0, 0, 0, 0, 44, 45, 1022 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 1023 56, 57, 0, 0, 0, 0, 0, 0, 0, 0, 1024 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 1025 0, 0, 157, 158, 159, 160, 161, 162, 0, 0, 1026 81, 163, 164, 165, 0, 82 1027 }; 1028 1029 static const short int yycheck[] = 1030 { 1031 2, 87, 0, 84, 0, 40, 41, 2, 8, 2, 1032 36, 85, 36, 54, 55, 108, 109, 36, 169, 0, 1033 54, 55, 102, 49, 204, 49, 50, 51, 52, 53, 1034 175, 111, 98, 36, 100, 121, 122, 36, 40, 41, 1035 121, 122, 116, 223, 102, 36, 135, 227, 101, 102, 1036 85, 36, 87, 111, 36, 46, 47, 48, 111, 98, 1037 81, 100, 49, 104, 105, 106, 107, 108, 109, 49, 1038 104, 105, 106, 107, 108, 109, 117, 118, 113, 103, 1039 36, 116, 84, 85, 49, 87, 121, 122, 112, 84, 1040 85, 84, 85, 112, 245, 116, 98, 111, 100, 134, 1041 135, 190, 247, 101, 102, 101, 102, 116, 189, 109, 1042 111, 113, 109, 111, 36, 111, 190, 36, 116, 121, 1043 122, 112, 113, 114, 115, 36, 121, 122, 121, 122, 1044 151, 36, 134, 135, 155, 156, 157, 158, 159, 160, 1045 161, 162, 101, 102, 36, 166, 167, 101, 102, 36, 1046 236, 237, 54, 55, 189, 190, 36, 111, 3, 4, 1047 5, 6, 7, 51, 9, 10, 104, 105, 13, 14, 1048 36, 106, 107, 108, 109, 113, 114, 115, 101, 102, 1049 46, 47, 48, 101, 102, 36, 36, 189, 190, 34, 1050 35, 111, 4, 4, 189, 190, 189, 190, 54, 55, 1051 0, 236, 237, 105, 106, 107, 108, 109, 3, 3, 1052 36, 11, 12, 117, 2, 15, 16, 17, 18, 19, 1053 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 1054 30, 31, 32, 33, 236, 237, 36, 37, 38, 39, 1055 40, 41, 42, 43, 44, 45, 112, 113, 114, 115, 1056 106, 107, 108, 109, 204, 148, 56, 57, 58, 59, 1057 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 1058 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 1059 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 1060 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 1061 100, -1, -1, 103, -1, -1, -1, 107, -1, 11, 1062 12, -1, 112, 15, 16, 17, 18, 19, 20, 21, 1063 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 1064 32, 33, -1, -1, 36, 37, 38, 39, 40, 41, 1065 42, 43, 44, 45, -1, -1, -1, 49, 50, 51, 1066 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, 1067 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 1068 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 1069 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 1070 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, 1071 -1, 103, -1, -1, -1, 107, -1, 11, 12, -1, 1072 112, 15, 16, 17, 18, 19, 20, 21, 22, 23, 1073 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 1074 -1, -1, 36, 37, 38, 39, 40, 41, 42, 43, 1075 44, 45, 5, -1, 7, -1, 9, 10, -1, -1, 1076 -1, -1, 56, 57, 58, 59, 60, 61, 62, 63, 1077 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 1078 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 1079 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 1080 94, 95, 96, 97, 98, 99, 100, -1, -1, 103, 1081 -1, -1, -1, 107, -1, -1, -1, -1, 112, 16, 1082 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 1083 27, 28, 29, 30, 31, 32, 33, -1, -1, 36, 1084 -1, -1, -1, -1, 46, 47, 48, -1, 45, -1, 1085 -1, -1, 54, 55, -1, -1, -1, -1, -1, 56, 1086 57, 58, 59, 60, -1, -1, -1, -1, 65, 66, 1087 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 1088 77, 78, -1, -1, -1, -1, -1, -1, -1, -1, 1089 -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 1090 -1, -1, 104, 105, 106, 107, 108, 109, -1, -1, 1091 107, 113, 114, 115, -1, 112 1092 }; 1093 1094 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 1095 symbol of state STATE-NUM. */ 1096 static const unsigned char yystos[] = 1097 { 1098 0, 120, 121, 0, 11, 12, 15, 16, 17, 18, 1099 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 1100 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 1101 41, 42, 43, 44, 45, 56, 57, 58, 59, 60, 1102 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 1103 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 1104 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 1105 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 1106 103, 107, 112, 122, 127, 128, 131, 132, 133, 134, 1107 138, 139, 140, 145, 146, 148, 149, 150, 151, 155, 1108 156, 36, 36, 36, 49, 49, 36, 36, 36, 49, 1109 141, 49, 142, 128, 148, 148, 128, 138, 145, 101, 1110 102, 123, 124, 131, 122, 146, 148, 49, 50, 51, 1111 52, 53, 125, 126, 127, 128, 148, 3, 4, 5, 1112 6, 7, 9, 10, 13, 14, 34, 35, 135, 136, 1113 137, 116, 46, 47, 48, 54, 55, 104, 105, 106, 1114 107, 108, 109, 113, 114, 115, 143, 144, 36, 128, 1115 143, 144, 152, 153, 36, 128, 143, 144, 157, 158, 1116 104, 105, 113, 114, 115, 147, 148, 145, 125, 127, 1117 128, 131, 148, 125, 131, 111, 111, 111, 8, 109, 1118 109, 125, 126, 129, 130, 148, 101, 102, 101, 102, 1119 136, 145, 145, 145, 145, 145, 145, 145, 145, 145, 1120 145, 145, 153, 154, 36, 36, 158, 159, 36, 36, 1121 36, 148, 51, 36, 36, 111, 123, 124, 4, 4, 1122 3, 3, 117, 118, 111, 124, 111, 124, 125, 125, 1123 36, 153, 158, 117 1124 }; 1125 1126 #define yyerrok (yyerrstatus = 0) 1127 #define yyclearin (yychar = YYEMPTY) 1128 #define YYEMPTY (-2) 1129 #define YYEOF 0 1130 1131 #define YYACCEPT goto yyacceptlab 1132 #define YYABORT goto yyabortlab 1133 #define YYERROR goto yyerrorlab 1134 1135 1136 /* Like YYERROR except do call yyerror. This remains here temporarily 1137 to ease the transition to the new meaning of YYERROR, for GCC. 1138 Once GCC version 2 has supplanted version 1, this can go. */ 1139 1140 #define YYFAIL goto yyerrlab 1141 1142 #define YYRECOVERING() (!!yyerrstatus) 1143 1144 #define YYBACKUP(Token, Value) \ 1145 do \ 1146 if (yychar == YYEMPTY && yylen == 1) \ 1147 { \ 1148 yychar = (Token); \ 1149 yylval = (Value); \ 1150 yytoken = YYTRANSLATE (yychar); \ 1151 YYPOPSTACK; \ 1152 goto yybackup; \ 1153 } \ 1154 else \ 1155 { \ 1156 yyerror (YY_("syntax error: cannot back up")); \ 1157 YYERROR; \ 1158 } \ 1159 while (0) 1160 1161 1162 #define YYTERROR 1 1163 #define YYERRCODE 256 1164 1165 1166 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 1167 If N is 0, then set CURRENT to the empty location which ends 1168 the previous symbol: RHS[0] (always defined). */ 1169 1170 #define YYRHSLOC(Rhs, K) ((Rhs)[K]) 1171 #ifndef YYLLOC_DEFAULT 1172 # define YYLLOC_DEFAULT(Current, Rhs, N) \ 1173 do \ 1174 if (N) \ 1175 { \ 1176 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 1177 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 1178 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 1179 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 1180 } \ 1181 else \ 1182 { \ 1183 (Current).first_line = (Current).last_line = \ 1184 YYRHSLOC (Rhs, 0).last_line; \ 1185 (Current).first_column = (Current).last_column = \ 1186 YYRHSLOC (Rhs, 0).last_column; \ 1187 } \ 1188 while (0) 1189 #endif 1190 1191 1192 /* YY_LOCATION_PRINT -- Print the location on the stream. 1193 This macro was not mandated originally: define only if we know 1194 we won't break user code: when these are the locations we know. */ 1195 1196 #ifndef YY_LOCATION_PRINT 1197 # if YYLTYPE_IS_TRIVIAL 1198 # define YY_LOCATION_PRINT(File, Loc) \ 1199 fprintf (File, "%d.%d-%d.%d", \ 1200 (Loc).first_line, (Loc).first_column, \ 1201 (Loc).last_line, (Loc).last_column) 1202 # else 1203 # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 1204 # endif 1205 #endif 1206 1207 1208 /* YYLEX -- calling `yylex' with the right arguments. */ 1209 1210 #ifdef YYLEX_PARAM 1211 # define YYLEX yylex (YYLEX_PARAM) 1212 #else 1213 # define YYLEX yylex () 1214 #endif 1215 1216 /* Enable debugging if requested. */ 1217 #if YYDEBUG 1218 1219 # ifndef YYFPRINTF 1220 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 1221 # define YYFPRINTF fprintf 1222 # endif 1223 1224 # define YYDPRINTF(Args) \ 1225 do { \ 1226 if (yydebug) \ 1227 YYFPRINTF Args; \ 1228 } while (0) 1229 1230 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 1231 do { \ 1232 if (yydebug) \ 1233 { \ 1234 YYFPRINTF (stderr, "%s ", Title); \ 1235 yysymprint (stderr, \ 1236 Type, Value); \ 1237 YYFPRINTF (stderr, "\n"); \ 1238 } \ 1239 } while (0) 1240 1241 /*------------------------------------------------------------------. 1242 | yy_stack_print -- Print the state stack from its BOTTOM up to its | 1243 | TOP (included). | 1244 `------------------------------------------------------------------*/ 1245 1246 #if defined (__STDC__) || defined (__cplusplus) 1247 static void 1248 yy_stack_print (short int *bottom, short int *top) 1249 #else 1250 static void 1251 yy_stack_print (bottom, top) 1252 short int *bottom; 1253 short int *top; 1254 #endif 1255 { 1256 YYFPRINTF (stderr, "Stack now"); 1257 for (/* Nothing. */; bottom <= top; ++bottom) 1258 YYFPRINTF (stderr, " %d", *bottom); 1259 YYFPRINTF (stderr, "\n"); 1260 } 1261 1262 # define YY_STACK_PRINT(Bottom, Top) \ 1263 do { \ 1264 if (yydebug) \ 1265 yy_stack_print ((Bottom), (Top)); \ 1266 } while (0) 1267 1268 1269 /*------------------------------------------------. 1270 | Report that the YYRULE is going to be reduced. | 1271 `------------------------------------------------*/ 1272 1273 #if defined (__STDC__) || defined (__cplusplus) 1274 static void 1275 yy_reduce_print (int yyrule) 1276 #else 1277 static void 1278 yy_reduce_print (yyrule) 1279 int yyrule; 1280 #endif 1281 { 1282 int yyi; 1283 unsigned long int yylno = yyrline[yyrule]; 1284 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ", 1285 yyrule - 1, yylno); 1286 /* Print the symbols being reduced, and their result. */ 1287 for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) 1288 YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]); 1289 YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]); 1290 } 1291 1292 # define YY_REDUCE_PRINT(Rule) \ 1293 do { \ 1294 if (yydebug) \ 1295 yy_reduce_print (Rule); \ 1296 } while (0) 1297 1298 /* Nonzero means print parse trace. It is left uninitialized so that 1299 multiple parsers can coexist. */ 1300 int yydebug; 1301 #else /* !YYDEBUG */ 1302 # define YYDPRINTF(Args) 1303 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) 1304 # define YY_STACK_PRINT(Bottom, Top) 1305 # define YY_REDUCE_PRINT(Rule) 1306 #endif /* !YYDEBUG */ 1307 1308 1309 /* YYINITDEPTH -- initial size of the parser's stacks. */ 1310 #ifndef YYINITDEPTH 1311 # define YYINITDEPTH 200 1312 #endif 1313 1314 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1315 if the built-in stack extension method is used). 1316 1317 Do not make this value too large; the results are undefined if 1318 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1319 evaluated with infinite-precision integer arithmetic. */ 1320 1321 #ifndef YYMAXDEPTH 1322 # define YYMAXDEPTH 10000 1323 #endif 1324 1325 1326 1328 #if YYERROR_VERBOSE 1329 1330 # ifndef yystrlen 1331 # if defined (__GLIBC__) && defined (_STRING_H) 1332 # define yystrlen strlen 1333 # else 1334 /* Return the length of YYSTR. */ 1335 static YYSIZE_T 1336 # if defined (__STDC__) || defined (__cplusplus) 1337 yystrlen (const char *yystr) 1338 # else 1339 yystrlen (yystr) 1340 const char *yystr; 1341 # endif 1342 { 1343 const char *yys = yystr; 1344 1345 while (*yys++ != '\0') 1346 continue; 1347 1348 return yys - yystr - 1; 1349 } 1350 # endif 1351 # endif 1352 1353 # ifndef yystpcpy 1354 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) 1355 # define yystpcpy stpcpy 1356 # else 1357 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 1358 YYDEST. */ 1359 static char * 1360 # if defined (__STDC__) || defined (__cplusplus) 1361 yystpcpy (char *yydest, const char *yysrc) 1362 # else 1363 yystpcpy (yydest, yysrc) 1364 char *yydest; 1365 const char *yysrc; 1366 # endif 1367 { 1368 char *yyd = yydest; 1369 const char *yys = yysrc; 1370 1371 while ((*yyd++ = *yys++) != '\0') 1372 continue; 1373 1374 return yyd - 1; 1375 } 1376 # endif 1377 # endif 1378 1379 # ifndef yytnamerr 1380 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary 1381 quotes and backslashes, so that it's suitable for yyerror. The 1382 heuristic is that double-quoting is unnecessary unless the string 1383 contains an apostrophe, a comma, or backslash (other than 1384 backslash-backslash). YYSTR is taken from yytname. If YYRES is 1385 null, do not copy; instead, return the length of what the result 1386 would have been. */ 1387 static YYSIZE_T 1388 yytnamerr (char *yyres, const char *yystr) 1389 { 1390 if (*yystr == '"') 1391 { 1392 size_t yyn = 0; 1393 char const *yyp = yystr; 1394 1395 for (;;) 1396 switch (*++yyp) 1397 { 1398 case '\'': 1399 case ',': 1400 goto do_not_strip_quotes; 1401 1402 case '\\': 1403 if (*++yyp != '\\') 1404 goto do_not_strip_quotes; 1405 /* Fall through. */ 1406 default: 1407 if (yyres) 1408 yyres[yyn] = *yyp; 1409 yyn++; 1410 break; 1411 1412 case '"': 1413 if (yyres) 1414 yyres[yyn] = '\0'; 1415 return yyn; 1416 } 1417 do_not_strip_quotes: ; 1418 } 1419 1420 if (! yyres) 1421 return yystrlen (yystr); 1422 1423 return yystpcpy (yyres, yystr) - yyres; 1424 } 1425 # endif 1426 1427 #endif /* YYERROR_VERBOSE */ 1428 1429 1430 1432 #if YYDEBUG 1433 /*--------------------------------. 1434 | Print this symbol on YYOUTPUT. | 1435 `--------------------------------*/ 1436 1437 #if defined (__STDC__) || defined (__cplusplus) 1438 static void 1439 yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep) 1440 #else 1441 static void 1442 yysymprint (yyoutput, yytype, yyvaluep) 1443 FILE *yyoutput; 1444 int yytype; 1445 YYSTYPE *yyvaluep; 1446 #endif 1447 { 1448 /* Pacify ``unused variable'' warnings. */ 1449 (void) yyvaluep; 1450 1451 if (yytype < YYNTOKENS) 1452 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 1453 else 1454 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 1455 1456 1457 # ifdef YYPRINT 1458 if (yytype < YYNTOKENS) 1459 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 1460 # endif 1461 switch (yytype) 1462 { 1463 default: 1464 break; 1465 } 1466 YYFPRINTF (yyoutput, ")"); 1467 } 1468 1469 #endif /* ! YYDEBUG */ 1470 /*-----------------------------------------------. 1471 | Release the memory associated to this symbol. | 1472 `-----------------------------------------------*/ 1473 1474 #if defined (__STDC__) || defined (__cplusplus) 1475 static void 1476 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) 1477 #else 1478 static void 1479 yydestruct (yymsg, yytype, yyvaluep) 1480 const char *yymsg; 1481 int yytype; 1482 YYSTYPE *yyvaluep; 1483 #endif 1484 { 1485 /* Pacify ``unused variable'' warnings. */ 1486 (void) yyvaluep; 1487 1488 if (!yymsg) 1489 yymsg = "Deleting"; 1490 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 1491 1492 switch (yytype) 1493 { 1494 1495 default: 1496 break; 1497 } 1498 } 1499 1500 1502 /* Prevent warnings from -Wmissing-prototypes. */ 1503 1504 #ifdef YYPARSE_PARAM 1505 # if defined (__STDC__) || defined (__cplusplus) 1506 int yyparse (void *YYPARSE_PARAM); 1507 # else 1508 int yyparse (); 1509 # endif 1510 #else /* ! YYPARSE_PARAM */ 1511 #if defined (__STDC__) || defined (__cplusplus) 1512 int yyparse (void); 1513 #else 1514 int yyparse (); 1515 #endif 1516 #endif /* ! YYPARSE_PARAM */ 1517 1518 1519 1520 /* The look-ahead symbol. */ 1521 int yychar; 1522 1523 /* The semantic value of the look-ahead symbol. */ 1524 YYSTYPE yylval; 1525 1526 /* Number of syntax errors so far. */ 1527 int yynerrs; 1528 1529 1530 1531 /*----------. 1532 | yyparse. | 1533 `----------*/ 1534 1535 #ifdef YYPARSE_PARAM 1536 # if defined (__STDC__) || defined (__cplusplus) 1537 int yyparse (void *YYPARSE_PARAM) 1538 # else 1539 int yyparse (YYPARSE_PARAM) 1540 void *YYPARSE_PARAM; 1541 # endif 1542 #else /* ! YYPARSE_PARAM */ 1543 #if defined (__STDC__) || defined (__cplusplus) 1544 int 1545 yyparse (void) 1546 #else 1547 int 1548 yyparse () 1549 ; 1550 #endif 1551 #endif 1552 { 1553 1554 int yystate; 1555 int yyn; 1556 int yyresult; 1557 /* Number of tokens to shift before error messages enabled. */ 1558 int yyerrstatus; 1559 /* Look-ahead token as an internal (translated) token number. */ 1560 int yytoken = 0; 1561 1562 /* Three stacks and their tools: 1563 `yyss': related to states, 1564 `yyvs': related to semantic values, 1565 `yyls': related to locations. 1566 1567 Refer to the stacks thru separate pointers, to allow yyoverflow 1568 to reallocate them elsewhere. */ 1569 1570 /* The state stack. */ 1571 short int yyssa[YYINITDEPTH]; 1572 short int *yyss = yyssa; 1573 short int *yyssp; 1574 1575 /* The semantic value stack. */ 1576 YYSTYPE yyvsa[YYINITDEPTH]; 1577 YYSTYPE *yyvs = yyvsa; 1578 YYSTYPE *yyvsp; 1579 1580 1581 1582 #define YYPOPSTACK (yyvsp--, yyssp--) 1583 1584 YYSIZE_T yystacksize = YYINITDEPTH; 1585 1586 /* The variables used to return semantic value and location from the 1587 action routines. */ 1588 YYSTYPE yyval; 1589 1590 1591 /* When reducing, the number of symbols on the RHS of the reduced 1592 rule. */ 1593 int yylen; 1594 1595 YYDPRINTF ((stderr, "Starting parse\n")); 1596 1597 yystate = 0; 1598 yyerrstatus = 0; 1599 yynerrs = 0; 1600 yychar = YYEMPTY; /* Cause a token to be read. */ 1601 1602 /* Initialize stack pointers. 1603 Waste one element of value and location stack 1604 so that they stay on the same level as the state stack. 1605 The wasted elements are never initialized. */ 1606 1607 yyssp = yyss; 1608 yyvsp = yyvs; 1609 1610 goto yysetstate; 1611 1612 /*------------------------------------------------------------. 1613 | yynewstate -- Push a new state, which is found in yystate. | 1614 `------------------------------------------------------------*/ 1615 yynewstate: 1616 /* In all cases, when you get here, the value and location stacks 1617 have just been pushed. so pushing a state here evens the stacks. 1618 */ 1619 yyssp++; 1620 1621 yysetstate: 1622 *yyssp = yystate; 1623 1624 if (yyss + yystacksize - 1 <= yyssp) 1625 { 1626 /* Get the current used size of the three stacks, in elements. */ 1627 YYSIZE_T yysize = yyssp - yyss + 1; 1628 1629 #ifdef yyoverflow 1630 { 1631 /* Give user a chance to reallocate the stack. Use copies of 1632 these so that the &'s don't force the real ones into 1633 memory. */ 1634 YYSTYPE *yyvs1 = yyvs; 1635 short int *yyss1 = yyss; 1636 1637 1638 /* Each stack pointer address is followed by the size of the 1639 data in use in that stack, in bytes. This used to be a 1640 conditional around just the two extra args, but that might 1641 be undefined if yyoverflow is a macro. */ 1642 yyoverflow (YY_("memory exhausted"), 1643 &yyss1, yysize * sizeof (*yyssp), 1644 &yyvs1, yysize * sizeof (*yyvsp), 1645 1646 &yystacksize); 1647 1648 yyss = yyss1; 1649 yyvs = yyvs1; 1650 } 1651 #else /* no yyoverflow */ 1652 # ifndef YYSTACK_RELOCATE 1653 goto yyexhaustedlab; 1654 # else 1655 /* Extend the stack our own way. */ 1656 if (YYMAXDEPTH <= yystacksize) 1657 goto yyexhaustedlab; 1658 yystacksize *= 2; 1659 if (YYMAXDEPTH < yystacksize) 1660 yystacksize = YYMAXDEPTH; 1661 1662 { 1663 short int *yyss1 = yyss; 1664 union yyalloc *yyptr = 1665 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 1666 if (! yyptr) 1667 goto yyexhaustedlab; 1668 YYSTACK_RELOCATE (yyss); 1669 YYSTACK_RELOCATE (yyvs); 1670 1671 # undef YYSTACK_RELOCATE 1672 if (yyss1 != yyssa) 1673 YYSTACK_FREE (yyss1); 1674 } 1675 # endif 1676 #endif /* no yyoverflow */ 1677 1678 yyssp = yyss + yysize - 1; 1679 yyvsp = yyvs + yysize - 1; 1680 1681 1682 YYDPRINTF ((stderr, "Stack size increased to %lu\n", 1683 (unsigned long int) yystacksize)); 1684 1685 if (yyss + yystacksize - 1 <= yyssp) 1686 YYABORT; 1687 } 1688 1689 YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 1690 1691 goto yybackup; 1692 1693 /*-----------. 1694 | yybackup. | 1695 `-----------*/ 1696 yybackup: 1697 1698 /* Do appropriate processing given the current state. */ 1699 /* Read a look-ahead token if we need one and don't already have one. */ 1700 /* yyresume: */ 1701 1702 /* First try to decide what to do without reference to look-ahead token. */ 1703 1704 yyn = yypact[yystate]; 1705 if (yyn == YYPACT_NINF) 1706 goto yydefault; 1707 1708 /* Not known => get a look-ahead token if don't already have one. */ 1709 1710 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ 1711 if (yychar == YYEMPTY) 1712 { 1713 YYDPRINTF ((stderr, "Reading a token: ")); 1714 yychar = YYLEX; 1715 } 1716 1717 if (yychar <= YYEOF) 1718 { 1719 yychar = yytoken = YYEOF; 1720 YYDPRINTF ((stderr, "Now at end of input.\n")); 1721 } 1722 else 1723 { 1724 yytoken = YYTRANSLATE (yychar); 1725 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 1726 } 1727 1728 /* If the proper action on seeing token YYTOKEN is to reduce or to 1729 detect an error, take that action. */ 1730 yyn += yytoken; 1731 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 1732 goto yydefault; 1733 yyn = yytable[yyn]; 1734 if (yyn <= 0) 1735 { 1736 if (yyn == 0 || yyn == YYTABLE_NINF) 1737 goto yyerrlab; 1738 yyn = -yyn; 1739 goto yyreduce; 1740 } 1741 1742 if (yyn == YYFINAL) 1743 YYACCEPT; 1744 1745 /* Shift the look-ahead token. */ 1746 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 1747 1748 /* Discard the token being shifted unless it is eof. */ 1749 if (yychar != YYEOF) 1750 yychar = YYEMPTY; 1751 1752 *++yyvsp = yylval; 1753 1754 1755 /* Count tokens shifted since error; after three, turn off error 1756 status. */ 1757 if (yyerrstatus) 1758 yyerrstatus--; 1759 1760 yystate = yyn; 1761 goto yynewstate; 1762 1763 1764 /*-----------------------------------------------------------. 1765 | yydefault -- do the default action for the current state. | 1766 `-----------------------------------------------------------*/ 1767 yydefault: 1768 yyn = yydefact[yystate]; 1769 if (yyn == 0) 1770 goto yyerrlab; 1771 goto yyreduce; 1772 1773 1774 /*-----------------------------. 1775 | yyreduce -- Do a reduction. | 1776 `-----------------------------*/ 1777 yyreduce: 1778 /* yyn is the number of a rule to reduce with. */ 1779 yylen = yyr2[yyn]; 1780 1781 /* If YYLEN is nonzero, implement the default value of the action: 1782 `$$ = $1'. 1783 1784 Otherwise, the following line sets YYVAL to garbage. 1785 This behavior is undocumented and Bison 1786 users should not rely upon it. Assigning to YYVAL 1787 unconditionally makes the parser a bit smaller, and it avoids a 1788 GCC warning that YYVAL may be used uninitialized. */ 1789 yyval = yyvsp[1-yylen]; 1790 1791 1792 YY_REDUCE_PRINT (yyn); 1793 switch (yyn) 1794 { 1795 case 2: 1796 #line 211 "grammar.y" 1797 { 1798 finish_parse((yyvsp[0].blk).b); 1799 } 1800 break; 1801 1802 case 4: 1803 #line 216 "grammar.y" 1804 { (yyval.blk).q = qerr; } 1805 break; 1806 1807 case 6: 1808 #line 219 "grammar.y" 1809 { gen_and((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); } 1810 break; 1811 1812 case 7: 1813 #line 220 "grammar.y" 1814 { gen_and((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); } 1815 break; 1816 1817 case 8: 1818 #line 221 "grammar.y" 1819 { gen_or((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); } 1820 break; 1821 1822 case 9: 1823 #line 222 "grammar.y" 1824 { gen_or((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); } 1825 break; 1826 1827 case 10: 1828 #line 224 "grammar.y" 1829 { (yyval.blk) = (yyvsp[-1].blk); } 1830 break; 1831 1832 case 11: 1833 #line 226 "grammar.y" 1834 { (yyval.blk) = (yyvsp[-1].blk); } 1835 break; 1836 1837 case 13: 1838 #line 229 "grammar.y" 1839 { (yyval.blk).b = gen_ncode(NULL, (bpf_u_int32)(yyvsp[0].i), 1840 (yyval.blk).q = (yyvsp[-1].blk).q); } 1841 break; 1842 1843 case 14: 1844 #line 231 "grammar.y" 1845 { (yyval.blk) = (yyvsp[-1].blk); } 1846 break; 1847 1848 case 15: 1849 #line 233 "grammar.y" 1850 { (yyval.blk).b = gen_scode((yyvsp[0].s), (yyval.blk).q = (yyvsp[-1].blk).q); } 1851 break; 1852 1853 case 16: 1854 #line 234 "grammar.y" 1855 { (yyval.blk).b = gen_mcode((yyvsp[-2].s), NULL, (yyvsp[0].i), 1856 (yyval.blk).q = (yyvsp[-3].blk).q); } 1857 break; 1858 1859 case 17: 1860 #line 236 "grammar.y" 1861 { (yyval.blk).b = gen_mcode((yyvsp[-2].s), (yyvsp[0].s), 0, 1862 (yyval.blk).q = (yyvsp[-3].blk).q); } 1863 break; 1864 1865 case 18: 1866 #line 238 "grammar.y" 1867 { 1868 /* Decide how to parse HID based on proto */ 1869 (yyval.blk).q = (yyvsp[-1].blk).q; 1870 (yyval.blk).b = gen_ncode((yyvsp[0].s), 0, (yyval.blk).q); 1871 } 1872 break; 1873 1874 case 19: 1875 #line 243 "grammar.y" 1876 { 1877 #ifdef INET6 1878 (yyval.blk).b = gen_mcode6((yyvsp[-2].s), NULL, (yyvsp[0].i), 1879 (yyval.blk).q = (yyvsp[-3].blk).q); 1880 #else 1881 bpf_error("'ip6addr/prefixlen' not supported " 1882 "in this configuration"); 1883 #endif /*INET6*/ 1884 } 1885 break; 1886 1887 case 20: 1888 #line 252 "grammar.y" 1889 { 1890 #ifdef INET6 1891 (yyval.blk).b = gen_mcode6((yyvsp[0].s), 0, 128, 1892 (yyval.blk).q = (yyvsp[-1].blk).q); 1893 #else 1894 bpf_error("'ip6addr' not supported " 1895 "in this configuration"); 1896 #endif /*INET6*/ 1897 } 1898 break; 1899 1900 case 21: 1901 #line 261 "grammar.y" 1902 { 1903 (yyval.blk).b = gen_ecode((yyvsp[0].e), (yyval.blk).q = (yyvsp[-1].blk).q); 1904 /* 1905 * $1 was allocated by "pcap_ether_aton()", 1906 * so we must free it now that we're done 1907 * with it. 1908 */ 1909 free((yyvsp[0].e)); 1910 } 1911 break; 1912 1913 case 22: 1914 #line 270 "grammar.y" 1915 { 1916 (yyval.blk).b = gen_acode((yyvsp[0].e), (yyval.blk).q = (yyvsp[-1].blk).q); 1917 /* 1918 * $1 was allocated by "pcap_ether_aton()", 1919 * so we must free it now that we're done 1920 * with it. 1921 */ 1922 free((yyvsp[0].e)); 1923 } 1924 break; 1925 1926 case 23: 1927 #line 279 "grammar.y" 1928 { gen_not((yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); } 1929 break; 1930 1931 case 24: 1932 #line 281 "grammar.y" 1933 { (yyval.blk) = (yyvsp[-1].blk); } 1934 break; 1935 1936 case 25: 1937 #line 283 "grammar.y" 1938 { (yyval.blk) = (yyvsp[-1].blk); } 1939 break; 1940 1941 case 27: 1942 #line 286 "grammar.y" 1943 { gen_and((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); } 1944 break; 1945 1946 case 28: 1947 #line 287 "grammar.y" 1948 { gen_or((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); } 1949 break; 1950 1951 case 29: 1952 #line 289 "grammar.y" 1953 { (yyval.blk).b = gen_ncode(NULL, (bpf_u_int32)(yyvsp[0].i), 1954 (yyval.blk).q = (yyvsp[-1].blk).q); } 1955 break; 1956 1957 case 32: 1958 #line 294 "grammar.y" 1959 { gen_not((yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); } 1960 break; 1961 1962 case 33: 1963 #line 296 "grammar.y" 1964 { QSET((yyval.blk).q, (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i)); } 1965 break; 1966 1967 case 34: 1968 #line 297 "grammar.y" 1969 { QSET((yyval.blk).q, (yyvsp[-1].i), (yyvsp[0].i), Q_DEFAULT); } 1970 break; 1971 1972 case 35: 1973 #line 298 "grammar.y" 1974 { QSET((yyval.blk).q, (yyvsp[-1].i), Q_DEFAULT, (yyvsp[0].i)); } 1975 break; 1976 1977 case 36: 1978 #line 299 "grammar.y" 1979 { QSET((yyval.blk).q, (yyvsp[-1].i), Q_DEFAULT, Q_PROTO); } 1980 break; 1981 1982 case 37: 1983 #line 300 "grammar.y" 1984 { QSET((yyval.blk).q, (yyvsp[-1].i), Q_DEFAULT, Q_PROTOCHAIN); } 1985 break; 1986 1987 case 38: 1988 #line 301 "grammar.y" 1989 { QSET((yyval.blk).q, (yyvsp[-1].i), Q_DEFAULT, (yyvsp[0].i)); } 1990 break; 1991 1992 case 39: 1993 #line 303 "grammar.y" 1994 { (yyval.blk) = (yyvsp[0].blk); } 1995 break; 1996 1997 case 40: 1998 #line 304 "grammar.y" 1999 { (yyval.blk).b = (yyvsp[-1].blk).b; (yyval.blk).q = (yyvsp[-2].blk).q; } 2000 break; 2001 2002 case 41: 2003 #line 305 "grammar.y" 2004 { (yyval.blk).b = gen_proto_abbrev((yyvsp[0].i)); (yyval.blk).q = qerr; } 2005 break; 2006 2007 case 42: 2008 #line 306 "grammar.y" 2009 { (yyval.blk).b = gen_relation((yyvsp[-1].i), (yyvsp[-2].a), (yyvsp[0].a), 0); 2010 (yyval.blk).q = qerr; } 2011 break; 2012 2013 case 43: 2014 #line 308 "grammar.y" 2015 { (yyval.blk).b = gen_relation((yyvsp[-1].i), (yyvsp[-2].a), (yyvsp[0].a), 1); 2016 (yyval.blk).q = qerr; } 2017 break; 2018 2019 case 44: 2020 #line 310 "grammar.y" 2021 { (yyval.blk).b = (yyvsp[0].rblk); (yyval.blk).q = qerr; } 2022 break; 2023 2024 case 45: 2025 #line 311 "grammar.y" 2026 { (yyval.blk).b = gen_atmtype_abbrev((yyvsp[0].i)); (yyval.blk).q = qerr; } 2027 break; 2028 2029 case 46: 2030 #line 312 "grammar.y" 2031 { (yyval.blk).b = gen_atmmulti_abbrev((yyvsp[0].i)); (yyval.blk).q = qerr; } 2032 break; 2033 2034 case 47: 2035 #line 313 "grammar.y" 2036 { (yyval.blk).b = (yyvsp[0].blk).b; (yyval.blk).q = qerr; } 2037 break; 2038 2039 case 48: 2040 #line 314 "grammar.y" 2041 { (yyval.blk).b = gen_mtp2type_abbrev((yyvsp[0].i)); (yyval.blk).q = qerr; } 2042 break; 2043 2044 case 49: 2045 #line 315 "grammar.y" 2046 { (yyval.blk).b = (yyvsp[0].blk).b; (yyval.blk).q = qerr; } 2047 break; 2048 2049 case 51: 2050 #line 319 "grammar.y" 2051 { (yyval.i) = Q_DEFAULT; } 2052 break; 2053 2054 case 52: 2055 #line 322 "grammar.y" 2056 { (yyval.i) = Q_SRC; } 2057 break; 2058 2059 case 53: 2060 #line 323 "grammar.y" 2061 { (yyval.i) = Q_DST; } 2062 break; 2063 2064 case 54: 2065 #line 324 "grammar.y" 2066 { (yyval.i) = Q_OR; } 2067 break; 2068 2069 case 55: 2070 #line 325 "grammar.y" 2071 { (yyval.i) = Q_OR; } 2072 break; 2073 2074 case 56: 2075 #line 326 "grammar.y" 2076 { (yyval.i) = Q_AND; } 2077 break; 2078 2079 case 57: 2080 #line 327 "grammar.y" 2081 { (yyval.i) = Q_AND; } 2082 break; 2083 2084 case 58: 2085 #line 330 "grammar.y" 2086 { (yyval.i) = Q_HOST; } 2087 break; 2088 2089 case 59: 2090 #line 331 "grammar.y" 2091 { (yyval.i) = Q_NET; } 2092 break; 2093 2094 case 60: 2095 #line 332 "grammar.y" 2096 { (yyval.i) = Q_PORT; } 2097 break; 2098 2099 case 61: 2100 #line 333 "grammar.y" 2101 { (yyval.i) = Q_PORTRANGE; } 2102 break; 2103 2104 case 62: 2105 #line 336 "grammar.y" 2106 { (yyval.i) = Q_GATEWAY; } 2107 break; 2108 2109 case 63: 2110 #line 338 "grammar.y" 2111 { (yyval.i) = Q_LINK; } 2112 break; 2113 2114 case 64: 2115 #line 339 "grammar.y" 2116 { (yyval.i) = Q_IP; } 2117 break; 2118 2119 case 65: 2120 #line 340 "grammar.y" 2121 { (yyval.i) = Q_ARP; } 2122 break; 2123 2124 case 66: 2125 #line 341 "grammar.y" 2126 { (yyval.i) = Q_RARP; } 2127 break; 2128 2129 case 67: 2130 #line 342 "grammar.y" 2131 { (yyval.i) = Q_SCTP; } 2132 break; 2133 2134 case 68: 2135 #line 343 "grammar.y" 2136 { (yyval.i) = Q_TCP; } 2137 break; 2138 2139 case 69: 2140 #line 344 "grammar.y" 2141 { (yyval.i) = Q_UDP; } 2142 break; 2143 2144 case 70: 2145 #line 345 "grammar.y" 2146 { (yyval.i) = Q_ICMP; } 2147 break; 2148 2149 case 71: 2150 #line 346 "grammar.y" 2151 { (yyval.i) = Q_IGMP; } 2152 break; 2153 2154 case 72: 2155 #line 347 "grammar.y" 2156 { (yyval.i) = Q_IGRP; } 2157 break; 2158 2159 case 73: 2160 #line 348 "grammar.y" 2161 { (yyval.i) = Q_PIM; } 2162 break; 2163 2164 case 74: 2165 #line 349 "grammar.y" 2166 { (yyval.i) = Q_VRRP; } 2167 break; 2168 2169 case 75: 2170 #line 350 "grammar.y" 2171 { (yyval.i) = Q_ATALK; } 2172 break; 2173 2174 case 76: 2175 #line 351 "grammar.y" 2176 { (yyval.i) = Q_AARP; } 2177 break; 2178 2179 case 77: 2180 #line 352 "grammar.y" 2181 { (yyval.i) = Q_DECNET; } 2182 break; 2183 2184 case 78: 2185 #line 353 "grammar.y" 2186 { (yyval.i) = Q_LAT; } 2187 break; 2188 2189 case 79: 2190 #line 354 "grammar.y" 2191 { (yyval.i) = Q_SCA; } 2192 break; 2193 2194 case 80: 2195 #line 355 "grammar.y" 2196 { (yyval.i) = Q_MOPDL; } 2197 break; 2198 2199 case 81: 2200 #line 356 "grammar.y" 2201 { (yyval.i) = Q_MOPRC; } 2202 break; 2203 2204 case 82: 2205 #line 357 "grammar.y" 2206 { (yyval.i) = Q_IPV6; } 2207 break; 2208 2209 case 83: 2210 #line 358 "grammar.y" 2211 { (yyval.i) = Q_ICMPV6; } 2212 break; 2213 2214 case 84: 2215 #line 359 "grammar.y" 2216 { (yyval.i) = Q_AH; } 2217 break; 2218 2219 case 85: 2220 #line 360 "grammar.y" 2221 { (yyval.i) = Q_ESP; } 2222 break; 2223 2224 case 86: 2225 #line 361 "grammar.y" 2226 { (yyval.i) = Q_ISO; } 2227 break; 2228 2229 case 87: 2230 #line 362 "grammar.y" 2231 { (yyval.i) = Q_ESIS; } 2232 break; 2233 2234 case 88: 2235 #line 363 "grammar.y" 2236 { (yyval.i) = Q_ISIS; } 2237 break; 2238 2239 case 89: 2240 #line 364 "grammar.y" 2241 { (yyval.i) = Q_ISIS_L1; } 2242 break; 2243 2244 case 90: 2245 #line 365 "grammar.y" 2246 { (yyval.i) = Q_ISIS_L2; } 2247 break; 2248 2249 case 91: 2250 #line 366 "grammar.y" 2251 { (yyval.i) = Q_ISIS_IIH; } 2252 break; 2253 2254 case 92: 2255 #line 367 "grammar.y" 2256 { (yyval.i) = Q_ISIS_LSP; } 2257 break; 2258 2259 case 93: 2260 #line 368 "grammar.y" 2261 { (yyval.i) = Q_ISIS_SNP; } 2262 break; 2263 2264 case 94: 2265 #line 369 "grammar.y" 2266 { (yyval.i) = Q_ISIS_PSNP; } 2267 break; 2268 2269 case 95: 2270 #line 370 "grammar.y" 2271 { (yyval.i) = Q_ISIS_CSNP; } 2272 break; 2273 2274 case 96: 2275 #line 371 "grammar.y" 2276 { (yyval.i) = Q_CLNP; } 2277 break; 2278 2279 case 97: 2280 #line 372 "grammar.y" 2281 { (yyval.i) = Q_STP; } 2282 break; 2283 2284 case 98: 2285 #line 373 "grammar.y" 2286 { (yyval.i) = Q_IPX; } 2287 break; 2288 2289 case 99: 2290 #line 374 "grammar.y" 2291 { (yyval.i) = Q_NETBEUI; } 2292 break; 2293 2294 case 100: 2295 #line 375 "grammar.y" 2296 { (yyval.i) = Q_RADIO; } 2297 break; 2298 2299 case 101: 2300 #line 377 "grammar.y" 2301 { (yyval.rblk) = gen_broadcast((yyvsp[-1].i)); } 2302 break; 2303 2304 case 102: 2305 #line 378 "grammar.y" 2306 { (yyval.rblk) = gen_multicast((yyvsp[-1].i)); } 2307 break; 2308 2309 case 103: 2310 #line 379 "grammar.y" 2311 { (yyval.rblk) = gen_less((yyvsp[0].i)); } 2312 break; 2313 2314 case 104: 2315 #line 380 "grammar.y" 2316 { (yyval.rblk) = gen_greater((yyvsp[0].i)); } 2317 break; 2318 2319 case 105: 2320 #line 381 "grammar.y" 2321 { (yyval.rblk) = gen_byteop((yyvsp[-1].i), (yyvsp[-2].i), (yyvsp[0].i)); } 2322 break; 2323 2324 case 106: 2325 #line 382 "grammar.y" 2326 { (yyval.rblk) = gen_inbound(0); } 2327 break; 2328 2329 case 107: 2330 #line 383 "grammar.y" 2331 { (yyval.rblk) = gen_inbound(1); } 2332 break; 2333 2334 case 108: 2335 #line 384 "grammar.y" 2336 { (yyval.rblk) = gen_vlan((yyvsp[0].i)); } 2337 break; 2338 2339 case 109: 2340 #line 385 "grammar.y" 2341 { (yyval.rblk) = gen_vlan(-1); } 2342 break; 2343 2344 case 110: 2345 #line 386 "grammar.y" 2346 { (yyval.rblk) = gen_mpls((yyvsp[0].i)); } 2347 break; 2348 2349 case 111: 2350 #line 387 "grammar.y" 2351 { (yyval.rblk) = gen_mpls(-1); } 2352 break; 2353 2354 case 112: 2355 #line 388 "grammar.y" 2356 { (yyval.rblk) = gen_pppoed(); } 2357 break; 2358 2359 case 113: 2360 #line 389 "grammar.y" 2361 { (yyval.rblk) = gen_pppoes(); } 2362 break; 2363 2364 case 114: 2365 #line 390 "grammar.y" 2366 { (yyval.rblk) = (yyvsp[0].rblk); } 2367 break; 2368 2369 case 115: 2370 #line 393 "grammar.y" 2371 { (yyval.rblk) = gen_pf_ifname((yyvsp[0].s)); } 2372 break; 2373 2374 case 116: 2375 #line 394 "grammar.y" 2376 { (yyval.rblk) = gen_pf_ruleset((yyvsp[0].s)); } 2377 break; 2378 2379 case 117: 2380 #line 395 "grammar.y" 2381 { (yyval.rblk) = gen_pf_rnr((yyvsp[0].i)); } 2382 break; 2383 2384 case 118: 2385 #line 396 "grammar.y" 2386 { (yyval.rblk) = gen_pf_srnr((yyvsp[0].i)); } 2387 break; 2388 2389 case 119: 2390 #line 397 "grammar.y" 2391 { (yyval.rblk) = gen_pf_reason((yyvsp[0].i)); } 2392 break; 2393 2394 case 120: 2395 #line 398 "grammar.y" 2396 { (yyval.rblk) = gen_pf_action((yyvsp[0].i)); } 2397 break; 2398 2399 case 121: 2400 #line 401 "grammar.y" 2401 { (yyval.i) = (yyvsp[0].i); } 2402 break; 2403 2404 case 122: 2405 #line 402 "grammar.y" 2406 { (yyval.i) = pfreason_to_num((yyvsp[0].s)); } 2407 break; 2408 2409 case 123: 2410 #line 405 "grammar.y" 2411 { (yyval.i) = pfaction_to_num((yyvsp[0].s)); } 2412 break; 2413 2414 case 124: 2415 #line 408 "grammar.y" 2416 { (yyval.i) = BPF_JGT; } 2417 break; 2418 2419 case 125: 2420 #line 409 "grammar.y" 2421 { (yyval.i) = BPF_JGE; } 2422 break; 2423 2424 case 126: 2425 #line 410 "grammar.y" 2426 { (yyval.i) = BPF_JEQ; } 2427 break; 2428 2429 case 127: 2430 #line 412 "grammar.y" 2431 { (yyval.i) = BPF_JGT; } 2432 break; 2433 2434 case 128: 2435 #line 413 "grammar.y" 2436 { (yyval.i) = BPF_JGE; } 2437 break; 2438 2439 case 129: 2440 #line 414 "grammar.y" 2441 { (yyval.i) = BPF_JEQ; } 2442 break; 2443 2444 case 130: 2445 #line 416 "grammar.y" 2446 { (yyval.a) = gen_loadi((yyvsp[0].i)); } 2447 break; 2448 2449 case 132: 2450 #line 419 "grammar.y" 2451 { (yyval.a) = gen_load((yyvsp[-3].i), (yyvsp[-1].a), 1); } 2452 break; 2453 2454 case 133: 2455 #line 420 "grammar.y" 2456 { (yyval.a) = gen_load((yyvsp[-5].i), (yyvsp[-3].a), (yyvsp[-1].i)); } 2457 break; 2458 2459 case 134: 2460 #line 421 "grammar.y" 2461 { (yyval.a) = gen_arth(BPF_ADD, (yyvsp[-2].a), (yyvsp[0].a)); } 2462 break; 2463 2464 case 135: 2465 #line 422 "grammar.y" 2466 { (yyval.a) = gen_arth(BPF_SUB, (yyvsp[-2].a), (yyvsp[0].a)); } 2467 break; 2468 2469 case 136: 2470 #line 423 "grammar.y" 2471 { (yyval.a) = gen_arth(BPF_MUL, (yyvsp[-2].a), (yyvsp[0].a)); } 2472 break; 2473 2474 case 137: 2475 #line 424 "grammar.y" 2476 { (yyval.a) = gen_arth(BPF_DIV, (yyvsp[-2].a), (yyvsp[0].a)); } 2477 break; 2478 2479 case 138: 2480 #line 425 "grammar.y" 2481 { (yyval.a) = gen_arth(BPF_AND, (yyvsp[-2].a), (yyvsp[0].a)); } 2482 break; 2483 2484 case 139: 2485 #line 426 "grammar.y" 2486 { (yyval.a) = gen_arth(BPF_OR, (yyvsp[-2].a), (yyvsp[0].a)); } 2487 break; 2488 2489 case 140: 2490 #line 427 "grammar.y" 2491 { (yyval.a) = gen_arth(BPF_LSH, (yyvsp[-2].a), (yyvsp[0].a)); } 2492 break; 2493 2494 case 141: 2495 #line 428 "grammar.y" 2496 { (yyval.a) = gen_arth(BPF_RSH, (yyvsp[-2].a), (yyvsp[0].a)); } 2497 break; 2498 2499 case 142: 2500 #line 429 "grammar.y" 2501 { (yyval.a) = gen_neg((yyvsp[0].a)); } 2502 break; 2503 2504 case 143: 2505 #line 430 "grammar.y" 2506 { (yyval.a) = (yyvsp[-1].a); } 2507 break; 2508 2509 case 144: 2510 #line 431 "grammar.y" 2511 { (yyval.a) = gen_loadlen(); } 2512 break; 2513 2514 case 145: 2515 #line 433 "grammar.y" 2516 { (yyval.i) = '&'; } 2517 break; 2518 2519 case 146: 2520 #line 434 "grammar.y" 2521 { (yyval.i) = '|'; } 2522 break; 2523 2524 case 147: 2525 #line 435 "grammar.y" 2526 { (yyval.i) = '<'; } 2527 break; 2528 2529 case 148: 2530 #line 436 "grammar.y" 2531 { (yyval.i) = '>'; } 2532 break; 2533 2534 case 149: 2535 #line 437 "grammar.y" 2536 { (yyval.i) = '='; } 2537 break; 2538 2539 case 151: 2540 #line 440 "grammar.y" 2541 { (yyval.i) = (yyvsp[-1].i); } 2542 break; 2543 2544 case 152: 2545 #line 442 "grammar.y" 2546 { (yyval.i) = A_LANE; } 2547 break; 2548 2549 case 153: 2550 #line 443 "grammar.y" 2551 { (yyval.i) = A_LLC; } 2552 break; 2553 2554 case 154: 2555 #line 444 "grammar.y" 2556 { (yyval.i) = A_METAC; } 2557 break; 2558 2559 case 155: 2560 #line 445 "grammar.y" 2561 { (yyval.i) = A_BCC; } 2562 break; 2563 2564 case 156: 2565 #line 446 "grammar.y" 2566 { (yyval.i) = A_OAMF4EC; } 2567 break; 2568 2569 case 157: 2570 #line 447 "grammar.y" 2571 { (yyval.i) = A_OAMF4SC; } 2572 break; 2573 2574 case 158: 2575 #line 448 "grammar.y" 2576 { (yyval.i) = A_SC; } 2577 break; 2578 2579 case 159: 2580 #line 449 "grammar.y" 2581 { (yyval.i) = A_ILMIC; } 2582 break; 2583 2584 case 160: 2585 #line 451 "grammar.y" 2586 { (yyval.i) = A_OAM; } 2587 break; 2588 2589 case 161: 2590 #line 452 "grammar.y" 2591 { (yyval.i) = A_OAMF4; } 2592 break; 2593 2594 case 162: 2595 #line 453 "grammar.y" 2596 { (yyval.i) = A_CONNECTMSG; } 2597 break; 2598 2599 case 163: 2600 #line 454 "grammar.y" 2601 { (yyval.i) = A_METACONNECT; } 2602 break; 2603 2604 case 164: 2605 #line 457 "grammar.y" 2606 { (yyval.blk).atmfieldtype = A_VPI; } 2607 break; 2608 2609 case 165: 2610 #line 458 "grammar.y" 2611 { (yyval.blk).atmfieldtype = A_VCI; } 2612 break; 2613 2614 case 167: 2615 #line 461 "grammar.y" 2616 { (yyval.blk).b = gen_atmfield_code((yyvsp[-2].blk).atmfieldtype, (bpf_int32)(yyvsp[0].i), (bpf_u_int32)(yyvsp[-1].i), 0); } 2617 break; 2618 2619 case 168: 2620 #line 462 "grammar.y" 2621 { (yyval.blk).b = gen_atmfield_code((yyvsp[-2].blk).atmfieldtype, (bpf_int32)(yyvsp[0].i), (bpf_u_int32)(yyvsp[-1].i), 1); } 2622 break; 2623 2624 case 169: 2625 #line 463 "grammar.y" 2626 { (yyval.blk).b = (yyvsp[-1].blk).b; (yyval.blk).q = qerr; } 2627 break; 2628 2629 case 170: 2630 #line 465 "grammar.y" 2631 { 2632 (yyval.blk).atmfieldtype = (yyvsp[-1].blk).atmfieldtype; 2633 if ((yyval.blk).atmfieldtype == A_VPI || 2634 (yyval.blk).atmfieldtype == A_VCI) 2635 (yyval.blk).b = gen_atmfield_code((yyval.blk).atmfieldtype, (bpf_int32) (yyvsp[0].i), BPF_JEQ, 0); 2636 } 2637 break; 2638 2639 case 172: 2640 #line 473 "grammar.y" 2641 { gen_or((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); } 2642 break; 2643 2644 case 173: 2645 #line 476 "grammar.y" 2646 { (yyval.i) = M_FISU; } 2647 break; 2648 2649 case 174: 2650 #line 477 "grammar.y" 2651 { (yyval.i) = M_LSSU; } 2652 break; 2653 2654 case 175: 2655 #line 478 "grammar.y" 2656 { (yyval.i) = M_MSU; } 2657 break; 2658 2659 case 176: 2660 #line 481 "grammar.y" 2661 { (yyval.blk).mtp3fieldtype = M_SIO; } 2662 break; 2663 2664 case 177: 2665 #line 482 "grammar.y" 2666 { (yyval.blk).mtp3fieldtype = M_OPC; } 2667 break; 2668 2669 case 178: 2670 #line 483 "grammar.y" 2671 { (yyval.blk).mtp3fieldtype = M_DPC; } 2672 break; 2673 2674 case 179: 2675 #line 484 "grammar.y" 2676 { (yyval.blk).mtp3fieldtype = M_SLS; } 2677 break; 2678 2679 case 181: 2680 #line 487 "grammar.y" 2681 { (yyval.blk).b = gen_mtp3field_code((yyvsp[-2].blk).mtp3fieldtype, (u_int)(yyvsp[0].i), (u_int)(yyvsp[-1].i), 0); } 2682 break; 2683 2684 case 182: 2685 #line 488 "grammar.y" 2686 { (yyval.blk).b = gen_mtp3field_code((yyvsp[-2].blk).mtp3fieldtype, (u_int)(yyvsp[0].i), (u_int)(yyvsp[-1].i), 1); } 2687 break; 2688 2689 case 183: 2690 #line 489 "grammar.y" 2691 { (yyval.blk).b = (yyvsp[-1].blk).b; (yyval.blk).q = qerr; } 2692 break; 2693 2694 case 184: 2695 #line 491 "grammar.y" 2696 { 2697 (yyval.blk).mtp3fieldtype = (yyvsp[-1].blk).mtp3fieldtype; 2698 if ((yyval.blk).mtp3fieldtype == M_SIO || 2699 (yyval.blk).mtp3fieldtype == M_OPC || 2700 (yyval.blk).mtp3fieldtype == M_DPC || 2701 (yyval.blk).mtp3fieldtype == M_SLS ) 2702 (yyval.blk).b = gen_mtp3field_code((yyval.blk).mtp3fieldtype, (u_int) (yyvsp[0].i), BPF_JEQ, 0); 2703 } 2704 break; 2705 2706 case 186: 2707 #line 501 "grammar.y" 2708 { gen_or((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); } 2709 break; 2710 2711 2712 default: break; 2713 } 2714 2715 /* Line 1126 of yacc.c. */ 2716 #line 2714 "y.tab.c" 2717 2718 yyvsp -= yylen; 2720 yyssp -= yylen; 2721 2722 2723 YY_STACK_PRINT (yyss, yyssp); 2724 2725 *++yyvsp = yyval; 2726 2727 2728 /* Now `shift' the result of the reduction. Determine what state 2729 that goes to, based on the state we popped back to and the rule 2730 number reduced by. */ 2731 2732 yyn = yyr1[yyn]; 2733 2734 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 2735 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 2736 yystate = yytable[yystate]; 2737 else 2738 yystate = yydefgoto[yyn - YYNTOKENS]; 2739 2740 goto yynewstate; 2741 2742 2743 /*------------------------------------. 2744 | yyerrlab -- here on detecting error | 2745 `------------------------------------*/ 2746 yyerrlab: 2747 /* If not already recovering from an error, report this error. */ 2748 if (!yyerrstatus) 2749 { 2750 ++yynerrs; 2751 #if YYERROR_VERBOSE 2752 yyn = yypact[yystate]; 2753 2754 if (YYPACT_NINF < yyn && yyn < YYLAST) 2755 { 2756 int yytype = YYTRANSLATE (yychar); 2757 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); 2758 YYSIZE_T yysize = yysize0; 2759 YYSIZE_T yysize1; 2760 int yysize_overflow = 0; 2761 char *yymsg = 0; 2762 # define YYERROR_VERBOSE_ARGS_MAXIMUM 5 2763 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 2764 int yyx; 2765 2766 #if 0 2767 /* This is so xgettext sees the translatable formats that are 2768 constructed on the fly. */ 2769 YY_("syntax error, unexpected %s"); 2770 YY_("syntax error, unexpected %s, expecting %s"); 2771 YY_("syntax error, unexpected %s, expecting %s or %s"); 2772 YY_("syntax error, unexpected %s, expecting %s or %s or %s"); 2773 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); 2774 #endif 2775 char *yyfmt; 2776 char const *yyf; 2777 static char const yyunexpected[] = "syntax error, unexpected %s"; 2778 static char const yyexpecting[] = ", expecting %s"; 2779 static char const yyor[] = " or %s"; 2780 char yyformat[sizeof yyunexpected 2781 + sizeof yyexpecting - 1 2782 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) 2783 * (sizeof yyor - 1))]; 2784 char const *yyprefix = yyexpecting; 2785 2786 /* Start YYX at -YYN if negative to avoid negative indexes in 2787 YYCHECK. */ 2788 int yyxbegin = yyn < 0 ? -yyn : 0; 2789 2790 /* Stay within bounds of both yycheck and yytname. */ 2791 int yychecklim = YYLAST - yyn; 2792 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 2793 int yycount = 1; 2794 2795 yyarg[0] = yytname[yytype]; 2796 yyfmt = yystpcpy (yyformat, yyunexpected); 2797 2798 for (yyx = yyxbegin; yyx < yyxend; ++yyx) 2799 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) 2800 { 2801 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 2802 { 2803 yycount = 1; 2804 yysize = yysize0; 2805 yyformat[sizeof yyunexpected - 1] = '\0'; 2806 break; 2807 } 2808 yyarg[yycount++] = yytname[yyx]; 2809 yysize1 = yysize + yytnamerr (0, yytname[yyx]); 2810 yysize_overflow |= yysize1 < yysize; 2811 yysize = yysize1; 2812 yyfmt = yystpcpy (yyfmt, yyprefix); 2813 yyprefix = yyor; 2814 } 2815 2816 yyf = YY_(yyformat); 2817 yysize1 = yysize + yystrlen (yyf); 2818 yysize_overflow |= yysize1 < yysize; 2819 yysize = yysize1; 2820 2821 if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM) 2822 yymsg = (char *) YYSTACK_ALLOC (yysize); 2823 if (yymsg) 2824 { 2825 /* Avoid sprintf, as that infringes on the user's name space. 2826 Don't have undefined behavior even if the translation 2827 produced a string with the wrong number of "%s"s. */ 2828 char *yyp = yymsg; 2829 int yyi = 0; 2830 while ((*yyp = *yyf)) 2831 { 2832 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) 2833 { 2834 yyp += yytnamerr (yyp, yyarg[yyi++]); 2835 yyf += 2; 2836 } 2837 else 2838 { 2839 yyp++; 2840 yyf++; 2841 } 2842 } 2843 yyerror (yymsg); 2844 YYSTACK_FREE (yymsg); 2845 } 2846 else 2847 { 2848 yyerror (YY_("syntax error")); 2849 goto yyexhaustedlab; 2850 } 2851 } 2852 else 2853 #endif /* YYERROR_VERBOSE */ 2854 yyerror (YY_("syntax error")); 2855 } 2856 2857 2858 2859 if (yyerrstatus == 3) 2860 { 2861 /* If just tried and failed to reuse look-ahead token after an 2862 error, discard it. */ 2863 2864 if (yychar <= YYEOF) 2865 { 2866 /* Return failure if at end of input. */ 2867 if (yychar == YYEOF) 2868 YYABORT; 2869 } 2870 else 2871 { 2872 yydestruct ("Error: discarding", yytoken, &yylval); 2873 yychar = YYEMPTY; 2874 } 2875 } 2876 2877 /* Else will try to reuse look-ahead token after shifting the error 2878 token. */ 2879 goto yyerrlab1; 2880 2881 2882 /*---------------------------------------------------. 2883 | yyerrorlab -- error raised explicitly by YYERROR. | 2884 `---------------------------------------------------*/ 2885 yyerrorlab: 2886 2887 /* Pacify compilers like GCC when the user code never invokes 2888 YYERROR and the label yyerrorlab therefore never appears in user 2889 code. */ 2890 if (0) 2891 goto yyerrorlab; 2892 2893 yyvsp -= yylen; 2894 yyssp -= yylen; 2895 yystate = *yyssp; 2896 goto yyerrlab1; 2897 2898 2899 /*-------------------------------------------------------------. 2900 | yyerrlab1 -- common code for both syntax error and YYERROR. | 2901 `-------------------------------------------------------------*/ 2902 yyerrlab1: 2903 yyerrstatus = 3; /* Each real token shifted decrements this. */ 2904 2905 for (;;) 2906 { 2907 yyn = yypact[yystate]; 2908 if (yyn != YYPACT_NINF) 2909 { 2910 yyn += YYTERROR; 2911 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 2912 { 2913 yyn = yytable[yyn]; 2914 if (0 < yyn) 2915 break; 2916 } 2917 } 2918 2919 /* Pop the current state because it cannot handle the error token. */ 2920 if (yyssp == yyss) 2921 YYABORT; 2922 2923 2924 yydestruct ("Error: popping", yystos[yystate], yyvsp); 2925 YYPOPSTACK; 2926 yystate = *yyssp; 2927 YY_STACK_PRINT (yyss, yyssp); 2928 } 2929 2930 if (yyn == YYFINAL) 2931 YYACCEPT; 2932 2933 *++yyvsp = yylval; 2934 2935 2936 /* Shift the error token. */ 2937 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 2938 2939 yystate = yyn; 2940 goto yynewstate; 2941 2942 2943 /*-------------------------------------. 2944 | yyacceptlab -- YYACCEPT comes here. | 2945 `-------------------------------------*/ 2946 yyacceptlab: 2947 yyresult = 0; 2948 goto yyreturn; 2949 2950 /*-----------------------------------. 2951 | yyabortlab -- YYABORT comes here. | 2952 `-----------------------------------*/ 2953 yyabortlab: 2954 yyresult = 1; 2955 goto yyreturn; 2956 2957 #ifndef yyoverflow 2958 /*-------------------------------------------------. 2959 | yyexhaustedlab -- memory exhaustion comes here. | 2960 `-------------------------------------------------*/ 2961 yyexhaustedlab: 2962 yyerror (YY_("memory exhausted")); 2963 yyresult = 2; 2964 /* Fall through. */ 2965 #endif 2966 2967 yyreturn: 2968 if (yychar != YYEOF && yychar != YYEMPTY) 2969 yydestruct ("Cleanup: discarding lookahead", 2970 yytoken, &yylval); 2971 while (yyssp != yyss) 2972 { 2973 yydestruct ("Cleanup: popping", 2974 yystos[*yyssp], yyvsp); 2975 YYPOPSTACK; 2976 } 2977 #ifndef yyoverflow 2978 if (yyss != yyssa) 2979 YYSTACK_FREE (yyss); 2980 #endif 2981 return yyresult; 2982 } 2983 2984 2985 #line 503 "grammar.y" 2986 2987 2988