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