Merged revisions 177225 via svnmerge from
[asterisk/asterisk.git] / res / ael / ael.tab.c
index 9950322..34900ac 100644 (file)
@@ -1,7 +1,9 @@
-/* A Bison parser, made by GNU Bison 2.1a.  */
+/* A Bison parser, made by GNU Bison 2.3.  */
 
-/* Skeleton parser for Yacc-like parsing with Bison,
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    Foundation, Inc., 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.  */
 
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
+/* As a special exception, you may create a larger work that contains
+   part or all of the Bison parser skeleton and distribute that work
+   under terms of your choice, so long as that work isn't itself a
+   parser generator using the skeleton or a modified version thereof
+   as a parser skeleton.  Alternatively, if you modify or redistribute
+   the parser skeleton itself, you may (at your option) remove this
+   special exception, which will cause the skeleton and the resulting
+   Bison output files to be licensed under the GNU General Public
+   License without this special exception.
+
+   This special exception was added by the Free Software Foundation in
+   version 2.2 of Bison.  */
 
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
@@ -37,7 +47,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.1a"
+#define YYBISON_VERSION "2.3"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
      KW_ELSE = 276,
      KW_RANDOM = 277,
      KW_ABSTRACT = 278,
-     EXTENMARK = 279,
-     KW_GOTO = 280,
-     KW_JUMP = 281,
-     KW_RETURN = 282,
-     KW_BREAK = 283,
-     KW_CONTINUE = 284,
-     KW_REGEXTEN = 285,
-     KW_HINT = 286,
-     KW_FOR = 287,
-     KW_WHILE = 288,
-     KW_CASE = 289,
-     KW_PATTERN = 290,
-     KW_DEFAULT = 291,
-     KW_CATCH = 292,
-     KW_SWITCHES = 293,
-     KW_ESWITCHES = 294,
-     KW_INCLUDES = 295,
-     KW_LOCAL = 296,
-     word = 297
+     KW_EXTEND = 279,
+     EXTENMARK = 280,
+     KW_GOTO = 281,
+     KW_JUMP = 282,
+     KW_RETURN = 283,
+     KW_BREAK = 284,
+     KW_CONTINUE = 285,
+     KW_REGEXTEN = 286,
+     KW_HINT = 287,
+     KW_FOR = 288,
+     KW_WHILE = 289,
+     KW_CASE = 290,
+     KW_PATTERN = 291,
+     KW_DEFAULT = 292,
+     KW_CATCH = 293,
+     KW_SWITCHES = 294,
+     KW_ESWITCHES = 295,
+     KW_INCLUDES = 296,
+     KW_LOCAL = 297,
+     word = 298
    };
 #endif
 /* Tokens.  */
 #define KW_ELSE 276
 #define KW_RANDOM 277
 #define KW_ABSTRACT 278
-#define EXTENMARK 279
-#define KW_GOTO 280
-#define KW_JUMP 281
-#define KW_RETURN 282
-#define KW_BREAK 283
-#define KW_CONTINUE 284
-#define KW_REGEXTEN 285
-#define KW_HINT 286
-#define KW_FOR 287
-#define KW_WHILE 288
-#define KW_CASE 289
-#define KW_PATTERN 290
-#define KW_DEFAULT 291
-#define KW_CATCH 292
-#define KW_SWITCHES 293
-#define KW_ESWITCHES 294
-#define KW_INCLUDES 295
-#define KW_LOCAL 296
-#define word 297
+#define KW_EXTEND 279
+#define EXTENMARK 280
+#define KW_GOTO 281
+#define KW_JUMP 282
+#define KW_RETURN 283
+#define KW_BREAK 284
+#define KW_CONTINUE 285
+#define KW_REGEXTEN 286
+#define KW_HINT 287
+#define KW_FOR 288
+#define KW_WHILE 289
+#define KW_CASE 290
+#define KW_PATTERN 291
+#define KW_DEFAULT 292
+#define KW_CATCH 293
+#define KW_SWITCHES 294
+#define KW_ESWITCHES 295
+#define KW_INCLUDES 296
+#define KW_LOCAL 297
+#define word 298
 
 
 
@@ -186,7 +198,12 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include <string.h>
 
 #include "asterisk/logger.h"
+#include "asterisk/lock.h"
+#include "asterisk/hashtab.h"
 #include "asterisk/ael_structs.h"
+#include "asterisk/utils.h"
+
+extern struct ast_flags ast_compat;
 
 pval * linku1(pval *head, pval *tail);
 static void set_dads(pval *dad, pval *child_list);
@@ -225,14 +242,14 @@ static char *ael_token_subst(const char *mess);
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 54 "ael.y"
+#line 59 "ael.y"
 {
        int     intval;         /* integer value, typically flags */
        char    *str;           /* strings */
        struct pval *pval;      /* full objects */
 }
-/* Line 198 of yacc.c.  */
-#line 236 "ael.tab.c"
+/* Line 187 of yacc.c.  */
+#line 253 "ael.tab.c"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -254,7 +271,7 @@ typedef struct YYLTYPE
 
 
 /* Copy the second part of user declarations.  */
-#line 60 "ael.y"
+#line 65 "ael.y"
 
        /* declaring these AFTER the union makes things a lot simpler! */
 void yyerror(YYLTYPE *locp, struct parse_io *parseio, char const *s);
@@ -276,8 +293,8 @@ static pval *nword(char *string, YYLTYPE *pos);
 static pval *update_last(pval *, YYLTYPE *);
 
 
-/* Line 221 of yacc.c.  */
-#line 281 "ael.tab.c"
+/* Line 216 of yacc.c.  */
+#line 298 "ael.tab.c"
 
 #ifdef short
 # undef short
@@ -407,8 +424,13 @@ YYID (i)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  ifdef __cplusplus
-extern "C" {
+#  if (defined __cplusplus && ! defined _STDLIB_H \
+       && ! ((defined YYMALLOC || defined malloc) \
+            && (defined YYFREE || defined free)))
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   ifndef _STDLIB_H
+#    define _STDLIB_H 1
+#   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
@@ -424,9 +446,6 @@ void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
-#  ifdef __cplusplus
-}
-#  endif
 # endif
 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
 
@@ -490,22 +509,22 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  14
+#define YYFINAL  17
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   331
+#define YYLAST   373
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  43
+#define YYNTOKENS  44
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  56
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  138
+#define YYNRULES  142
 /* YYNRULES -- Number of states.  */
 #define YYNSTATES  281
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   297
+#define YYMAXUTOK   298
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -542,7 +561,7 @@ static const yytype_uint8 yytranslate[] =
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42
+      35,    36,    37,    38,    39,    40,    41,    42,    43
 };
 
 #if YYDEBUG
@@ -551,89 +570,93 @@ static const yytype_uint8 yytranslate[] =
 static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     5,     7,    10,    13,    15,    17,    19,
