ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/hopm/trunk/src/config-parser.c
Revision: 8181
Committed: Thu Apr 13 19:06:09 2017 UTC (9 years, 3 months ago) by michael
Content type: text/x-csrc
File size: 83013 byte(s)
Log Message:
- Rebuilt parser files

File Contents

# User Rev Content
1 michael 5429 /* A Bison parser, made by GNU Bison 3.0.4. */
2 michael 5052
3 michael 5067 /* Bison implementation for Yacc-like parsers in C
4 michael 5052
5 michael 5405 Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
6 michael 5052
7 michael 5067 This program is free software: you can redistribute it and/or modify
8 michael 5052 it under the terms of the GNU General Public License as published by
9 michael 5067 the Free Software Foundation, either version 3 of the License, or
10     (at your option) any later version.
11 michael 5052
12     This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15     GNU General Public License for more details.
16    
17     You should have received a copy of the GNU General Public License
18 michael 5067 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19 michael 5052
20     /* As a special exception, you may create a larger work that contains
21     part or all of the Bison parser skeleton and distribute that work
22     under terms of your choice, so long as that work isn't itself a
23     parser generator using the skeleton or a modified version thereof
24     as a parser skeleton. Alternatively, if you modify or redistribute
25     the parser skeleton itself, you may (at your option) remove this
26     special exception, which will cause the skeleton and the resulting
27     Bison output files to be licensed under the GNU General Public
28     License without this special exception.
29    
30     This special exception was added by the Free Software Foundation in
31     version 2.2 of Bison. */
32    
33     /* C LALR(1) parser skeleton written by Richard Stallman, by
34     simplifying the original so-called "semantic" parser. */
35    
36     /* All symbols defined below should begin with yy or YY, to avoid
37     infringing on user name space. This should be done even for local
38     variables, as they might otherwise be expanded by user macros.
39     There are some unavoidable exceptions within include files to
40     define necessary library symbols; they are noted "INFRINGES ON
41     USER NAME SPACE" below. */
42    
43     /* Identify Bison output. */
44     #define YYBISON 1
45    
46     /* Bison version. */
47 michael 5429 #define YYBISON_VERSION "3.0.4"
48 michael 5052
49     /* Skeleton name. */
50     #define YYSKELETON_NAME "yacc.c"
51    
52     /* Pure parsers. */
53     #define YYPURE 0
54    
55 michael 5067 /* Push parsers. */
56     #define YYPUSH 0
57 michael 5052
58 michael 5067 /* Pull parsers. */
59     #define YYPULL 1
60 michael 5052
61    
62 michael 5067
63    
64     /* Copy the first part of user declarations. */
65 michael 5351 #line 21 "config-parser.y" /* yacc.c:339 */
66 michael 5067
67     #include <string.h>
68 michael 5333
69     #include "memory.h"
70 michael 5067 #include "config.h"
71    
72 michael 5072 int yylex(void);
73    
74 michael 6052 static void *tmp; /* Variable to temporarily hold nodes before insertion to list */
75 michael 5067
76    
77 michael 8181 #line 78 "config-parser.c" /* yacc.c:339 */
78 michael 5067
79     # ifndef YY_NULLPTR
80     # if defined __cplusplus && 201103L <= __cplusplus
81     # define YY_NULLPTR nullptr
82     # else
83     # define YY_NULLPTR 0
84     # endif
85     # endif
86    
87     /* Enabling verbose error messages. */
88     #ifdef YYERROR_VERBOSE
89     # undef YYERROR_VERBOSE
90     # define YYERROR_VERBOSE 1
91     #else
92     # define YYERROR_VERBOSE 0
93     #endif
94    
95     /* In a future release of Bison, this section will be replaced
96     by #include "y.tab.h". */
97     #ifndef YY_YY_CONFIG_PARSER_H_INCLUDED
98     # define YY_YY_CONFIG_PARSER_H_INCLUDED
99     /* Debug traces. */
100     #ifndef YYDEBUG
101     # define YYDEBUG 0
102     #endif
103     #if YYDEBUG
104     extern int yydebug;
105     #endif
106    
107     /* Token type. */
108 michael 5052 #ifndef YYTOKENTYPE
109     # define YYTOKENTYPE
110 michael 5067 enum yytokentype
111     {
112 michael 8101 ADDRESS_FAMILY = 258,
113     AWAY = 259,
114     BAN_UNKNOWN = 260,
115     BLACKLIST = 261,
116     BYTES = 262,
117     KBYTES = 263,
118     MBYTES = 264,
119     CHANNEL = 265,
120     COMMAND_INTERVAL = 266,
121     COMMAND_QUEUE_SIZE = 267,
122     COMMAND_TIMEOUT = 268,
123     CONNREGEX = 269,
124     DNS_FDLIMIT = 270,
125     DNS_TIMEOUT = 271,
126     DNSBL_FROM = 272,
127     DNSBL_TO = 273,
128     EXEMPT = 274,
129     FD = 275,
130     INVITE = 276,
131     IPV4 = 277,
132     IPV6 = 278,
133     IRC = 279,
134     KLINE = 280,
135     KEY = 281,
136     MASK = 282,
137     MAX_READ = 283,
138     MODE = 284,
139     NAME = 285,
140     NEGCACHE = 286,
141     NEGCACHE_REBUILD = 287,
142     NICK = 288,
143     NICKSERV = 289,
144     NOTICE = 290,
145     OPER = 291,
146     OPM = 292,
147     OPTIONS = 293,
148     PASSWORD = 294,
149     PERFORM = 295,
150     PIDFILE = 296,
151     PORT = 297,
152     PROTOCOL = 298,
153     READTIMEOUT = 299,
154     REALNAME = 300,
155     RECONNECTINTERVAL = 301,
156     REPLY = 302,
157     SCANLOG = 303,
158     SCANNER = 304,
159     SECONDS = 305,
160     MINUTES = 306,
161     HOURS = 307,
162     DAYS = 308,
163     WEEKS = 309,
164     MONTHS = 310,
165     YEARS = 311,
166     SENDMAIL = 312,
167     SERVER = 313,
168     TARGET_IP = 314,
169     TARGET_PORT = 315,
170     TARGET_STRING = 316,
171     TIMEOUT = 317,
172     TYPE = 318,
173     USERNAME = 319,
174     USER = 320,
175     VHOST = 321,
176     NUMBER = 322,
177     STRING = 323,
178     PROTOCOLTYPE = 324
179 michael 5067 };
180 michael 5052 #endif
181     /* Tokens. */
182 michael 8101 #define ADDRESS_FAMILY 258
183     #define AWAY 259
184     #define BAN_UNKNOWN 260
185     #define BLACKLIST 261
186     #define BYTES 262
187     #define KBYTES 263
188     #define MBYTES 264
189     #define CHANNEL 265
190     #define COMMAND_INTERVAL 266
191     #define COMMAND_QUEUE_SIZE 267
192     #define COMMAND_TIMEOUT 268
193     #define CONNREGEX 269
194     #define DNS_FDLIMIT 270
195     #define DNS_TIMEOUT 271
196     #define DNSBL_FROM 272
197     #define DNSBL_TO 273
198     #define EXEMPT 274
199     #define FD 275
200     #define INVITE 276
201     #define IPV4 277
202     #define IPV6 278
203     #define IRC 279
204     #define KLINE 280
205     #define KEY 281
206     #define MASK 282
207     #define MAX_READ 283
208     #define MODE 284
209     #define NAME 285
210     #define NEGCACHE 286
211     #define NEGCACHE_REBUILD 287
212     #define NICK 288
213     #define NICKSERV 289
214     #define NOTICE 290
215     #define OPER 291
216     #define OPM 292
217     #define OPTIONS 293
218     #define PASSWORD 294
219     #define PERFORM 295
220     #define PIDFILE 296
221     #define PORT 297
222     #define PROTOCOL 298
223     #define READTIMEOUT 299
224     #define REALNAME 300
225     #define RECONNECTINTERVAL 301
226     #define REPLY 302
227     #define SCANLOG 303
228     #define SCANNER 304
229     #define SECONDS 305
230     #define MINUTES 306
231     #define HOURS 307
232     #define DAYS 308
233     #define WEEKS 309
234     #define MONTHS 310
235     #define YEARS 311
236     #define SENDMAIL 312
237     #define SERVER 313
238     #define TARGET_IP 314
239     #define TARGET_PORT 315
240     #define TARGET_STRING 316
241     #define TIMEOUT 317
242     #define TYPE 318
243     #define USERNAME 319
244     #define USER 320
245     #define VHOST 321
246     #define NUMBER 322
247     #define STRING 323
248     #define PROTOCOLTYPE 324
249 michael 5052
250 michael 5067 /* Value type. */
251 michael 5052 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
252 michael 5405
253 michael 5067 union YYSTYPE
254 michael 5052 {
255 michael 8181 #line 91 "config-parser.y" /* yacc.c:355 */
256 michael 5067
257 michael 5665 int number;
258     char *string;
259 michael 5067
260 michael 8181 #line 261 "config-parser.c" /* yacc.c:355 */
261 michael 5067 };
262 michael 5405
263     typedef union YYSTYPE YYSTYPE;
264 michael 5067 # define YYSTYPE_IS_TRIVIAL 1
265 michael 5052 # define YYSTYPE_IS_DECLARED 1
266     #endif
267    
268    
269 michael 5067 extern YYSTYPE yylval;
270 michael 5052
271 michael 5067 int yyparse (void);
272    
273     #endif /* !YY_YY_CONFIG_PARSER_H_INCLUDED */
274    
275 michael 5052 /* Copy the second part of user declarations. */
276    
277 michael 8181 #line 278 "config-parser.c" /* yacc.c:358 */
278 michael 5052
279     #ifdef short
280     # undef short
281     #endif
282    
283     #ifdef YYTYPE_UINT8
284     typedef YYTYPE_UINT8 yytype_uint8;
285     #else
286     typedef unsigned char yytype_uint8;
287     #endif
288    
289     #ifdef YYTYPE_INT8
290     typedef YYTYPE_INT8 yytype_int8;
291 michael 5067 #else
292 michael 5052 typedef signed char yytype_int8;
293     #endif
294    
295     #ifdef YYTYPE_UINT16
296     typedef YYTYPE_UINT16 yytype_uint16;
297     #else
298     typedef unsigned short int yytype_uint16;
299     #endif
300    
301     #ifdef YYTYPE_INT16
302     typedef YYTYPE_INT16 yytype_int16;
303     #else
304     typedef short int yytype_int16;
305     #endif
306    
307     #ifndef YYSIZE_T
308     # ifdef __SIZE_TYPE__
309     # define YYSIZE_T __SIZE_TYPE__
310     # elif defined size_t
311     # define YYSIZE_T size_t
312 michael 5067 # elif ! defined YYSIZE_T
313 michael 5052 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
314     # define YYSIZE_T size_t
315     # else
316     # define YYSIZE_T unsigned int
317     # endif
318     #endif
319    
320     #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
321    
322     #ifndef YY_
323 michael 5067 # if defined YYENABLE_NLS && YYENABLE_NLS
324 michael 5052 # if ENABLE_NLS
325     # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
326 michael 5067 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
327 michael 5052 # endif
328     # endif
329     # ifndef YY_
330 michael 5067 # define YY_(Msgid) Msgid
331 michael 5052 # endif
332     #endif
333    
334 michael 5067 #ifndef YY_ATTRIBUTE
335     # if (defined __GNUC__ \
336     && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
337     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
338     # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
339     # else
340     # define YY_ATTRIBUTE(Spec) /* empty */
341     # endif
342     #endif
343    
344     #ifndef YY_ATTRIBUTE_PURE
345     # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
346     #endif
347    
348     #ifndef YY_ATTRIBUTE_UNUSED
349     # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
350     #endif
351    
352     #if !defined _Noreturn \
353     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
354     # if defined _MSC_VER && 1200 <= _MSC_VER
355     # define _Noreturn __declspec (noreturn)
356     # else
357     # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
358     # endif
359     #endif
360    
361 michael 5052 /* Suppress unused-variable warnings by "using" E. */
362     #if ! defined lint || defined __GNUC__
363 michael 5067 # define YYUSE(E) ((void) (E))
364 michael 5052 #else
365 michael 5067 # define YYUSE(E) /* empty */
366 michael 5052 #endif
367    
368 michael 5067 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
369     /* Suppress an incorrect diagnostic about yylval being uninitialized. */
370     # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
371     _Pragma ("GCC diagnostic push") \
372     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
373     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
374     # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
375     _Pragma ("GCC diagnostic pop")
376 michael 5052 #else
377 michael 5067 # define YY_INITIAL_VALUE(Value) Value
378 michael 5052 #endif
379 michael 5067 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
380     # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
381     # define YY_IGNORE_MAYBE_UNINITIALIZED_END
382 michael 5052 #endif
383 michael 5067 #ifndef YY_INITIAL_VALUE
384     # define YY_INITIAL_VALUE(Value) /* Nothing. */
385     #endif
386 michael 5052
387 michael 5067
388 michael 5052 #if ! defined yyoverflow || YYERROR_VERBOSE
389    
390     /* The parser invokes alloca or malloc; define the necessary symbols. */
391    
392     # ifdef YYSTACK_USE_ALLOCA
393     # if YYSTACK_USE_ALLOCA
394     # ifdef __GNUC__
395     # define YYSTACK_ALLOC __builtin_alloca
396     # elif defined __BUILTIN_VA_ARG_INCR
397     # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
398     # elif defined _AIX
399     # define YYSTACK_ALLOC __alloca
400     # elif defined _MSC_VER
401     # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
402     # define alloca _alloca
403     # else
404     # define YYSTACK_ALLOC alloca
405 michael 5067 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
406 michael 5052 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
407 michael 5067 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
408     # ifndef EXIT_SUCCESS
409     # define EXIT_SUCCESS 0
410 michael 5052 # endif
411     # endif
412     # endif
413     # endif
414     # endif
415    
416     # ifdef YYSTACK_ALLOC
417 michael 5067 /* Pacify GCC's 'empty if-body' warning. */
418     # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
419 michael 5052 # ifndef YYSTACK_ALLOC_MAXIMUM
420     /* The OS might guarantee only one guard page at the bottom of the stack,
421     and a page size can be as small as 4096 bytes. So we cannot safely
422     invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
423     to allow for a few compiler-allocated temporary stack slots. */
424     # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
425     # endif
426     # else
427     # define YYSTACK_ALLOC YYMALLOC
428     # define YYSTACK_FREE YYFREE
429     # ifndef YYSTACK_ALLOC_MAXIMUM
430     # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
431     # endif
432 michael 5067 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
433 michael 5052 && ! ((defined YYMALLOC || defined malloc) \
434 michael 5067 && (defined YYFREE || defined free)))
435 michael 5052 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
436 michael 5067 # ifndef EXIT_SUCCESS
437     # define EXIT_SUCCESS 0
438 michael 5052 # endif
439     # endif
440     # ifndef YYMALLOC
441     # define YYMALLOC malloc
442 michael 5067 # if ! defined malloc && ! defined EXIT_SUCCESS
443 michael 5052 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
444     # endif
445     # endif
446     # ifndef YYFREE
447     # define YYFREE free
448 michael 5067 # if ! defined free && ! defined EXIT_SUCCESS
449 michael 5052 void free (void *); /* INFRINGES ON USER NAME SPACE */
450     # endif
451     # endif
452     # endif
453     #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
454    
455    
456     #if (! defined yyoverflow \
457     && (! defined __cplusplus \
458 michael 5067 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
459 michael 5052
460     /* A type that is properly aligned for any stack member. */
461     union yyalloc
462     {
463 michael 5067 yytype_int16 yyss_alloc;
464     YYSTYPE yyvs_alloc;
465     };
466 michael 5052
467     /* The size of the maximum gap between one aligned stack and the next. */
468     # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
469    
470     /* The size of an array large to enough to hold all stacks, each with
471     N elements. */
472     # define YYSTACK_BYTES(N) \
473     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
474     + YYSTACK_GAP_MAXIMUM)
475    
476 michael 5067 # define YYCOPY_NEEDED 1
477 michael 5052
478     /* Relocate STACK from its old location to the new one. The
479     local variables YYSIZE and YYSTACKSIZE give the old and new number of
480     elements in the stack, and YYPTR gives the new location of the
481     stack. Advance YYPTR to a properly aligned location for the next
482     stack. */
483 michael 5067 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
484     do \
485     { \
486     YYSIZE_T yynewbytes; \
487     YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
488     Stack = &yyptr->Stack_alloc; \
489     yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
490     yyptr += yynewbytes / sizeof (*yyptr); \
491     } \
492     while (0)
493 michael 5052
494     #endif
495    
496 michael 5067 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
497     /* Copy COUNT objects from SRC to DST. The source and destination do
498     not overlap. */
499     # ifndef YYCOPY
500     # if defined __GNUC__ && 1 < __GNUC__
501     # define YYCOPY(Dst, Src, Count) \
502     __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
503     # else
504     # define YYCOPY(Dst, Src, Count) \
505     do \
506     { \
507     YYSIZE_T yyi; \
508     for (yyi = 0; yyi < (Count); yyi++) \
509     (Dst)[yyi] = (Src)[yyi]; \
510     } \
511     while (0)
512     # endif
513     # endif
514     #endif /* !YYCOPY_NEEDED */
515    
516 michael 5052 /* YYFINAL -- State number of the termination state. */
517     #define YYFINAL 2
518     /* YYLAST -- Last index in YYTABLE. */
519 michael 8101 #define YYLAST 346
520 michael 5052
521     /* YYNTOKENS -- Number of terminals. */
522 michael 8101 #define YYNTOKENS 76
523 michael 5052 /* YYNNTS -- Number of nonterminals. */
524 michael 8101 #define YYNNTS 90
525 michael 5052 /* YYNRULES -- Number of rules. */
526 michael 8101 #define YYNRULES 170
527 michael 5067 /* YYNSTATES -- Number of states. */
528 michael 8101 #define YYNSTATES 370
529 michael 5052
530 michael 5067 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
531     by yylex, with out-of-bounds checking. */
532 michael 5052 #define YYUNDEFTOK 2
533 michael 8101 #define YYMAXUTOK 324
534 michael 5052
535 michael 5067 #define YYTRANSLATE(YYX) \
536 michael 5052 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
537    
538 michael 5067 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
539     as returned by yylex, without out-of-bounds checking. */
540 michael 5052 static const yytype_uint8 yytranslate[] =
541     {
542     0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
543     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
544     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
545     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
546 michael 8101 2, 2, 2, 2, 75, 2, 2, 2, 2, 2,
547     2, 2, 2, 2, 2, 2, 2, 2, 74, 72,
548     2, 73, 2, 2, 2, 2, 2, 2, 2, 2,
549 michael 5052 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
550     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
551     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
552     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
553     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
554 michael 8101 2, 2, 2, 70, 2, 71, 2, 2, 2, 2,
555 michael 5052 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
556     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
557     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
558     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
559     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
560     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
561     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
562     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
563     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
564     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
565     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
566     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
567     2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
568     5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
569     15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
570     25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
571     35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
572 michael 5080 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
573 michael 7017 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
574 michael 8101 65, 66, 67, 68, 69
575 michael 5052 };
576    
577     #if YYDEBUG
578 michael 5067 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
579 michael 5052 static const yytype_uint16 yyrline[] =
580     {
581 michael 8181 0, 106, 106, 107, 110, 111, 112, 113, 114, 115,
582     117, 117, 118, 119, 120, 121, 122, 123, 124, 125,
583     128, 128, 129, 130, 131, 132, 137, 139, 140, 142,
584     143, 144, 145, 146, 147, 148, 149, 150, 151, 153,
585     158, 163, 169, 174, 179, 185, 190, 195, 202, 204,
586     205, 207, 208, 209, 210, 211, 212, 213, 214, 215,
587     216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
588     227, 233, 239, 245, 251, 257, 263, 269, 277, 285,
589     290, 295, 300, 306, 312, 318, 324, 333, 333, 349,
590     350, 352, 353, 354, 356, 364, 372, 383, 383, 398,
591     399, 401, 402, 403, 405, 415, 428, 428, 471, 472,
592     474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
593     485, 493, 501, 509, 525, 532, 539, 546, 553, 571,
594     573, 574, 576, 577, 578, 579, 580, 582, 588, 594,
595     603, 603, 622, 623, 625, 626, 627, 628, 629, 630,
596     631, 633, 642, 641, 649, 649, 650, 655, 662, 670,
597     682, 689, 691, 692, 694, 710, 712, 713, 715, 716,
598     718
599 michael 5052 };
600     #endif
601    
602 michael 5067 #if YYDEBUG || YYERROR_VERBOSE || 0
603 michael 5052 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
604     First, the terminals, then, starting at YYNTOKENS, nonterminals. */
605     static const char *const yytname[] =
606     {
607 michael 8101 "$end", "error", "$undefined", "ADDRESS_FAMILY", "AWAY", "BAN_UNKNOWN",
608     "BLACKLIST", "BYTES", "KBYTES", "MBYTES", "CHANNEL", "COMMAND_INTERVAL",
609 michael 7017 "COMMAND_QUEUE_SIZE", "COMMAND_TIMEOUT", "CONNREGEX", "DNS_FDLIMIT",
610 michael 8101 "DNS_TIMEOUT", "DNSBL_FROM", "DNSBL_TO", "EXEMPT", "FD", "INVITE",
611     "IPV4", "IPV6", "IRC", "KLINE", "KEY", "MASK", "MAX_READ", "MODE",
612     "NAME", "NEGCACHE", "NEGCACHE_REBUILD", "NICK", "NICKSERV", "NOTICE",
613     "OPER", "OPM", "OPTIONS", "PASSWORD", "PERFORM", "PIDFILE", "PORT",
614     "PROTOCOL", "READTIMEOUT", "REALNAME", "RECONNECTINTERVAL", "REPLY",
615     "SCANLOG", "SCANNER", "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS",
616     "MONTHS", "YEARS", "SENDMAIL", "SERVER", "TARGET_IP", "TARGET_PORT",
617 michael 6081 "TARGET_STRING", "TIMEOUT", "TYPE", "USERNAME", "USER", "VHOST",
618     "NUMBER", "STRING", "PROTOCOLTYPE", "'{'", "'}'", "';'", "'='", "':'",
619 michael 8101 "','", "$accept", "config", "config_items", "timespec_", "timespec",
620 michael 6081 "sizespec_", "sizespec", "options_entry", "options_items",
621     "options_item", "options_negcache", "options_negcache_rebuild",
622 michael 6201 "options_pidfile", "options_dns_fdlimit", "options_dns_timeout",
623 michael 7017 "options_scanlog", "options_command_queue_size",
624     "options_command_interval", "options_command_timeout", "irc_entry",
625     "irc_items", "irc_item", "irc_away", "irc_kline", "irc_mode", "irc_nick",
626     "irc_nickserv", "irc_oper", "irc_password", "irc_perform", "irc_notice",
627     "irc_port", "irc_readtimeout", "irc_reconnectinterval", "irc_realname",
628     "irc_server", "irc_username", "irc_vhost", "irc_connregex",
629     "channel_entry", "$@1", "channel_items", "channel_item", "channel_name",
630     "channel_key", "channel_invite", "user_entry", "$@2", "user_items",
631     "user_item", "user_mask", "user_scanner", "scanner_entry", "$@3",
632     "scanner_items", "scanner_item", "scanner_name", "scanner_vhost",
633     "scanner_target_ip", "scanner_target_string", "scanner_fd",
634     "scanner_target_port", "scanner_timeout", "scanner_max_read",
635     "scanner_protocol", "opm_entry", "opm_items", "opm_item",
636     "opm_dnsbl_from", "opm_dnsbl_to", "opm_sendmail", "opm_blacklist_entry",
637     "$@4", "blacklist_items", "blacklist_item", "blacklist_name",
638 michael 8101 "blacklist_address_family", "$@5", "blacklist_address_family_items",
639     "blacklist_address_family_item", "blacklist_kline", "blacklist_type",
640     "blacklist_ban_unknown", "blacklist_reply", "blacklist_reply_items",
641     "blacklist_reply_item", "exempt_entry", "exempt_items", "exempt_item",
642     "exempt_mask", YY_NULLPTR
643 michael 5052 };
644     #endif
645    
646     # ifdef YYPRINT
647 michael 5067 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
648     (internal) symbol number NUM (which must be that of a token). */
649 michael 5052 static const yytype_uint16 yytoknum[] =
650     {
651     0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
652     265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
653     275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
654     285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
655 michael 5080 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
656 michael 5198 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
657 michael 8101 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
658     123, 125, 59, 61, 58, 44
659 michael 5052 };
660     # endif
661    
662 michael 8101 #define YYPACT_NINF -294
663 michael 5052
664 michael 5067 #define yypact_value_is_default(Yystate) \
665 michael 8101 (!!((Yystate) == (-294)))
666 michael 5067
667 michael 7017 #define YYTABLE_NINF -141
668 michael 5067
669     #define yytable_value_is_error(Yytable_value) \
670     0
671    
672     /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
673     STATE-NUM. */
674     static const yytype_int16 yypact[] =
675 michael 5052 {
676 michael 8101 -294, 138, -294, -63, -54, -52, -38, -294, -294, -294,
677     -294, -24, -294, 14, -294, -294, 23, 95, 37, 181,
678     9, 13, -294, -3, 4, -294, -294, -294, 12, 18,
679     19, 20, 24, 31, 33, 35, 42, 44, 48, 49,
680     53, 59, 60, 63, 70, 0, -294, -294, -294, -294,
681     -294, -294, -294, -294, -294, -294, -294, -294, -294, -294,
682     -294, -294, -294, -294, -294, 77, -294, 73, 78, 82,
683     5, -294, -294, -294, -294, -294, 150, -294, 85, 87,
684     90, 92, 93, 97, 98, 99, 100, 36, -294, -294,
685     -294, -294, -294, -294, -294, -294, -294, -294, 115, 124,
686     109, 96, -294, 110, 111, 112, 113, 120, 121, 127,
687     137, 140, 141, 83, 139, 142, 139, 143, 146, 149,
688     147, -294, 151, 152, 155, 156, 153, -294, 157, 139,
689     159, 139, 161, 139, 139, 139, 169, 170, 167, -294,
690     -294, 145, 168, 29, -294, -294, -294, -294, 171, 172,
691     173, 174, 175, 176, 177, 178, 179, 52, -294, -294,
692     -294, -294, -294, -294, -294, -294, -294, -294, 182, -294,
693     183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
694     193, 148, 194, 195, 196, 197, 198, 199, -294, -18,
695     200, 201, 202, -294, 144, 203, 204, 205, 206, 207,
696     208, 209, 210, 211, -294, 216, 217, 214, -294, 220,
697     221, 222, 223, 225, 224, 226, 139, 227, 228, -294,
698     -294, -294, -294, -294, -294, -294, -294, -294, -294, -294,
699     -294, -294, 139, 139, 139, 139, 139, 139, 139, -294,
700     -294, -294, -294, -294, -294, -294, -294, 180, 229, 230,
701     39, -294, -294, -294, -294, -294, -294, -294, -294, -294,
702     231, 232, 233, 219, 234, 56, -294, -294, -294, -294,
703     -294, -294, -294, -294, -294, -294, -294, -294, -294, -294,
704     -294, -294, 236, 237, -294, 238, 81, 239, 240, 166,
705     241, 242, 243, 244, 245, -294, -294, -294, -294, -294,
706     -294, -294, -294, 250, 251, 252, 249, -294, 253, 255,
707     256, 257, 260, 261, 258, -294, -294, -294, -294, 221,
708     221, 221, -294, -294, -294, -294, 264, -294, -294, -294,
709     -294, -294, 262, 263, 265, -294, 51, 266, 267, 268,
710     259, -58, -294, 269, -294, -294, -294, -294, 270, -294,
711     -294, -294, -294, -294, 26, -294, -294, -294, -294, 275,
712     272, -294, -294, -294, -294, 51, 273, -294, -294, -294
713 michael 5052 };
714    
715 michael 5067 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
716     Performed when YYTABLE does not specify something else to do. Zero
717     means the default is an error. */
718 michael 5052 static const yytype_uint8 yydefact[] =
719     {
720 michael 7017 2, 97, 1, 0, 0, 0, 0, 3, 5, 4,
721 michael 5052 7, 0, 8, 0, 6, 9, 0, 0, 0, 0,
722 michael 8101 0, 0, 169, 0, 0, 167, 168, 69, 0, 0,
723 michael 5052 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
724 michael 7017 0, 0, 0, 0, 0, 0, 50, 51, 53, 56,
725     54, 55, 57, 58, 66, 67, 59, 60, 61, 62,
726     63, 64, 65, 52, 68, 0, 136, 0, 0, 0,
727     0, 131, 132, 133, 134, 135, 0, 38, 0, 0,
728     0, 0, 0, 0, 0, 0, 0, 0, 28, 29,
729     30, 31, 32, 33, 34, 35, 36, 37, 0, 0,
730 michael 8101 0, 0, 166, 0, 0, 0, 0, 0, 0, 0,
731 michael 5052 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
732 michael 7017 0, 49, 0, 0, 0, 0, 0, 130, 0, 0,
733     0, 0, 0, 0, 0, 0, 0, 0, 0, 27,
734     103, 0, 0, 0, 100, 101, 102, 119, 0, 0,
735     0, 0, 0, 0, 0, 0, 0, 0, 109, 110,
736 michael 8101 111, 113, 115, 112, 114, 117, 118, 116, 0, 165,
737 michael 7017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
738     0, 10, 0, 0, 0, 0, 0, 0, 48, 0,
739     0, 0, 0, 129, 0, 0, 0, 0, 0, 0,
740     0, 0, 0, 0, 26, 0, 0, 0, 99, 0,
741     0, 0, 0, 0, 0, 0, 0, 0, 0, 108,
742 michael 8101 170, 70, 86, 71, 72, 73, 74, 78, 75, 76,
743 michael 7017 77, 79, 10, 10, 10, 10, 10, 10, 10, 12,
744     11, 80, 82, 81, 83, 84, 85, 0, 0, 0,
745 michael 8101 0, 90, 91, 92, 93, 137, 138, 139, 150, 152,
746     0, 0, 0, 0, 0, 0, 143, 144, 145, 147,
747     146, 148, 149, 46, 45, 47, 42, 43, 39, 40,
748     41, 44, 0, 0, 98, 0, 20, 0, 0, 0,
749     0, 0, 0, 0, 0, 107, 13, 14, 15, 16,
750     17, 18, 19, 0, 0, 0, 0, 89, 0, 0,
751     0, 0, 0, 0, 0, 142, 104, 105, 124, 20,
752     20, 20, 22, 21, 127, 120, 0, 122, 125, 123,
753     126, 121, 0, 0, 0, 88, 0, 0, 0, 0,
754     0, 0, 163, 0, 141, 23, 24, 25, 0, 96,
755     95, 94, 156, 157, 0, 155, 160, 158, 151, 0,
756     0, 162, 159, 128, 153, 0, 0, 161, 154, 164
757 michael 5052 };
758    
759 michael 5067 /* YYPGOTO[NTERM-NUM]. */
760     static const yytype_int16 yypgoto[] =
761     {
762 michael 8101 -294, -294, -294, -2, -114, -293, 6, -294, -294, 212,
763     -294, -294, -294, -294, -294, -294, -294, -294, -294, -294,
764     -294, 278, -294, -294, -294, -294, -294, -294, -294, -294,
765     -294, -294, -294, -294, -294, -294, -294, -294, -294, -294,
766     -294, -294, -8, -294, -294, -294, -294, -294, -294, 154,
767     -294, -294, -294, -294, -294, 86, -294, -294, -294, -294,
768     -294, -294, -294, -294, -294, -294, -294, 276, -294, -294,
769     -294, -294, -294, -294, 68, -294, -294, -294, -294, -69,
770     -294, -294, -294, -294, -294, -43, -294, -294, 277, -294
771 michael 5067 };
772    
773     /* YYDEFGOTO[NTERM-NUM]. */
774 michael 5052 static const yytype_int16 yydefgoto[] =
775     {
776 michael 8101 -1, 1, 7, 239, 240, 322, 323, 8, 87, 88,
777 michael 7017 89, 90, 91, 92, 93, 94, 95, 96, 97, 9,
778     45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
779     55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
780     65, 250, 251, 252, 253, 254, 10, 11, 143, 144,
781     145, 146, 12, 13, 157, 158, 159, 160, 161, 162,
782     163, 164, 165, 166, 167, 14, 70, 71, 72, 73,
783 michael 8101 74, 75, 76, 265, 266, 267, 268, 308, 354, 355,
784     269, 270, 271, 272, 341, 342, 15, 24, 25, 26
785 michael 5052 };
786    
787 michael 5067 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
788     positive, shift that token. If negative, reduce the rule whose
789     number is the opposite. If YYTABLE_NINF, syntax error. */
790 michael 5052 static const yytype_int16 yytable[] =
791     {
792 michael 8101 182, 27, 184, 247, 28, 22, 66, 16, 248, 340,
793     -87, -140, 249, 360, 29, 195, 17, 197, 18, 199,
794     200, 201, 67, 68, 22, 30, 345, 346, 347, 31,
795     140, 23, 19, 32, 33, 34, 35, 77, 66, 36,
796     37, 20, 38, -140, 39, 40, 41, 78, 79, 80,
797     23, 81, 82, 147, 67, 68, 141, 258, 42, 259,
798     247, 260, 69, 21, 43, 248, 44, 83, 84, 249,
799     100, 120, 148, 352, 353, 101, 126, 85, 142, 98,
800     149, 261, 150, 99, 86, 103, 262, 122, 319, 320,
801     321, 104, 105, 106, 69, 151, 27, 107, 364, 28,
802     207, 365, 293, 263, 108, -87, 109, 138, 110, 29,
803     306, 152, 153, 154, 155, 111, 140, 112, 156, 264,
804     30, 113, 114, 218, 31, 147, 115, 314, 32, 33,
805     34, 35, 116, 117, 36, 37, 118, 38, 2, 39,
806     40, 41, 141, 119, 148, 258, 123, 259, 286, 260,
807     180, 124, 149, 42, 150, 125, 128, 3, 129, 43,
808     130, 44, 4, 131, 142, 132, 133, 151, 169, 261,
809     134, 135, 136, 137, 262, 5, 6, 168, 170, 171,
810     172, 173, 77, 152, 153, 154, 155, -106, 174, 175,
811     156, 263, 78, 79, 80, 176, 81, 82, 232, 233,
812     234, 235, 236, 237, 238, 177, 181, 264, 178, 179,
813     183, 185, 83, 84, 186, 181, 287, 187, 205, 188,
814     190, 189, 85, 191, 192, 193, 196, 194, 198, 86,
815     296, 297, 298, 299, 300, 301, 302, 202, 203, 204,
816     326, 206, 307, 219, 209, 210, 211, 212, 213, 214,
817     215, 216, 217, 303, 220, 221, 222, 223, 224, 225,
818     226, 227, 228, 229, 230, 231, 241, 242, 243, 244,
819     245, 246, 255, 256, 257, 273, 274, 275, 276, 277,
820     278, 279, 280, 281, 282, 283, 284, 285, 286, 312,
821     288, 291, 289, 290, 292, 294, 368, 208, 361, 139,
822     295, 102, 304, 305, 309, 310, 311, 313, 316, 317,
823     318, 324, 325, 327, 328, 329, 330, 331, 332, 333,
824     334, 335, 337, 121, 338, 339, 336, 340, 0, 343,
825     344, 348, 359, 315, 349, 350, 0, 351, 356, 357,
826     358, 362, 363, 366, 367, 369, 127
827 michael 5052 };
828    
829     static const yytype_int16 yycheck[] =
830     {
831 michael 8101 114, 1, 116, 21, 4, 1, 1, 70, 26, 67,
832     10, 6, 30, 71, 14, 129, 70, 131, 70, 133,
833     134, 135, 17, 18, 1, 25, 319, 320, 321, 29,
834     1, 27, 70, 33, 34, 35, 36, 1, 1, 39,
835     40, 65, 42, 6, 44, 45, 46, 11, 12, 13,
836     27, 15, 16, 1, 17, 18, 27, 1, 58, 3,
837     21, 5, 57, 49, 64, 26, 66, 31, 32, 30,
838     73, 71, 20, 22, 23, 71, 71, 41, 49, 70,
839     28, 25, 30, 70, 48, 73, 30, 10, 7, 8,
840     9, 73, 73, 73, 57, 43, 1, 73, 72, 4,
841     71, 75, 216, 47, 73, 10, 73, 71, 73, 14,
842     71, 59, 60, 61, 62, 73, 1, 73, 66, 63,
843     25, 73, 73, 71, 29, 1, 73, 71, 33, 34,
844     35, 36, 73, 73, 39, 40, 73, 42, 0, 44,
845     45, 46, 27, 73, 20, 1, 73, 3, 67, 5,
846     67, 73, 28, 58, 30, 73, 6, 19, 73, 64,
847     73, 66, 24, 73, 49, 73, 73, 43, 72, 25,
848     73, 73, 73, 73, 30, 37, 38, 68, 68, 68,
849     68, 68, 1, 59, 60, 61, 62, 49, 68, 68,
850     66, 47, 11, 12, 13, 68, 15, 16, 50, 51,
851     52, 53, 54, 55, 56, 68, 67, 63, 68, 68,
852     68, 68, 31, 32, 68, 67, 210, 68, 73, 72,
853     68, 70, 41, 68, 68, 72, 67, 70, 67, 48,
854     232, 233, 234, 235, 236, 237, 238, 68, 68, 72,
855     74, 73, 250, 157, 73, 73, 73, 73, 73, 73,
856     73, 73, 73, 73, 72, 72, 72, 72, 72, 72,
857     72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
858     72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
859     72, 72, 72, 72, 68, 68, 72, 67, 67, 70,
860     68, 67, 69, 68, 68, 68, 365, 143, 341, 87,
861     72, 24, 73, 73, 73, 73, 73, 73, 72, 72,
862     72, 72, 72, 72, 72, 72, 72, 72, 68, 68,
863     68, 72, 67, 45, 68, 68, 73, 67, -1, 68,
864     72, 67, 73, 265, 72, 72, -1, 72, 72, 72,
865     72, 72, 72, 68, 72, 72, 70
866 michael 5052 };
867    
868 michael 5067 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
869     symbol of state STATE-NUM. */
870 michael 5052 static const yytype_uint8 yystos[] =
871     {
872 michael 8101 0, 77, 0, 19, 24, 37, 38, 78, 83, 95,
873     122, 123, 128, 129, 141, 162, 70, 70, 70, 70,
874     65, 49, 1, 27, 163, 164, 165, 1, 4, 14,
875     25, 29, 33, 34, 35, 36, 39, 40, 42, 44,
876     45, 46, 58, 64, 66, 96, 97, 98, 99, 100,
877     101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
878     111, 112, 113, 114, 115, 116, 1, 17, 18, 57,
879     142, 143, 144, 145, 146, 147, 148, 1, 11, 12,
880     13, 15, 16, 31, 32, 41, 48, 84, 85, 86,
881     87, 88, 89, 90, 91, 92, 93, 94, 70, 70,
882     73, 71, 164, 73, 73, 73, 73, 73, 73, 73,
883     73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
884     71, 97, 10, 73, 73, 73, 71, 143, 6, 73,
885     73, 73, 73, 73, 73, 73, 73, 73, 71, 85,
886     1, 27, 49, 124, 125, 126, 127, 1, 20, 28,
887     30, 43, 59, 60, 61, 62, 66, 130, 131, 132,
888     133, 134, 135, 136, 137, 138, 139, 140, 68, 72,
889     68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
890     67, 67, 80, 68, 80, 68, 68, 68, 72, 70,
891     68, 68, 68, 72, 70, 80, 67, 80, 67, 80,
892     80, 80, 68, 68, 72, 73, 73, 71, 125, 73,
893     73, 73, 73, 73, 73, 73, 73, 73, 71, 131,
894     72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
895     72, 72, 50, 51, 52, 53, 54, 55, 56, 79,
896     80, 72, 72, 72, 72, 72, 72, 21, 26, 30,
897     117, 118, 119, 120, 121, 72, 72, 72, 1, 3,
898     5, 25, 30, 47, 63, 149, 150, 151, 152, 156,
899     157, 158, 159, 72, 72, 72, 72, 72, 72, 72,
900     72, 72, 68, 68, 72, 67, 67, 82, 68, 69,
901     68, 67, 68, 80, 68, 72, 79, 79, 79, 79,
902     79, 79, 79, 73, 73, 73, 71, 118, 153, 73,
903     73, 73, 70, 73, 71, 150, 72, 72, 72, 7,
904     8, 9, 81, 82, 72, 72, 74, 72, 72, 72,
905     72, 72, 68, 68, 68, 72, 73, 67, 68, 68,
906     67, 160, 161, 68, 72, 81, 81, 81, 67, 72,
907     72, 72, 22, 23, 154, 155, 72, 72, 72, 73,
908     71, 161, 72, 72, 72, 75, 68, 72, 155, 72
909 michael 5052 };
910    
911 michael 5067 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
912     static const yytype_uint8 yyr1[] =
913     {
914 michael 8101 0, 76, 77, 77, 78, 78, 78, 78, 78, 78,
915     79, 79, 80, 80, 80, 80, 80, 80, 80, 80,
916     81, 81, 82, 82, 82, 82, 83, 84, 84, 85,
917     85, 85, 85, 85, 85, 85, 85, 85, 85, 86,
918     87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
919     96, 97, 97, 97, 97, 97, 97, 97, 97, 97,
920     97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
921     98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
922     108, 109, 110, 111, 112, 113, 114, 116, 115, 117,
923     117, 118, 118, 118, 119, 120, 121, 123, 122, 124,
924     124, 125, 125, 125, 126, 127, 129, 128, 130, 130,
925     131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
926     132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
927     142, 142, 143, 143, 143, 143, 143, 144, 145, 146,
928     148, 147, 149, 149, 150, 150, 150, 150, 150, 150,
929     150, 151, 153, 152, 154, 154, 155, 155, 156, 157,
930     158, 159, 160, 160, 161, 162, 163, 163, 164, 164,
931     165
932 michael 5067 };
933 michael 5052
934 michael 5067 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
935     static const yytype_uint8 yyr2[] =
936     {
937     0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
938 michael 5080 0, 1, 2, 3, 3, 3, 3, 3, 3, 3,
939     0, 1, 2, 3, 3, 3, 5, 2, 1, 1,
940 michael 7017 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
941     4, 4, 4, 4, 4, 4, 4, 4, 5, 2,
942 michael 5067 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
943 michael 7017 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
944 michael 6201 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
945 michael 7017 4, 4, 4, 4, 4, 4, 4, 0, 6, 2,
946     1, 1, 1, 1, 4, 4, 4, 0, 6, 2,
947     1, 1, 1, 1, 4, 4, 0, 6, 2, 1,
948     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
949     4, 4, 4, 4, 4, 4, 4, 4, 6, 5,
950     2, 1, 1, 1, 1, 1, 1, 4, 4, 4,
951 michael 6201 0, 6, 2, 1, 1, 1, 1, 1, 1, 1,
952 michael 8101 1, 4, 0, 5, 3, 1, 1, 1, 4, 4,
953     4, 5, 2, 1, 4, 5, 2, 1, 1, 1,
954     4
955 michael 5067 };
956 michael 5052
957    
958 michael 5067 #define yyerrok (yyerrstatus = 0)
959     #define yyclearin (yychar = YYEMPTY)
960     #define YYEMPTY (-2)
961     #define YYEOF 0
962 michael 5052
963 michael 5067 #define YYACCEPT goto yyacceptlab
964     #define YYABORT goto yyabortlab
965     #define YYERROR goto yyerrorlab
966 michael 5052
967 michael 5067
968 michael 5052 #define YYRECOVERING() (!!yyerrstatus)
969    
970 michael 5067 #define YYBACKUP(Token, Value) \
971     do \
972     if (yychar == YYEMPTY) \
973     { \
974     yychar = (Token); \
975     yylval = (Value); \
976     YYPOPSTACK (yylen); \
977     yystate = *yyssp; \
978     goto yybackup; \
979     } \
980     else \
981     { \
982 michael 5052 yyerror (YY_("syntax error: cannot back up")); \
983 michael 5067 YYERROR; \
984     } \
985     while (0)
986 michael 5052
987 michael 5067 /* Error token number */
988     #define YYTERROR 1
989     #define YYERRCODE 256
990 michael 5052
991    
992    
993     /* Enable debugging if requested. */
994     #if YYDEBUG
995    
996     # ifndef YYFPRINTF
997     # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
998     # define YYFPRINTF fprintf
999     # endif
1000    
1001 michael 5067 # define YYDPRINTF(Args) \
1002     do { \
1003     if (yydebug) \
1004     YYFPRINTF Args; \
1005     } while (0)
1006 michael 5052
1007 michael 5067 /* This macro is provided for backward compatibility. */
1008     #ifndef YY_LOCATION_PRINT
1009     # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1010     #endif
1011 michael 5052
1012    
1013 michael 5067 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
1014     do { \
1015     if (yydebug) \
1016     { \
1017     YYFPRINTF (stderr, "%s ", Title); \
1018     yy_symbol_print (stderr, \
1019     Type, Value); \
1020     YYFPRINTF (stderr, "\n"); \
1021     } \
1022     } while (0)
1023 michael 5052
1024 michael 5067
1025     /*----------------------------------------.
1026     | Print this symbol's value on YYOUTPUT. |
1027     `----------------------------------------*/
1028    
1029 michael 5052 static void
1030     yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1031     {
1032 michael 5067 FILE *yyo = yyoutput;
1033     YYUSE (yyo);
1034 michael 5052 if (!yyvaluep)
1035     return;
1036     # ifdef YYPRINT
1037     if (yytype < YYNTOKENS)
1038     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1039     # endif
1040 michael 5067 YYUSE (yytype);
1041 michael 5052 }
1042    
1043    
1044     /*--------------------------------.
1045     | Print this symbol on YYOUTPUT. |
1046     `--------------------------------*/
1047    
1048     static void
1049     yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1050     {
1051 michael 5067 YYFPRINTF (yyoutput, "%s %s (",
1052     yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1053 michael 5052
1054     yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1055     YYFPRINTF (yyoutput, ")");
1056     }
1057    
1058     /*------------------------------------------------------------------.
1059     | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1060     | TOP (included). |
1061     `------------------------------------------------------------------*/
1062    
1063     static void
1064 michael 5067 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1065 michael 5052 {
1066     YYFPRINTF (stderr, "Stack now");
1067 michael 5067 for (; yybottom <= yytop; yybottom++)
1068     {
1069     int yybot = *yybottom;
1070     YYFPRINTF (stderr, " %d", yybot);
1071     }
1072 michael 5052 YYFPRINTF (stderr, "\n");
1073     }
1074    
1075 michael 5067 # define YY_STACK_PRINT(Bottom, Top) \
1076     do { \
1077     if (yydebug) \
1078     yy_stack_print ((Bottom), (Top)); \
1079     } while (0)
1080 michael 5052
1081    
1082     /*------------------------------------------------.
1083     | Report that the YYRULE is going to be reduced. |
1084     `------------------------------------------------*/
1085    
1086     static void
1087 michael 5067 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
1088 michael 5052 {
1089 michael 5067 unsigned long int yylno = yyrline[yyrule];
1090 michael 5052 int yynrhs = yyr2[yyrule];
1091     int yyi;
1092     YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1093 michael 5067 yyrule - 1, yylno);
1094 michael 5052 /* The symbols being reduced. */
1095     for (yyi = 0; yyi < yynrhs; yyi++)
1096     {
1097 michael 5067 YYFPRINTF (stderr, " $%d = ", yyi + 1);
1098     yy_symbol_print (stderr,
1099     yystos[yyssp[yyi + 1 - yynrhs]],
1100     &(yyvsp[(yyi + 1) - (yynrhs)])
1101     );
1102     YYFPRINTF (stderr, "\n");
1103 michael 5052 }
1104     }
1105    
1106 michael 5067 # define YY_REDUCE_PRINT(Rule) \
1107     do { \
1108     if (yydebug) \
1109     yy_reduce_print (yyssp, yyvsp, Rule); \
1110     } while (0)
1111 michael 5052
1112     /* Nonzero means print parse trace. It is left uninitialized so that
1113     multiple parsers can coexist. */
1114     int yydebug;
1115     #else /* !YYDEBUG */
1116     # define YYDPRINTF(Args)
1117     # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1118     # define YY_STACK_PRINT(Bottom, Top)
1119     # define YY_REDUCE_PRINT(Rule)
1120     #endif /* !YYDEBUG */
1121    
1122    
1123     /* YYINITDEPTH -- initial size of the parser's stacks. */
1124 michael 5067 #ifndef YYINITDEPTH
1125 michael 5052 # define YYINITDEPTH 200
1126     #endif
1127    
1128     /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1129     if the built-in stack extension method is used).
1130    
1131     Do not make this value too large; the results are undefined if
1132     YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1133     evaluated with infinite-precision integer arithmetic. */
1134    
1135     #ifndef YYMAXDEPTH
1136     # define YYMAXDEPTH 10000
1137     #endif
1138    
1139    
1140     #if YYERROR_VERBOSE
1141    
1142     # ifndef yystrlen
1143     # if defined __GLIBC__ && defined _STRING_H
1144     # define yystrlen strlen
1145     # else
1146     /* Return the length of YYSTR. */
1147     static YYSIZE_T
1148     yystrlen (const char *yystr)
1149     {
1150     YYSIZE_T yylen;
1151     for (yylen = 0; yystr[yylen]; yylen++)
1152     continue;
1153     return yylen;
1154     }
1155     # endif
1156     # endif
1157    
1158     # ifndef yystpcpy
1159     # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1160     # define yystpcpy stpcpy
1161     # else
1162     /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1163     YYDEST. */
1164     static char *
1165     yystpcpy (char *yydest, const char *yysrc)
1166     {
1167     char *yyd = yydest;
1168     const char *yys = yysrc;
1169    
1170     while ((*yyd++ = *yys++) != '\0')
1171     continue;
1172    
1173     return yyd - 1;
1174     }
1175     # endif
1176     # endif
1177    
1178     # ifndef yytnamerr
1179     /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1180     quotes and backslashes, so that it's suitable for yyerror. The
1181     heuristic is that double-quoting is unnecessary unless the string
1182     contains an apostrophe, a comma, or backslash (other than
1183     backslash-backslash). YYSTR is taken from yytname. If YYRES is
1184     null, do not copy; instead, return the length of what the result
1185     would have been. */
1186     static YYSIZE_T
1187     yytnamerr (char *yyres, const char *yystr)
1188     {
1189     if (*yystr == '"')
1190     {
1191     YYSIZE_T yyn = 0;
1192     char const *yyp = yystr;
1193    
1194     for (;;)
1195 michael 5067 switch (*++yyp)
1196     {
1197     case '\'':
1198     case ',':
1199     goto do_not_strip_quotes;
1200 michael 5052
1201 michael 5067 case '\\':
1202     if (*++yyp != '\\')
1203     goto do_not_strip_quotes;
1204     /* Fall through. */
1205     default:
1206     if (yyres)
1207     yyres[yyn] = *yyp;
1208     yyn++;
1209     break;
1210 michael 5052
1211 michael 5067 case '"':
1212     if (yyres)
1213     yyres[yyn] = '\0';
1214     return yyn;
1215     }
1216 michael 5052 do_not_strip_quotes: ;
1217     }
1218    
1219     if (! yyres)
1220     return yystrlen (yystr);
1221    
1222     return yystpcpy (yyres, yystr) - yyres;
1223     }
1224     # endif
1225    
1226 michael 5067 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1227     about the unexpected token YYTOKEN for the state stack whose top is
1228     YYSSP.
1229    
1230     Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
1231     not large enough to hold the message. In that case, also set
1232     *YYMSG_ALLOC to the required number of bytes. Return 2 if the
1233     required number of bytes is too large to store. */
1234     static int
1235     yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1236     yytype_int16 *yyssp, int yytoken)
1237 michael 5052 {
1238 michael 5067 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1239     YYSIZE_T yysize = yysize0;
1240     enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1241     /* Internationalized format string. */
1242     const char *yyformat = YY_NULLPTR;
1243     /* Arguments of yyformat. */
1244     char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1245     /* Number of reported tokens (one for the "unexpected", one per
1246     "expected"). */
1247     int yycount = 0;
1248 michael 5052
1249 michael 5067 /* There are many possibilities here to consider:
1250     - If this state is a consistent state with a default action, then
1251     the only way this function was invoked is if the default action
1252     is an error action. In that case, don't check for expected
1253     tokens because there are none.
1254     - The only way there can be no lookahead present (in yychar) is if
1255     this state is a consistent state with a default action. Thus,
1256     detecting the absence of a lookahead is sufficient to determine
1257     that there is no unexpected or expected token to report. In that
1258     case, just report a simple "syntax error".
1259     - Don't assume there isn't a lookahead just because this state is a
1260     consistent state with a default action. There might have been a
1261     previous inconsistent state, consistent state with a non-default
1262     action, or user semantic action that manipulated yychar.
1263     - Of course, the expected token list depends on states to have
1264     correct lookahead information, and it depends on the parser not
1265     to perform extra reductions after fetching a lookahead from the
1266     scanner and before detecting a syntax error. Thus, state merging
1267     (from LALR or IELR) and default reductions corrupt the expected
1268     token list. However, the list is correct for canonical LR with
1269     one exception: it will still contain any token that will not be
1270     accepted due to an error action in a later state.
1271     */
1272     if (yytoken != YYEMPTY)
1273 michael 5052 {
1274 michael 5067 int yyn = yypact[*yyssp];
1275     yyarg[yycount++] = yytname[yytoken];
1276     if (!yypact_value_is_default (yyn))
1277     {
1278     /* Start YYX at -YYN if negative to avoid negative indexes in
1279     YYCHECK. In other words, skip the first -YYN actions for
1280     this state because they are default actions. */
1281     int yyxbegin = yyn < 0 ? -yyn : 0;
1282     /* Stay within bounds of both yycheck and yytname. */
1283     int yychecklim = YYLAST - yyn + 1;
1284     int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1285     int yyx;
1286 michael 5052
1287 michael 5067 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1288     if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1289     && !yytable_value_is_error (yytable[yyx + yyn]))
1290     {
1291     if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1292     {
1293     yycount = 1;
1294     yysize = yysize0;
1295     break;
1296     }
1297     yyarg[yycount++] = yytname[yyx];
1298     {
1299     YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1300     if (! (yysize <= yysize1
1301     && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1302     return 2;
1303     yysize = yysize1;
1304     }
1305     }
1306     }
1307     }
1308 michael 5052
1309 michael 5067 switch (yycount)
1310     {
1311     # define YYCASE_(N, S) \
1312     case N: \
1313     yyformat = S; \
1314     break
1315     YYCASE_(0, YY_("syntax error"));
1316     YYCASE_(1, YY_("syntax error, unexpected %s"));
1317     YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1318     YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1319     YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1320     YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1321     # undef YYCASE_
1322     }
1323 michael 5052
1324 michael 5067 {
1325     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1326     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1327     return 2;
1328     yysize = yysize1;
1329     }
1330 michael 5052
1331 michael 5067 if (*yymsg_alloc < yysize)
1332     {
1333     *yymsg_alloc = 2 * yysize;
1334     if (! (yysize <= *yymsg_alloc
1335     && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1336     *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1337     return 1;
1338     }
1339 michael 5052
1340 michael 5067 /* Avoid sprintf, as that infringes on the user's name space.
1341     Don't have undefined behavior even if the translation
1342     produced a string with the wrong number of "%s"s. */
1343     {
1344     char *yyp = *yymsg;
1345     int yyi = 0;
1346     while ((*yyp = *yyformat) != '\0')
1347     if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1348     {
1349     yyp += yytnamerr (yyp, yyarg[yyi++]);
1350     yyformat += 2;
1351     }
1352     else
1353     {
1354     yyp++;
1355     yyformat++;
1356     }
1357     }
1358     return 0;
1359 michael 5052 }
1360     #endif /* YYERROR_VERBOSE */
1361    
1362     /*-----------------------------------------------.
1363     | Release the memory associated to this symbol. |
1364     `-----------------------------------------------*/
1365    
1366     static void
1367     yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1368     {
1369     YYUSE (yyvaluep);
1370     if (!yymsg)
1371     yymsg = "Deleting";
1372     YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1373    
1374 michael 5067 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1375     YYUSE (yytype);
1376     YY_IGNORE_MAYBE_UNINITIALIZED_END
1377 michael 5052 }
1378    
1379    
1380    
1381    
1382 michael 5067 /* The lookahead symbol. */
1383 michael 5052 int yychar;
1384    
1385 michael 5067 /* The semantic value of the lookahead symbol. */
1386 michael 5052 YYSTYPE yylval;
1387     /* Number of syntax errors so far. */
1388     int yynerrs;
1389    
1390    
1391     /*----------.
1392     | yyparse. |
1393     `----------*/
1394    
1395     int
1396     yyparse (void)
1397 michael 5067 {
1398     int yystate;
1399     /* Number of tokens to shift before error messages enabled. */
1400     int yyerrstatus;
1401 michael 5052
1402 michael 5067 /* The stacks and their tools:
1403     'yyss': related to states.
1404     'yyvs': related to semantic values.
1405    
1406     Refer to the stacks through separate pointers, to allow yyoverflow
1407     to reallocate them elsewhere. */
1408    
1409     /* The state stack. */
1410     yytype_int16 yyssa[YYINITDEPTH];
1411     yytype_int16 *yyss;
1412     yytype_int16 *yyssp;
1413    
1414     /* The semantic value stack. */
1415     YYSTYPE yyvsa[YYINITDEPTH];
1416     YYSTYPE *yyvs;
1417     YYSTYPE *yyvsp;
1418    
1419     YYSIZE_T yystacksize;
1420    
1421 michael 5052 int yyn;
1422     int yyresult;
1423 michael 5067 /* Lookahead token as an internal (translated) token number. */
1424 michael 5052 int yytoken = 0;
1425 michael 5067 /* The variables used to return semantic value and location from the
1426     action routines. */
1427     YYSTYPE yyval;
1428    
1429 michael 5052 #if YYERROR_VERBOSE
1430     /* Buffer for error messages, and its allocated size. */
1431     char yymsgbuf[128];
1432     char *yymsg = yymsgbuf;
1433     YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1434     #endif
1435    
1436     #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1437    
1438     /* The number of symbols on the RHS of the reduced rule.
1439     Keep to zero when no symbol should be popped. */
1440     int yylen = 0;
1441    
1442 michael 5067 yyssp = yyss = yyssa;
1443     yyvsp = yyvs = yyvsa;
1444     yystacksize = YYINITDEPTH;
1445    
1446 michael 5052 YYDPRINTF ((stderr, "Starting parse\n"));
1447    
1448     yystate = 0;
1449     yyerrstatus = 0;
1450     yynerrs = 0;
1451 michael 5067 yychar = YYEMPTY; /* Cause a token to be read. */
1452 michael 5052 goto yysetstate;
1453    
1454     /*------------------------------------------------------------.
1455     | yynewstate -- Push a new state, which is found in yystate. |
1456     `------------------------------------------------------------*/
1457     yynewstate:
1458     /* In all cases, when you get here, the value and location stacks
1459     have just been pushed. So pushing a state here evens the stacks. */
1460     yyssp++;
1461    
1462     yysetstate:
1463     *yyssp = yystate;
1464    
1465     if (yyss + yystacksize - 1 <= yyssp)
1466     {
1467     /* Get the current used size of the three stacks, in elements. */
1468     YYSIZE_T yysize = yyssp - yyss + 1;
1469    
1470     #ifdef yyoverflow
1471     {
1472 michael 5067 /* Give user a chance to reallocate the stack. Use copies of
1473     these so that the &'s don't force the real ones into
1474     memory. */
1475     YYSTYPE *yyvs1 = yyvs;
1476     yytype_int16 *yyss1 = yyss;
1477 michael 5052
1478 michael 5067 /* Each stack pointer address is followed by the size of the
1479     data in use in that stack, in bytes. This used to be a
1480     conditional around just the two extra args, but that might
1481     be undefined if yyoverflow is a macro. */
1482     yyoverflow (YY_("memory exhausted"),
1483     &yyss1, yysize * sizeof (*yyssp),
1484     &yyvs1, yysize * sizeof (*yyvsp),
1485     &yystacksize);
1486 michael 5052
1487 michael 5067 yyss = yyss1;
1488     yyvs = yyvs1;
1489 michael 5052 }
1490     #else /* no yyoverflow */
1491     # ifndef YYSTACK_RELOCATE
1492     goto yyexhaustedlab;
1493     # else
1494     /* Extend the stack our own way. */
1495     if (YYMAXDEPTH <= yystacksize)
1496 michael 5067 goto yyexhaustedlab;
1497 michael 5052 yystacksize *= 2;
1498     if (YYMAXDEPTH < yystacksize)
1499 michael 5067 yystacksize = YYMAXDEPTH;
1500 michael 5052
1501     {
1502 michael 5067 yytype_int16 *yyss1 = yyss;
1503     union yyalloc *yyptr =
1504     (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1505     if (! yyptr)
1506     goto yyexhaustedlab;
1507     YYSTACK_RELOCATE (yyss_alloc, yyss);
1508     YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1509 michael 5052 # undef YYSTACK_RELOCATE
1510 michael 5067 if (yyss1 != yyssa)
1511     YYSTACK_FREE (yyss1);
1512 michael 5052 }
1513     # endif
1514     #endif /* no yyoverflow */
1515    
1516     yyssp = yyss + yysize - 1;
1517     yyvsp = yyvs + yysize - 1;
1518    
1519     YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1520 michael 5067 (unsigned long int) yystacksize));
1521 michael 5052
1522     if (yyss + yystacksize - 1 <= yyssp)
1523 michael 5067 YYABORT;
1524 michael 5052 }
1525    
1526     YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1527    
1528 michael 5067 if (yystate == YYFINAL)
1529     YYACCEPT;
1530    
1531 michael 5052 goto yybackup;
1532    
1533     /*-----------.
1534     | yybackup. |
1535     `-----------*/
1536     yybackup:
1537    
1538     /* Do appropriate processing given the current state. Read a
1539 michael 5067 lookahead token if we need one and don't already have one. */
1540 michael 5052
1541 michael 5067 /* First try to decide what to do without reference to lookahead token. */
1542 michael 5052 yyn = yypact[yystate];
1543 michael 5067 if (yypact_value_is_default (yyn))
1544 michael 5052 goto yydefault;
1545    
1546 michael 5067 /* Not known => get a lookahead token if don't already have one. */
1547 michael 5052
1548 michael 5067 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1549 michael 5052 if (yychar == YYEMPTY)
1550     {
1551     YYDPRINTF ((stderr, "Reading a token: "));
1552 michael 5067 yychar = yylex ();
1553 michael 5052 }
1554    
1555     if (yychar <= YYEOF)
1556     {
1557     yychar = yytoken = YYEOF;
1558     YYDPRINTF ((stderr, "Now at end of input.\n"));
1559     }
1560     else
1561     {
1562     yytoken = YYTRANSLATE (yychar);
1563     YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1564     }
1565    
1566     /* If the proper action on seeing token YYTOKEN is to reduce or to
1567     detect an error, take that action. */
1568     yyn += yytoken;
1569     if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1570     goto yydefault;
1571     yyn = yytable[yyn];
1572     if (yyn <= 0)
1573     {
1574 michael 5067 if (yytable_value_is_error (yyn))
1575     goto yyerrlab;
1576 michael 5052 yyn = -yyn;
1577     goto yyreduce;
1578     }
1579    
1580     /* Count tokens shifted since error; after three, turn off error
1581     status. */
1582     if (yyerrstatus)
1583     yyerrstatus--;
1584    
1585 michael 5067 /* Shift the lookahead token. */
1586 michael 5052 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1587    
1588 michael 5067 /* Discard the shifted token. */
1589     yychar = YYEMPTY;
1590 michael 5052
1591     yystate = yyn;
1592 michael 5067 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1593 michael 5052 *++yyvsp = yylval;
1594 michael 5067 YY_IGNORE_MAYBE_UNINITIALIZED_END
1595 michael 5052
1596     goto yynewstate;
1597    
1598    
1599     /*-----------------------------------------------------------.
1600     | yydefault -- do the default action for the current state. |
1601     `-----------------------------------------------------------*/
1602     yydefault:
1603     yyn = yydefact[yystate];
1604     if (yyn == 0)
1605     goto yyerrlab;
1606     goto yyreduce;
1607    
1608    
1609     /*-----------------------------.
1610     | yyreduce -- Do a reduction. |
1611     `-----------------------------*/
1612     yyreduce:
1613     /* yyn is the number of a rule to reduce with. */
1614     yylen = yyr2[yyn];
1615    
1616     /* If YYLEN is nonzero, implement the default value of the action:
1617 michael 5067 '$$ = $1'.
1618 michael 5052
1619     Otherwise, the following line sets YYVAL to garbage.
1620     This behavior is undocumented and Bison
1621     users should not rely upon it. Assigning to YYVAL
1622     unconditionally makes the parser a bit smaller, and it avoids a
1623     GCC warning that YYVAL may be used uninitialized. */
1624     yyval = yyvsp[1-yylen];
1625    
1626    
1627     YY_REDUCE_PRINT (yyn);
1628     switch (yyn)
1629     {
1630 michael 5080 case 10:
1631 michael 8181 #line 117 "config-parser.y" /* yacc.c:1646 */
1632 michael 5080 { (yyval.number) = 0; }
1633 michael 8181 #line 1634 "config-parser.c" /* yacc.c:1646 */
1634 michael 5080 break;
1635    
1636     case 12:
1637 michael 8181 #line 118 "config-parser.y" /* yacc.c:1646 */
1638 michael 5080 { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
1639 michael 8181 #line 1640 "config-parser.c" /* yacc.c:1646 */
1640 michael 5080 break;
1641    
1642     case 13:
1643 michael 8181 #line 119 "config-parser.y" /* yacc.c:1646 */
1644 michael 5080 { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
1645 michael 8181 #line 1646 "config-parser.c" /* yacc.c:1646 */
1646 michael 5080 break;
1647    
1648     case 14:
1649 michael 8181 #line 120 "config-parser.y" /* yacc.c:1646 */
1650 michael 5080 { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
1651 michael 8181 #line 1652 "config-parser.c" /* yacc.c:1646 */
1652 michael 5080 break;
1653    
1654     case 15:
1655 michael 8181 #line 121 "config-parser.y" /* yacc.c:1646 */
1656 michael 5080 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
1657 michael 8181 #line 1658 "config-parser.c" /* yacc.c:1646 */
1658 michael 5080 break;
1659    
1660     case 16:
1661 michael 8181 #line 122 "config-parser.y" /* yacc.c:1646 */
1662 michael 5080 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
1663 michael 8181 #line 1664 "config-parser.c" /* yacc.c:1646 */
1664 michael 5080 break;
1665    
1666     case 17:
1667 michael 8181 #line 123 "config-parser.y" /* yacc.c:1646 */
1668 michael 5080 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
1669 michael 8181 #line 1670 "config-parser.c" /* yacc.c:1646 */
1670 michael 5080 break;
1671    
1672     case 18:
1673 michael 8181 #line 124 "config-parser.y" /* yacc.c:1646 */
1674 michael 5080 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
1675 michael 8181 #line 1676 "config-parser.c" /* yacc.c:1646 */
1676 michael 5080 break;
1677    
1678     case 19:
1679 michael 8181 #line 125 "config-parser.y" /* yacc.c:1646 */
1680 michael 5080 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
1681 michael 8181 #line 1682 "config-parser.c" /* yacc.c:1646 */
1682 michael 5080 break;
1683    
1684     case 20:
1685 michael 8181 #line 128 "config-parser.y" /* yacc.c:1646 */
1686 michael 5080 { (yyval.number) = 0; }
1687 michael 8181 #line 1688 "config-parser.c" /* yacc.c:1646 */
1688 michael 5080 break;
1689    
1690     case 22:
1691 michael 8181 #line 129 "config-parser.y" /* yacc.c:1646 */
1692 michael 5080 { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
1693 michael 8181 #line 1694 "config-parser.c" /* yacc.c:1646 */
1694 michael 5080 break;
1695    
1696     case 23:
1697 michael 8181 #line 130 "config-parser.y" /* yacc.c:1646 */
1698 michael 5080 { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
1699 michael 8181 #line 1700 "config-parser.c" /* yacc.c:1646 */
1700 michael 5080 break;
1701    
1702     case 24:
1703 michael 8181 #line 131 "config-parser.y" /* yacc.c:1646 */
1704 michael 5080 { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
1705 michael 8181 #line 1706 "config-parser.c" /* yacc.c:1646 */
1706 michael 5080 break;
1707    
1708     case 25:
1709 michael 8181 #line 132 "config-parser.y" /* yacc.c:1646 */
1710 michael 5080 { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
1711 michael 8181 #line 1712 "config-parser.c" /* yacc.c:1646 */
1712 michael 5080 break;
1713    
1714 michael 7017 case 39:
1715 michael 8181 #line 154 "config-parser.y" /* yacc.c:1646 */
1716 michael 5052 {
1717 michael 5665 OptionsItem->negcache = (yyvsp[-1].number);
1718 michael 5052 }
1719 michael 8181 #line 1720 "config-parser.c" /* yacc.c:1646 */
1720 michael 5052 break;
1721    
1722 michael 7017 case 40:
1723 michael 8181 #line 159 "config-parser.y" /* yacc.c:1646 */
1724 michael 5052 {
1725 michael 5665 OptionsItem->negcache_rebuild = (yyvsp[-1].number);
1726 michael 5333 }
1727 michael 8181 #line 1728 "config-parser.c" /* yacc.c:1646 */
1728 michael 5333 break;
1729    
1730 michael 7017 case 41:
1731 michael 8181 #line 164 "config-parser.y" /* yacc.c:1646 */
1732 michael 5333 {
1733 michael 5665 xfree(OptionsItem->pidfile);
1734     OptionsItem->pidfile = xstrdup((yyvsp[-1].string));
1735 michael 5052 }
1736 michael 8181 #line 1737 "config-parser.c" /* yacc.c:1646 */
1737 michael 5052 break;
1738    
1739 michael 7017 case 42:
1740 michael 8181 #line 170 "config-parser.y" /* yacc.c:1646 */
1741 michael 5052 {
1742 michael 5665 OptionsItem->dns_fdlimit = (yyvsp[-1].number);
1743 michael 5052 }
1744 michael 8181 #line 1745 "config-parser.c" /* yacc.c:1646 */
1745 michael 5052 break;
1746    
1747 michael 7017 case 43:
1748 michael 8181 #line 175 "config-parser.y" /* yacc.c:1646 */
1749 michael 5052 {
1750 michael 6201 OptionsItem->dns_timeout = (yyvsp[-1].number);
1751     }
1752 michael 8181 #line 1753 "config-parser.c" /* yacc.c:1646 */
1753 michael 6201 break;
1754    
1755 michael 7017 case 44:
1756 michael 8181 #line 180 "config-parser.y" /* yacc.c:1646 */
1757 michael 6201 {
1758 michael 5665 xfree(OptionsItem->scanlog);
1759     OptionsItem->scanlog = xstrdup((yyvsp[-1].string));
1760 michael 5052 }
1761 michael 8181 #line 1762 "config-parser.c" /* yacc.c:1646 */
1762 michael 5052 break;
1763    
1764 michael 7017 case 45:
1765 michael 8181 #line 186 "config-parser.y" /* yacc.c:1646 */
1766 michael 5052 {
1767 michael 7017 OptionsItem->command_queue_size = (yyvsp[-1].number);
1768     }
1769 michael 8181 #line 1770 "config-parser.c" /* yacc.c:1646 */
1770 michael 7017 break;
1771    
1772     case 46:
1773 michael 8181 #line 191 "config-parser.y" /* yacc.c:1646 */
1774 michael 7017 {
1775     OptionsItem->command_interval = (yyvsp[-1].number);
1776     }
1777 michael 8181 #line 1778 "config-parser.c" /* yacc.c:1646 */
1778 michael 7017 break;
1779    
1780     case 47:
1781 michael 8181 #line 196 "config-parser.y" /* yacc.c:1646 */
1782 michael 7017 {
1783     OptionsItem->command_timeout = (yyvsp[-1].number);
1784     }
1785 michael 8181 #line 1786 "config-parser.c" /* yacc.c:1646 */
1786 michael 7017 break;
1787    
1788     case 70:
1789 michael 8181 #line 228 "config-parser.y" /* yacc.c:1646 */
1790 michael 7017 {
1791 michael 5665 xfree(IRCItem->away);
1792     IRCItem->away = xstrdup((yyvsp[-1].string));
1793 michael 5052 }
1794 michael 8181 #line 1795 "config-parser.c" /* yacc.c:1646 */
1795 michael 5052 break;
1796    
1797 michael 7017 case 71:
1798 michael 8181 #line 234 "config-parser.y" /* yacc.c:1646 */
1799 michael 5052 {
1800 michael 5665 xfree(IRCItem->kline);
1801     IRCItem->kline = xstrdup((yyvsp[-1].string));
1802 michael 5052 }
1803 michael 8181 #line 1804 "config-parser.c" /* yacc.c:1646 */
1804 michael 5052 break;
1805    
1806 michael 7017 case 72:
1807 michael 8181 #line 240 "config-parser.y" /* yacc.c:1646 */
1808 michael 5052 {
1809 michael 5665 xfree(IRCItem->mode);
1810     IRCItem->mode = xstrdup((yyvsp[-1].string));
1811 michael 5052 }
1812 michael 8181 #line 1813 "config-parser.c" /* yacc.c:1646 */
1813 michael 5052 break;
1814    
1815 michael 7017 case 73:
1816 michael 8181 #line 246 "config-parser.y" /* yacc.c:1646 */
1817 michael 5052 {
1818 michael 5665 xfree(IRCItem->nick);
1819     IRCItem->nick = xstrdup((yyvsp[-1].string));
1820 michael 5052 }
1821 michael 8181 #line 1822 "config-parser.c" /* yacc.c:1646 */
1822 michael 5052 break;
1823    
1824 michael 7017 case 74:
1825 michael 8181 #line 252 "config-parser.y" /* yacc.c:1646 */
1826 michael 5052 {
1827 michael 5665 xfree(IRCItem->nickserv);
1828     IRCItem->nickserv = xstrdup((yyvsp[-1].string));
1829 michael 5052 }
1830 michael 8181 #line 1831 "config-parser.c" /* yacc.c:1646 */
1831 michael 5052 break;
1832    
1833 michael 7017 case 75:
1834 michael 8181 #line 258 "config-parser.y" /* yacc.c:1646 */
1835 michael 5052 {
1836 michael 5665 xfree(IRCItem->oper);
1837     IRCItem->oper = xstrdup((yyvsp[-1].string));
1838 michael 5052 }
1839 michael 8181 #line 1840 "config-parser.c" /* yacc.c:1646 */
1840 michael 5052 break;
1841    
1842 michael 7017 case 76:
1843 michael 8181 #line 264 "config-parser.y" /* yacc.c:1646 */
1844 michael 5052 {
1845 michael 5665 xfree(IRCItem->password);
1846     IRCItem->password = xstrdup((yyvsp[-1].string));
1847 michael 5052 }
1848 michael 8181 #line 1849 "config-parser.c" /* yacc.c:1646 */
1849 michael 5052 break;
1850    
1851 michael 7017 case 77:
1852 michael 8181 #line 270 "config-parser.y" /* yacc.c:1646 */
1853 michael 5052 {
1854 michael 5665 node_t *node;
1855 michael 5052
1856 michael 5665 node = node_create(xstrdup((yyvsp[-1].string)));
1857     list_add(IRCItem->performs, node);
1858 michael 5052 }
1859 michael 8181 #line 1860 "config-parser.c" /* yacc.c:1646 */
1860 michael 5052 break;
1861    
1862 michael 7017 case 78:
1863 michael 8181 #line 278 "config-parser.y" /* yacc.c:1646 */
1864 michael 5052 {
1865 michael 5665 node_t *node;
1866 michael 5405
1867 michael 5665 node = node_create(xstrdup((yyvsp[-1].string)));
1868     list_add(IRCItem->notices, node);
1869 michael 5405 }
1870 michael 8181 #line 1871 "config-parser.c" /* yacc.c:1646 */
1871 michael 5405 break;
1872    
1873 michael 7017 case 79:
1874 michael 8181 #line 286 "config-parser.y" /* yacc.c:1646 */
1875 michael 5405 {
1876 michael 5665 IRCItem->port = (yyvsp[-1].number);
1877 michael 5052 }
1878 michael 8181 #line 1879 "config-parser.c" /* yacc.c:1646 */
1879 michael 5052 break;
1880    
1881 michael 7017 case 80:
1882 michael 8181 #line 291 "config-parser.y" /* yacc.c:1646 */
1883 michael 5052 {
1884 michael 5665 IRCItem->readtimeout = (yyvsp[-1].number);
1885 michael 5198 }
1886 michael 8181 #line 1887 "config-parser.c" /* yacc.c:1646 */
1887 michael 5198 break;
1888    
1889 michael 7017 case 81:
1890 michael 8181 #line 296 "config-parser.y" /* yacc.c:1646 */
1891 michael 5198 {
1892 michael 6081 IRCItem->reconnectinterval = (yyvsp[-1].number);
1893     }
1894 michael 8181 #line 1895 "config-parser.c" /* yacc.c:1646 */
1895 michael 6081 break;
1896    
1897 michael 7017 case 82:
1898 michael 8181 #line 301 "config-parser.y" /* yacc.c:1646 */
1899 michael 6081 {
1900 michael 5665 xfree(IRCItem->realname);
1901     IRCItem->realname = xstrdup((yyvsp[-1].string));
1902 michael 5052 }
1903 michael 8181 #line 1904 "config-parser.c" /* yacc.c:1646 */
1904 michael 5052 break;
1905    
1906 michael 7017 case 83:
1907 michael 8181 #line 307 "config-parser.y" /* yacc.c:1646 */
1908 michael 5052 {
1909 michael 5665 xfree(IRCItem->server);
1910     IRCItem->server = xstrdup((yyvsp[-1].string));
1911 michael 5052 }
1912 michael 8181 #line 1913 "config-parser.c" /* yacc.c:1646 */
1913 michael 5052 break;
1914    
1915 michael 7017 case 84:
1916 michael 8181 #line 313 "config-parser.y" /* yacc.c:1646 */
1917 michael 5052 {
1918 michael 5665 xfree(IRCItem->username);
1919     IRCItem->username = xstrdup((yyvsp[-1].string));
1920 michael 5052 }
1921 michael 8181 #line 1922 "config-parser.c" /* yacc.c:1646 */
1922 michael 5052 break;
1923    
1924 michael 7017 case 85:
1925 michael 8181 #line 319 "config-parser.y" /* yacc.c:1646 */
1926 michael 5052 {
1927 michael 5665 xfree(IRCItem->vhost);
1928     IRCItem->vhost = xstrdup((yyvsp[-1].string));
1929 michael 5052 }
1930 michael 8181 #line 1931 "config-parser.c" /* yacc.c:1646 */
1931 michael 5052 break;
1932    
1933 michael 7017 case 86:
1934 michael 8181 #line 325 "config-parser.y" /* yacc.c:1646 */
1935 michael 5052 {
1936 michael 5665 xfree(IRCItem->connregex);
1937     IRCItem->connregex = xstrdup((yyvsp[-1].string));
1938 michael 5052 }
1939 michael 8181 #line 1940 "config-parser.c" /* yacc.c:1646 */
1940 michael 5052 break;
1941    
1942 michael 7017 case 87:
1943 michael 8181 #line 333 "config-parser.y" /* yacc.c:1646 */
1944 michael 5052 {
1945 michael 5665 node_t *node;
1946     struct ChannelConf *item;
1947 michael 5052
1948 michael 6201 item = xcalloc(sizeof(*item));
1949 michael 5665 item->name = xstrdup("");
1950     item->key = xstrdup("");
1951     item->invite = xstrdup("");
1952 michael 5052
1953 michael 5665 node = node_create(item);
1954 michael 5052
1955 michael 5665 list_add(IRCItem->channels, node);
1956     tmp = item;
1957 michael 5052 }
1958 michael 8181 #line 1959 "config-parser.c" /* yacc.c:1646 */
1959 michael 5052 break;
1960    
1961 michael 7017 case 94:
1962 michael 8181 #line 357 "config-parser.y" /* yacc.c:1646 */
1963 michael 5052 {
1964 michael 5665 struct ChannelConf *item = tmp;
1965 michael 5052
1966 michael 5665 xfree(item->name);
1967     item->name = xstrdup((yyvsp[-1].string));
1968 michael 5052 }
1969 michael 8181 #line 1970 "config-parser.c" /* yacc.c:1646 */
1970 michael 5052 break;
1971    
1972 michael 7017 case 95:
1973 michael 8181 #line 365 "config-parser.y" /* yacc.c:1646 */
1974 michael 5052 {
1975 michael 5665 struct ChannelConf *item = tmp;
1976 michael 5052
1977 michael 5665 xfree(item->key);
1978     item->key = xstrdup((yyvsp[-1].string));
1979 michael 5052 }
1980 michael 8181 #line 1981 "config-parser.c" /* yacc.c:1646 */
1981 michael 5052 break;
1982    
1983 michael 7017 case 96:
1984 michael 8181 #line 373 "config-parser.y" /* yacc.c:1646 */
1985 michael 5052 {
1986 michael 5665 struct ChannelConf *item = tmp;
1987 michael 5052
1988 michael 5665 xfree(item->invite);
1989     item->invite = xstrdup((yyvsp[-1].string));
1990 michael 5052 }
1991 michael 8181 #line 1992 "config-parser.c" /* yacc.c:1646 */
1992 michael 5052 break;
1993    
1994 michael 7017 case 97:
1995 michael 8181 #line 383 "config-parser.y" /* yacc.c:1646 */
1996 michael 5052 {
1997 michael 5665 node_t *node;
1998     struct UserConf *item;
1999 michael 5052
2000 michael 6201 item = xcalloc(sizeof(*item));
2001 michael 5665 item->masks = list_create();
2002     item->scanners = list_create();
2003 michael 5052
2004 michael 5665 node = node_create(item);
2005 michael 5052
2006 michael 5665 list_add(UserItemList, node);
2007     tmp = item;
2008 michael 5052 }
2009 michael 8181 #line 2010 "config-parser.c" /* yacc.c:1646 */
2010 michael 5052 break;
2011    
2012 michael 7017 case 104:
2013 michael 8181 #line 406 "config-parser.y" /* yacc.c:1646 */
2014 michael 5052 {
2015 michael 5665 struct UserConf *item = tmp;
2016     node_t *node;
2017 michael 5052
2018 michael 5665 node = node_create(xstrdup((yyvsp[-1].string)));
2019 michael 5249
2020 michael 5665 list_add(item->masks, node);
2021 michael 5052 }
2022 michael 8181 #line 2023 "config-parser.c" /* yacc.c:1646 */
2023 michael 5052 break;
2024    
2025 michael 7017 case 105:
2026 michael 8181 #line 416 "config-parser.y" /* yacc.c:1646 */
2027 michael 5052 {
2028 michael 5665 struct UserConf *item = tmp;
2029     node_t *node;
2030 michael 5052
2031 michael 5665 node = node_create(xstrdup((yyvsp[-1].string)));
2032 michael 5249
2033 michael 5665 list_add(item->scanners, node);
2034 michael 5052 }
2035 michael 8181 #line 2036 "config-parser.c" /* yacc.c:1646 */
2036 michael 5052 break;
2037    
2038 michael 7017 case 106:
2039 michael 8181 #line 428 "config-parser.y" /* yacc.c:1646 */
2040 michael 5052 {
2041 michael 5665 node_t *node;
2042     struct ScannerConf *item, *olditem;
2043 michael 5052
2044 michael 6201 item = xcalloc(sizeof(*item));
2045 michael 5052
2046 michael 5665 /* Setup ScannerConf defaults */
2047     item->name = xstrdup("undefined");
2048 michael 5052
2049 michael 5665 if (LIST_SIZE(ScannerItemList) > 0)
2050     {
2051     olditem = ScannerItemList->tail->data;
2052 michael 5052
2053 michael 5665 item->vhost = xstrdup(olditem->vhost);
2054     item->fd = olditem->fd;
2055     item->target_ip = xstrdup(olditem->target_ip);
2056     item->target_port = olditem->target_port;
2057     item->timeout = olditem->timeout;
2058     item->max_read = olditem->max_read;
2059     item->target_string = olditem->target_string;
2060     item->target_string_created = 0;
2061     }
2062     else
2063     {
2064     item->vhost = xstrdup("0.0.0.0");
2065     item->fd = 512;
2066     item->target_ip = xstrdup("127.0.0.1");
2067     item->target_port = 6667;
2068     item->timeout = 30;
2069     item->max_read = 4096;
2070     item->target_string = list_create();
2071     item->target_string_created = 1;
2072     }
2073 michael 5052
2074 michael 5665 item->protocols = list_create();
2075 michael 5052
2076 michael 5665 node = node_create(item);
2077 michael 5052
2078 michael 5665 list_add(ScannerItemList, node);
2079     tmp = item;
2080 michael 5052 }
2081 michael 8181 #line 2082 "config-parser.c" /* yacc.c:1646 */
2082 michael 5052 break;
2083    
2084 michael 7017 case 120:
2085 michael 8181 #line 486 "config-parser.y" /* yacc.c:1646 */
2086 michael 5052 {
2087 michael 5665 struct ScannerConf *item = tmp;
2088    
2089     xfree(item->name);
2090     item->name = xstrdup((yyvsp[-1].string));
2091 michael 5052 }
2092 michael 8181 #line 2093 "config-parser.c" /* yacc.c:1646 */
2093 michael 5052 break;
2094    
2095 michael 7017 case 121:
2096 michael 8181 #line 494 "config-parser.y" /* yacc.c:1646 */
2097 michael 5052 {
2098 michael 5665 struct ScannerConf *item = tmp;
2099    
2100     xfree(item->vhost);
2101     item->vhost = xstrdup((yyvsp[-1].string));
2102 michael 5052 }
2103 michael 8181 #line 2104 "config-parser.c" /* yacc.c:1646 */
2104 michael 5052 break;
2105    
2106 michael 7017 case 122:
2107 michael 8181 #line 502 "config-parser.y" /* yacc.c:1646 */
2108 michael 5052 {
2109 michael 5665 struct ScannerConf *item = tmp;
2110    
2111     xfree(item->target_ip);
2112     item->target_ip = xstrdup((yyvsp[-1].string));
2113 michael 5052 }
2114 michael 8181 #line 2115 "config-parser.c" /* yacc.c:1646 */
2115 michael 5052 break;
2116    
2117 michael 7017 case 123:
2118 michael 8181 #line 510 "config-parser.y" /* yacc.c:1646 */
2119 michael 5052 {
2120 michael 5665 struct ScannerConf *item = tmp;
2121     node_t *node;
2122 michael 5052
2123 michael 7560 node = node_create(xstrdup((yyvsp[-1].string)));
2124 michael 5052
2125 michael 5665 if (item->target_string_created == 0)
2126     {
2127     item->target_string = list_create();
2128     item->target_string_created = 1;
2129     }
2130 michael 5052
2131 michael 5665 list_add(item->target_string, node);
2132 michael 5052 }
2133 michael 8181 #line 2134 "config-parser.c" /* yacc.c:1646 */
2134 michael 5052 break;
2135    
2136 michael 7017 case 124:
2137 michael 8181 #line 526 "config-parser.y" /* yacc.c:1646 */
2138 michael 5052 {
2139 michael 5665 struct ScannerConf *item = tmp;
2140    
2141     item->fd = (yyvsp[-1].number);
2142 michael 5052 }
2143 michael 8181 #line 2144 "config-parser.c" /* yacc.c:1646 */
2144 michael 5052 break;
2145    
2146 michael 7017 case 125:
2147 michael 8181 #line 533 "config-parser.y" /* yacc.c:1646 */
2148 michael 5052 {
2149 michael 5665 struct ScannerConf *item = tmp;
2150    
2151     item->target_port = (yyvsp[-1].number);
2152 michael 5052 }
2153 michael 8181 #line 2154 "config-parser.c" /* yacc.c:1646 */
2154 michael 5052 break;
2155    
2156 michael 7017 case 126:
2157 michael 8181 #line 540 "config-parser.y" /* yacc.c:1646 */
2158 michael 5052 {
2159 michael 5665 struct ScannerConf *item = tmp;
2160    
2161     item->timeout = (yyvsp[-1].number);
2162 michael 5052 }
2163 michael 8181 #line 2164 "config-parser.c" /* yacc.c:1646 */
2164 michael 5052 break;
2165    
2166 michael 7017 case 127:
2167 michael 8181 #line 547 "config-parser.y" /* yacc.c:1646 */
2168 michael 5052 {
2169 michael 5665 struct ScannerConf *item = tmp;
2170    
2171     item->max_read = (yyvsp[-1].number);
2172 michael 5052 }
2173 michael 8181 #line 2174 "config-parser.c" /* yacc.c:1646 */
2174 michael 5052 break;
2175    
2176 michael 7017 case 128:
2177 michael 8181 #line 554 "config-parser.y" /* yacc.c:1646 */
2178 michael 5052 {
2179 michael 5665 struct ProtocolConf *item;
2180     struct ScannerConf *item2;
2181     node_t *node;
2182 michael 5052
2183 michael 6201 item = xcalloc(sizeof(*item));
2184 michael 5665 item->type = (yyvsp[-3].number);
2185     item->port = (yyvsp[-1].number);
2186 michael 5052
2187 michael 5665 item2 = tmp;
2188    
2189     node = node_create(item);
2190     list_add(item2->protocols, node);
2191 michael 5052 }
2192 michael 8181 #line 2193 "config-parser.c" /* yacc.c:1646 */
2193 michael 5052 break;
2194    
2195 michael 7017 case 137:
2196 michael 8181 #line 583 "config-parser.y" /* yacc.c:1646 */
2197 michael 5052 {
2198 michael 5665 xfree(OpmItem->dnsbl_from);
2199     OpmItem->dnsbl_from = xstrdup((yyvsp[-1].string));
2200 michael 5052 }
2201 michael 8181 #line 2202 "config-parser.c" /* yacc.c:1646 */
2202 michael 5052 break;
2203    
2204 michael 7017 case 138:
2205 michael 8181 #line 589 "config-parser.y" /* yacc.c:1646 */
2206 michael 5052 {
2207 michael 5665 xfree(OpmItem->dnsbl_to);
2208     OpmItem->dnsbl_to = xstrdup((yyvsp[-1].string));
2209 michael 5052 }
2210 michael 8181 #line 2211 "config-parser.c" /* yacc.c:1646 */
2211 michael 5052 break;
2212    
2213 michael 7017 case 139:
2214 michael 8181 #line 595 "config-parser.y" /* yacc.c:1646 */
2215 michael 5052 {
2216 michael 5665 xfree(OpmItem->sendmail);
2217     OpmItem->sendmail = xstrdup((yyvsp[-1].string));
2218 michael 5052 }
2219 michael 8181 #line 2220 "config-parser.c" /* yacc.c:1646 */
2220 michael 5052 break;
2221    
2222 michael 7017 case 140:
2223 michael 8181 #line 603 "config-parser.y" /* yacc.c:1646 */
2224 michael 5052 {
2225 michael 5665 node_t *node;
2226     struct BlacklistConf *item;
2227 michael 5052
2228 michael 6201 item = xcalloc(sizeof(*item));
2229 michael 5665 item->name = xstrdup("");
2230     item->kline = xstrdup("");
2231 michael 8101 item->ipv4 = 1;
2232 michael 5665 item->ban_unknown = 0;
2233     item->type = A_BITMASK;
2234     item->reply = list_create();
2235 michael 5052
2236 michael 5665 node = node_create(item);
2237     list_add(OpmItem->blacklists, node);
2238 michael 5052
2239 michael 5665 tmp = item;
2240 michael 5052 }
2241 michael 8181 #line 2242 "config-parser.c" /* yacc.c:1646 */
2242 michael 5052 break;
2243    
2244 michael 8101 case 151:
2245 michael 8181 #line 634 "config-parser.y" /* yacc.c:1646 */
2246 michael 5052 {
2247 michael 5665 struct BlacklistConf *item = tmp;
2248 michael 5052
2249 michael 5665 xfree(item->name);
2250     item->name = xstrdup((yyvsp[-1].string));
2251 michael 5052 }
2252 michael 8181 #line 2253 "config-parser.c" /* yacc.c:1646 */
2253 michael 5052 break;
2254    
2255 michael 8101 case 152:
2256 michael 8181 #line 642 "config-parser.y" /* yacc.c:1646 */
2257 michael 5052 {
2258 michael 5665 struct BlacklistConf *item = tmp;
2259 michael 5052
2260 michael 8101 item->ipv4 = 0;
2261     item->ipv6 = 0;
2262     }
2263 michael 8181 #line 2264 "config-parser.c" /* yacc.c:1646 */
2264 michael 8101 break;
2265    
2266     case 156:
2267 michael 8181 #line 651 "config-parser.y" /* yacc.c:1646 */
2268 michael 8101 {
2269     struct BlacklistConf *item = tmp;
2270    
2271     item->ipv4 = 1;
2272     }
2273 michael 8181 #line 2274 "config-parser.c" /* yacc.c:1646 */
2274 michael 8101 break;
2275    
2276     case 157:
2277 michael 8181 #line 656 "config-parser.y" /* yacc.c:1646 */
2278 michael 8101 {
2279     struct BlacklistConf *item = tmp;
2280    
2281     item->ipv6 = 1;
2282     }
2283 michael 8181 #line 2284 "config-parser.c" /* yacc.c:1646 */
2284 michael 8101 break;
2285    
2286     case 158:
2287 michael 8181 #line 663 "config-parser.y" /* yacc.c:1646 */
2288 michael 8101 {
2289     struct BlacklistConf *item = tmp;
2290    
2291 michael 5665 xfree(item->kline);
2292     item->kline = xstrdup((yyvsp[-1].string));
2293 michael 5052 }
2294 michael 8181 #line 2295 "config-parser.c" /* yacc.c:1646 */
2295 michael 5052 break;
2296    
2297 michael 8101 case 159:
2298 michael 8181 #line 671 "config-parser.y" /* yacc.c:1646 */
2299 michael 5052 {
2300 michael 5665 struct BlacklistConf *item = tmp;
2301    
2302     if (strcmp("A record bitmask", (yyvsp[-1].string)) == 0)
2303     item->type = A_BITMASK;
2304     else if (strcmp("A record reply", (yyvsp[-1].string)) == 0)
2305     item->type = A_REPLY;
2306     else
2307     yyerror("Unknown blacklist type defined");
2308 michael 5052 }
2309 michael 8181 #line 2310 "config-parser.c" /* yacc.c:1646 */
2310 michael 5052 break;
2311    
2312 michael 8101 case 160:
2313 michael 8181 #line 683 "config-parser.y" /* yacc.c:1646 */
2314 michael 5052 {
2315 michael 6052 struct BlacklistConf *item = tmp;
2316 michael 5052
2317 michael 6052 item->ban_unknown = (yyvsp[-1].number);
2318 michael 5052 }
2319 michael 8181 #line 2320 "config-parser.c" /* yacc.c:1646 */
2320 michael 5052 break;
2321    
2322 michael 8101 case 164:
2323 michael 8181 #line 695 "config-parser.y" /* yacc.c:1646 */
2324 michael 5052 {
2325 michael 5665 struct BlacklistReplyConf *item;
2326     struct BlacklistConf *blacklist = tmp;
2327     node_t *node;
2328 michael 5052
2329 michael 6201 item = xcalloc(sizeof(*item));
2330 michael 5665 item->number = (yyvsp[-3].number);
2331     item->type = xstrdup((yyvsp[-1].string));
2332 michael 5052
2333 michael 5665 node = node_create(item);
2334     list_add(blacklist->reply, node);
2335 michael 5052 }
2336 michael 8181 #line 2337 "config-parser.c" /* yacc.c:1646 */
2337 michael 5052 break;
2338    
2339 michael 8101 case 170:
2340 michael 8181 #line 719 "config-parser.y" /* yacc.c:1646 */
2341 michael 5052 {
2342 michael 5665 node_t *node;
2343     node = node_create(xstrdup((yyvsp[-1].string)));
2344 michael 5052
2345 michael 5665 list_add(ExemptItem->masks, node);
2346 michael 5052 }
2347 michael 8181 #line 2348 "config-parser.c" /* yacc.c:1646 */
2348 michael 5052 break;
2349    
2350    
2351 michael 8181 #line 2352 "config-parser.c" /* yacc.c:1646 */
2352 michael 5052 default: break;
2353     }
2354 michael 5067 /* User semantic actions sometimes alter yychar, and that requires
2355     that yytoken be updated with the new translation. We take the
2356     approach of translating immediately before every use of yytoken.
2357     One alternative is translating here after every semantic action,
2358     but that translation would be missed if the semantic action invokes
2359     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
2360     if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
2361     incorrect destructor might then be invoked immediately. In the
2362     case of YYERROR or YYBACKUP, subsequent parser actions might lead
2363     to an incorrect destructor call or verbose syntax error message
2364     before the lookahead is translated. */
2365 michael 5052 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2366    
2367     YYPOPSTACK (yylen);
2368     yylen = 0;
2369     YY_STACK_PRINT (yyss, yyssp);
2370    
2371     *++yyvsp = yyval;
2372    
2373 michael 5067 /* Now 'shift' the result of the reduction. Determine what state
2374 michael 5052 that goes to, based on the state we popped back to and the rule
2375     number reduced by. */
2376    
2377     yyn = yyr1[yyn];
2378    
2379     yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2380     if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2381     yystate = yytable[yystate];
2382     else
2383     yystate = yydefgoto[yyn - YYNTOKENS];
2384    
2385     goto yynewstate;
2386    
2387    
2388 michael 5067 /*--------------------------------------.
2389     | yyerrlab -- here on detecting error. |
2390     `--------------------------------------*/
2391 michael 5052 yyerrlab:
2392 michael 5067 /* Make sure we have latest lookahead translation. See comments at
2393     user semantic actions for why this is necessary. */
2394     yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
2395    
2396 michael 5052 /* If not already recovering from an error, report this error. */
2397     if (!yyerrstatus)
2398     {
2399     ++yynerrs;
2400     #if ! YYERROR_VERBOSE
2401     yyerror (YY_("syntax error"));
2402     #else
2403 michael 5067 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
2404     yyssp, yytoken)
2405 michael 5052 {
2406 michael 5067 char const *yymsgp = YY_("syntax error");
2407     int yysyntax_error_status;
2408     yysyntax_error_status = YYSYNTAX_ERROR;
2409     if (yysyntax_error_status == 0)
2410     yymsgp = yymsg;
2411     else if (yysyntax_error_status == 1)
2412     {
2413     if (yymsg != yymsgbuf)
2414     YYSTACK_FREE (yymsg);
2415     yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
2416     if (!yymsg)
2417     {
2418     yymsg = yymsgbuf;
2419     yymsg_alloc = sizeof yymsgbuf;
2420     yysyntax_error_status = 2;
2421     }
2422     else
2423     {
2424     yysyntax_error_status = YYSYNTAX_ERROR;
2425     yymsgp = yymsg;
2426     }
2427     }
2428     yyerror (yymsgp);
2429     if (yysyntax_error_status == 2)
2430     goto yyexhaustedlab;
2431 michael 5052 }
2432 michael 5067 # undef YYSYNTAX_ERROR
2433 michael 5052 #endif
2434     }
2435    
2436    
2437    
2438     if (yyerrstatus == 3)
2439     {
2440 michael 5067 /* If just tried and failed to reuse lookahead token after an
2441     error, discard it. */
2442 michael 5052
2443     if (yychar <= YYEOF)
2444 michael 5067 {
2445     /* Return failure if at end of input. */
2446     if (yychar == YYEOF)
2447     YYABORT;
2448     }
2449 michael 5052 else
2450 michael 5067 {
2451     yydestruct ("Error: discarding",
2452     yytoken, &yylval);
2453     yychar = YYEMPTY;
2454     }
2455 michael 5052 }
2456    
2457 michael 5067 /* Else will try to reuse lookahead token after shifting the error
2458 michael 5052 token. */
2459     goto yyerrlab1;
2460    
2461    
2462     /*---------------------------------------------------.
2463     | yyerrorlab -- error raised explicitly by YYERROR. |
2464     `---------------------------------------------------*/
2465     yyerrorlab:
2466    
2467     /* Pacify compilers like GCC when the user code never invokes
2468     YYERROR and the label yyerrorlab therefore never appears in user
2469     code. */
2470     if (/*CONSTCOND*/ 0)
2471     goto yyerrorlab;
2472    
2473 michael 5067 /* Do not reclaim the symbols of the rule whose action triggered
2474 michael 5052 this YYERROR. */
2475     YYPOPSTACK (yylen);
2476     yylen = 0;
2477     YY_STACK_PRINT (yyss, yyssp);
2478     yystate = *yyssp;
2479     goto yyerrlab1;
2480    
2481    
2482     /*-------------------------------------------------------------.
2483     | yyerrlab1 -- common code for both syntax error and YYERROR. |
2484     `-------------------------------------------------------------*/
2485     yyerrlab1:
2486 michael 5067 yyerrstatus = 3; /* Each real token shifted decrements this. */
2487 michael 5052
2488     for (;;)
2489     {
2490     yyn = yypact[yystate];
2491 michael 5067 if (!yypact_value_is_default (yyn))
2492     {
2493     yyn += YYTERROR;
2494     if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2495     {
2496     yyn = yytable[yyn];
2497     if (0 < yyn)
2498     break;
2499     }
2500     }
2501 michael 5052
2502     /* Pop the current state because it cannot handle the error token. */
2503     if (yyssp == yyss)
2504 michael 5067 YYABORT;
2505 michael 5052
2506    
2507     yydestruct ("Error: popping",
2508 michael 5067 yystos[yystate], yyvsp);
2509 michael 5052 YYPOPSTACK (1);
2510     yystate = *yyssp;
2511     YY_STACK_PRINT (yyss, yyssp);
2512     }
2513    
2514 michael 5067 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2515 michael 5052 *++yyvsp = yylval;
2516 michael 5067 YY_IGNORE_MAYBE_UNINITIALIZED_END
2517 michael 5052
2518    
2519     /* Shift the error token. */
2520     YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2521    
2522     yystate = yyn;
2523     goto yynewstate;
2524    
2525    
2526     /*-------------------------------------.
2527     | yyacceptlab -- YYACCEPT comes here. |
2528     `-------------------------------------*/
2529     yyacceptlab:
2530     yyresult = 0;
2531     goto yyreturn;
2532    
2533     /*-----------------------------------.
2534     | yyabortlab -- YYABORT comes here. |
2535     `-----------------------------------*/
2536     yyabortlab:
2537     yyresult = 1;
2538     goto yyreturn;
2539    
2540 michael 5067 #if !defined yyoverflow || YYERROR_VERBOSE
2541 michael 5052 /*-------------------------------------------------.
2542     | yyexhaustedlab -- memory exhaustion comes here. |
2543     `-------------------------------------------------*/
2544     yyexhaustedlab:
2545     yyerror (YY_("memory exhausted"));
2546     yyresult = 2;
2547     /* Fall through. */
2548     #endif
2549    
2550     yyreturn:
2551 michael 5067 if (yychar != YYEMPTY)
2552     {
2553     /* Make sure we have latest lookahead translation. See comments at
2554     user semantic actions for why this is necessary. */
2555     yytoken = YYTRANSLATE (yychar);
2556     yydestruct ("Cleanup: discarding lookahead",
2557     yytoken, &yylval);
2558     }
2559     /* Do not reclaim the symbols of the rule whose action triggered
2560 michael 5052 this YYABORT or YYACCEPT. */
2561     YYPOPSTACK (yylen);
2562     YY_STACK_PRINT (yyss, yyssp);
2563     while (yyssp != yyss)
2564     {
2565     yydestruct ("Cleanup: popping",
2566 michael 5067 yystos[*yyssp], yyvsp);
2567 michael 5052 YYPOPSTACK (1);
2568     }
2569     #ifndef yyoverflow
2570     if (yyss != yyssa)
2571     YYSTACK_FREE (yyss);
2572     #endif
2573     #if YYERROR_VERBOSE
2574     if (yymsg != yymsgbuf)
2575     YYSTACK_FREE (yymsg);
2576     #endif
2577 michael 5067 return yyresult;
2578 michael 5052 }
2579 michael 8181 #line 726 "config-parser.y" /* yacc.c:1906 */
2580 michael 5052

Properties

Name Value
svn:eol-style native
svn:keywords Id