more formatting cleanup
[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,   326,   346,
563      347,   349,   350,   351,   354,   355,   356,   359,   359,   364,
564      365,   365,   368,   369,   370,   371,   372,   373,   371,   376,
565      376,   379,   380,   381,   382,   383,   385,   385,   418,   419,
566      420,   421,   422,   423,   424,   425,   426,   427,   430,   431,
567      434,   437,   442,   447,   452,   459,   462,   465,   470,   475,
568      480,   487,   487,   490,   493,   493,   502,   508,   511,   512,
569      513,   514,   517,   518,   523,   524,   525,   526,   527,   528,
570      531,   532,   537,   538,   541,   542,   545,   546,   549,   550,
571      551,   554,   555,   576,   589,   590,   610,   623,   626,   627,
572      630,   631
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[-1]).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[-4]).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                 (yyval.pval)->u1.list->u1.str = (char*)malloc(strlen((yyvsp[-11].str))+strlen((yyvsp[-9].str))+strlen((yyvsp[-7].str))+4);
2184                 strcpy((yyval.pval)->u1.list->u1.str,(yyvsp[-11].str));
2185                 strcat((yyval.pval)->u1.list->u1.str,":");
2186                 strcat((yyval.pval)->u1.list->u1.str,(yyvsp[-9].str));
2187                 strcat((yyval.pval)->u1.list->u1.str,":");
2188                 strcat((yyval.pval)->u1.list->u1.str,(yyvsp[-7].str));
2189                 free((yyvsp[-11].str));
2190                 free((yyvsp[-9].str));
2191                 free((yyvsp[-7].str));
2192                 (yyval.pval)->u1.list->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2193                 (yyval.pval)->u1.list->next->u1.str = (yyvsp[-5].str);
2194                 (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);
2195                 (yyval.pval)->u1.list->next->next->u1.str = (yyvsp[-3].str);
2196                 (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);
2197                 (yyval.pval)->u1.list->next->next->next->u1.str = (yyvsp[-1].str);
2198                 prev_word = 0;
2199         ;}
2200     break;
2201
2202   case 58:
2203 #line 326 "ael.y"
2204     {
2205                 (yyval.pval)= npval(PV_IFTIME,(yylsp[-9]).first_line,(yylsp[-5]).last_line, (yylsp[-9]).first_column, (yylsp[-5]).last_column);
2206                 (yyval.pval)->u1.list = npval(PV_WORD,(yylsp[-7]).first_line,(yylsp[-7]).last_line, (yylsp[-7]).first_column, (yylsp[-7]).last_column);
2207                 (yyval.pval)->u1.list->u1.str = (yyvsp[-7].str);
2208                 (yyval.pval)->u1.list->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2209                 (yyval.pval)->u1.list->next->u1.str = (yyvsp[-5].str);
2210                 (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);
2211                 (yyval.pval)->u1.list->next->next->u1.str = (yyvsp[-3].str);
2212                 (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);
2213                 (yyval.pval)->u1.list->next->next->next->u1.str = (yyvsp[-1].str);
2214                 prev_word = 0;
2215         ;}
2216     break;
2217
2218   case 59:
2219 #line 346 "ael.y"
2220     { (yyval.str) = (yyvsp[0].str);;}
2221     break;
2222
2223   case 60:
2224 #line 347 "ael.y"
2225     { (yyval.str) = (char*)malloc(strlen((yyvsp[-1].str))+strlen((yyvsp[0].str))+1); strcpy((yyval.str), (yyvsp[-1].str)); strcat((yyval.str), (yyvsp[0].str));  free((yyvsp[-1].str)); free((yyvsp[0].str));prev_word = (yyval.str);;}
2226     break;
2227
2228   case 61:
2229 #line 349 "ael.y"
2230     { (yyval.str) = (yyvsp[0].str);;}
2231     break;
2232
2233   case 62:
2234 #line 350 "ael.y"
2235     { (yyval.str) = (char*)malloc(strlen((yyvsp[-1].str))+strlen((yyvsp[0].str))+1); strcpy((yyval.str), (yyvsp[-1].str)); strcat((yyval.str), (yyvsp[0].str));  free((yyvsp[-1].str)); free((yyvsp[0].str));prev_word = (yyval.str);;}
2236     break;
2237
2238   case 63:
2239 #line 351 "ael.y"
2240     { (yyval.str) = (char*)malloc(strlen((yyvsp[-2].str))+strlen((yyvsp[-1].str))+strlen((yyvsp[0].str))+1); strcpy((yyval.str), (yyvsp[-2].str)); strcat((yyval.str), (yyvsp[-1].str));  strcat((yyval.str), (yyvsp[0].str));  free((yyvsp[-2].str)); free((yyvsp[-1].str)); free((yyvsp[0].str));prev_word=(yyval.str);;}
2241     break;
2242
2243   case 64:
2244 #line 354 "ael.y"
2245     { (yyval.str) = (yyvsp[0].str);;}
2246     break;
2247
2248   case 65:
2249 #line 355 "ael.y"
2250     { (yyval.str) = (char*)malloc(strlen((yyvsp[-1].str))+strlen((yyvsp[0].str))+1); strcpy((yyval.str), (yyvsp[-1].str)); strcat((yyval.str), (yyvsp[0].str));  free((yyvsp[-1].str)); free((yyvsp[0].str));;}
2251     break;
2252
2253   case 66:
2254 #line 356 "ael.y"
2255     { (yyval.str) = (char*)malloc(strlen((yyvsp[-2].str))+strlen((yyvsp[0].str))+2); strcpy((yyval.str), (yyvsp[-2].str)); strcat((yyval.str),":"); strcat((yyval.str), (yyvsp[0].str));  free((yyvsp[-2].str)); free((yyvsp[0].str));;}
2256     break;
2257
2258   case 67:
2259 #line 359 "ael.y"
2260     { reset_parencount(parseio->scanner); ;}
2261     break;
2262
2263   case 68:
2264 #line 360 "ael.y"
2265     {(yyval.pval)=npval(PV_SWITCH,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column);
2266                                                 (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
2267     break;
2268
2269   case 69:
2270 #line 364 "ael.y"
2271     {(yyval.pval)=npval(PV_STATEMENTBLOCK,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
2272     break;
2273
2274   case 70:
2275 #line 365 "ael.y"
2276     {reset_semicount(parseio->scanner);;}
2277     break;
2278
2279   case 71:
2280 #line 366 "ael.y"
2281     {(yyval.pval)=npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
2282                                 (yyval.pval)->u1.str = (yyvsp[-4].str); (yyval.pval)->u2.val = (yyvsp[-1].str); ;}
2283     break;
2284
2285   case 72:
2286 #line 368 "ael.y"
2287     {(yyval.pval)=npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
2288     break;
2289
2290   case 73:
2291 #line 369 "ael.y"
2292     {(yyval.pval)=npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
2293     break;
2294
2295   case 74:
2296 #line 370 "ael.y"
2297     {(yyval.pval)=npval(PV_LABEL,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str); ;}
2298     break;
2299
2300   case 75:
2301 #line 371 "ael.y"
2302     {reset_semicount(parseio->scanner);;}
2303     break;
2304
2305   case 76:
2306 #line 372 "ael.y"
2307     {reset_semicount(parseio->scanner);;}
2308     break;
2309
2310   case 77:
2311 #line 373 "ael.y"
2312     {reset_parencount(parseio->scanner);;}
2313     break;
2314
2315   case 78:
2316 #line 374 "ael.y"
2317     { (yyval.pval)=npval(PV_FOR,(yylsp[-11]).first_line,(yylsp[0]).last_line, (yylsp[-11]).first_column, (yylsp[0]).last_column);
2318                                                 (yyval.pval)->u1.for_init = (yyvsp[-8].str); (yyval.pval)->u2.for_test=(yyvsp[-5].str); (yyval.pval)->u3.for_inc = (yyvsp[-2].str); (yyval.pval)->u4.for_statements = (yyvsp[0].pval);;}
2319     break;
2320
2321   case 79:
2322 #line 376 "ael.y"
2323     {reset_parencount(parseio->scanner);;}
2324     break;
2325
2326   case 80:
2327 #line 377 "ael.y"
2328     {(yyval.pval)=npval(PV_WHILE,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column);
2329                                         (yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->u2.statements = (yyvsp[0].pval); ;}
2330     break;
2331
2332   case 81:
2333 #line 379 "ael.y"
2334     {(yyval.pval)=(yyvsp[-1].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2335     break;
2336
2337   case 82:
2338 #line 380 "ael.y"
2339     {(yyval.pval)=(yyvsp[-2].pval); (yyval.pval)->u2.statements = (yyvsp[-1].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2340     break;
2341
2342   case 83:
2343 #line 381 "ael.y"
2344     {(yyval.pval) = (yyvsp[-1].pval);(yyval.pval)->endline = (yylsp[-1]).last_line; (yyval.pval)->endcol = (yylsp[-1]).last_column;;}
2345     break;
2346
2347   case 84:
2348 #line 382 "ael.y"
2349     { (yyval.pval) = (yyvsp[-1].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2350     break;
2351
2352   case 85:
2353 #line 383 "ael.y"
2354     { (yyval.pval)= npval(PV_APPLICATION_CALL,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);
2355                                                                                                                                                                                 (yyval.pval)->u1.str = (yyvsp[-1].str);;}
2356     break;
2357
2358   case 86:
2359 #line 385 "ael.y"
2360     {reset_semicount(parseio->scanner);;}
2361     break;
2362
2363   case 87:
2364 #line 385 "ael.y"
2365     {
2366                           char *bufx;
2367                                                   int tot=0;
2368                                                   pval *pptr;
2369
2370                           (yyval.pval) = npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
2371                                                   (yyval.pval)->u2.val=(yyvsp[-1].str);
2372                                                   /* rebuild the original string-- this is not an app call, it's an unwrapped vardec, with a func call on the LHS */
2373                           /* string to big to fit in the buffer? */
2374                                                   tot+=strlen((yyvsp[-4].pval)->u1.str);
2375                                                   for(pptr=(yyvsp[-4].pval)->u2.arglist;pptr;pptr=pptr->next) {
2376                                                           tot+=strlen(pptr->u1.str);
2377                                                           tot++; /* for a sep like a comma */
2378                                                   }
2379                                                   tot+=4; /* for safety */
2380                                                   bufx = (char *)malloc(tot);
2381                                                   strcpy(bufx,(yyvsp[-4].pval)->u1.str);
2382                                                   strcat(bufx,"(");
2383                                                   for (pptr=(yyvsp[-4].pval)->u2.arglist;pptr;pptr=pptr->next) {
2384                                                           if ( pptr != (yyvsp[-4].pval)->u2.arglist )
2385                                                                   strcat(bufx,",");
2386                                                           strcat(bufx,pptr->u1.str);
2387                                                   }
2388                                                   strcat(bufx,")");
2389 #ifdef AAL_ARGCHECK
2390                                                   if ( !ael_is_funcname((yyvsp[-4].pval)->u1.str) )
2391                               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",
2392                                                                           my_file, (yylsp[-4]).first_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column, (yyvsp[-4].pval)->u1.str);
2393 #endif
2394                                                   (yyval.pval)->u1.str = bufx;
2395                                                   destroy_pval((yyvsp[-4].pval)); /* the app call it is not, get rid of that chain */
2396                                                   prev_word = 0;
2397                        ;}
2398     break;
2399
2400   case 88:
2401 #line 418 "ael.y"
2402     { (yyval.pval) = npval(PV_BREAK,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;}
2403     break;
2404
2405   case 89:
2406 #line 419 "ael.y"
2407     {(yyval.pval) = npval(PV_RETURN,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;}
2408     break;
2409
2410   case 90:
2411 #line 420 "ael.y"
2412     {(yyval.pval) = npval(PV_CONTINUE,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;}
2413     break;
2414
2415   case 91:
2416 #line 421 "ael.y"
2417     {(yyval.pval)=(yyvsp[-1].pval); (yyval.pval)->u2.statements = (yyvsp[0].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2418     break;
2419
2420   case 92:
2421 #line 422 "ael.y"
2422     {(yyval.pval)=(yyvsp[-3].pval); (yyval.pval)->u2.statements = (yyvsp[-2].pval);(yyval.pval)->endline = (yylsp[-2]).last_line; (yyval.pval)->endcol = (yylsp[-2]).last_column; (yyval.pval)->u3.else_statements = (yyvsp[0].pval);;}
2423     break;
2424
2425   case 93:
2426 #line 423 "ael.y"
2427     {(yyval.pval)=(yyvsp[-1].pval); (yyval.pval)->u2.statements = (yyvsp[0].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2428     break;
2429
2430   case 94:
2431 #line 424 "ael.y"
2432     {(yyval.pval)=(yyvsp[-3].pval); (yyval.pval)->u2.statements = (yyvsp[-2].pval);(yyval.pval)->endline = (yylsp[-2]).last_line; (yyval.pval)->endcol = (yylsp[-2]).last_column; (yyval.pval)->u3.else_statements = (yyvsp[0].pval);;}
2433     break;
2434
2435   case 95:
2436 #line 425 "ael.y"
2437     {(yyval.pval)=(yyvsp[-1].pval); (yyval.pval)->u2.statements = (yyvsp[0].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2438     break;
2439
2440   case 96:
2441 #line 426 "ael.y"
2442     {(yyval.pval)=(yyvsp[-3].pval); (yyval.pval)->u2.statements = (yyvsp[-2].pval);(yyval.pval)->endline = (yylsp[-2]).last_line; (yyval.pval)->endcol = (yylsp[-2]).last_column; (yyval.pval)->u3.else_statements = (yyvsp[0].pval);;}
2443     break;
2444
2445   case 97:
2446 #line 427 "ael.y"
2447     { (yyval.pval)=0; ;}
2448     break;
2449
2450   case 98:
2451 #line 430 "ael.y"
2452     { (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);;}
2453     break;
2454
2455   case 99:
2456 #line 431 "ael.y"
2457     {(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2458                                         (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);
2459                                         (yyval.pval)->next->u1.str = (yyvsp[0].str);;}
2460     break;
2461
2462   case 100:
2463 #line 434 "ael.y"
2464     {(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2465                                         (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);
2466                                         (yyval.pval)->next->u1.str = (yyvsp[0].str);;}
2467     break;
2468
2469   case 101:
2470 #line 437 "ael.y"
2471     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2472                                         (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);
2473                                         (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2474                                         (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2475                                         (yyval.pval)->next->next->u1.str = (yyvsp[0].str); ;}
2476     break;
2477
2478   case 102:
2479 #line 442 "ael.y"
2480     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2481                                         (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);
2482                                         (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2483                                         (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2484                                         (yyval.pval)->next->next->u1.str = (yyvsp[0].str); ;}
2485     break;
2486
2487   case 103:
2488 #line 447 "ael.y"
2489     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2490                                         (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);
2491                                         (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2492                                         (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2493                                         (yyval.pval)->next->next->u1.str = (yyvsp[0].str); ;}
2494     break;
2495
2496   case 104:
2497 #line 452 "ael.y"
2498     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2499                                         (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);
2500                                         (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2501                                         (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2502                                         (yyval.pval)->next->next->u1.str = (yyvsp[0].str); ;}
2503     break;
2504
2505   case 105:
2506 #line 459 "ael.y"
2507     {(yyval.pval)=npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2508                                         (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);
2509                                         (yyval.pval)->next->u1.str = strdup("1");;}
2510     break;
2511
2512   case 106:
2513 #line 462 "ael.y"
2514     {(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2515                                         (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);
2516                                         (yyval.pval)->next->u1.str = (yyvsp[0].str);;}
2517     break;
2518
2519   case 107:
2520 #line 465 "ael.y"
2521     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2522                                         (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);
2523                                         (yyval.pval)->next->u1.str = (yyvsp[-4].str);
2524                                         (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2525                                         (yyval.pval)->next->next->u1.str = (yyvsp[-2].str); ;}
2526     break;
2527
2528   case 108:
2529 #line 470 "ael.y"
2530     {(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2531                                         (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);
2532                                         (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2533                                         (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2534                                         (yyval.pval)->next->next->u1.str = strdup("1"); ;}
2535     break;
2536
2537   case 109:
2538 #line 475 "ael.y"
2539     {(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
2540                                         (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);
2541                                         (yyval.pval)->next->u1.str = (yyvsp[-4].str);
2542                                         (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2543                                         (yyval.pval)->next->next->u1.str = (yyvsp[-2].str); ;}
2544     break;
2545
2546   case 110:
2547 #line 480 "ael.y"
2548     {(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
2549                                         (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);
2550                                         (yyval.pval)->next->u1.str = (yyvsp[-2].str);
2551                                         (yyval.pval)->next->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
2552                                         (yyval.pval)->next->next->u1.str = strdup("1"); ;}
2553     break;
2554
2555   case 111:
2556 #line 487 "ael.y"
2557     {reset_argcount(parseio->scanner);;}
2558     break;
2559
2560   case 112:
2561 #line 488 "ael.y"
2562     {(yyval.pval)= npval(PV_MACRO_CALL,(yylsp[-4]).first_line,(yylsp[-3]).last_line, (yylsp[-4]).first_column, (yylsp[-3]).last_column);
2563                         (yyval.pval)->u1.str = (yyvsp[-4].str); (yyval.pval)->u2.arglist = (yyvsp[-1].pval);;}
2564     break;
2565
2566   case 113:
2567 #line 490 "ael.y"
2568     {(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); ;}
2569     break;
2570
2571   case 114:
2572 #line 493 "ael.y"
2573     {reset_argcount(parseio->scanner);;}
2574     break;
2575
2576   case 115:
2577 #line 493 "ael.y"
2578     {if (strcasecmp((yyvsp[-2].str),"goto") == 0) {
2579                                                                                                                                                                                         (yyval.pval)= npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2580                                                                                                                                                                                         free((yyvsp[-2].str)); /* won't be using this */
2581                                                                                                                                                                                         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 );
2582                                                                                                                                                                                 } else
2583                                                                                                                                                                                         (yyval.pval)= npval(PV_APPLICATION_CALL,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
2584                                                                                                                                                                                 (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
2585     break;
2586
2587   case 116:
2588 #line 502 "ael.y"
2589     {(yyval.pval) = (yyvsp[-2].pval);
2590                 if( (yyval.pval)->type == PV_GOTO )
2591                         (yyval.pval)->u1.list = (yyvsp[-1].pval);
2592                 else
2593                         (yyval.pval)->u2.arglist = (yyvsp[-1].pval);
2594                 (yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2595     break;
2596
2597   case 117:
2598 #line 508 "ael.y"
2599     {(yyval.pval)=(yyvsp[-1].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
2600     break;
2601
2602   case 118:
2603 #line 511 "ael.y"
2604     { (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);;}
2605     break;
2606
2607   case 119:
2608 #line 512 "ael.y"
2609     { (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(""); ;}
2610     break;
2611
2612   case 120:
2613 #line 513 "ael.y"
2614     { 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);;}
2615     break;
2616
2617   case 121:
2618 #line 514 "ael.y"
2619     { 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("");;}
2620     break;
2621
2622   case 122:
2623 #line 517 "ael.y"
2624     {(yyval.pval)=(yyvsp[0].pval);;}
2625     break;
2626
2627   case 123:
2628 #line 518 "ael.y"
2629     { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
2630                                                  else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
2631                                                  else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
2632     break;
2633
2634   case 124:
2635 #line 523 "ael.y"
2636     {(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);;}
2637     break;
2638
2639   case 125:
2640 #line 524 "ael.y"
2641     {(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);;}
2642     break;
2643
2644   case 126:
2645 #line 525 "ael.y"
2646     {(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);;}
2647     break;
2648
2649   case 127:
2650 #line 526 "ael.y"
2651     {(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);;}
2652     break;
2653
2654   case 128:
2655 #line 527 "ael.y"
2656     {(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;;}
2657     break;
2658
2659   case 129:
2660 #line 528 "ael.y"
2661     {(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);;}
2662     break;
2663
2664   case 130:
2665 #line 531 "ael.y"
2666     {(yyval.pval) = (yyvsp[0].pval);;}
2667     break;
2668
2669   case 131:
2670 #line 532 "ael.y"
2671     { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
2672                                                  else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
2673                                                  else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
2674     break;
2675
2676   case 132:
2677 #line 537 "ael.y"
2678     {(yyval.pval)=(yyvsp[0].pval);;}
2679     break;
2680
2681   case 133:
2682 #line 538 "ael.y"
2683     {(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);;}
2684     break;
2685
2686   case 134:
2687 #line 541 "ael.y"
2688     {(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); ;}
2689     break;
2690
2691   case 135:
2692 #line 542 "ael.y"
2693     {(yyval.pval)= npval(PV_SWITCHES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);;}
2694     break;
2695
2696   case 136:
2697 #line 545 "ael.y"
2698     {(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); ;}
2699     break;
2700
2701   case 137:
2702 #line 546 "ael.y"
2703     {(yyval.pval)= npval(PV_ESWITCHES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); ;}
2704     break;
2705
2706   case 138:
2707 #line 549 "ael.y"
2708     {(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);;}
2709     break;
2710
2711   case 139:
2712 #line 550 "ael.y"
2713     {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); ;}
2714     break;
2715
2716   case 140:
2717 #line 551 "ael.y"
2718     {(yyval.pval)=(yyvsp[-1].pval);;}
2719     break;
2720
2721   case 141:
2722 #line 554 "ael.y"
2723     {(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);;}
2724     break;
2725
2726   case 142:
2727 #line 555 "ael.y"
2728     {
2729                     (yyval.pval)=npval(PV_WORD,(yylsp[-13]).first_line,(yylsp[-12]).last_line, (yylsp[-13]).first_column, (yylsp[-12]).last_column);
2730                     (yyval.pval)->u1.str = (yyvsp[-13].str);
2731                                         (yyval.pval)->u2.arglist = npval(PV_WORD,(yylsp[-11]).first_line,(yylsp[-7]).last_line, (yylsp[-11]).first_column, (yylsp[-7]).last_column);
2732                                         (yyval.pval)->u2.arglist->u1.str = (char*)malloc(strlen((yyvsp[-11].str))+strlen((yyvsp[-9].str))+strlen((yyvsp[-7].str))+4);
2733                                         strcpy((yyval.pval)->u2.arglist->u1.str,(yyvsp[-11].str));
2734                                         strcat((yyval.pval)->u2.arglist->u1.str,":");
2735                                         strcat((yyval.pval)->u2.arglist->u1.str,(yyvsp[-9].str));
2736                                         strcat((yyval.pval)->u2.arglist->u1.str,":");
2737                                         strcat((yyval.pval)->u2.arglist->u1.str,(yyvsp[-7].str));
2738                                         free((yyvsp[-11].str));
2739                                         free((yyvsp[-9].str));
2740                                         free((yyvsp[-7].str));
2741                                         (yyval.pval)->u2.arglist->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2742                                         (yyval.pval)->u2.arglist->next->u1.str = (yyvsp[-5].str);
2743                                         (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);
2744                                         (yyval.pval)->u2.arglist->next->next->u1.str = (yyvsp[-3].str);
2745                                         (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);
2746                                         (yyval.pval)->u2.arglist->next->next->next->u1.str = (yyvsp[-1].str);
2747                                         prev_word=0;
2748                         ;}
2749     break;
2750
2751   case 143:
2752 #line 576 "ael.y"
2753     {
2754                     (yyval.pval)=npval(PV_WORD,(yylsp[-9]).first_line,(yylsp[-8]).last_line, (yylsp[-9]).first_column, (yylsp[-8]).last_column);
2755                     (yyval.pval)->u1.str = (yyvsp[-9].str);
2756                                         (yyval.pval)->u2.arglist = npval(PV_WORD,(yylsp[-7]).first_line,(yylsp[-7]).last_line, (yylsp[-7]).first_column, (yylsp[-7]).last_column);
2757                                         (yyval.pval)->u2.arglist->u1.str = (yyvsp[-7].str);
2758                                         (yyval.pval)->u2.arglist->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2759                                         (yyval.pval)->u2.arglist->next->u1.str = (yyvsp[-5].str);
2760                                         (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);
2761                                         (yyval.pval)->u2.arglist->next->next->u1.str = (yyvsp[-3].str);
2762                                         (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);
2763                                         (yyval.pval)->u2.arglist->next->next->next->u1.str = (yyvsp[-1].str);
2764                                         prev_word=0;
2765                         ;}
2766     break;
2767
2768   case 144:
2769 #line 589 "ael.y"
2770     {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); ;}
2771     break;
2772
2773   case 145:
2774 #line 590 "ael.y"
2775     {pval *z = npval(PV_WORD,(yylsp[-13]).first_line,(yylsp[-12]).last_line, (yylsp[-13]).first_column, (yylsp[-12]).last_column);
2776                                         (yyval.pval)=(yyvsp[-14].pval); z->u1.str = (yyvsp[-13].str); linku1((yyval.pval),z);
2777                                         z->u2.arglist = npval(PV_WORD,(yylsp[-11]).first_line,(yylsp[-11]).last_line, (yylsp[-11]).first_column, (yylsp[-11]).last_column);
2778                                         (yyval.pval)->u2.arglist->u1.str = (char*)malloc(strlen((yyvsp[-11].str))+strlen((yyvsp[-9].str))+strlen((yyvsp[-7].str))+4);
2779                                         strcpy((yyval.pval)->u2.arglist->u1.str,(yyvsp[-11].str));
2780                                         strcat((yyval.pval)->u2.arglist->u1.str,":");
2781                                         strcat((yyval.pval)->u2.arglist->u1.str,(yyvsp[-9].str));
2782                                         strcat((yyval.pval)->u2.arglist->u1.str,":");
2783                                         strcat((yyval.pval)->u2.arglist->u1.str,(yyvsp[-7].str));
2784                                         free((yyvsp[-11].str));
2785                                         free((yyvsp[-9].str));
2786                                         free((yyvsp[-7].str));
2787                                         z->u2.arglist->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2788                                         z->u2.arglist->next->u1.str = (yyvsp[-5].str);
2789                                         z->u2.arglist->next->next = npval(PV_WORD,(yylsp[-3]).first_line,(yylsp[-3]).last_line, (yylsp[-3]).first_column, (yylsp[-3]).last_column);
2790                                         z->u2.arglist->next->next->u1.str = (yyvsp[-3].str);
2791                                         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);
2792                                         z->u2.arglist->next->next->next->u1.str = (yyvsp[-1].str);
2793                                         prev_word=0;
2794                         ;}
2795     break;
2796
2797   case 146:
2798 #line 611 "ael.y"
2799     {pval *z = npval(PV_WORD,(yylsp[-9]).first_line,(yylsp[-9]).last_line, (yylsp[-9]).first_column, (yylsp[-8]).last_column);
2800                                         (yyval.pval)=(yyvsp[-10].pval); z->u1.str = (yyvsp[-9].str); linku1((yyval.pval),z);
2801                                         z->u2.arglist = npval(PV_WORD,(yylsp[-7]).first_line,(yylsp[-7]).last_line, (yylsp[-7]).first_column, (yylsp[-7]).last_column);
2802                                         (yyval.pval)->u2.arglist->u1.str = (yyvsp[-7].str);
2803                                         z->u2.arglist->next = npval(PV_WORD,(yylsp[-5]).first_line,(yylsp[-5]).last_line, (yylsp[-5]).first_column, (yylsp[-5]).last_column);
2804                                         z->u2.arglist->next->u1.str = (yyvsp[-5].str);
2805                                         z->u2.arglist->next->next = npval(PV_WORD,(yylsp[-3]).first_line,(yylsp[-3]).last_line, (yylsp[-3]).first_column, (yylsp[-3]).last_column);
2806                                         z->u2.arglist->next->next->u1.str = (yyvsp[-3].str);
2807                                         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);
2808                                         z->u2.arglist->next->next->next->u1.str = (yyvsp[-1].str);
2809                                         prev_word=0;
2810                         ;}
2811     break;
2812
2813   case 147:
2814 #line 623 "ael.y"
2815     {(yyval.pval)=(yyvsp[-1].pval);;}
2816     break;
2817
2818   case 148:
2819 #line 626 "ael.y"
2820     { (yyval.str) = (yyvsp[0].str);;}
2821     break;
2822
2823   case 149:
2824 #line 627 "ael.y"
2825     {(yyval.str)=strdup("default");;}
2826     break;
2827
2828   case 150:
2829 #line 630 "ael.y"
2830     {(yyval.pval)= npval(PV_INCLUDES,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
2831     break;
2832
2833   case 151:
2834 #line 631 "ael.y"
2835     {(yyval.pval)= npval(PV_INCLUDES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);;}
2836     break;
2837
2838
2839       default: break;
2840     }
2841
2842 /* Line 1126 of yacc.c.  */
2843 #line 2844 "ael.tab.c"
2844 \f
2845   yyvsp -= yylen;
2846   yyssp -= yylen;
2847   yylsp -= yylen;
2848
2849   YY_STACK_PRINT (yyss, yyssp);
2850
2851   *++yyvsp = yyval;
2852   *++yylsp = yyloc;
2853
2854   /* Now `shift' the result of the reduction.  Determine what state
2855      that goes to, based on the state we popped back to and the rule
2856      number reduced by.  */
2857
2858   yyn = yyr1[yyn];
2859
2860   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2861   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2862     yystate = yytable[yystate];
2863   else
2864     yystate = yydefgoto[yyn - YYNTOKENS];
2865
2866   goto yynewstate;
2867
2868
2869 /*------------------------------------.
2870 | yyerrlab -- here on detecting error |
2871 `------------------------------------*/
2872 yyerrlab:
2873   /* If not already recovering from an error, report this error.  */
2874   if (!yyerrstatus)
2875     {
2876       ++yynerrs;
2877 #if YYERROR_VERBOSE
2878       yyn = yypact[yystate];
2879
2880       if (YYPACT_NINF < yyn && yyn < YYLAST)
2881         {
2882           int yytype = YYTRANSLATE (yychar);
2883           YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
2884           YYSIZE_T yysize = yysize0;
2885           YYSIZE_T yysize1;
2886           int yysize_overflow = 0;
2887           char *yymsg = 0;
2888 #         define YYERROR_VERBOSE_ARGS_MAXIMUM 5
2889           char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2890           int yyx;
2891
2892 #if 0
2893           /* This is so xgettext sees the translatable formats that are
2894              constructed on the fly.  */
2895           YY_("syntax error, unexpected %s");
2896           YY_("syntax error, unexpected %s, expecting %s");
2897           YY_("syntax error, unexpected %s, expecting %s or %s");
2898           YY_("syntax error, unexpected %s, expecting %s or %s or %s");
2899           YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
2900 #endif
2901           char *yyfmt;
2902           char const *yyf;
2903           static char const yyunexpected[] = "syntax error, unexpected %s";
2904           static char const yyexpecting[] = ", expecting %s";
2905           static char const yyor[] = " or %s";
2906           char yyformat[sizeof yyunexpected
2907                         + sizeof yyexpecting - 1
2908                         + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
2909                            * (sizeof yyor - 1))];
2910           char const *yyprefix = yyexpecting;
2911
2912           /* Start YYX at -YYN if negative to avoid negative indexes in
2913              YYCHECK.  */
2914           int yyxbegin = yyn < 0 ? -yyn : 0;
2915
2916           /* Stay within bounds of both yycheck and yytname.  */
2917           int yychecklim = YYLAST - yyn;
2918           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2919           int yycount = 1;
2920
2921           yyarg[0] = yytname[yytype];
2922           yyfmt = yystpcpy (yyformat, yyunexpected);
2923
2924           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2925             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2926               {
2927                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2928                   {
2929                     yycount = 1;
2930                     yysize = yysize0;
2931                     yyformat[sizeof yyunexpected - 1] = '\0';
2932                     break;
2933                   }
2934                 yyarg[yycount++] = yytname[yyx];
2935                 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
2936                 yysize_overflow |= yysize1 < yysize;
2937                 yysize = yysize1;
2938                 yyfmt = yystpcpy (yyfmt, yyprefix);
2939                 yyprefix = yyor;
2940               }
2941
2942           yyf = YY_(yyformat);
2943           yysize1 = yysize + yystrlen (yyf);
2944           yysize_overflow |= yysize1 < yysize;
2945           yysize = yysize1;
2946
2947           if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
2948             yymsg = (char *) YYSTACK_ALLOC (yysize);
2949           if (yymsg)
2950             {
2951               /* Avoid sprintf, as that infringes on the user's name space.
2952                  Don't have undefined behavior even if the translation
2953                  produced a string with the wrong number of "%s"s.  */
2954               char *yyp = yymsg;
2955               int yyi = 0;
2956               while ((*yyp = *yyf))
2957                 {
2958                   if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
2959                     {
2960                       yyp += yytnamerr (yyp, yyarg[yyi++]);
2961                       yyf += 2;
2962                     }
2963                   else
2964                     {
2965                       yyp++;
2966                       yyf++;
2967                     }
2968                 }
2969               yyerror (&yylloc, parseio, yymsg);
2970               YYSTACK_FREE (yymsg);
2971             }
2972           else
2973             {
2974               yyerror (&yylloc, parseio, YY_("syntax error"));
2975               goto yyexhaustedlab;
2976             }
2977         }
2978       else
2979 #endif /* YYERROR_VERBOSE */
2980         yyerror (&yylloc, parseio, YY_("syntax error"));
2981     }
2982
2983   yyerror_range[0] = yylloc;
2984
2985   if (yyerrstatus == 3)
2986     {
2987       /* If just tried and failed to reuse look-ahead token after an
2988          error, discard it.  */
2989
2990       if (yychar <= YYEOF)
2991         {
2992           /* Return failure if at end of input.  */
2993           if (yychar == YYEOF)
2994             YYABORT;
2995         }
2996       else
2997         {
2998           yydestruct ("Error: discarding", yytoken, &yylval, &yylloc);
2999           yychar = YYEMPTY;
3000         }
3001     }
3002
3003   /* Else will try to reuse look-ahead token after shifting the error
3004      token.  */
3005   goto yyerrlab1;
3006
3007
3008 /*---------------------------------------------------.
3009 | yyerrorlab -- error raised explicitly by YYERROR.  |
3010 `---------------------------------------------------*/
3011 yyerrorlab:
3012
3013   /* Pacify compilers like GCC when the user code never invokes
3014      YYERROR and the label yyerrorlab therefore never appears in user
3015      code.  */
3016   if (0)
3017      goto yyerrorlab;
3018
3019   yyerror_range[0] = yylsp[1-yylen];
3020   yylsp -= yylen;
3021   yyvsp -= yylen;
3022   yyssp -= yylen;
3023   yystate = *yyssp;
3024   goto yyerrlab1;
3025
3026
3027 /*-------------------------------------------------------------.
3028 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
3029 `-------------------------------------------------------------*/
3030 yyerrlab1:
3031   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
3032
3033   for (;;)
3034     {
3035       yyn = yypact[yystate];
3036       if (yyn != YYPACT_NINF)
3037         {
3038           yyn += YYTERROR;
3039           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3040             {
3041               yyn = yytable[yyn];
3042               if (0 < yyn)
3043                 break;
3044             }
3045         }
3046
3047       /* Pop the current state because it cannot handle the error token.  */
3048       if (yyssp == yyss)
3049         YYABORT;
3050
3051       yyerror_range[0] = *yylsp;
3052       yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp);
3053       YYPOPSTACK;
3054       yystate = *yyssp;
3055       YY_STACK_PRINT (yyss, yyssp);
3056     }
3057
3058   if (yyn == YYFINAL)
3059     YYACCEPT;
3060
3061   *++yyvsp = yylval;
3062
3063   yyerror_range[1] = yylloc;
3064   /* Using YYLLOC is tempting, but would change the location of
3065      the look-ahead.  YYLOC is available though. */
3066   YYLLOC_DEFAULT (yyloc, yyerror_range - 1, 2);
3067   *++yylsp = yyloc;
3068
3069   /* Shift the error token. */
3070   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3071
3072   yystate = yyn;
3073   goto yynewstate;
3074
3075
3076 /*-------------------------------------.
3077 | yyacceptlab -- YYACCEPT comes here.  |
3078 `-------------------------------------*/
3079 yyacceptlab:
3080   yyresult = 0;
3081   goto yyreturn;
3082
3083 /*-----------------------------------.
3084 | yyabortlab -- YYABORT comes here.  |
3085 `-----------------------------------*/
3086 yyabortlab:
3087   yyresult = 1;
3088   goto yyreturn;
3089
3090 #ifndef yyoverflow
3091 /*-------------------------------------------------.
3092 | yyexhaustedlab -- memory exhaustion comes here.  |
3093 `-------------------------------------------------*/
3094 yyexhaustedlab:
3095   yyerror (&yylloc, parseio, YY_("memory exhausted"));
3096   yyresult = 2;
3097   /* Fall through.  */
3098 #endif
3099
3100 yyreturn:
3101   if (yychar != YYEOF && yychar != YYEMPTY)
3102      yydestruct ("Cleanup: discarding lookahead",
3103                  yytoken, &yylval, &yylloc);
3104   while (yyssp != yyss)
3105     {
3106       yydestruct ("Cleanup: popping",
3107                   yystos[*yyssp], yyvsp, yylsp);
3108       YYPOPSTACK;
3109     }
3110 #ifndef yyoverflow
3111   if (yyss != yyssa)
3112     YYSTACK_FREE (yyss);
3113 #endif
3114   return yyresult;
3115 }
3116
3117
3118 #line 635 "ael.y"
3119
3120
3121 static char *token_equivs1[] =
3122 {
3123         "AMPER",
3124         "AT",
3125         "BAR",
3126         "COLON",
3127         "COMMA",
3128         "EQ",
3129         "EXTENMARK",
3130         "KW_BREAK",
3131         "KW_CASE",
3132         "KW_CATCH",
3133         "KW_CONTEXT",
3134         "KW_CONTINUE",
3135         "KW_DEFAULT",
3136         "KW_ELSE",
3137         "KW_ESWITCHES",
3138         "KW_FOR",
3139         "KW_GLOBALS",
3140         "KW_GOTO",
3141         "KW_HINT",
3142         "KW_IFTIME",
3143         "KW_IF",
3144         "KW_IGNOREPAT",
3145         "KW_INCLUDES"
3146         "KW_JUMP",
3147         "KW_MACRO",
3148         "KW_PATTERN",
3149         "KW_REGEXTEN",
3150         "KW_RETURN",
3151         "KW_SWITCHES",
3152         "KW_SWITCH",
3153         "KW_WHILE",
3154         "LC",
3155         "LP",
3156         "RC",
3157         "RP",
3158         "SEMI",
3159 };
3160
3161 static char *token_equivs2[] =
3162 {
3163         "&",
3164         "@",
3165         "|",
3166         ":",
3167         ",",
3168         "=",
3169         "=>",
3170         "break",
3171         "case",
3172         "catch",
3173         "context",
3174         "continue",
3175         "default",