-      21,    23,    25,    32,    34,    35,    44,    49,    50,    53,
-      56,    57,    63,    64,    71,    72,    74,    78,    81,    82,
-      85,    88,    90,    92,    94,    96,    98,   100,   102,   105,
-     107,   112,   116,   121,   129,   138,   139,   142,   145,   151,
-     153,   161,   162,   167,   170,   173,   178,   180,   183,   185,
-     188,   192,   196,   198,   201,   205,   207,   210,   214,   220,
-     224,   226,   228,   232,   236,   239,   240,   241,   242,   255,
-     259,   261,   265,   268,   271,   272,   278,   281,   284,   287,
-     291,   293,   296,   297,   299,   303,   307,   313,   319,   325,
-     331,   332,   335,   338,   343,   344,   350,   354,   355,   359,
-     363,   366,   368,   369,   371,   372,   376,   377,   380,   385,
-     389,   394,   395,   398,   400,   402,   408,   413,   418,   419,
-     423,   429,   432,   434,   438,   441,   445,   448,   453
+      21,    23,    25,    32,    34,    35,    37,    40,    43,    52,
+      57,    58,    61,    64,    65,    71,    72,    79,    80,    82,
+      86,    89,    90,    93,    96,    98,   100,   102,   104,   106,
+     108,   110,   113,   115,   120,   124,   130,   135,   143,   152,
+     153,   156,   159,   165,   167,   175,   176,   181,   184,   187,
+     192,   194,   197,   199,   202,   206,   210,   212,   215,   219,
+     221,   224,   228,   234,   238,   240,   242,   246,   250,   253,
+     254,   255,   256,   269,   273,   275,   279,   282,   285,   286,
+     292,   295,   298,   301,   305,   307,   310,   311,   313,   317,
+     321,   327,   333,   339,   345,   346,   349,   352,   357,   358,
+     364,   368,   369,   373,   377,   380,   382,   383,   385,   386,
+     390,   391,   394,   399,   403,   408,   409,   412,   414,   416,
+     422,   427,   432,   433,   437,   443,   446,   448,   452,   455,
+     459,   462,   467
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      44,     0,    -1,    45,    -1,    46,    -1,    45,    46,    -1,
-      45,     1,    -1,    48,    -1,    50,    -1,    51,    -1,     8,
-      -1,    42,    -1,    36,    -1,    49,     3,    47,     4,    58,
-       5,    -1,    23,    -1,    -1,    15,    42,     6,    57,     7,
-       4,    91,     5,    -1,    16,     4,    52,     5,    -1,    -1,
-      53,    52,    -1,     1,    52,    -1,    -1,    42,     9,    54,
-      42,     8,    -1,    -1,    41,    42,     9,    56,    42,     8,
-      -1,    -1,    42,    -1,    57,    10,    42,    -1,    57,     1,
-      -1,    -1,    59,    58,    -1,     1,    58,    -1,    61,    -1,
-      98,    -1,    93,    -1,    94,    -1,    60,    -1,    53,    -1,
-      55,    -1,    42,     1,    -1,     8,    -1,    17,    24,    42,
-       8,    -1,    42,    24,    73,    -1,    30,    42,    24,    73,
-      -1,    31,     6,    69,     7,    42,    24,    73,    -1,    30,
-      31,     6,    69,     7,    42,    24,    73,    -1,    -1,    73,
-      62,    -1,     1,    62,    -1,    70,    11,    70,    11,    70,
-      -1,    42,    -1,    63,    13,    70,    13,    70,    13,    70,
-      -1,    -1,     6,    66,    68,     7,    -1,    19,    65,    -1,
-      22,    65,    -1,    20,     6,    64,     7,    -1,    42,    -1,
-      42,    42,    -1,    42,    -1,    69,    42,    -1,    69,    11,
-      42,    -1,    69,    12,    42,    -1,    42,    -1,    42,    42,
-      -1,    42,    42,    42,    -1,    42,    -1,    42,    42,    -1,
-      71,    11,    42,    -1,    18,    65,     4,    89,     5,    -1,
-       4,    62,     5,    -1,    53,    -1,    55,    -1,    25,    79,
-       8,    -1,    26,    81,     8,    -1,    42,    11,    -1,    -1,
-      -1,    -1,    32,     6,    74,    42,     8,    75,    42,     8,
-      76,    42,     7,    73,    -1,    33,    65,    73,    -1,    72,
-      -1,    12,    82,     8,    -1,    86,     8,    -1,    42,     8,
-      -1,    -1,    86,     9,    77,    42,     8,    -1,    28,     8,
-      -1,    27,     8,    -1,    29,     8,    -1,    67,    73,    78,
-      -1,     8,    -1,    21,    73,    -1,    -1,    71,    -1,    71,
-      13,    71,    -1,    71,    10,    71,    -1,    71,    13,    71,
-      13,    71,    -1,    71,    10,    71,    10,    71,    -1,    36,
-      13,    71,    13,    71,    -1,    36,    10,    71,    10,    71,
-      -1,    -1,    10,    42,    -1,    71,    80,    -1,    71,    80,
-      14,    47,    -1,    -1,    42,     6,    83,    88,     7,    -1,
-      42,     6,     7,    -1,    -1,    42,     6,    85,    -1,    84,
-      88,     7,    -1,    84,     7,    -1,    42,    -1,    -1,    68,
-      -1,    -1,    88,    10,    87,    -1,    -1,    90,    89,    -1,
-      34,    42,    11,    62,    -1,    36,    11,    62,    -1,    35,
-      42,    11,    62,    -1,    -1,    92,    91,    -1,    73,    -1,
-      98,    -1,    37,    42,     4,    62,     5,    -1,    38,     4,
-      95,     5,    -1,    39,     4,    95,     5,    -1,    -1,    42,
-       8,    95,    -1,    42,    14,    42,     8,    95,    -1,     1,
-      95,    -1,    47,    -1,    47,    13,    64,    -1,    96,     8,
-      -1,    97,    96,     8,    -1,    97,     1,    -1,    40,     4,
-      97,     5,    -1,    40,     4,     5,    -1
+      45,     0,    -1,    46,    -1,    47,    -1,    46,    47,    -1,
+      46,     1,    -1,    49,    -1,    51,    -1,    52,    -1,     8,
+      -1,    43,    -1,    37,    -1,    50,     3,    48,     4,    59,
+       5,    -1,    23,    -1,    -1,    24,    -1,    24,    23,    -1,
+      23,    24,    -1,    15,    43,     6,    58,     7,     4,    92,
+       5,    -1,    16,     4,    53,     5,    -1,    -1,    53,    54,
+      -1,     1,    53,    -1,    -1,    43,     9,    55,    43,     8,
+      -1,    -1,    42,    43,     9,    57,    43,     8,    -1,    -1,
+      43,    -1,    58,    10,    43,    -1,    58,     1,    -1,    -1,
+      59,    60,    -1,     1,    59,    -1,    62,    -1,    99,    -1,
+      94,    -1,    95,    -1,    61,    -1,    54,    -1,    56,    -1,
+      43,     1,    -1,     8,    -1,    17,    25,    43,     8,    -1,
+      43,    25,    74,    -1,    43,    14,    43,    25,    74,    -1,
+      31,    43,    25,    74,    -1,    32,     6,    70,     7,    43,
+      25,    74,    -1,    31,    32,     6,    70,     7,    43,    25,
+      74,    -1,    -1,    63,    74,    -1,     1,    63,    -1,    71,
+      11,    71,    11,    71,    -1,    43,    -1,    64,    13,    71,
+      13,    71,    13,    71,    -1,    -1,     6,    67,    69,     7,
+      -1,    19,    66,    -1,    22,    66,    -1,    20,     6,    65,
+       7,    -1,    43,    -1,    43,    43,    -1,    43,    -1,    70,
+      43,    -1,    70,    11,    43,    -1,    70,    12,    43,    -1,
+      43,    -1,    43,    43,    -1,    43,    43,    43,    -1,    43,
+      -1,    43,    43,    -1,    72,    11,    43,    -1,    18,    66,
+       4,    90,     5,    -1,     4,    63,     5,    -1,    54,    -1,
+      56,    -1,    26,    80,     8,    -1,    27,    82,     8,    -1,
+      43,    11,    -1,    -1,    -1,    -1,    33,     6,    75,    43,
+       8,    76,    43,     8,    77,    43,     7,    74,    -1,    34,
+      66,    74,    -1,    73,    -1,    12,    83,     8,    -1,    87,
+       8,    -1,    43,     8,    -1,    -1,    87,     9,    78,    43,
+       8,    -1,    29,     8,    -1,    28,     8,    -1,    30,     8,
+      -1,    68,    74,    79,    -1,     8,    -1,    21,    74,    -1,
+      -1,    72,    -1,    72,    13,    72,    -1,    72,    10,    72,
+      -1,    72,    13,    72,    13,    72,    -1,    72,    10,    72,
+      10,    72,    -1,    37,    13,    72,    13,    72,    -1,    37,
+      10,    72,    10,    72,    -1,    -1,    10,    43,    -1,    72,
+      81,    -1,    72,    81,    14,    48,    -1,    -1,    43,     6,
+      84,    89,     7,    -1,    43,     6,     7,    -1,    -1,    43,
+       6,    86,    -1,    85,    89,     7,    -1,    85,     7,    -1,
+      43,    -1,    -1,    69,    -1,    -1,    89,    10,    88,    -1,
+      -1,    90,    91,    -1,    35,    43,    11,    63,    -1,    37,
+      11,    63,    -1,    36,    43,    11,    63,    -1,    -1,    92,
+      93,    -1,    74,    -1,    99,    -1,    38,    43,     4,    63,
+       5,    -1,    39,     4,    96,     5,    -1,    40,     4,    96,
+       5,    -1,    -1,    96,    43,     8,    -1,    96,    43,    14,
+      43,     8,    -1,     1,    96,    -1,    48,    -1,    48,    13,
+      65,    -1,    97,     8,    -1,    98,    97,     8,    -1,    98,
+       1,    -1,    41,     4,    98,     5,    -1,    41,     4,     5,
+      -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   186,   186,   189,   190,   191,   194,   195,   196,   197,
-     200,   201,   204,   219,   220,   223,   229,   235,   236,   237,
-     240,   240,   246,   246,   253,   254,   255,   256,   259,   260,
-     261,   264,   265,   266,   267,   268,   269,   270,   271,   272,
-     275,   280,   284,   289,   294,   304,   305,   306,   312,   317,
-     321,   329,   329,   333,   336,   339,   350,   351,   358,   359,
-     363,   367,   373,   374,   379,   387,   388,   392,   398,   407,
-     410,   411,   412,   415,   418,   421,   422,   423,   421,   429,
-     433,   434,   435,   436,   439,   439,   472,   473,   474,   475,
-     479,   482,   483,   486,   487,   490,   493,   497,   501,   505,
-     511,   512,   516,   519,   525,   525,   530,   538,   538,   549,
-     556,   559,   560,   563,   564,   567,   570,   571,   574,   578,
-     582,   588,   589,   592,   593,   594,   600,   605,   610,   611,
-     612,   614,   617,   618,   625,   626,   627,   630,   633
+       0,   191,   191,   194,   195,   196,   199,   200,   201,   202,
+     205,   206,   209,   218,   219,   220,   221,   222,   225,   231,
+     237,   238,   239,   242,   242,   248,   248,   255,   256,   257,
+     258,   261,   262,   263,   266,   267,   268,   269,   270,   271,
+     272,   273,   274,   277,   282,   286,   294,   299,   304,   313,
+     314,   315,   321,   331,   335,   343,   343,   347,   350,   353,
+     364,   365,   377,   378,   387,   396,   407,   408,   418,   431,
+     432,   441,   452,   461,   464,   465,   466,   469,   472,   475,
+     476,   477,   475,   483,   487,   488,   489,   490,   493,   493,
+     526,   527,   528,   529,   533,   536,   537,   540,   541,   544,
+     547,   551,   555,   559,   565,   566,   570,   573,   579,   579,
+     584,   592,   592,   603,   610,   613,   614,   617,   618,   621,
+     624,   625,   628,   632,   636,   642,   643,   646,   647,   648,
+     654,   659,   664,   665,   666,   677,   680,   681,   688,   689,
+     690,   693,   696
 };
 #endif
 
@@ -645,21 +668,21 @@ static const char *const yytname[] =
   "$end", "error", "$undefined", "KW_CONTEXT", "LC", "RC", "LP", "RP",
   "SEMI", "EQ", "COMMA", "COLON", "AMPER", "BAR", "AT", "KW_MACRO",
   "KW_GLOBALS", "KW_IGNOREPAT", "KW_SWITCH", "KW_IF", "KW_IFTIME",
-  "KW_ELSE", "KW_RANDOM", "KW_ABSTRACT", "EXTENMARK", "KW_GOTO", "KW_JUMP",
-  "KW_RETURN", "KW_BREAK", "KW_CONTINUE", "KW_REGEXTEN", "KW_HINT",
-  "KW_FOR", "KW_WHILE", "KW_CASE", "KW_PATTERN", "KW_DEFAULT", "KW_CATCH",
-  "KW_SWITCHES", "KW_ESWITCHES", "KW_INCLUDES", "KW_LOCAL", "word",
-  "$accept", "file", "objects", "object", "context_name", "context",
-  "opt_abstract", "macro", "globals", "global_statements", "assignment",
-  "@1", "local_assignment", "@2", "arglist", "elements", "element",
-  "ignorepat", "extension", "statements", "timerange", "timespec",
-  "test_expr", "@3", "if_like_head", "word_list", "hint_word",
-  "word3_list", "goto_word", "switch_statement", "statement", "@4", "@5",
-  "@6", "@7", "opt_else", "target", "opt_pri", "jumptarget", "macro_call",
-  "@8", "application_call_head", "@9", "application_call", "opt_word",
-  "eval_arglist", "case_statements", "case_statement", "macro_statements",
-  "macro_statement", "switches", "eswitches", "switchlist",
-  "included_entry", "includeslist", "includes", 0
+  "KW_ELSE", "KW_RANDOM", "KW_ABSTRACT", "KW_EXTEND", "EXTENMARK",
+  "KW_GOTO", "KW_JUMP", "KW_RETURN", "KW_BREAK", "KW_CONTINUE",
+  "KW_REGEXTEN", "KW_HINT", "KW_FOR", "KW_WHILE", "KW_CASE", "KW_PATTERN",
+  "KW_DEFAULT", "KW_CATCH", "KW_SWITCHES", "KW_ESWITCHES", "KW_INCLUDES",
+  "KW_LOCAL", "word", "$accept", "file", "objects", "object",
+  "context_name", "context", "opt_abstract", "macro", "globals",
+  "global_statements", "assignment", "@1", "local_assignment", "@2",
+  "arglist", "elements", "element", "ignorepat", "extension", "statements",
+  "timerange", "timespec", "test_expr", "@3", "if_like_head", "word_list",
+  "hint_word", "word3_list", "goto_word", "switch_statement", "statement",
+  "@4", "@5", "@6", "@7", "opt_else", "target", "opt_pri", "jumptarget",
+  "macro_call", "@8", "application_call_head", "@9", "application_call",
+  "opt_word", "eval_arglist", "case_statements", "case_statement",
+  "macro_statements", "macro_statement", "switches", "eswitches",
+  "switchlist", "included_entry", "includeslist", "includes", 0
 };
 #endif
 
@@ -672,46 +695,48 @@ static const yytype_uint16 yytoknum[] =
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297
+     295,   296,   297,   298
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    43,    44,    45,    45,    45,    46,    46,    46,    46,
-      47,    47,    48,    49,    49,    50,    51,    52,    52,    52,
-      54,    53,    56,    55,    57,    57,    57,    57,    58,    58,
-      58,    59,    59,    59,    59,    59,    59,    59,    59,    59,
-      60,    61,    61,    61,    61,    62,    62,    62,    63,    63,
-      64,    66,    65,    67,    67,    67,    68,    68,    69,    69,
-      69,    69,    70,    70,    70,    71,    71,    71,    72,    73,
-      73,    73,    73,    73,    73,    74,    75,    76,    73,    73,
-      73,    73,    73,    73,    77,    73,    73,    73,    73,    73,
-      73,    78,    78,    79,    79,    79,    79,    79,    79,    79,
-      80,    80,    81,    81,    83,    82,    82,    85,    84,    86,
-      86,    87,    87,    88,    88,    88,    89,    89,    90,    90,
-      90,    91,    91,    92,    92,    92,    93,    94,    95,    95,
-      95,    95,    96,    96,    97,    97,    97,    98,    98
+       0,    44,    45,    46,    46,    46,    47,    47,    47,    47,
+      48,    48,    49,    50,    50,    50,    50,    50,    51,    52,
+      53,    53,    53,    55,    54,    57,    56,    58,    58,    58,
+      58,    59,    59,    59,    60,    60,    60,    60,    60,    60,
+      60,    60,    60,    61,    62,    62,    62,    62,    62,    63,
+      63,    63,    64,    64,    65,    67,    66,    68,    68,    68,
+      69,    69,    70,    70,    70,    70,    71,    71,    71,    72,
+      72,    72,    73,    74,    74,    74,    74,    74,    74,    75,
+      76,    77,    74,    74,    74,    74,    74,    74,    78,    74,
+      74,    74,    74,    74,    74,    79,    79,    80,    80,    80,
+      80,    80,    80,    80,    81,    81,    82,    82,    84,    83,
+      83,    86,    85,    87,    87,    88,    88,    89,    89,    89,
+      90,    90,    91,    91,    91,    92,    92,    93,    93,    93,
+      94,    95,    96,    96,    96,    96,    97,    97,    98,    98,
+      98,    99,    99
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
        0,     2,     1,     1,     2,     2,     1,     1,     1,     1,
