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