xref: /netbsd-src/external/bsd/nsd/dist/zparser.c (revision e2d5644acf1561cc97b6a8c8d51fddf773bb3a81)
1 /* A Bison parser, made by GNU Bison 3.7.6.  */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5    Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6    Inc.
7 
8    This program is free software: you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation, either version 3 of the License, or
11    (at your option) any later version.
12 
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17 
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
20 
21 /* As a special exception, you may create a larger work that contains
22    part or all of the Bison parser skeleton and distribute that work
23    under terms of your choice, so long as that work isn't itself a
24    parser generator using the skeleton or a modified version thereof
25    as a parser skeleton.  Alternatively, if you modify or redistribute
26    the parser skeleton itself, you may (at your option) remove this
27    special exception, which will cause the skeleton and the resulting
28    Bison output files to be licensed under the GNU General Public
29    License without this special exception.
30 
31    This special exception was added by the Free Software Foundation in
32    version 2.2 of Bison.  */
33 
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35    simplifying the original so-called "semantic" parser.  */
36 
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38    especially those whose name start with YY_ or yy_.  They are
39    private implementation details that can be changed or removed.  */
40 
41 /* All symbols defined below should begin with yy or YY, to avoid
42    infringing on user name space.  This should be done even for local
43    variables, as they might otherwise be expanded by user macros.
44    There are some unavoidable exceptions within include files to
45    define necessary library symbols; they are noted "INFRINGES ON
46    USER NAME SPACE" below.  */
47 
48 /* Identify Bison output, and Bison version.  */
49 #define YYBISON 30706
50 
51 /* Bison version string.  */
52 #define YYBISON_VERSION "3.7.6"
53 
54 /* Skeleton name.  */
55 #define YYSKELETON_NAME "yacc.c"
56 
57 /* Pure parsers.  */
58 #define YYPURE 0
59 
60 /* Push parsers.  */
61 #define YYPUSH 0
62 
63 /* Pull parsers.  */
64 #define YYPULL 1
65 
66 
67 
68 
69 /* First part of user prologue.  */
70 #line 1 "zparser.y"
71 
72 /*
73  * zyparser.y -- yacc grammar for (DNS) zone files
74  *
75  * Copyright (c) 2001-2006, NLnet Labs. All rights reserved.
76  *
77  * See LICENSE for the license.
78  *
79  */
80 
81 #include "config.h"
82 
83 #include <stdarg.h>
84 #include <stdio.h>
85 #include <string.h>
86 
87 #include "dname.h"
88 #include "namedb.h"
89 #include "zonec.h"
90 
91 /* these need to be global, otherwise they cannot be used inside yacc */
92 zparser_type *parser;
93 
94 #ifdef __cplusplus
95 extern "C"
96 #endif /* __cplusplus */
97 int yywrap(void);
98 
99 /* this hold the nxt bits */
100 static uint8_t nxtbits[16];
101 static int dlv_warn = 1;
102 
103 /* 256 windows of 256 bits (32 bytes) */
104 /* still need to reset the bastard somewhere */
105 static uint8_t nsecbits[NSEC_WINDOW_COUNT][NSEC_WINDOW_BITS_SIZE];
106 
107 /* hold the highest rcode seen in a NSEC rdata , BUG #106 */
108 uint16_t nsec_highest_rcode;
109 
110 void yyerror(const char *message);
111 
112 #ifdef NSEC3
113 /* parse nsec3 parameters and add the (first) rdata elements */
114 static void
115 nsec3_add_params(const char* hash_algo_str, const char* flag_str,
116 	const char* iter_str, const char* salt_str, int salt_len);
117 #endif /* NSEC3 */
118 
119 
120 #line 121 "zparser.c"
121 
122 # ifndef YY_CAST
123 #  ifdef __cplusplus
124 #   define YY_CAST(Type, Val) static_cast<Type> (Val)
125 #   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
126 #  else
127 #   define YY_CAST(Type, Val) ((Type) (Val))
128 #   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
129 #  endif
130 # endif
131 # ifndef YY_NULLPTR
132 #  if defined __cplusplus
133 #   if 201103L <= __cplusplus
134 #    define YY_NULLPTR nullptr
135 #   else
136 #    define YY_NULLPTR 0
137 #   endif
138 #  else
139 #   define YY_NULLPTR ((void*)0)
140 #  endif
141 # endif
142 
143 #include "zparser.h"
144 /* Symbol kind.  */
145 enum yysymbol_kind_t
146 {
147   YYSYMBOL_YYEMPTY = -2,
148   YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
149   YYSYMBOL_YYerror = 1,                    /* error  */
150   YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
151   YYSYMBOL_T_A = 3,                        /* T_A  */
152   YYSYMBOL_T_NS = 4,                       /* T_NS  */
153   YYSYMBOL_T_MX = 5,                       /* T_MX  */
154   YYSYMBOL_T_TXT = 6,                      /* T_TXT  */
155   YYSYMBOL_T_CNAME = 7,                    /* T_CNAME  */
156   YYSYMBOL_T_AAAA = 8,                     /* T_AAAA  */
157   YYSYMBOL_T_PTR = 9,                      /* T_PTR  */
158   YYSYMBOL_T_NXT = 10,                     /* T_NXT  */
159   YYSYMBOL_T_KEY = 11,                     /* T_KEY  */
160   YYSYMBOL_T_SOA = 12,                     /* T_SOA  */
161   YYSYMBOL_T_SIG = 13,                     /* T_SIG  */
162   YYSYMBOL_T_SRV = 14,                     /* T_SRV  */
163   YYSYMBOL_T_CERT = 15,                    /* T_CERT  */
164   YYSYMBOL_T_LOC = 16,                     /* T_LOC  */
165   YYSYMBOL_T_MD = 17,                      /* T_MD  */
166   YYSYMBOL_T_MF = 18,                      /* T_MF  */
167   YYSYMBOL_T_MB = 19,                      /* T_MB  */
168   YYSYMBOL_T_MG = 20,                      /* T_MG  */
169   YYSYMBOL_T_MR = 21,                      /* T_MR  */
170   YYSYMBOL_T_NULL = 22,                    /* T_NULL  */
171   YYSYMBOL_T_WKS = 23,                     /* T_WKS  */
172   YYSYMBOL_T_HINFO = 24,                   /* T_HINFO  */
173   YYSYMBOL_T_MINFO = 25,                   /* T_MINFO  */
174   YYSYMBOL_T_RP = 26,                      /* T_RP  */
175   YYSYMBOL_T_AFSDB = 27,                   /* T_AFSDB  */
176   YYSYMBOL_T_X25 = 28,                     /* T_X25  */
177   YYSYMBOL_T_ISDN = 29,                    /* T_ISDN  */
178   YYSYMBOL_T_RT = 30,                      /* T_RT  */
179   YYSYMBOL_T_NSAP = 31,                    /* T_NSAP  */
180   YYSYMBOL_T_NSAP_PTR = 32,                /* T_NSAP_PTR  */
181   YYSYMBOL_T_PX = 33,                      /* T_PX  */
182   YYSYMBOL_T_GPOS = 34,                    /* T_GPOS  */
183   YYSYMBOL_T_EID = 35,                     /* T_EID  */
184   YYSYMBOL_T_NIMLOC = 36,                  /* T_NIMLOC  */
185   YYSYMBOL_T_ATMA = 37,                    /* T_ATMA  */
186   YYSYMBOL_T_NAPTR = 38,                   /* T_NAPTR  */
187   YYSYMBOL_T_KX = 39,                      /* T_KX  */
188   YYSYMBOL_T_A6 = 40,                      /* T_A6  */
189   YYSYMBOL_T_DNAME = 41,                   /* T_DNAME  */
190   YYSYMBOL_T_SINK = 42,                    /* T_SINK  */
191   YYSYMBOL_T_OPT = 43,                     /* T_OPT  */
192   YYSYMBOL_T_APL = 44,                     /* T_APL  */
193   YYSYMBOL_T_UINFO = 45,                   /* T_UINFO  */
194   YYSYMBOL_T_UID = 46,                     /* T_UID  */
195   YYSYMBOL_T_GID = 47,                     /* T_GID  */
196   YYSYMBOL_T_UNSPEC = 48,                  /* T_UNSPEC  */
197   YYSYMBOL_T_TKEY = 49,                    /* T_TKEY  */
198   YYSYMBOL_T_TSIG = 50,                    /* T_TSIG  */
199   YYSYMBOL_T_IXFR = 51,                    /* T_IXFR  */
200   YYSYMBOL_T_AXFR = 52,                    /* T_AXFR  */
201   YYSYMBOL_T_MAILB = 53,                   /* T_MAILB  */
202   YYSYMBOL_T_MAILA = 54,                   /* T_MAILA  */
203   YYSYMBOL_T_DS = 55,                      /* T_DS  */
204   YYSYMBOL_T_DLV = 56,                     /* T_DLV  */
205   YYSYMBOL_T_SSHFP = 57,                   /* T_SSHFP  */
206   YYSYMBOL_T_RRSIG = 58,                   /* T_RRSIG  */
207   YYSYMBOL_T_NSEC = 59,                    /* T_NSEC  */
208   YYSYMBOL_T_DNSKEY = 60,                  /* T_DNSKEY  */
209   YYSYMBOL_T_SPF = 61,                     /* T_SPF  */
210   YYSYMBOL_T_NSEC3 = 62,                   /* T_NSEC3  */
211   YYSYMBOL_T_IPSECKEY = 63,                /* T_IPSECKEY  */
212   YYSYMBOL_T_DHCID = 64,                   /* T_DHCID  */
213   YYSYMBOL_T_NSEC3PARAM = 65,              /* T_NSEC3PARAM  */
214   YYSYMBOL_T_TLSA = 66,                    /* T_TLSA  */
215   YYSYMBOL_T_URI = 67,                     /* T_URI  */
216   YYSYMBOL_T_NID = 68,                     /* T_NID  */
217   YYSYMBOL_T_L32 = 69,                     /* T_L32  */
218   YYSYMBOL_T_L64 = 70,                     /* T_L64  */
219   YYSYMBOL_T_LP = 71,                      /* T_LP  */
220   YYSYMBOL_T_EUI48 = 72,                   /* T_EUI48  */
221   YYSYMBOL_T_EUI64 = 73,                   /* T_EUI64  */
222   YYSYMBOL_T_CAA = 74,                     /* T_CAA  */
223   YYSYMBOL_T_CDS = 75,                     /* T_CDS  */
224   YYSYMBOL_T_CDNSKEY = 76,                 /* T_CDNSKEY  */
225   YYSYMBOL_T_OPENPGPKEY = 77,              /* T_OPENPGPKEY  */
226   YYSYMBOL_T_CSYNC = 78,                   /* T_CSYNC  */
227   YYSYMBOL_T_ZONEMD = 79,                  /* T_ZONEMD  */
228   YYSYMBOL_T_AVC = 80,                     /* T_AVC  */
229   YYSYMBOL_T_SMIMEA = 81,                  /* T_SMIMEA  */
230   YYSYMBOL_T_SVCB = 82,                    /* T_SVCB  */
231   YYSYMBOL_T_HTTPS = 83,                   /* T_HTTPS  */
232   YYSYMBOL_DOLLAR_TTL = 84,                /* DOLLAR_TTL  */
233   YYSYMBOL_DOLLAR_ORIGIN = 85,             /* DOLLAR_ORIGIN  */
234   YYSYMBOL_NL = 86,                        /* NL  */
235   YYSYMBOL_SP = 87,                        /* SP  */
236   YYSYMBOL_QSTR = 88,                      /* QSTR  */
237   YYSYMBOL_STR = 89,                       /* STR  */
238   YYSYMBOL_PREV = 90,                      /* PREV  */
239   YYSYMBOL_BITLAB = 91,                    /* BITLAB  */
240   YYSYMBOL_T_TTL = 92,                     /* T_TTL  */
241   YYSYMBOL_T_RRCLASS = 93,                 /* T_RRCLASS  */
242   YYSYMBOL_URR = 94,                       /* URR  */
243   YYSYMBOL_T_UTYPE = 95,                   /* T_UTYPE  */
244   YYSYMBOL_96_ = 96,                       /* '.'  */
245   YYSYMBOL_97_ = 97,                       /* '@'  */
246   YYSYMBOL_YYACCEPT = 98,                  /* $accept  */
247   YYSYMBOL_lines = 99,                     /* lines  */
248   YYSYMBOL_line = 100,                     /* line  */
249   YYSYMBOL_sp = 101,                       /* sp  */
250   YYSYMBOL_str = 102,                      /* str  */
251   YYSYMBOL_trail = 103,                    /* trail  */
252   YYSYMBOL_ttl_directive = 104,            /* ttl_directive  */
253   YYSYMBOL_origin_directive = 105,         /* origin_directive  */
254   YYSYMBOL_rr = 106,                       /* rr  */
255   YYSYMBOL_owner = 107,                    /* owner  */
256   YYSYMBOL_classttl = 108,                 /* classttl  */
257   YYSYMBOL_dname = 109,                    /* dname  */
258   YYSYMBOL_abs_dname = 110,                /* abs_dname  */
259   YYSYMBOL_label = 111,                    /* label  */
260   YYSYMBOL_rel_dname = 112,                /* rel_dname  */
261   YYSYMBOL_wire_dname = 113,               /* wire_dname  */
262   YYSYMBOL_wire_abs_dname = 114,           /* wire_abs_dname  */
263   YYSYMBOL_wire_label = 115,               /* wire_label  */
264   YYSYMBOL_wire_rel_dname = 116,           /* wire_rel_dname  */
265   YYSYMBOL_str_seq = 117,                  /* str_seq  */
266   YYSYMBOL_concatenated_str_seq = 118,     /* concatenated_str_seq  */
267   YYSYMBOL_nxt_seq = 119,                  /* nxt_seq  */
268   YYSYMBOL_nsec_more = 120,                /* nsec_more  */
269   YYSYMBOL_nsec_seq = 121,                 /* nsec_seq  */
270   YYSYMBOL_str_sp_seq = 122,               /* str_sp_seq  */
271   YYSYMBOL_str_dot_seq = 123,              /* str_dot_seq  */
272   YYSYMBOL_unquoted_dotted_str = 124,      /* unquoted_dotted_str  */
273   YYSYMBOL_dotted_str = 125,               /* dotted_str  */
274   YYSYMBOL_type_and_rdata = 126,           /* type_and_rdata  */
275   YYSYMBOL_rdata_a = 127,                  /* rdata_a  */
276   YYSYMBOL_rdata_domain_name = 128,        /* rdata_domain_name  */
277   YYSYMBOL_rdata_soa = 129,                /* rdata_soa  */
278   YYSYMBOL_rdata_wks = 130,                /* rdata_wks  */
279   YYSYMBOL_rdata_hinfo = 131,              /* rdata_hinfo  */
280   YYSYMBOL_rdata_minfo = 132,              /* rdata_minfo  */
281   YYSYMBOL_rdata_mx = 133,                 /* rdata_mx  */
282   YYSYMBOL_rdata_txt = 134,                /* rdata_txt  */
283   YYSYMBOL_rdata_rp = 135,                 /* rdata_rp  */
284   YYSYMBOL_rdata_afsdb = 136,              /* rdata_afsdb  */
285   YYSYMBOL_rdata_x25 = 137,                /* rdata_x25  */
286   YYSYMBOL_rdata_isdn = 138,               /* rdata_isdn  */
287   YYSYMBOL_rdata_rt = 139,                 /* rdata_rt  */
288   YYSYMBOL_rdata_nsap = 140,               /* rdata_nsap  */
289   YYSYMBOL_rdata_px = 141,                 /* rdata_px  */
290   YYSYMBOL_rdata_aaaa = 142,               /* rdata_aaaa  */
291   YYSYMBOL_rdata_loc = 143,                /* rdata_loc  */
292   YYSYMBOL_rdata_nxt = 144,                /* rdata_nxt  */
293   YYSYMBOL_rdata_srv = 145,                /* rdata_srv  */
294   YYSYMBOL_rdata_naptr = 146,              /* rdata_naptr  */
295   YYSYMBOL_rdata_kx = 147,                 /* rdata_kx  */
296   YYSYMBOL_rdata_cert = 148,               /* rdata_cert  */
297   YYSYMBOL_rdata_apl = 149,                /* rdata_apl  */
298   YYSYMBOL_rdata_apl_seq = 150,            /* rdata_apl_seq  */
299   YYSYMBOL_rdata_ds = 151,                 /* rdata_ds  */
300   YYSYMBOL_rdata_dlv = 152,                /* rdata_dlv  */
301   YYSYMBOL_rdata_sshfp = 153,              /* rdata_sshfp  */
302   YYSYMBOL_rdata_dhcid = 154,              /* rdata_dhcid  */
303   YYSYMBOL_rdata_rrsig = 155,              /* rdata_rrsig  */
304   YYSYMBOL_rdata_nsec = 156,               /* rdata_nsec  */
305   YYSYMBOL_rdata_nsec3 = 157,              /* rdata_nsec3  */
306   YYSYMBOL_rdata_nsec3_param = 158,        /* rdata_nsec3_param  */
307   YYSYMBOL_rdata_tlsa = 159,               /* rdata_tlsa  */
308   YYSYMBOL_rdata_smimea = 160,             /* rdata_smimea  */
309   YYSYMBOL_rdata_dnskey = 161,             /* rdata_dnskey  */
310   YYSYMBOL_rdata_ipsec_base = 162,         /* rdata_ipsec_base  */
311   YYSYMBOL_rdata_ipseckey = 163,           /* rdata_ipseckey  */
312   YYSYMBOL_rdata_nid = 164,                /* rdata_nid  */
313   YYSYMBOL_rdata_l32 = 165,                /* rdata_l32  */
314   YYSYMBOL_rdata_l64 = 166,                /* rdata_l64  */
315   YYSYMBOL_rdata_lp = 167,                 /* rdata_lp  */
316   YYSYMBOL_rdata_eui48 = 168,              /* rdata_eui48  */
317   YYSYMBOL_rdata_eui64 = 169,              /* rdata_eui64  */
318   YYSYMBOL_rdata_uri = 170,                /* rdata_uri  */
319   YYSYMBOL_rdata_caa = 171,                /* rdata_caa  */
320   YYSYMBOL_rdata_openpgpkey = 172,         /* rdata_openpgpkey  */
321   YYSYMBOL_rdata_csync = 173,              /* rdata_csync  */
322   YYSYMBOL_rdata_zonemd = 174,             /* rdata_zonemd  */
323   YYSYMBOL_svcparam = 175,                 /* svcparam  */
324   YYSYMBOL_svcparams = 176,                /* svcparams  */
325   YYSYMBOL_rdata_svcb_base = 177,          /* rdata_svcb_base  */
326   YYSYMBOL_rdata_svcb = 178,               /* rdata_svcb  */
327   YYSYMBOL_rdata_unknown = 179             /* rdata_unknown  */
328 };
329 typedef enum yysymbol_kind_t yysymbol_kind_t;
330 
331 
332 
333 
334 #ifdef short
335 # undef short
336 #endif
337 
338 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
339    <limits.h> and (if available) <stdint.h> are included
340    so that the code can choose integer types of a good width.  */
341 
342 #ifndef __PTRDIFF_MAX__
343 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
344 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
345 #  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
346 #  define YY_STDINT_H
347 # endif
348 #endif
349 
350 /* Narrow types that promote to a signed type and that can represent a
351    signed or unsigned integer of at least N bits.  In tables they can
352    save space and decrease cache pressure.  Promoting to a signed type
353    helps avoid bugs in integer arithmetic.  */
354 
355 #ifdef __INT_LEAST8_MAX__
356 typedef __INT_LEAST8_TYPE__ yytype_int8;
357 #elif defined YY_STDINT_H
358 typedef int_least8_t yytype_int8;
359 #else
360 typedef signed char yytype_int8;
361 #endif
362 
363 #ifdef __INT_LEAST16_MAX__
364 typedef __INT_LEAST16_TYPE__ yytype_int16;
365 #elif defined YY_STDINT_H
366 typedef int_least16_t yytype_int16;
367 #else
368 typedef short yytype_int16;
369 #endif
370 
371 /* Work around bug in HP-UX 11.23, which defines these macros
372    incorrectly for preprocessor constants.  This workaround can likely
373    be removed in 2023, as HPE has promised support for HP-UX 11.23
374    (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
375    <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
376 #ifdef __hpux
377 # undef UINT_LEAST8_MAX
378 # undef UINT_LEAST16_MAX
379 # define UINT_LEAST8_MAX 255
380 # define UINT_LEAST16_MAX 65535
381 #endif
382 
383 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
384 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
385 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
386        && UINT_LEAST8_MAX <= INT_MAX)
387 typedef uint_least8_t yytype_uint8;
388 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
389 typedef unsigned char yytype_uint8;
390 #else
391 typedef short yytype_uint8;
392 #endif
393 
394 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
395 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
396 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
397        && UINT_LEAST16_MAX <= INT_MAX)
398 typedef uint_least16_t yytype_uint16;
399 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
400 typedef unsigned short yytype_uint16;
401 #else
402 typedef int yytype_uint16;
403 #endif
404 
405 #ifndef YYPTRDIFF_T
406 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
407 #  define YYPTRDIFF_T __PTRDIFF_TYPE__
408 #  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
409 # elif defined PTRDIFF_MAX
410 #  ifndef ptrdiff_t
411 #   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
412 #  endif
413 #  define YYPTRDIFF_T ptrdiff_t
414 #  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
415 # else
416 #  define YYPTRDIFF_T long
417 #  define YYPTRDIFF_MAXIMUM LONG_MAX
418 # endif
419 #endif
420 
421 #ifndef YYSIZE_T
422 # ifdef __SIZE_TYPE__
423 #  define YYSIZE_T __SIZE_TYPE__
424 # elif defined size_t
425 #  define YYSIZE_T size_t
426 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
427 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
428 #  define YYSIZE_T size_t
429 # else
430 #  define YYSIZE_T unsigned
431 # endif
432 #endif
433 
434 #define YYSIZE_MAXIMUM                                  \
435   YY_CAST (YYPTRDIFF_T,                                 \
436            (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
437             ? YYPTRDIFF_MAXIMUM                         \
438             : YY_CAST (YYSIZE_T, -1)))
439 
440 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
441 
442 
443 /* Stored state numbers (used for stacks). */
444 typedef yytype_int16 yy_state_t;
445 
446 /* State numbers in computations.  */
447 typedef int yy_state_fast_t;
448 
449 #ifndef YY_
450 # if defined YYENABLE_NLS && YYENABLE_NLS
451 #  if ENABLE_NLS
452 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
453 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
454 #  endif
455 # endif
456 # ifndef YY_
457 #  define YY_(Msgid) Msgid
458 # endif
459 #endif
460 
461 
462 #ifndef YY_ATTRIBUTE_PURE
463 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
464 #  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
465 # else
466 #  define YY_ATTRIBUTE_PURE
467 # endif
468 #endif
469 
470 #ifndef YY_ATTRIBUTE_UNUSED
471 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
472 #  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
473 # else
474 #  define YY_ATTRIBUTE_UNUSED
475 # endif
476 #endif
477 
478 /* Suppress unused-variable warnings by "using" E.  */
479 #if ! defined lint || defined __GNUC__
480 # define YY_USE(E) ((void) (E))
481 #else
482 # define YY_USE(E) /* empty */
483 #endif
484 
485 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
486 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
487 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
488     _Pragma ("GCC diagnostic push")                                     \
489     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
490     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
491 # define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
492     _Pragma ("GCC diagnostic pop")
493 #else
494 # define YY_INITIAL_VALUE(Value) Value
495 #endif
496 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
497 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
498 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
499 #endif
500 #ifndef YY_INITIAL_VALUE
501 # define YY_INITIAL_VALUE(Value) /* Nothing. */
502 #endif
503 
504 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
505 # define YY_IGNORE_USELESS_CAST_BEGIN                          \
506     _Pragma ("GCC diagnostic push")                            \
507     _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
508 # define YY_IGNORE_USELESS_CAST_END            \
509     _Pragma ("GCC diagnostic pop")
510 #endif
511 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
512 # define YY_IGNORE_USELESS_CAST_BEGIN
513 # define YY_IGNORE_USELESS_CAST_END
514 #endif
515 
516 
517 #define YY_ASSERT(E) ((void) (0 && (E)))
518 
519 #if !defined yyoverflow
520 
521 /* The parser invokes alloca or malloc; define the necessary symbols.  */
522 
523 # ifdef YYSTACK_USE_ALLOCA
524 #  if YYSTACK_USE_ALLOCA
525 #   ifdef __GNUC__
526 #    define YYSTACK_ALLOC __builtin_alloca
527 #   elif defined __BUILTIN_VA_ARG_INCR
528 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
529 #   elif defined _AIX
530 #    define YYSTACK_ALLOC __alloca
531 #   elif defined _MSC_VER
532 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
533 #    define alloca _alloca
534 #   else
535 #    define YYSTACK_ALLOC alloca
536 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
537 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
538       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
539 #     ifndef EXIT_SUCCESS
540 #      define EXIT_SUCCESS 0
541 #     endif
542 #    endif
543 #   endif
544 #  endif
545 # endif
546 
547 # ifdef YYSTACK_ALLOC
548    /* Pacify GCC's 'empty if-body' warning.  */
549 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
550 #  ifndef YYSTACK_ALLOC_MAXIMUM
551     /* The OS might guarantee only one guard page at the bottom of the stack,
552        and a page size can be as small as 4096 bytes.  So we cannot safely
553        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
554        to allow for a few compiler-allocated temporary stack slots.  */
555 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
556 #  endif
557 # else
558 #  define YYSTACK_ALLOC YYMALLOC
559 #  define YYSTACK_FREE YYFREE
560 #  ifndef YYSTACK_ALLOC_MAXIMUM
561 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
562 #  endif
563 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
564        && ! ((defined YYMALLOC || defined malloc) \
565              && (defined YYFREE || defined free)))
566 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
567 #   ifndef EXIT_SUCCESS
568 #    define EXIT_SUCCESS 0
569 #   endif
570 #  endif
571 #  ifndef YYMALLOC
572 #   define YYMALLOC malloc
573 #   if ! defined malloc && ! defined EXIT_SUCCESS
574 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
575 #   endif
576 #  endif
577 #  ifndef YYFREE
578 #   define YYFREE free
579 #   if ! defined free && ! defined EXIT_SUCCESS
580 void free (void *); /* INFRINGES ON USER NAME SPACE */
581 #   endif
582 #  endif
583 # endif
584 #endif /* !defined yyoverflow */
585 
586 #if (! defined yyoverflow \
587      && (! defined __cplusplus \
588          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
589 
590 /* A type that is properly aligned for any stack member.  */
591 union yyalloc
592 {
593   yy_state_t yyss_alloc;
594   YYSTYPE yyvs_alloc;
595 };
596 
597 /* The size of the maximum gap between one aligned stack and the next.  */
598 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
599 
600 /* The size of an array large to enough to hold all stacks, each with
601    N elements.  */
602 # define YYSTACK_BYTES(N) \
603      ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
604       + YYSTACK_GAP_MAXIMUM)
605 
606 # define YYCOPY_NEEDED 1
607 
608 /* Relocate STACK from its old location to the new one.  The
609    local variables YYSIZE and YYSTACKSIZE give the old and new number of
610    elements in the stack, and YYPTR gives the new location of the
611    stack.  Advance YYPTR to a properly aligned location for the next
612    stack.  */
613 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
614     do                                                                  \
615       {                                                                 \
616         YYPTRDIFF_T yynewbytes;                                         \
617         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
618         Stack = &yyptr->Stack_alloc;                                    \
619         yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
620         yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
621       }                                                                 \
622     while (0)
623 
624 #endif
625 
626 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
627 /* Copy COUNT objects from SRC to DST.  The source and destination do
628    not overlap.  */
629 # ifndef YYCOPY
630 #  if defined __GNUC__ && 1 < __GNUC__
631 #   define YYCOPY(Dst, Src, Count) \
632       __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
633 #  else
634 #   define YYCOPY(Dst, Src, Count)              \
635       do                                        \
636         {                                       \
637           YYPTRDIFF_T yyi;                      \
638           for (yyi = 0; yyi < (Count); yyi++)   \
639             (Dst)[yyi] = (Src)[yyi];            \
640         }                                       \
641       while (0)
642 #  endif
643 # endif
644 #endif /* !YYCOPY_NEEDED */
645 
646 /* YYFINAL -- State number of the termination state.  */
647 #define YYFINAL  2
648 /* YYLAST -- Last index in YYTABLE.  */
649 #define YYLAST   1374
650 
651 /* YYNTOKENS -- Number of terminals.  */
652 #define YYNTOKENS  98
653 /* YYNNTS -- Number of nonterminals.  */
654 #define YYNNTS  82
655 /* YYNRULES -- Number of rules.  */
656 #define YYNRULES  261
657 /* YYNSTATES -- Number of states.  */
658 #define YYNSTATES  630
659 
660 /* YYMAXUTOK -- Last valid token kind.  */
661 #define YYMAXUTOK   350
662 
663 
664 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
665    as returned by yylex, with out-of-bounds checking.  */
666 #define YYTRANSLATE(YYX)                                \
667   (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
668    ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
669    : YYSYMBOL_YYUNDEF)
670 
671 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
672    as returned by yylex.  */
673 static const yytype_int8 yytranslate[] =
674 {
675        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
676        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
677        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
678        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
679        2,     2,     2,     2,     2,     2,    96,     2,     2,     2,
680        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
681        2,     2,     2,     2,    97,     2,     2,     2,     2,     2,
682        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
683        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
684        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
685        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
686        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
687        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
688        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
689        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
690        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
691        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
692        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
693        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
694        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
695        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
696        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
697        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
698        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
699        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
700        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
701        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
702       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
703       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
704       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
705       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
706       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
707       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
708       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
709       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
710       95
711 };
712 
713 #if YYDEBUG
714   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
715 static const yytype_int16 yyrline[] =
716 {
717        0,    93,    93,    94,    97,    98,    99,   100,   108,   116,
718      136,   140,   141,   144,   144,   146,   147,   150,   160,   171,
719      177,   184,   189,   196,   200,   205,   210,   215,   222,   223,
720      244,   248,   252,   262,   276,   283,   284,   302,   303,   327,
721      334,   346,   358,   375,   376,   388,   392,   396,   401,   405,
722      410,   414,   418,   429,   430,   435,   444,   456,   465,   476,
723      479,   482,   496,   497,   504,   505,   521,   522,   537,   538,
724      543,   553,   569,   569,   576,   577,   578,   579,   580,   581,
725      586,   587,   593,   594,   595,   596,   597,   598,   604,   605,
726      606,   607,   609,   610,   611,   612,   613,   614,   615,   616,
727      617,   618,   619,   620,   621,   622,   623,   624,   625,   626,
728      627,   628,   629,   630,   631,   632,   633,   634,   635,   636,
729      637,   638,   639,   640,   641,   642,   643,   644,   645,   646,
730      647,   648,   649,   650,   651,   652,   653,   654,   655,   656,
731      657,   658,   659,   660,   661,   662,   663,   664,   665,   666,
732      667,   668,   669,   670,   671,   672,   673,   674,   675,   676,
733      677,   678,   679,   680,   681,   682,   683,   684,   685,   686,
734      687,   688,   689,   690,   691,   692,   693,   694,   695,   696,
735      697,   698,   699,   700,   701,   702,   703,   704,   705,   706,
736      707,   708,   709,   710,   711,   712,   713,   714,   715,   716,
737      717,   729,   735,   742,   755,   762,   769,   777,   784,   791,
738      799,   807,   814,   818,   826,   834,   846,   854,   860,   866,
739      874,   884,   896,   904,   914,   917,   921,   927,   936,   945,
740      954,   960,   975,   985,  1000,  1010,  1019,  1028,  1037,  1082,
741     1086,  1090,  1097,  1104,  1111,  1118,  1124,  1131,  1140,  1149,
742     1156,  1167,  1176,  1181,  1187,  1188,  1191,  1198,  1202,  1205,
743     1211,  1215
744 };
745 #endif
746 
747 /** Accessing symbol of state STATE.  */
748 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
749 
750 #if YYDEBUG || 0
751 /* The user-facing name of the symbol whose (internal) number is
752    YYSYMBOL.  No bounds checking.  */
753 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
754 
755 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
756    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
757 static const char *const yytname[] =
758 {
759   "\"end of file\"", "error", "\"invalid token\"", "T_A", "T_NS", "T_MX",
760   "T_TXT", "T_CNAME", "T_AAAA", "T_PTR", "T_NXT", "T_KEY", "T_SOA",
761   "T_SIG", "T_SRV", "T_CERT", "T_LOC", "T_MD", "T_MF", "T_MB", "T_MG",
762   "T_MR", "T_NULL", "T_WKS", "T_HINFO", "T_MINFO", "T_RP", "T_AFSDB",
763   "T_X25", "T_ISDN", "T_RT", "T_NSAP", "T_NSAP_PTR", "T_PX", "T_GPOS",
764   "T_EID", "T_NIMLOC", "T_ATMA", "T_NAPTR", "T_KX", "T_A6", "T_DNAME",
765   "T_SINK", "T_OPT", "T_APL", "T_UINFO", "T_UID", "T_GID", "T_UNSPEC",
766   "T_TKEY", "T_TSIG", "T_IXFR", "T_AXFR", "T_MAILB", "T_MAILA", "T_DS",
767   "T_DLV", "T_SSHFP", "T_RRSIG", "T_NSEC", "T_DNSKEY", "T_SPF", "T_NSEC3",
768   "T_IPSECKEY", "T_DHCID", "T_NSEC3PARAM", "T_TLSA", "T_URI", "T_NID",
769   "T_L32", "T_L64", "T_LP", "T_EUI48", "T_EUI64", "T_CAA", "T_CDS",
770   "T_CDNSKEY", "T_OPENPGPKEY", "T_CSYNC", "T_ZONEMD", "T_AVC", "T_SMIMEA",
771   "T_SVCB", "T_HTTPS", "DOLLAR_TTL", "DOLLAR_ORIGIN", "NL", "SP", "QSTR",
772   "STR", "PREV", "BITLAB", "T_TTL", "T_RRCLASS", "URR", "T_UTYPE", "'.'",
773   "'@'", "$accept", "lines", "line", "sp", "str", "trail", "ttl_directive",
774   "origin_directive", "rr", "owner", "classttl", "dname", "abs_dname",
775   "label", "rel_dname", "wire_dname", "wire_abs_dname", "wire_label",
776   "wire_rel_dname", "str_seq", "concatenated_str_seq", "nxt_seq",
777   "nsec_more", "nsec_seq", "str_sp_seq", "str_dot_seq",
778   "unquoted_dotted_str", "dotted_str", "type_and_rdata", "rdata_a",
779   "rdata_domain_name", "rdata_soa", "rdata_wks", "rdata_hinfo",
780   "rdata_minfo", "rdata_mx", "rdata_txt", "rdata_rp", "rdata_afsdb",
781   "rdata_x25", "rdata_isdn", "rdata_rt", "rdata_nsap", "rdata_px",
782   "rdata_aaaa", "rdata_loc", "rdata_nxt", "rdata_srv", "rdata_naptr",
783   "rdata_kx", "rdata_cert", "rdata_apl", "rdata_apl_seq", "rdata_ds",
784   "rdata_dlv", "rdata_sshfp", "rdata_dhcid", "rdata_rrsig", "rdata_nsec",
785   "rdata_nsec3", "rdata_nsec3_param", "rdata_tlsa", "rdata_smimea",
786   "rdata_dnskey", "rdata_ipsec_base", "rdata_ipseckey", "rdata_nid",
787   "rdata_l32", "rdata_l64", "rdata_lp", "rdata_eui48", "rdata_eui64",
788   "rdata_uri", "rdata_caa", "rdata_openpgpkey", "rdata_csync",
789   "rdata_zonemd", "svcparam", "svcparams", "rdata_svcb_base", "rdata_svcb",
790   "rdata_unknown", YY_NULLPTR
791 };
792 
793 static const char *
yysymbol_name(yysymbol_kind_t yysymbol)794 yysymbol_name (yysymbol_kind_t yysymbol)
795 {
796   return yytname[yysymbol];
797 }
798 #endif
799 
800 #ifdef YYPRINT
801 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
802    (internal) symbol number NUM (which must be that of a token).  */
803 static const yytype_int16 yytoknum[] =
804 {
805        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
806      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
807      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
808      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
809      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
810      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
811      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
812      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
813      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
814      345,   346,   347,   348,   349,   350,    46,    64
815 };
816 #endif
817 
818 #define YYPACT_NINF (-473)
819 
820 #define yypact_value_is_default(Yyn) \
821   ((Yyn) == YYPACT_NINF)
822 
823 #define YYTABLE_NINF (-1)
824 
825 #define yytable_value_is_error(Yyn) \
826   0
827 
828   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
829      STATE-NUM.  */
830 static const yytype_int16 yypact[] =
831 {
832     -473,   115,  -473,   -70,   -60,   -60,  -473,  -473,  -473,  -473,
833      -51,  -473,  -473,  -473,  -473,    51,  -473,  -473,  -473,  -473,
834       98,   -60,  -473,  -473,   -59,  -473,   106,    67,  -473,  -473,
835     -473,   -60,   -60,   678,    20,    60,    73,    73,   -81,   -79,
836       21,   -60,   -60,   -60,   -60,   -60,   -60,   -60,   -60,   -60,
837      -60,   -60,   -60,   -60,   -60,   -60,   -60,   -60,   -60,   -60,
838      -60,   -60,   -60,   -60,   -60,   -60,   -60,   -60,   -60,   -60,
839      -60,   -60,   -60,    73,   -60,   -60,   -60,   -60,   -60,   -60,
840      -60,   -60,   -60,   -60,   -60,   -60,   -60,   -60,   -60,   -60,
841      -60,   -60,   -60,   -60,   -60,   -60,   -60,   -60,   -60,   -60,
842      -60,   -60,   -60,   -60,   121,  -473,  -473,  -473,   111,  -473,
843     -473,  -473,   -60,   -60,   136,    56,   -55,   148,    56,   136,
844       56,    56,   -55,    56,   -55,   -55,   -55,   166,    56,    56,
845       56,    56,    56,   136,   -55,    56,    56,   -55,   -55,   -55,
846      -55,   -55,   -55,   -55,   -55,    56,    31,  -473,   -55,   -55,
847      -55,   -55,    78,   -55,   148,   -55,   -55,   -55,   -55,   -55,
848      -55,   -55,   -55,   -55,   -55,   -55,   -55,   -55,   -55,   -55,
849      -55,   -55,   -55,   148,   -55,   -55,   -55,   -58,    38,  -473,
850       20,    20,  -473,  -473,    17,  -473,    30,    73,  -473,  -473,
851       73,  -473,  -473,   -60,  -473,  -473,    14,   192,    30,  -473,
852     -473,  -473,  -473,    73,  -473,  -473,  -473,  -473,   -60,  -473,
853     -473,   -60,  -473,  -473,   -60,  -473,  -473,   -60,  -473,  -473,
854      -60,  -473,  -473,   -60,  -473,  -473,  -473,  -473,   -77,  -473,
855     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
856     -473,   -60,  -473,  -473,   -60,  -473,  -473,   -60,  -473,  -473,
857      -60,  -473,  -473,   -60,  -473,  -473,    73,  -473,  -473,    73,
858     -473,  -473,   -60,  -473,  -473,  -473,    90,  -473,  -473,   -60,
859     -473,  -473,   -60,  -473,  -473,   -60,  -473,  -473,  -473,  -473,
860     -473,  -473,    73,  -473,   -60,  -473,  -473,   -60,  -473,  -473,
861      -60,  -473,  -473,  -473,  -473,  -473,  -473,  -473,   122,  -473,
862     -473,    33,  -473,  -473,  -473,  -473,  -473,  -473,   -60,  -473,
863     -473,   -60,    73,  -473,  -473,  -473,    73,  -473,  -473,   -60,
864     -473,  -473,   -60,  -473,  -473,   -60,  -473,  -473,   -60,  -473,
865     -473,   -60,  -473,  -473,   -60,  -473,  -473,   -60,  -473,  -473,
866       73,  -473,  -473,    73,  -473,  -473,   -60,  -473,  -473,  -473,
867     -473,  -473,  -473,    73,  -473,  -473,   -60,  -473,  -473,   -60,
868     -473,  -473,  -473,  -473,   -60,  -473,  -473,   -60,    73,  -473,
869     -473,  -473,  -473,  -473,  -473,    48,   106,    57,  -473,  -473,
870       67,    30,    14,    44,  -473,  -473,   106,   106,    67,   106,
871      106,   106,   126,   204,  -473,   106,   106,    67,    67,    67,
872     -473,   204,  -473,    67,   126,  -473,    67,   106,    67,    82,
873     -473,   106,   106,   106,  -473,   208,  -473,   126,   106,   106,
874      204,  -473,   204,  -473,   106,   106,   106,   176,   176,   176,
875       67,  -473,  -473,   106,  -473,   106,   106,   106,    67,    82,
876     -473,  -473,    73,  -473,    73,    30,    14,    30,  -473,    73,
877      -60,   -60,   -60,   -60,   -60,  -473,  -473,   -60,    73,    73,
878       73,    73,    73,    73,  -473,   -60,   -60,    73,  -473,   -60,
879      -60,   -60,  -473,   208,   122,  -473,  -473,   -60,   -60,    73,
880     -473,   -60,   -60,   -60,    73,    73,    73,    73,   -60,   122,
881      -60,   -60,  -473,    69,  -473,    73,   204,  -473,  -473,    30,
882      204,  -473,   106,   106,   106,   106,   106,   188,  -473,  -473,
883     -473,  -473,  -473,  -473,    67,   106,  -473,   106,   106,   106,
884     -473,  -473,   106,   106,  -473,   106,   106,   176,  -473,  -473,
885     -473,  -473,   176,  -473,   106,   106,  -473,    82,  -473,    73,
886     -473,   -60,   -60,   -60,   -60,   -60,   -77,    73,   -60,   -60,
887      -60,    73,   -60,   -60,   -60,   -60,    73,    73,   -60,   -60,
888     -473,  -473,   106,   106,   106,    67,   106,  -473,  -473,   106,
889      106,   106,  -473,   106,   176,   106,   106,  -473,  -473,   106,
890      106,    73,   -60,   -60,    73,    73,   -60,    73,    73,   -60,
891     -473,    73,    73,    73,    73,  -473,   106,   106,  -473,  -473,
892      106,  -473,  -473,   106,  -473,  -473,  -473,  -473,   -60,   -60,
893      -60,   122,   106,   106,    67,  -473,   -60,   -60,    73,   106,
894      106,  -473,    73,   -60,  -473,    92,   -60,   106,    73,  -473
895 };
896 
897   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
898      Performed when YYTABLE does not specify something else to do.  Zero
899      means the default is an error.  */
900 static const yytype_int16 yydefact[] =
901 {
902        2,     0,     1,     0,     0,     0,     4,    11,    14,    13,
903       22,    34,    30,    31,     3,     0,    33,     7,     8,     9,
904       23,     0,    28,    35,    29,    10,     0,     0,     6,     5,
905       12,     0,     0,     0,    21,    32,     0,     0,     0,    25,
906       24,     0,     0,     0,     0,     0,     0,     0,     0,     0,
907        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
908        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
909        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
910        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
911        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
912        0,     0,     0,     0,     0,    20,    36,    15,     0,    17,
913       18,    19,     0,     0,     0,     0,     0,     0,     0,     0,
914        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
915        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
916        0,     0,     0,     0,     0,     0,     0,   146,     0,     0,
917        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
918        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
919        0,     0,     0,     0,     0,     0,     0,     0,     0,    16,
920       26,    27,    73,    68,     0,    69,    72,     0,    74,    75,
921        0,    76,    77,     0,   100,   101,    46,     0,    45,   102,
922      103,    82,    83,     0,   130,   131,    94,    95,     0,   134,
923      135,     0,   126,   127,     0,    84,    85,     0,   124,   125,
924        0,   136,   137,     0,   142,   143,    54,    53,     0,   132,
925      133,    78,    79,    80,    81,    86,    87,    88,    89,    90,
926       91,     0,    92,    93,     0,    96,    97,     0,    98,    99,
927        0,   108,   109,     0,   110,   111,     0,   112,   113,     0,
928      114,   115,     0,   120,   121,    66,     0,   122,   123,     0,
929      128,   129,     0,   138,   139,     0,   140,   141,   144,   145,
930      225,   147,     0,   148,     0,   149,   150,     0,   151,   152,
931        0,   153,   154,   155,   156,    39,    40,    42,     0,    37,
932       43,    38,   157,   158,   163,   164,   104,   105,     0,   159,
933      160,     0,     0,   116,   117,    64,     0,   118,   119,     0,
934      161,   162,     0,   165,   166,     0,   197,   198,     0,   169,
935      170,     0,   171,   172,     0,   173,   174,     0,   175,   176,
936        0,   177,   178,     0,   179,   180,     0,   181,   182,   183,
937      184,   185,   186,     0,   187,   188,     0,   189,   190,     0,
938      191,   192,   106,   107,     0,   167,   168,     0,     0,   193,
939      194,   195,   196,   199,   200,     0,     0,    70,   201,   202,
940        0,    47,    48,     0,   208,   217,     0,     0,     0,     0,
941        0,     0,     0,     0,   218,     0,     0,     0,     0,     0,
942      211,     0,   212,     0,     0,   215,     0,     0,     0,     0,
943      224,     0,     0,     0,    62,     0,   232,    41,     0,     0,
944        0,   240,     0,   230,     0,     0,     0,     0,     0,     0,
945        0,   245,   246,     0,   249,     0,     0,     0,     0,     0,
946      258,   261,     0,    71,     0,    49,    51,    50,    57,     0,
947        0,     0,     0,     0,     0,    56,    55,     0,     0,     0,
948        0,     0,     0,     0,    67,     0,     0,     0,   226,     0,
949        0,     0,    60,     0,     0,    63,    44,     0,     0,     0,
950       65,     0,     0,     0,     0,     0,     0,     0,     0,     0,
951        0,     0,   256,   253,   254,     0,     0,   260,   207,    52,
952        0,   219,     0,     0,     0,     0,     0,     0,   205,   206,
953      209,   210,   213,   214,     0,     0,   222,     0,     0,     0,
954       59,    61,     0,     0,   239,     0,     0,     0,   241,   242,
955      243,   244,     0,   250,     0,     0,   252,     0,   257,     0,
956       58,     0,     0,     0,     0,     0,     0,     0,     0,     0,
957        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
958      255,   259,     0,     0,     0,     0,     0,   204,   216,     0,
959        0,     0,   229,     0,     0,     0,     0,   247,   248,     0,
960        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
961      238,     0,     0,     0,     0,   237,     0,     0,   220,   223,
962        0,   227,   228,     0,   234,   235,   251,   236,     0,     0,
963        0,     0,     0,     0,     0,   233,     0,     0,     0,     0,
964        0,   221,     0,     0,   203,     0,     0,     0,     0,   231
965 };
966 
967   /* YYPGOTO[NTERM-NUM].  */
968 static const yytype_int16 yypgoto[] =
969 {
970     -473,  -473,  -473,    -1,   504,   746,  -473,  -473,  -473,  -473,
971     -473,     0,   135,   138,   155,  -440,  -473,  -230,  -473,  -473,
972     -290,  -473,  -255,  -472,   -64,  -473,   -12,    -5,  -473,  -473,
973     -107,  -473,  -473,  -473,  -473,  -473,  -147,  -473,  -473,  -473,
974     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
975     -473,  -473,  -473,    52,  -473,  -473,  -473,    70,  -473,  -473,
976     -473,  -473,  -473,  -141,  -473,  -473,  -473,  -473,  -473,  -473,
977     -473,  -473,  -473,  -473,  -473,  -473,  -473,  -311,  -473,  -473,
978       53,   672
979 };
980 
981   /* YYDEFGOTO[NTERM-NUM].  */
982 static const yytype_int16 yydefgoto[] =
983 {
984        0,     1,    14,   108,    16,   109,    17,    18,    19,    20,
985       33,   190,    22,    23,    24,   298,   299,   300,   301,   197,
986      228,   449,   475,   416,   316,   266,   186,   493,   105,   188,
987      191,   215,   242,   245,   248,   194,   199,   251,   254,   257,
988      260,   263,   267,   270,   204,   229,   209,   221,   273,   276,
989      224,   281,   282,   285,   288,   291,   317,   218,   302,   309,
990      320,   323,   365,   212,   312,   313,   329,   332,   335,   338,
991      341,   344,   326,   347,   354,   357,   360,   494,   495,   368,
992      369,   189
993 };
994 
995   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
996      positive, shift that token.  If negative, reduce the rule whose
997      number is the opposite.  If YYTABLE_NINF, syntax error.  */
998 static const yytype_int16 yytable[] =
999 {
1000       15,    21,   521,    26,    27,   107,     7,   306,    30,   107,
1001        7,   201,   304,   206,   112,    35,    25,   533,   375,   392,
1002       34,   231,   233,   235,   237,   239,   362,     7,   351,    30,
1003       39,    40,    30,     8,     9,    28,   184,    35,   278,   184,
1004      114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
1005      124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
1006      134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
1007      144,   145,   146,   148,   149,   150,   151,   152,   153,   154,
1008      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
1009      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
1010      175,   176,   177,   183,     7,   198,   353,    30,    30,   187,
1011      185,   180,   181,   113,   203,     2,     3,   179,    30,   182,
1012      183,   208,   178,   214,   374,   184,   377,   185,   241,   417,
1013      179,    30,   446,   183,   441,   247,   250,    29,    30,   615,
1014      185,   280,   198,    30,     8,     9,   443,    11,     8,     9,
1015      184,    11,    12,    13,    30,     8,     9,   536,    11,   107,
1016        7,   198,    37,    12,    13,    30,     8,     9,   179,    30,
1017      182,   183,   184,   106,   295,   296,   107,     7,   185,    30,
1018        8,     9,    38,   376,   381,   626,   404,   476,   295,   296,
1019       31,    32,   380,    30,     8,     9,   383,   179,    30,     4,
1020        5,     6,     7,     8,     9,    10,    11,   386,   414,   415,
1021      387,    12,    13,   388,     8,     9,   389,   546,   520,   390,
1022      349,   293,   391,    30,   182,   183,   560,   393,     0,   371,
1023      184,     0,   185,     0,     0,    30,   196,   183,     0,     0,
1024      395,     0,   184,   396,   185,     0,   397,     0,     0,   398,
1025        0,     0,   399,    30,     8,     9,     0,     0,   401,     0,
1026      184,   403,   226,    30,   182,   183,     0,     0,   406,     0,
1027        0,   407,   185,     0,   408,    30,     8,     9,   107,     7,
1028      382,   409,     0,   411,   226,     0,   412,     0,     0,   413,
1029      179,    30,     8,     9,   472,   473,     8,     9,     0,     0,
1030        0,     0,     0,     0,     0,     0,     0,   418,     0,     0,
1031      419,   420,     0,     0,     0,   422,     0,     0,   424,     0,
1032        0,   425,     0,     0,   426,     0,     0,   427,     0,     0,
1033      428,     0,     0,   429,     0,     0,   430,     0,     0,     0,
1034        0,     0,     0,     0,     0,   433,     0,     0,     0,     0,
1035        0,     0,   422,     0,     0,   435,   479,     0,   436,     0,
1036        0,     0,     0,   437,     0,     0,   438,   439,     0,     0,
1037      445,   447,     0,     0,     0,     0,     0,     0,     0,     0,
1038      444,     0,     0,     0,     0,     0,     0,     0,   451,     0,
1039        0,     0,     0,     0,     0,     0,     0,   459,   460,   461,
1040        0,     0,     0,   463,   468,     0,   465,     0,   467,     0,
1041        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1042        0,     0,   484,   485,   486,     0,     0,     0,     0,     0,
1043      487,     0,   539,     0,   499,     0,     0,     0,   492,     0,
1044        0,   496,     0,     0,     0,     0,     0,     0,   500,   502,
1045      503,   504,   505,   506,     0,   551,   507,     0,     0,     0,
1046        0,     0,     0,     0,   514,   515,     0,     0,   517,   518,
1047      519,     0,     0,     0,     0,     0,   522,   523,   422,     0,
1048      525,   526,   527,     0,     0,     0,     0,   532,     0,   534,
1049      535,     0,     0,     0,   537,     0,     0,     0,   581,     0,
1050        0,     0,   585,     0,     0,     0,   587,   588,     0,     0,
1051        0,     0,   592,     0,   547,   593,   594,     0,     0,     0,
1052        0,     0,   556,     0,     0,     0,     0,   557,     0,     0,
1053       36,     0,     0,     0,     0,     0,     0,   104,   422,     0,
1054      562,   563,   564,   565,   566,   393,     0,   569,   570,   571,
1055      422,   573,   574,   575,   576,     0,     0,   579,   580,     0,
1056        0,     0,     0,   628,     0,   584,     0,     0,     0,   590,
1057        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1058      422,   596,   597,     0,   422,   600,   422,   422,   603,     0,
1059        0,   422,   422,   422,     0,     0,     0,     0,     0,     0,
1060        0,     0,     0,     0,     0,     0,     0,   612,   613,   614,
1061        0,     0,     0,     0,   618,   619,   620,     0,     0,     0,
1062      193,     0,   625,     0,     0,   627,   211,   422,   217,   220,
1063      223,   227,     0,     0,     0,     0,     0,     0,   244,     0,
1064        0,   253,   256,   259,   262,   265,   269,   272,   275,     0,
1065        0,     0,   284,   287,   290,   217,   297,   211,     0,   308,
1066      311,   315,   319,   322,   325,   328,   331,   334,   337,   340,
1067      343,   346,   284,   211,   315,   356,   359,     0,   364,   367,
1068      367,    41,    42,    43,    44,    45,    46,    47,    48,    49,
1069       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
1070        0,    60,    61,    62,    63,    64,    65,    66,    67,    68,
1071        0,    69,     0,     0,     0,     0,    70,    71,     0,    72,
1072        0,     0,    73,     0,     0,     0,     0,     0,     0,     0,
1073        0,     0,     0,    74,    75,    76,    77,    78,    79,    80,
1074       81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
1075       91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
1076      101,   102,     0,     0,     0,     0,     8,     9,     0,     0,
1077        0,     0,     0,   103,     0,     0,     0,     0,     0,     0,
1078        0,     0,     0,   110,   111,     0,     0,   192,   195,   200,
1079      202,   205,   207,   210,   213,   216,   219,   222,   225,   230,
1080      232,   234,   236,   238,   240,   243,   246,   249,   252,   255,
1081      258,   261,   264,   268,   271,   274,   277,   279,   283,   147,
1082      286,   289,   292,   294,   303,   305,   307,   310,   314,   318,
1083      321,   324,   327,   330,   333,   336,   339,   342,   345,   348,
1084      350,   352,   355,   358,   361,   363,   366,   370,   372,   373,
1085        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1086        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1087        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1088      442,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1089      448,   450,     0,   452,   453,   454,   455,   456,     0,   457,
1090      458,     0,     0,     0,     0,   462,     0,     0,   464,     0,
1091        0,   466,     0,     0,     0,   469,   470,   471,     0,   474,
1092        0,   297,   477,   478,   315,     0,   480,     0,   481,   482,
1093      483,     0,     0,   378,     0,     0,   379,   488,     0,   489,
1094      490,   491,     0,   384,     0,     0,     0,     0,     0,   385,
1095        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1096        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1097        0,     0,     0,     0,   394,     0,     0,   474,     0,     0,
1098        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1099        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1100      315,     0,   400,     0,   540,   402,   541,   542,   543,   544,
1101      545,   227,   405,     0,     0,     0,     0,     0,     0,   548,
1102        0,   549,   550,   315,     0,     0,   552,   553,   410,   554,
1103      555,     0,     0,     0,     0,     0,     0,     0,   558,   559,
1104        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1105        0,     0,     0,     0,     0,     0,     0,     0,   421,     0,
1106        0,     0,   423,     0,     0,     0,   315,   582,   583,     0,
1107      315,     0,     0,   586,   315,   315,     0,   589,     0,   591,
1108      315,     0,     0,   315,   315,     0,   431,     0,     0,   432,
1109        0,     0,     0,     0,     0,     0,     0,     0,     0,   434,
1110      608,   609,     0,     0,   610,     0,     0,   611,     0,     0,
1111        0,     0,     0,     0,   440,     0,   616,   617,     0,     0,
1112        0,     0,     0,   622,   623,     0,     0,     0,     0,   297,
1113        0,   315,     0,     0,     0,     0,     0,     0,     0,     0,
1114        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1115        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1116        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1117        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1118        0,     0,     0,     0,     0,     0,     0,     0,   497,     0,
1119      498,     0,     0,     0,     0,   501,     0,     0,     0,     0,
1120        0,     0,     0,     0,   508,   509,   510,   511,   512,   513,
1121        0,     0,     0,   516,     0,     0,     0,     0,     0,     0,
1122        0,     0,     0,     0,     0,   524,     0,     0,     0,     0,
1123      528,   529,   530,   531,     0,     0,     0,     0,     0,     0,
1124        0,   538,     0,     0,     0,     0,     0,     0,     0,     0,
1125        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1126        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1127        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1128        0,     0,     0,     0,     0,   561,     0,     0,     0,     0,
1129        0,     0,   567,   568,     0,     0,     0,   572,     0,     0,
1130        0,     0,   577,   578,     0,     0,     0,     0,     0,     0,
1131        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1132        0,     0,     0,     0,     0,     0,     0,   595,     0,     0,
1133      598,   599,     0,   601,   602,     0,     0,   604,   605,   606,
1134      607,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1135        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1136        0,     0,     0,     0,   621,     0,     0,     0,   624,     0,
1137        0,     0,     0,     0,   629
1138 };
1139 
1140 static const yytype_int16 yycheck[] =
1141 {
1142        1,     1,   474,     4,     5,    86,    87,   154,    87,    86,
1143       87,   118,   153,   120,    93,    96,    86,   489,     1,    96,
1144       21,   128,   129,   130,   131,   132,   173,    87,   169,    87,
1145       31,    32,    87,    88,    89,    86,    94,    96,   145,    94,
1146       41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
1147       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
1148       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
1149       71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
1150       81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
1151       91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
1152      101,   102,   103,    89,    87,   117,   170,    87,    87,   114,
1153       96,   112,   113,    92,   119,     0,     1,    86,    87,    88,
1154       89,   121,     1,   123,    86,    94,    96,    96,   133,    96,
1155       86,    87,    88,    89,    86,   135,   136,    86,    87,   611,
1156       96,   146,   154,    87,    88,    89,    89,    91,    88,    89,
1157       94,    91,    96,    97,    87,    88,    89,    88,    91,    86,
1158       87,   173,    27,    96,    97,    87,    88,    89,    86,    87,
1159       88,    89,    94,    35,    96,    97,    86,    87,    96,    87,
1160       88,    89,    27,   184,   196,   625,    96,   417,    96,    97,
1161       92,    93,   193,    87,    88,    89,   197,    86,    87,    84,
1162       85,    86,    87,    88,    89,    90,    91,   208,    86,    87,
1163      211,    96,    97,   214,    88,    89,   217,   507,   473,   220,
1164      168,   151,   223,    87,    88,    89,   537,   228,    -1,   176,
1165       94,    -1,    96,    -1,    -1,    87,    88,    89,    -1,    -1,
1166      241,    -1,    94,   244,    96,    -1,   247,    -1,    -1,   250,
1167       -1,    -1,   253,    87,    88,    89,    -1,    -1,   259,    -1,
1168       94,   262,    96,    87,    88,    89,    -1,    -1,   269,    -1,
1169       -1,   272,    96,    -1,   275,    87,    88,    89,    86,    87,
1170       88,   282,    -1,   284,    96,    -1,   287,    -1,    -1,   290,
1171       86,    87,    88,    89,    86,    87,    88,    89,    -1,    -1,
1172       -1,    -1,    -1,    -1,    -1,    -1,    -1,   308,    -1,    -1,
1173      311,   312,    -1,    -1,    -1,   316,    -1,    -1,   319,    -1,
1174       -1,   322,    -1,    -1,   325,    -1,    -1,   328,    -1,    -1,
1175      331,    -1,    -1,   334,    -1,    -1,   337,    -1,    -1,    -1,
1176       -1,    -1,    -1,    -1,    -1,   346,    -1,    -1,    -1,    -1,
1177       -1,    -1,   353,    -1,    -1,   356,   420,    -1,   359,    -1,
1178       -1,    -1,    -1,   364,    -1,    -1,   367,   368,    -1,    -1,
1179      382,   383,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1180      380,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   388,    -1,
1181       -1,    -1,    -1,    -1,    -1,    -1,    -1,   397,   398,   399,
1182       -1,    -1,    -1,   403,   409,    -1,   406,    -1,   408,    -1,
1183       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1184       -1,    -1,   427,   428,   429,    -1,    -1,    -1,    -1,    -1,
1185      430,    -1,   496,    -1,   446,    -1,    -1,    -1,   438,    -1,
1186       -1,   442,    -1,    -1,    -1,    -1,    -1,    -1,   449,   450,
1187      451,   452,   453,   454,    -1,   519,   457,    -1,    -1,    -1,
1188       -1,    -1,    -1,    -1,   465,   466,    -1,    -1,   469,   470,
1189      471,    -1,    -1,    -1,    -1,    -1,   477,   478,   479,    -1,
1190      481,   482,   483,    -1,    -1,    -1,    -1,   488,    -1,   490,
1191      491,    -1,    -1,    -1,   495,    -1,    -1,    -1,   562,    -1,
1192       -1,    -1,   566,    -1,    -1,    -1,   570,   571,    -1,    -1,
1193       -1,    -1,   576,    -1,   514,   579,   580,    -1,    -1,    -1,
1194       -1,    -1,   527,    -1,    -1,    -1,    -1,   532,    -1,    -1,
1195       26,    -1,    -1,    -1,    -1,    -1,    -1,    33,   539,    -1,
1196      541,   542,   543,   544,   545,   546,    -1,   548,   549,   550,
1197      551,   552,   553,   554,   555,    -1,    -1,   558,   559,    -1,
1198       -1,    -1,    -1,   627,    -1,   565,    -1,    -1,    -1,   574,
1199       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1200      581,   582,   583,    -1,   585,   586,   587,   588,   589,    -1,
1201       -1,   592,   593,   594,    -1,    -1,    -1,    -1,    -1,    -1,
1202       -1,    -1,    -1,    -1,    -1,    -1,    -1,   608,   609,   610,
1203       -1,    -1,    -1,    -1,   614,   616,   617,    -1,    -1,    -1,
1204      116,    -1,   623,    -1,    -1,   626,   122,   628,   124,   125,
1205      126,   127,    -1,    -1,    -1,    -1,    -1,    -1,   134,    -1,
1206       -1,   137,   138,   139,   140,   141,   142,   143,   144,    -1,
1207       -1,    -1,   148,   149,   150,   151,   152,   153,    -1,   155,
1208      156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
1209      166,   167,   168,   169,   170,   171,   172,    -1,   174,   175,
1210      176,     3,     4,     5,     6,     7,     8,     9,    10,    11,
1211       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
1212       -1,    23,    24,    25,    26,    27,    28,    29,    30,    31,
1213       -1,    33,    -1,    -1,    -1,    -1,    38,    39,    -1,    41,
1214       -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1215       -1,    -1,    -1,    55,    56,    57,    58,    59,    60,    61,
1216       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
1217       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
1218       82,    83,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,
1219       -1,    -1,    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,
1220       -1,    -1,    -1,    37,    38,    -1,    -1,   115,   116,   117,
1221      118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
1222      128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
1223      138,   139,   140,   141,   142,   143,   144,   145,   146,    73,
1224      148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
1225      158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
1226      168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
1227       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1228       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1229       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1230      376,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1231      386,   387,    -1,   389,   390,   391,   392,   393,    -1,   395,
1232      396,    -1,    -1,    -1,    -1,   401,    -1,    -1,   404,    -1,
1233       -1,   407,    -1,    -1,    -1,   411,   412,   413,    -1,   415,
1234       -1,   417,   418,   419,   420,    -1,   422,    -1,   424,   425,
1235      426,    -1,    -1,   187,    -1,    -1,   190,   433,    -1,   435,
1236      436,   437,    -1,   197,    -1,    -1,    -1,    -1,    -1,   203,
1237       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1238       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1239       -1,    -1,    -1,    -1,   228,    -1,    -1,   473,    -1,    -1,
1240       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1241       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1242      496,    -1,   256,    -1,   500,   259,   502,   503,   504,   505,
1243      506,   507,   266,    -1,    -1,    -1,    -1,    -1,    -1,   515,
1244       -1,   517,   518,   519,    -1,    -1,   522,   523,   282,   525,
1245      526,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   534,   535,
1246       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1247       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   312,    -1,
1248       -1,    -1,   316,    -1,    -1,    -1,   562,   563,   564,    -1,
1249      566,    -1,    -1,   569,   570,   571,    -1,   573,    -1,   575,
1250      576,    -1,    -1,   579,   580,    -1,   340,    -1,    -1,   343,
1251       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   353,
1252      596,   597,    -1,    -1,   600,    -1,    -1,   603,    -1,    -1,
1253       -1,    -1,    -1,    -1,   368,    -1,   612,   613,    -1,    -1,
1254       -1,    -1,    -1,   619,   620,    -1,    -1,    -1,    -1,   625,
1255       -1,   627,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1256       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1257       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1258       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1259       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1260       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   442,    -1,
1261      444,    -1,    -1,    -1,    -1,   449,    -1,    -1,    -1,    -1,
1262       -1,    -1,    -1,    -1,   458,   459,   460,   461,   462,   463,
1263       -1,    -1,    -1,   467,    -1,    -1,    -1,    -1,    -1,    -1,
1264       -1,    -1,    -1,    -1,    -1,   479,    -1,    -1,    -1,    -1,
1265      484,   485,   486,   487,    -1,    -1,    -1,    -1,    -1,    -1,
1266       -1,   495,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1267       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1268       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1269       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1270       -1,    -1,    -1,    -1,    -1,   539,    -1,    -1,    -1,    -1,
1271       -1,    -1,   546,   547,    -1,    -1,    -1,   551,    -1,    -1,
1272       -1,    -1,   556,   557,    -1,    -1,    -1,    -1,    -1,    -1,
1273       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1274       -1,    -1,    -1,    -1,    -1,    -1,    -1,   581,    -1,    -1,
1275      584,   585,    -1,   587,   588,    -1,    -1,   591,   592,   593,
1276      594,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1277       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1278       -1,    -1,    -1,    -1,   618,    -1,    -1,    -1,   622,    -1,
1279       -1,    -1,    -1,    -1,   628
1280 };
1281 
1282   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1283      symbol of state STATE-NUM.  */
1284 static const yytype_uint8 yystos[] =
1285 {
1286        0,    99,     0,     1,    84,    85,    86,    87,    88,    89,
1287       90,    91,    96,    97,   100,   101,   102,   104,   105,   106,
1288      107,   109,   110,   111,   112,    86,   101,   101,    86,    86,
1289       87,    92,    93,   108,   101,    96,   102,   110,   112,   101,
1290      101,     3,     4,     5,     6,     7,     8,     9,    10,    11,
1291       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
1292       23,    24,    25,    26,    27,    28,    29,    30,    31,    33,
1293       38,    39,    41,    44,    55,    56,    57,    58,    59,    60,
1294       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
1295       71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
1296       81,    82,    83,    95,   102,   126,   111,    86,   101,   103,
1297      103,   103,    93,    92,   101,   101,   101,   101,   101,   101,
1298      101,   101,   101,   101,   101,   101,   101,   101,   101,   101,
1299      101,   101,   101,   101,   101,   101,   101,   101,   101,   101,
1300      101,   101,   101,   101,   101,   101,   101,   103,   101,   101,
1301      101,   101,   101,   101,   101,   101,   101,   101,   101,   101,
1302      101,   101,   101,   101,   101,   101,   101,   101,   101,   101,
1303      101,   101,   101,   101,   101,   101,   101,   101,     1,    86,
1304      101,   101,    88,    89,    94,    96,   124,   125,   127,   179,
1305      109,   128,   179,   102,   133,   179,    88,   117,   124,   134,
1306      179,   128,   179,   125,   142,   179,   128,   179,   109,   144,
1307      179,   102,   161,   179,   109,   129,   179,   102,   155,   179,
1308      102,   145,   179,   102,   148,   179,    96,   102,   118,   143,
1309      179,   128,   179,   128,   179,   128,   179,   128,   179,   128,
1310      179,   125,   130,   179,   102,   131,   179,   109,   132,   179,
1311      109,   135,   179,   102,   136,   179,   102,   137,   179,   102,
1312      138,   179,   102,   139,   179,   102,   123,   140,   179,   102,
1313      141,   179,   102,   146,   179,   102,   147,   179,   128,   179,
1314      125,   149,   150,   179,   102,   151,   179,   102,   152,   179,
1315      102,   153,   179,   155,   179,    96,    97,   102,   113,   114,
1316      115,   116,   156,   179,   161,   179,   134,   179,   102,   157,
1317      179,   102,   162,   163,   179,   102,   122,   154,   179,   102,
1318      158,   179,   102,   159,   179,   102,   170,   179,   102,   164,
1319      179,   102,   165,   179,   102,   166,   179,   102,   167,   179,
1320      102,   168,   179,   102,   169,   179,   102,   171,   179,   151,
1321      179,   161,   179,   122,   172,   179,   102,   173,   179,   102,
1322      174,   179,   134,   179,   102,   160,   179,   102,   177,   178,
1323      179,   178,   179,   179,    86,     1,   101,    96,   103,   103,
1324      101,   124,    88,   101,   103,   103,   101,   101,   101,   101,
1325      101,   101,    96,   101,   103,   101,   101,   101,   101,   101,
1326      103,   101,   103,   101,    96,   103,   101,   101,   101,   101,
1327      103,   101,   101,   101,    86,    87,   121,    96,   101,   101,
1328      101,   103,   101,   103,   101,   101,   101,   101,   101,   101,
1329      101,   103,   103,   101,   103,   101,   101,   101,   101,   101,
1330      103,    86,   102,    89,   109,   124,    88,   124,   102,   119,
1331      102,   109,   102,   102,   102,   102,   102,   102,   102,   109,
1332      109,   109,   102,   109,   102,   109,   102,   109,   125,   102,
1333      102,   102,    86,    87,   102,   120,   115,   102,   102,   122,
1334      102,   102,   102,   102,   125,   125,   125,   109,   102,   102,
1335      102,   102,   109,   125,   175,   176,   101,   103,   103,   124,
1336      101,   103,   101,   101,   101,   101,   101,   101,   103,   103,
1337      103,   103,   103,   103,   101,   101,   103,   101,   101,   101,
1338      120,   121,   101,   101,   103,   101,   101,   101,   103,   103,
1339      103,   103,   101,   121,   101,   101,    88,   101,   103,   122,
1340      102,   102,   102,   102,   102,   102,   118,   109,   102,   102,
1341      102,   122,   102,   102,   102,   102,   125,   125,   102,   102,
1342      175,   103,   101,   101,   101,   101,   101,   103,   103,   101,
1343      101,   101,   103,   101,   101,   101,   101,   103,   103,   101,
1344      101,   122,   102,   102,   109,   122,   102,   122,   122,   102,
1345      125,   102,   122,   122,   122,   103,   101,   101,   103,   103,
1346      101,   103,   103,   101,   103,   103,   103,   103,   102,   102,
1347      102,   102,   101,   101,   101,   121,   102,   102,   109,   101,
1348      101,   103,   102,   102,   103,   101,   113,   101,   122,   103
1349 };
1350 
1351   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1352 static const yytype_uint8 yyr1[] =
1353 {
1354        0,    98,    99,    99,   100,   100,   100,   100,   100,   100,
1355      100,   101,   101,   102,   102,   103,   103,   104,   105,   105,
1356      106,   107,   107,   108,   108,   108,   108,   108,   109,   109,
1357      110,   110,   110,   111,   111,   112,   112,   113,   113,   114,
1358      114,   114,   115,   116,   116,   117,   117,   117,   117,   117,
1359      117,   117,   117,   118,   118,   118,   118,   119,   119,   120,
1360      120,   120,   121,   121,   122,   122,   123,   123,   124,   124,
1361      124,   124,   125,   125,   126,   126,   126,   126,   126,   126,
1362      126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
1363      126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
1364      126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
1365      126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
1366      126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
1367      126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
1368      126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
1369      126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
1370      126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
1371      126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
1372      126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
1373      126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
1374      126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
1375      136,   137,   138,   138,   139,   140,   141,   142,   143,   144,
1376      145,   146,   147,   148,   149,   150,   150,   151,   152,   153,
1377      154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
1378      163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
1379      173,   174,   175,   175,   176,   176,   177,   178,   178,   179,
1380      179,   179
1381 };
1382 
1383   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
1384 static const yytype_int8 yyr2[] =
1385 {
1386        0,     2,     0,     2,     1,     2,     2,     1,     1,     1,
1387        2,     1,     2,     1,     1,     1,     2,     4,     4,     4,
1388        3,     2,     1,     0,     2,     2,     4,     4,     1,     1,
1389        1,     1,     2,     1,     1,     1,     3,     1,     1,     1,
1390        1,     2,     1,     1,     3,     1,     1,     2,     2,     3,
1391        3,     3,     4,     1,     1,     3,     3,     1,     3,     2,
1392        1,     2,     1,     2,     1,     3,     1,     3,     1,     1,
1393        2,     3,     1,     1,     3,     3,     3,     3,     3,     3,
1394        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1395        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1396        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1397        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1398        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1399        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1400        3,     3,     3,     3,     3,     3,     2,     3,     3,     3,
1401        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1402        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1403        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1404        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1405        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1406        3,     2,     2,    14,     6,     4,     4,     4,     2,     4,
1407        4,     2,     2,     4,     4,     2,     6,     2,     2,     4,
1408        8,    12,     4,     8,     2,     1,     3,     8,     8,     6,
1409        2,    18,     2,    10,     8,     8,     8,     8,     7,     4,
1410        2,     4,     4,     4,     4,     2,     2,     6,     6,     2,
1411        4,     8,     2,     1,     1,     3,     3,     4,     2,     6,
1412        4,     3
1413 };
1414 
1415 
1416 enum { YYENOMEM = -2 };
1417 
1418 #define yyerrok         (yyerrstatus = 0)
1419 #define yyclearin       (yychar = YYEMPTY)
1420 
1421 #define YYACCEPT        goto yyacceptlab
1422 #define YYABORT         goto yyabortlab
1423 #define YYERROR         goto yyerrorlab
1424 
1425 
1426 #define YYRECOVERING()  (!!yyerrstatus)
1427 
1428 #define YYBACKUP(Token, Value)                                    \
1429   do                                                              \
1430     if (yychar == YYEMPTY)                                        \
1431       {                                                           \
1432         yychar = (Token);                                         \
1433         yylval = (Value);                                         \
1434         YYPOPSTACK (yylen);                                       \
1435         yystate = *yyssp;                                         \
1436         goto yybackup;                                            \
1437       }                                                           \
1438     else                                                          \
1439       {                                                           \
1440         yyerror (YY_("syntax error: cannot back up")); \
1441         YYERROR;                                                  \
1442       }                                                           \
1443   while (0)
1444 
1445 /* Backward compatibility with an undocumented macro.
1446    Use YYerror or YYUNDEF. */
1447 #define YYERRCODE YYUNDEF
1448 
1449 
1450 /* Enable debugging if requested.  */
1451 #if YYDEBUG
1452 
1453 # ifndef YYFPRINTF
1454 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1455 #  define YYFPRINTF fprintf
1456 # endif
1457 
1458 # define YYDPRINTF(Args)                        \
1459 do {                                            \
1460   if (yydebug)                                  \
1461     YYFPRINTF Args;                             \
1462 } while (0)
1463 
1464 /* This macro is provided for backward compatibility. */
1465 # ifndef YY_LOCATION_PRINT
1466 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1467 # endif
1468 
1469 
1470 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
1471 do {                                                                      \
1472   if (yydebug)                                                            \
1473     {                                                                     \
1474       YYFPRINTF (stderr, "%s ", Title);                                   \
1475       yy_symbol_print (stderr,                                            \
1476                   Kind, Value); \
1477       YYFPRINTF (stderr, "\n");                                           \
1478     }                                                                     \
1479 } while (0)
1480 
1481 
1482 /*-----------------------------------.
1483 | Print this symbol's value on YYO.  |
1484 `-----------------------------------*/
1485 
1486 static void
yy_symbol_value_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)1487 yy_symbol_value_print (FILE *yyo,
1488                        yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
1489 {
1490   FILE *yyoutput = yyo;
1491   YY_USE (yyoutput);
1492   if (!yyvaluep)
1493     return;
1494 # ifdef YYPRINT
1495   if (yykind < YYNTOKENS)
1496     YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
1497 # endif
1498   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1499   YY_USE (yykind);
1500   YY_IGNORE_MAYBE_UNINITIALIZED_END
1501 }
1502 
1503 
1504 /*---------------------------.
1505 | Print this symbol on YYO.  |
1506 `---------------------------*/
1507 
1508 static void
yy_symbol_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)1509 yy_symbol_print (FILE *yyo,
1510                  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
1511 {
1512   YYFPRINTF (yyo, "%s %s (",
1513              yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
1514 
1515   yy_symbol_value_print (yyo, yykind, yyvaluep);
1516   YYFPRINTF (yyo, ")");
1517 }
1518 
1519 /*------------------------------------------------------------------.
1520 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1521 | TOP (included).                                                   |
1522 `------------------------------------------------------------------*/
1523 
1524 static void
yy_stack_print(yy_state_t * yybottom,yy_state_t * yytop)1525 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
1526 {
1527   YYFPRINTF (stderr, "Stack now");
1528   for (; yybottom <= yytop; yybottom++)
1529     {
1530       int yybot = *yybottom;
1531       YYFPRINTF (stderr, " %d", yybot);
1532     }
1533   YYFPRINTF (stderr, "\n");
1534 }
1535 
1536 # define YY_STACK_PRINT(Bottom, Top)                            \
1537 do {                                                            \
1538   if (yydebug)                                                  \
1539     yy_stack_print ((Bottom), (Top));                           \
1540 } while (0)
1541 
1542 
1543 /*------------------------------------------------.
1544 | Report that the YYRULE is going to be reduced.  |
1545 `------------------------------------------------*/
1546 
1547 static void
yy_reduce_print(yy_state_t * yyssp,YYSTYPE * yyvsp,int yyrule)1548 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
1549                  int yyrule)
1550 {
1551   int yylno = yyrline[yyrule];
1552   int yynrhs = yyr2[yyrule];
1553   int yyi;
1554   YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
1555              yyrule - 1, yylno);
1556   /* The symbols being reduced.  */
1557   for (yyi = 0; yyi < yynrhs; yyi++)
1558     {
1559       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1560       yy_symbol_print (stderr,
1561                        YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
1562                        &yyvsp[(yyi + 1) - (yynrhs)]);
1563       YYFPRINTF (stderr, "\n");
1564     }
1565 }
1566 
1567 # define YY_REDUCE_PRINT(Rule)          \
1568 do {                                    \
1569   if (yydebug)                          \
1570     yy_reduce_print (yyssp, yyvsp, Rule); \
1571 } while (0)
1572 
1573 /* Nonzero means print parse trace.  It is left uninitialized so that
1574    multiple parsers can coexist.  */
1575 int yydebug;
1576 #else /* !YYDEBUG */
1577 # define YYDPRINTF(Args) ((void) 0)
1578 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
1579 # define YY_STACK_PRINT(Bottom, Top)
1580 # define YY_REDUCE_PRINT(Rule)
1581 #endif /* !YYDEBUG */
1582 
1583 
1584 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1585 #ifndef YYINITDEPTH
1586 # define YYINITDEPTH 200
1587 #endif
1588 
1589 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1590    if the built-in stack extension method is used).
1591 
1592    Do not make this value too large; the results are undefined if
1593    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1594    evaluated with infinite-precision integer arithmetic.  */
1595 
1596 #ifndef YYMAXDEPTH
1597 # define YYMAXDEPTH 10000
1598 #endif
1599 
1600 
1601 
1602 
1603 
1604 
1605 /*-----------------------------------------------.
1606 | Release the memory associated to this symbol.  |
1607 `-----------------------------------------------*/
1608 
1609 static void
yydestruct(const char * yymsg,yysymbol_kind_t yykind,YYSTYPE * yyvaluep)1610 yydestruct (const char *yymsg,
1611             yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
1612 {
1613   YY_USE (yyvaluep);
1614   if (!yymsg)
1615     yymsg = "Deleting";
1616   YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
1617 
1618   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1619   YY_USE (yykind);
1620   YY_IGNORE_MAYBE_UNINITIALIZED_END
1621 }
1622 
1623 
1624 /* Lookahead token kind.  */
1625 int yychar;
1626 
1627 /* The semantic value of the lookahead symbol.  */
1628 YYSTYPE yylval;
1629 /* Number of syntax errors so far.  */
1630 int yynerrs;
1631 
1632 
1633 
1634 
1635 /*----------.
1636 | yyparse.  |
1637 `----------*/
1638 
1639 int
yyparse(void)1640 yyparse (void)
1641 {
1642     yy_state_fast_t yystate = 0;
1643     /* Number of tokens to shift before error messages enabled.  */
1644     int yyerrstatus = 0;
1645 
1646     /* Refer to the stacks through separate pointers, to allow yyoverflow
1647        to reallocate them elsewhere.  */
1648 
1649     /* Their size.  */
1650     YYPTRDIFF_T yystacksize = YYINITDEPTH;
1651 
1652     /* The state stack: array, bottom, top.  */
1653     yy_state_t yyssa[YYINITDEPTH];
1654     yy_state_t *yyss = yyssa;
1655     yy_state_t *yyssp = yyss;
1656 
1657     /* The semantic value stack: array, bottom, top.  */
1658     YYSTYPE yyvsa[YYINITDEPTH];
1659     YYSTYPE *yyvs = yyvsa;
1660     YYSTYPE *yyvsp = yyvs;
1661 
1662   int yyn;
1663   /* The return value of yyparse.  */
1664   int yyresult;
1665   /* Lookahead symbol kind.  */
1666   yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
1667   /* The variables used to return semantic value and location from the
1668      action routines.  */
1669   YYSTYPE yyval;
1670 
1671 
1672 
1673 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1674 
1675   /* The number of symbols on the RHS of the reduced rule.
1676      Keep to zero when no symbol should be popped.  */
1677   int yylen = 0;
1678 
1679   YYDPRINTF ((stderr, "Starting parse\n"));
1680 
1681   yychar = YYEMPTY; /* Cause a token to be read.  */
1682   goto yysetstate;
1683 
1684 
1685 /*------------------------------------------------------------.
1686 | yynewstate -- push a new state, which is found in yystate.  |
1687 `------------------------------------------------------------*/
1688 yynewstate:
1689   /* In all cases, when you get here, the value and location stacks
1690      have just been pushed.  So pushing a state here evens the stacks.  */
1691   yyssp++;
1692 
1693 
1694 /*--------------------------------------------------------------------.
1695 | yysetstate -- set current state (the top of the stack) to yystate.  |
1696 `--------------------------------------------------------------------*/
1697 yysetstate:
1698   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1699   YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
1700   YY_IGNORE_USELESS_CAST_BEGIN
1701   *yyssp = YY_CAST (yy_state_t, yystate);
1702   YY_IGNORE_USELESS_CAST_END
1703   YY_STACK_PRINT (yyss, yyssp);
1704 
1705   if (yyss + yystacksize - 1 <= yyssp)
1706 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
1707     goto yyexhaustedlab;
1708 #else
1709     {
1710       /* Get the current used size of the three stacks, in elements.  */
1711       YYPTRDIFF_T yysize = yyssp - yyss + 1;
1712 
1713 # if defined yyoverflow
1714       {
1715         /* Give user a chance to reallocate the stack.  Use copies of
1716            these so that the &'s don't force the real ones into
1717            memory.  */
1718         yy_state_t *yyss1 = yyss;
1719         YYSTYPE *yyvs1 = yyvs;
1720 
1721         /* Each stack pointer address is followed by the size of the
1722            data in use in that stack, in bytes.  This used to be a
1723            conditional around just the two extra args, but that might
1724            be undefined if yyoverflow is a macro.  */
1725         yyoverflow (YY_("memory exhausted"),
1726                     &yyss1, yysize * YYSIZEOF (*yyssp),
1727                     &yyvs1, yysize * YYSIZEOF (*yyvsp),
1728                     &yystacksize);
1729         yyss = yyss1;
1730         yyvs = yyvs1;
1731       }
1732 # else /* defined YYSTACK_RELOCATE */
1733       /* Extend the stack our own way.  */
1734       if (YYMAXDEPTH <= yystacksize)
1735         goto yyexhaustedlab;
1736       yystacksize *= 2;
1737       if (YYMAXDEPTH < yystacksize)
1738         yystacksize = YYMAXDEPTH;
1739 
1740       {
1741         yy_state_t *yyss1 = yyss;
1742         union yyalloc *yyptr =
1743           YY_CAST (union yyalloc *,
1744                    YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
1745         if (! yyptr)
1746           goto yyexhaustedlab;
1747         YYSTACK_RELOCATE (yyss_alloc, yyss);
1748         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1749 #  undef YYSTACK_RELOCATE
1750         if (yyss1 != yyssa)
1751           YYSTACK_FREE (yyss1);
1752       }
1753 # endif
1754 
1755       yyssp = yyss + yysize - 1;
1756       yyvsp = yyvs + yysize - 1;
1757 
1758       YY_IGNORE_USELESS_CAST_BEGIN
1759       YYDPRINTF ((stderr, "Stack size increased to %ld\n",
1760                   YY_CAST (long, yystacksize)));
1761       YY_IGNORE_USELESS_CAST_END
1762 
1763       if (yyss + yystacksize - 1 <= yyssp)
1764         YYABORT;
1765     }
1766 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
1767 
1768   if (yystate == YYFINAL)
1769     YYACCEPT;
1770 
1771   goto yybackup;
1772 
1773 
1774 /*-----------.
1775 | yybackup.  |
1776 `-----------*/
1777 yybackup:
1778   /* Do appropriate processing given the current state.  Read a
1779      lookahead token if we need one and don't already have one.  */
1780 
1781   /* First try to decide what to do without reference to lookahead token.  */
1782   yyn = yypact[yystate];
1783   if (yypact_value_is_default (yyn))
1784     goto yydefault;
1785 
1786   /* Not known => get a lookahead token if don't already have one.  */
1787 
1788   /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
1789   if (yychar == YYEMPTY)
1790     {
1791       YYDPRINTF ((stderr, "Reading a token\n"));
1792       yychar = yylex ();
1793     }
1794 
1795   if (yychar <= YYEOF)
1796     {
1797       yychar = YYEOF;
1798       yytoken = YYSYMBOL_YYEOF;
1799       YYDPRINTF ((stderr, "Now at end of input.\n"));
1800     }
1801   else if (yychar == YYerror)
1802     {
1803       /* The scanner already issued an error message, process directly
1804          to error recovery.  But do not keep the error token as
1805          lookahead, it is too special and may lead us to an endless
1806          loop in error recovery. */
1807       yychar = YYUNDEF;
1808       yytoken = YYSYMBOL_YYerror;
1809       goto yyerrlab1;
1810     }
1811   else
1812     {
1813       yytoken = YYTRANSLATE (yychar);
1814       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1815     }
1816 
1817   /* If the proper action on seeing token YYTOKEN is to reduce or to
1818      detect an error, take that action.  */
1819   yyn += yytoken;
1820   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1821     goto yydefault;
1822   yyn = yytable[yyn];
1823   if (yyn <= 0)
1824     {
1825       if (yytable_value_is_error (yyn))
1826         goto yyerrlab;
1827       yyn = -yyn;
1828       goto yyreduce;
1829     }
1830 
1831   /* Count tokens shifted since error; after three, turn off error
1832      status.  */
1833   if (yyerrstatus)
1834     yyerrstatus--;
1835 
1836   /* Shift the lookahead token.  */
1837   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1838   yystate = yyn;
1839   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1840   *++yyvsp = yylval;
1841   YY_IGNORE_MAYBE_UNINITIALIZED_END
1842 
1843   /* Discard the shifted token.  */
1844   yychar = YYEMPTY;
1845   goto yynewstate;
1846 
1847 
1848 /*-----------------------------------------------------------.
1849 | yydefault -- do the default action for the current state.  |
1850 `-----------------------------------------------------------*/
1851 yydefault:
1852   yyn = yydefact[yystate];
1853   if (yyn == 0)
1854     goto yyerrlab;
1855   goto yyreduce;
1856 
1857 
1858 /*-----------------------------.
1859 | yyreduce -- do a reduction.  |
1860 `-----------------------------*/
1861 yyreduce:
1862   /* yyn is the number of a rule to reduce with.  */
1863   yylen = yyr2[yyn];
1864 
1865   /* If YYLEN is nonzero, implement the default value of the action:
1866      '$$ = $1'.
1867 
1868      Otherwise, the following line sets YYVAL to garbage.
1869      This behavior is undocumented and Bison
1870      users should not rely upon it.  Assigning to YYVAL
1871      unconditionally makes the parser a bit smaller, and it avoids a
1872      GCC warning that YYVAL may be used uninitialized.  */
1873   yyval = yyvsp[1-yylen];
1874 
1875 
1876   YY_REDUCE_PRINT (yyn);
1877   switch (yyn)
1878     {
1879   case 6: /* line: PREV NL  */
1880 #line 99 "zparser.y"
1881                         {}
1882 #line 1883 "zparser.c"
1883     break;
1884 
1885   case 7: /* line: ttl_directive  */
1886 #line 101 "zparser.y"
1887         {
1888 	    region_free_all(parser->rr_region);
1889 	    parser->current_rr.type = 0;
1890 	    parser->current_rr.rdata_count = 0;
1891 	    parser->current_rr.rdatas = parser->temporary_rdatas;
1892 	    parser->error_occurred = 0;
1893     }
1894 #line 1895 "zparser.c"
1895     break;
1896 
1897   case 8: /* line: origin_directive  */
1898 #line 109 "zparser.y"
1899         {
1900 	    region_free_all(parser->rr_region);
1901 	    parser->current_rr.type = 0;
1902 	    parser->current_rr.rdata_count = 0;
1903 	    parser->current_rr.rdatas = parser->temporary_rdatas;
1904 	    parser->error_occurred = 0;
1905     }
1906 #line 1907 "zparser.c"
1907     break;
1908 
1909   case 9: /* line: rr  */
1910 #line 117 "zparser.y"
1911     {	/* rr should be fully parsed */
1912 	    if (!parser->error_occurred) {
1913 			    parser->current_rr.rdatas
1914 				    =(rdata_atom_type *)region_alloc_array_init(
1915 					    parser->region,
1916 					    parser->current_rr.rdatas,
1917 					    parser->current_rr.rdata_count,
1918 					    sizeof(rdata_atom_type));
1919 
1920 			    process_rr();
1921 	    }
1922 
1923 	    region_free_all(parser->rr_region);
1924 
1925 	    parser->current_rr.type = 0;
1926 	    parser->current_rr.rdata_count = 0;
1927 	    parser->current_rr.rdatas = parser->temporary_rdatas;
1928 	    parser->error_occurred = 0;
1929     }
1930 #line 1931 "zparser.c"
1931     break;
1932 
1933   case 17: /* ttl_directive: DOLLAR_TTL sp str trail  */
1934 #line 151 "zparser.y"
1935     {
1936 	    parser->default_ttl = zparser_ttl2int((yyvsp[-1].data).str, &(parser->error_occurred));
1937 	    if (parser->error_occurred == 1) {
1938 		    parser->default_ttl = DEFAULT_TTL;
1939 			parser->error_occurred = 0;
1940 	    }
1941     }
1942 #line 1943 "zparser.c"
1943     break;
1944 
1945   case 18: /* origin_directive: DOLLAR_ORIGIN sp abs_dname trail  */
1946 #line 161 "zparser.y"
1947     {
1948 	    /* if previous origin is unused, remove it, do not leak it */
1949 	    if(parser->origin != error_domain && parser->origin != (yyvsp[-1].domain)) {
1950 		/* protect $3 from deletion, because deldomain walks up */
1951 		(yyvsp[-1].domain)->usage ++;
1952 	    	domain_table_deldomain(parser->db, parser->origin);
1953 		(yyvsp[-1].domain)->usage --;
1954 	    }
1955 	    parser->origin = (yyvsp[-1].domain);
1956     }
1957 #line 1958 "zparser.c"
1958     break;
1959 
1960   case 19: /* origin_directive: DOLLAR_ORIGIN sp rel_dname trail  */
1961 #line 172 "zparser.y"
1962     {
1963 	    zc_error_prev_line("$ORIGIN directive requires absolute domain name");
1964     }
1965 #line 1966 "zparser.c"
1966     break;
1967 
1968   case 20: /* rr: owner classttl type_and_rdata  */
1969 #line 178 "zparser.y"
1970     {
1971 	    parser->current_rr.owner = (yyvsp[-2].domain);
1972 	    parser->current_rr.type = (yyvsp[0].type);
1973     }
1974 #line 1975 "zparser.c"
1975     break;
1976 
1977   case 21: /* owner: dname sp  */
1978 #line 185 "zparser.y"
1979     {
1980 	    parser->prev_dname = (yyvsp[-1].domain);
1981 	    (yyval.domain) = (yyvsp[-1].domain);
1982     }
1983 #line 1984 "zparser.c"
1984     break;
1985 
1986   case 22: /* owner: PREV  */
1987 #line 190 "zparser.y"
1988     {
1989 	    (yyval.domain) = parser->prev_dname;
1990     }
1991 #line 1992 "zparser.c"
1992     break;
1993 
1994   case 23: /* classttl: %empty  */
1995 #line 196 "zparser.y"
1996     {
1997 	    parser->current_rr.ttl = parser->default_ttl;
1998 	    parser->current_rr.klass = parser->default_class;
1999     }
2000 #line 2001 "zparser.c"
2001     break;
2002 
2003   case 24: /* classttl: T_RRCLASS sp  */
2004 #line 201 "zparser.y"
2005     {
2006 	    parser->current_rr.ttl = parser->default_ttl;
2007 	    parser->current_rr.klass = (yyvsp[-1].klass);
2008     }
2009 #line 2010 "zparser.c"
2010     break;
2011 
2012   case 25: /* classttl: T_TTL sp  */
2013 #line 206 "zparser.y"
2014     {
2015 	    parser->current_rr.ttl = (yyvsp[-1].ttl);
2016 	    parser->current_rr.klass = parser->default_class;
2017     }
2018 #line 2019 "zparser.c"
2019     break;
2020 
2021   case 26: /* classttl: T_TTL sp T_RRCLASS sp  */
2022 #line 211 "zparser.y"
2023     {
2024 	    parser->current_rr.ttl = (yyvsp[-3].ttl);
2025 	    parser->current_rr.klass = (yyvsp[-1].klass);
2026     }
2027 #line 2028 "zparser.c"
2028     break;
2029 
2030   case 27: /* classttl: T_RRCLASS sp T_TTL sp  */
2031 #line 216 "zparser.y"
2032     {
2033 	    parser->current_rr.ttl = (yyvsp[-1].ttl);
2034 	    parser->current_rr.klass = (yyvsp[-3].klass);
2035     }
2036 #line 2037 "zparser.c"
2037     break;
2038 
2039   case 29: /* dname: rel_dname  */
2040 #line 224 "zparser.y"
2041     {
2042 	    if ((yyvsp[0].dname) == error_dname) {
2043 		    (yyval.domain) = error_domain;
2044 	    } else if(parser->origin == error_domain) {
2045 		    zc_error("cannot concatenate origin to domain name, because origin failed to parse");
2046 		    (yyval.domain) = error_domain;
2047 	    } else if ((yyvsp[0].dname)->name_size + domain_dname(parser->origin)->name_size - 1 > MAXDOMAINLEN) {
2048 		    zc_error("domain name exceeds %d character limit", MAXDOMAINLEN);
2049 		    (yyval.domain) = error_domain;
2050 	    } else {
2051 		    (yyval.domain) = domain_table_insert(
2052 			    parser->db->domains,
2053 			    dname_concatenate(
2054 				    parser->rr_region,
2055 				    (yyvsp[0].dname),
2056 				    domain_dname(parser->origin)));
2057 	    }
2058     }
2059 #line 2060 "zparser.c"
2060     break;
2061 
2062   case 30: /* abs_dname: '.'  */
2063 #line 245 "zparser.y"
2064     {
2065 	    (yyval.domain) = parser->db->domains->root;
2066     }
2067 #line 2068 "zparser.c"
2068     break;
2069 
2070   case 31: /* abs_dname: '@'  */
2071 #line 249 "zparser.y"
2072     {
2073 	    (yyval.domain) = parser->origin;
2074     }
2075 #line 2076 "zparser.c"
2076     break;
2077 
2078   case 32: /* abs_dname: rel_dname '.'  */
2079 #line 253 "zparser.y"
2080     {
2081 	    if ((yyvsp[-1].dname) != error_dname) {
2082 		    (yyval.domain) = domain_table_insert(parser->db->domains, (yyvsp[-1].dname));
2083 	    } else {
2084 		    (yyval.domain) = error_domain;
2085 	    }
2086     }
2087 #line 2088 "zparser.c"
2088     break;
2089 
2090   case 33: /* label: str  */
2091 #line 263 "zparser.y"
2092     {
2093 	    if ((yyvsp[0].data).len > MAXLABELLEN) {
2094 		    zc_error("label exceeds %d character limit", MAXLABELLEN);
2095 		    (yyval.dname) = error_dname;
2096 	    } else if ((yyvsp[0].data).len <= 0) {
2097 		    zc_error("zero label length");
2098 		    (yyval.dname) = error_dname;
2099 	    } else {
2100 		    (yyval.dname) = dname_make_from_label(parser->rr_region,
2101 					       (uint8_t *) (yyvsp[0].data).str,
2102 					       (yyvsp[0].data).len);
2103 	    }
2104     }
2105 #line 2106 "zparser.c"
2106     break;
2107 
2108   case 34: /* label: BITLAB  */
2109 #line 277 "zparser.y"
2110     {
2111 	    zc_error("bitlabels are now deprecated. RFC2673 is obsoleted.");
2112 	    (yyval.dname) = error_dname;
2113     }
2114 #line 2115 "zparser.c"
2115     break;
2116 
2117   case 36: /* rel_dname: rel_dname '.' label  */
2118 #line 285 "zparser.y"
2119     {
2120 	    if ((yyvsp[-2].dname) == error_dname || (yyvsp[0].dname) == error_dname) {
2121 		    (yyval.dname) = error_dname;
2122 	    } else if ((yyvsp[-2].dname)->name_size + (yyvsp[0].dname)->name_size - 1 > MAXDOMAINLEN) {
2123 		    zc_error("domain name exceeds %d character limit",
2124 			     MAXDOMAINLEN);
2125 		    (yyval.dname) = error_dname;
2126 	    } else {
2127 		    (yyval.dname) = dname_concatenate(parser->rr_region, (yyvsp[-2].dname), (yyvsp[0].dname));
2128 	    }
2129     }
2130 #line 2131 "zparser.c"
2131     break;
2132 
2133   case 38: /* wire_dname: wire_rel_dname  */
2134 #line 304 "zparser.y"
2135     {
2136 	    /* terminate in root label and copy the origin in there */
2137 	    if(parser->origin && domain_dname(parser->origin)) {
2138 		    (yyval.data).len = (yyvsp[0].data).len + domain_dname(parser->origin)->name_size;
2139 		    if ((yyval.data).len > MAXDOMAINLEN)
2140 			    zc_error("domain name exceeds %d character limit",
2141 				     MAXDOMAINLEN);
2142 		    (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len);
2143 		    memmove((yyval.data).str, (yyvsp[0].data).str, (yyvsp[0].data).len);
2144 		    memmove((yyval.data).str + (yyvsp[0].data).len, dname_name(domain_dname(parser->origin)),
2145 			domain_dname(parser->origin)->name_size);
2146 	    } else {
2147 		    (yyval.data).len = (yyvsp[0].data).len + 1;
2148 		    if ((yyval.data).len > MAXDOMAINLEN)
2149 			    zc_error("domain name exceeds %d character limit",
2150 				     MAXDOMAINLEN);
2151 		    (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len);
2152 		    memmove((yyval.data).str, (yyvsp[0].data).str, (yyvsp[0].data).len);
2153 		    (yyval.data).str[ (yyvsp[0].data).len ] = 0;
2154 	    }
2155     }
2156 #line 2157 "zparser.c"
2157     break;
2158 
2159   case 39: /* wire_abs_dname: '.'  */
2160 #line 328 "zparser.y"
2161     {
2162 	    char *result = (char *) region_alloc(parser->rr_region, 1);
2163 	    result[0] = 0;
2164 	    (yyval.data).str = result;
2165 	    (yyval.data).len = 1;
2166     }
2167 #line 2168 "zparser.c"
2168     break;
2169 
2170   case 40: /* wire_abs_dname: '@'  */
2171 #line 335 "zparser.y"
2172     {
2173 	    if(parser->origin && domain_dname(parser->origin)) {
2174 		    (yyval.data).len = domain_dname(parser->origin)->name_size;
2175 		    (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len);
2176 		    memmove((yyval.data).str, dname_name(domain_dname(parser->origin)), (yyval.data).len);
2177 	    } else {
2178 		    (yyval.data).len = 1;
2179 		    (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len);
2180 		    (yyval.data).str[0] = 0;
2181 	    }
2182     }
2183 #line 2184 "zparser.c"
2184     break;
2185 
2186   case 41: /* wire_abs_dname: wire_rel_dname '.'  */
2187 #line 347 "zparser.y"
2188     {
2189 	    (yyval.data).len = (yyvsp[-1].data).len + 1;
2190 	    if ((yyval.data).len > MAXDOMAINLEN)
2191 		    zc_error("domain name exceeds %d character limit",
2192 			     MAXDOMAINLEN);
2193 	    (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len);
2194 	    memcpy((yyval.data).str, (yyvsp[-1].data).str, (yyvsp[-1].data).len);
2195 	    (yyval.data).str[(yyvsp[-1].data).len] = 0;
2196     }
2197 #line 2198 "zparser.c"
2198     break;
2199 
2200   case 42: /* wire_label: str  */
2201 #line 359 "zparser.y"
2202     {
2203 	    char *result = (char *) region_alloc(parser->rr_region,
2204 						 (yyvsp[0].data).len + 1);
2205 
2206 	    if ((yyvsp[0].data).len > MAXLABELLEN)
2207 		    zc_error("label exceeds %d character limit", MAXLABELLEN);
2208 
2209 	    /* make label anyway */
2210 	    result[0] = (yyvsp[0].data).len;
2211 	    memmove(result+1, (yyvsp[0].data).str, (yyvsp[0].data).len);
2212 
2213 	    (yyval.data).str = result;
2214 	    (yyval.data).len = (yyvsp[0].data).len + 1;
2215     }
2216 #line 2217 "zparser.c"
2217     break;
2218 
2219   case 44: /* wire_rel_dname: wire_rel_dname '.' wire_label  */
2220 #line 377 "zparser.y"
2221     {
2222 	    (yyval.data).len = (yyvsp[-2].data).len + (yyvsp[0].data).len;
2223 	    if ((yyval.data).len > MAXDOMAINLEN)
2224 		    zc_error("domain name exceeds %d character limit",
2225 			     MAXDOMAINLEN);
2226 	    (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len);
2227 	    memmove((yyval.data).str, (yyvsp[-2].data).str, (yyvsp[-2].data).len);
2228 	    memmove((yyval.data).str + (yyvsp[-2].data).len, (yyvsp[0].data).str, (yyvsp[0].data).len);
2229     }
2230 #line 2231 "zparser.c"
2231     break;
2232 
2233   case 45: /* str_seq: unquoted_dotted_str  */
2234 #line 389 "zparser.y"
2235     {
2236 	    zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 1);
2237     }
2238 #line 2239 "zparser.c"
2239     break;
2240 
2241   case 46: /* str_seq: QSTR  */
2242 #line 393 "zparser.y"
2243     {
2244 	    zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 1);
2245     }
2246 #line 2247 "zparser.c"
2247     break;
2248 
2249   case 47: /* str_seq: QSTR unquoted_dotted_str  */
2250 #line 397 "zparser.y"
2251     {
2252 	    zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[-1].data).str, (yyvsp[-1].data).len), 1);
2253 	    zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 0);
2254     }
2255 #line 2256 "zparser.c"
2256     break;
2257 
2258   case 48: /* str_seq: str_seq QSTR  */
2259 #line 402 "zparser.y"
2260     {
2261 	    zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 0);
2262     }
2263 #line 2264 "zparser.c"
2264     break;
2265 
2266   case 49: /* str_seq: str_seq QSTR unquoted_dotted_str  */
2267 #line 406 "zparser.y"
2268     {
2269 	    zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[-1].data).str, (yyvsp[-1].data).len), 0);
2270 	    zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 0);
2271     }
2272 #line 2273 "zparser.c"
2273     break;
2274 
2275   case 50: /* str_seq: str_seq sp unquoted_dotted_str  */
2276 #line 411 "zparser.y"
2277     {
2278 	    zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 0);
2279     }
2280 #line 2281 "zparser.c"
2281     break;
2282 
2283   case 51: /* str_seq: str_seq sp QSTR  */
2284 #line 415 "zparser.y"
2285     {
2286 	    zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 0);
2287     }
2288 #line 2289 "zparser.c"
2289     break;
2290 
2291   case 52: /* str_seq: str_seq sp QSTR unquoted_dotted_str  */
2292 #line 419 "zparser.y"
2293     {
2294 	    zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[-1].data).str, (yyvsp[-1].data).len), 0);
2295 	    zadd_rdata_txt_wireformat(zparser_conv_text(parser->rr_region, (yyvsp[0].data).str, (yyvsp[0].data).len), 0);
2296     }
2297 #line 2298 "zparser.c"
2298     break;
2299 
2300   case 54: /* concatenated_str_seq: '.'  */
2301 #line 431 "zparser.y"
2302     {
2303 	    (yyval.data).len = 1;
2304 	    (yyval.data).str = region_strdup(parser->rr_region, ".");
2305     }
2306 #line 2307 "zparser.c"
2307     break;
2308 
2309   case 55: /* concatenated_str_seq: concatenated_str_seq sp str  */
2310 #line 436 "zparser.y"
2311     {
2312 	    (yyval.data).len = (yyvsp[-2].data).len + (yyvsp[0].data).len + 1;
2313 	    (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len + 1);
2314 	    memcpy((yyval.data).str, (yyvsp[-2].data).str, (yyvsp[-2].data).len);
2315 	    memcpy((yyval.data).str + (yyvsp[-2].data).len, " ", 1);
2316 	    memcpy((yyval.data).str + (yyvsp[-2].data).len + 1, (yyvsp[0].data).str, (yyvsp[0].data).len);
2317 	    (yyval.data).str[(yyval.data).len] = '\0';
2318     }
2319 #line 2320 "zparser.c"
2320     break;
2321 
2322   case 56: /* concatenated_str_seq: concatenated_str_seq '.' str  */
2323 #line 445 "zparser.y"
2324     {
2325 	    (yyval.data).len = (yyvsp[-2].data).len + (yyvsp[0].data).len + 1;
2326 	    (yyval.data).str = (char *) region_alloc(parser->rr_region, (yyval.data).len + 1);
2327 	    memcpy((yyval.data).str, (yyvsp[-2].data).str, (yyvsp[-2].data).len);
2328 	    memcpy((yyval.data).str + (yyvsp[-2].data).len, ".", 1);
2329 	    memcpy((yyval.data).str + (yyvsp[-2].data).len + 1, (yyvsp[0].data).str, (yyvsp[0].data).len);
2330 	    (yyval.data).str[(yyval.data).len] = '\0';
2331     }
2332 #line 2333 "zparser.c"
2333     break;
2334 
2335   case 57: /* nxt_seq: str  */
2336 #line 457 "zparser.y"
2337     {
2338 	    uint16_t type = rrtype_from_string((yyvsp[0].data).str);
2339 	    if (type != 0 && type < 128) {
2340 		    set_bit(nxtbits, type);
2341 	    } else {
2342 		    zc_error("bad type %d in NXT record", (int) type);
2343 	    }
2344     }
2345 #line 2346 "zparser.c"
2346     break;
2347 
2348   case 58: /* nxt_seq: nxt_seq sp str  */
2349 #line 466 "zparser.y"
2350     {
2351 	    uint16_t type = rrtype_from_string((yyvsp[0].data).str);
2352 	    if (type != 0 && type < 128) {
2353 		    set_bit(nxtbits, type);
2354 	    } else {
2355 		    zc_error("bad type %d in NXT record", (int) type);
2356 	    }
2357     }
2358 #line 2359 "zparser.c"
2359     break;
2360 
2361   case 59: /* nsec_more: SP nsec_more  */
2362 #line 477 "zparser.y"
2363     {
2364     }
2365 #line 2366 "zparser.c"
2366     break;
2367 
2368   case 60: /* nsec_more: NL  */
2369 #line 480 "zparser.y"
2370     {
2371     }
2372 #line 2373 "zparser.c"
2373     break;
2374 
2375   case 61: /* nsec_more: str nsec_seq  */
2376 #line 483 "zparser.y"
2377     {
2378 	    uint16_t type = rrtype_from_string((yyvsp[-1].data).str);
2379 	    if (type != 0) {
2380                     if (type > nsec_highest_rcode) {
2381                             nsec_highest_rcode = type;
2382                     }
2383 		    set_bitnsec(nsecbits, type);
2384 	    } else {
2385 		    zc_error("bad type %d in NSEC record", (int) type);
2386 	    }
2387     }
2388 #line 2389 "zparser.c"
2389     break;
2390 
2391   case 65: /* str_sp_seq: str_sp_seq sp str  */
2392 #line 506 "zparser.y"
2393     {
2394 	    char *result = (char *) region_alloc(parser->rr_region,
2395 						 (yyvsp[-2].data).len + (yyvsp[0].data).len + 1);
2396 	    memcpy(result, (yyvsp[-2].data).str, (yyvsp[-2].data).len);
2397 	    memcpy(result + (yyvsp[-2].data).len, (yyvsp[0].data).str, (yyvsp[0].data).len);
2398 	    (yyval.data).str = result;
2399 	    (yyval.data).len = (yyvsp[-2].data).len + (yyvsp[0].data).len;
2400 	    (yyval.data).str[(yyval.data).len] = '\0';
2401     }
2402 #line 2403 "zparser.c"
2403     break;
2404 
2405   case 67: /* str_dot_seq: str_dot_seq '.' str  */
2406 #line 523 "zparser.y"
2407     {
2408 	    char *result = (char *) region_alloc(parser->rr_region,
2409 						 (yyvsp[-2].data).len + (yyvsp[0].data).len + 1);
2410 	    memcpy(result, (yyvsp[-2].data).str, (yyvsp[-2].data).len);
2411 	    memcpy(result + (yyvsp[-2].data).len, (yyvsp[0].data).str, (yyvsp[0].data).len);
2412 	    (yyval.data).str = result;
2413 	    (yyval.data).len = (yyvsp[-2].data).len + (yyvsp[0].data).len;
2414 	    (yyval.data).str[(yyval.data).len] = '\0';
2415     }
2416 #line 2417 "zparser.c"
2417     break;
2418 
2419   case 69: /* unquoted_dotted_str: '.'  */
2420 #line 539 "zparser.y"
2421     {
2422 	(yyval.data).str = ".";
2423 	(yyval.data).len = 1;
2424     }
2425 #line 2426 "zparser.c"
2426     break;
2427 
2428   case 70: /* unquoted_dotted_str: unquoted_dotted_str '.'  */
2429 #line 544 "zparser.y"
2430     {
2431 	    char *result = (char *) region_alloc(parser->rr_region,
2432 						 (yyvsp[-1].data).len + 2);
2433 	    memcpy(result, (yyvsp[-1].data).str, (yyvsp[-1].data).len);
2434 	    result[(yyvsp[-1].data).len] = '.';
2435 	    (yyval.data).str = result;
2436 	    (yyval.data).len = (yyvsp[-1].data).len + 1;
2437 	    (yyval.data).str[(yyval.data).len] = '\0';
2438     }
2439 #line 2440 "zparser.c"
2440     break;
2441 
2442   case 71: /* unquoted_dotted_str: unquoted_dotted_str '.' STR  */
2443 #line 554 "zparser.y"
2444     {
2445 	    char *result = (char *) region_alloc(parser->rr_region,
2446 						 (yyvsp[-2].data).len + (yyvsp[0].data).len + 2);
2447 	    memcpy(result, (yyvsp[-2].data).str, (yyvsp[-2].data).len);
2448 	    result[(yyvsp[-2].data).len] = '.';
2449 	    memcpy(result + (yyvsp[-2].data).len + 1, (yyvsp[0].data).str, (yyvsp[0].data).len);
2450 	    (yyval.data).str = result;
2451 	    (yyval.data).len = (yyvsp[-2].data).len + (yyvsp[0].data).len + 1;
2452 	    (yyval.data).str[(yyval.data).len] = '\0';
2453     }
2454 #line 2455 "zparser.c"
2455     break;
2456 
2457   case 75: /* type_and_rdata: T_A sp rdata_unknown  */
2458 #line 577 "zparser.y"
2459                              { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2460 #line 2461 "zparser.c"
2461     break;
2462 
2463   case 77: /* type_and_rdata: T_NS sp rdata_unknown  */
2464 #line 579 "zparser.y"
2465                               { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2466 #line 2467 "zparser.c"
2467     break;
2468 
2469   case 78: /* type_and_rdata: T_MD sp rdata_domain_name  */
2470 #line 580 "zparser.y"
2471                                   { zc_warning_prev_line("MD is obsolete"); }
2472 #line 2473 "zparser.c"
2473     break;
2474 
2475   case 79: /* type_and_rdata: T_MD sp rdata_unknown  */
2476 #line 582 "zparser.y"
2477     {
2478 	    zc_warning_prev_line("MD is obsolete");
2479 	    (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown));
2480     }
2481 #line 2482 "zparser.c"
2482     break;
2483 
2484   case 80: /* type_and_rdata: T_MF sp rdata_domain_name  */
2485 #line 586 "zparser.y"
2486                                   { zc_warning_prev_line("MF is obsolete"); }
2487 #line 2488 "zparser.c"
2488     break;
2489 
2490   case 81: /* type_and_rdata: T_MF sp rdata_unknown  */
2491 #line 588 "zparser.y"
2492     {
2493 	    zc_warning_prev_line("MF is obsolete");
2494 	    (yyval.type) = (yyvsp[-2].type);
2495 	    parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown));
2496     }
2497 #line 2498 "zparser.c"
2498     break;
2499 
2500   case 83: /* type_and_rdata: T_CNAME sp rdata_unknown  */
2501 #line 594 "zparser.y"
2502                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2503 #line 2504 "zparser.c"
2504     break;
2505 
2506   case 85: /* type_and_rdata: T_SOA sp rdata_unknown  */
2507 #line 596 "zparser.y"
2508                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2509 #line 2510 "zparser.c"
2510     break;
2511 
2512   case 86: /* type_and_rdata: T_MB sp rdata_domain_name  */
2513 #line 597 "zparser.y"
2514                                   { zc_warning_prev_line("MB is obsolete"); }
2515 #line 2516 "zparser.c"
2516     break;
2517 
2518   case 87: /* type_and_rdata: T_MB sp rdata_unknown  */
2519 #line 599 "zparser.y"
2520     {
2521 	    zc_warning_prev_line("MB is obsolete");
2522 	    (yyval.type) = (yyvsp[-2].type);
2523 	    parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown));
2524     }
2525 #line 2526 "zparser.c"
2526     break;
2527 
2528   case 89: /* type_and_rdata: T_MG sp rdata_unknown  */
2529 #line 605 "zparser.y"
2530                               { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2531 #line 2532 "zparser.c"
2532     break;
2533 
2534   case 91: /* type_and_rdata: T_MR sp rdata_unknown  */
2535 #line 607 "zparser.y"
2536                               { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2537 #line 2538 "zparser.c"
2538     break;
2539 
2540   case 93: /* type_and_rdata: T_WKS sp rdata_unknown  */
2541 #line 610 "zparser.y"
2542                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2543 #line 2544 "zparser.c"
2544     break;
2545 
2546   case 95: /* type_and_rdata: T_PTR sp rdata_unknown  */
2547 #line 612 "zparser.y"
2548                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2549 #line 2550 "zparser.c"
2550     break;
2551 
2552   case 97: /* type_and_rdata: T_HINFO sp rdata_unknown  */
2553 #line 614 "zparser.y"
2554                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2555 #line 2556 "zparser.c"
2556     break;
2557 
2558   case 99: /* type_and_rdata: T_MINFO sp rdata_unknown  */
2559 #line 616 "zparser.y"
2560                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2561 #line 2562 "zparser.c"
2562     break;
2563 
2564   case 101: /* type_and_rdata: T_MX sp rdata_unknown  */
2565 #line 618 "zparser.y"
2566                               { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2567 #line 2568 "zparser.c"
2568     break;
2569 
2570   case 103: /* type_and_rdata: T_TXT sp rdata_unknown  */
2571 #line 620 "zparser.y"
2572                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2573 #line 2574 "zparser.c"
2574     break;
2575 
2576   case 105: /* type_and_rdata: T_SPF sp rdata_unknown  */
2577 #line 622 "zparser.y"
2578                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2579 #line 2580 "zparser.c"
2580     break;
2581 
2582   case 107: /* type_and_rdata: T_AVC sp rdata_unknown  */
2583 #line 624 "zparser.y"
2584                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2585 #line 2586 "zparser.c"
2586     break;
2587 
2588   case 109: /* type_and_rdata: T_RP sp rdata_unknown  */
2589 #line 626 "zparser.y"
2590                               { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2591 #line 2592 "zparser.c"
2592     break;
2593 
2594   case 111: /* type_and_rdata: T_AFSDB sp rdata_unknown  */
2595 #line 628 "zparser.y"
2596                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2597 #line 2598 "zparser.c"
2598     break;
2599 
2600   case 113: /* type_and_rdata: T_X25 sp rdata_unknown  */
2601 #line 630 "zparser.y"
2602                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2603 #line 2604 "zparser.c"
2604     break;
2605 
2606   case 115: /* type_and_rdata: T_ISDN sp rdata_unknown  */
2607 #line 632 "zparser.y"
2608                                 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2609 #line 2610 "zparser.c"
2610     break;
2611 
2612   case 117: /* type_and_rdata: T_IPSECKEY sp rdata_unknown  */
2613 #line 634 "zparser.y"
2614                                     { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2615 #line 2616 "zparser.c"
2616     break;
2617 
2618   case 119: /* type_and_rdata: T_DHCID sp rdata_unknown  */
2619 #line 636 "zparser.y"
2620                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2621 #line 2622 "zparser.c"
2622     break;
2623 
2624   case 121: /* type_and_rdata: T_RT sp rdata_unknown  */
2625 #line 638 "zparser.y"
2626                               { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2627 #line 2628 "zparser.c"
2628     break;
2629 
2630   case 123: /* type_and_rdata: T_NSAP sp rdata_unknown  */
2631 #line 640 "zparser.y"
2632                                 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2633 #line 2634 "zparser.c"
2634     break;
2635 
2636   case 125: /* type_and_rdata: T_SIG sp rdata_unknown  */
2637 #line 642 "zparser.y"
2638                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2639 #line 2640 "zparser.c"
2640     break;
2641 
2642   case 127: /* type_and_rdata: T_KEY sp rdata_unknown  */
2643 #line 644 "zparser.y"
2644                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2645 #line 2646 "zparser.c"
2646     break;
2647 
2648   case 129: /* type_and_rdata: T_PX sp rdata_unknown  */
2649 #line 646 "zparser.y"
2650                               { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2651 #line 2652 "zparser.c"
2652     break;
2653 
2654   case 131: /* type_and_rdata: T_AAAA sp rdata_unknown  */
2655 #line 648 "zparser.y"
2656                                 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2657 #line 2658 "zparser.c"
2658     break;
2659 
2660   case 133: /* type_and_rdata: T_LOC sp rdata_unknown  */
2661 #line 650 "zparser.y"
2662                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2663 #line 2664 "zparser.c"
2664     break;
2665 
2666   case 135: /* type_and_rdata: T_NXT sp rdata_unknown  */
2667 #line 652 "zparser.y"
2668                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2669 #line 2670 "zparser.c"
2670     break;
2671 
2672   case 137: /* type_and_rdata: T_SRV sp rdata_unknown  */
2673 #line 654 "zparser.y"
2674                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2675 #line 2676 "zparser.c"
2676     break;
2677 
2678   case 139: /* type_and_rdata: T_NAPTR sp rdata_unknown  */
2679 #line 656 "zparser.y"
2680                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2681 #line 2682 "zparser.c"
2682     break;
2683 
2684   case 141: /* type_and_rdata: T_KX sp rdata_unknown  */
2685 #line 658 "zparser.y"
2686                               { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2687 #line 2688 "zparser.c"
2688     break;
2689 
2690   case 143: /* type_and_rdata: T_CERT sp rdata_unknown  */
2691 #line 660 "zparser.y"
2692                                 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2693 #line 2694 "zparser.c"
2694     break;
2695 
2696   case 145: /* type_and_rdata: T_DNAME sp rdata_unknown  */
2697 #line 662 "zparser.y"
2698                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2699 #line 2700 "zparser.c"
2700     break;
2701 
2702   case 148: /* type_and_rdata: T_APL sp rdata_unknown  */
2703 #line 665 "zparser.y"
2704                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2705 #line 2706 "zparser.c"
2706     break;
2707 
2708   case 150: /* type_and_rdata: T_DS sp rdata_unknown  */
2709 #line 667 "zparser.y"
2710                               { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2711 #line 2712 "zparser.c"
2712     break;
2713 
2714   case 151: /* type_and_rdata: T_DLV sp rdata_dlv  */
2715 #line 668 "zparser.y"
2716                            { if (dlv_warn) { dlv_warn = 0; zc_warning_prev_line("DLV is experimental"); } }
2717 #line 2718 "zparser.c"
2718     break;
2719 
2720   case 152: /* type_and_rdata: T_DLV sp rdata_unknown  */
2721 #line 669 "zparser.y"
2722                                { if (dlv_warn) { dlv_warn = 0; zc_warning_prev_line("DLV is experimental"); } (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2723 #line 2724 "zparser.c"
2724     break;
2725 
2726   case 154: /* type_and_rdata: T_SSHFP sp rdata_unknown  */
2727 #line 671 "zparser.y"
2728                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); check_sshfp(); }
2729 #line 2730 "zparser.c"
2730     break;
2731 
2732   case 156: /* type_and_rdata: T_RRSIG sp rdata_unknown  */
2733 #line 673 "zparser.y"
2734                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2735 #line 2736 "zparser.c"
2736     break;
2737 
2738   case 158: /* type_and_rdata: T_NSEC sp rdata_unknown  */
2739 #line 675 "zparser.y"
2740                                 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2741 #line 2742 "zparser.c"
2742     break;
2743 
2744   case 160: /* type_and_rdata: T_NSEC3 sp rdata_unknown  */
2745 #line 677 "zparser.y"
2746                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2747 #line 2748 "zparser.c"
2748     break;
2749 
2750   case 162: /* type_and_rdata: T_NSEC3PARAM sp rdata_unknown  */
2751 #line 679 "zparser.y"
2752                                       { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2753 #line 2754 "zparser.c"
2754     break;
2755 
2756   case 164: /* type_and_rdata: T_DNSKEY sp rdata_unknown  */
2757 #line 681 "zparser.y"
2758                                   { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2759 #line 2760 "zparser.c"
2760     break;
2761 
2762   case 166: /* type_and_rdata: T_TLSA sp rdata_unknown  */
2763 #line 683 "zparser.y"
2764                                 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2765 #line 2766 "zparser.c"
2766     break;
2767 
2768   case 168: /* type_and_rdata: T_SMIMEA sp rdata_unknown  */
2769 #line 685 "zparser.y"
2770                                   { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2771 #line 2772 "zparser.c"
2772     break;
2773 
2774   case 170: /* type_and_rdata: T_NID sp rdata_unknown  */
2775 #line 687 "zparser.y"
2776                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2777 #line 2778 "zparser.c"
2778     break;
2779 
2780   case 172: /* type_and_rdata: T_L32 sp rdata_unknown  */
2781 #line 689 "zparser.y"
2782                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2783 #line 2784 "zparser.c"
2784     break;
2785 
2786   case 174: /* type_and_rdata: T_L64 sp rdata_unknown  */
2787 #line 691 "zparser.y"
2788                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2789 #line 2790 "zparser.c"
2790     break;
2791 
2792   case 176: /* type_and_rdata: T_LP sp rdata_unknown  */
2793 #line 693 "zparser.y"
2794                               { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2795 #line 2796 "zparser.c"
2796     break;
2797 
2798   case 178: /* type_and_rdata: T_EUI48 sp rdata_unknown  */
2799 #line 695 "zparser.y"
2800                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2801 #line 2802 "zparser.c"
2802     break;
2803 
2804   case 180: /* type_and_rdata: T_EUI64 sp rdata_unknown  */
2805 #line 697 "zparser.y"
2806                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2807 #line 2808 "zparser.c"
2808     break;
2809 
2810   case 182: /* type_and_rdata: T_CAA sp rdata_unknown  */
2811 #line 699 "zparser.y"
2812                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2813 #line 2814 "zparser.c"
2814     break;
2815 
2816   case 184: /* type_and_rdata: T_CDS sp rdata_unknown  */
2817 #line 701 "zparser.y"
2818                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2819 #line 2820 "zparser.c"
2820     break;
2821 
2822   case 186: /* type_and_rdata: T_CDNSKEY sp rdata_unknown  */
2823 #line 703 "zparser.y"
2824                                    { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2825 #line 2826 "zparser.c"
2826     break;
2827 
2828   case 188: /* type_and_rdata: T_OPENPGPKEY sp rdata_unknown  */
2829 #line 705 "zparser.y"
2830                                       { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2831 #line 2832 "zparser.c"
2832     break;
2833 
2834   case 190: /* type_and_rdata: T_CSYNC sp rdata_unknown  */
2835 #line 707 "zparser.y"
2836                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2837 #line 2838 "zparser.c"
2838     break;
2839 
2840   case 192: /* type_and_rdata: T_ZONEMD sp rdata_unknown  */
2841 #line 709 "zparser.y"
2842                                   { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2843 #line 2844 "zparser.c"
2844     break;
2845 
2846   case 194: /* type_and_rdata: T_SVCB sp rdata_unknown  */
2847 #line 711 "zparser.y"
2848                                 { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2849 #line 2850 "zparser.c"
2850     break;
2851 
2852   case 196: /* type_and_rdata: T_HTTPS sp rdata_unknown  */
2853 #line 713 "zparser.y"
2854                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2855 #line 2856 "zparser.c"
2856     break;
2857 
2858   case 198: /* type_and_rdata: T_URI sp rdata_unknown  */
2859 #line 715 "zparser.y"
2860                                { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2861 #line 2862 "zparser.c"
2862     break;
2863 
2864   case 199: /* type_and_rdata: T_UTYPE sp rdata_unknown  */
2865 #line 716 "zparser.y"
2866                                  { (yyval.type) = (yyvsp[-2].type); parse_unknown_rdata((yyvsp[-2].type), (yyvsp[0].unknown)); }
2867 #line 2868 "zparser.c"
2868     break;
2869 
2870   case 200: /* type_and_rdata: str error NL  */
2871 #line 718 "zparser.y"
2872     {
2873 	    zc_error_prev_line("unrecognized RR type '%s'", (yyvsp[-2].data).str);
2874     }
2875 #line 2876 "zparser.c"
2876     break;
2877 
2878   case 201: /* rdata_a: dotted_str trail  */
2879 #line 730 "zparser.y"
2880     {
2881 	    zadd_rdata_wireformat(zparser_conv_a(parser->region, (yyvsp[-1].data).str));
2882     }
2883 #line 2884 "zparser.c"
2884     break;
2885 
2886   case 202: /* rdata_domain_name: dname trail  */
2887 #line 736 "zparser.y"
2888     {
2889 	    /* convert a single dname record */
2890 	    zadd_rdata_domain((yyvsp[-1].domain));
2891     }
2892 #line 2893 "zparser.c"
2893     break;
2894 
2895   case 203: /* rdata_soa: dname sp dname sp str sp str sp str sp str sp str trail  */
2896 #line 743 "zparser.y"
2897     {
2898 	    /* convert the soa data */
2899 	    zadd_rdata_domain((yyvsp[-13].domain));	/* prim. ns */
2900 	    zadd_rdata_domain((yyvsp[-11].domain));	/* email */
2901 	    zadd_rdata_wireformat(zparser_conv_serial(parser->region, (yyvsp[-9].data).str)); /* serial */
2902 	    zadd_rdata_wireformat(zparser_conv_period(parser->region, (yyvsp[-7].data).str)); /* refresh */
2903 	    zadd_rdata_wireformat(zparser_conv_period(parser->region, (yyvsp[-5].data).str)); /* retry */
2904 	    zadd_rdata_wireformat(zparser_conv_period(parser->region, (yyvsp[-3].data).str)); /* expire */
2905 	    zadd_rdata_wireformat(zparser_conv_period(parser->region, (yyvsp[-1].data).str)); /* minimum */
2906     }
2907 #line 2908 "zparser.c"
2908     break;
2909 
2910   case 204: /* rdata_wks: dotted_str sp str sp concatenated_str_seq trail  */
2911 #line 756 "zparser.y"
2912     {
2913 	    zadd_rdata_wireformat(zparser_conv_a(parser->region, (yyvsp[-5].data).str)); /* address */
2914 	    zadd_rdata_wireformat(zparser_conv_services(parser->region, (yyvsp[-3].data).str, (yyvsp[-1].data).str)); /* protocol and services */
2915     }
2916 #line 2917 "zparser.c"
2917     break;
2918 
2919   case 205: /* rdata_hinfo: str sp str trail  */
2920 #line 763 "zparser.y"
2921     {
2922 	    zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-3].data).str, (yyvsp[-3].data).len)); /* CPU */
2923 	    zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* OS*/
2924     }
2925 #line 2926 "zparser.c"
2926     break;
2927 
2928   case 206: /* rdata_minfo: dname sp dname trail  */
2929 #line 770 "zparser.y"
2930     {
2931 	    /* convert a single dname record */
2932 	    zadd_rdata_domain((yyvsp[-3].domain));
2933 	    zadd_rdata_domain((yyvsp[-1].domain));
2934     }
2935 #line 2936 "zparser.c"
2936     break;
2937 
2938   case 207: /* rdata_mx: str sp dname trail  */
2939 #line 778 "zparser.y"
2940     {
2941 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str));  /* priority */
2942 	    zadd_rdata_domain((yyvsp[-1].domain));	/* MX host */
2943     }
2944 #line 2945 "zparser.c"
2945     break;
2946 
2947   case 208: /* rdata_txt: str_seq trail  */
2948 #line 785 "zparser.y"
2949     {
2950 	zadd_rdata_txt_clean_wireformat();
2951     }
2952 #line 2953 "zparser.c"
2953     break;
2954 
2955   case 209: /* rdata_rp: dname sp dname trail  */
2956 #line 792 "zparser.y"
2957     {
2958 	    zadd_rdata_domain((yyvsp[-3].domain)); /* mbox d-name */
2959 	    zadd_rdata_domain((yyvsp[-1].domain)); /* txt d-name */
2960     }
2961 #line 2962 "zparser.c"
2962     break;
2963 
2964   case 210: /* rdata_afsdb: str sp dname trail  */
2965 #line 800 "zparser.y"
2966     {
2967 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* subtype */
2968 	    zadd_rdata_domain((yyvsp[-1].domain)); /* domain name */
2969     }
2970 #line 2971 "zparser.c"
2971     break;
2972 
2973   case 211: /* rdata_x25: str trail  */
2974 #line 808 "zparser.y"
2975     {
2976 	    zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* X.25 address. */
2977     }
2978 #line 2979 "zparser.c"
2979     break;
2980 
2981   case 212: /* rdata_isdn: str trail  */
2982 #line 815 "zparser.y"
2983     {
2984 	    zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* address */
2985     }
2986 #line 2987 "zparser.c"
2987     break;
2988 
2989   case 213: /* rdata_isdn: str sp str trail  */
2990 #line 819 "zparser.y"
2991     {
2992 	    zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-3].data).str, (yyvsp[-3].data).len)); /* address */
2993 	    zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* sub-address */
2994     }
2995 #line 2996 "zparser.c"
2996     break;
2997 
2998   case 214: /* rdata_rt: str sp dname trail  */
2999 #line 827 "zparser.y"
3000     {
3001 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* preference */
3002 	    zadd_rdata_domain((yyvsp[-1].domain)); /* intermediate host */
3003     }
3004 #line 3005 "zparser.c"
3005     break;
3006 
3007   case 215: /* rdata_nsap: str_dot_seq trail  */
3008 #line 835 "zparser.y"
3009     {
3010 	    /* String must start with "0x" or "0X".	 */
3011 	    if (strncasecmp((yyvsp[-1].data).str, "0x", 2) != 0) {
3012 		    zc_error_prev_line("NSAP rdata must start with '0x'");
3013 	    } else {
3014 		    zadd_rdata_wireformat(zparser_conv_hex(parser->region, (yyvsp[-1].data).str + 2, (yyvsp[-1].data).len - 2)); /* NSAP */
3015 	    }
3016     }
3017 #line 3018 "zparser.c"
3018     break;
3019 
3020   case 216: /* rdata_px: str sp dname sp dname trail  */
3021 #line 847 "zparser.y"
3022     {
3023 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-5].data).str)); /* preference */
3024 	    zadd_rdata_domain((yyvsp[-3].domain)); /* MAP822 */
3025 	    zadd_rdata_domain((yyvsp[-1].domain)); /* MAPX400 */
3026     }
3027 #line 3028 "zparser.c"
3028     break;
3029 
3030   case 217: /* rdata_aaaa: dotted_str trail  */
3031 #line 855 "zparser.y"
3032     {
3033 	    zadd_rdata_wireformat(zparser_conv_aaaa(parser->region, (yyvsp[-1].data).str));  /* IPv6 address */
3034     }
3035 #line 3036 "zparser.c"
3036     break;
3037 
3038   case 218: /* rdata_loc: concatenated_str_seq trail  */
3039 #line 861 "zparser.y"
3040     {
3041 	    zadd_rdata_wireformat(zparser_conv_loc(parser->region, (yyvsp[-1].data).str)); /* Location */
3042     }
3043 #line 3044 "zparser.c"
3044     break;
3045 
3046   case 219: /* rdata_nxt: dname sp nxt_seq trail  */
3047 #line 867 "zparser.y"
3048     {
3049 	    zadd_rdata_domain((yyvsp[-3].domain)); /* nxt name */
3050 	    zadd_rdata_wireformat(zparser_conv_nxt(parser->region, nxtbits)); /* nxt bitlist */
3051 	    memset(nxtbits, 0, sizeof(nxtbits));
3052     }
3053 #line 3054 "zparser.c"
3054     break;
3055 
3056   case 220: /* rdata_srv: str sp str sp str sp dname trail  */
3057 #line 875 "zparser.y"
3058     {
3059 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-7].data).str)); /* prio */
3060 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-5].data).str)); /* weight */
3061 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* port */
3062 	    zadd_rdata_domain((yyvsp[-1].domain)); /* target name */
3063     }
3064 #line 3065 "zparser.c"
3065     break;
3066 
3067   case 221: /* rdata_naptr: str sp str sp str sp str sp str sp dname trail  */
3068 #line 885 "zparser.y"
3069     {
3070 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-11].data).str)); /* order */
3071 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-9].data).str)); /* preference */
3072 	    zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-7].data).str, (yyvsp[-7].data).len)); /* flags */
3073 	    zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-5].data).str, (yyvsp[-5].data).len)); /* service */
3074 	    zadd_rdata_wireformat(zparser_conv_text(parser->region, (yyvsp[-3].data).str, (yyvsp[-3].data).len)); /* regexp */
3075 	    zadd_rdata_domain((yyvsp[-1].domain)); /* target name */
3076     }
3077 #line 3078 "zparser.c"
3078     break;
3079 
3080   case 222: /* rdata_kx: str sp dname trail  */
3081 #line 897 "zparser.y"
3082     {
3083 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* preference */
3084 	    zadd_rdata_domain((yyvsp[-1].domain)); /* exchanger */
3085     }
3086 #line 3087 "zparser.c"
3087     break;
3088 
3089   case 223: /* rdata_cert: str sp str sp str sp str_sp_seq trail  */
3090 #line 905 "zparser.y"
3091     {
3092 	    zadd_rdata_wireformat(zparser_conv_certificate_type(parser->region, (yyvsp[-7].data).str)); /* type */
3093 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-5].data).str)); /* key tag */
3094 	    zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, (yyvsp[-3].data).str)); /* algorithm */
3095 	    zadd_rdata_wireformat(zparser_conv_b64(parser->region, (yyvsp[-1].data).str)); /* certificate or CRL */
3096     }
3097 #line 3098 "zparser.c"
3098     break;
3099 
3100   case 225: /* rdata_apl_seq: dotted_str  */
3101 #line 918 "zparser.y"
3102     {
3103 	    zadd_rdata_wireformat(zparser_conv_apl_rdata(parser->region, (yyvsp[0].data).str));
3104     }
3105 #line 3106 "zparser.c"
3106     break;
3107 
3108   case 226: /* rdata_apl_seq: rdata_apl_seq sp dotted_str  */
3109 #line 922 "zparser.y"
3110     {
3111 	    zadd_rdata_wireformat(zparser_conv_apl_rdata(parser->region, (yyvsp[0].data).str));
3112     }
3113 #line 3114 "zparser.c"
3114     break;
3115 
3116   case 227: /* rdata_ds: str sp str sp str sp str_sp_seq trail  */
3117 #line 928 "zparser.y"
3118     {
3119 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-7].data).str)); /* keytag */
3120 	    zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, (yyvsp[-5].data).str)); /* alg */
3121 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-3].data).str)); /* type */
3122 	    zadd_rdata_wireformat(zparser_conv_hex(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* hash */
3123     }
3124 #line 3125 "zparser.c"
3125     break;
3126 
3127   case 228: /* rdata_dlv: str sp str sp str sp str_sp_seq trail  */
3128 #line 937 "zparser.y"
3129     {
3130 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-7].data).str)); /* keytag */
3131 	    zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, (yyvsp[-5].data).str)); /* alg */
3132 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-3].data).str)); /* type */
3133 	    zadd_rdata_wireformat(zparser_conv_hex(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* hash */
3134     }
3135 #line 3136 "zparser.c"
3136     break;
3137 
3138   case 229: /* rdata_sshfp: str sp str sp str_sp_seq trail  */
3139 #line 946 "zparser.y"
3140     {
3141 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-5].data).str)); /* alg */
3142 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-3].data).str)); /* fp type */
3143 	    zadd_rdata_wireformat(zparser_conv_hex(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* hash */
3144 	    check_sshfp();
3145     }
3146 #line 3147 "zparser.c"
3147     break;
3148 
3149   case 230: /* rdata_dhcid: str_sp_seq trail  */
3150 #line 955 "zparser.y"
3151     {
3152 	    zadd_rdata_wireformat(zparser_conv_b64(parser->region, (yyvsp[-1].data).str)); /* data blob */
3153     }
3154 #line 3155 "zparser.c"
3155     break;
3156 
3157   case 231: /* rdata_rrsig: str sp str sp str sp str sp str sp str sp str sp wire_dname sp str_sp_seq trail  */
3158 #line 961 "zparser.y"
3159     {
3160 	    zadd_rdata_wireformat(zparser_conv_rrtype(parser->region, (yyvsp[-17].data).str)); /* rr covered */
3161 	    zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, (yyvsp[-15].data).str)); /* alg */
3162 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-13].data).str)); /* # labels */
3163 	    zadd_rdata_wireformat(zparser_conv_period(parser->region, (yyvsp[-11].data).str)); /* # orig TTL */
3164 	    zadd_rdata_wireformat(zparser_conv_time(parser->region, (yyvsp[-9].data).str)); /* sig exp */
3165 	    zadd_rdata_wireformat(zparser_conv_time(parser->region, (yyvsp[-7].data).str)); /* sig inc */
3166 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-5].data).str)); /* key id */
3167 	    zadd_rdata_wireformat(zparser_conv_dns_name(parser->region,
3168 				(const uint8_t*) (yyvsp[-3].data).str,(yyvsp[-3].data).len)); /* sig name */
3169 	    zadd_rdata_wireformat(zparser_conv_b64(parser->region, (yyvsp[-1].data).str)); /* sig data */
3170     }
3171 #line 3172 "zparser.c"
3172     break;
3173 
3174   case 232: /* rdata_nsec: wire_dname nsec_seq  */
3175 #line 976 "zparser.y"
3176     {
3177 	    zadd_rdata_wireformat(zparser_conv_dns_name(parser->region,
3178 				(const uint8_t*) (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* nsec name */
3179 	    zadd_rdata_wireformat(zparser_conv_nsec(parser->region, nsecbits)); /* nsec bitlist */
3180 	    memset(nsecbits, 0, sizeof(nsecbits));
3181             nsec_highest_rcode = 0;
3182     }
3183 #line 3184 "zparser.c"
3184     break;
3185 
3186   case 233: /* rdata_nsec3: str sp str sp str sp str sp str nsec_seq  */
3187 #line 986 "zparser.y"
3188     {
3189 #ifdef NSEC3
3190 	    nsec3_add_params((yyvsp[-9].data).str, (yyvsp[-7].data).str, (yyvsp[-5].data).str, (yyvsp[-3].data).str, (yyvsp[-3].data).len);
3191 
3192 	    zadd_rdata_wireformat(zparser_conv_b32(parser->region, (yyvsp[-1].data).str)); /* next hashed name */
3193 	    zadd_rdata_wireformat(zparser_conv_nsec(parser->region, nsecbits)); /* nsec bitlist */
3194 	    memset(nsecbits, 0, sizeof(nsecbits));
3195 	    nsec_highest_rcode = 0;
3196 #else
3197 	    zc_error_prev_line("nsec3 not supported");
3198 #endif /* NSEC3 */
3199     }
3200 #line 3201 "zparser.c"
3201     break;
3202 
3203   case 234: /* rdata_nsec3_param: str sp str sp str sp str trail  */
3204 #line 1001 "zparser.y"
3205     {
3206 #ifdef NSEC3
3207 	    nsec3_add_params((yyvsp[-7].data).str, (yyvsp[-5].data).str, (yyvsp[-3].data).str, (yyvsp[-1].data).str, (yyvsp[-1].data).len);
3208 #else
3209 	    zc_error_prev_line("nsec3 not supported");
3210 #endif /* NSEC3 */
3211     }
3212 #line 3213 "zparser.c"
3213     break;
3214 
3215   case 235: /* rdata_tlsa: str sp str sp str sp str_sp_seq trail  */
3216 #line 1011 "zparser.y"
3217     {
3218 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-7].data).str)); /* usage */
3219 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-5].data).str)); /* selector */
3220 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-3].data).str)); /* matching type */
3221 	    zadd_rdata_wireformat(zparser_conv_hex(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* ca data */
3222     }
3223 #line 3224 "zparser.c"
3224     break;
3225 
3226   case 236: /* rdata_smimea: str sp str sp str sp str_sp_seq trail  */
3227 #line 1020 "zparser.y"
3228     {
3229 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-7].data).str)); /* usage */
3230 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-5].data).str)); /* selector */
3231 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-3].data).str)); /* matching type */
3232 	    zadd_rdata_wireformat(zparser_conv_hex(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* ca data */
3233     }
3234 #line 3235 "zparser.c"
3235     break;
3236 
3237   case 237: /* rdata_dnskey: str sp str sp str sp str_sp_seq trail  */
3238 #line 1029 "zparser.y"
3239     {
3240 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-7].data).str)); /* flags */
3241 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-5].data).str)); /* proto */
3242 	    zadd_rdata_wireformat(zparser_conv_algorithm(parser->region, (yyvsp[-3].data).str)); /* alg */
3243 	    zadd_rdata_wireformat(zparser_conv_b64(parser->region, (yyvsp[-1].data).str)); /* hash */
3244     }
3245 #line 3246 "zparser.c"
3246     break;
3247 
3248   case 238: /* rdata_ipsec_base: str sp str sp str sp dotted_str  */
3249 #line 1038 "zparser.y"
3250     {
3251 	    const dname_type* name = 0;
3252 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-6].data).str)); /* precedence */
3253 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-4].data).str)); /* gateway type */
3254 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-2].data).str)); /* algorithm */
3255 	    switch(atoi((yyvsp[-4].data).str)) {
3256 		case IPSECKEY_NOGATEWAY:
3257 			zadd_rdata_wireformat(alloc_rdata_init(parser->region, "", 0));
3258 			break;
3259 		case IPSECKEY_IP4:
3260 			zadd_rdata_wireformat(zparser_conv_a(parser->region, (yyvsp[0].data).str));
3261 			break;
3262 		case IPSECKEY_IP6:
3263 			zadd_rdata_wireformat(zparser_conv_aaaa(parser->region, (yyvsp[0].data).str));
3264 			break;
3265 		case IPSECKEY_DNAME:
3266 			/* convert and insert the dname */
3267 			if(strlen((yyvsp[0].data).str) == 0)
3268 				zc_error_prev_line("IPSECKEY must specify gateway name");
3269 			if(!(name = dname_parse(parser->region, (yyvsp[0].data).str))) {
3270 				zc_error_prev_line("IPSECKEY bad gateway dname %s", (yyvsp[0].data).str);
3271 				break;
3272 			}
3273 			if((yyvsp[0].data).str[strlen((yyvsp[0].data).str)-1] != '.') {
3274 				if(parser->origin == error_domain) {
3275 		    			zc_error("cannot concatenate origin to domain name, because origin failed to parse");
3276 					break;
3277 				} else if(name->name_size + domain_dname(parser->origin)->name_size - 1 > MAXDOMAINLEN) {
3278 					zc_error("ipsec gateway name exceeds %d character limit",
3279 						MAXDOMAINLEN);
3280 					break;
3281 				}
3282 				name = dname_concatenate(parser->rr_region, name,
3283 					domain_dname(parser->origin));
3284 			}
3285 			zadd_rdata_wireformat(alloc_rdata_init(parser->region,
3286 				dname_name(name), name->name_size));
3287 			break;
3288 		default:
3289 			zc_error_prev_line("unknown IPSECKEY gateway type");
3290 	    }
3291     }
3292 #line 3293 "zparser.c"
3293     break;
3294 
3295   case 239: /* rdata_ipseckey: rdata_ipsec_base sp str_sp_seq trail  */
3296 #line 1083 "zparser.y"
3297     {
3298 	   zadd_rdata_wireformat(zparser_conv_b64(parser->region, (yyvsp[-1].data).str)); /* public key */
3299     }
3300 #line 3301 "zparser.c"
3301     break;
3302 
3303   case 241: /* rdata_nid: str sp dotted_str trail  */
3304 #line 1091 "zparser.y"
3305     {
3306 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str));  /* preference */
3307 	    zadd_rdata_wireformat(zparser_conv_ilnp64(parser->region, (yyvsp[-1].data).str));  /* NodeID */
3308     }
3309 #line 3310 "zparser.c"
3310     break;
3311 
3312   case 242: /* rdata_l32: str sp dotted_str trail  */
3313 #line 1098 "zparser.y"
3314     {
3315 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str));  /* preference */
3316 	    zadd_rdata_wireformat(zparser_conv_a(parser->region, (yyvsp[-1].data).str));  /* Locator32 */
3317     }
3318 #line 3319 "zparser.c"
3319     break;
3320 
3321   case 243: /* rdata_l64: str sp dotted_str trail  */
3322 #line 1105 "zparser.y"
3323     {
3324 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str));  /* preference */
3325 	    zadd_rdata_wireformat(zparser_conv_ilnp64(parser->region, (yyvsp[-1].data).str));  /* Locator64 */
3326     }
3327 #line 3328 "zparser.c"
3328     break;
3329 
3330   case 244: /* rdata_lp: str sp dname trail  */
3331 #line 1112 "zparser.y"
3332     {
3333 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str));  /* preference */
3334 	    zadd_rdata_domain((yyvsp[-1].domain));  /* FQDN */
3335     }
3336 #line 3337 "zparser.c"
3337     break;
3338 
3339   case 245: /* rdata_eui48: str trail  */
3340 #line 1119 "zparser.y"
3341     {
3342 	    zadd_rdata_wireformat(zparser_conv_eui(parser->region, (yyvsp[-1].data).str, 48));
3343     }
3344 #line 3345 "zparser.c"
3345     break;
3346 
3347   case 246: /* rdata_eui64: str trail  */
3348 #line 1125 "zparser.y"
3349     {
3350 	    zadd_rdata_wireformat(zparser_conv_eui(parser->region, (yyvsp[-1].data).str, 64));
3351     }
3352 #line 3353 "zparser.c"
3353     break;
3354 
3355   case 247: /* rdata_uri: str sp str sp dotted_str trail  */
3356 #line 1132 "zparser.y"
3357     {
3358 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-5].data).str)); /* priority */
3359 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-3].data).str)); /* weight */
3360 	    zadd_rdata_wireformat(zparser_conv_long_text(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* target */
3361     }
3362 #line 3363 "zparser.c"
3363     break;
3364 
3365   case 248: /* rdata_caa: str sp str sp dotted_str trail  */
3366 #line 1141 "zparser.y"
3367     {
3368 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-5].data).str)); /* Flags */
3369 	    zadd_rdata_wireformat(zparser_conv_tag(parser->region, (yyvsp[-3].data).str, (yyvsp[-3].data).len)); /* Tag */
3370 	    zadd_rdata_wireformat(zparser_conv_long_text(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* Value */
3371     }
3372 #line 3373 "zparser.c"
3373     break;
3374 
3375   case 249: /* rdata_openpgpkey: str_sp_seq trail  */
3376 #line 1150 "zparser.y"
3377     {
3378 	    zadd_rdata_wireformat(zparser_conv_b64(parser->region, (yyvsp[-1].data).str));
3379     }
3380 #line 3381 "zparser.c"
3381     break;
3382 
3383   case 250: /* rdata_csync: str sp str nsec_seq  */
3384 #line 1157 "zparser.y"
3385     {
3386 	    zadd_rdata_wireformat(zparser_conv_serial(parser->region, (yyvsp[-3].data).str));
3387 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-1].data).str));
3388 	    zadd_rdata_wireformat(zparser_conv_nsec(parser->region, nsecbits)); /* nsec bitlist */
3389 	    memset(nsecbits, 0, sizeof(nsecbits));
3390             nsec_highest_rcode = 0;
3391     }
3392 #line 3393 "zparser.c"
3393     break;
3394 
3395   case 251: /* rdata_zonemd: str sp str sp str sp str_sp_seq trail  */
3396 #line 1168 "zparser.y"
3397     {
3398 	    zadd_rdata_wireformat(zparser_conv_serial(parser->region, (yyvsp[-7].data).str)); /* serial */
3399 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-5].data).str)); /* scheme */
3400 	    zadd_rdata_wireformat(zparser_conv_byte(parser->region, (yyvsp[-3].data).str)); /* hash algorithm */
3401 	    zadd_rdata_wireformat(zparser_conv_hex(parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len)); /* digest */
3402     }
3403 #line 3404 "zparser.c"
3404     break;
3405 
3406   case 252: /* svcparam: dotted_str QSTR  */
3407 #line 1177 "zparser.y"
3408     {
3409 	zadd_rdata_wireformat(zparser_conv_svcbparam(
3410 		parser->region, (yyvsp[-1].data).str, (yyvsp[-1].data).len, (yyvsp[0].data).str, (yyvsp[0].data).len));
3411     }
3412 #line 3413 "zparser.c"
3413     break;
3414 
3415   case 253: /* svcparam: dotted_str  */
3416 #line 1182 "zparser.y"
3417     {
3418 	zadd_rdata_wireformat(zparser_conv_svcbparam(
3419 		parser->region, (yyvsp[0].data).str, (yyvsp[0].data).len, NULL, 0));
3420     }
3421 #line 3422 "zparser.c"
3422     break;
3423 
3424   case 256: /* rdata_svcb_base: str sp dname  */
3425 #line 1192 "zparser.y"
3426     {
3427 	    /* SvcFieldPriority */
3428 	    zadd_rdata_wireformat(zparser_conv_short(parser->region, (yyvsp[-2].data).str));
3429 	    /* SvcDomainName */
3430 	    zadd_rdata_domain((yyvsp[0].domain));
3431     }
3432 #line 3433 "zparser.c"
3433     break;
3434 
3435   case 257: /* rdata_svcb: rdata_svcb_base sp svcparams trail  */
3436 #line 1199 "zparser.y"
3437     {
3438         zadd_rdata_svcb_check_wireformat();
3439     }
3440 #line 3441 "zparser.c"
3441     break;
3442 
3443   case 259: /* rdata_unknown: URR sp str sp str_sp_seq trail  */
3444 #line 1206 "zparser.y"
3445     {
3446 	    /* $2 is the number of octets, currently ignored */
3447 	    (yyval.unknown) = zparser_conv_hex(parser->rr_region, (yyvsp[-1].data).str, (yyvsp[-1].data).len);
3448 
3449     }
3450 #line 3451 "zparser.c"
3451     break;
3452 
3453   case 260: /* rdata_unknown: URR sp str trail  */
3454 #line 1212 "zparser.y"
3455     {
3456 	    (yyval.unknown) = zparser_conv_hex(parser->rr_region, "", 0);
3457     }
3458 #line 3459 "zparser.c"
3459     break;
3460 
3461   case 261: /* rdata_unknown: URR error NL  */
3462 #line 1216 "zparser.y"
3463     {
3464 	    (yyval.unknown) = zparser_conv_hex(parser->rr_region, "", 0);
3465     }
3466 #line 3467 "zparser.c"
3467     break;
3468 
3469 
3470 #line 3471 "zparser.c"
3471 
3472       default: break;
3473     }
3474   /* User semantic actions sometimes alter yychar, and that requires
3475      that yytoken be updated with the new translation.  We take the
3476      approach of translating immediately before every use of yytoken.
3477      One alternative is translating here after every semantic action,
3478      but that translation would be missed if the semantic action invokes
3479      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3480      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
3481      incorrect destructor might then be invoked immediately.  In the
3482      case of YYERROR or YYBACKUP, subsequent parser actions might lead
3483      to an incorrect destructor call or verbose syntax error message
3484      before the lookahead is translated.  */
3485   YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
3486 
3487   YYPOPSTACK (yylen);
3488   yylen = 0;
3489 
3490   *++yyvsp = yyval;
3491 
3492   /* Now 'shift' the result of the reduction.  Determine what state
3493      that goes to, based on the state we popped back to and the rule
3494      number reduced by.  */
3495   {
3496     const int yylhs = yyr1[yyn] - YYNTOKENS;
3497     const int yyi = yypgoto[yylhs] + *yyssp;
3498     yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
3499                ? yytable[yyi]
3500                : yydefgoto[yylhs]);
3501   }
3502 
3503   goto yynewstate;
3504 
3505 
3506 /*--------------------------------------.
3507 | yyerrlab -- here on detecting error.  |
3508 `--------------------------------------*/
3509 yyerrlab:
3510   /* Make sure we have latest lookahead translation.  See comments at
3511      user semantic actions for why this is necessary.  */
3512   yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
3513   /* If not already recovering from an error, report this error.  */
3514   if (!yyerrstatus)
3515     {
3516       ++yynerrs;
3517       yyerror (YY_("syntax error"));
3518     }
3519 
3520   if (yyerrstatus == 3)
3521     {
3522       /* If just tried and failed to reuse lookahead token after an
3523          error, discard it.  */
3524 
3525       if (yychar <= YYEOF)
3526         {
3527           /* Return failure if at end of input.  */
3528           if (yychar == YYEOF)
3529             YYABORT;
3530         }
3531       else
3532         {
3533           yydestruct ("Error: discarding",
3534                       yytoken, &yylval);
3535           yychar = YYEMPTY;
3536         }
3537     }
3538 
3539   /* Else will try to reuse lookahead token after shifting the error
3540      token.  */
3541   goto yyerrlab1;
3542 
3543 
3544 /*---------------------------------------------------.
3545 | yyerrorlab -- error raised explicitly by YYERROR.  |
3546 `---------------------------------------------------*/
3547 yyerrorlab:
3548   /* Pacify compilers when the user code never invokes YYERROR and the
3549      label yyerrorlab therefore never appears in user code.  */
3550   if (0)
3551     YYERROR;
3552 
3553   /* Do not reclaim the symbols of the rule whose action triggered
3554      this YYERROR.  */
3555   YYPOPSTACK (yylen);
3556   yylen = 0;
3557   YY_STACK_PRINT (yyss, yyssp);
3558   yystate = *yyssp;
3559   goto yyerrlab1;
3560 
3561 
3562 /*-------------------------------------------------------------.
3563 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
3564 `-------------------------------------------------------------*/
3565 yyerrlab1:
3566   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
3567 
3568   /* Pop stack until we find a state that shifts the error token.  */
3569   for (;;)
3570     {
3571       yyn = yypact[yystate];
3572       if (!yypact_value_is_default (yyn))
3573         {
3574           yyn += YYSYMBOL_YYerror;
3575           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
3576             {
3577               yyn = yytable[yyn];
3578               if (0 < yyn)
3579                 break;
3580             }
3581         }
3582 
3583       /* Pop the current state because it cannot handle the error token.  */
3584       if (yyssp == yyss)
3585         YYABORT;
3586 
3587 
3588       yydestruct ("Error: popping",
3589                   YY_ACCESSING_SYMBOL (yystate), yyvsp);
3590       YYPOPSTACK (1);
3591       yystate = *yyssp;
3592       YY_STACK_PRINT (yyss, yyssp);
3593     }
3594 
3595   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3596   *++yyvsp = yylval;
3597   YY_IGNORE_MAYBE_UNINITIALIZED_END
3598 
3599 
3600   /* Shift the error token.  */
3601   YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
3602 
3603   yystate = yyn;
3604   goto yynewstate;
3605 
3606 
3607 /*-------------------------------------.
3608 | yyacceptlab -- YYACCEPT comes here.  |
3609 `-------------------------------------*/
3610 yyacceptlab:
3611   yyresult = 0;
3612   goto yyreturn;
3613 
3614 
3615 /*-----------------------------------.
3616 | yyabortlab -- YYABORT comes here.  |
3617 `-----------------------------------*/
3618 yyabortlab:
3619   yyresult = 1;
3620   goto yyreturn;
3621 
3622 
3623 #if !defined yyoverflow
3624 /*-------------------------------------------------.
3625 | yyexhaustedlab -- memory exhaustion comes here.  |
3626 `-------------------------------------------------*/
3627 yyexhaustedlab:
3628   yyerror (YY_("memory exhausted"));
3629   yyresult = 2;
3630   goto yyreturn;
3631 #endif
3632 
3633 
3634 /*-------------------------------------------------------.
3635 | yyreturn -- parsing is finished, clean up and return.  |
3636 `-------------------------------------------------------*/
3637 yyreturn:
3638   if (yychar != YYEMPTY)
3639     {
3640       /* Make sure we have latest lookahead translation.  See comments at
3641          user semantic actions for why this is necessary.  */
3642       yytoken = YYTRANSLATE (yychar);
3643       yydestruct ("Cleanup: discarding lookahead",
3644                   yytoken, &yylval);
3645     }
3646   /* Do not reclaim the symbols of the rule whose action triggered
3647      this YYABORT or YYACCEPT.  */
3648   YYPOPSTACK (yylen);
3649   YY_STACK_PRINT (yyss, yyssp);
3650   while (yyssp != yyss)
3651     {
3652       yydestruct ("Cleanup: popping",
3653                   YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
3654       YYPOPSTACK (1);
3655     }
3656 #ifndef yyoverflow
3657   if (yyss != yyssa)
3658     YYSTACK_FREE (yyss);
3659 #endif
3660 
3661   return yyresult;
3662 }
3663 
3664 #line 1220 "zparser.y"
3665 
3666 
3667 int
yywrap(void)3668 yywrap(void)
3669 {
3670 	return 1;
3671 }
3672 
3673 /*
3674  * Create the parser.
3675  */
3676 zparser_type *
zparser_create(region_type * region,region_type * rr_region,namedb_type * db)3677 zparser_create(region_type *region, region_type *rr_region, namedb_type *db)
3678 {
3679 	zparser_type *result;
3680 
3681 	result = (zparser_type *) region_alloc(region, sizeof(zparser_type));
3682 	result->region = region;
3683 	result->rr_region = rr_region;
3684 	result->db = db;
3685 
3686 	result->filename = NULL;
3687 	result->current_zone = NULL;
3688 	result->origin = NULL;
3689 	result->prev_dname = NULL;
3690 
3691 	result->temporary_rdatas = (rdata_atom_type *) region_alloc_array(
3692 		result->region, MAXRDATALEN, sizeof(rdata_atom_type));
3693 
3694 	return result;
3695 }
3696 
3697 /*
3698  * Initialize the parser for a new zone file.
3699  */
3700 void
zparser_init(const char * filename,uint32_t ttl,uint16_t klass,const dname_type * origin)3701 zparser_init(const char *filename, uint32_t ttl, uint16_t klass,
3702 	     const dname_type *origin)
3703 {
3704 	memset(nxtbits, 0, sizeof(nxtbits));
3705 	memset(nsecbits, 0, sizeof(nsecbits));
3706         nsec_highest_rcode = 0;
3707 
3708 	parser->default_ttl = ttl;
3709 	parser->default_class = klass;
3710 	parser->current_zone = NULL;
3711 	parser->origin = domain_table_insert(parser->db->domains, origin);
3712 	parser->prev_dname = parser->origin;
3713 	parser->error_occurred = 0;
3714 	parser->errors = 0;
3715 	parser->line = 1;
3716 	parser->filename = filename;
3717 	parser->current_rr.rdata_count = 0;
3718 	parser->current_rr.rdatas = parser->temporary_rdatas;
3719 }
3720 
3721 void
yyerror(const char * message)3722 yyerror(const char *message)
3723 {
3724 	zc_error("%s", message);
3725 }
3726 
3727 static void
error_va_list(unsigned line,const char * fmt,va_list args)3728 error_va_list(unsigned line, const char *fmt, va_list args)
3729 {
3730 	if (parser->filename) {
3731 		char message[MAXSYSLOGMSGLEN];
3732 		vsnprintf(message, sizeof(message), fmt, args);
3733 		log_msg(LOG_ERR, "%s:%u: %s", parser->filename, line, message);
3734 	}
3735 	else log_vmsg(LOG_ERR, fmt, args);
3736 
3737 	++parser->errors;
3738 	parser->error_occurred = 1;
3739 }
3740 
3741 /* the line counting sux, to say the least
3742  * with this grose hack we try do give sane
3743  * numbers back */
3744 void
zc_error_prev_line(const char * fmt,...)3745 zc_error_prev_line(const char *fmt, ...)
3746 {
3747 	va_list args;
3748 	va_start(args, fmt);
3749 	error_va_list(parser->line - 1, fmt, args);
3750 	va_end(args);
3751 }
3752 
3753 void
zc_error(const char * fmt,...)3754 zc_error(const char *fmt, ...)
3755 {
3756 	/* send an error message to stderr */
3757 	va_list args;
3758 	va_start(args, fmt);
3759 	error_va_list(parser->line, fmt, args);
3760 	va_end(args);
3761 }
3762 
3763 static void
warning_va_list(unsigned line,const char * fmt,va_list args)3764 warning_va_list(unsigned line, const char *fmt, va_list args)
3765 {
3766 	if (parser->filename) {
3767 		char m[MAXSYSLOGMSGLEN];
3768 		vsnprintf(m, sizeof(m), fmt, args);
3769 		log_msg(LOG_WARNING, "%s:%u: %s", parser->filename, line, m);
3770 	}
3771 	else log_vmsg(LOG_WARNING, fmt, args);
3772 }
3773 
3774 void
zc_warning_prev_line(const char * fmt,...)3775 zc_warning_prev_line(const char *fmt, ...)
3776 {
3777 	va_list args;
3778 	va_start(args, fmt);
3779 	warning_va_list(parser->line - 1, fmt, args);
3780 	va_end(args);
3781 }
3782 
3783 void
zc_warning(const char * fmt,...)3784 zc_warning(const char *fmt, ... )
3785 {
3786 	va_list args;
3787 	va_start(args, fmt);
3788 	warning_va_list(parser->line, fmt, args);
3789 	va_end(args);
3790 }
3791 
3792 #ifdef NSEC3
3793 static void
nsec3_add_params(const char * hashalgo_str,const char * flag_str,const char * iter_str,const char * salt_str,int salt_len)3794 nsec3_add_params(const char* hashalgo_str, const char* flag_str,
3795 	const char* iter_str, const char* salt_str, int salt_len)
3796 {
3797 	zadd_rdata_wireformat(zparser_conv_byte(parser->region, hashalgo_str));
3798 	zadd_rdata_wireformat(zparser_conv_byte(parser->region, flag_str));
3799 	zadd_rdata_wireformat(zparser_conv_short(parser->region, iter_str));
3800 
3801 	/* salt */
3802 	if(strcmp(salt_str, "-") != 0)
3803 		zadd_rdata_wireformat(zparser_conv_hex_length(parser->region,
3804 			salt_str, salt_len));
3805 	else
3806 		zadd_rdata_wireformat(alloc_rdata_init(parser->region, "", 1));
3807 }
3808 #endif /* NSEC3 */
3809