-       1,     1,     6,     1,     0,     8,     4,     0,     2,     2,
-       0,     5,     0,     6,     0,     1,     3,     2,     0,     2,
-       2,     1,     1,     1,     1,     1,     1,     1,     2,     1,
-       4,     3,     4,     7,     8,     0,     2,     2,     5,     1,
-       7,     0,     4,     2,     2,     4,     1,     2,     1,     2,
-       3,     3,     1,     2,     3,     1,     2,     3,     5,     3,
-       1,     1,     3,     3,     2,     0,     0,     0,    12,     3,
-       1,     3,     2,     2,     0,     5,     2,     2,     2,     3,
-       1,     2,     0,     1,     3,     3,     5,     5,     5,     5,
-       0,     2,     2,     4,     0,     5,     3,     0,     3,     3,
-       2,     1,     0,     1,     0,     3,     0,     2,     4,     3,
-       4,     0,     2,     1,     1,     5,     4,     4,     0,     3,
-       5,     2,     1,     3,     2,     3,     2,     4,     3
+       1,     1,     6,     1,     0,     1,     2,     2,     8,     4,
+       0,     2,     2,     0,     5,     0,     6,     0,     1,     3,
+       2,     0,     2,     2,     1,     1,     1,     1,     1,     1,
+       1,     2,     1,     4,     3,     5,     4,     7,     8,     0,
+       2,     2,     5,     1,     7,     0,     4,     2,     2,     4,
+       1,     2,     1,     2,     3,     3,     1,     2,     3,     1,
+       2,     3,     5,     3,     1,     1,     3,     3,     2,     0,
+       0,     0,    12,     3,     1,     3,     2,     2,     0,     5,
+       2,     2,     2,     3,     1,     2,     0,     1,     3,     3,
+       5,     5,     5,     5,     0,     2,     2,     4,     0,     5,
+       3,     0,     3,     3,     2,     1,     0,     1,     0,     3,
+       0,     2,     4,     3,     4,     0,     2,     1,     1,     5,
+       4,     4,     0,     3,     5,     2,     1,     3,     2,     3,
+       2,     4,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -719,209 +744,217 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-      14,     9,     0,     0,    13,     0,     0,     3,     6,     0,
-       7,     8,     0,     0,     1,     5,     4,     0,    24,     0,
-       0,     0,     0,    11,    10,     0,    25,     0,    19,    20,
-      16,    18,     0,    27,     0,     0,     0,     0,    39,     0,
-       0,     0,     0,     0,     0,     0,     0,    36,    37,     0,
-       0,    35,    31,    33,    34,    32,   121,    26,     0,    30,
-       0,     0,     0,     0,     0,     0,     0,     0,    38,     0,
-      12,    29,     0,    90,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    70,    71,
-       0,    80,   123,   114,     0,     0,   121,   124,    21,     0,
-       0,     0,    58,     0,     0,     0,     0,     0,   138,   132,
-       0,     0,    22,    41,     0,     0,     0,     0,     0,    51,
-       0,    53,     0,    54,     0,    65,    93,     0,   100,     0,
-      87,    86,    88,    75,     0,     0,   107,    83,    74,    92,
-     110,    56,   113,     0,    82,    84,    15,   122,    40,     0,
-      42,     0,     0,     0,    59,   131,     0,     0,   126,   127,
-       0,   134,   136,   137,     0,     0,    47,    69,    46,   104,
-      81,     0,   116,    49,     0,     0,     0,     0,     0,    66,
-       0,     0,     0,    72,     0,   102,    73,     0,    79,     0,
-     108,     0,    89,    57,   109,   112,     0,     0,     0,    60,
-      61,   129,     0,   133,   135,     0,   106,   114,     0,     0,
-       0,     0,     0,   116,    63,     0,    55,     0,     0,     0,
-      95,    67,    94,   101,     0,     0,     0,    91,   111,   115,
-       0,     0,     0,     0,    23,     0,    52,     0,     0,     0,
-      68,   117,    64,    62,     0,     0,     0,     0,     0,     0,
-     103,    76,   125,    85,     0,    43,   130,   105,     0,     0,
-     119,     0,     0,    99,    98,    97,    96,     0,    44,   118,
-     120,     0,    48,     0,     0,    77,    50,     0,     0,     0,
-      78
+      14,     9,     0,     0,    13,    15,     0,     0,     3,     6,
+       0,     7,     8,     0,     0,    17,    16,     1,     5,     4,
+       0,    27,     0,     0,    11,    10,     0,    28,     0,    22,
+      19,     0,    21,     0,    30,     0,     0,    23,     0,     0,
+     125,    29,     0,    33,    12,    42,     0,     0,     0,     0,
+       0,     0,     0,     0,    39,    40,    32,    38,    34,    36,
+      37,    35,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    41,     0,     0,     0,    18,    94,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    74,    75,     0,    84,   127,   118,     0,   126,
+     128,    24,     0,     0,     0,    62,     0,     0,     0,     0,
+     142,   136,     0,     0,    25,     0,    44,     0,     0,     0,
+       0,    55,     0,    57,     0,    58,     0,    69,    97,     0,
+     104,     0,    91,    90,    92,    79,     0,     0,   111,    87,
+      78,    96,   114,    60,   117,     0,    86,    88,    43,     0,
+      46,     0,     0,     0,    63,   135,   130,     0,   131,     0,
+     138,   140,   141,     0,     0,     0,    51,    73,    50,   108,
+      85,     0,   120,    53,     0,     0,     0,     0,     0,    70,
+       0,     0,     0,    76,     0,   106,    77,     0,    83,     0,
+     112,     0,    93,    61,   113,   116,     0,     0,     0,    64,
+      65,   133,     0,   137,   139,     0,    45,   110,   118,     0,
+       0,    67,     0,    59,     0,     0,     0,    99,    71,    98,
+     105,     0,     0,     0,    95,   115,   119,     0,     0,     0,
+       0,    26,     0,    56,    72,     0,     0,     0,   121,    68,
+      66,     0,     0,     0,     0,     0,     0,   107,    80,   129,
+      89,     0,    47,   134,   109,     0,     0,     0,     0,     0,
+     103,   102,   101,   100,     0,    48,     0,     0,   123,     0,
+      52,     0,   122,   124,     0,    81,    54,     0,     0,     0,
+      82
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     5,     6,     7,   109,     8,     9,    10,    11,    21,
-      88,    36,    89,   165,    27,    49,    50,    51,    52,   115,
-     174,   175,   120,   171,    90,   142,   103,   176,   126,    91,
-     116,   187,   267,   277,   196,   192,   127,   185,   129,   118,
-     207,    93,   190,    94,   229,   143,   212,   213,    95,    96,
-      53,    54,   106,   110,   111,    55
+      -1,     6,     7,     8,   111,     9,    10,    11,    12,    23,
+      92,    42,    93,   164,    28,    39,    56,    57,    58,   118,
+     174,   175,   122,   171,    94,   144,   106,   176,   128,    95,
+     168,   187,   264,   277,   196,   192,   129,   185,   131,   120,
+     208,    97,   190,    98,   226,   145,   210,   238,    62,    99,
+      59,    60,   108,   112,   113,    61
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -210
+#define YYPACT_NINF -209
 static const yytype_int16 yypact[] =
 {
-      66,  -210,   -26,    64,  -210,    88,   110,  -210,  -210,    93,
-    -210,  -210,    95,     9,  -210,  -210,  -210,    72,    30,     9,
-      96,   137,     9,  -210,  -210,   124,  -210,   102,  -210,  -210,
-    -210,  -210,    16,  -210,   154,   120,   144,    16,  -210,   169,
-      33,   208,   197,   212,   216,   187,    62,  -210,  -210,   225,
-      16,  -210,  -210,  -210,  -210,  -210,   155,  -210,   226,  -210,
-     191,   229,   213,   194,    17,    17,     6,   230,  -210,   199,
-    -210,  -210,    65,  -210,   196,   236,   236,   237,   236,    79,
-     202,   238,   239,   240,   243,   236,   203,   204,  -210,  -210,
-     199,  -210,  -210,    -4,   148,   245,   155,  -210,  -210,   244,
-     194,   199,  -210,     8,    17,   108,   246,   248,  -210,   241,
-     247,    25,  -210,  -210,   119,   251,   119,   252,   249,  -210,
-     255,  -210,   218,  -210,    26,   219,   189,   254,   168,   256,
-    -210,  -210,  -210,  -210,   199,   259,  -210,  -210,  -210,   250,
-    -210,   223,  -210,    69,  -210,  -210,  -210,  -210,  -210,    20,
-    -210,   224,   227,   228,  -210,  -210,    17,   231,  -210,  -210,
-     218,  -210,  -210,  -210,   260,   232,  -210,  -210,  -210,   265,
-    -210,   233,   130,    18,   263,   270,   267,   202,   202,  -210,
-     202,   242,   202,  -210,   253,   266,  -210,   257,  -210,    65,
-    -210,   199,  -210,  -210,  -210,   258,   261,   262,   264,  -210,
-    -210,  -210,   271,  -210,  -210,   273,  -210,   233,   275,   268,
-     269,   272,   280,   130,   274,   276,  -210,   276,   179,   106,
-     195,  -210,   123,  -210,    72,   278,   282,  -210,  -210,  -210,
-     281,   277,   199,    17,  -210,   122,  -210,   279,   283,   119,
-    -210,  -210,  -210,   284,   285,   286,   202,   202,   202,   202,
-    -210,  -210,  -210,  -210,   199,  -210,  -210,  -210,   119,   119,
-    -210,   276,   276,   291,   291,   291,   291,   287,  -210,  -210,
-    -210,   292,  -210,   288,   276,  -210,  -210,   289,   299,   199,
-    -210
+     262,  -209,   -32,    21,     5,    13,    69,   296,  -209,  -209,
+     112,  -209,  -209,   115,    14,  -209,  -209,  -209,  -209,  -209,
+     -29,    85,    14,     0,  -209,  -209,   129,  -209,   116,    92,
+    -209,   140,  -209,   105,  -209,   147,   125,  -209,   105,    99,
+    -209,  -209,   132,   252,  -209,  -209,   163,   -25,   159,   182,
+     186,   197,   162,   242,  -209,  -209,  -209,  -209,  -209,  -209,
+    -209,  -209,   165,   201,   170,   222,   204,   187,    16,    16,
+      68,   223,  -209,   190,   246,    59,  -209,  -209,   193,   234,
+     234,   236,   234,   -27,   212,   249,   251,   255,   238,   234,
+     228,   292,  -209,  -209,   246,  -209,  -209,    15,   146,  -209,
+    -209,  -209,   273,   187,   246,  -209,   107,    16,    25,    29,
+    -209,   269,   279,    39,  -209,   265,  -209,    19,   192,   299,
+     294,  -209,   302,  -209,   264,  -209,    70,   266,   161,   300,
+     168,   305,  -209,  -209,  -209,  -209,   246,   306,  -209,  -209,
+    -209,   293,  -209,   272,  -209,    84,  -209,  -209,  -209,   113,
+    -209,   274,   275,   278,  -209,   280,  -209,    76,  -209,   264,
+    -209,  -209,  -209,   308,   281,   246,   246,  -209,  -209,   315,
+    -209,   282,  -209,    22,   313,   320,   317,   212,   212,  -209,
+     212,   286,   212,  -209,   287,   318,  -209,   288,  -209,    59,
+    -209,   246,  -209,  -209,  -209,   290,   291,   295,   310,  -209,
+    -209,  -209,   297,  -209,  -209,   328,  -209,  -209,   282,   330,
+     122,   298,   301,  -209,   301,   171,    86,   205,  -209,   121,
+    -209,   -29,   331,   219,  -209,  -209,  -209,   334,   321,   246,
+     335,  -209,   102,  -209,  -209,   304,   307,   337,  -209,  -209,
+     309,   332,   338,   212,   212,   212,   212,  -209,  -209,  -209,
+    -209,   246,  -209,  -209,  -209,   340,   342,    19,   301,   301,
+     343,   343,   343,   343,   312,  -209,    19,    19,   246,   344,
+    -209,   348,   246,   246,   301,  -209,  -209,   316,   351,   246,
+    -209
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -210,  -210,  -210,   301,   -16,  -210,  -210,  -210,  -210,   121,
-     172,  -210,    -9,  -210,  -210,   -25,  -210,  -210,  -210,  -109,
-    -210,   107,   -41,  -210,  -210,   138,   192,  -209,   -78,  -210,
-     -56,  -210,  -210,  -210,  -210,  -210,  -210,  -210,  -210,  -210,
-    -210,  -210,  -210,  -210,  -210,    84,    80,  -210,   217,  -210,
-    -210,  -210,   -61,   201,  -210,   -47
+    -209,  -209,  -209,   353,   -19,  -209,  -209,  -209,  -209,   339,
+     137,  -209,   -30,  -209,  -209,   324,  -209,  -209,  -209,  -114,
+    -209,   206,   -54,  -209,  -209,   195,   260,  -208,   -82,  -209,
+     -62,  -209,  -209,  -209,  -209,  -209,  -209,  -209,  -209,  -209,
+    -209,  -209,  -209,  -209,  -209,   156,  -209,  -209,  -209,  -209,
+    -209,  -209,     1,   254,  -209,   311
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -129
+#define YYTABLE_NINF -133
 static const yytype_int16 yytable[] =
 {
-      92,    25,   128,   140,   107,   166,   244,   168,   245,    97,
-      19,   108,    59,   113,   -17,   151,    12,    37,   104,   152,
-     153,   -28,  -128,    48,    38,    71,   162,   197,    48,   -62,
-     163,   152,   153,    39,   139,   121,   177,   123,   141,   178,
-      92,    48,    23,   155,   134,   150,    40,    41,    24,    97,
-     154,    20,   271,   272,    42,    43,    44,    45,    46,   105,
-     214,    23,   154,    68,    61,   276,   114,    24,    13,    72,
-     -45,    29,    26,    73,     1,    62,   194,    74,   188,   195,
-     226,     2,     3,    75,    76,    77,    69,    78,    14,     4,
-      79,    80,    81,    82,    83,   201,    17,    84,    85,   218,
-     219,    18,   220,    33,   222,    29,    45,    87,    23,    34,
-      -2,    15,    35,   -14,    24,   124,   156,   181,     1,   247,
-     114,   125,   157,    72,   -45,     2,     3,    73,    32,   257,
-     260,    74,   195,     4,   181,   227,   249,    75,    76,    77,
-      28,    78,    30,    31,    79,    80,    81,    82,    83,   269,
-     270,    84,    85,   -45,   -45,   -45,   144,   145,    56,    72,
-      45,    87,    57,    73,   209,   210,   211,    74,   263,   264,
-     265,   266,   256,    75,    76,    77,   255,    78,   184,   181,
-      79,    80,    81,    82,    83,    22,    58,    84,    85,   246,
-     181,    22,    86,    60,    22,    44,    45,    87,   268,   180,
-     181,    64,   182,    72,    47,   248,   181,    73,   250,    47,
-     136,    74,   137,    29,    63,   138,    65,    75,    76,    77,
-      66,    78,    47,   280,    79,    80,    81,    82,    83,    67,
-      70,    84,    85,    99,    98,   100,   102,   101,   117,   112,
-      45,    87,   119,   122,   125,   135,   130,   131,   132,   133,
-     146,   158,   148,   159,   160,   161,   167,   170,   169,   172,
-     173,   179,   183,   189,   186,   193,   198,   203,   204,   199,
-     200,   191,   206,   202,   205,   141,   215,   216,   217,   233,
-     224,   234,   236,   239,   221,   240,   251,   252,   232,   253,
-     258,   235,   149,   241,   259,   223,   275,   262,   261,   225,
-     228,   254,   181,   230,   231,   274,   279,    16,     0,   208,
-     237,   238,   164,   147,     0,     0,   242,     0,   243,     0,
-       0,     0,     0,     0,     0,     0,   214,     0,     0,   273,
-       0,   278
+      96,    26,   130,   166,   241,    30,   242,    65,    24,    55,
+     126,    13,   116,    55,    25,    22,   127,   107,    66,   -20,
+     117,  -132,   142,   -49,   -49,    14,   123,   -49,   125,    15,
+     156,   -49,   141,   -66,   158,   136,    16,   -49,   -49,   -49,
+     161,   -49,   150,    31,   162,   -49,   -49,   -49,   -49,   -49,
+     269,   270,   -49,   -49,   -49,   -49,   -49,   -20,   143,  -132,
+     117,   -49,   -49,   -49,   -49,   211,   276,   -49,   157,    17,
+     109,   -49,   157,   110,   188,   223,    24,   -49,   -49,   -49,
+     177,   -49,    25,   178,   201,   -49,   -49,   -49,   -49,   -49,
+     202,   194,   -49,   -49,   195,   215,   216,   181,   217,   244,
+     219,   -49,   -49,   206,    44,    24,    38,    45,   155,   254,
+     -31,    25,   195,   -31,   151,    20,    46,    34,   152,   153,
+     197,    21,   -31,    35,   152,   153,    36,   234,    27,   224,
+      47,    48,   181,    33,   246,    31,   -31,   -31,    49,    50,
+      51,    52,    53,   268,   -31,   -31,   -31,   -31,   -31,    37,
+     154,    40,   272,   273,   146,   147,   154,   235,   236,   237,
+      32,   260,   261,   262,   263,    67,    32,   252,    41,    75,
+      76,   180,   181,    77,   182,    63,    54,    78,   184,   181,
+      54,   243,   181,    79,    80,    81,    68,    82,    64,   265,
+      69,    83,    84,    85,    86,    87,    75,   167,    88,    89,
+      77,    70,   247,    90,    78,    71,    51,    52,    91,   101,
+      79,    80,    81,   102,    82,   245,   181,   280,    83,    84,
+      85,    86,    87,    75,   249,    88,    89,    77,   103,   104,
+     105,    78,   114,   115,    52,    91,   119,    79,    80,    81,
+     121,    82,   124,    72,   135,    83,    84,    85,    86,    87,
+      75,    37,    88,    89,    77,   127,    73,   132,    78,   133,
+      45,    52,    91,   134,    79,    80,    81,    74,    82,    46,
+       1,   137,    83,    84,    85,    86,    87,     2,     3,    88,
+      89,   148,   159,    47,    48,     4,     5,   160,    52,    91,
+     165,    49,    50,    51,    52,    53,    -2,    18,   138,   -14,
+     139,    37,   170,   140,     1,   169,   172,   173,   183,   179,
+     189,     2,     3,   186,   191,   193,   204,   198,   199,     4,
+       5,   200,   207,   157,   205,   143,   212,   213,   214,   218,
+     220,   222,   221,   225,   227,   229,   231,   233,   228,   248,
+     230,   239,   250,   253,   240,   258,   251,   255,   257,   259,
+     256,   266,   211,   267,   181,   271,   275,   274,   279,   278,
+      19,    29,    43,   149,   232,   203,   209,   163,     0,     0,
+       0,     0,     0,   100
 };
 
 static const yytype_int16 yycheck[] =
 {
-      56,    17,    80,     7,    65,   114,   215,   116,   217,    56,
-       1,     5,    37,    69,     5,     7,    42,     1,     1,    11,
-      12,     5,     5,    32,     8,    50,     1,     7,    37,    11,
-       5,    11,    12,    17,    90,    76,    10,    78,    42,    13,
-      96,    50,    36,   104,    85,   101,    30,    31,    42,    96,
-      42,    42,   261,   262,    38,    39,    40,    41,    42,    42,
-      42,    36,    42,     1,    31,   274,     1,    42,     4,     4,
-       5,     9,    42,     8,     8,    42,     7,    12,   134,    10,
-     189,    15,    16,    18,    19,    20,    24,    22,     0,    23,
-      25,    26,    27,    28,    29,   156,     3,    32,    33,   177,
-     178,     6,   180,     1,   182,     9,    41,    42,    36,     7,
-       0,     1,    10,     3,    42,    36,     8,    11,     8,    13,
-       1,    42,    14,     4,     5,    15,    16,     8,     4,     7,
-     239,    12,    10,    23,    11,   191,    13,    18,    19,    20,
-      19,    22,     5,    22,    25,    26,    27,    28,    29,   258,
-     259,    32,    33,    34,    35,    36,     8,     9,     4,     4,
-      41,    42,    42,     8,    34,    35,    36,    12,   246,   247,
-     248,   249,   233,    18,    19,    20,   232,    22,    10,    11,
-      25,    26,    27,    28,    29,    13,    42,    32,    33,    10,
-      11,    19,    37,    24,    22,    40,    41,    42,   254,    10,
-      11,     4,    13,     4,    32,    10,    11,     8,   224,    37,
-       6,    12,     8,     9,     6,    11,     4,    18,    19,    20,
-       4,    22,    50,   279,    25,    26,    27,    28,    29,    42,
-       5,    32,    33,    42,     8,     6,    42,    24,    42,     9,
-      41,    42,     6,     6,    42,    42,     8,     8,     8,     6,
-       5,     5,     8,     5,    13,     8,     5,     8,     6,     4,
-      42,    42,     8,     4,     8,    42,    42,   160,     8,    42,
-      42,    21,     7,    42,    42,    42,    13,     7,    11,     8,
-      14,     8,     7,    11,    42,     5,     8,     5,    24,     8,
-      11,   207,   100,   213,    11,    42,     8,    11,    13,    42,
-      42,    24,    11,    42,    42,    13,     7,     6,    -1,   171,
-      42,    42,   111,    96,    -1,    -1,    42,    -1,    42,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    42,
-      -1,    42
+      62,    20,    84,   117,   212,     5,   214,    32,    37,    39,
+      37,    43,    74,    43,    43,     1,    43,     1,    43,     5,
+       1,     5,     7,     4,     5,     4,    80,     8,    82,    24,
+       5,    12,    94,    11,     5,    89,    23,    18,    19,    20,
+       1,    22,   104,    43,     5,    26,    27,    28,    29,    30,
+     258,   259,    33,    34,    35,    36,    37,    43,    43,    43,
+       1,    42,    43,     4,     5,    43,   274,     8,    43,     0,
+      69,    12,    43,     5,   136,   189,    37,    18,    19,    20,
+      10,    22,    43,    13,     8,    26,    27,    28,    29,    30,
+      14,     7,    33,    34,    10,   177,   178,    11,   180,    13,
+     182,    42,    43,   165,     5,    37,     1,     8,   107,     7,
+       5,    43,    10,     8,     7,     3,    17,     1,    11,    12,
+       7,     6,    17,     7,    11,    12,    10,     5,    43,   191,
+      31,    32,    11,     4,    13,    43,    31,    32,    39,    40,
+      41,    42,    43,   257,    39,    40,    41,    42,    43,     9,
+      43,     4,   266,   267,     8,     9,    43,    35,    36,    37,
+      23,   243,   244,   245,   246,     6,    29,   229,    43,     4,
+       5,    10,    11,     8,    13,    43,    39,    12,    10,    11,
+      43,    10,    11,    18,    19,    20,     4,    22,    25,   251,
+       4,    26,    27,    28,    29,    30,     4,     5,    33,    34,
+       8,     4,   221,    38,    12,    43,    41,    42,    43,     8,
+      18,    19,    20,    43,    22,    10,    11,   279,    26,    27,
+      28,    29,    30,     4,     5,    33,    34,     8,     6,    25,
+      43,    12,     9,    43,    42,    43,    43,    18,    19,    20,
+       6,    22,     6,     1,     6,    26,    27,    28,    29,    30,
+       4,     9,    33,    34,     8,    43,    14,     8,    12,     8,
+       8,    42,    43,     8,    18,    19,    20,    25,    22,    17,
+       8,    43,    26,    27,    28,    29,    30,    15,    16,    33,
+      34,     8,    13,    31,    32,    23,    24,     8,    42,    43,
+      25,    39,    40,    41,    42,    43,     0,     1,     6,     3,
+       8,     9,     8,    11,     8,     6,     4,    43,     8,    43,
+       4,    15,    16,     8,    21,    43,     8,    43,    43,    23,
+      24,    43,     7,    43,    43,    43,    13,     7,    11,    43,
+      43,    43,    14,    43,    43,    25,     8,     7,    43,     8,
+      43,    43,     8,     8,    43,    13,    25,    43,    11,    11,
+      43,    11,    43,    11,    11,    43,     8,    13,     7,    43,
+       7,    22,    38,   103,   208,   159,   171,   113,    -1,    -1,
+      -1,    -1,    -1,    62
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,     8,    15,    16,    23,    44,    45,    46,    48,    49,
-      50,    51,    42,     4,     0,     1,    46,     3,     6,     1,
-      42,    52,    53,    36,    42,    47,    42,    57,    52,     9,
-       5,    52,     4,     1,     7,    10,    54,     1,     8,    17,
-      30,    31,    38,    39,    40,    41,    42,    53,    55,    58,
-      59,    60,    61,    93,    94,    98,     4,    42,    42,    58,
-      24,    31,    42,     6,     4,     4,     4,    42,     1,    24,
-       5,    58,     4,     8,    12,    18,    19,    20,    22,    25,
-      26,    27,    28,    29,    32,    33,    37,    42,    53,    55,
-      67,    72,    73,    84,    86,    91,    92,    98,     8,    42,
-       6,    24,    42,    69,     1,    42,    95,    95,     5,    47,
-      96,    97,     9,    73,     1,    62,    73,    42,    82,     6,
-      65,    65,     6,    65,    36,    42,    71,    79,    71,    81,
-       8,     8,     8,     6,    65,    42,     6,     8,    11,    73,
-       7,    42,    68,    88,     8,     9,     5,    91,     8,    69,
-      73,     7,    11,    12,    42,    95,     8,    14,     5,     5,
-      13,     8,     1,     5,    96,    56,    62,     5,    62,     6,
-       8,    66,     4,    42,    63,    64,    70,    10,    13,    42,
-      10,    11,    13,     8,    10,    80,     8,    74,    73,     4,
-      85,    21,    78,    42,     7,    10,    77,     7,    42,    42,
-      42,    95,    42,    64,     8,    42,     7,    83,    68,    34,
-      35,    36,    89,    90,    42,    13,     7,    11,    71,    71,
-      71,    42,    71,    42,    14,    42,    62,    73,    42,    87,
-      42,    42,    24,     8,     8,    88,     7,    42,    42,    11,
-       5,    89,    42,    42,    70,    70,    10,    13,    10,    13,
-      47,     8,     5,     8,    24,    73,    95,     7,    11,    11,
-      62,    13,    11,    71,    71,    71,    71,    75,    73,    62,
-      62,    70,    70,    42,    13,     8,    70,    76,    42,     7,
-      73
+       0,     8,    15,    16,    23,    24,    45,    46,    47,    49,
+      50,    51,    52,    43,     4,    24,    23,     0,     1,    47,
+       3,     6,     1,    53,    37,    43,    48,    43,    58,    53,
+       5,    43,    54,     4,     1,     7,    10,     9,     1,    59,
+       4,    43,    55,    59,     5,     8,    17,    31,    32,    39,
+      40,    41,    42,    43,    54,    56,    60,    61,    62,    94,
+      95,    99,    92,    43,    25,    32,    43,     6,     4,     4,
+       4,    43,     1,    14,    25,     4,     5,     8,    12,    18,
+      19,    20,    22,    26,    27,    28,    29,    30,    33,    34,
+      38,    43,    54,    56,    68,    73,    74,    85,    87,    93,
+      99,     8,    43,     6,    25,    43,    70,     1,    96,    96,
+       5,    48,    97,    98,     9,    43,    74,     1,    63,    43,
+      83,     6,    66,    66,     6,    66,    37,    43,    72,    80,
+      72,    82,     8,     8,     8,     6,    66,    43,     6,     8,
+      11,    74,     7,    43,    69,    89,     8,     9,     8,    70,
+      74,     7,    11,    12,    43,    96,     5,    43,     5,    13,
+       8,     1,     5,    97,    57,    25,    63,     5,    74,     6,
+       8,    67,     4,    43,    64,    65,    71,    10,    13,    43,
+      10,    11,    13,     8,    10,    81,     8,    75,    74,     4,
+      86,    21,    79,    43,     7,    10,    78,     7,    43,    43,
+      43,     8,    14,    65,     8,    43,    74,     7,    84,    69,
+      90,    43,    13,     7,    11,    72,    72,    72,    43,    72,
+      43,    14,    43,    63,    74,    43,    88,    43,    43,    25,
+      43,     8,    89,     7,     5,    35,    36,    37,    91,    43,
+      43,    71,    71,    10,    13,    10,    13,    48,     8,     5,
+       8,    25,    74,     8,     7,    43,    43,    11,    13,    11,
+      72,    72,    72,    72,    76,    74,    11,    11,    63,    71,
+      71,    43,    63,    63,    13,     8,    71,    77,    43,     7,
+      74
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1048,14 +1081,14 @@ do {                                                                      \
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, const YYSTYPE * const yyvaluep, const YYLTYPE * const yylocationp, struct parse_io *parseio)
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct parse_io *parseio)
 #else
 static void
 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, parseio)
     FILE *yyoutput;
     int yytype;
