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
str2tok(const char * str,const struct tok * toks)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
yyerror(const char * msg)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
pcap_parse()261 pcap_parse()
262 {
263 	return (yyparse());
264 }
265 #endif
266 
267 #ifdef HAVE_NET_PFVAR_H
268 static int
pfreason_to_num(const char * reason)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
pfaction_to_num(const char * action)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
pfreason_to_num(const char * reason)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
pfaction_to_num(const char * action)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
yy_symbol_value_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep)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
yy_symbol_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep)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
yy_stack_print(yytype_int16 * yybottom,yytype_int16 * yytop)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
yy_reduce_print(yytype_int16 * yyssp,YYSTYPE * yyvsp,int yyrule)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
yystrlen(const char * yystr)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 *
yystpcpy(char * yydest,const char * yysrc)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
yytnamerr(char * yyres,const char * yystr)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
yysyntax_error(YYSIZE_T * yymsg_alloc,char ** yymsg,yytype_int16 * yyssp,int yytoken)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
yydestruct(const char * yymsg,int yytype,YYSTYPE * yyvaluep)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
yyparse(void)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