0dc33d508cd881d8d52c516fdf4aa28aa8cfd30a
[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,   198,
559      201,   204,   209,   212,   217,   218,   219,   222,   222,   228,
560      231,   236,   239,   240,   241,   244,   247,   248,   249,   250,
561      251,   252,   252,   256,   257,   260,   265,   269,   274,   279,
562      288,   289,   292,   295,   295,   300,   300,   305,   321,   341,
563      342,   348,   349,   354,   362,   363,   367,   373,   373,   378,
564      381,   381,   385,   388,   391,   394,   395,   396,   394,   402,
565      402,   406,   410,   415,   419,   423,   426,   426,   459,   461,
566      463,   465,   470,   476,   481,   487,   492,   498,   501,   502,
567      507,   512,   517,   522,   527,   534,   537,   540,   545,   550,
568      555,   562,   562,   565,   568,   568,   578,   584,   587,   588,
569      589,   590,   593,   594,   599,   600,   601,   602,   603,   604,
570      607,   608,   613,   614,   617,   618,   621,   622,   625,   626,
571      627,   630,   631,   647,   660,   661,   676,   689,   692,   693,
572      696,   699
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     {
1936                 (yyval.pval)=npval(PV_MACRO,(yylsp[-7]).first_line,(yylsp[0]).last_line, (yylsp[-7]).first_column, (yylsp[0]).last_column);
1937                 (yyval.pval)->u1.str = (yyvsp[-6].str); (yyval.pval)->u2.arglist = (yyvsp[-4].pval); (yyval.pval)->u3.macro_statements = (yyvsp[-1].pval); ;}
1938     break;
1939
1940   case 19:
1941 #line 198 "ael.y"
1942     {
1943                 (yyval.pval)=npval(PV_MACRO,(yylsp[-6]).first_line,(yylsp[0]).last_line, (yylsp[-6]).first_column, (yylsp[0]).last_column);
1944                 (yyval.pval)->u1.str = (yyvsp[-5].str); (yyval.pval)->u2.arglist = (yyvsp[-3].pval); ;}
1945     break;
1946
1947   case 20:
1948 #line 201 "ael.y"
1949     {
1950                 (yyval.pval)=npval(PV_MACRO,(yylsp[-6]).first_line,(yylsp[0]).last_line, (yylsp[-6]).first_column, (yylsp[0]).last_column);
1951                 (yyval.pval)->u1.str = (yyvsp[-5].str); (yyval.pval)->u3.macro_statements = (yyvsp[-1].pval); ;}
1952     break;
1953
1954   case 21:
1955 #line 204 "ael.y"
1956     {
1957                 (yyval.pval)=npval(PV_MACRO,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column);
1958                 (yyval.pval)->u1.str = (yyvsp[-4].str); /* pretty empty! */ ;}
1959     break;
1960
1961   case 22:
1962 #line 209 "ael.y"
1963     {
1964                 (yyval.pval)=npval(PV_GLOBALS,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column);
1965                 (yyval.pval)->u1.statements = (yyvsp[-1].pval);;}
1966     break;
1967
1968   case 23:
1969 #line 212 "ael.y"
1970     {
1971                 (yyval.pval)=npval(PV_GLOBALS,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
1972                 /* and that's all */ ;}
1973     break;
1974
1975   case 24:
1976 #line 217 "ael.y"
1977     {(yyval.pval)=(yyvsp[0].pval);;}
1978     break;
1979
1980   case 25:
1981 #line 218 "ael.y"
1982     {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));;}
1983     break;
1984
1985   case 26:
1986 #line 219 "ael.y"
1987     {(yyval.pval)=(yyvsp[-1].pval);;}
1988     break;
1989
1990   case 27:
1991 #line 222 "ael.y"
1992     { reset_semicount(parseio->scanner); ;}
1993     break;
1994
1995   case 28:
1996 #line 222 "ael.y"
1997     {
1998                 (yyval.pval)=npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
1999                 (yyval.pval)->u1.str = (yyvsp[-4].str);
2000                 (yyval.pval)->u2.val = (yyvsp[-1].str); ;}
2001     break;
2002
2003   case 29:
2004 #line 228 "ael.y"
2005     {
2006                 (yyval.pval)= npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2007                 (yyval.pval)->u1.str = (yyvsp[0].str); ;}
2008     break;
2009
2010   case 30:
2011 #line 231 "ael.y"
2012     {
2013                 pval *z = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2014                 z->u1.str = (yyvsp[0].str);
2015                 (yyval.pval)=(yyvsp[-2].pval);
2016                 linku1((yyval.pval),z); ;}
2017     break;
2018
2019   case 31:
2020 #line 236 "ael.y"
2021     {(yyval.pval)=(yyvsp[-1].pval);;}
2022     break;
2023
2024   case 32:
2025 #line 239 "ael.y"
2026     { (yyval.pval)=(yyvsp[0].pval);;}
2027     break;
2028
2029   case 33:
2030 #line 240 "ael.y"
2031     {(yyval.pval)=0;;}
2032     break;
2033
2034   case 34:
2035 #line 241 "ael.y"
2036     { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
2037                                 else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
2038                                 else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
2039     break;
2040
2041   case 35:
2042 #line 244 "ael.y"
2043     { (yyval.pval)=(yyvsp[-1].pval);;}
2044     break;
2045
2046   case 36:
2047 #line 247 "ael.y"
2048     {(yyval.pval)=(yyvsp[0].pval);;}
2049     break;
2050
2051   case 37:
2052 #line 248 "ael.y"
2053     {(yyval.pval)=(yyvsp[0].pval);;}
2054     break;
2055
2056   case 38:
2057 #line 249 "ael.y"
2058     {(yyval.pval)=(yyvsp[0].pval);;}
2059     break;
2060
2061   case 39:
2062 #line 250 "ael.y"
2063     {(yyval.pval)=(yyvsp[0].pval);;}
2064     break;
2065
2066   case 40:
2067 #line 251 "ael.y"
2068     {(yyval.pval)=(yyvsp[0].pval);;}
2069     break;
2070
2071   case 41:
2072 #line 252 "ael.y"
2073     { reset_semicount(parseio->scanner); ;}
2074     break;
2075
2076   case 42:
2077 #line 252 "ael.y"
2078     {
2079                 (yyval.pval)=npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
2080                 (yyval.pval)->u1.str = (yyvsp[-4].str);
2081                 (yyval.pval)->u2.val = (yyvsp[-1].str); ;}
2082     break;
2083
2084   case 43:
2085 #line 256 "ael.y"
2086     {free((yyvsp[-1].str)); (yyval.pval)=0;;}
2087     break;
2088
2089   case 44:
2090 #line 257 "ael.y"
2091     {(yyval.pval)=0;/* allow older docs to be read */;}
2092     break;
2093
2094   case 45:
2095 #line 260 "ael.y"
2096     {
2097                 (yyval.pval)=npval(PV_IGNOREPAT,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column);
2098                 (yyval.pval)->u1.str = (yyvsp[-1].str);;}
2099     break;
2100
2101   case 46:
2102 #line 265 "ael.y"
2103     {
2104                 (yyval.pval) = npval(PV_EXTENSION,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2105                 (yyval.pval)->u1.str = (yyvsp[-2].str);
2106                 (yyval.pval)->u2.statements = (yyvsp[0].pval); ;}
2107     break;
2108
2109   case 47:
2110 #line 269 "ael.y"
2111     {
2112                 (yyval.pval) = npval(PV_EXTENSION,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column);
2113                 (yyval.pval)->u1.str = (yyvsp[-2].str);
2114                 (yyval.pval)->u2.statements = (yyvsp[0].pval);
2115                 (yyval.pval)->u4.regexten=1;;}
2116     break;
2117
2118   case 48:
2119 #line 274 "ael.y"
2120     {
2121                 (yyval.pval) = npval(PV_EXTENSION,(yylsp[-6]).first_line,(yylsp[0]).last_line, (yylsp[-6]).first_column, (yylsp[0]).last_column);
2122                 (yyval.pval)->u1.str = (yyvsp[-2].str);
2123                 (yyval.pval)->u2.statements = (yyvsp[0].pval);
2124                 (yyval.pval)->u3.hints = (yyvsp[-4].str);;}
2125     break;
2126
2127   case 49:
2128 #line 279 "ael.y"
2129     {
2130                 (yyval.pval) = npval(PV_EXTENSION,(yylsp[-7]).first_line,(yylsp[0]).last_line, (yylsp[-7]).first_column, (yylsp[0]).last_column);
2131                 (yyval.pval)->u1.str = (yyvsp[-2].str);
2132                 (yyval.pval)->u2.statements = (yyvsp[0].pval);
2133                 (yyval.pval)->u4.regexten=1;
2134                 (yyval.pval)->u3.hints = (yyvsp[-4].str);;}
2135     break;
2136
2137   case 50:
2138 #line 288 "ael.y"
2139     {(yyval.pval)=(yyvsp[0].pval);;}
2140     break;
2141
2142   case 51:
2143 #line 289 "ael.y"
2144     {if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
2145                                                  else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
2146                                                  else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
2147     break;
2148
2149   case 52:
2150 #line 292 "ael.y"
2151     {(yyval.pval)=(yyvsp[-1].pval);;}
2152     break;
2153
2154   case 53:
2155 #line 295 "ael.y"
2156     { reset_parencount(parseio->scanner); ;}
2157     break;
2158
2159   case 54:
2160 #line 295 "ael.y"
2161     {
2162                 (yyval.pval)= npval(PV_IF,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
2163                 (yyval.pval)->u1.str = (yyvsp[-1].str); ;}
2164     break;
2165
2166   case 55:
2167 #line 300 "ael.y"
2168     { reset_parencount(parseio->scanner); ;}
2169     break;
2170
2171   case 56:
2172 #line 300 "ael.y"
2173     {
2174                 (yyval.pval)= npval(PV_RANDOM,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
2175                 (yyval.pval)->u1.str=(yyvsp[-1].str);;}
2176     break;
2177
2178   case 57:
2179 #line 306 "ael.y"
2180     {
2181                 (yyval.pval)= npval(PV_IFTIME,(yylsp[-13]).first_line,(yylsp[-9]).last_line, (yylsp[-13]).first_column, (yylsp[-9]).last_column);
2182                 (yyval.pval)->u1.list = npval(PV_WORD,(yylsp[-11]).first_line,(yylsp[-11]).last_line, (yylsp[-11]).first_column, (yylsp[-11]).last_column);
2183                 asprintf(&((yyval.pval)->u1.list->u1.str), "%s:%s:%s", (yyvsp[-11].str), (yyvsp[-9].str), (yyvsp[-7].str));
2184                 free((yyvsp[-11].str));
2185                 free((yyvsp[-9].str));
2186                 free((yyvsp[-7].str));
2187                 (yyval.pval)->u1.list->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2188                 (yyval.pval)->u1.list->next->u1.str = (yyvsp[-5].str);
2189                 (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);
2190                 (yyval.pval)->u1.list->next->next->u1.str = (yyvsp[-3].str);
2191                 (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);
2192                 (yyval.pval)->u1.list->next->next->next->u1.str = (yyvsp[-1].str);
2193                 prev_word = 0;
2194         ;}
2195     break;
2196
2197   case 58:
2198 #line 321 "ael.y"
2199     {
2200                 (yyval.pval)= npval(PV_IFTIME,(yylsp[-9]).first_line,(yylsp[-5]).last_line, (yylsp[-9]).first_column, (yylsp[-5]).last_column);
2201                 (yyval.pval)->u1.list = npval(PV_WORD,(yylsp[-7]).first_line,(yylsp[-7]).last_line, (yylsp[-7]).first_column, (yylsp[-7]).last_column);
2202                 (yyval.pval)->u1.list->u1.str = (yyvsp[-7].str);
2203                 (yyval.pval)->u1.list->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2204                 (yyval.pval)->u1.list->next->u1.str = (yyvsp[-5].str);
2205                 (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);
2206                 (yyval.pval)->u1.list->next->next->u1.str = (yyvsp[-3].str);
2207                 (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);
2208                 (yyval.pval)->u1.list->next->next->next->u1.str = (yyvsp[-1].str);
2209                 prev_word = 0;
2210         ;}
2211     break;
2212
2213   case 59:
2214 #line 341 "ael.y"
2215     { (yyval.str) = (yyvsp[0].str);;}
2216     break;
2217
2218   case 60:
2219 #line 342 "ael.y"
2220     {
2221                 asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
2222                 free((yyvsp[-1].str));
2223                 free((yyvsp[0].str));
2224                 prev_word = (yyval.str);;}
2225     break;
2226
2227   case 61:
2228 #line 348 "ael.y"
2229     { (yyval.str) = (yyvsp[0].str);;}
2230     break;
2231
2232   case 62:
2233 #line 349 "ael.y"
2234     {
2235                 asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
2236                 free((yyvsp[-1].str));
2237                 free((yyvsp[0].str));
2238                 prev_word = (yyval.str);;}
2239     break;
2240
2241   case 63:
2242 #line 354 "ael.y"
2243     {
2244                 asprintf(&((yyval.str)), "%s%s%s", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str));
2245                 free((yyvsp[-2].str));
2246                 free((yyvsp[-1].str));
2247                 free((yyvsp[0].str));
2248                 prev_word=(yyval.str);;}
2249     break;
2250
2251   case 64:
2252 #line 362 "ael.y"
2253     { (yyval.str) = (yyvsp[0].str);;}
2254     break;
2255
2256   case 65:
2257 #line 363 "ael.y"
2258     {
2259                 asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
2260                 free((yyvsp[-1].str));
2261                 free((yyvsp[0].str));;}
2262     break;
2263
2264   case 66:
2265 #line 367 "ael.y"
2266     {
2267                 asprintf(&((yyval.str)), "%s:%s", (yyvsp[-2].str), (yyvsp[0].str));
2268                 free((yyvsp[-2].str));
2269                 free((yyvsp[0].str));;}
2270     break;
2271
2272   case 67:
2273 #line 373 "ael.y"
2274     { reset_parencount(parseio->scanner); ;}
2275     break;
2276
2277   case 68:
2278 #line 373 "ael.y"
2279     {
2280                 (yyval.pval)=npval(PV_SWITCH,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column);
2281                 (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
2282     break;
2283
2284   case 69:
2285 #line 378 "ael.y"
2286     {
2287                 (yyval.pval)=npval(PV_STATEMENTBLOCK,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2288                 (yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
2289     break;
2290
2291   case 70:
2292 #line 381 "ael.y"
2293     {reset_semicount(parseio->scanner);;}
2294     break;
2295
2296   case 71:
2297 #line 381 "ael.y"
2298     {
2299                 (yyval.pval)=npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
2300                 (yyval.pval)->u1.str = (yyvsp[-4].str);
2301                 (yyval.pval)->u2.val = (yyvsp[-1].str); ;}
2302     break;
2303
2304   case 72:
2305 #line 385 "ael.y"
2306     {
2307                 (yyval.pval)=npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2308                 (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
2309     break;
2310
2311   case 73:
2312 #line 388 "ael.y"
2313     {
2314                 (yyval.pval)=npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2315                 (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
2316     break;
2317
2318   case 74:
2319 #line 391 "ael.y"
2320     {
2321                 (yyval.pval)=npval(PV_LABEL,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);
2322                 (yyval.pval)->u1.str = (yyvsp[-1].str); ;}
2323     break;
2324
2325   case 75:
2326 #line 394 "ael.y"
2327     {reset_semicount(parseio->scanner);;}
2328     break;
2329
2330   case 76:
2331 #line 395 "ael.y"
2332     {reset_semicount(parseio->scanner);;}
2333     break;
2334
2335   case 77:
2336 #line 396 "ael.y"
2337     {reset_parencount(parseio->scanner);;}
2338     break;
2339
2340   case 78:
2341 #line 396 "ael.y"
2342     {
2343                 (yyval.pval)=npval(PV_FOR,(yylsp[-11]).first_line,(yylsp[0]).last_line, (yylsp[-11]).first_column, (yylsp[0]).last_column);
2344                 (yyval.pval)->u1.for_init = (yyvsp[-8].str);
2345                 (yyval.pval)->u2.for_test=(yyvsp[-5].str);
2346                 (yyval.pval)->u3.for_inc = (yyvsp[-2].str);
2347                 (yyval.pval)->u4.for_statements = (yyvsp[0].pval);;}
2348     break;
2349
2350   case 79:
2351 #line 402 "ael.y"
2352     {reset_parencount(parseio->scanner);;}
2353     break;
2354
2355   case 80:
2356 #line 402 "ael.y"
2357     {
2358                 (yyval.pval)=npval(PV_WHILE,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column);
2359                 (yyval.pval)->u1.str = (yyvsp[-2].str);
2360                 (yyval.pval)->u2.statements = (yyvsp[0].pval); ;}
2361     break;
2362
2363   case 81:
2364 #line 406 "ael.y"
2365     {
2366                 (yyval.pval)=(yyvsp[-1].pval);
2367                 (yyval.pval)->endline = (yylsp[0]).last_line;
2368                 (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2369     break;
2370
2371   case 82:
2372 #line 410 "ael.y"
2373     {
2374                 (yyval.pval)=(yyvsp[-2].pval);
2375                 (yyval.pval)->u2.statements = (yyvsp[-1].pval);
2376                 (yyval.pval)->endline = (yylsp[0]).last_line;
2377                 (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2378     break;
2379
2380   case 83:
2381 #line 415 "ael.y"
2382     {
2383                 (yyval.pval) = (yyvsp[-1].pval);
2384                 (yyval.pval)->endline = (yylsp[-1]).last_line;
2385                 (yyval.pval)->endcol = (yylsp[-1]).last_column;;}
2386     break;
2387
2388   case 84:
2389 #line 419 "ael.y"
2390     {
2391                 (yyval.pval) = (yyvsp[-1].pval);
2392                 (yyval.pval)->endline = (yylsp[0]).last_line;
2393                 (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2394     break;
2395
2396   case 85:
2397 #line 423 "ael.y"
2398     {
2399                 (yyval.pval)= npval(PV_APPLICATION_CALL,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);
2400                 (yyval.pval)->u1.str = (yyvsp[-1].str);;}
2401     break;
2402
2403   case 86:
2404 #line 426 "ael.y"
2405     {reset_semicount(parseio->scanner);;}
2406     break;
2407
2408   case 87:
2409 #line 426 "ael.y"
2410     {
2411                 char *bufx;
2412                 int tot=0;
2413                 pval *pptr;
2414                 (yyval.pval) = npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
2415                 (yyval.pval)->u2.val=(yyvsp[-1].str);
2416                 /* rebuild the original string-- this is not an app call, it's an unwrapped vardec, with a func call on the LHS */
2417                 /* string to big to fit in the buffer? */
2418                 tot+=strlen((yyvsp[-4].pval)->u1.str);
2419                 for(pptr=(yyvsp[-4].pval)->u2.arglist;pptr;pptr=pptr->next) {
2420                         tot+=strlen(pptr->u1.str);
2421                         tot++; /* for a sep like a comma */
2422                 }
2423                 tot+=4; /* for safety */
2424                 bufx = (char *)malloc(tot);
2425                 strcpy(bufx,(yyvsp[-4].pval)->u1.str);
2426                 strcat(bufx,"(");
2427                 /* XXX need to advance the pointer or the loop is very inefficient */
2428                 for (pptr=(yyvsp[-4].pval)->u2.arglist;pptr;pptr=pptr->next) {
2429                         if ( pptr != (yyvsp[-4].pval)->u2.arglist )
2430                                 strcat(bufx,",");
2431                         strcat(bufx,pptr->u1.str);
2432                 }
2433                 strcat(bufx,")");
2434 #ifdef AAL_ARGCHECK
2435                 if ( !ael_is_funcname((yyvsp[-4].pval)->u1.str) )
2436                         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",
2437                                 my_file, (yylsp[-4]).first_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column, (yyvsp[-4].pval)->u1.str);
2438 #endif
2439                 (yyval.pval)->u1.str = bufx;
2440                 destroy_pval((yyvsp[-4].pval)); /* the app call it is not, get rid of that chain */
2441                 prev_word = 0;
2442         ;}
2443     break;
2444
2445   case 88:
2446 #line 459 "ael.y"
2447     {
2448                 (yyval.pval) = npval(PV_BREAK,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;}
2449     break;
2450
2451   case 89:
2452 #line 461 "ael.y"
2453     {
2454                 (yyval.pval) = npval(PV_RETURN,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;}
2455     break;
2456
2457   case 90:
2458 #line 463 "ael.y"
2459     {
2460                 (yyval.pval) = npval(PV_CONTINUE,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;}
2461     break;
2462
2463   case 91:
2464 #line 465 "ael.y"
2465     {
2466                 (yyval.pval)=(yyvsp[-1].pval);
2467                 (yyval.pval)->u2.statements = (yyvsp[0].pval);
2468                 (yyval.pval)->endline = (yylsp[0]).last_line;
2469                 (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2470     break;
2471
2472   case 92:
2473 #line 470 "ael.y"
2474     {
2475                 (yyval.pval)=(yyvsp[-3].pval);
2476                 (yyval.pval)->u2.statements = (yyvsp[-2].pval);
2477                 (yyval.pval)->endline = (yylsp[-2]).last_line;
2478                 (yyval.pval)->endcol = (yylsp[-2]).last_column;
2479                 (yyval.pval)->u3.else_statements = (yyvsp[0].pval);;}
2480     break;
2481
2482   case 93:
2483 #line 476 "ael.y"
2484     {
2485                 (yyval.pval)=(yyvsp[-1].pval);
2486                 (yyval.pval)->u2.statements = (yyvsp[0].pval);
2487                 (yyval.pval)->endline = (yylsp[0]).last_line;
2488                 (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2489     break;
2490
2491   case 94:
2492 #line 481 "ael.y"
2493     {
2494                 (yyval.pval)=(yyvsp[-3].pval);
2495                 (yyval.pval)->u2.statements = (yyvsp[-2].pval);
2496                 (yyval.pval)->endline = (yylsp[-2]).last_line;
2497                 (yyval.pval)->endcol = (yylsp[-2]).last_column;
2498                 (yyval.pval)->u3.else_statements = (yyvsp[0].pval);;}
2499     break;
2500
2501   case 95:
2502 #line 487 "ael.y"
2503     {
2504                 (yyval.pval)=(yyvsp[-1].pval);
2505                 (yyval.pval)->u2.statements = (yyvsp[0].pval);
2506                 (yyval.pval)->endline = (yylsp[0]).last_line;
2507                 (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2508     break;
2509
2510   case 96:
2511 #line 492 "ael.y"
2512     {
2513                 (yyval.pval)=(yyvsp[-3].pval);
2514                 (yyval.pval)->u2.statements = (yyvsp[-2].pval);
2515                 (yyval.pval)->endline = (yylsp[-2]).last_line;
2516                 (yyval.pval)->endcol = (yylsp[-2]).last_column;
2517                 (yyval.pval)->u3.else_statements = (yyvsp[0].pval);;}
2518     break;
2519
2520   case 97:
2521 #line 498 "ael.y"
2522     { (yyval.pval)=0; ;}
2523     break;
2524
2525   case 98:
2526 #line 501 "ael.y"
2527     { (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);;}
2528     break;
2529
2530   case 99:
2531 #line 502 "ael.y"
2532     {
2533                 (yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2534                 (yyval.pval)->u1.str = (yyvsp[-2].str);
2535                 (yyval.pval)->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2536                 (yyval.pval)->next->u1.str = (yyvsp[0].str);;}
2537     break;
2538
2539   case 100:
2540 #line 507 "ael.y"
2541     {
2542                 (yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2543                 (yyval.pval)->u1.str = (yyvsp[-2].str);
2544                 (yyval.pval)->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2545                 (yyval.pval)->next->u1.str = (yyvsp[0].str);;}
2546     break;
2547
2548   case 101:
2549 #line 512 "ael.y"
2550     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2551                 (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);
2552                 (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2553                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2554                 (yyval.pval)->next->next->u1.str = (yyvsp[0].str); ;}
2555     break;
2556
2557   case 102:
2558 #line 517 "ael.y"
2559     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2560                 (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);
2561                 (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2562                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2563                 (yyval.pval)->next->next->u1.str = (yyvsp[0].str); ;}
2564     break;
2565
2566   case 103:
2567 #line 522 "ael.y"
2568     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2569                 (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);
2570                 (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2571                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2572                 (yyval.pval)->next->next->u1.str = (yyvsp[0].str); ;}
2573     break;
2574
2575   case 104:
2576 #line 527 "ael.y"
2577     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2578                 (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);
2579                 (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2580                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2581                 (yyval.pval)->next->next->u1.str = (yyvsp[0].str); ;}
2582     break;
2583
2584   case 105:
2585 #line 534 "ael.y"
2586     {(yyval.pval)=npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2587                 (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);
2588                 (yyval.pval)->next->u1.str = strdup("1");;}
2589     break;
2590
2591   case 106:
2592 #line 537 "ael.y"
2593     {(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2594                 (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);
2595                 (yyval.pval)->next->u1.str = (yyvsp[0].str);;}
2596     break;
2597
2598   case 107:
2599 #line 540 "ael.y"
2600     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2601                 (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);
2602                 (yyval.pval)->next->u1.str = (yyvsp[-4].str);
2603                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2604                 (yyval.pval)->next->next->u1.str = (yyvsp[-2].str); ;}
2605     break;
2606
2607   case 108:
2608 #line 545 "ael.y"
2609     {(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2610                 (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);
2611                 (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2612                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2613                 (yyval.pval)->next->next->u1.str = strdup("1"); ;}
2614     break;
2615
2616   case 109:
2617 #line 550 "ael.y"
2618     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2619                 (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);
2620                 (yyval.pval)->next->u1.str = (yyvsp[-4].str);
2621                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2622                 (yyval.pval)->next->next->u1.str = (yyvsp[-2].str); ;}
2623     break;
2624
2625   case 110:
2626 #line 555 "ael.y"
2627     {(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2628                 (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);
2629                 (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2630                 (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2631                 (yyval.pval)->next->next->u1.str = strdup("1"); ;}
2632     break;
2633
2634   case 111:
2635 #line 562 "ael.y"
2636     {reset_argcount(parseio->scanner);;}
2637     break;
2638
2639   case 112:
2640 #line 563 "ael.y"
2641     {(yyval.pval)= npval(PV_MACRO_CALL,(yylsp[-4]).first_line,(yylsp[-3]).last_line, (yylsp[-4]).first_column, (yylsp[-3]).last_column);
2642                 (yyval.pval)->u1.str = (yyvsp[-4].str); (yyval.pval)->u2.arglist = (yyvsp[-1].pval);;}
2643     break;
2644
2645   case 113:
2646 #line 565 "ael.y"
2647     {(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); ;}
2648     break;
2649
2650   case 114:
2651 #line 568 "ael.y"
2652     {reset_argcount(parseio->scanner);;}
2653     break;
2654
2655   case 115:
2656 #line 568 "ael.y"
2657     {
2658                 if (strcasecmp((yyvsp[-2].str),"goto") == 0) {
2659                         (yyval.pval)= npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2660                         free((yyvsp[-2].str)); /* won't be using this */
2661                         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 );
2662                 } else
2663                         (yyval.pval)= npval(PV_APPLICATION_CALL,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2664                 (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
2665     break;
2666
2667   case 116:
2668 #line 578 "ael.y"
2669     {(yyval.pval) = (yyvsp[-2].pval);
2670                 if( (yyval.pval)->type == PV_GOTO )
2671                         (yyval.pval)->u1.list = (yyvsp[-1].pval);
2672                 else
2673                         (yyval.pval)->u2.arglist = (yyvsp[-1].pval);
2674                 (yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2675     break;
2676
2677   case 117:
2678 #line 584 "ael.y"
2679     {(yyval.pval)=(yyvsp[-1].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2680     break;
2681
2682   case 118:
2683 #line 587 "ael.y"
2684     { (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);;}
2685     break;
2686
2687   case 119:
2688 #line 588 "ael.y"
2689     { (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(""); ;}
2690     break;
2691
2692   case 120:
2693 #line 589 "ael.y"
2694     { 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);;}
2695     break;
2696
2697   case 121:
2698 #line 590 "ael.y"
2699     { 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("");;}
2700     break;
2701
2702   case 122:
2703 #line 593 "ael.y"
2704     {(yyval.pval)=(yyvsp[0].pval);;}
2705     break;
2706
2707   case 123:
2708 #line 594 "ael.y"
2709     { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
2710                                                  else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
2711                                                  else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
2712     break;
2713
2714   case 124:
2715 #line 599 "ael.y"
2716     {(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);;}
2717     break;
2718
2719   case 125:
2720 #line 600 "ael.y"
2721     {(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);;}
2722     break;
2723
2724   case 126:
2725 #line 601 "ael.y"
2726     {(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);;}
2727     break;
2728
2729   case 127:
2730 #line 602 "ael.y"
2731     {(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);;}
2732     break;
2733
2734   case 128:
2735 #line 603 "ael.y"
2736     {(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;;}
2737     break;
2738
2739   case 129:
2740 #line 604 "ael.y"
2741     {(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);;}
2742     break;
2743
2744   case 130:
2745 #line 607 "ael.y"
2746     {(yyval.pval) = (yyvsp[0].pval);;}
2747     break;
2748
2749   case 131:
2750 #line 608 "ael.y"
2751     { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
2752                                                  else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
2753                                                  else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
2754     break;
2755
2756   case 132:
2757 #line 613 "ael.y"
2758     {(yyval.pval)=(yyvsp[0].pval);;}
2759     break;
2760
2761   case 133:
2762 #line 614 "ael.y"
2763     {(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);;}
2764     break;
2765
2766   case 134:
2767 #line 617 "ael.y"
2768     {(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); ;}
2769     break;
2770
2771   case 135:
2772 #line 618 "ael.y"
2773     {(yyval.pval)= npval(PV_SWITCHES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);;}
2774     break;
2775
2776   case 136:
2777 #line 621 "ael.y"
2778     {(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); ;}
2779     break;
2780
2781   case 137:
2782 #line 622 "ael.y"
2783     {(yyval.pval)= npval(PV_ESWITCHES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); ;}
2784     break;
2785
2786   case 138:
2787 #line 625 "ael.y"
2788     {(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);;}
2789     break;
2790
2791   case 139:
2792 #line 626 "ael.y"
2793     {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); ;}
2794     break;
2795
2796   case 140:
2797 #line 627 "ael.y"
2798     {(yyval.pval)=(yyvsp[-1].pval);;}
2799     break;
2800
2801   case 141:
2802 #line 630 "ael.y"
2803     {(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);;}
2804     break;
2805
2806   case 142:
2807 #line 631 "ael.y"
2808     {
2809                 (yyval.pval)=npval(PV_WORD,(yylsp[-13]).first_line,(yylsp[-12]).last_line, (yylsp[-13]).first_column, (yylsp[-12]).last_column);
2810                 (yyval.pval)->u1.str = (yyvsp[-13].str);
2811                 (yyval.pval)->u2.arglist = npval(PV_WORD,(yylsp[-11]).first_line,(yylsp[-7]).last_line, (yylsp[-11]).first_column, (yylsp[-7]).last_column);
2812                 asprintf( &((yyval.pval)->u2.arglist->u1.str), "%s:%s:%s", (yyvsp[-11].str), (yyvsp[-9].str), (yyvsp[-7].str));
2813                 free((yyvsp[-11].str));
2814                 free((yyvsp[-9].str));
2815                 free((yyvsp[-7].str));
2816                 (yyval.pval)->u2.arglist->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2817                 (yyval.pval)->u2.arglist->next->u1.str = (yyvsp[-5].str);
2818                 (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);
2819                 (yyval.pval)->u2.arglist->next->next->u1.str = (yyvsp[-3].str);
2820                 (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);
2821                 (yyval.pval)->u2.arglist->next->next->next->u1.str = (yyvsp[-1].str);
2822                 prev_word=0;
2823         ;}
2824     break;
2825
2826   case 143:
2827 #line 647 "ael.y"
2828     {
2829                 (yyval.pval)=npval(PV_WORD,(yylsp[-9]).first_line,(yylsp[-8]).last_line, (yylsp[-9]).first_column, (yylsp[-8]).last_column);
2830                 (yyval.pval)->u1.str = (yyvsp[-9].str);
2831                 (yyval.pval)->u2.arglist = npval(PV_WORD,(yylsp[-7]).first_line,(yylsp[-7]).last_line, (yylsp[-7]).first_column, (yylsp[-7]).last_column);
2832                 (yyval.pval)->u2.arglist->u1.str = (yyvsp[-7].str);
2833                 (yyval.pval)->u2.arglist->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2834                 (yyval.pval)->u2.arglist->next->u1.str = (yyvsp[-5].str);
2835                 (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);
2836                 (yyval.pval)->u2.arglist->next->next->u1.str = (yyvsp[-3].str);
2837                 (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);
2838                 (yyval.pval)->u2.arglist->next->next->next->u1.str = (yyvsp[-1].str);
2839                 prev_word=0;
2840         ;}
2841     break;
2842
2843   case 144:
2844 #line 660 "ael.y"
2845     {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); ;}
2846     break;
2847
2848   case 145:
2849 #line 661 "ael.y"
2850     {pval *z = npval(PV_WORD,(yylsp[-13]).first_line,(yylsp[-12]).last_line, (yylsp[-13]).first_column, (yylsp[-12]).last_column);
2851                 (yyval.pval)=(yyvsp[-14].pval); z->u1.str = (yyvsp[-13].str); linku1((yyval.pval),z);
2852                 z->u2.arglist = npval(PV_WORD,(yylsp[-11]).first_line,(yylsp[-11]).last_line, (yylsp[-11]).first_column, (yylsp[-11]).last_column);
2853                 asprintf( &((yyval.pval)->u2.arglist->u1.str), "%s:%s:%s", (yyvsp[-11].str), (yyvsp[-9].str), (yyvsp[-7].str));
2854                 free((yyvsp[-11].str));
2855                 free((yyvsp[-9].str));
2856                 free((yyvsp[-7].str));
2857                 z->u2.arglist->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2858                 z->u2.arglist->next->u1.str = (yyvsp[-5].str);
2859                 z->u2.arglist->next->next = npval(PV_WORD,(yylsp[-3]).first_line,(yylsp[-3]).last_line, (yylsp[-3]).first_column, (yylsp[-3]).last_column);
2860                 z->u2.arglist->next->next->u1.str = (yyvsp[-3].str);
2861                 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);
2862                 z->u2.arglist->next->next->next->u1.str = (yyvsp[-1].str);
2863                 prev_word=0;
2864         ;}
2865     break;
2866
2867   case 146:
2868 #line 677 "ael.y"
2869     {pval *z = npval(PV_WORD,(yylsp[-9]).first_line,(yylsp[-9]).last_line, (yylsp[-9]).first_column, (yylsp[-8]).last_column);
2870                 (yyval.pval)=(yyvsp[-10].pval); z->u1.str = (yyvsp[-9].str); linku1((yyval.pval),z);
2871                 z->u2.arglist = npval(PV_WORD,(yylsp[-7]).first_line,(yylsp[-7]).last_line, (yylsp[-7]).first_column, (yylsp[-7]).last_column);
2872                 (yyval.pval)->u2.arglist->u1.str = (yyvsp[-7].str);
2873                 z->u2.arglist->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2874                 z->u2.arglist->next->u1.str = (yyvsp[-5].str);
2875                 z->u2.arglist->next->next = npval(PV_WORD,(yylsp[-3]).first_line,(yylsp[-3]).last_line, (yylsp[-3]).first_column, (yylsp[-3]).last_column);
2876                 z->u2.arglist->next->next->u1.str = (yyvsp[-3].str);
2877                 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);
2878                 z->u2.arglist->next->next->next->u1.str = (yyvsp[-1].str);
2879                 prev_word=0;
2880         ;}
2881     break;
2882
2883   case 147:
2884 #line 689 "ael.y"
2885     {(yyval.pval)=(yyvsp[-1].pval);;}
2886     break;
2887
2888   case 148:
2889 #line 692 "ael.y"
2890     { (yyval.str) = (yyvsp[0].str);;}
2891     break;
2892
2893   case 149:
2894 #line 693 "ael.y"
2895     {(yyval.str)=strdup("default");;}
2896     break;
2897
2898   case 150:
2899 #line 696 "ael.y"
2900     {
2901                 (yyval.pval)= npval(PV_INCLUDES,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column);
2902                 (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
2903     break;
2904
2905   case 151:
2906 #line 699 "ael.y"
2907     {
2908                 (yyval.pval)= npval(PV_INCLUDES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);;}
2909     break;
2910
2911
2912       default: break;
2913     }
2914
2915 /* Line 1126 of yacc.c.  */
2916 #line 2917 "ael.tab.c"
2917 \f
2918   yyvsp -= yylen;
2919   yyssp -= yylen;
2920   yylsp -= yylen;
2921
2922   YY_STACK_PRINT (yyss, yyssp);
2923
2924   *++yyvsp = yyval;
2925   *++yylsp = yyloc;
2926
2927   /* Now `shift' the result of the reduction.  Determine what state
2928      that goes to, based on the state we popped back to and the rule
2929      number reduced by.  */
2930
2931   yyn = yyr1[yyn];
2932
2933   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2934   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2935     yystate = yytable[yystate];
2936   else
2937     yystate = yydefgoto[yyn - YYNTOKENS];
2938
2939   goto yynewstate;
2940
2941
2942 /*------------------------------------.
2943 | yyerrlab -- here on detecting error |
2944 `------------------------------------*/
2945 yyerrlab:
2946   /* If not already recovering from an error, report this error.  */
2947   if (!yyerrstatus)
2948     {
2949       ++yynerrs;
2950 #if YYERROR_VERBOSE
2951       yyn = yypact[yystate];
2952
2953       if (YYPACT_NINF < yyn && yyn < YYLAST)
2954         {
2955           int yytype = YYTRANSLATE (yychar);
2956           YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
2957           YYSIZE_T yysize = yysize0;
2958           YYSIZE_T yysize1;
2959           int yysize_overflow = 0;
2960           char *yymsg = 0;
2961 #         define YYERROR_VERBOSE_ARGS_MAXIMUM 5
2962           char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2963           int yyx;
2964
2965 #if 0
2966           /* This is so xgettext sees the translatable formats that are
2967              constructed on the fly.  */
2968           YY_("syntax error, unexpected %s");
2969           YY_("syntax error, unexpected %s, expecting %s");
2970           YY_("syntax error, unexpected %s, expecting %s or %s");
2971           YY_("syntax error, unexpected %s, expecting %s or %s or %s");
2972           YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
2973 #endif
2974           char *yyfmt;
2975           char const *yyf;
2976           static char const yyunexpected[] = "syntax error, unexpected %s";
2977           static char const yyexpecting[] = ", expecting %s";
2978           static char const yyor[] = " or %s";
2979           char yyformat[sizeof yyunexpected
2980                         + sizeof yyexpecting - 1
2981                         + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
2982                            * (sizeof yyor - 1))];
2983           char const *yyprefix = yyexpecting;
2984
2985           /* Start YYX at -YYN if negative to avoid negative indexes in
2986              YYCHECK.  */
2987           int yyxbegin = yyn < 0 ? -yyn : 0;
2988
2989           /* Stay within bounds of both yycheck and yytname.  */
2990           int yychecklim = YYLAST - yyn;
2991           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2992           int yycount = 1;
2993
2994           yyarg[0] = yytname[yytype];
2995           yyfmt = yystpcpy (yyformat, yyunexpected);
2996
2997           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2998             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2999               {
3000                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
3001                   {
3002                     yycount = 1;
3003                     yysize = yysize0;
3004                     yyformat[sizeof yyunexpected - 1] = '\0';
3005                     break;
3006                   }
3007                 yyarg[yycount++] = yytname[yyx];
3008                 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
3009                 yysize_overflow |= yysize1 < yysize;
3010                 yysize = yysize1;
3011                 yyfmt = yystpcpy (yyfmt, yyprefix);
3012                 yyprefix = yyor;
3013               }
3014
3015           yyf = YY_(yyformat);
3016           yysize1 = yysize + yystrlen (yyf);
3017           yysize_overflow |= yysize1 < yysize;
3018           yysize = yysize1;
3019
3020           if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
3021             yymsg = (char *) YYSTACK_ALLOC (yysize);
3022           if (yymsg)
3023             {
3024               /* Avoid sprintf, as that infringes on the user's name space.
3025                  Don't have undefined behavior even if the translation
3026                  produced a string with the wrong number of "%s"s.  */
3027               char *yyp = yymsg;
3028               int yyi = 0;
3029               while ((*yyp = *yyf))
3030                 {
3031                   if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
3032                     {
3033                       yyp += yytnamerr (yyp, yyarg[yyi++]);
3034                       yyf += 2;
3035                     }
3036                   else
3037                     {
3038                       yyp++;
3039                       yyf++;
3040                     }
3041                 }
3042               yyerror (&yylloc, parseio, yymsg);
3043               YYSTACK_FREE (yymsg);
3044             }
3045           else
3046             {
3047               yyerror (&yylloc, parseio, YY_("syntax error"));
3048               goto yyexhaustedlab;
3049             }
3050         }
3051       else
3052 #endif /* YYERROR_VERBOSE */
3053         yyerror (&yylloc, parseio, YY_("syntax error"));
3054     }
3055
3056   yyerror_range[0] = yylloc;
3057
3058   if (yyerrstatus == 3)
3059     {
3060       /* If just tried and failed to reuse look-ahead token after an
3061          error, discard it.  */
3062
3063       if (yychar <= YYEOF)
3064         {
3065           /* Return failure if at end of input.  */
3066           if (yychar == YYEOF)
3067             YYABORT;
3068         }
3069       else
3070         {
3071           yydestruct ("Error: discarding", yytoken, &yylval, &yylloc);
3072           yychar = YYEMPTY;
3073         }
3074     }
3075
3076   /* Else will try to reuse look-ahead token after shifting the error
3077      token.  */
3078   goto yyerrlab1;
3079
3080
3081 /*---------------------------------------------------.
3082 | yyerrorlab -- error raised explicitly by YYERROR.  |
3083 `---------------------------------------------------*/
3084 yyerrorlab:
3085
3086   /* Pacify compilers like GCC when the user code never invokes
3087      YYERROR and the label yyerrorlab therefore never appears in user
3088      code.  */
3089   if (0)
3090      goto yyerrorlab;
3091
3092   yyerror_range[0] = yylsp[1-yylen];
3093   yylsp -= yylen;
3094   yyvsp -= yylen;
3095   yyssp -= yylen;
3096   yystate = *yyssp;
3097   goto yyerrlab1;
3098
3099
3100 /*-------------------------------------------------------------.
3101 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
3102 `-------------------------------------------------------------*/
3103 yyerrlab1:
3104   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
3105
3106   for (;;)
3107     {
3108       yyn = yypact[yystate];
3109       if (yyn != YYPACT_NINF)
3110         {
3111           yyn += YYTERROR;
3112           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3113             {
3114               yyn = yytable[yyn];
3115               if (0 < yyn)
3116                 break;
3117             }
3118         }
3119
3120       /* Pop the current state because it cannot handle the error token.  */
3121       if (yyssp == yyss)
3122         YYABORT;
3123
3124       yyerror_range[0] = *yylsp;
3125       yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp);
3126       YYPOPSTACK;
3127       yystate = *yyssp;
3128       YY_STACK_PRINT (yyss, yyssp);
3129     }
3130
3131   if (yyn == YYFINAL)
3132     YYACCEPT;
3133
3134   *++yyvsp = yylval;
3135
3136   yyerror_range[1] = yylloc;
3137   /* Using YYLLOC is tempting, but would change the location of
3138      the look-ahead.  YYLOC is available though. */
3139   YYLLOC_DEFAULT (yyloc, yyerror_range - 1, 2);
3140   *++yylsp = yyloc;
3141
3142   /* Shift the error token. */
3143   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3144
3145   yystate = yyn;
3146   goto yynewstate;
3147
3148
3149 /*-------------------------------------.
3150 | yyacceptlab -- YYACCEPT comes here.  |
3151 `-------------------------------------*/
3152 yyacceptlab:
3153   yyresult = 0;
3154   goto yyreturn;
3155
3156 /*-----------------------------------.
3157 | yyabortlab -- YYABORT comes here.  |
3158 `-----------------------------------*/
3159 yyabortlab:
3160   yyresult = 1;
3161   goto yyreturn;
3162
3163 #ifndef yyoverflow
3164 /*-------------------------------------------------.
3165 | yyexhaustedlab -- memory exhaustion comes here.  |
3166 `-------------------------------------------------*/
3167 yyexhaustedlab:
3168   yyerror (&yylloc, parseio, YY_("memory exhausted"));
3169   yyresult = 2;
3170   /* Fall through.  */
3171 #endif
3172
3173 yyreturn:
3174   if (yychar != YYEOF && yychar != YYEMPTY)
3175      yydestruct ("Cleanup: discarding lookahead",
3176                  yytoken, &yylval, &yylloc);
3177   while (yyssp != yyss)
3178     {
3179       yydestruct ("Cleanup: popping",
3180                   yystos[*yyssp], yyvsp, yylsp);
3181       YYPOPSTACK;
3182     }
3183 #ifndef yyoverflow
3184   if (yyss != yyssa)
3185     YYSTACK_FREE (yyss);
3186 #endif
3187   return yyresult;
3188 }
3189
3190
3191 #line 704 "ael.y"
3192
3193
3194 static char *token_equivs1[] =
3195 {
3196         "AMPER",
3197         "AT",
3198         "BAR",
3199         "COLON",
3200         "COMMA",
3201         "EQ",
3202         "EXTENMARK",
3203         "KW_BREAK",
3204         "KW_CASE",
3205         "KW_CATCH",
3206         "KW_CONTEXT",
3207         "KW_CONTINUE",
3208         "KW_DEFAULT",
3209         "KW_ELSE",
3210         "KW_ESWITCHES",
3211         "KW_FOR",
3212         "KW_GLOBALS",
3213         "KW_GOTO",
3214         "KW_HINT",
3215         "KW_IFTIME",
3216         "KW_IF",
3217         "KW_IGNOREPAT",
3218         "KW_INCLUDES"
3219         "KW_JUMP",
3220         "KW_MACRO",
3221         "KW_PATTERN",
3222         "KW_REGEXTEN",
3223         "KW_RETURN",
3224         "KW_SWITCHES",
3225         "KW_SWITCH",
3226         "KW_WHILE",
3227         "LC",
3228         "LP",
3229         "RC",
3230         "RP",
3231         "SEMI",
3232 };
3233
3234 static char *token_equivs2[] =
3235 {
3236         "&",
3237         "@",
3238         "|",
3239         ":",
3240         ",",
3241         "=",
3242         "=>",
3243         "break",
3244         "case",
3245         "catch",
3246         "context",
3247         "continue",
3248         "default",
3249         "else",
3250         "eswitches",
3251         "for",
3252         "globals",
3253         "goto",
3254         "hint",
3255         "ifTime",
3256         "if",
3257         "ignorepat",
3258         "includes"
3259         "jump",
3260         "macro",
3261         "pattern",
3262         "regexten",
3263         "return",
3264         "switches",
3265         "switch",
3266         "while",
3267         "{",
3268         "(",
3269         "}",
3270         ")",
3271         ";",
3272 };
3273
3274
3275 static char *ael_token_subst(char *mess)
3276 {
3277         /* calc a length, malloc, fill, and return; yyerror had better free it! */
3278         int len=0,i;
3279         char *p;
3280         char *res, *s,*t;
3281         int token_equivs_entries = sizeof(token_equivs1)/sizeof(char*);
3282
3283         for (p=mess; *p; p++) {
3284                 for (i=0; i<token_equivs_entries; i++) {
3285                         if ( strncmp(p,token_equivs1[i],strlen(token_equivs1[i])) == 0 )
3286                         {
3287                                 len+=strlen(token_equivs2[i])+2;
3288                                 p += strlen(token_equivs1[i])-1;
3289                                 break;
3290                         }
3291                 }
3292                 len++;
3293         }
3294         res = (char*)malloc(len+1);
3295         res[0] = 0;
3296         s = res;
3297         for (p=mess; *p;) {
3298                 int found = 0;
3299                 for (i=0; i<token_equivs_entries; i++) {
3300                         if ( strncmp(p,token_equivs1[i],strlen(token_equivs1[i])) == 0 ) {
3301                                 *s++ = '\'';
3302                                 for (t=token_equivs2[i]; *t;) {
3303                                         *s++ = *t++;
3304                                 }
3305                                 *s++ = '\'';
3306                                 p += strlen(token_equivs1[i]);
3307                                 found = 1;
3308                                 break;
3309                         }
3310                 }
3311                 if( !found )
3312                         *s++ = *p++;
3313         }
3314         *s++ = 0;
3315         return res;
3316 }
3317
3318 void yyerror(YYLTYPE *locp, struct parse_io *parseio,  char const *s)
3319 {
3320         char *s2 = ael_token_subst((char *)s);
3321         if (locp->first_line == locp->last_line) {
3322                 ast_log(LOG_ERROR, "==== File: %s, Line %d, Cols: %d-%d: Error: %s\n", my_file, locp->first_line, locp->first_column, locp->last_column, s2);
3323         } else {
3324                 ast_log(LOG_ERROR, "==== File: %s, Line %d Col %d  to Line %d Col %d: Error: %s\n", my_file, locp->first_line, locp->first_column, locp->last_line, locp->last_column, s2);
3325         }
3326         free(s2);
3327         parseio->syntax_error_count++;
3328 }
3329
3330 static struct pval *npval(pvaltype type, int first_line, int last_line,
3331         int first_column, int last_column)
3332 {
3333         extern char *my_file;
3334         pval *z = (pval *)calloc(sizeof(struct pval),1);
3335         z->type = type;
3336         z->startline = first_line;
3337         z->endline = last_line;
3338         z->startcol = first_column;
3339         z->endcol = last_column;
3340         z->filename = strdup(my_file);
3341         return z;
3342 }
3343
3344 /* append second element to the list in the first one */
3345 static void linku1(pval *head, pval *tail)
3346 {
3347         if (!head->next) {
3348                 head->next = tail;
3349         } else {
3350                 head->u1_last->next = tail;
3351         }
3352         head->u1_last = tail;
3353 }
3354
3355