-    const YYSTYPE * const yyvaluep;
-    const YYLTYPE * const yylocationp;
+    YYSTYPE const * const yyvaluep;
+    YYLTYPE const * const yylocationp;
     struct parse_io *parseio;
 #endif
 {
@@ -1084,14 +1117,14 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, parseio)
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, const YYSTYPE * const yyvaluep, const YYLTYPE * const yylocationp, struct parse_io *parseio)
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct parse_io *parseio)
 #else
 static void
 yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, parseio)
     FILE *yyoutput;
     int yytype;
-    const YYSTYPE * const yyvaluep;
-    const YYLTYPE * const yylocationp;
+    YYSTYPE const * const yyvaluep;
+    YYLTYPE const * const yylocationp;
     struct parse_io *parseio;
 #endif
 {
@@ -1269,7 +1302,7 @@ yytnamerr (char *yyres, const char *yystr)
 {
   if (*yystr == '"')
     {
-      size_t yyn = 0;
+      YYSIZE_T yyn = 0;
       char const *yyp = yystr;
 
       for (;;)
@@ -1316,7 +1349,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar)
 {
   int yyn = yypact[yystate];
 
-  if (! (YYPACT_NINF < yyn && yyn < YYLAST))
+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
     return 0;
   else
     {
@@ -1354,7 +1387,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar)
       int yyxbegin = yyn < 0 ? -yyn : 0;
 
       /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn;
+      int yychecklim = YYLAST - yyn + 1;
       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
       int yycount = 1;
 
@@ -1443,330 +1476,330 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 
   switch (yytype)
     {
-      case 42: /* "word" */
-#line 178 "ael.y"
+      case 43: /* "word" */
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1450 "ael.tab.c"
+#line 1483 "ael.tab.c"
        break;
-      case 45: /* "objects" */
-#line 165 "ael.y"
+      case 46: /* "objects" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1458 "ael.tab.c"
+#line 1491 "ael.tab.c"
        break;
-      case 46: /* "object" */
-#line 165 "ael.y"
+      case 47: /* "object" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1466 "ael.tab.c"
+#line 1499 "ael.tab.c"
        break;
-      case 47: /* "context_name" */
-#line 178 "ael.y"
+      case 48: /* "context_name" */
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1471 "ael.tab.c"
+#line 1504 "ael.tab.c"
        break;
-      case 48: /* "context" */
-#line 165 "ael.y"
+      case 49: /* "context" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1479 "ael.tab.c"
+#line 1512 "ael.tab.c"
        break;
-      case 50: /* "macro" */
-#line 165 "ael.y"
+      case 51: /* "macro" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1487 "ael.tab.c"
+#line 1520 "ael.tab.c"
        break;
-      case 51: /* "globals" */
-#line 165 "ael.y"
+      case 52: /* "globals" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1495 "ael.tab.c"
+#line 1528 "ael.tab.c"
        break;
-      case 52: /* "global_statements" */
-#line 165 "ael.y"
+      case 53: /* "global_statements" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1503 "ael.tab.c"
+#line 1536 "ael.tab.c"
        break;
-      case 53: /* "assignment" */
-#line 165 "ael.y"
+      case 54: /* "assignment" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1511 "ael.tab.c"
+#line 1544 "ael.tab.c"
        break;
-      case 55: /* "local_assignment" */
-#line 165 "ael.y"
+      case 56: /* "local_assignment" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1519 "ael.tab.c"
+#line 1552 "ael.tab.c"
        break;
-      case 57: /* "arglist" */
-#line 165 "ael.y"
+      case 58: /* "arglist" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1527 "ael.tab.c"
+#line 1560 "ael.tab.c"
        break;
-      case 58: /* "elements" */
-#line 165 "ael.y"
+      case 59: /* "elements" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1535 "ael.tab.c"
+#line 1568 "ael.tab.c"
        break;
-      case 59: /* "element" */
-#line 165 "ael.y"
+      case 60: /* "element" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1543 "ael.tab.c"
+#line 1576 "ael.tab.c"
        break;
-      case 60: /* "ignorepat" */
-#line 165 "ael.y"
+      case 61: /* "ignorepat" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1551 "ael.tab.c"
+#line 1584 "ael.tab.c"
        break;
-      case 61: /* "extension" */
-#line 165 "ael.y"
+      case 62: /* "extension" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1559 "ael.tab.c"
+#line 1592 "ael.tab.c"
        break;
-      case 62: /* "statements" */
-#line 165 "ael.y"
+      case 63: /* "statements" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1567 "ael.tab.c"
+#line 1600 "ael.tab.c"
        break;
-      case 63: /* "timerange" */
-#line 178 "ael.y"
+      case 64: /* "timerange" */
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1572 "ael.tab.c"
+#line 1605 "ael.tab.c"
        break;
-      case 64: /* "timespec" */
-#line 165 "ael.y"
+      case 65: /* "timespec" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1580 "ael.tab.c"
+#line 1613 "ael.tab.c"
        break;
-      case 65: /* "test_expr" */
-#line 178 "ael.y"
+      case 66: /* "test_expr" */
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1585 "ael.tab.c"
+#line 1618 "ael.tab.c"
        break;
-      case 67: /* "if_like_head" */
-#line 165 "ael.y"
+      case 68: /* "if_like_head" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1593 "ael.tab.c"
+#line 1626 "ael.tab.c"
        break;
-      case 68: /* "word_list" */
-#line 178 "ael.y"
+      case 69: /* "word_list" */
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1598 "ael.tab.c"
+#line 1631 "ael.tab.c"
        break;
-      case 70: /* "word3_list" */
-#line 178 "ael.y"
+      case 71: /* "word3_list" */
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1603 "ael.tab.c"
+#line 1636 "ael.tab.c"
        break;
-      case 71: /* "goto_word" */
-#line 178 "ael.y"
+      case 72: /* "goto_word" */
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1608 "ael.tab.c"
+#line 1641 "ael.tab.c"
        break;
-      case 72: /* "switch_statement" */
-#line 165 "ael.y"
+      case 73: /* "switch_statement" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1616 "ael.tab.c"
+#line 1649 "ael.tab.c"
        break;
-      case 73: /* "statement" */
-#line 165 "ael.y"
+      case 74: /* "statement" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1624 "ael.tab.c"
+#line 1657 "ael.tab.c"
        break;
-      case 78: /* "opt_else" */
-#line 165 "ael.y"
+      case 79: /* "opt_else" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1632 "ael.tab.c"
+#line 1665 "ael.tab.c"
        break;
-      case 79: /* "target" */
-#line 165 "ael.y"
+      case 80: /* "target" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1640 "ael.tab.c"
+#line 1673 "ael.tab.c"
        break;
-      case 80: /* "opt_pri" */
-#line 178 "ael.y"
+      case 81: /* "opt_pri" */
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1645 "ael.tab.c"
+#line 1678 "ael.tab.c"
        break;
-      case 81: /* "jumptarget" */
-#line 165 "ael.y"
+      case 82: /* "jumptarget" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1653 "ael.tab.c"
+#line 1686 "ael.tab.c"
        break;
-      case 82: /* "macro_call" */
-#line 165 "ael.y"
+      case 83: /* "macro_call" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1661 "ael.tab.c"
+#line 1694 "ael.tab.c"
        break;
-      case 84: /* "application_call_head" */
-#line 165 "ael.y"
+      case 85: /* "application_call_head" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1669 "ael.tab.c"
+#line 1702 "ael.tab.c"
        break;
-      case 86: /* "application_call" */
-#line 165 "ael.y"
+      case 87: /* "application_call" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1677 "ael.tab.c"
+#line 1710 "ael.tab.c"
        break;
-      case 87: /* "opt_word" */
-#line 178 "ael.y"
+      case 88: /* "opt_word" */
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1682 "ael.tab.c"
+#line 1715 "ael.tab.c"
        break;
-      case 88: /* "eval_arglist" */
-#line 165 "ael.y"
+      case 89: /* "eval_arglist" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1690 "ael.tab.c"
+#line 1723 "ael.tab.c"
        break;
-      case 89: /* "case_statements" */
-#line 165 "ael.y"
+      case 90: /* "case_statements" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1698 "ael.tab.c"
+#line 1731 "ael.tab.c"
        break;
-      case 90: /* "case_statement" */
-#line 165 "ael.y"
+      case 91: /* "case_statement" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1706 "ael.tab.c"
+#line 1739 "ael.tab.c"
        break;
-      case 91: /* "macro_statements" */
-#line 165 "ael.y"
+      case 92: /* "macro_statements" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1714 "ael.tab.c"
+#line 1747 "ael.tab.c"
        break;
-      case 92: /* "macro_statement" */
-#line 165 "ael.y"
+      case 93: /* "macro_statement" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1722 "ael.tab.c"
+#line 1755 "ael.tab.c"
        break;
-      case 93: /* "switches" */
-#line 165 "ael.y"
+      case 94: /* "switches" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1730 "ael.tab.c"
+#line 1763 "ael.tab.c"
        break;
-      case 94: /* "eswitches" */
-#line 165 "ael.y"
+      case 95: /* "eswitches" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1738 "ael.tab.c"
+#line 1771 "ael.tab.c"
        break;
-      case 95: /* "switchlist" */
-#line 165 "ael.y"
+      case 96: /* "switchlist" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1746 "ael.tab.c"
+#line 1779 "ael.tab.c"
        break;
-      case 96: /* "included_entry" */
-#line 165 "ael.y"
+      case 97: /* "included_entry" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1754 "ael.tab.c"
+#line 1787 "ael.tab.c"
        break;
-      case 97: /* "includeslist" */
-#line 165 "ael.y"
+      case 98: /* "includeslist" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1762 "ael.tab.c"
+#line 1795 "ael.tab.c"
        break;
-      case 98: /* "includes" */
-#line 165 "ael.y"
+      case 99: /* "includes" */
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1770 "ael.tab.c"
+#line 1803 "ael.tab.c"
        break;
 
       default:
@@ -2089,235 +2122,256 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 186 "ael.y"
+#line 191 "ael.y"
     { (yyval.pval) = parseio->pval = (yyvsp[(1) - (1)].pval); ;}
     break;
 
   case 3:
-#line 189 "ael.y"
+#line 194 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
   case 4:
-#line 190 "ael.y"
+#line 195 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 5:
-#line 191 "ael.y"
+#line 196 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
     break;
 
   case 6:
-#line 194 "ael.y"
+#line 199 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
   case 7:
-#line 195 "ael.y"
+#line 200 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
   case 8:
-#line 196 "ael.y"
+#line 201 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
   case 9:
-#line 197 "ael.y"
+#line 202 "ael.y"
     {(yyval.pval)=0;/* allow older docs to be read */;}
     break;
 
   case 10:
-#line 200 "ael.y"
+#line 205 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
     break;
 
   case 11:
-#line 201 "ael.y"
+#line 206 "ael.y"
     { (yyval.str) = strdup("default"); ;}
     break;
 
   case 12:
-#line 204 "ael.y"
+#line 209 "ael.y"
     {
-               if (!(yyvsp[(5) - (6)].pval)) {
-                        ast_log(LOG_WARNING, "==== File: %s, Line %d, Cols: %d-%d: Warning! The empty context %s will be IGNORED!\n", 
-                               my_file, (yylsp[(4) - (6)]).first_line, (yylsp[(4) - (6)]).first_column, (yylsp[(4) - (6)]).last_column, (yyvsp[(3) - (6)].str) );
-                       (yyval.pval) = 0;
-                       free((yyvsp[(3) - (6)].str));
-               } else {
-                       (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)]));
-                       (yyval.pval)->u1.str = (yyvsp[(3) - (6)].str);
-                       (yyval.pval)->u2.statements = (yyvsp[(5) - (6)].pval);
-                       set_dads((yyval.pval),(yyvsp[(5) - (6)].pval));
-                       (yyval.pval)->u3.abstract = (yyvsp[(1) - (6)].intval);} ;}
+               (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)]));
+               (yyval.pval)->u1.str = (yyvsp[(3) - (6)].str);
+               (yyval.pval)->u2.statements = (yyvsp[(5) - (6)].pval);
+               set_dads((yyval.pval),(yyvsp[(5) - (6)].pval));
+               (yyval.pval)->u3.abstract = (yyvsp[(1) - (6)].intval);;}
     break;
 
   case 13:
