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