use ast_calloc for memory allocations
[asterisk/asterisk.git] / pbx / ael / ael.tab.c
1 /* A Bison parser, made by GNU Bison 2.1.  */
2
3 /* Skeleton parser for Yacc-like parsing with Bison,
4    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 2, or (at your option)
9    any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, Inc., 51 Franklin Street, Fifth Floor,
19    Boston, MA 02110-1301, USA.  */
20
21 /* As a special exception, when this file is copied by Bison into a
22    Bison output file, you may use that output file without restriction.
23    This special exception was added by the Free Software Foundation
24    in version 1.24 of Bison.  */
25
26 /* Written by Richard Stallman by simplifying the original so called
27    ``semantic'' parser.  */
28
29 /* All symbols defined below should begin with yy or YY, to avoid
30    infringing on user name space.  This should be done even for local
31    variables, as they might otherwise be expanded by user macros.
32    There are some unavoidable exceptions within include files to
33    define necessary library symbols; they are noted "INFRINGES ON
34    USER NAME SPACE" below.  */
35
36 /* Identify Bison output.  */
37 #define YYBISON 1
38
39 /* Bison version.  */
40 #define YYBISON_VERSION "2.1"
41
42 /* Skeleton name.  */
43 #define YYSKELETON_NAME "yacc.c"
44
45 /* Pure parsers.  */
46 #define YYPURE 1
47
48 /* Using locations.  */
49 #define YYLSP_NEEDED 1
50
51 /* Substitute the variable and function names.  */
52 #define yyparse ael_yyparse
53 #define yylex   ael_yylex
54 #define yyerror ael_yyerror
55 #define yylval  ael_yylval
56 #define yychar  ael_yychar
57 #define yydebug ael_yydebug
58 #define yynerrs ael_yynerrs
59 #define yylloc ael_yylloc
60
61 /* Tokens.  */
62 #ifndef YYTOKENTYPE
63 # define YYTOKENTYPE
64    /* Put the tokens into the symbol table, so that GDB and other debuggers
65       know about them.  */
66    enum yytokentype {
67      KW_CONTEXT = 258,
68      LC = 259,
69      RC = 260,
70      LP = 261,
71      RP = 262,
72      SEMI = 263,
73      EQ = 264,
74      COMMA = 265,
75      COLON = 266,
76      AMPER = 267,
77      BAR = 268,
78      AT = 269,
79      KW_MACRO = 270,
80      KW_GLOBALS = 271,
81      KW_IGNOREPAT = 272,
82      KW_SWITCH = 273,
83      KW_IF = 274,
84      KW_IFTIME = 275,
85      KW_ELSE = 276,
86      KW_RANDOM = 277,
87      KW_ABSTRACT = 278,
88      EXTENMARK = 279,
89      KW_GOTO = 280,
90      KW_JUMP = 281,
91      KW_RETURN = 282,
92      KW_BREAK = 283,
93      KW_CONTINUE = 284,
94      KW_REGEXTEN = 285,
95      KW_HINT = 286,
96      KW_FOR = 287,
97      KW_WHILE = 288,
98      KW_CASE = 289,
99      KW_PATTERN = 290,
100      KW_DEFAULT = 291,
101      KW_CATCH = 292,
102      KW_SWITCHES = 293,
103      KW_ESWITCHES = 294,
104      KW_INCLUDES = 295,
105      word = 296
106    };
107 #endif
108 /* Tokens.  */
109 #define KW_CONTEXT 258
110 #define LC 259
111 #define RC 260
112 #define LP 261
113 #define RP 262
114 #define SEMI 263
115 #define EQ 264
116 #define COMMA 265
117 #define COLON 266
118 #define AMPER 267
119 #define BAR 268
120 #define AT 269
121 #define KW_MACRO 270
122 #define KW_GLOBALS 271
123 #define KW_IGNOREPAT 272
124 #define KW_SWITCH 273
125 #define KW_IF 274
126 #define KW_IFTIME 275
127 #define KW_ELSE 276
128 #define KW_RANDOM 277
129 #define KW_ABSTRACT 278
130 #define EXTENMARK 279
131 #define KW_GOTO 280
132 #define KW_JUMP 281
133 #define KW_RETURN 282
134 #define KW_BREAK 283
135 #define KW_CONTINUE 284
136 #define KW_REGEXTEN 285
137 #define KW_HINT 286
138 #define KW_FOR 287
139 #define KW_WHILE 288
140 #define KW_CASE 289
141 #define KW_PATTERN 290
142 #define KW_DEFAULT 291
143 #define KW_CATCH 292
144 #define KW_SWITCHES 293
145 #define KW_ESWITCHES 294
146 #define KW_INCLUDES 295
147 #define word 296
148
149
150
151
152 /* Copy the first part of user declarations.  */
153 #line 1 "ael.y"
154
155 /*
156  * Asterisk -- An open source telephony toolkit.
157  *
158  * Copyright (C) 2006, Digium, Inc.
159  *
160  * Steve Murphy <murf@parsetree.com>
161  *
162  * See http://www.asterisk.org for more information about
163  * the Asterisk project. Please do not directly contact
164  * any of the maintainers of this project for assistance;
165  * the project provides a web site, mailing lists and IRC
166  * channels for your use.
167  *
168  * This program is free software, distributed under the terms of
169  * the GNU General Public License Version 2. See the LICENSE file
170  * at the top of the source tree.
171  */
172 /*! \file
173  *
174  * \brief Bison Grammar description of AEL2.
175  *
176  */
177 #include <stdio.h>
178 #include <stdlib.h>
179 #include <string.h>
180 #include "asterisk/logger.h"
181 #include "asterisk/utils.h"             /* ast_calloc() */
182 #include "asterisk/ael_structs.h"
183
184 static pval *npval(pvaltype type, int first_line, int last_line,
185         int first_column, int last_column);
186 static void linku1(pval *head, pval *tail);
187
188 void reset_parencount(yyscan_t yyscanner);
189 void reset_semicount(yyscan_t yyscanner);
190 void reset_argcount(yyscan_t yyscanner );
191
192 #define YYLEX_PARAM ((struct parse_io *)parseio)->scanner
193 #define YYERROR_VERBOSE 1
194
195 extern char *my_file;
196 #ifdef AAL_ARGCHECK
197 int ael_is_funcname(char *name);
198 #endif
199 static char *ael_token_subst(char *mess);
200
201
202
203 /* Enabling traces.  */
204 #ifndef YYDEBUG
205 # define YYDEBUG 0
206 #endif
207
208 /* Enabling verbose error messages.  */
209 #ifdef YYERROR_VERBOSE
210 # undef YYERROR_VERBOSE
211 # define YYERROR_VERBOSE 1
212 #else
213 # define YYERROR_VERBOSE 1
214 #endif
215
216 /* Enabling the token table.  */
217 #ifndef YYTOKEN_TABLE
218 # define YYTOKEN_TABLE 0
219 #endif
220
221 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
222 #line 51 "ael.y"
223 typedef union YYSTYPE {
224         char *str;
225         struct pval *pval;
226 } YYSTYPE;
227 /* Line 196 of yacc.c.  */
228 #line 229 "ael.tab.c"
229 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
230 # define YYSTYPE_IS_DECLARED 1
231 # define YYSTYPE_IS_TRIVIAL 1
232 #endif
233
234 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
235 typedef struct YYLTYPE
236 {
237   int first_line;
238   int first_column;
239   int last_line;
240   int last_column;
241 } YYLTYPE;
242 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
243 # define YYLTYPE_IS_DECLARED 1
244 # define YYLTYPE_IS_TRIVIAL 1
245 #endif
246
247
248 /* Copy the second part of user declarations.  */
249 #line 56 "ael.y"
250
251         /* declaring these AFTER the union makes things a lot simpler! */
252 void yyerror(YYLTYPE *locp, struct parse_io *parseio, char const *s);
253 int ael_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , void * yyscanner);
254
255
256
257 /* Line 219 of yacc.c.  */
258 #line 259 "ael.tab.c"
259
260 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
261 # define YYSIZE_T __SIZE_TYPE__
262 #endif
263 #if ! defined (YYSIZE_T) && defined (size_t)
264 # define YYSIZE_T size_t
265 #endif
266 #if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
267 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
268 # define YYSIZE_T size_t
269 #endif
270 #if ! defined (YYSIZE_T)
271 # define YYSIZE_T unsigned int
272 #endif
273
274 #ifndef YY_
275 # if YYENABLE_NLS
276 #  if ENABLE_NLS
277 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
278 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
279 #  endif
280 # endif
281 # ifndef YY_
282 #  define YY_(msgid) msgid
283 # endif
284 #endif
285
286 #if ! defined (yyoverflow) || YYERROR_VERBOSE
287
288 /* The parser invokes alloca or malloc; define the necessary symbols.  */
289
290 # ifdef YYSTACK_USE_ALLOCA
291 #  if YYSTACK_USE_ALLOCA
292 #   ifdef __GNUC__
293 #    define YYSTACK_ALLOC __builtin_alloca
294 #   else
295 #    define YYSTACK_ALLOC alloca
296 #    if defined (__STDC__) || defined (__cplusplus)
297 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
298 #     define YYINCLUDED_STDLIB_H
299 #    endif
300 #   endif
301 #  endif
302 # endif
303
304 # ifdef YYSTACK_ALLOC
305    /* Pacify GCC's `empty if-body' warning. */
306 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
307 #  ifndef YYSTACK_ALLOC_MAXIMUM
308     /* The OS might guarantee only one guard page at the bottom of the stack,
309        and a page size can be as small as 4096 bytes.  So we cannot safely
310        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
311        to allow for a few compiler-allocated temporary stack slots.  */
312 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
313 #  endif
314 # else
315 #  define YYSTACK_ALLOC YYMALLOC
316 #  define YYSTACK_FREE YYFREE
317 #  ifndef YYSTACK_ALLOC_MAXIMUM
318 #   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
319 #  endif
320 #  ifdef __cplusplus
321 extern "C" {
322 #  endif
323 #  ifndef YYMALLOC
324 #   define YYMALLOC malloc
325 #   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
326         && (defined (__STDC__) || defined (__cplusplus)))
327 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
328 #   endif
329 #  endif
330 #  ifndef YYFREE
331 #   define YYFREE free
332 #   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
333         && (defined (__STDC__) || defined (__cplusplus)))
334 void free (void *); /* INFRINGES ON USER NAME SPACE */
335 #   endif
336 #  endif
337 #  ifdef __cplusplus
338 }
339 #  endif
340 # endif
341 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
342
343
344 #if (! defined (yyoverflow) \
345      && (! defined (__cplusplus) \
346          || (defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \
347              && defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
348
349 /* A type that is properly aligned for any stack member.  */
350 union yyalloc
351 {
352   short int yyss;
353   YYSTYPE yyvs;
354     YYLTYPE yyls;
355 };
356
357 /* The size of the maximum gap between one aligned stack and the next.  */
358 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
359
360 /* The size of an array large to enough to hold all stacks, each with
361    N elements.  */
362 # define YYSTACK_BYTES(N) \
363      ((N) * (sizeof (short int) + sizeof (YYSTYPE) + sizeof (YYLTYPE))  \
364       + 2 * YYSTACK_GAP_MAXIMUM)
365
366 /* Copy COUNT objects from FROM to TO.  The source and destination do
367    not overlap.  */
368 # ifndef YYCOPY
369 #  if defined (__GNUC__) && 1 < __GNUC__
370 #   define YYCOPY(To, From, Count) \
371       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
372 #  else
373 #   define YYCOPY(To, From, Count)              \
374       do                                        \
375         {                                       \
376           YYSIZE_T yyi;                         \
377           for (yyi = 0; yyi < (Count); yyi++)   \
378             (To)[yyi] = (From)[yyi];            \
379         }                                       \
380       while (0)
381 #  endif
382 # endif
383
384 /* Relocate STACK from its old location to the new one.  The
385    local variables YYSIZE and YYSTACKSIZE give the old and new number of
386    elements in the stack, and YYPTR gives the new location of the
387    stack.  Advance YYPTR to a properly aligned location for the next
388    stack.  */
389 # define YYSTACK_RELOCATE(Stack)                                        \
390     do                                                                  \
391       {                                                                 \
392         YYSIZE_T yynewbytes;                                            \
393         YYCOPY (&yyptr->Stack, Stack, yysize);                          \
394         Stack = &yyptr->Stack;                                          \
395         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
396         yyptr += yynewbytes / sizeof (*yyptr);                          \
397       }                                                                 \
398     while (0)
399
400 #endif
401
402 #if defined (__STDC__) || defined (__cplusplus)
403    typedef signed char yysigned_char;
404 #else
405    typedef short int yysigned_char;
406 #endif
407
408 /* YYFINAL -- State number of the termination state. */
409 #define YYFINAL  17
410 /* YYLAST -- Last index in YYTABLE.  */
411 #define YYLAST   584
412
413 /* YYNTOKENS -- Number of terminals. */
414 #define YYNTOKENS  42
415 /* YYNNTS -- Number of nonterminals. */
416 #define YYNNTS  52
417 /* YYNRULES -- Number of rules. */
418 #define YYNRULES  151
419 /* YYNRULES -- Number of states. */
420 #define YYNSTATES  354
421
422 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
423 #define YYUNDEFTOK  2
424 #define YYMAXUTOK   296
425
426 #define YYTRANSLATE(YYX)                                                \
427   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
428
429 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
430 static const unsigned char yytranslate[] =
431 {
432        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
433        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
434        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
435        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
436        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
437        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
438        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
439        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
440        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
441        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
442        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
443        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
444        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
445        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
446        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
447        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
448        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
449        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
450        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
451        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
452        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
453        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
454        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
455        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
456        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
457        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
458        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
459       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
460       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
461       35,    36,    37,    38,    39,    40,    41
462 };
463
464 #if YYDEBUG
465 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
466    YYRHS.  */
467 static const unsigned short int yyprhs[] =
468 {
469        0,     0,     3,     5,     7,    10,    13,    15,    17,    19,
470       21,    27,    32,    38,    43,    50,    56,    63,    69,    78,
471       86,    94,   101,   106,   110,   112,   115,   118,   119,   125,
472      127,   131,   134,   136,   138,   141,   144,   146,   148,   150,
473      152,   154,   155,   161,   164,   166,   171,   175,   180,   188,
474      197,   199,   202,   205,   206,   212,   213,   219,   234,   245,
475      247,   250,   252,   255,   259,   261,   264,   268,   269,   276,
476      280,   281,   287,   291,   295,   298,   299,   300,   301,   314,
477      315,   322,   325,   329,   333,   336,   339,   340,   346,   349,
478      352,   355,   358,   363,   366,   371,   374,   379,   381,   383,
479      387,   391,   397,   403,   409,   415,   417,   421,   427,   431,
480      437,   441,   442,   448,   452,   453,   457,   461,   464,   466,
481      467,   471,   474,   476,   479,   484,   488,   493,   497,   500,
482      504,   506,   509,   511,   517,   522,   526,   531,   535,   538,
483      542,   545,   548,   563,   574,   578,   594,   606,   609,   611,
484      613,   618
485 };
486
487 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
488 static const yysigned_char yyrhs[] =
489 {
490       43,     0,    -1,    44,    -1,    45,    -1,    44,    45,    -1,
491       44,     1,    -1,    46,    -1,    47,    -1,    48,    -1,     8,
492       -1,     3,    41,     4,    53,     5,    -1,     3,    41,     4,
493        5,    -1,     3,    36,     4,    53,     5,    -1,     3,    36,
494        4,     5,    -1,    23,     3,    41,     4,    53,     5,    -1,
495       23,     3,    41,     4,     5,    -1,    23,     3,    36,     4,
496       53,     5,    -1,    23,     3,    36,     4,     5,    -1,    15,
497       41,     6,    52,     7,     4,    86,     5,    -1,    15,    41,
498        6,    52,     7,     4,     5,    -1,    15,    41,     6,     7,
499        4,    86,     5,    -1,    15,    41,     6,     7,     4,     5,
500       -1,    16,     4,    49,     5,    -1,    16,     4,     5,    -1,
501       50,    -1,    49,    50,    -1,    49,     1,    -1,    -1,    41,
502        9,    51,    41,     8,    -1,    41,    -1,    52,    10,    41,
503       -1,    52,     1,    -1,    54,    -1,     1,    -1,    53,    54,
504       -1,    53,     1,    -1,    57,    -1,    93,    -1,    88,    -1,
505       89,    -1,    56,    -1,    -1,    41,     9,    55,    41,     8,
506       -1,    41,     1,    -1,     8,    -1,    17,    24,    41,     8,
507       -1,    41,    24,    69,    -1,    30,    41,    24,    69,    -1,
508       31,     6,    65,     7,    41,    24,    69,    -1,    30,    31,
509        6,    65,     7,    41,    24,    69,    -1,    69,    -1,    58,
510       69,    -1,    58,     1,    -1,    -1,    19,     6,    60,    64,
511        7,    -1,    -1,    22,     6,    62,    64,     7,    -1,    20,
512        6,    65,    11,    65,    11,    65,    13,    65,    13,    65,
513       13,    65,     7,    -1,    20,     6,    41,    13,    65,    13,
514       65,    13,    65,     7,    -1,    41,    -1,    41,    41,    -1,
515       41,    -1,    41,    41,    -1,    41,    41,    41,    -1,    41,
516       -1,    41,    41,    -1,    41,    11,    41,    -1,    -1,    18,
517        6,    68,    41,     7,     4,    -1,     4,    58,     5,    -1,
518       -1,    41,     9,    70,    41,     8,    -1,    25,    76,     8,
519       -1,    26,    77,     8,    -1,    41,    11,    -1,    -1,    -1,
520       -1,    32,     6,    71,    41,     8,    72,    41,     8,    73,
521       41,     7,    69,    -1,    -1,    33,     6,    74,    41,     7,
522       69,    -1,    67,     5,    -1,    67,    84,     5,    -1,    12,
523       78,     8,    -1,    82,     8,    -1,    41,     8,    -1,    -1,
524       82,     9,    75,    41,     8,    -1,    28,     8,    -1,    27,
525        8,    -1,    29,     8,    -1,    61,    69,    -1,    61,    69,
526       21,    69,    -1,    59,    69,    -1,    59,    69,    21,    69,
527       -1,    63,    69,    -1,    63,    69,    21,    69,    -1,     8,
528       -1,    66,    -1,    66,    13,    66,    -1,    66,    10,    66,
529       -1,    66,    13,    66,    13,    66,    -1,    66,    10,    66,
530       10,    66,    -1,    36,    13,    66,    13,    66,    -1,    36,
531       10,    66,    10,    66,    -1,    66,    -1,    66,    10,    66,
532       -1,    66,    10,    41,    14,    41,    -1,    66,    14,    66,
533       -1,    66,    10,    41,    14,    36,    -1,    66,    14,    36,
534       -1,    -1,    41,     6,    79,    83,     7,    -1,    41,     6,
535        7,    -1,    -1,    41,    81,     6,    -1,    80,    83,     7,
536       -1,    80,     7,    -1,    64,    -1,    -1,    83,    10,    41,
537       -1,    83,    10,    -1,    85,    -1,    84,    85,    -1,    34,
538       41,    11,    58,    -1,    36,    11,    58,    -1,    35,    41,
539       11,    58,    -1,    34,    41,    11,    -1,    36,    11,    -1,
540       35,    41,    11,    -1,    87,    -1,    86,    87,    -1,    69,
541       -1,    37,    41,     4,    58,     5,    -1,    38,     4,    90,
542        5,    -1,    38,     4,     5,    -1,    39,     4,    90,     5,
543       -1,    39,     4,     5,    -1,    41,     8,    -1,    90,    41,
544        8,    -1,    90,     1,    -1,    92,     8,    -1,    92,    13,
545       65,    11,    65,    11,    65,    13,    65,    13,    65,    13,
546       65,     8,    -1,    92,    13,    41,    13,    65,    13,    65,
547       13,    65,     8,    -1,    91,    92,     8,    -1,    91,    92,
548       13,    65,    11,    65,    11,    65,    13,    65,    13,    65,
549       13,    65,     8,    -1,    91,    92,    13,    41,    13,    65,
550       13,    65,    13,    65,     8,    -1,    91,     1,    -1,    41,
551       -1,    36,    -1,    40,     4,    91,     5,    -1,    40,     4,
552        5,    -1
553 };
554
555 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
556 static const unsigned short int yyrline[] =
557 {
558        0,   130,   130,   133,   134,   145,   148,   149,   150,   151,
559      154,   159,   163,   168,   172,   178,   183,   189,   196,   199,
560      202,   205,   210,   213,   218,   219,   220,   223,   223,   229,
561      232,   237,   240,   241,   242,   245,   248,   249,   250,   251,
562      252,   253,   253,   257,   258,   261,   266,   270,   275,   280,
563      289,   290,   293,   296,   296,   301,   301,   306,   322,   342,
564      343,   349,   350,   355,   363,   364,   368,   374,   374,   379,
565      382,   382,   386,   389,   392,   395,   396,   397,   395,   403,
566      403,   407,   411,   416,   420,   424,   427,   427,   460,   462,
567      464,   466,   471,   477,   482,   488,   493,   499,   502,   503,
568      508,   513,   518,   523,   528,   535,   538,   541,   546,   551,
569      556,   563,   563,   566,   569,   569,   579,   585,   588,   589,
570      590,   591,   594,   595,   600,   601,   602,   603,   604,   605,
571      608,   609,   614,   615,   618,   619,   622,   623,   626,   627,
572      628,   631,   632,   648,   661,   662,   677,   690,   693,   694,
573      697,   700
574 };
575 #endif
576
577 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
578 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
579    First, the terminals, then, starting at YYNTOKENS, nonterminals. */
580 static const char *const yytname[] =
581 {
582   "$end", "error", "$undefined", "KW_CONTEXT", "LC", "RC", "LP", "RP",
583   "SEMI", "EQ", "COMMA", "COLON", "AMPER", "BAR", "AT", "KW_MACRO",
584   "KW_GLOBALS", "KW_IGNOREPAT", "KW_SWITCH", "KW_IF", "KW_IFTIME",
585   "KW_ELSE", "KW_RANDOM", "KW_ABSTRACT", "EXTENMARK", "KW_GOTO", "KW_JUMP",
586   "KW_RETURN", "KW_BREAK", "KW_CONTINUE", "KW_REGEXTEN", "KW_HINT",
587   "KW_FOR", "KW_WHILE", "KW_CASE", "KW_PATTERN", "KW_DEFAULT", "KW_CATCH",
588   "KW_SWITCHES", "KW_ESWITCHES", "KW_INCLUDES", "word", "$accept", "file",
589   "objects", "object", "context", "macro", "globals", "global_statements",
590   "global_statement", "@1", "arglist", "elements", "element", "@2",
591   "ignorepat", "extension", "statements", "if_head", "@3", "random_head",
592   "@4", "iftime_head", "word_list", "word3_list", "goto_word",
593   "switch_head", "@5", "statement", "@6", "@7", "@8", "@9", "@10", "@11",
594   "target", "jumptarget", "macro_call", "@12", "application_call_head",
595   "@13", "application_call", "eval_arglist", "case_statements",
596   "case_statement", "macro_statements", "macro_statement", "switches",
597   "eswitches", "switchlist", "includeslist", "includedname", "includes", 0
598 };
599 #endif
600
601 # ifdef YYPRINT
602 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
603    token YYLEX-NUM.  */
604 static const unsigned short int yytoknum[] =
605 {
606        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
607      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
608      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
609      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
610      295,   296
611 };
612 # endif
613
614 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
615 static const unsigned char yyr1[] =
616 {
617        0,    42,    43,    44,    44,    44,    45,    45,    45,    45,
618       46,    46,    46,    46,    46,    46,    46,    46,    47,    47,
619       47,    47,    48,    48,    49,    49,    49,    51,    50,    52,
620       52,    52,    53,    53,    53,    53,    54,    54,    54,    54,
621       54,    55,    54,    54,    54,    56,    57,    57,    57,    57,
622       58,    58,    58,    60,    59,    62,    61,    63,    63,    64,
623       64,    65,    65,    65,    66,    66,    66,    68,    67,    69,
624       70,    69,    69,    69,    69,    71,    72,    73,    69,    74,
625       69,    69,    69,    69,    69,    69,    75,    69,    69,    69,
626       69,    69,    69,    69,    69,    69,    69,    69,    76,    76,
627       76,    76,    76,    76,    76,    77,    77,    77,    77,    77,
628       77,    79,    78,    78,    81,    80,    82,    82,    83,    83,
629       83,    83,    84,    84,    85,    85,    85,    85,    85,    85,
630       86,    86,    87,    87,    88,    88,    89,    89,    90,    90,
631       90,    91,    91,    91,    91,    91,    91,    91,    92,    92,
632       93,    93
633 };
634
635 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
636 static const unsigned char yyr2[] =
637 {
638        0,     2,     1,     1,     2,     2,     1,     1,     1,     1,
639        5,     4,     5,     4,     6,     5,     6,     5,     8,     7,
640        7,     6,     4,     3,     1,     2,     2,     0,     5,     1,
641        3,     2,     1,     1,     2,     2,     1,     1,     1,     1,
642        1,     0,     5,     2,     1,     4,     3,     4,     7,     8,
643        1,     2,     2,     0,     5,     0,     5,    14,    10,     1,
644        2,     1,     2,     3,     1,     2,     3,     0,     6,     3,
645        0,     5,     3,     3,     2,     0,     0,     0,    12,     0,
646        6,     2,     3,     3,     2,     2,     0,     5,     2,     2,
647        2,     2,     4,     2,     4,     2,     4,     1,     1,     3,
648        3,     5,     5,     5,     5,     1,     3,     5,     3,     5,
649        3,     0,     5,     3,     0,     3,     3,     2,     1,     0,
650        3,     2,     1,     2,     4,     3,     4,     3,     2,     3,
651        1,     2,     1,     5,     4,     3,     4,     3,     2,     3,
652        2,     2,    14,    10,     3,    15,    11,     2,     1,     1,
653        4,     3
654 };
655
656 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
657    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
658    means the default is an error.  */
659 static const unsigned char yydefact[] =
660 {
661        0,     0,     9,     0,     0,     0,     0,     0,     3,     6,
662        7,     8,     0,     0,     0,     0,     0,     1,     5,     4,
663        0,     0,     0,    23,     0,     0,    24,     0,     0,    33,
664       13,    44,     0,     0,     0,     0,     0,     0,     0,     0,
665       32,    40,    36,    38,    39,    37,    11,     0,     0,    29,
666        0,    27,    26,    22,    25,     0,     0,     0,     0,     0,
667        0,     0,     0,     0,    43,    41,     0,    35,    12,    34,
668       10,     0,    31,     0,     0,     0,    17,     0,    15,     0,
669        0,     0,     0,    61,     0,   135,     0,     0,   137,     0,
670      151,   149,   148,     0,     0,     0,     0,    97,     0,     0,
671        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
672      114,     0,     0,     0,     0,    46,   119,     0,    21,     0,
673      132,     0,   130,     0,    30,     0,    16,    14,    45,     0,
674       47,    62,     0,   138,   140,   134,     0,   136,   147,   150,
675        0,   141,     0,     0,     0,    50,     0,     0,    67,    53,
676        0,    55,     0,    64,    98,     0,   105,     0,    89,    88,
677       90,    75,    79,    85,    70,    74,     0,    93,    91,    95,
678       81,     0,     0,     0,     0,   122,   117,    59,   118,     0,
679       84,    86,     0,    20,   131,    19,     0,    28,     0,    63,
680        0,   139,   144,     0,    61,     0,    42,    52,    69,    51,
681      111,    83,     0,     0,    61,     0,     0,     0,     0,     0,
682       65,     0,     0,    72,     0,     0,    73,     0,     0,     0,
683      115,     0,     0,     0,     0,     0,   128,    82,   123,    60,
684      116,   121,     0,     0,    18,     0,     0,    61,     0,     0,
685        0,   113,   119,     0,     0,     0,     0,     0,     0,     0,
686       66,   100,    99,    64,   106,   110,   108,     0,     0,     0,
687       94,    92,    96,   127,   129,     0,   120,     0,     0,     0,
688       48,     0,     0,     0,     0,     0,     0,    54,     0,     0,
689       56,     0,     0,     0,     0,     0,    76,     0,    71,     0,
690        0,    87,   133,    49,     0,     0,     0,     0,   112,    68,
691        0,     0,   104,   103,   102,   101,   109,   107,     0,    80,
692        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
693        0,     0,     0,    77,     0,     0,     0,     0,     0,     0,
694        0,     0,     0,   143,     0,    58,     0,     0,   146,     0,
695        0,     0,     0,     0,     0,     0,    78,     0,     0,     0,
696        0,   142,    57,   145
697 };
698
699 /* YYDEFGOTO[NTERM-NUM]. */
700 static const short int yydefgoto[] =
701 {
702       -1,     6,     7,     8,     9,    10,    11,    25,    26,    75,
703       50,    39,    40,    95,    41,    42,   144,   111,   203,   112,
704      206,   113,   178,    84,   154,   114,   202,   145,   219,   217,
705      308,   330,   218,   232,   155,   157,   147,   242,   116,   166,
706      117,   179,   174,   175,   121,   122,    43,    44,    87,    93,
707       94,    45
708 };
709
710 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
711    STATE-NUM.  */
712 #define YYPACT_NINF -215
713 static const short int yypact[] =
714 {
715      212,   127,  -215,   -35,    55,    23,    85,   561,  -215,  -215,
716     -215,  -215,    64,   118,   112,    13,   128,  -215,  -215,  -215,
717      157,   208,     2,  -215,   123,    19,  -215,   130,   137,  -215,
718     -215,  -215,   143,    43,   169,   181,   182,   189,   126,   284,
719     -215,  -215,  -215,  -215,  -215,  -215,  -215,   337,   196,  -215,
720      141,  -215,  -215,  -215,  -215,   342,   357,   135,   188,   177,
721      170,    22,    36,    29,  -215,  -215,   527,  -215,  -215,  -215,
722     -215,   423,  -215,   206,   191,   195,  -215,   384,  -215,   399,
723      210,   170,   527,   200,   215,  -215,   242,    51,  -215,    57,
724     -215,  -215,  -215,    12,   158,   220,   527,  -215,   223,   245,
725      250,   259,   262,   148,   229,   263,   265,   266,   269,   275,
726      251,   527,   527,   527,   156,  -215,    26,   145,  -215,   243,
727     -215,   449,  -215,   475,  -215,   279,  -215,  -215,  -215,   281,
728     -215,   252,   253,  -215,  -215,  -215,   283,  -215,  -215,  -215,
729      204,  -215,   254,   291,   278,  -215,   296,   300,  -215,  -215,
730      276,  -215,    69,    40,    95,   310,   114,   313,  -215,  -215,
731     -215,  -215,  -215,  -215,  -215,  -215,   323,   311,   318,   325,
732     -215,   290,   303,   340,   172,  -215,  -215,   307,  -215,   230,
733     -215,  -215,   348,  -215,  -215,  -215,   501,  -215,   312,  -215,
734      331,  -215,  -215,   315,    58,   346,  -215,  -215,  -215,  -215,
735      353,  -215,   320,   322,    76,   355,   322,   229,   229,   328,
736     -215,   229,   229,  -215,   329,   178,  -215,   330,   338,   343,
737     -215,   527,   527,   527,   375,   379,   527,  -215,  -215,  -215,
738     -215,   350,   352,   527,  -215,   370,   527,   108,   388,   170,
739      170,  -215,   322,   395,   396,   170,   170,   398,   354,   393,
740     -215,   400,   404,    50,  -215,  -215,  -215,   401,   405,   403,
741     -215,  -215,  -215,   527,   527,     3,  -215,   410,   308,   527,
742     -215,   170,   170,   406,   397,   235,   409,  -215,   407,   415,
743     -215,   229,   229,   229,   229,   190,  -215,   527,  -215,    68,
744      111,  -215,  -215,  -215,   408,   421,   170,   170,  -215,  -215,
745      170,   170,  -215,  -215,  -215,  -215,  -215,  -215,   392,  -215,
746      170,   170,   431,   433,   434,   445,   426,   446,   450,   170,
747      170,   170,   170,  -215,   170,   170,   428,   452,   455,   453,
748      429,   464,   460,  -215,   170,  -215,   170,   477,  -215,   170,
749      472,   476,   527,   478,   170,   170,  -215,   170,   480,   485,
750      488,  -215,  -215,  -215
751 };
752
753 /* YYPGOTO[NTERM-NUM].  */
754 static const short int yypgoto[] =
755 {
756     -215,  -215,  -215,   491,  -215,  -215,  -215,  -215,   474,  -215,
757     -215,   104,   -37,  -215,  -215,  -215,  -214,  -215,  -215,  -215,
758     -215,  -215,    60,   -67,  -101,  -215,  -215,   -66,  -215,  -215,
759     -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,
760     -215,   268,  -215,   341,   391,  -120,  -215,  -215,   456,  -215,
761      418,  -215
762 };
763
764 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
765    positive, shift that token.  If negative, reduce the rule which
766    number is the opposite.  If zero, do what YYDEFACT says.
767    If YYTABLE_NINF, syntax error.  */
768 #define YYTABLE_NINF -127
769 static const short int yytable[] =
770 {
771      115,   184,    69,   156,   197,   120,    14,    96,  -125,    48,
772       69,    97,   265,   138,   129,    98,   130,   139,    23,   268,
773       52,    99,   100,   101,    53,   102,    16,    85,   103,   104,
774      105,   106,   107,   176,    90,   108,   109,  -125,  -125,  -125,
775       69,    88,    69,    49,   110,   167,   168,   169,    91,   289,
776      290,   209,   134,    92,    24,   120,   135,   120,   134,    15,
777       24,   209,   137,    86,   285,    91,   184,   177,    20,   197,
778       92,   239,    96,  -124,    58,   195,    97,    86,   199,   207,
779       98,   210,   208,   205,    59,    17,    99,   100,   101,   245,
780      102,   210,   136,   103,   104,   105,   106,   107,   136,   131,
781      108,   109,  -124,  -124,  -124,   211,   248,   249,   212,   110,
782      251,   252,   197,   254,   256,    96,  -126,   131,    22,    97,
783      120,   271,    21,    98,   214,    47,   238,    64,   215,    99,
784      100,   101,    51,   102,    55,    65,   103,   104,   105,   106,
785      107,    56,    72,   108,   109,  -126,  -126,  -126,    73,   131,
786       66,    74,   110,   180,   181,   260,   261,   262,    29,    77,
787       79,   170,    30,    12,    27,    31,   141,    57,    13,    28,
788      270,   142,   273,   274,    32,    60,    80,   227,   278,   279,
789      302,   303,   304,   305,   152,    61,    62,    33,    34,   153,
790      171,   172,   173,    63,    81,    35,    36,    37,    38,   199,
791       71,    82,   199,   293,   294,   295,   171,   172,   173,    29,
792      123,    83,   192,    46,   255,     1,    31,   193,   128,   153,
793        2,   309,   132,   199,   199,    32,   306,     3,     4,   312,
794      313,   307,   124,   314,   315,     5,   125,   230,    33,    34,
795      231,   131,   298,   317,   318,   231,    35,    36,    37,    38,
796      133,   148,   326,   327,   328,   329,   149,   331,   332,   163,
797      164,   143,   165,   244,   146,   150,   247,   340,   151,   341,
798      153,   158,   343,   159,   160,   161,   346,   348,   349,   197,
799      350,   162,    96,   198,   182,    67,    97,   187,   188,    68,
800       98,   191,    31,   189,   190,   194,    99,   100,   101,   196,
801      102,    32,   200,   103,   104,   105,   106,   107,   201,   197,
802      108,   109,    96,   292,    33,    34,    97,   204,   213,   110,
803       98,   216,    35,    36,    37,    38,    99,   100,   101,   220,
804      102,   224,   221,   103,   104,   105,   106,   107,    67,   222,
805      108,   109,    70,    29,   225,    31,   223,    76,   229,   110,
806       31,   226,   233,   235,    32,   236,   237,   240,    29,    32,
807      241,   243,    78,   177,   281,    31,   246,    33,    34,   250,
808      253,   257,    33,    34,    32,    35,    36,    37,    38,   258,
809       35,    36,    37,    38,   259,    67,   263,    33,    34,   126,
810      264,   266,    31,   267,   269,    35,    36,    37,    38,   272,
811       67,    32,   276,   277,   127,   280,   282,    31,   297,   286,
812      283,   288,   287,   299,    33,    34,    32,   284,   291,   296,
813      300,   310,    35,    36,    37,    38,   301,    96,   118,    33,
814       34,    97,   311,   316,   323,    98,   333,    35,    36,    37,
815       38,    99,   100,   101,   319,   102,   320,   321,   103,   104,
816      105,   106,   107,    96,   183,   108,   109,    97,   322,   324,
817      119,    98,   335,   325,   110,   334,   336,    99,   100,   101,
818      337,   102,   338,   339,   103,   104,   105,   106,   107,    96,
819      185,   108,   109,    97,   342,   344,   119,    98,   351,   345,
820      110,   347,   352,    99,   100,   101,   353,   102,    19,    54,
821      103,   104,   105,   106,   107,    96,   234,   108,   109,    97,
822      275,   140,   119,    98,   186,   228,   110,     0,    89,    99,
823      100,   101,     0,   102,     0,     0,   103,   104,   105,   106,
824      107,    96,     0,   108,   109,    97,     0,     0,   119,    98,
825        0,     0,   110,     0,     0,    99,   100,   101,     0,   102,
826        0,     0,   103,   104,   105,   106,   107,     0,     0,   108,
827      109,    -2,    18,     0,     1,     0,     0,     0,   110,     2,
828        0,     0,     0,     0,     0,     0,     3,     4,     0,     0,
829        0,     0,     0,     0,     5
830 };
831
832 static const short int yycheck[] =
833 {
834       66,   121,    39,   104,     1,    71,    41,     4,     5,     7,
835       47,     8,   226,     1,    81,    12,    82,     5,     5,   233,
836        1,    18,    19,    20,     5,    22,     3,     5,    25,    26,
837       27,    28,    29,     7,     5,    32,    33,    34,    35,    36,
838       77,     5,    79,    41,    41,   111,   112,   113,    36,   263,
839      264,    11,     1,    41,    41,   121,     5,   123,     1,     4,
840       41,    11,     5,    41,    14,    36,   186,    41,     4,     1,
841       41,    13,     4,     5,    31,   142,     8,    41,   144,    10,
842       12,    41,    13,   150,    41,     0,    18,    19,    20,    13,
843       22,    41,    41,    25,    26,    27,    28,    29,    41,    41,
844       32,    33,    34,    35,    36,    10,   207,   208,    13,    41,
845      211,   212,     1,   214,   215,     4,     5,    41,     6,     8,
846      186,    13,     4,    12,    10,    21,   193,     1,    14,    18,
847       19,    20,     9,    22,     4,     9,    25,    26,    27,    28,
848       29,     4,     1,    32,    33,    34,    35,    36,     7,    41,
849       24,    10,    41,     8,     9,   221,   222,   223,     1,    55,
850       56,     5,     5,    36,    36,     8,     8,    24,    41,    41,
851      236,    13,   239,   240,    17,     6,    41,     5,   245,   246,
852      281,   282,   283,   284,    36,     4,     4,    30,    31,    41,
853       34,    35,    36,     4,     6,    38,    39,    40,    41,   265,
854        4,    24,   268,   269,   271,   272,    34,    35,    36,     1,
855        4,    41,     8,     5,    36,     3,     8,    13,     8,    41,
856        8,   287,     7,   289,   290,    17,    36,    15,    16,   296,
857      297,    41,    41,   300,   301,    23,    41,     7,    30,    31,
858       10,    41,     7,   310,   311,    10,    38,    39,    40,    41,
859        8,     6,   319,   320,   321,   322,     6,   324,   325,     8,
860        9,    41,    11,   203,    41,     6,   206,   334,     6,   336,
861       41,     8,   339,     8,     8,     6,   342,   344,   345,     1,
862      347,     6,     4,     5,    41,     1,     8,     8,     7,     5,
863       12,     8,     8,    41,    41,    41,    18,    19,    20,     8,
864       22,    17,     6,    25,    26,    27,    28,    29,     8,     1,
865       32,    33,     4,     5,    30,    31,     8,    41,     8,    41,
866       12,     8,    38,    39,    40,    41,    18,    19,    20,     6,
867       22,    41,    21,    25,    26,    27,    28,    29,     1,    21,
868       32,    33,     5,     1,    41,     8,    21,     5,    41,    41,
869        8,    11,     4,    41,    17,    24,    41,    11,     1,    17,
870        7,    41,     5,    41,    10,     8,    11,    30,    31,    41,
871       41,    41,    30,    31,    17,    38,    39,    40,    41,    41,
872       38,    39,    40,    41,    41,     1,    11,    30,    31,     5,
873       11,    41,     8,    41,    24,    38,    39,    40,    41,    11,
874        1,    17,     7,     7,     5,     7,    13,     8,    11,     8,
875       10,     8,     7,     4,    30,    31,    17,    13,     8,    13,
876       13,    13,    38,    39,    40,    41,    11,     4,     5,    30,
877       31,     8,    11,    41,     8,    12,     8,    38,    39,    40,
878       41,    18,    19,    20,    13,    22,    13,    13,    25,    26,
879       27,    28,    29,     4,     5,    32,    33,     8,    13,    13,
880       37,    12,     7,    13,    41,    13,    13,    18,    19,    20,
881       41,    22,     8,    13,    25,    26,    27,    28,    29,     4,
882        5,    32,    33,     8,     7,    13,    37,    12,     8,    13,
883       41,    13,     7,    18,    19,    20,     8,    22,     7,    25,
884       25,    26,    27,    28,    29,     4,     5,    32,    33,     8,
885      242,    93,    37,    12,   123,   174,    41,    -1,    62,    18,
886       19,    20,    -1,    22,    -1,    -1,    25,    26,    27,    28,
887       29,     4,    -1,    32,    33,     8,    -1,    -1,    37,    12,
888       -1,    -1,    41,    -1,    -1,    18,    19,    20,    -1,    22,
889       -1,    -1,    25,    26,    27,    28,    29,    -1,    -1,    32,
890       33,     0,     1,    -1,     3,    -1,    -1,    -1,    41,     8,
891       -1,    -1,    -1,    -1,    -1,    -1,    15,    16,    -1,    -1,
892       -1,    -1,    -1,    -1,    23
893 };
894
895 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
896    symbol of state STATE-NUM.  */
897 static const unsigned char yystos[] =
898 {
899        0,     3,     8,    15,    16,    23,    43,    44,    45,    46,
900       47,    48,    36,    41,    41,     4,     3,     0,     1,    45,
901        4,     4,     6,     5,    41,    49,    50,    36,    41,     1,
902        5,     8,    17,    30,    31,    38,    39,    40,    41,    53,
903       54,    56,    57,    88,    89,    93,     5,    53,     7,    41,
904       52,     9,     1,     5,    50,     4,     4,    24,    31,    41,
905        6,     4,     4,     4,     1,     9,    24,     1,     5,    54,
906        5,     4,     1,     7,    10,    51,     5,    53,     5,    53,
907       41,     6,    24,    41,    65,     5,    41,    90,     5,    90,
908        5,    36,    41,    91,    92,    55,     4,     8,    12,    18,
909       19,    20,    22,    25,    26,    27,    28,    29,    32,    33,
910       41,    59,    61,    63,    67,    69,    80,    82,     5,    37,
911       69,    86,    87,     4,    41,    41,     5,     5,     8,    65,
912       69,    41,     7,     8,     1,     5,    41,     5,     1,     5,
913       92,     8,    13,    41,    58,    69,    41,    78,     6,     6,
914        6,     6,    36,    41,    66,    76,    66,    77,     8,     8,
915        8,     6,     6,     8,     9,    11,    81,    69,    69,    69,
916        5,    34,    35,    36,    84,    85,     7,    41,    64,    83,
917        8,     9,    41,     5,    87,     5,    86,     8,     7,    41,
918       41,     8,     8,    13,    41,    65,     8,     1,     5,    69,
919        6,     8,    68,    60,    41,    65,    62,    10,    13,    11,
920       41,    10,    13,     8,    10,    14,     8,    71,    74,    70,
921        6,    21,    21,    21,    41,    41,    11,     5,    85,    41,
922        7,    10,    75,     4,     5,    41,    24,    41,    65,    13,
923       11,     7,    79,    41,    64,    13,    11,    64,    66,    66,
924       41,    66,    66,    41,    66,    36,    66,    41,    41,    41,
925       69,    69,    69,    11,    11,    58,    41,    41,    58,    24,
926       69,    13,    11,    65,    65,    83,     7,     7,    65,    65,
927        7,    10,    13,    10,    13,    14,     8,     7,     8,    58,
928       58,     8,     5,    69,    65,    65,    13,    11,     7,     4,
929       13,    11,    66,    66,    66,    66,    36,    41,    72,    69,
930       13,    11,    65,    65,    65,    65,    41,    65,    65,    13,
931       13,    13,    13,     8,    13,    13,    65,    65,    65,    65,
932       73,    65,    65,     8,    13,     7,    13,    41,     8,    13,
933       65,    65,     7,    65,    13,    13,    69,    13,    65,    65,
934       65,     8,     7,     8
935 };
936
937 #define yyerrok         (yyerrstatus = 0)
938 #define yyclearin       (yychar = YYEMPTY)
939 #define YYEMPTY         (-2)
940 #define YYEOF           0
941
942 #define YYACCEPT        goto yyacceptlab
943 #define YYABORT         goto yyabortlab
944 #define YYERROR         goto yyerrorlab
945
946
947 /* Like YYERROR except do call yyerror.  This remains here temporarily
948    to ease the transition to the new meaning of YYERROR, for GCC.
949    Once GCC version 2 has supplanted version 1, this can go.  */
950
951 #define YYFAIL          goto yyerrlab
952
953 #define YYRECOVERING()  (!!yyerrstatus)
954
955 #define YYBACKUP(Token, Value)                                  \
956 do                                                              \
957   if (yychar == YYEMPTY && yylen == 1)                          \
958     {                                                           \
959       yychar = (Token);                                         \
960       yylval = (Value);                                         \
961       yytoken = YYTRANSLATE (yychar);                           \
962       YYPOPSTACK;                                               \
963       goto yybackup;                                            \
964     }                                                           \
965   else                                                          \
966     {                                                           \
967       yyerror (&yylloc, parseio, YY_("syntax error: cannot back up")); \
968       YYERROR;                                                  \
969     }                                                           \
970 while (0)
971
972
973 #define YYTERROR        1
974 #define YYERRCODE       256
975
976
977 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
978    If N is 0, then set CURRENT to the empty location which ends
979    the previous symbol: RHS[0] (always defined).  */
980
981 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
982 #ifndef YYLLOC_DEFAULT
983 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
984     do                                                                  \
985       if (N)                                                            \
986         {                                                               \
987           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
988           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
989           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
990           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
991         }                                                               \
992       else                                                              \
993         {                                                               \
994           (Current).first_line   = (Current).last_line   =              \
995             YYRHSLOC (Rhs, 0).last_line;                                \
996           (Current).first_column = (Current).last_column =              \
997             YYRHSLOC (Rhs, 0).last_column;                              \
998         }                                                               \
999     while (0)
1000 #endif
1001
1002
1003 /* YY_LOCATION_PRINT -- Print the location on the stream.
1004    This macro was not mandated originally: define only if we know
1005    we won't break user code: when these are the locations we know.  */
1006
1007 #ifndef YY_LOCATION_PRINT
1008 # if YYLTYPE_IS_TRIVIAL
1009 #  define YY_LOCATION_PRINT(File, Loc)                  \
1010      fprintf (File, "%d.%d-%d.%d",                      \
1011               (Loc).first_line, (Loc).first_column,     \
1012               (Loc).last_line,  (Loc).last_column)
1013 # else
1014 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1015 # endif
1016 #endif
1017
1018
1019 /* YYLEX -- calling `yylex' with the right arguments.  */
1020
1021 #ifdef YYLEX_PARAM
1022 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
1023 #else
1024 # define YYLEX yylex (&yylval, &yylloc)
1025 #endif
1026
1027 /* Enable debugging if requested.  */
1028 #if YYDEBUG
1029
1030 # ifndef YYFPRINTF
1031 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1032 #  define YYFPRINTF fprintf
1033 # endif
1034
1035 # define YYDPRINTF(Args)                        \
1036 do {                                            \
1037   if (yydebug)                                  \
1038     YYFPRINTF Args;                             \
1039 } while (0)
1040
1041 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)          \
1042 do {                                                            \
1043   if (yydebug)                                                  \
1044     {                                                           \
1045       YYFPRINTF (stderr, "%s ", Title);                         \
1046       yysymprint (stderr,                                       \
1047                   Type, Value, Location);       \
1048       YYFPRINTF (stderr, "\n");                                 \
1049     }                                                           \
1050 } while (0)
1051
1052 /*------------------------------------------------------------------.
1053 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1054 | TOP (included).                                                   |
1055 `------------------------------------------------------------------*/
1056
1057 #if defined (__STDC__) || defined (__cplusplus)
1058 static void
1059 yy_stack_print (short int *bottom, short int *top)
1060 #else
1061 static void
1062 yy_stack_print (bottom, top)
1063     short int *bottom;
1064     short int *top;
1065 #endif
1066 {
1067   YYFPRINTF (stderr, "Stack now");
1068   for (/* Nothing. */; bottom <= top; ++bottom)
1069     YYFPRINTF (stderr, " %d", *bottom);
1070   YYFPRINTF (stderr, "\n");
1071 }
1072
1073 # define YY_STACK_PRINT(Bottom, Top)                            \
1074 do {                                                            \
1075   if (yydebug)                                                  \
1076     yy_stack_print ((Bottom), (Top));                           \
1077 } while (0)
1078
1079
1080 /*------------------------------------------------.
1081 | Report that the YYRULE is going to be reduced.  |
1082 `------------------------------------------------*/
1083
1084 #if defined (__STDC__) || defined (__cplusplus)
1085 static void
1086 yy_reduce_print (int yyrule)
1087 #else
1088 static void
1089 yy_reduce_print (yyrule)
1090     int yyrule;
1091 #endif
1092 {
1093   int yyi;
1094   unsigned long int yylno = yyrline[yyrule];
1095   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
1096              yyrule - 1, yylno);
1097   /* Print the symbols being reduced, and their result.  */
1098   for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
1099     YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
1100   YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
1101 }
1102
1103 # define YY_REDUCE_PRINT(Rule)          \
1104 do {                                    \
1105   if (yydebug)                          \
1106     yy_reduce_print (Rule);             \
1107 } while (0)
1108
1109 /* Nonzero means print parse trace.  It is left uninitialized so that
1110    multiple parsers can coexist.  */
1111 int yydebug;
1112 #else /* !YYDEBUG */
1113 # define YYDPRINTF(Args)
1114 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1115 # define YY_STACK_PRINT(Bottom, Top)
1116 # define YY_REDUCE_PRINT(Rule)
1117 #endif /* !YYDEBUG */
1118
1119
1120 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1121 #ifndef YYINITDEPTH
1122 # define YYINITDEPTH 200
1123 #endif
1124
1125 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1126    if the built-in stack extension method is used).
1127
1128    Do not make this value too large; the results are undefined if
1129    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1130    evaluated with infinite-precision integer arithmetic.  */
1131
1132 #ifndef YYMAXDEPTH
1133 # define YYMAXDEPTH 10000
1134 #endif
1135
1136 \f
1137
1138 #if YYERROR_VERBOSE
1139
1140 # ifndef yystrlen
1141 #  if defined (__GLIBC__) && defined (_STRING_H)
1142 #   define yystrlen strlen
1143 #  else
1144 /* Return the length of YYSTR.  */
1145 static YYSIZE_T
1146 #   if defined (__STDC__) || defined (__cplusplus)
1147 yystrlen (const char *yystr)
1148 #   else
1149 yystrlen (yystr)
1150      const char *yystr;
1151 #   endif
1152 {
1153   const char *yys = yystr;
1154
1155   while (*yys++ != '\0')
1156     continue;
1157
1158   return yys - yystr - 1;
1159 }
1160 #  endif
1161 # endif
1162
1163 # ifndef yystpcpy
1164 #  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1165 #   define yystpcpy stpcpy
1166 #  else
1167 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1168    YYDEST.  */
1169 static char *
1170 #   if defined (__STDC__) || defined (__cplusplus)
1171 yystpcpy (char *yydest, const char *yysrc)
1172 #   else
1173 yystpcpy (yydest, yysrc)
1174      char *yydest;
1175      const char *yysrc;
1176 #   endif
1177 {
1178   char *yyd = yydest;
1179   const char *yys = yysrc;
1180
1181   while ((*yyd++ = *yys++) != '\0')
1182     continue;
1183
1184   return yyd - 1;
1185 }
1186 #  endif
1187 # endif
1188
1189 # ifndef yytnamerr
1190 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1191    quotes and backslashes, so that it's suitable for yyerror.  The
1192    heuristic is that double-quoting is unnecessary unless the string
1193    contains an apostrophe, a comma, or backslash (other than
1194    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1195    null, do not copy; instead, return the length of what the result
1196    would have been.  */
1197 static YYSIZE_T
1198 yytnamerr (char *yyres, const char *yystr)
1199 {
1200   if (*yystr == '"')
1201     {
1202       size_t yyn = 0;
1203       char const *yyp = yystr;
1204
1205       for (;;)
1206         switch (*++yyp)
1207           {
1208           case '\'':
1209           case ',':
1210             goto do_not_strip_quotes;
1211
1212           case '\\':
1213             if (*++yyp != '\\')
1214               goto do_not_strip_quotes;
1215             /* Fall through.  */
1216           default:
1217             if (yyres)
1218               yyres[yyn] = *yyp;
1219             yyn++;
1220             break;
1221
1222           case '"':
1223             if (yyres)
1224               yyres[yyn] = '\0';
1225             return yyn;
1226           }
1227     do_not_strip_quotes: ;
1228     }
1229
1230   if (! yyres)
1231     return yystrlen (yystr);
1232
1233   return yystpcpy (yyres, yystr) - yyres;
1234 }
1235 # endif
1236
1237 #endif /* YYERROR_VERBOSE */
1238
1239 \f
1240
1241 #if YYDEBUG
1242 /*--------------------------------.
1243 | Print this symbol on YYOUTPUT.  |
1244 `--------------------------------*/
1245
1246 #if defined (__STDC__) || defined (__cplusplus)
1247 static void
1248 yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
1249 #else
1250 static void
1251 yysymprint (yyoutput, yytype, yyvaluep, yylocationp)
1252     FILE *yyoutput;
1253     int yytype;
1254     YYSTYPE *yyvaluep;
1255     YYLTYPE *yylocationp;
1256 #endif
1257 {
1258   /* Pacify ``unused variable'' warnings.  */
1259   (void) yyvaluep;
1260   (void) yylocationp;
1261
1262   if (yytype < YYNTOKENS)
1263     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1264   else
1265     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1266
1267   YY_LOCATION_PRINT (yyoutput, *yylocationp);
1268   YYFPRINTF (yyoutput, ": ");
1269
1270 # ifdef YYPRINT
1271   if (yytype < YYNTOKENS)
1272     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1273 # endif
1274   switch (yytype)
1275     {
1276       default:
1277         break;
1278     }
1279   YYFPRINTF (yyoutput, ")");
1280 }
1281
1282 #endif /* ! YYDEBUG */
1283 /*-----------------------------------------------.
1284 | Release the memory associated to this symbol.  |
1285 `-----------------------------------------------*/
1286
1287 #if defined (__STDC__) || defined (__cplusplus)
1288 static void
1289 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
1290 #else
1291 static void
1292 yydestruct (yymsg, yytype, yyvaluep, yylocationp)
1293     const char *yymsg;
1294     int yytype;
1295     YYSTYPE *yyvaluep;
1296     YYLTYPE *yylocationp;
1297 #endif
1298 {
1299   /* Pacify ``unused variable'' warnings.  */
1300   (void) yyvaluep;
1301   (void) yylocationp;
1302
1303   if (!yymsg)
1304     yymsg = "Deleting";
1305   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1306
1307   switch (yytype)
1308     {
1309       case 41: /* "word" */
1310 #line 125 "ael.y"
1311         { free((yyvaluep->str));};
1312 #line 1313 "ael.tab.c"
1313         break;
1314       case 44: /* "objects" */
1315 #line 122 "ael.y"
1316         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1317 #line 1318 "ael.tab.c"
1318         break;
1319       case 45: /* "object" */
1320 #line 122 "ael.y"
1321         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1322 #line 1323 "ael.tab.c"
1323         break;
1324       case 46: /* "context" */
1325 #line 122 "ael.y"
1326         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1327 #line 1328 "ael.tab.c"
1328         break;
1329       case 47: /* "macro" */
1330 #line 122 "ael.y"
1331         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1332 #line 1333 "ael.tab.c"
1333         break;
1334       case 48: /* "globals" */
1335 #line 122 "ael.y"
1336         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1337 #line 1338 "ael.tab.c"
1338         break;
1339       case 49: /* "global_statements" */
1340 #line 122 "ael.y"
1341         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1342 #line 1343 "ael.tab.c"
1343         break;
1344       case 50: /* "global_statement" */
1345 #line 122 "ael.y"
1346         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1347 #line 1348 "ael.tab.c"
1348         break;
1349       case 52: /* "arglist" */
1350 #line 122 "ael.y"
1351         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1352 #line 1353 "ael.tab.c"
1353         break;
1354       case 53: /* "elements" */
1355 #line 122 "ael.y"
1356         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1357 #line 1358 "ael.tab.c"
1358         break;
1359       case 54: /* "element" */
1360 #line 122 "ael.y"
1361         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1362 #line 1363 "ael.tab.c"
1363         break;
1364       case 56: /* "ignorepat" */
1365 #line 122 "ael.y"
1366         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1367 #line 1368 "ael.tab.c"
1368         break;
1369       case 57: /* "extension" */
1370 #line 122 "ael.y"
1371         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1372 #line 1373 "ael.tab.c"
1373         break;
1374       case 58: /* "statements" */
1375 #line 122 "ael.y"
1376         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1377 #line 1378 "ael.tab.c"
1378         break;
1379       case 59: /* "if_head" */
1380 #line 122 "ael.y"
1381         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1382 #line 1383 "ael.tab.c"
1383         break;
1384       case 61: /* "random_head" */
1385 #line 122 "ael.y"
1386         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1387 #line 1388 "ael.tab.c"
1388         break;
1389       case 63: /* "iftime_head" */
1390 #line 122 "ael.y"
1391         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1392 #line 1393 "ael.tab.c"
1393         break;
1394       case 64: /* "word_list" */
1395 #line 125 "ael.y"
1396         { free((yyvaluep->str));};
1397 #line 1398 "ael.tab.c"
1398         break;
1399       case 65: /* "word3_list" */
1400 #line 125 "ael.y"
1401         { free((yyvaluep->str));};
1402 #line 1403 "ael.tab.c"
1403         break;
1404       case 66: /* "goto_word" */
1405 #line 125 "ael.y"
1406         { free((yyvaluep->str));};
1407 #line 1408 "ael.tab.c"
1408         break;
1409       case 67: /* "switch_head" */
1410 #line 122 "ael.y"
1411         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1412 #line 1413 "ael.tab.c"
1413         break;
1414       case 69: /* "statement" */
1415 #line 122 "ael.y"
1416         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1417 #line 1418 "ael.tab.c"
1418         break;
1419       case 76: /* "target" */
1420 #line 122 "ael.y"
1421         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1422 #line 1423 "ael.tab.c"
1423         break;
1424       case 77: /* "jumptarget" */
1425 #line 122 "ael.y"
1426         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1427 #line 1428 "ael.tab.c"
1428         break;
1429       case 78: /* "macro_call" */
1430 #line 122 "ael.y"
1431         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1432 #line 1433 "ael.tab.c"
1433         break;
1434       case 80: /* "application_call_head" */
1435 #line 122 "ael.y"
1436         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1437 #line 1438 "ael.tab.c"
1438         break;
1439       case 82: /* "application_call" */
1440 #line 122 "ael.y"
1441         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1442 #line 1443 "ael.tab.c"
1443         break;
1444       case 83: /* "eval_arglist" */
1445 #line 122 "ael.y"
1446         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1447 #line 1448 "ael.tab.c"
1448         break;
1449       case 84: /* "case_statements" */
1450 #line 122 "ael.y"
1451         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1452 #line 1453 "ael.tab.c"
1453         break;
1454       case 85: /* "case_statement" */
1455 #line 122 "ael.y"
1456         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1457 #line 1458 "ael.tab.c"
1458         break;
1459       case 86: /* "macro_statements" */
1460 #line 122 "ael.y"
1461         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1462 #line 1463 "ael.tab.c"
1463         break;
1464       case 87: /* "macro_statement" */
1465 #line 122 "ael.y"
1466         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1467 #line 1468 "ael.tab.c"
1468         break;
1469       case 88: /* "switches" */
1470 #line 122 "ael.y"
1471         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1472 #line 1473 "ael.tab.c"
1473         break;
1474       case 89: /* "eswitches" */
1475 #line 122 "ael.y"
1476         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1477 #line 1478 "ael.tab.c"
1478         break;
1479       case 90: /* "switchlist" */
1480 #line 122 "ael.y"
1481         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1482 #line 1483 "ael.tab.c"
1483         break;
1484       case 91: /* "includeslist" */
1485 #line 122 "ael.y"
1486         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1487 #line 1488 "ael.tab.c"
1488         break;
1489       case 92: /* "includedname" */
1490 #line 125 "ael.y"
1491         { free((yyvaluep->str));};
1492 #line 1493 "ael.tab.c"
1493         break;
1494       case 93: /* "includes" */
1495 #line 122 "ael.y"
1496         { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
1497 #line 1498 "ael.tab.c"
1498         break;
1499
1500       default:
1501         break;
1502     }
1503 }
1504 \f
1505
1506 /* Prevent warnings from -Wmissing-prototypes.  */
1507
1508 #ifdef YYPARSE_PARAM
1509 # if defined (__STDC__) || defined (__cplusplus)
1510 int yyparse (void *YYPARSE_PARAM);
1511 # else
1512 int yyparse ();
1513 # endif
1514 #else /* ! YYPARSE_PARAM */
1515 #if defined (__STDC__) || defined (__cplusplus)
1516 int yyparse (struct parse_io *parseio);
1517 #else
1518 int yyparse ();
1519 #endif
1520 #endif /* ! YYPARSE_PARAM */
1521
1522
1523
1524
1525
1526
1527 /*----------.
1528 | yyparse.  |
1529 `----------*/
1530
1531 #ifdef YYPARSE_PARAM
1532 # if defined (__STDC__) || defined (__cplusplus)
1533 int yyparse (void *YYPARSE_PARAM)
1534 # else
1535 int yyparse (YYPARSE_PARAM)
1536   void *YYPARSE_PARAM;
1537 # endif
1538 #else /* ! YYPARSE_PARAM */
1539 #if defined (__STDC__) || defined (__cplusplus)
1540 int
1541 yyparse (struct parse_io *parseio)
1542 #else
1543 int
1544 yyparse (parseio)
1545     struct parse_io *parseio;
1546 #endif
1547 #endif
1548 {
1549   /* The look-ahead symbol.  */
1550 int yychar;
1551
1552 /* The semantic value of the look-ahead symbol.  */
1553 YYSTYPE yylval;
1554
1555 /* Number of syntax errors so far.  */
1556 int yynerrs;
1557 /* Location data for the look-ahead symbol.  */
1558 YYLTYPE yylloc;
1559
1560   int yystate;
1561   int yyn;
1562   int yyresult;
1563   /* Number of tokens to shift before error messages enabled.  */
1564   int yyerrstatus;
1565   /* Look-ahead token as an internal (translated) token number.  */
1566   int yytoken = 0;
1567
1568   /* Three stacks and their tools:
1569      `yyss': related to states,
1570      `yyvs': related to semantic values,
1571      `yyls': related to locations.
1572
1573      Refer to the stacks thru separate pointers, to allow yyoverflow
1574      to reallocate them elsewhere.  */
1575
1576   /* The state stack.  */
1577   short int yyssa[YYINITDEPTH];
1578   short int *yyss = yyssa;
1579   short int *yyssp;
1580
1581   /* The semantic value stack.  */
1582   YYSTYPE yyvsa[YYINITDEPTH];
1583   YYSTYPE *yyvs = yyvsa;
1584   YYSTYPE *yyvsp;
1585
1586   /* The location stack.  */
1587   YYLTYPE yylsa[YYINITDEPTH];
1588   YYLTYPE *yyls = yylsa;
1589   YYLTYPE *yylsp;
1590   /* The locations where the error started and ended. */
1591   YYLTYPE yyerror_range[2];
1592
1593 #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
1594
1595   YYSIZE_T yystacksize = YYINITDEPTH;
1596
1597   /* The variables used to return semantic value and location from the
1598      action routines.  */
1599   YYSTYPE yyval;
1600   YYLTYPE yyloc;
1601
1602   /* When reducing, the number of symbols on the RHS of the reduced
1603      rule.  */
1604   int yylen;
1605
1606   YYDPRINTF ((stderr, "Starting parse\n"));
1607
1608   yystate = 0;
1609   yyerrstatus = 0;
1610   yynerrs = 0;
1611   yychar = YYEMPTY;             /* Cause a token to be read.  */
1612
1613   /* Initialize stack pointers.
1614      Waste one element of value and location stack
1615      so that they stay on the same level as the state stack.
1616      The wasted elements are never initialized.  */
1617
1618   yyssp = yyss;
1619   yyvsp = yyvs;
1620   yylsp = yyls;
1621 #if YYLTYPE_IS_TRIVIAL
1622   /* Initialize the default location before parsing starts.  */
1623   yylloc.first_line   = yylloc.last_line   = 1;
1624   yylloc.first_column = yylloc.last_column = 0;
1625 #endif
1626
1627   goto yysetstate;
1628
1629 /*------------------------------------------------------------.
1630 | yynewstate -- Push a new state, which is found in yystate.  |
1631 `------------------------------------------------------------*/
1632  yynewstate:
1633   /* In all cases, when you get here, the value and location stacks
1634      have just been pushed. so pushing a state here evens the stacks.
1635      */
1636   yyssp++;
1637
1638  yysetstate:
1639   *yyssp = yystate;
1640
1641   if (yyss + yystacksize - 1 <= yyssp)
1642     {
1643       /* Get the current used size of the three stacks, in elements.  */
1644       YYSIZE_T yysize = yyssp - yyss + 1;
1645
1646 #ifdef yyoverflow
1647       {
1648         /* Give user a chance to reallocate the stack. Use copies of
1649            these so that the &'s don't force the real ones into
1650            memory.  */
1651         YYSTYPE *yyvs1 = yyvs;
1652         short int *yyss1 = yyss;
1653         YYLTYPE *yyls1 = yyls;
1654
1655         /* Each stack pointer address is followed by the size of the
1656            data in use in that stack, in bytes.  This used to be a
1657            conditional around just the two extra args, but that might
1658            be undefined if yyoverflow is a macro.  */
1659         yyoverflow (YY_("memory exhausted"),
1660                     &yyss1, yysize * sizeof (*yyssp),
1661                     &yyvs1, yysize * sizeof (*yyvsp),
1662                     &yyls1, yysize * sizeof (*yylsp),
1663                     &yystacksize);
1664         yyls = yyls1;
1665         yyss = yyss1;
1666         yyvs = yyvs1;
1667       }
1668 #else /* no yyoverflow */
1669 # ifndef YYSTACK_RELOCATE
1670       goto yyexhaustedlab;
1671 # else
1672       /* Extend the stack our own way.  */
1673       if (YYMAXDEPTH <= yystacksize)
1674         goto yyexhaustedlab;
1675       yystacksize *= 2;
1676       if (YYMAXDEPTH < yystacksize)
1677         yystacksize = YYMAXDEPTH;
1678
1679       {
1680         short int *yyss1 = yyss;
1681         union yyalloc *yyptr =
1682           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1683         if (! yyptr)
1684           goto yyexhaustedlab;
1685         YYSTACK_RELOCATE (yyss);
1686         YYSTACK_RELOCATE (yyvs);
1687         YYSTACK_RELOCATE (yyls);
1688 #  undef YYSTACK_RELOCATE
1689         if (yyss1 != yyssa)
1690           YYSTACK_FREE (yyss1);
1691       }
1692 # endif
1693 #endif /* no yyoverflow */
1694
1695       yyssp = yyss + yysize - 1;
1696       yyvsp = yyvs + yysize - 1;
1697       yylsp = yyls + yysize - 1;
1698
1699       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1700                   (unsigned long int) yystacksize));
1701
1702       if (yyss + yystacksize - 1 <= yyssp)
1703         YYABORT;
1704     }
1705
1706   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1707
1708   goto yybackup;
1709
1710 /*-----------.
1711 | yybackup.  |
1712 `-----------*/
1713 yybackup:
1714
1715 /* Do appropriate processing given the current state.  */
1716 /* Read a look-ahead token if we need one and don't already have one.  */
1717 /* yyresume: */
1718
1719   /* First try to decide what to do without reference to look-ahead token.  */
1720
1721   yyn = yypact[yystate];
1722   if (yyn == YYPACT_NINF)
1723     goto yydefault;
1724
1725   /* Not known => get a look-ahead token if don't already have one.  */
1726
1727   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
1728   if (yychar == YYEMPTY)
1729     {
1730       YYDPRINTF ((stderr, "Reading a token: "));
1731       yychar = YYLEX;
1732     }
1733
1734   if (yychar <= YYEOF)
1735     {
1736       yychar = yytoken = YYEOF;
1737       YYDPRINTF ((stderr, "Now at end of input.\n"));
1738     }
1739   else
1740     {
1741       yytoken = YYTRANSLATE (yychar);
1742       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1743     }
1744
1745   /* If the proper action on seeing token YYTOKEN is to reduce or to
1746      detect an error, take that action.  */
1747   yyn += yytoken;
1748   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1749     goto yydefault;
1750   yyn = yytable[yyn];
1751   if (yyn <= 0)
1752     {
1753       if (yyn == 0 || yyn == YYTABLE_NINF)
1754         goto yyerrlab;
1755       yyn = -yyn;
1756       goto yyreduce;
1757     }
1758
1759   if (yyn == YYFINAL)
1760     YYACCEPT;
1761
1762   /* Shift the look-ahead token.  */
1763   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1764
1765   /* Discard the token being shifted unless it is eof.  */
1766   if (yychar != YYEOF)
1767     yychar = YYEMPTY;
1768
1769   *++yyvsp = yylval;
1770   *++yylsp = yylloc;
1771
1772   /* Count tokens shifted since error; after three, turn off error
1773      status.  */
1774   if (yyerrstatus)
1775     yyerrstatus--;
1776
1777   yystate = yyn;
1778   goto yynewstate;
1779
1780
1781 /*-----------------------------------------------------------.
1782 | yydefault -- do the default action for the current state.  |
1783 `-----------------------------------------------------------*/
1784 yydefault:
1785   yyn = yydefact[yystate];
1786   if (yyn == 0)
1787     goto yyerrlab;
1788   goto yyreduce;
1789
1790
1791 /*-----------------------------.
1792 | yyreduce -- Do a reduction.  |
1793 `-----------------------------*/
1794 yyreduce:
1795   /* yyn is the number of a rule to reduce with.  */
1796   yylen = yyr2[yyn];
1797
1798   /* If YYLEN is nonzero, implement the default value of the action:
1799      `$$ = $1'.
1800
1801      Otherwise, the following line sets YYVAL to garbage.
1802      This behavior is undocumented and Bison
1803      users should not rely upon it.  Assigning to YYVAL
1804      unconditionally makes the parser a bit smaller, and it avoids a
1805      GCC warning that YYVAL may be used uninitialized.  */
1806   yyval = yyvsp[1-yylen];
1807
1808   /* Default location. */
1809   YYLLOC_DEFAULT (yyloc, yylsp - yylen, yylen);
1810   YY_REDUCE_PRINT (yyn);
1811   switch (yyn)
1812     {
1813         case 2:
1814 #line 130 "ael.y"
1815     { (yyval.pval) = parseio->pval = (yyvsp[0].pval); ;}
1816     break;
1817
1818   case 3:
1819 #line 133 "ael.y"
1820     {(yyval.pval)=(yyvsp[0].pval);;}
1821     break;
1822
1823   case 4:
1824 #line 135 "ael.y"
1825     {
1826                         if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {
1827                                 (yyval.pval)=(yyvsp[-1].pval);
1828                                 linku1((yyval.pval),(yyvsp[0].pval));
1829                         } else if ( (yyvsp[-1].pval) ) {
1830                                 (yyval.pval)=(yyvsp[-1].pval);
1831                         } else if ( (yyvsp[0].pval) ) {
1832                                 (yyval.pval)=(yyvsp[0].pval);
1833                         }
1834                 ;}
1835     break;
1836
1837   case 5:
1838 #line 145 "ael.y"
1839     {(yyval.pval)=(yyvsp[-1].pval);;}
1840     break;
1841
1842   case 6:
1843 #line 148 "ael.y"
1844     {(yyval.pval)=(yyvsp[0].pval);;}
1845     break;
1846
1847   case 7:
1848 #line 149 "ael.y"
1849     {(yyval.pval)=(yyvsp[0].pval);;}
1850     break;
1851
1852   case 8:
1853 #line 150 "ael.y"
1854     {(yyval.pval)=(yyvsp[0].pval);;}
1855     break;
1856
1857   case 9:
1858 #line 151 "ael.y"
1859     {(yyval.pval)=0;/* allow older docs to be read */;}
1860     break;
1861
1862   case 10:
1863 #line 154 "ael.y"
1864     {
1865                 (yyval.pval) = npval(PV_CONTEXT, (yylsp[-4]).first_line, (yylsp[0]).last_line,
1866                         (yylsp[-4]).first_column, (yylsp[0]).last_column);
1867                 (yyval.pval)->u1.str = (yyvsp[-3].str);
1868                 (yyval.pval)->u2.statements = (yyvsp[-1].pval); ;}
1869     break;
1870
1871   case 11:
1872 #line 159 "ael.y"
1873     {
1874                 (yyval.pval) = npval(PV_CONTEXT, (yylsp[-3]).first_line, (yylsp[0]).last_line,
1875                         (yylsp[-3]).first_column, (yylsp[0]).last_column);
1876                 (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
1877     break;
1878
1879   case 12:
1880 #line 163 "ael.y"
1881     {
1882                 (yyval.pval) = npval(PV_CONTEXT, (yylsp[-4]).first_line, (yylsp[0]).last_line,
1883                         (yylsp[-4]).first_column, (yylsp[0]).last_column);
1884                 (yyval.pval)->u1.str = strdup("default");
1885                 (yyval.pval)->u2.statements = (yyvsp[-1].pval); ;}
1886     break;
1887
1888   case 13:
1889 #line 168 "ael.y"
1890     {
1891                 (yyval.pval) = npval(PV_CONTEXT, (yylsp[-3]).first_line, (yylsp[0]).last_line,
1892                         (yylsp[-3]).first_column, (yylsp[0]).last_column);
1893                 (yyval.pval)->u1.str = strdup("default"); ;}
1894     break;
1895
1896   case 14:
1897 #line 172 "ael.y"
1898     {
1899                 (yyval.pval) = npval(PV_CONTEXT, (yylsp[-5]).first_line, (yylsp[0]).last_line,
1900                         (yylsp[-5]).first_column, (yylsp[0]).last_column);
1901                 (yyval.pval)->u1.str = (yyvsp[-3].str);
1902                 (yyval.pval)->u2.statements = (yyvsp[-1].pval);
1903                 (yyval.pval)->u3.abstract = 1; ;}
1904     break;
1905
1906   case 15:
1907 #line 178 "ael.y"
1908     {
1909                 (yyval.pval) = npval(PV_CONTEXT, (yylsp[-4]).first_line, (yylsp[0]).last_line,
1910                         (yylsp[-4]).first_column, (yylsp[0]).last_column);
1911                 (yyval.pval)->u1.str = (yyvsp[-2].str);
1912                 (yyval.pval)->u3.abstract = 1; ;}
1913     break;
1914
1915   case 16:
1916 #line 183 "ael.y"
1917     {
1918                 (yyval.pval) = npval(PV_CONTEXT, (yylsp[-5]).first_line, (yylsp[0]).last_line,
1919                         (yylsp[-5]).first_column, (yylsp[0]).last_column);
1920                 (yyval.pval)->u1.str = strdup("default");
1921                 (yyval.pval)->u2.statements = (yyvsp[-1].pval);
1922                 (yyval.pval)->u3.abstract = 1; ;}
1923     break;
1924
1925   case 17:
1926 #line 189 "ael.y"
1927     {
1928                 (yyval.pval) = npval(PV_CONTEXT, (yylsp[-4]).first_line, (yylsp[0]).last_line,
1929                         (yylsp[-4]).first_column, (yylsp[0]).last_column);
1930                 (yyval.pval)->u1.str = strdup("default");
1931                 (yyval.pval)->u3.abstract = 1; ;}
1932     break;
1933
1934   case 18:
1935 #line 196 "ael.y"
1936     {
1937                 (yyval.pval)=npval(PV_MACRO,(yylsp[-7]).first_line,(yylsp[0]).last_line, (yylsp[-7]).first_column, (yylsp[0]).last_column);
1938                 (yyval.pval)->u1.str = (yyvsp[-6].str); (yyval.pval)->u2.arglist = (yyvsp[-4].pval); (yyval.pval)->u3.macro_statements = (yyvsp[-1].pval); ;}
1939     break;
1940
1941   case 19:
1942 #line 199 "ael.y"
1943     {
1944                 (yyval.pval)=npval(PV_MACRO,(yylsp[-6]).first_line,(yylsp[0]).last_line, (yylsp[-6]).first_column, (yylsp[0]).last_column);
1945                 (yyval.pval)->u1.str = (yyvsp[-5].str); (yyval.pval)->u2.arglist = (yyvsp[-3].pval); ;}
1946     break;
1947
1948   case 20:
1949 #line 202 "ael.y"
1950     {
1951                 (yyval.pval)=npval(PV_MACRO,(yylsp[-6]).first_line,(yylsp[0]).last_line, (yylsp[-6]).first_column, (yylsp[0]).last_column);
1952                 (yyval.pval)->u1.str = (yyvsp[-5].str); (yyval.pval)->u3.macro_statements = (yyvsp[-1].pval); ;}
1953     break;
1954
1955   case 21:
1956 #line 205 "ael.y"
1957     {
1958                 (yyval.pval)=npval(PV_MACRO,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column);
1959                 (yyval.pval)->u1.str = (yyvsp[-4].str); /* pretty empty! */ ;}
1960     break;
1961
1962   case 22:
1963 #line 210 "ael.y"
1964     {
1965                 (yyval.pval)=npval(PV_GLOBALS,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column);
1966                 (yyval.pval)->u1.statements = (yyvsp[-1].pval);;}
1967     break;
1968
1969   case 23:
1970 #line 213 "ael.y"
1971     {
1972                 (yyval.pval)=npval(PV_GLOBALS,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
1973                 /* and that's all */ ;}
1974     break;
1975
1976   case 24:
1977 #line 218 "ael.y"
1978     {(yyval.pval)=(yyvsp[0].pval);;}
1979     break;
1980
1981   case 25:
1982 #line 219 "ael.y"
1983     {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));;}
1984     break;
1985
1986   case 26:
1987 #line 220 "ael.y"
1988     {(yyval.pval)=(yyvsp[-1].pval);;}
1989     break;
1990
1991   case 27:
1992 #line 223 "ael.y"
1993     { reset_semicount(parseio->scanner); ;}
1994     break;
1995
1996   case 28:
1997 #line 223 "ael.y"
1998     {
1999                 (yyval.pval)=npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
2000                 (yyval.pval)->u1.str = (yyvsp[-4].str);
2001                 (yyval.pval)->u2.val = (yyvsp[-1].str); ;}
2002     break;
2003
2004   case 29:
2005 #line 229 "ael.y"
2006     {
2007                 (yyval.pval)= npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2008                 (yyval.pval)->u1.str = (yyvsp[0].str); ;}
2009     break;
2010
2011   case 30:
2012 #line 232 "ael.y"
2013     {
2014                 pval *z = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2015                 z->u1.str = (yyvsp[0].str);
2016                 (yyval.pval)=(yyvsp[-2].pval);
2017                 linku1((yyval.pval),z); ;}
2018     break;
2019
2020   case 31:
2021 #line 237 "ael.y"
2022     {(yyval.pval)=(yyvsp[-1].pval);;}
2023     break;
2024
2025   case 32:
2026 #line 240 "ael.y"
2027     { (yyval.pval)=(yyvsp[0].pval);;}
2028     break;
2029
2030   case 33:
2031 #line 241 "ael.y"
2032     {(yyval.pval)=0;;}
2033     break;
2034
2035   case 34:
2036 #line 242 "ael.y"
2037     { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
2038                                 else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
2039                                 else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
2040     break;
2041
2042   case 35:
2043 #line 245 "ael.y"
2044     { (yyval.pval)=(yyvsp[-1].pval);;}
2045     break;
2046
2047   case 36:
2048 #line 248 "ael.y"
2049     {(yyval.pval)=(yyvsp[0].pval);;}
2050     break;
2051
2052   case 37:
2053 #line 249 "ael.y"
2054     {(yyval.pval)=(yyvsp[0].pval);;}
2055     break;
2056
2057   case 38:
2058 #line 250 "ael.y"
2059     {(yyval.pval)=(yyvsp[0].pval);;}
2060     break;
2061
2062   case 39:
2063 #line 251 "ael.y"
2064     {(yyval.pval)=(yyvsp[0].pval);;}
2065     break;
2066
2067   case 40:
2068 #line 252 "ael.y"
2069     {(yyval.pval)=(yyvsp[0].pval);;}
2070     break;
2071
2072   case 41:
2073 #line 253 "ael.y"
2074     { reset_semicount(parseio->scanner); ;}
2075     break;
2076
2077   case 42:
2078 #line 253 "ael.y"
2079     {
2080                 (yyval.pval)=npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
2081                 (yyval.pval)->u1.str = (yyvsp[-4].str);
2082                 (yyval.pval)->u2.val = (yyvsp[-1].str); ;}
2083     break;
2084
2085   case 43:
2086 #line 257 "ael.y"
2087     {free((yyvsp[-1].str)); (yyval.pval)=0;;}
2088     break;
2089
2090   case 44:
2091 #line 258 "ael.y"
2092     {(yyval.pval)=0;/* allow older docs to be read */;}
2093     break;
2094
2095   case 45:
2096 #line 261 "ael.y"
2097     {
2098                 (yyval.pval)=npval(PV_IGNOREPAT,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column);
2099                 (yyval.pval)->u1.str = (yyvsp[-1].str);;}
2100     break;
2101
2102   case 46:
2103 #line 266 "ael.y"
2104     {
2105                 (yyval.pval) = npval(PV_EXTENSION,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2106                 (yyval.pval)->u1.str = (yyvsp[-2].str);
2107                 (yyval.pval)->u2.statements = (yyvsp[0].pval); ;}
2108     break;
2109
2110   case 47:
2111 #line 270 "ael.y"
2112     {
2113                 (yyval.pval) = npval(PV_EXTENSION,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column);
2114                 (yyval.pval)->u1.str = (yyvsp[-2].str);
2115                 (yyval.pval)->u2.statements = (yyvsp[0].pval);
2116                 (yyval.pval)->u4.regexten=1;;}
2117     break;
2118
2119   case 48:
2120 #line 275 "ael.y"
2121     {
2122                 (yyval.pval) = npval(PV_EXTENSION,(yylsp[-6]).first_line,(yylsp[0]).last_line, (yylsp[-6]).first_column, (yylsp[0]).last_column);
2123                 (yyval.pval)->u1.str = (yyvsp[-2].str);
2124                 (yyval.pval)->u2.statements = (yyvsp[0].pval);
2125                 (yyval.pval)->u3.hints = (yyvsp[-4].str);;}
2126     break;
2127
2128   case 49:
2129 #line 280 "ael.y"
2130     {
2131                 (yyval.pval) = npval(PV_EXTENSION,(yylsp[-7]).first_line,(yylsp[0]).last_line, (yylsp[-7]).first_column, (yylsp[0]).last_column);
2132                 (yyval.pval)->u1.str = (yyvsp[-2].str);
2133                 (yyval.pval)->u2.statements = (yyvsp[0].pval);
2134                 (yyval.pval)->u4.regexten=1;
2135                 (yyval.pval)->u3.hints = (yyvsp[-4].str);;}
2136     break;
2137
2138   case 50:
2139 #line 289 "ael.y"
2140     {(yyval.pval)=(yyvsp[0].pval);;}
2141     break;
2142
2143   case 51:
2144 #line 290 "ael.y"
2145     {if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
2146                                                  else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
2147                                                  else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
2148     break;
2149
2150   case 52:
2151 #line 293 "ael.y"
2152     {(yyval.pval)=(yyvsp[-1].pval);;}
2153     break;
2154
2155   case 53:
2156 #line 296 "ael.y"
2157     { reset_parencount(parseio->scanner); ;}
2158     break;
2159
2160   case 54:
2161 #line 296 "ael.y"
2162     {
2163                 (yyval.pval)= npval(PV_IF,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
2164                 (yyval.pval)->u1.str = (yyvsp[-1].str); ;}
2165     break;
2166
2167   case 55:
2168 #line 301 "ael.y"
2169     { reset_parencount(parseio->scanner); ;}
2170     break;
2171
2172   case 56:
2173 #line 301 "ael.y"
2174     {
2175                 (yyval.pval)= npval(PV_RANDOM,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
2176                 (yyval.pval)->u1.str=(yyvsp[-1].str);;}
2177     break;
2178
2179   case 57:
2180 #line 307 "ael.y"
2181     {
2182                 (yyval.pval)= npval(PV_IFTIME,(yylsp[-13]).first_line,(yylsp[-9]).last_line, (yylsp[-13]).first_column, (yylsp[-9]).last_column);
2183                 (yyval.pval)->u1.list = npval(PV_WORD,(yylsp[-11]).first_line,(yylsp[-11]).last_line, (yylsp[-11]).first_column, (yylsp[-11]).last_column);
2184                 asprintf(&((yyval.pval)->u1.list->u1.str), "%s:%s:%s", (yyvsp[-11].str), (yyvsp[-9].str), (yyvsp[-7].str));
2185                 free((yyvsp[-11].str));
2186                 free((yyvsp[-9].str));
2187                 free((yyvsp[-7].str));
2188                 (yyval.pval)->u1.list->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2189                 (yyval.pval)->u1.list->next->u1.str = (yyvsp[-5].str);
2190                 (yyval.pval)->u1.list->next->next = npval(PV_WORD,(yylsp[-3]).first_line,(yylsp[-3]).last_line, (yylsp[-3]).first_column, (yylsp[-3]).last_column);
2191                 (yyval.pval)->u1.list->next->next->u1.str = (yyvsp[-3].str);
2192                 (yyval.pval)->u1.list->next->next->next = npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[-1]).last_line, (yylsp[-1]).first_column, (yylsp[-1]).last_column);
2193                 (yyval.pval)->u1.list->next->next->next->u1.str = (yyvsp[-1].str);
2194                 prev_word = 0;
2195         ;}
2196     break;
2197
2198   case 58:
2199 #line 322 "ael.y"
2200     {
2201                 (yyval.pval)= npval(PV_IFTIME,(yylsp[-9]).first_line,(yylsp[-5]).last_line, (yylsp[-9]).first_column, (yylsp[-5]).last_column);
2202                 (yyval.pval)->u1.list = npval(PV_WORD,(yylsp[-7]).first_line,(yylsp[-7]).last_line, (yylsp[-7]).first_column, (yylsp[-7]).last_column);
2203                 (yyval.pval)->u1.list->u1.str = (yyvsp[-7].str);
2204                 (yyval.pval)->u1.list->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2205                 (yyval.pval)->u1.list->next->u1.str = (yyvsp[-5].str);
2206                 (yyval.pval)->u1.list->next->next = npval(PV_WORD,(yylsp[-3]).first_line,(yylsp[-3]).last_line, (yylsp[-3]).first_column, (yylsp[-3]).last_column);
2207                 (yyval.pval)->u1.list->next->next->u1.str = (yyvsp[-3].str);
2208                 (yyval.pval)->u1.list->next->next->next = npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[-1]).last_line, (yylsp[-1]).first_column, (yylsp[-1]).last_column);
2209                 (yyval.pval)->u1.list->next->next->next->u1.str = (yyvsp[-1].str);
2210                 prev_word = 0;
2211         ;}
2212     break;
2213
2214   case 59:
2215 #line 342 "ael.y"
2216     { (yyval.str) = (yyvsp[0].str);;}
2217     break;
2218
2219   case 60:
2220 #line 343 "ael.y"
2221     {
2222                 asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
2223                 free((yyvsp[-1].str));
2224                 free((yyvsp[0].str));
2225                 prev_word = (yyval.str);;}
2226     break;
2227
2228   case 61:
2229 #line 349 "ael.y"
2230     { (yyval.str) = (yyvsp[0].str);;}
2231     break;
2232
2233   case 62:
2234 #line 350 "ael.y"
2235     {
2236                 asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
2237                 free((yyvsp[-1].str));
2238                 free((yyvsp[0].str));
2239                 prev_word = (yyval.str);;}
2240     break;
2241
2242   case 63:
2243 #line 355 "ael.y"
2244     {
2245                 asprintf(&((yyval.str)), "%s%s%s", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str));
2246                 free((yyvsp[-2].str));
2247                 free((yyvsp[-1].str));
2248                 free((yyvsp[0].str));
2249                 prev_word=(yyval.str);;}
2250     break;
2251
2252   case 64:
2253 #line 363 "ael.y"
2254     { (yyval.str) = (yyvsp[0].str);;}
2255     break;
2256
2257   case 65:
2258 #line 364 "ael.y"
2259     {
2260                 asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
2261                 free((yyvsp[-1].str));
2262                 free((yyvsp[0].str));;}
2263     break;
2264
2265   case 66:
2266 #line 368 "ael.y"
2267     {
2268                 asprintf(&((yyval.str)), "%s:%s", (yyvsp[-2].str), (yyvsp[0].str));
2269                 free((yyvsp[-2].str));
2270                 free((yyvsp[0].str));;}
2271     break;
2272
2273   case 67:
2274 #line 374 "ael.y"
2275     { reset_parencount(parseio->scanner); ;}
2276     break;
2277
2278   case 68:
2279 #line 374 "ael.y"
2280     {
2281                 (yyval.pval)=npval(PV_SWITCH,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column);
2282                 (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
2283     break;
2284
2285   case 69:
2286 #line 379 "ael.y"
2287     {
2288                 (yyval.pval)=npval(PV_STATEMENTBLOCK,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2289                 (yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
2290     break;
2291
2292   case 70:
2293 #line 382 "ael.y"
2294     {reset_semicount(parseio->scanner);;}
2295     break;
2296
2297   case 71:
2298 #line 382 "ael.y"
2299     {
2300                 (yyval.pval)=npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
2301                 (yyval.pval)->u1.str = (yyvsp[-4].str);
2302                 (yyval.pval)->u2.val = (yyvsp[-1].str); ;}
2303     break;
2304
2305   case 72:
2306 #line 386 "ael.y"
2307     {
2308                 (yyval.pval)=npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2309                 (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
2310     break;
2311
2312   case 73:
2313 #line 389 "ael.y"
2314     {
2315                 (yyval.pval)=npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2316                 (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
2317     break;
2318
2319   case 74:
2320 #line 392 "ael.y"
2321     {
2322                 (yyval.pval)=npval(PV_LABEL,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);
2323                 (yyval.pval)->u1.str = (yyvsp[-1].str); ;}
2324     break;
2325
2326   case 75:
2327 #line 395 "ael.y"
2328     {reset_semicount(parseio->scanner);;}
2329     break;
2330
2331   case 76:
2332 #line 396 "ael.y"
2333     {reset_semicount(parseio->scanner);;}
2334     break;
2335
2336   case 77:
2337 #line 397 "ael.y"
2338     {reset_parencount(parseio->scanner);;}
2339     break;
2340
2341   case 78:
2342 #line 397 "ael.y"
2343     {
2344                 (yyval.pval)=npval(PV_FOR,(yylsp[-11]).first_line,(yylsp[0]).last_line, (yylsp[-11]).first_column, (yylsp[0]).last_column);
2345                 (yyval.pval)->u1.for_init = (yyvsp[-8].str);
2346                 (yyval.pval)->u2.for_test=(yyvsp[-5].str);
2347                 (yyval.pval)->u3.for_inc = (yyvsp[-2].str);
2348                 (yyval.pval)->u4.for_statements = (yyvsp[0].pval);;}
2349     break;
2350
2351   case 79:
2352 #line 403 "ael.y"
2353     {reset_parencount(parseio->scanner);;}
2354     break;
2355
2356   case 80:
2357 #line 403 "ael.y"
2358     {
2359                 (yyval.pval)=npval(PV_WHILE,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column);
2360                 (yyval.pval)->u1.str = (yyvsp[-2].str);
2361                 (yyval.pval)->u2.statements = (yyvsp[0].pval); ;}
2362     break;
2363
2364   case 81:
2365 #line 407 "ael.y"
2366     {
2367                 (yyval.pval)=(yyvsp[-1].pval);
2368                 (yyval.pval)->endline = (yylsp[0]).last_line;
2369                 (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2370     break;
2371
2372   case 82:
2373 #line 411 "ael.y"
2374     {
2375                 (yyval.pval)=(yyvsp[-2].pval);
2376                 (yyval.pval)->u2.statements = (yyvsp[-1].pval);
2377                 (yyval.pval)->endline = (yylsp[0]).last_line;
2378                 (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2379     break;
2380
2381   case 83:
2382 #line 416 "ael.y"
2383     {
2384                 (yyval.pval) = (yyvsp[-1].pval);
2385                 (yyval.pval)->endline = (yylsp[-1]).last_line;
2386                 (yyval.pval)->endcol = (yylsp[-1]).last_column;;}
2387     break;
2388
2389   case 84:
2390 #line 420 "ael.y"
2391     {
2392                 (yyval.pval) = (yyvsp[-1].pval);
2393                 (yyval.pval)->endline = (yylsp[0]).last_line;
2394                 (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2395     break;
2396
2397   case 85:
2398 #line 424 "ael.y"
2399     {
2400                 (yyval.pval)= npval(PV_APPLICATION_CALL,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);
2401                 (yyval.pval)->u1.str = (yyvsp[-1].str);;}
2402     break;
2403
2404   case 86:
2405 #line 427 "ael.y"
2406     {reset_semicount(parseio->scanner);;}
2407     break;
2408
2409   case 87:
2410 #line 427 "ael.y"
2411     {
2412                 char *bufx;
2413                 int tot=0;
2414                 pval *pptr;
2415                 (yyval.pval) = npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
2416                 (yyval.pval)->u2.val=(yyvsp[-1].str);
2417                 /* rebuild the original string-- this is not an app call, it's an unwrapped vardec, with a func call on the LHS */
2418                 /* string to big to fit in the buffer? */
2419                 tot+=strlen((yyvsp[-4].pval)->u1.str);
2420                 for(pptr=(yyvsp[-4].pval)->u2.arglist;pptr;pptr=pptr->next) {
2421                         tot+=strlen(pptr->u1.str);
2422                         tot++; /* for a sep like a comma */
2423                 }
2424                 tot+=4; /* for safety */
2425                 bufx = ast_calloc(1, tot);
2426                 strcpy(bufx,(yyvsp[-4].pval)->u1.str);
2427                 strcat(bufx,"(");
2428                 /* XXX need to advance the pointer or the loop is very inefficient */
2429                 for (pptr=(yyvsp[-4].pval)->u2.arglist;pptr;pptr=pptr->next) {
2430                         if ( pptr != (yyvsp[-4].pval)->u2.arglist )
2431                                 strcat(bufx,",");
2432                         strcat(bufx,pptr->u1.str);
2433                 }
2434                 strcat(bufx,")");
2435 #ifdef AAL_ARGCHECK
2436                 if ( !ael_is_funcname((yyvsp[-4].pval)->u1.str) )
2437                         ast_log(LOG_WARNING, "==== File: %s, Line %d, Cols: %d-%d: Function call? The name %s is not in my internal list of function names\n",
2438                                 my_file, (yylsp[-4]).first_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column, (yyvsp[-4].pval)->u1.str);
2439 #endif
2440                 (yyval.pval)->u1.str = bufx;
2441                 destroy_pval((yyvsp[-4].pval)); /* the app call it is not, get rid of that chain */
2442                 prev_word = 0;
2443         ;}
2444     break;
2445
2446   case 88:
2447 #line 460 "ael.y"
2448     {
2449                 (yyval.pval) = npval(PV_BREAK,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;}
2450     break;
2451
2452   case 89:
2453 #line 462 "ael.y"
2454     {
2455                 (yyval.pval) = npval(PV_RETURN,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;}
2456     break;
2457
2458   case 90:
2459 #line 464 "ael.y"
2460     {
2461                 (yyval.pval) = npval(PV_CONTINUE,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;}
2462     break;
2463
2464   case 91:
2465 #line 466 "ael.y"
2466     {
2467                 (yyval.pval)=(yyvsp[-1].pval);
2468                 (yyval.pval)->u2.statements = (yyvsp[0].pval);
2469                 (yyval.pval)->endline = (yylsp[0]).last_line;
2470                 (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2471     break;
2472
2473   case 92:
2474 #line 471 "ael.y"
2475     {
2476                 (yyval.pval)=(yyvsp[-3].pval);
2477                 (yyval.pval)->u2.statements = (yyvsp[-2].pval);
2478                 (yyval.pval)->endline = (yylsp[-2]).last_line;
2479                 (yyval.pval)->endcol = (yylsp[-2]).last_column;
2480                 (yyval.pval)->u3.else_statements = (yyvsp[0].pval);;}
2481     break;
2482
2483   case 93:
2484 #line 477 "ael.y"
2485     {
2486                 (yyval.pval)=(yyvsp[-1].pval);
2487                 (yyval.pval)->u2.statements = (yyvsp[0].pval);
2488                 (yyval.pval)->endline = (yylsp[0]).last_line;
2489                 (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2490     break;
2491
2492   case 94:
2493 #line 482 "ael.y"
2494     {
2495                 (yyval.pval)=(yyvsp[-3].pval);
2496                 (yyval.pval)->u2.statements = (yyvsp[-2].pval);
2497                 (yyval.pval)->endline = (yylsp[-2]).last_line;
2498                 (yyval.pval)->endcol = (yylsp[-2]).last_column;
2499                 (yyval.pval)->u3.else_statements = (yyvsp[0].pval);;}
2500     break;
2501
2502   case 95:
2503 #line 488 "ael.y"
2504     {
2505                 (yyval.pval)=(yyvsp[-1].pval);
2506                 (yyval.pval)->u2.statements = (yyvsp[0].pval);
2507                 (yyval.pval)->endline = (yylsp[0]).last_line;
2508                 (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2509     break;
2510
2511   case 96:
2512 #line 493 "ael.y"
2513     {
2514                 (yyval.pval)=(yyvsp[-3].pval);
2515                 (yyval.pval)->u2.statements = (yyvsp[-2].pval);
2516                 (yyval.pval)->endline = (yylsp[-2]).last_line;
2517                 (yyval.pval)->endcol = (yylsp[-2]).last_column;
2518                 (yyval.pval)->u3.else_statements = (yyvsp[0].pval);;}
2519     break;
2520
2521   case 97:
2522 #line 499 "ael.y"
2523     { (yyval.pval)=0; ;}
2524     break;
2525
2526   case 98:
2527 #line 502 "ael.y"
2528     { (yyval.pval) = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[0].str);;}
2529     break;
2530
2531   case 99:
2532 #line 503 "ael.y"
2533     {
2534                 (yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2535                 (yyval.pval)->u1.str = (yyvsp[-2].str);
2536                 (yyval.pval)->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2537                 (yyval.pval)->next->u1.str = (yyvsp[0].str);;}
2538     break;
2539
2540   case 100:
2541 #line 508 "ael.y"
2542     {
2543                 (yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2544                 (yyval.pval)->u1.str = (yyvsp[-2].str);
2545                 (yyval.pval)->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2546                 (yyval.pval)->next->u1.str = (yyvsp[0].str);;}
2547     break;
2548
2549   case 101:
2550 #line 513 "ael.y"
2551     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2552                 (yyval.pval)->u1.str = (yyvsp[-4].str); (yyval.pval)->next = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2553                 (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2554                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2555                 (yyval.pval)->next->next->u1.str = (yyvsp[0].str); ;}
2556     break;
2557
2558   case 102:
2559 #line 518 "ael.y"
2560     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2561                 (yyval.pval)->u1.str = (yyvsp[-4].str); (yyval.pval)->next = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2562                 (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2563                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2564                 (yyval.pval)->next->next->u1.str = (yyvsp[0].str); ;}
2565     break;
2566
2567   case 103:
2568 #line 523 "ael.y"
2569     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2570                 (yyval.pval)->u1.str = strdup("default"); (yyval.pval)->next = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2571                 (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2572                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2573                 (yyval.pval)->next->next->u1.str = (yyvsp[0].str); ;}
2574     break;
2575
2576   case 104:
2577 #line 528 "ael.y"
2578     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2579                 (yyval.pval)->u1.str = strdup("default"); (yyval.pval)->next = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2580                 (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2581                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2582                 (yyval.pval)->next->next->u1.str = (yyvsp[0].str); ;}
2583     break;
2584
2585   case 105:
2586 #line 535 "ael.y"
2587     {(yyval.pval)=npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2588                 (yyval.pval)->u1.str = (yyvsp[0].str); (yyval.pval)->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2589                 (yyval.pval)->next->u1.str = strdup("1");;}
2590     break;
2591
2592   case 106:
2593 #line 538 "ael.y"
2594     {(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2595                 (yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2596                 (yyval.pval)->next->u1.str = (yyvsp[0].str);;}
2597     break;
2598
2599   case 107:
2600 #line 541 "ael.y"
2601     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2602                 (yyval.pval)->u1.str = (yyvsp[0].str); (yyval.pval)->next = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2603                 (yyval.pval)->next->u1.str = (yyvsp[-4].str);
2604                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2605                 (yyval.pval)->next->next->u1.str = (yyvsp[-2].str); ;}
2606     break;
2607
2608   case 108:
2609 #line 546 "ael.y"
2610     {(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2611                 (yyval.pval)->u1.str = (yyvsp[0].str); (yyval.pval)->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2612                 (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2613                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2614                 (yyval.pval)->next->next->u1.str = strdup("1"); ;}
2615     break;
2616
2617   case 109:
2618 #line 551 "ael.y"
2619     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2620                 (yyval.pval)->u1.str = strdup("default"); (yyval.pval)->next = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2621                 (yyval.pval)->next->u1.str = (yyvsp[-4].str);
2622                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2623                 (yyval.pval)->next->next->u1.str = (yyvsp[-2].str); ;}
2624     break;
2625
2626   case 110:
2627 #line 556 "ael.y"
2628     {(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2629                 (yyval.pval)->u1.str = strdup("default"); (yyval.pval)->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2630                 (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2631                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2632                 (yyval.pval)->next->next->u1.str = strdup("1"); ;}
2633     break;
2634
2635   case 111:
2636 #line 563 "ael.y"
2637     {reset_argcount(parseio->scanner);;}
2638     break;
2639
2640   case 112:
2641 #line 564 "ael.y"
2642     {(yyval.pval)= npval(PV_MACRO_CALL,(yylsp[-4]).first_line,(yylsp[-3]).last_line, (yylsp[-4]).first_column, (yylsp[-3]).last_column);
2643                 (yyval.pval)->u1.str = (yyvsp[-4].str); (yyval.pval)->u2.arglist = (yyvsp[-1].pval);;}
2644     break;
2645
2646   case 113:
2647 #line 566 "ael.y"
2648     {(yyval.pval)= npval(PV_MACRO_CALL,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
2649     break;
2650
2651   case 114:
2652 #line 569 "ael.y"
2653     {reset_argcount(parseio->scanner);;}
2654     break;
2655
2656   case 115:
2657 #line 569 "ael.y"
2658     {
2659                 if (strcasecmp((yyvsp[-2].str),"goto") == 0) {
2660                         (yyval.pval)= npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2661                         free((yyvsp[-2].str)); /* won't be using this */
2662                         ast_log(LOG_WARNING, "==== File: %s, Line %d, Cols: %d-%d: Suggestion: Use the goto statement instead of the Goto() application call in AEL.\n", my_file, (yylsp[-2]).first_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column );
2663                 } else
2664                         (yyval.pval)= npval(PV_APPLICATION_CALL,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2665                 (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
2666     break;
2667
2668   case 116:
2669 #line 579 "ael.y"
2670     {(yyval.pval) = (yyvsp[-2].pval);
2671                 if( (yyval.pval)->type == PV_GOTO )
2672                         (yyval.pval)->u1.list = (yyvsp[-1].pval);
2673                 else
2674                         (yyval.pval)->u2.arglist = (yyvsp[-1].pval);
2675                 (yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2676     break;
2677
2678   case 117:
2679 #line 585 "ael.y"
2680     {(yyval.pval)=(yyvsp[-1].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2681     break;
2682
2683   case 118:
2684 #line 588 "ael.y"
2685     { (yyval.pval)= npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[0].str);;}
2686     break;
2687
2688   case 119:
2689 #line 589 "ael.y"
2690     { (yyval.pval)= npval(PV_WORD,0/*@1.first_line*/,0/*@1.last_line*/,0/* @1.first_column*/, 0/*@1.last_column*/); (yyval.pval)->u1.str = strdup(""); ;}
2691     break;
2692
2693   case 120:
2694 #line 590 "ael.y"
2695     { pval *z = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval) = (yyvsp[-2].pval); linku1((yyvsp[-2].pval),z); z->u1.str = (yyvsp[0].str);;}
2696     break;
2697
2698   case 121:
2699 #line 591 "ael.y"
2700     { pval *z = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval) = (yyvsp[-1].pval); linku1((yyvsp[-1].pval),z); z->u1.str = strdup("");;}
2701     break;
2702
2703   case 122:
2704 #line 594 "ael.y"
2705     {(yyval.pval)=(yyvsp[0].pval);;}
2706     break;
2707
2708   case 123:
2709 #line 595 "ael.y"
2710     { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
2711                                                  else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
2712                                                  else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
2713     break;
2714
2715   case 124:
2716 #line 600 "ael.y"
2717     {(yyval.pval) = npval(PV_CASE,(yylsp[-3]).first_line,(yylsp[-1]).last_line, (yylsp[-3]).first_column, (yylsp[-1]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->u2.statements = (yyvsp[0].pval);;}
2718     break;
2719
2720   case 125:
2721 #line 601 "ael.y"
2722     {(yyval.pval) = npval(PV_DEFAULT,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = 0; (yyval.pval)->u2.statements = (yyvsp[0].pval);;}
2723     break;
2724
2725   case 126:
2726 #line 602 "ael.y"
2727     {(yyval.pval) = npval(PV_PATTERN,(yylsp[-3]).first_line,(yylsp[-1]).last_line, (yylsp[-3]).first_column, (yylsp[-1]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->u2.statements = (yyvsp[0].pval);;}
2728     break;
2729
2730   case 127:
2731 #line 603 "ael.y"
2732     {(yyval.pval) = npval(PV_CASE,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;}
2733     break;
2734
2735   case 128:
2736 #line 604 "ael.y"
2737     {(yyval.pval) = npval(PV_DEFAULT,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = 0;;}
2738     break;
2739
2740   case 129:
2741 #line 605 "ael.y"
2742     {(yyval.pval) = npval(PV_PATTERN,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;}
2743     break;
2744
2745   case 130:
2746 #line 608 "ael.y"
2747     {(yyval.pval) = (yyvsp[0].pval);;}
2748     break;
2749
2750   case 131:
2751 #line 609 "ael.y"
2752     { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
2753                                                  else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
2754                                                  else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
2755     break;
2756
2757   case 132:
2758 #line 614 "ael.y"
2759     {(yyval.pval)=(yyvsp[0].pval);;}
2760     break;
2761
2762   case 133:
2763 #line 615 "ael.y"
2764     {(yyval.pval)=npval(PV_CATCH,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-3].str); (yyval.pval)->u2.statements = (yyvsp[-1].pval);;}
2765     break;
2766
2767   case 134:
2768 #line 618 "ael.y"
2769     {(yyval.pval)= npval(PV_SWITCHES,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
2770     break;
2771
2772   case 135:
2773 #line 619 "ael.y"
2774     {(yyval.pval)= npval(PV_SWITCHES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);;}
2775     break;
2776
2777   case 136:
2778 #line 622 "ael.y"
2779     {(yyval.pval)= npval(PV_ESWITCHES,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
2780     break;
2781
2782   case 137:
2783 #line 623 "ael.y"
2784     {(yyval.pval)= npval(PV_ESWITCHES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); ;}
2785     break;
2786
2787   case 138:
2788 #line 626 "ael.y"
2789     {(yyval.pval)=npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;}
2790     break;
2791
2792   case 139:
2793 #line 627 "ael.y"
2794     {pval *z = npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)=(yyvsp[-2].pval); z->u1.str = (yyvsp[-1].str); linku1((yyval.pval),z); ;}
2795     break;
2796
2797   case 140:
2798 #line 628 "ael.y"
2799     {(yyval.pval)=(yyvsp[-1].pval);;}
2800     break;
2801
2802   case 141:
2803 #line 631 "ael.y"
2804     {(yyval.pval)=npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;}
2805     break;
2806
2807   case 142:
2808 #line 632 "ael.y"
2809     {
2810                 (yyval.pval)=npval(PV_WORD,(yylsp[-13]).first_line,(yylsp[-12]).last_line, (yylsp[-13]).first_column, (yylsp[-12]).last_column);
2811                 (yyval.pval)->u1.str = (yyvsp[-13].str);
2812                 (yyval.pval)->u2.arglist = npval(PV_WORD,(yylsp[-11]).first_line,(yylsp[-7]).last_line, (yylsp[-11]).first_column, (yylsp[-7]).last_column);
2813                 asprintf( &((yyval.pval)->u2.arglist->u1.str), "%s:%s:%s", (yyvsp[-11].str), (yyvsp[-9].str), (yyvsp[-7].str));
2814                 free((yyvsp[-11].str));
2815                 free((yyvsp[-9].str));
2816                 free((yyvsp[-7].str));
2817                 (yyval.pval)->u2.arglist->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2818                 (yyval.pval)->u2.arglist->next->u1.str = (yyvsp[-5].str);
2819                 (yyval.pval)->u2.arglist->next->next = npval(PV_WORD,(yylsp[-3]).first_line,(yylsp[-3]).last_line, (yylsp[-3]).first_column, (yylsp[-3]).last_column);
2820                 (yyval.pval)->u2.arglist->next->next->u1.str = (yyvsp[-3].str);
2821                 (yyval.pval)->u2.arglist->next->next->next = npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[-1]).last_line, (yylsp[-1]).first_column, (yylsp[-1]).last_column);
2822                 (yyval.pval)->u2.arglist->next->next->next->u1.str = (yyvsp[-1].str);
2823                 prev_word=0;
2824         ;}
2825     break;
2826
2827   case 143:
2828 #line 648 "ael.y"
2829     {
2830                 (yyval.pval)=npval(PV_WORD,(yylsp[-9]).first_line,(yylsp[-8]).last_line, (yylsp[-9]).first_column, (yylsp[-8]).last_column);
2831                 (yyval.pval)->u1.str = (yyvsp[-9].str);
2832                 (yyval.pval)->u2.arglist = npval(PV_WORD,(yylsp[-7]).first_line,(yylsp[-7]).last_line, (yylsp[-7]).first_column, (yylsp[-7]).last_column);
2833                 (yyval.pval)->u2.arglist->u1.str = (yyvsp[-7].str);
2834                 (yyval.pval)->u2.arglist->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2835                 (yyval.pval)->u2.arglist->next->u1.str = (yyvsp[-5].str);
2836                 (yyval.pval)->u2.arglist->next->next = npval(PV_WORD,(yylsp[-3]).first_line,(yylsp[-3]).last_line, (yylsp[-3]).first_column, (yylsp[-3]).last_column);
2837                 (yyval.pval)->u2.arglist->next->next->u1.str = (yyvsp[-3].str);
2838                 (yyval.pval)->u2.arglist->next->next->next = npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[-1]).last_line, (yylsp[-1]).first_column, (yylsp[-1]).last_column);
2839                 (yyval.pval)->u2.arglist->next->next->next->u1.str = (yyvsp[-1].str);
2840                 prev_word=0;
2841         ;}
2842     break;
2843
2844   case 144:
2845 #line 661 "ael.y"
2846     {pval *z = npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)=(yyvsp[-2].pval); z->u1.str = (yyvsp[-1].str); linku1((yyval.pval),z); ;}
2847     break;
2848
2849   case 145:
2850 #line 662 "ael.y"
2851     {pval *z = npval(PV_WORD,(yylsp[-13]).first_line,(yylsp[-12]).last_line, (yylsp[-13]).first_column, (yylsp[-12]).last_column);
2852                 (yyval.pval)=(yyvsp[-14].pval); z->u1.str = (yyvsp[-13].str); linku1((yyval.pval),z);
2853                 z->u2.arglist = npval(PV_WORD,(yylsp[-11]).first_line,(yylsp[-11]).last_line, (yylsp[-11]).first_column, (yylsp[-11]).last_column);
2854                 asprintf( &((yyval.pval)->u2.arglist->u1.str), "%s:%s:%s", (yyvsp[-11].str), (yyvsp[-9].str), (yyvsp[-7].str));
2855                 free((yyvsp[-11].str));
2856                 free((yyvsp[-9].str));
2857                 free((yyvsp[-7].str));
2858                 z->u2.arglist->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2859                 z->u2.arglist->next->u1.str = (yyvsp[-5].str);
2860                 z->u2.arglist->next->next = npval(PV_WORD,(yylsp[-3]).first_line,(yylsp[-3]).last_line, (yylsp[-3]).first_column, (yylsp[-3]).last_column);
2861                 z->u2.arglist->next->next->u1.str = (yyvsp[-3].str);
2862                 z->u2.arglist->next->next->next = npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[-1]).last_line, (yylsp[-1]).first_column, (yylsp[-1]).last_column);
2863                 z->u2.arglist->next->next->next->u1.str = (yyvsp[-1].str);
2864                 prev_word=0;
2865         ;}
2866     break;
2867
2868   case 146:
2869 #line 678 "ael.y"
2870     {pval *z = npval(PV_WORD,(yylsp[-9]).first_line,(yylsp[-9]).last_line, (yylsp[-9]).first_column, (yylsp[-8]).last_column);
2871                 (yyval.pval)=(yyvsp[-10].pval); z->u1.str = (yyvsp[-9].str); linku1((yyval.pval),z);
2872                 z->u2.arglist = npval(PV_WORD,(yylsp[-7]).first_line,(yylsp[-7]).last_line, (yylsp[-7]).first_column, (yylsp[-7]).last_column);
2873                 (yyval.pval)->u2.arglist->u1.str = (yyvsp[-7].str);
2874                 z->u2.arglist->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2875                 z->u2.arglist->next->u1.str = (yyvsp[-5].str);
2876                 z->u2.arglist->next->next = npval(PV_WORD,(yylsp[-3]).first_line,(yylsp[-3]).last_line, (yylsp[-3]).first_column, (yylsp[-3]).last_column);
2877                 z->u2.arglist->next->next->u1.str = (yyvsp[-3].str);
2878                 z->u2.arglist->next->next->next = npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[-1]).last_line, (yylsp[-1]).first_column, (yylsp[-1]).last_column);
2879                 z->u2.arglist->next->next->next->u1.str = (yyvsp[-1].str);
2880                 prev_word=0;
2881         ;}
2882     break;
2883
2884   case 147:
2885 #line 690 "ael.y"
2886     {(yyval.pval)=(yyvsp[-1].pval);;}
2887     break;
2888
2889   case 148:
2890 #line 693 "ael.y"
2891     { (yyval.str) = (yyvsp[0].str);;}
2892     break;
2893
2894   case 149:
2895 #line 694 "ael.y"
2896     {(yyval.str)=strdup("default");;}
2897     break;
2898
2899   case 150:
2900 #line 697 "ael.y"
2901     {
2902                 (yyval.pval)= npval(PV_INCLUDES,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column);
2903                 (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
2904     break;
2905
2906   case 151:
2907 #line 700 "ael.y"
2908     {
2909                 (yyval.pval)= npval(PV_INCLUDES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);;}
2910     break;
2911
2912
2913       default: break;
2914     }
2915
2916 /* Line 1126 of yacc.c.  */
2917 #line 2918 "ael.tab.c"
2918 \f
2919   yyvsp -= yylen;
2920   yyssp -= yylen;
2921   yylsp -= yylen;
2922
2923   YY_STACK_PRINT (yyss, yyssp);
2924
2925   *++yyvsp = yyval;
2926   *++yylsp = yyloc;
2927
2928   /* Now `shift' the result of the reduction.  Determine what state
2929      that goes to, based on the state we popped back to and the rule
2930      number reduced by.  */
2931
2932   yyn = yyr1[yyn];
2933
2934   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2935   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2936     yystate = yytable[yystate];
2937   else
2938     yystate = yydefgoto[yyn - YYNTOKENS];
2939
2940   goto yynewstate;
2941
2942
2943 /*------------------------------------.
2944 | yyerrlab -- here on detecting error |
2945 `------------------------------------*/
2946 yyerrlab:
2947   /* If not already recovering from an error, report this error.  */
2948   if (!yyerrstatus)
2949     {
2950       ++yynerrs;
2951 #if YYERROR_VERBOSE
2952       yyn = yypact[yystate];
2953
2954       if (YYPACT_NINF < yyn && yyn < YYLAST)
2955         {
2956           int yytype = YYTRANSLATE (yychar);
2957           YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
2958           YYSIZE_T yysize = yysize0;
2959           YYSIZE_T yysize1;
2960           int yysize_overflow = 0;
2961           char *yymsg = 0;
2962 #         define YYERROR_VERBOSE_ARGS_MAXIMUM 5
2963           char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2964           int yyx;
2965
2966 #if 0
2967           /* This is so xgettext sees the translatable formats that are
2968              constructed on the fly.  */
2969           YY_("syntax error, unexpected %s");
2970           YY_("syntax error, unexpected %s, expecting %s");
2971           YY_("syntax error, unexpected %s, expecting %s or %s");
2972           YY_("syntax error, unexpected %s, expecting %s or %s or %s");
2973           YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
2974 #endif
2975           char *yyfmt;
2976           char const *yyf;
2977           static char const yyunexpected[] = "syntax error, unexpected %s";
2978           static char const yyexpecting[] = ", expecting %s";
2979           static char const yyor[] = " or %s";
2980           char yyformat[sizeof yyunexpected
2981                         + sizeof yyexpecting - 1
2982                         + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
2983                            * (sizeof yyor - 1))];
2984           char const *yyprefix = yyexpecting;
2985
2986           /* Start YYX at -YYN if negative to avoid negative indexes in
2987              YYCHECK.  */
2988           int yyxbegin = yyn < 0 ? -yyn : 0;
2989
2990           /* Stay within bounds of both yycheck and yytname.  */
2991           int yychecklim = YYLAST - yyn;
2992           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2993           int yycount = 1;
2994
2995           yyarg[0] = yytname[yytype];
2996           yyfmt = yystpcpy (yyformat, yyunexpected);
2997
2998           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2999             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
3000               {
3001                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
3002                   {
3003                     yycount = 1;
3004                     yysize = yysize0;
3005                     yyformat[sizeof yyunexpected - 1] = '\0';
3006                     break;
3007                   }
3008                 yyarg[yycount++] = yytname[yyx];
3009                 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
3010                 yysize_overflow |= yysize1 < yysize;
3011                 yysize = yysize1;
3012                 yyfmt = yystpcpy (yyfmt, yyprefix);
3013                 yyprefix = yyor;
3014               }
3015
3016           yyf = YY_(yyformat);
3017           yysize1 = yysize + yystrlen (yyf);
3018           yysize_overflow |= yysize1 < yysize;
3019           yysize = yysize1;
3020
3021           if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
3022             yymsg = (char *) YYSTACK_ALLOC (yysize);
3023           if (yymsg)
3024             {
3025               /* Avoid sprintf, as that infringes on the user's name space.
3026                  Don't have undefined behavior even if the translation
3027                  produced a string with the wrong number of "%s"s.  */
3028               char *yyp = yymsg;
3029               int yyi = 0;
3030               while ((*yyp = *yyf))
3031                 {
3032                   if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
3033                     {
3034                       yyp += yytnamerr (yyp, yyarg[yyi++]);
3035                       yyf += 2;
3036                     }
3037                   else
3038                     {
3039                       yyp++;
3040                       yyf++;
3041                     }
3042                 }
3043               yyerror (&yylloc, parseio, yymsg);
3044               YYSTACK_FREE (yymsg);
3045             }
3046           else
3047             {
3048               yyerror (&yylloc, parseio, YY_("syntax error"));
3049               goto yyexhaustedlab;
3050             }
3051         }
3052       else
3053 #endif /* YYERROR_VERBOSE */
3054         yyerror (&yylloc, parseio, YY_("syntax error"));
3055     }
3056
3057   yyerror_range[0] = yylloc;
3058
3059   if (yyerrstatus == 3)
3060     {
3061       /* If just tried and failed to reuse look-ahead token after an
3062          error, discard it.  */
3063
3064       if (yychar <= YYEOF)
3065         {
3066           /* Return failure if at end of input.  */
3067           if (yychar == YYEOF)
3068             YYABORT;
3069         }
3070       else
3071         {
3072           yydestruct ("Error: discarding", yytoken, &yylval, &yylloc);
3073           yychar = YYEMPTY;
3074         }
3075     }
3076
3077   /* Else will try to reuse look-ahead token after shifting the error
3078      token.  */
3079   goto yyerrlab1;
3080
3081
3082 /*---------------------------------------------------.
3083 | yyerrorlab -- error raised explicitly by YYERROR.  |
3084 `---------------------------------------------------*/
3085 yyerrorlab:
3086
3087   /* Pacify compilers like GCC when the user code never invokes
3088      YYERROR and the label yyerrorlab therefore never appears in user
3089      code.  */
3090   if (0)
3091      goto yyerrorlab;
3092
3093   yyerror_range[0] = yylsp[1-yylen];
3094   yylsp -= yylen;
3095   yyvsp -= yylen;
3096   yyssp -= yylen;
3097   yystate = *yyssp;
3098   goto yyerrlab1;
3099
3100
3101 /*-------------------------------------------------------------.
3102 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
3103 `-------------------------------------------------------------*/
3104 yyerrlab1:
3105   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
3106
3107   for (;;)
3108     {
3109       yyn = yypact[yystate];
3110       if (yyn != YYPACT_NINF)
3111         {
3112           yyn += YYTERROR;
3113           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3114             {
3115               yyn = yytable[yyn];
3116               if (0 < yyn)
3117                 break;
3118             }
3119         }
3120
3121       /* Pop the current state because it cannot handle the error token.  */
3122       if (yyssp == yyss)
3123         YYABORT;
3124
3125       yyerror_range[0] = *yylsp;
3126       yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp);
3127       YYPOPSTACK;
3128       yystate = *yyssp;
3129       YY_STACK_PRINT (yyss, yyssp);
3130     }
3131
3132   if (yyn == YYFINAL)
3133     YYACCEPT;
3134
3135   *++yyvsp = yylval;
3136
3137   yyerror_range[1] = yylloc;
3138   /* Using YYLLOC is tempting, but would change the location of
3139      the look-ahead.  YYLOC is available though. */
3140   YYLLOC_DEFAULT (yyloc, yyerror_range - 1, 2);
3141   *++yylsp = yyloc;
3142
3143   /* Shift the error token. */
3144   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3145
3146   yystate = yyn;
3147   goto yynewstate;
3148
3149
3150 /*-------------------------------------.
3151 | yyacceptlab -- YYACCEPT comes here.  |
3152 `-------------------------------------*/
3153 yyacceptlab:
3154   yyresult = 0;
3155   goto yyreturn;
3156
3157 /*-----------------------------------.
3158 | yyabortlab -- YYABORT comes here.  |
3159 `-----------------------------------*/
3160 yyabortlab:
3161   yyresult = 1;
3162   goto yyreturn;
3163
3164 #ifndef yyoverflow
3165 /*-------------------------------------------------.
3166 | yyexhaustedlab -- memory exhaustion comes here.  |
3167 `-------------------------------------------------*/
3168 yyexhaustedlab:
3169   yyerror (&yylloc, parseio, YY_("memory exhausted"));
3170   yyresult = 2;
3171   /* Fall through.  */
3172 #endif
3173
3174 yyreturn:
3175   if (yychar != YYEOF && yychar != YYEMPTY)
3176      yydestruct ("Cleanup: discarding lookahead",
3177                  yytoken, &yylval, &yylloc);
3178   while (yyssp != yyss)
3179     {
3180       yydestruct ("Cleanup: popping",
3181                   yystos[*yyssp], yyvsp, yylsp);
3182       YYPOPSTACK;
3183     }
3184 #ifndef yyoverflow
3185   if (yyss != yyssa)
3186     YYSTACK_FREE (yyss);
3187 #endif
3188   return yyresult;
3189 }
3190
3191
3192 #line 705 "ael.y"
3193
3194
3195 static char *token_equivs1[] =
3196 {
3197         "AMPER",
3198         "AT",
3199         "BAR",
3200         "COLON",
3201         "COMMA",
3202         "EQ",
3203         "EXTENMARK",
3204         "KW_BREAK",
3205         "KW_CASE",
3206         "KW_CATCH",
3207         "KW_CONTEXT",
3208         "KW_CONTINUE",
3209         "KW_DEFAULT",
3210         "KW_ELSE",
3211         "KW_ESWITCHES",
3212         "KW_FOR",
3213         "KW_GLOBALS",
3214         "KW_GOTO",
3215         "KW_HINT",
3216         "KW_IFTIME",
3217         "KW_IF",
3218         "KW_IGNOREPAT",
3219         "KW_INCLUDES"
3220         "KW_JUMP",
3221         "KW_MACRO",
3222         "KW_PATTERN",
3223         "KW_REGEXTEN",
3224         "KW_RETURN",
3225         "KW_SWITCHES",
3226         "KW_SWITCH",
3227         "KW_WHILE",
3228         "LC",
3229         "LP",
3230         "RC",
3231         "RP",
3232         "SEMI",
3233 };
3234
3235 static char *token_equivs2[] =
3236 {
3237         "&",
3238         "@",
3239         "|",
3240         ":",
3241         ",",
3242         "=",
3243         "=>",
3244         "break",
3245         "case",
3246         "catch",
3247         "context",
3248         "continue",
3249         "default",
3250         "else",
3251         "eswitches",
3252         "for",
3253         "globals",
3254         "goto",
3255         "hint",
3256         "ifTime",
3257         "if",
3258         "ignorepat",
3259         "includes"
3260         "jump",
3261         "macro",
3262         "pattern",
3263         "regexten",
3264         "return",
3265         "switches",