-#line 219 "ael.y"
+#line 218 "ael.y"
     { (yyval.intval) = 1; ;}
     break;
 
   case 14:
-#line 220 "ael.y"
+#line 219 "ael.y"
     { (yyval.intval) = 0; ;}
     break;
 
   case 15:
-#line 223 "ael.y"
+#line 220 "ael.y"
+    { (yyval.intval) = 2; ;}
+    break;
+
+  case 16:
+#line 221 "ael.y"
+    { (yyval.intval)=3; ;}
+    break;
+
+  case 17:
+#line 222 "ael.y"
+    { (yyval.intval)=3; ;}
+    break;
+
+  case 18:
+#line 225 "ael.y"
     {
                (yyval.pval) = npval2(PV_MACRO, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (8)].str); (yyval.pval)->u2.arglist = (yyvsp[(4) - (8)].pval); (yyval.pval)->u3.macro_statements = (yyvsp[(7) - (8)].pval);
         set_dads((yyval.pval),(yyvsp[(7) - (8)].pval));;}
     break;
 
-  case 16:
-#line 229 "ael.y"
+  case 19:
+#line 231 "ael.y"
     {
                (yyval.pval) = npval2(PV_GLOBALS, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
                (yyval.pval)->u1.statements = (yyvsp[(3) - (4)].pval);
         set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
     break;
 
-  case 17:
-#line 235 "ael.y"
+  case 20:
+#line 237 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 18:
-#line 236 "ael.y"
+  case 21:
+#line 238 "ael.y"
     {(yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 19:
-#line 237 "ael.y"
+  case 22:
+#line 239 "ael.y"
     {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
     break;
 
-  case 20:
-#line 240 "ael.y"
+  case 23:
+#line 242 "ael.y"
     { reset_semicount(parseio->scanner); ;}
     break;
 
-  case 21:
-#line 240 "ael.y"
+  case 24:
+#line 242 "ael.y"
     {
                (yyval.pval) = npval2(PV_VARDEC, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
                (yyval.pval)->u1.str = (yyvsp[(1) - (5)].str);
                (yyval.pval)->u2.val = (yyvsp[(4) - (5)].str); ;}
     break;
 
-  case 22:
-#line 246 "ael.y"
+  case 25:
+#line 248 "ael.y"
     { reset_semicount(parseio->scanner); ;}
     break;
 
-  case 23:
-#line 246 "ael.y"
+  case 26:
+#line 248 "ael.y"
     {
                (yyval.pval) = npval2(PV_LOCALVARDEC, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (6)].str);
                (yyval.pval)->u2.val = (yyvsp[(5) - (6)].str); ;}
     break;
 
-  case 24:
-#line 253 "ael.y"
+  case 27:
+#line 255 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 25:
-#line 254 "ael.y"
+  case 28:
+#line 256 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
-  case 26:
-#line 255 "ael.y"
+  case 29:
+#line 257 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;}
     break;
 
-  case 27:
-#line 256 "ael.y"
+  case 30:
+#line 258 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
     break;
 
-  case 28:
-#line 259 "ael.y"
+  case 31:
+#line 261 "ael.y"
     {(yyval.pval)=0;;}
     break;
 
-  case 29:
-#line 260 "ael.y"
+  case 32:
+#line 262 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 30:
-#line 261 "ael.y"
+  case 33:
+#line 263 "ael.y"
     { (yyval.pval)=(yyvsp[(2) - (2)].pval);;}
     break;
 
-  case 31:
-#line 264 "ael.y"
-    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
-    break;
-
-  case 32:
-#line 265 "ael.y"
-    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
-    break;
-
-  case 33:
+  case 34:
 #line 266 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
-  case 34:
+  case 35:
 #line 267 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
-  case 35:
+  case 36:
 #line 268 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
-  case 36:
+  case 37:
 #line 269 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
-  case 37:
+  case 38:
 #line 270 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
-  case 38:
+  case 39:
 #line 271 "ael.y"
-    {free((yyvsp[(1) - (2)].str)); (yyval.pval)=0;;}
+    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
-  case 39:
+  case 40:
 #line 272 "ael.y"
+    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
+    break;
+
+  case 41:
+#line 273 "ael.y"
+    {free((yyvsp[(1) - (2)].str)); (yyval.pval)=0;;}
+    break;
+
+  case 42:
+#line 274 "ael.y"
     {(yyval.pval)=0;/* allow older docs to be read */;}
     break;
 
-  case 40:
-#line 275 "ael.y"
+  case 43:
+#line 277 "ael.y"
     {
                (yyval.pval) = npval2(PV_IGNOREPAT, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
                (yyval.pval)->u1.str = (yyvsp[(3) - (4)].str);;}
     break;
 
-  case 41:
-#line 280 "ael.y"
+  case 44:
+#line 282 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.str = (yyvsp[(1) - (3)].str);
                (yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval); set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
     break;
 
-  case 42:
-#line 284 "ael.y"
+  case 45:
+#line 286 "ael.y"
+    {
+               (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (5)]), &(yylsp[(3) - (5)]));
+               (yyval.pval)->u1.str = malloc(strlen((yyvsp[(1) - (5)].str))+strlen((yyvsp[(3) - (5)].str))+2);
+               strcpy((yyval.pval)->u1.str,(yyvsp[(1) - (5)].str));
+               strcat((yyval.pval)->u1.str,"@");
+               strcat((yyval.pval)->u1.str,(yyvsp[(3) - (5)].str));
+               free((yyvsp[(1) - (5)].str));
+               (yyval.pval)->u2.statements = (yyvsp[(5) - (5)].pval); set_dads((yyval.pval),(yyvsp[(5) - (5)].pval));;}
+    break;
+
+  case 46:
+#line 294 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
@@ -2325,8 +2379,8 @@ yyreduce:
                (yyval.pval)->u4.regexten=1;;}
     break;
 
-  case 43:
-#line 289 "ael.y"
+  case 47:
+#line 299 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (7)]), &(yylsp[(7) - (7)]));
                (yyval.pval)->u1.str = (yyvsp[(5) - (7)].str);
@@ -2334,8 +2388,8 @@ yyreduce:
                (yyval.pval)->u3.hints = (yyvsp[(3) - (7)].str);;}
     break;
 
-  case 44:
-#line 294 "ael.y"
+  case 48:
+#line 304 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)]));
                (yyval.pval)->u1.str = (yyvsp[(6) - (8)].str);
@@ -2344,37 +2398,42 @@ yyreduce:
                (yyval.pval)->u3.hints = (yyvsp[(4) - (8)].str);;}
     break;
 
-  case 45:
-#line 304 "ael.y"
+  case 49:
+#line 313 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 46:
-#line 305 "ael.y"
+  case 50:
+#line 314 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 47:
-#line 306 "ael.y"
+  case 51:
+#line 315 "ael.y"
     {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
     break;
 
-  case 48:
-#line 312 "ael.y"
+  case 52:
+#line 321 "ael.y"
     {
-               asprintf(&(yyval.str), "%s:%s:%s", (yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str), (yyvsp[(5) - (5)].str));
-               free((yyvsp[(1) - (5)].str));
-               free((yyvsp[(3) - (5)].str));
-               free((yyvsp[(5) - (5)].str)); ;}
+               if (asprintf(&(yyval.str), "%s:%s:%s", (yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str), (yyvsp[(5) - (5)].str)) < 0) {
+                       ast_log(LOG_WARNING, "asprintf() failed\n");
+                       (yyval.str) = NULL;
+               } else {
+                       free((yyvsp[(1) - (5)].str));
+                       free((yyvsp[(3) - (5)].str));
+                       free((yyvsp[(5) - (5)].str));
+               }
+       ;}
     break;
 
-  case 49:
-#line 317 "ael.y"
+  case 53:
+#line 331 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
     break;
 
-  case 50:
-#line 321 "ael.y"
+  case 54:
+#line 335 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[(1) - (7)].str), &(yylsp[(1) - (7)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (7)].str), &(yylsp[(3) - (7)]));
@@ -2382,189 +2441,229 @@ yyreduce:
                (yyval.pval)->next->next->next = nword((yyvsp[(7) - (7)].str), &(yylsp[(7) - (7)])); ;}
     break;
 
-  case 51:
-#line 329 "ael.y"
+  case 55:
+#line 343 "ael.y"
     { reset_parencount(parseio->scanner); ;}
     break;
 
-  case 52:
-#line 329 "ael.y"
+  case 56:
+#line 343 "ael.y"
     { (yyval.str) = (yyvsp[(3) - (4)].str); ;}
     break;
 
-  case 53:
-#line 333 "ael.y"
+  case 57:
+#line 347 "ael.y"
     {
                (yyval.pval)= npval2(PV_IF, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (2)].str); ;}
     break;
 
-  case 54:
-#line 336 "ael.y"
+  case 58:
+#line 350 "ael.y"
     {
                (yyval.pval) = npval2(PV_RANDOM, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
                (yyval.pval)->u1.str=(yyvsp[(2) - (2)].str);;}
     break;
 
-  case 55:
-#line 339 "ael.y"
+  case 59:
+#line 353 "ael.y"
     {
                (yyval.pval) = npval2(PV_IFTIME, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
                (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);
                prev_word = 0; ;}
     break;
 
-  case 56:
-#line 350 "ael.y"
+  case 60:
+#line 364 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);;}
     break;
 
-  case 57:
-#line 351 "ael.y"
+  case 61:
+#line 365 "ael.y"
     {
-               asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
-               free((yyvsp[(1) - (2)].str));
-               free((yyvsp[(2) - (2)].str));
-               prev_word = (yyval.str);;}
+               if (asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
+                       ast_log(LOG_WARNING, "asprintf() failed\n");
+                       (yyval.str) = NULL;
+               } else {
+                       free((yyvsp[(1) - (2)].str));
+                       free((yyvsp[(2) - (2)].str));
+                       prev_word = (yyval.str);
+               }
+       ;}
     break;
 
-  case 58:
-#line 358 "ael.y"
+  case 62:
+#line 377 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
     break;
 
-  case 59:
-#line 359 "ael.y"
+  case 63:
+#line 378 "ael.y"
     {
-               asprintf(&((yyval.str)), "%s %s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
-               free((yyvsp[(1) - (2)].str));
-               free((yyvsp[(2) - (2)].str)); ;}
+               if (asprintf(&((yyval.str)), "%s %s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
+                       ast_log(LOG_WARNING, "asprintf() failed\n");
+                       (yyval.str) = NULL;
+               } else {
+                       free((yyvsp[(1) - (2)].str));
+                       free((yyvsp[(2) - (2)].str));
+               }
+       ;}
     break;
 
-  case 60:
-#line 363 "ael.y"
+  case 64:
+#line 387 "ael.y"
     {
-               asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str));
-               free((yyvsp[(1) - (3)].str));
-               free((yyvsp[(3) - (3)].str)); ;}
+               if (asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
+                       ast_log(LOG_WARNING, "asprintf() failed\n");
+                       (yyval.str) = NULL;
+               } else {
+                       free((yyvsp[(1) - (3)].str));
+                       free((yyvsp[(3) - (3)].str));
+               }
+       ;}
     break;
 
-  case 61:
-#line 367 "ael.y"
+  case 65:
+#line 396 "ael.y"
     {  /* there are often '&' in hints */
-               asprintf(&((yyval.str)), "%s&%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str));
-               free((yyvsp[(1) - (3)].str));
-               free((yyvsp[(3) - (3)].str));;}
+               if (asprintf(&((yyval.str)), "%s&%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
+                       ast_log(LOG_WARNING, "asprintf() failed\n");
+                       (yyval.str) = NULL;
+               } else {
+                       free((yyvsp[(1) - (3)].str));
+                       free((yyvsp[(3) - (3)].str));
+               }
+       ;}
     break;
 
-  case 62:
-#line 373 "ael.y"
+  case 66:
+#line 407 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);;}
     break;
 
-  case 63:
-#line 374 "ael.y"
+  case 67:
+#line 408 "ael.y"
     {
-               asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
-               free((yyvsp[(1) - (2)].str));
-               free((yyvsp[(2) - (2)].str));
-               prev_word = (yyval.str);;}
+               if (asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
+                       ast_log(LOG_WARNING, "asprintf() failed\n");
+                       (yyval.str) = NULL;
+               } else {
+                       free((yyvsp[(1) - (2)].str));
+                       free((yyvsp[(2) - (2)].str));
+                       prev_word = (yyval.str);
+               }                       
+       ;}
     break;
 
-  case 64:
-#line 379 "ael.y"
+  case 68:
+#line 418 "ael.y"
     {
-               asprintf(&((yyval.str)), "%s%s%s", (yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str));
-               free((yyvsp[(1) - (3)].str));
-               free((yyvsp[(2) - (3)].str));
-               free((yyvsp[(3) - (3)].str));
-               prev_word=(yyval.str);;}
+               if (asprintf(&((yyval.str)), "%s%s%s", (yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
+                       ast_log(LOG_WARNING, "asprintf() failed\n");
+                       (yyval.str) = NULL;
+               } else {
+                       free((yyvsp[(1) - (3)].str));
+                       free((yyvsp[(2) - (3)].str));
+                       free((yyvsp[(3) - (3)].str));
+                       prev_word=(yyval.str);
+               }
+       ;}
     break;
 
-  case 65:
-#line 387 "ael.y"
+  case 69:
+#line 431 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);;}
     break;
 
-  case 66:
-#line 388 "ael.y"
+  case 70:
+#line 432 "ael.y"
     {
-               asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
-               free((yyvsp[(1) - (2)].str));
-               free((yyvsp[(2) - (2)].str));;}
+               if (asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
+                       ast_log(LOG_WARNING, "asprintf() failed\n");
+                       (yyval.str) = NULL;
+               } else {
+                       free((yyvsp[(1) - (2)].str));
+                       free((yyvsp[(2) - (2)].str));
+               }
+       ;}
     break;
 
-  case 67:
-#line 392 "ael.y"
+  case 71:
+#line 441 "ael.y"
     {
-               asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str));
-               free((yyvsp[(1) - (3)].str));
-               free((yyvsp[(3) - (3)].str));;}
+               if (asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
+                       ast_log(LOG_WARNING, "asprintf() failed\n");
+                       (yyval.str) = NULL;
+               } else {
+                       free((yyvsp[(1) - (3)].str));
+                       free((yyvsp[(3) - (3)].str));
+               }
+       ;}
     break;
 
-  case 68:
-#line 398 "ael.y"
+  case 72:
+#line 452 "ael.y"
     {
                (yyval.pval) = npval2(PV_SWITCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
                (yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;}
     break;
 
-  case 69:
-#line 407 "ael.y"
+  case 73:
+#line 461 "ael.y"
     {
                (yyval.pval) = npval2(PV_STATEMENTBLOCK, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));;}
     break;
 
-  case 70:
-#line 410 "ael.y"
+  case 74:
+#line 464 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
     break;
 
-  case 71:
-#line 411 "ael.y"
+  case 75:
+#line 465 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
     break;
 
-  case 72:
-#line 412 "ael.y"
+  case 76:
+#line 466 "ael.y"
     {
                (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;}
     break;
 
-  case 73:
-#line 415 "ael.y"
+  case 77:
+#line 469 "ael.y"
     {
                (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;}
     break;
 
-  case 74:
-#line 418 "ael.y"
+  case 78:
+#line 472 "ael.y"
     {
                (yyval.pval) = npval2(PV_LABEL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
                (yyval.pval)->u1.str = (yyvsp[(1) - (2)].str); ;}
     break;
 
-  case 75:
-#line 421 "ael.y"
+  case 79:
+#line 475 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
-  case 76:
-#line 422 "ael.y"
+  case 80:
+#line 476 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
-  case 77:
-#line 423 "ael.y"
+  case 81:
+#line 477 "ael.y"
     {reset_parencount(parseio->scanner);;}
     break;
 
-  case 78:
-#line 423 "ael.y"
+  case 82:
+#line 477 "ael.y"
     { /* XXX word_list maybe ? */
                (yyval.pval) = npval2(PV_FOR, &(yylsp[(1) - (12)]), &(yylsp[(12) - (12)]));
                (yyval.pval)->u1.for_init = (yyvsp[(4) - (12)].str);
@@ -2573,43 +2672,43 @@ yyreduce:
                (yyval.pval)->u4.for_statements = (yyvsp[(12) - (12)].pval); set_dads((yyval.pval),(yyvsp[(12) - (12)].pval));;}
     break;
 
-  case 79:
-#line 429 "ael.y"
+  case 83:
+#line 483 "ael.y"
     {
                (yyval.pval) = npval2(PV_WHILE, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (3)].str);
                (yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval); set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
     break;
 
-  case 80:
-#line 433 "ael.y"
+  case 84:
+#line 487 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
     break;
 
-  case 81:
-#line 434 "ael.y"
+  case 85:
+#line 488 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(2) - (3)].pval), &(yylsp[(2) - (3)])); ;}
     break;
 
-  case 82:
-#line 435 "ael.y"
+  case 86:
+#line 489 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 83:
-#line 436 "ael.y"
+  case 87:
+#line 490 "ael.y"
     {
                (yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
                (yyval.pval)->u1.str = (yyvsp[(1) - (2)].str);;}
     break;
 
-  case 84:
-#line 439 "ael.y"
+  case 88:
+#line 493 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
-  case 85:
-#line 439 "ael.y"
+  case 89:
+#line 493 "ael.y"
     {
                char *bufx;
                int tot=0;
@@ -2645,127 +2744,127 @@ yyreduce:
        ;}
     break;
 
-  case 86:
-#line 472 "ael.y"
+  case 90:
+#line 526 "ael.y"
     { (yyval.pval) = npval2(PV_BREAK, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 87:
-#line 473 "ael.y"
+  case 91:
+#line 527 "ael.y"
     { (yyval.pval) = npval2(PV_RETURN, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 88:
-#line 474 "ael.y"
+  case 92:
+#line 528 "ael.y"
     { (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 89:
-#line 475 "ael.y"
+  case 93:
+#line 529 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(2) - (3)]));
                (yyval.pval)->u2.statements = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));
                (yyval.pval)->u3.else_statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
     break;
 
-  case 90:
-#line 479 "ael.y"
+  case 94:
+#line 533 "ael.y"
     { (yyval.pval)=0; ;}
     break;
 
-  case 91:
-#line 482 "ael.y"
+  case 95:
+#line 536 "ael.y"
     { (yyval.pval) = (yyvsp[(2) - (2)].pval); ;}
     break;
 
-  case 92:
-#line 483 "ael.y"
+  case 96:
+#line 537 "ael.y"
     { (yyval.pval) = NULL ; ;}
     break;
 
-  case 93:
-#line 486 "ael.y"
+  case 97:
+#line 540 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
-  case 94:
-#line 487 "ael.y"
+  case 98:
+#line 541 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)])); ;}
     break;
 
-  case 95:
-#line 490 "ael.y"
+  case 99:
+#line 544 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)])); ;}
     break;
 
-  case 96:
-#line 493 "ael.y"
+  case 100:
+#line 547 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
                (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
     break;
 
-  case 97:
-#line 497 "ael.y"
+  case 101:
+#line 551 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
                (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
     break;
 
-  case 98:
-#line 501 "ael.y"
+  case 102:
+#line 555 "ael.y"
     {
                (yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
                (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
     break;
 
-  case 99:
-#line 505 "ael.y"
+  case 103:
+#line 559 "ael.y"
     {
                (yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
                (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
     break;
 
-  case 100:
-#line 511 "ael.y"
+  case 104:
+#line 565 "ael.y"
     { (yyval.str) = strdup("1"); ;}
     break;
 
-  case 101:
-#line 512 "ael.y"
+  case 105:
+#line 566 "ael.y"
     { (yyval.str) = (yyvsp[(2) - (2)].str); ;}
     break;
 
-  case 102:
-#line 516 "ael.y"
+  case 106:
+#line 570 "ael.y"
     {                  /* ext[, pri] default 1 */
                (yyval.pval) = nword((yyvsp[(1) - (2)].str), &(yylsp[(1) - (2)]));
                (yyval.pval)->next = nword((yyvsp[(2) - (2)].str), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 103:
-#line 519 "ael.y"
+  case 107:
+#line 573 "ael.y"
     {  /* context, ext, pri */
                (yyval.pval) = nword((yyvsp[(4) - (4)].str), &(yylsp[(4) - (4)]));
                (yyval.pval)->next = nword((yyvsp[(1) - (4)].str), &(yylsp[(1) - (4)]));
                (yyval.pval)->next->next = nword((yyvsp[(2) - (4)].str), &(yylsp[(2) - (4)])); ;}
     break;
 
-  case 104:
-#line 525 "ael.y"
+  case 108:
+#line 579 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
-  case 105:
-#line 525 "ael.y"
+  case 109:
+#line 579 "ael.y"
     {
                /* XXX original code had @2 but i think we need @5 */
                (yyval.pval) = npval2(PV_MACRO_CALL, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
@@ -2773,20 +2872,20 @@ yyreduce:
                (yyval.pval)->u2.arglist = (yyvsp[(4) - (5)].pval);;}
     break;
 
-  case 106:
-#line 530 "ael.y"
+  case 110:
+#line 584 "ael.y"
     {
                (yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.str = (yyvsp[(1) - (3)].str); ;}
     break;
 
-  case 107:
-#line 538 "ael.y"
+  case 111:
+#line 592 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
-  case 108:
-#line 538 "ael.y"
+  case 112:
+#line 592 "ael.y"
     {
                if (strcasecmp((yyvsp[(1) - (3)].str),"goto") == 0) {
                        (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(2) - (3)]));
@@ -2798,8 +2897,8 @@ yyreduce:
                } ;}
     break;
 
-  case 109:
-#line 549 "ael.y"
+  case 113:
+#line 603 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(3) - (3)]));
                if( (yyval.pval)->type == PV_GOTO )
@@ -2809,179 +2908,188 @@ yyreduce:
        ;}
     break;
 
-  case 110:
-#line 556 "ael.y"
+  case 114:
+#line 610 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 111:
-#line 559 "ael.y"
+  case 115:
+#line 613 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str) ;}
     break;
 
-  case 112:
-#line 560 "ael.y"
+  case 116:
+#line 614 "ael.y"
     { (yyval.str) = strdup(""); ;}
     break;
 
-  case 113:
-#line 563 "ael.y"
+  case 117:
+#line 617 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
-  case 114:
-#line 564 "ael.y"
+  case 118:
+#line 618 "ael.y"
     {
                (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(""); ;}
     break;
 
-  case 115:
-#line 567 "ael.y"
+  case 119:
+#line 621 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;}
     break;
 
-  case 116:
-#line 570 "ael.y"
+  case 120:
+#line 624 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 117:
-#line 571 "ael.y"
+  case 121:
+#line 625 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 118:
-#line 574 "ael.y"
+  case 122:
+#line 628 "ael.y"
     {
                (yyval.pval) = npval2(PV_CASE, &(yylsp[(1) - (4)]), &(yylsp[(3) - (4)])); /* XXX 3 or 4 ? */
                (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
                (yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval); set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;}
     break;
 
-  case 119:
-#line 578 "ael.y"
+  case 123:
+#line 632 "ael.y"
     {
                (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.str = NULL;
                (yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
     break;
 
-  case 120:
-#line 582 "ael.y"
+  case 124:
+#line 636 "ael.y"
     {
                (yyval.pval) = npval2(PV_PATTERN, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)])); /* XXX@3 or @4 ? */
                (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
                (yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval);set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;}
     break;
 
-  case 121:
-#line 588 "ael.y"
+  case 125:
+#line 642 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 122:
-#line 589 "ael.y"
+  case 126:
+#line 643 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 123:
-#line 592 "ael.y"
+  case 127:
+#line 646 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
-  case 124:
-#line 593 "ael.y"
+  case 128:
+#line 647 "ael.y"
     { (yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
-  case 125:
-#line 594 "ael.y"
+  case 129:
+#line 648 "ael.y"
     {
                (yyval.pval) = npval2(PV_CATCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
                (yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;}
     break;
 
-  case 126:
-#line 600 "ael.y"
+  case 130:
+#line 654 "ael.y"
     {
                (yyval.pval) = npval2(PV_SWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)]));
                (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
     break;
 
-  case 127:
-#line 605 "ael.y"
+  case 131:
+#line 659 "ael.y"
     {
                (yyval.pval) = npval2(PV_ESWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)]));
                (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
     break;
 
-  case 128:
-#line 610 "ael.y"
+  case 132:
+#line 664 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 129:
-#line 611 "ael.y"
-    { (yyval.pval) = linku1(nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)])), (yyvsp[(3) - (3)].pval)); ;}
+  case 133:
+#line 665 "ael.y"
+    { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval),nword((yyvsp[(2) - (3)].str), &(yylsp[(2) - (3)]))); ;}
     break;
 
-  case 130:
-#line 612 "ael.y"
-    { char *x; asprintf(&x,"%s@%s", (yyvsp[(1) - (5)].str),(yyvsp[(3) - (5)].str)); free((yyvsp[(1) - (5)].str)); free((yyvsp[(3) - (5)].str));
-                                                                         (yyval.pval) = linku1(nword(x, &(yylsp[(1) - (5)])), (yyvsp[(5) - (5)].pval));;}
+  case 134:
+#line 666 "ael.y"
+    {
+         char *x;
+         if (asprintf(&x,"%s@%s", (yyvsp[(2) - (5)].str), (yyvsp[(4) - (5)].str)) < 0) {
+               ast_log(LOG_WARNING, "asprintf() failed\n");
+               (yyval.pval) = NULL;
+         } else {
+               free((yyvsp[(2) - (5)].str));
+               free((yyvsp[(4) - (5)].str));
+               (yyval.pval) = linku1((yyvsp[(1) - (5)].pval),nword(x, &(yylsp[(2) - (5)])));
+         }
+       ;}
     break;
 
-  case 131:
-#line 614 "ael.y"
+  case 135:
+#line 677 "ael.y"
     {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
     break;
 
-  case 132:
-#line 617 "ael.y"
+  case 136:
+#line 680 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
-  case 133:
-#line 618 "ael.y"
+  case 137:
+#line 681 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
                (yyval.pval)->u2.arglist = (yyvsp[(3) - (3)].pval);
                prev_word=0; /* XXX sure ? */ ;}
     break;
 
-  case 134:
-#line 625 "ael.y"
+  case 138:
+#line 688 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (2)].pval); ;}
     break;
 
-  case 135:
-#line 626 "ael.y"
+  case 139:
+#line 689 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), (yyvsp[(2) - (3)].pval)); ;}
     break;
 
-  case 136:
-#line 627 "ael.y"
+  case 140:
+#line 690 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
     break;
 
-  case 137:
-#line 630 "ael.y"
+  case 141:
+#line 693 "ael.y"
     {
                (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
                (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
     break;
 
-  case 138:
-#line 633 "ael.y"
+  case 142:
+#line 696 "ael.y"
     {
                (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));;}
     break;
 
 
-/* Line 1270 of yacc.c.  */
-#line 2985 "ael.tab.c"
+/* Line 1267 of yacc.c.  */
+#line 3093 "ael.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3196,11 +3304,12 @@ yyreturn:
   if (yymsg != yymsgbuf)
     YYSTACK_FREE (yymsg);
 #endif
-  return yyresult;
+  /* Make sure YYID is used.  */
+  return YYID (yyresult);
 }
 
 
-#line 638 "ael.y"
+#line 701 "ael.y"
 
 
 static char *token_equivs1[] =