Merged revisions 177225 via svnmerge from
[asterisk/asterisk.git] / res / ael / ael.tab.c
index aa1ec0f..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"
@@ -188,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);
@@ -227,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 238 "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
@@ -256,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);
@@ -278,8 +293,8 @@ static pval *nword(char *string, YYLTYPE *pos);
 static pval *update_last(pval *, YYLTYPE *);
 
 
-/* Line 221 of yacc.c.  */
-#line 283 "ael.tab.c"
+/* Line 216 of yacc.c.  */
+#line 298 "ael.tab.c"
 
 #ifdef short
 # undef short
@@ -409,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
@@ -426,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 */
 
@@ -494,7 +511,7 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  17
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   327
+#define YYLAST   373
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  44
@@ -503,7 +520,7 @@ union yyalloc
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  142
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  288
+#define YYNSTATES  281
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -577,17 +594,17 @@ static const yytype_int8 yyrhs[] =
       -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,    54,    53,
+       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,
-      60,    59,    -1,     1,    59,    -1,    62,    -1,    99,    -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,    74,    63,    -1,     1,    63,    -1,    71,
+      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,
@@ -611,12 +628,12 @@ static const yytype_int8 yyrhs[] =
       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,    91,    90,    -1,    35,    43,    11,    63,    -1,    37,
-      11,    63,    -1,    36,    43,    11,    63,    -1,    -1,    93,
-      92,    -1,    74,    -1,    99,    -1,    38,    43,     4,    63,
+      -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,    43,     8,    96,    -1,    43,    14,    43,
-       8,    96,    -1,     1,    96,    -1,    48,    -1,    48,    13,
+       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
@@ -625,21 +642,21 @@ static const yytype_int8 yyrhs[] =
 /* 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,   213,   214,   215,   216,   217,   220,   226,
-     232,   233,   234,   237,   237,   243,   243,   250,   251,   252,
-     253,   256,   257,   258,   261,   262,   263,   264,   265,   266,
-     267,   268,   269,   272,   277,   281,   289,   294,   299,   308,
-     309,   310,   316,   321,   325,   333,   333,   337,   340,   343,
-     354,   355,   362,   363,   367,   371,   377,   378,   383,   391,
-     392,   396,   402,   411,   414,   415,   416,   419,   422,   425,
-     426,   427,   425,   433,   437,   438,   439,   440,   443,   443,
-     476,   477,   478,   479,   483,   486,   487,   490,   491,   494,
-     497,   501,   505,   509,   515,   516,   520,   523,   529,   529,
-     534,   542,   542,   553,   560,   563,   564,   567,   568,   571,
-     574,   575,   578,   582,   586,   592,   593,   596,   597,   598,
-     604,   609,   614,   615,   616,   618,   621,   622,   629,   630,
-     631,   634,   637
+       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
 
@@ -729,91 +746,91 @@ static const yytype_uint8 yydefact[] =
 {
       14,     9,     0,     0,    13,    15,     0,     0,     3,     6,
        0,     7,     8,     0,     0,    17,    16,     1,     5,     4,
-       0,    27,     0,     0,     0,     0,    11,    10,     0,    28,
-       0,    22,    23,    19,    21,     0,    30,     0,     0,     0,
-       0,    42,     0,     0,     0,     0,     0,     0,     0,     0,
-      39,    40,     0,     0,    38,    34,    36,    37,    35,   125,
-      29,     0,    33,     0,     0,     0,     0,     0,     0,     0,
-       0,    41,     0,     0,    12,    32,     0,    94,     0,     0,
+       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,     0,
-     125,   128,    24,     0,     0,     0,    62,     0,     0,     0,
-       0,     0,   142,   136,     0,     0,    25,     0,    44,     0,
-       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,    18,   126,    43,     0,    46,     0,     0,     0,    63,
-     135,     0,     0,   130,   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,     0,     0,     0,
-     120,    67,     0,    59,     0,     0,     0,    99,    71,    98,
+       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,     0,     0,     0,    72,   121,    68,
+       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,   123,     0,     0,
-     103,   102,   101,   100,     0,    48,   122,   124,     0,    52,
-       0,     0,    81,    54,     0,     0,     0,    82
+      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,     6,     7,     8,   113,     9,    10,    11,    12,    24,
-      92,    39,    93,   170,    30,    52,    53,    54,    55,   120,
-     180,   181,   125,   177,    94,   147,   107,   182,   131,    95,
-     121,   193,   274,   284,   202,   198,   132,   191,   134,   123,
-     214,    97,   196,    98,   236,   148,   219,   220,    99,   100,
-      56,    57,   110,   114,   115,    58
+      -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 -219
+#define YYPACT_NINF -209
 static const yytype_int16 yypact[] =
 {
-     102,  -219,   -25,    40,    24,    29,    70,   249,  -219,  -219,
-      74,  -219,  -219,   107,    11,  -219,  -219,  -219,  -219,  -219,
-      -6,    65,    11,   137,   148,    11,  -219,  -219,   152,  -219,
-      87,  -219,  -219,  -219,  -219,   123,  -219,   173,   126,   136,
-     123,  -219,   159,   -11,   186,   190,   194,   196,   158,    86,
-    -219,  -219,   203,   123,  -219,  -219,  -219,  -219,  -219,   177,
-    -219,   201,  -219,   170,   208,   191,   179,    12,    12,    19,
-     214,  -219,   181,   213,  -219,  -219,   115,  -219,   183,   222,
-     222,   223,   222,    36,   187,   226,   228,   229,   232,   222,
-     202,   182,  -219,  -219,   213,  -219,  -219,    16,   113,   239,
-     177,  -219,  -219,   240,   179,   213,  -219,    22,    12,   101,
-     246,   248,  -219,   241,   250,    10,  -219,   234,  -219,    56,
-     255,    56,   256,   253,  -219,   259,  -219,   224,  -219,    26,
-     225,   157,   258,   119,   261,  -219,  -219,  -219,  -219,   213,
-     266,  -219,  -219,  -219,   254,  -219,   231,  -219,    59,  -219,
-    -219,  -219,  -219,  -219,    60,  -219,   233,   235,   236,  -219,
-    -219,    12,   237,  -219,  -219,   224,  -219,  -219,  -219,   263,
-     238,   213,  -219,  -219,  -219,   270,  -219,   242,   124,    -1,
-     269,   276,   273,   187,   187,  -219,   187,   243,   187,  -219,
-     244,   274,  -219,   247,  -219,   115,  -219,   213,  -219,  -219,
-    -219,   251,   252,   257,   264,  -219,  -219,  -219,   283,  -219,
-    -219,   284,  -219,  -219,   242,   286,   260,   262,   285,   292,
-     124,   265,   267,  -219,   267,   172,    15,   176,  -219,   165,
-    -219,    -6,   290,   294,  -219,  -219,  -219,   293,   277,   213,
-      12,  -219,   129,  -219,   295,   296,    56,  -219,  -219,  -219,
-     268,   291,   298,   187,   187,   187,   187,  -219,  -219,  -219,
-    -219,   213,  -219,  -219,  -219,    56,    56,  -219,   267,   267,
-     301,   301,   301,   301,   271,  -219,  -219,  -219,   300,  -219,
-     307,   267,  -219,  -219,   275,   309,   213,  -219
+     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[] =
 {
-    -219,  -219,  -219,   310,   -19,  -219,  -219,  -219,  -219,   125,
-       5,  -219,   -15,  -219,  -219,   -31,  -219,  -219,  -219,  -114,
-    -219,   154,    25,  -219,  -219,   143,   217,  -218,   -82,  -219,
-     -59,  -219,  -219,  -219,  -219,  -219,  -219,  -219,  -219,  -219,
-    -219,  -219,  -219,  -219,  -219,   108,   103,  -219,   227,  -219,
-    -219,  -219,   -65,   209,  -219,   -51
+    -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
@@ -823,76 +840,86 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -133
 static const yytype_int16 yytable[] =
 {
-      96,    28,   133,   111,   251,   172,   252,   174,   101,    62,
-     -66,   167,    22,   108,   118,   168,   -20,  -132,    13,    25,
-      51,    64,    75,   145,   112,    51,   187,    25,   254,   156,
-      25,    26,    65,   157,   158,   144,   183,    27,    51,   184,
-      50,    96,   221,   160,    14,    50,   155,    26,    15,   101,
-     278,   279,    16,    27,    23,   109,    26,   119,    50,   146,
-      76,   -49,    27,   283,    77,   159,   200,   203,    78,   201,
-      17,   157,   158,   129,    79,    80,    81,    20,    82,   130,
-     194,   233,    83,    84,    85,    86,    87,    71,    36,    88,
-      89,   -49,   -49,   -49,    37,    32,   207,    38,    48,    91,
-      72,   225,   226,   159,   227,   126,   229,   128,    29,   161,
-       1,    73,   212,    21,   139,   162,   119,     2,     3,    76,
-     -49,   149,   150,    77,    40,     4,     5,    78,   -31,   190,
-     187,    41,   267,    79,    80,    81,   264,    82,   234,   201,
-      42,    83,    84,    85,    86,    87,    32,    31,    88,    89,
-      34,   276,   277,    33,    43,    44,    35,    48,    91,   216,
-     217,   218,    45,    46,    47,    48,    49,   186,   187,    60,
-     188,   270,   271,   272,   273,   263,   187,    59,   256,    61,
-     262,    76,   253,   187,    63,    77,   255,   187,   141,    78,
-     142,    32,    66,   143,    67,    79,    80,    81,    68,    82,
-      69,    70,   275,    83,    84,    85,    86,    87,    74,   102,
-      88,    89,   257,   103,   104,    90,   105,    76,    47,    48,
-      91,    77,   106,   116,   117,    78,   122,   287,   124,   127,
-     130,    79,    80,    81,   135,    82,   136,   137,   138,    83,
-      84,    85,    86,    87,   151,   140,    88,    89,   153,    -2,
-      18,   163,   -14,   164,   165,    48,    91,     1,   166,   171,
-     173,   176,   175,   178,     2,     3,   189,   179,   185,   192,
-     195,   210,     4,     5,   199,   197,   204,   213,   205,   206,
-     208,   211,   222,   223,   224,   146,   228,   230,   231,   239,
-     232,   240,   241,   243,   235,   237,   246,   247,   258,   259,
-     238,   260,   261,   244,   268,   245,   265,   266,   249,   269,
-     250,   221,   187,   281,   280,   282,   286,    19,   285,   209,
-     215,   154,   242,   248,   169,     0,     0,   152
+      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[] =
 {
-      59,    20,    84,    68,   222,   119,   224,   121,    59,    40,
-      11,     1,     1,     1,    73,     5,     5,     5,    43,    14,
-      35,    32,    53,     7,     5,    40,    11,    22,    13,     7,
-      25,    37,    43,    11,    12,    94,    10,    43,    53,    13,
-      35,   100,    43,   108,     4,    40,   105,    37,    24,   100,
-     268,   269,    23,    43,    43,    43,    37,     1,    53,    43,
-       4,     5,    43,   281,     8,    43,     7,     7,    12,    10,
-       0,    11,    12,    37,    18,    19,    20,     3,    22,    43,
-     139,   195,    26,    27,    28,    29,    30,     1,     1,    33,
-      34,    35,    36,    37,     7,     9,   161,    10,    42,    43,
-      14,   183,   184,    43,   186,    80,   188,    82,    43,     8,
-       8,    25,   171,     6,    89,    14,     1,    15,    16,     4,
-       5,     8,     9,     8,     1,    23,    24,    12,     5,    10,
-      11,     8,   246,    18,    19,    20,     7,    22,   197,    10,
-      17,    26,    27,    28,    29,    30,     9,    22,    33,    34,
-      25,   265,   266,     5,    31,    32,     4,    42,    43,    35,
-      36,    37,    39,    40,    41,    42,    43,    10,    11,    43,
-      13,   253,   254,   255,   256,   240,    11,     4,    13,    43,
-     239,     4,    10,    11,    25,     8,    10,    11,     6,    12,
-       8,     9,     6,    11,     4,    18,    19,    20,     4,    22,
-       4,    43,   261,    26,    27,    28,    29,    30,     5,     8,
-      33,    34,   231,    43,     6,    38,    25,     4,    41,    42,
-      43,     8,    43,     9,    43,    12,    43,   286,     6,     6,
-      43,    18,    19,    20,     8,    22,     8,     8,     6,    26,
-      27,    28,    29,    30,     5,    43,    33,    34,     8,     0,
-       1,     5,     3,     5,    13,    42,    43,     8,     8,    25,
-       5,     8,     6,     4,    15,    16,     8,    43,    43,     8,
-       4,     8,    23,    24,    43,    21,    43,     7,    43,    43,
-      43,    43,    13,     7,    11,    43,    43,    43,    14,    25,
-      43,     8,     8,     7,    43,    43,    11,     5,     8,     5,
-      43,     8,    25,    43,    13,    43,    11,    11,    43,    11,
-      43,    43,    11,    13,    43,     8,     7,     7,    43,   165,
-     177,   104,   214,   220,   115,    -1,    -1,   100
+      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
@@ -901,33 +928,33 @@ static const yytype_uint8 yystos[] =
 {
        0,     8,    15,    16,    23,    24,    45,    46,    47,    49,
       50,    51,    52,    43,     4,    24,    23,     0,     1,    47,
-       3,     6,     1,    43,    53,    54,    37,    43,    48,    43,
-      58,    53,     9,     5,    53,     4,     1,     7,    10,    55,
-       1,     8,    17,    31,    32,    39,    40,    41,    42,    43,
-      54,    56,    59,    60,    61,    62,    94,    95,    99,     4,
-      43,    43,    59,    25,    32,    43,     6,     4,     4,     4,
-      43,     1,    14,    25,     5,    59,     4,     8,    12,    18,
+       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,    92,
-      93,    99,     8,    43,     6,    25,    43,    70,     1,    43,
-      96,    96,     5,    48,    97,    98,     9,    43,    74,     1,
-      63,    74,    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,     5,    92,     8,    70,    74,     7,    11,    12,    43,
-      96,     8,    14,     5,     5,    13,     8,     1,     5,    97,
-      57,    25,    63,     5,    63,     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,    96,    43,    65,
-       8,    43,    74,     7,    84,    69,    35,    36,    37,    90,
-      91,    43,    13,     7,    11,    72,    72,    72,    43,    72,
+      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,
-       8,     8,    89,     7,    43,    43,    11,     5,    90,    43,
+      43,     8,    89,     7,     5,    35,    36,    37,    91,    43,
       43,    71,    71,    10,    13,    10,    13,    48,     8,     5,
-       8,    25,    74,    96,     7,    11,    11,    63,    13,    11,
-      72,    72,    72,    72,    76,    74,    63,    63,    71,    71,
-      43,    13,     8,    71,    77,    43,     7,    74
+       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)
@@ -1054,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
 {
@@ -1090,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
 {
@@ -1275,7 +1302,7 @@ yytnamerr (char *yyres, const char *yystr)
 {
   if (*yystr == '"')
     {
-      size_t yyn = 0;
+      YYSIZE_T yyn = 0;
       char const *yyp = yystr;
 
       for (;;)
@@ -1322,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
     {
@@ -1360,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;
 
@@ -1450,329 +1477,329 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
   switch (yytype)
     {
       case 43: /* "word" */
-#line 178 "ael.y"
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1456 "ael.tab.c"
+#line 1483 "ael.tab.c"
        break;
       case 46: /* "objects" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1464 "ael.tab.c"
+#line 1491 "ael.tab.c"
        break;
       case 47: /* "object" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1472 "ael.tab.c"
+#line 1499 "ael.tab.c"
        break;
       case 48: /* "context_name" */
-#line 178 "ael.y"
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1477 "ael.tab.c"
+#line 1504 "ael.tab.c"
        break;
       case 49: /* "context" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1485 "ael.tab.c"
+#line 1512 "ael.tab.c"
        break;
       case 51: /* "macro" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1493 "ael.tab.c"
+#line 1520 "ael.tab.c"
        break;
       case 52: /* "globals" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1501 "ael.tab.c"
+#line 1528 "ael.tab.c"
        break;
       case 53: /* "global_statements" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1509 "ael.tab.c"
+#line 1536 "ael.tab.c"
        break;
       case 54: /* "assignment" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1517 "ael.tab.c"
+#line 1544 "ael.tab.c"
        break;
       case 56: /* "local_assignment" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1525 "ael.tab.c"
+#line 1552 "ael.tab.c"
        break;
       case 58: /* "arglist" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1533 "ael.tab.c"
+#line 1560 "ael.tab.c"
        break;
       case 59: /* "elements" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1541 "ael.tab.c"
+#line 1568 "ael.tab.c"
        break;
       case 60: /* "element" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1549 "ael.tab.c"
+#line 1576 "ael.tab.c"
        break;
       case 61: /* "ignorepat" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1557 "ael.tab.c"
+#line 1584 "ael.tab.c"
        break;
       case 62: /* "extension" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1565 "ael.tab.c"
+#line 1592 "ael.tab.c"
        break;
       case 63: /* "statements" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1573 "ael.tab.c"
+#line 1600 "ael.tab.c"
        break;
       case 64: /* "timerange" */
-#line 178 "ael.y"
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1578 "ael.tab.c"
+#line 1605 "ael.tab.c"
        break;
       case 65: /* "timespec" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1586 "ael.tab.c"
+#line 1613 "ael.tab.c"
        break;
       case 66: /* "test_expr" */
-#line 178 "ael.y"
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1591 "ael.tab.c"
+#line 1618 "ael.tab.c"
        break;
       case 68: /* "if_like_head" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1599 "ael.tab.c"
+#line 1626 "ael.tab.c"
        break;
       case 69: /* "word_list" */
-#line 178 "ael.y"
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1604 "ael.tab.c"
+#line 1631 "ael.tab.c"
        break;
       case 71: /* "word3_list" */
-#line 178 "ael.y"
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1609 "ael.tab.c"
+#line 1636 "ael.tab.c"
        break;
       case 72: /* "goto_word" */
-#line 178 "ael.y"
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1614 "ael.tab.c"
+#line 1641 "ael.tab.c"
        break;
       case 73: /* "switch_statement" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1622 "ael.tab.c"
+#line 1649 "ael.tab.c"
        break;
       case 74: /* "statement" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1630 "ael.tab.c"
+#line 1657 "ael.tab.c"
        break;
       case 79: /* "opt_else" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1638 "ael.tab.c"
+#line 1665 "ael.tab.c"
        break;
       case 80: /* "target" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1646 "ael.tab.c"
+#line 1673 "ael.tab.c"
        break;
       case 81: /* "opt_pri" */
-#line 178 "ael.y"
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1651 "ael.tab.c"
+#line 1678 "ael.tab.c"
        break;
       case 82: /* "jumptarget" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1659 "ael.tab.c"
+#line 1686 "ael.tab.c"
        break;
       case 83: /* "macro_call" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1667 "ael.tab.c"
+#line 1694 "ael.tab.c"
        break;
       case 85: /* "application_call_head" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1675 "ael.tab.c"
+#line 1702 "ael.tab.c"
        break;
       case 87: /* "application_call" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1683 "ael.tab.c"
+#line 1710 "ael.tab.c"
        break;
       case 88: /* "opt_word" */
-#line 178 "ael.y"
+#line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1688 "ael.tab.c"
+#line 1715 "ael.tab.c"
        break;
       case 89: /* "eval_arglist" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1696 "ael.tab.c"
+#line 1723 "ael.tab.c"
        break;
       case 90: /* "case_statements" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1704 "ael.tab.c"
+#line 1731 "ael.tab.c"
        break;
       case 91: /* "case_statement" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1712 "ael.tab.c"
+#line 1739 "ael.tab.c"
        break;
       case 92: /* "macro_statements" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1720 "ael.tab.c"
+#line 1747 "ael.tab.c"
        break;
       case 93: /* "macro_statement" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1728 "ael.tab.c"
+#line 1755 "ael.tab.c"
        break;
       case 94: /* "switches" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1736 "ael.tab.c"
+#line 1763 "ael.tab.c"
        break;
       case 95: /* "eswitches" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1744 "ael.tab.c"
+#line 1771 "ael.tab.c"
        break;
       case 96: /* "switchlist" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1752 "ael.tab.c"
+#line 1779 "ael.tab.c"
        break;
       case 97: /* "included_entry" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1760 "ael.tab.c"
+#line 1787 "ael.tab.c"
        break;
       case 98: /* "includeslist" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1768 "ael.tab.c"
+#line 1795 "ael.tab.c"
        break;
       case 99: /* "includes" */
-#line 165 "ael.y"
+#line 170 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1776 "ael.tab.c"
+#line 1803 "ael.tab.c"
        break;
 
       default:
@@ -2095,57 +2122,57 @@ 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"
     {
                (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)]));
                (yyval.pval)->u1.str = (yyvsp[(3) - (6)].str);
@@ -2155,32 +2182,32 @@ yyreduce:
     break;
 
   case 13:
-#line 213 "ael.y"
+#line 218 "ael.y"
     { (yyval.intval) = 1; ;}
     break;
 
   case 14:
-#line 214 "ael.y"
+#line 219 "ael.y"
     { (yyval.intval) = 0; ;}
     break;
 
   case 15:
-#line 215 "ael.y"
+#line 220 "ael.y"
     { (yyval.intval) = 2; ;}
     break;
 
   case 16:
-#line 216 "ael.y"
+#line 221 "ael.y"
     { (yyval.intval)=3; ;}
     break;
 
   case 17:
-#line 217 "ael.y"
+#line 222 "ael.y"
     { (yyval.intval)=3; ;}
     break;
 
   case 18:
-#line 220 "ael.y"
+#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);
@@ -2188,7 +2215,7 @@ yyreduce:
     break;
 
   case 19:
-#line 226 "ael.y"
+#line 231 "ael.y"
     {
                (yyval.pval) = npval2(PV_GLOBALS, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
                (yyval.pval)->u1.statements = (yyvsp[(3) - (4)].pval);
@@ -2196,27 +2223,27 @@ yyreduce:
     break;
 
   case 20:
-#line 232 "ael.y"
+#line 237 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 21:
-#line 233 "ael.y"
+#line 238 "ael.y"
     {(yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 22:
-#line 234 "ael.y"
+#line 239 "ael.y"
     {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
     break;
 
   case 23:
-#line 237 "ael.y"
+#line 242 "ael.y"
     { reset_semicount(parseio->scanner); ;}
     break;
 
   case 24:
-#line 237 "ael.y"
+#line 242 "ael.y"
     {
                (yyval.pval) = npval2(PV_VARDEC, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
                (yyval.pval)->u1.str = (yyvsp[(1) - (5)].str);
@@ -2224,12 +2251,12 @@ yyreduce:
     break;
 
   case 25:
-#line 243 "ael.y"
+#line 248 "ael.y"
     { reset_semicount(parseio->scanner); ;}
     break;
 
   case 26:
-#line 243 "ael.y"
+#line 248 "ael.y"
     {
                (yyval.pval) = npval2(PV_LOCALVARDEC, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (6)].str);
@@ -2237,94 +2264,94 @@ yyreduce:
     break;
 
   case 27:
-#line 250 "ael.y"
+#line 255 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 28:
-#line 251 "ael.y"
+#line 256 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
   case 29:
-#line 252 "ael.y"
+#line 257 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;}
     break;
 
   case 30:
-#line 253 "ael.y"
+#line 258 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
     break;
 
   case 31:
-#line 256 "ael.y"
+#line 261 "ael.y"
     {(yyval.pval)=0;;}
     break;
 
   case 32:
-#line 257 "ael.y"
+#line 262 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 33:
-#line 258 "ael.y"
+#line 263 "ael.y"
     { (yyval.pval)=(yyvsp[(2) - (2)].pval);;}
     break;
 
   case 34:
-#line 261 "ael.y"
+#line 266 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
   case 35:
-#line 262 "ael.y"
+#line 267 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
   case 36:
-#line 263 "ael.y"
+#line 268 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
   case 37:
-#line 264 "ael.y"
+#line 269 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
   case 38:
-#line 265 "ael.y"
+#line 270 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
   case 39:
-#line 266 "ael.y"
+#line 271 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
   case 40:
-#line 267 "ael.y"
+#line 272 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
   case 41:
-#line 268 "ael.y"
+#line 273 "ael.y"
     {free((yyvsp[(1) - (2)].str)); (yyval.pval)=0;;}
     break;
 
   case 42:
-#line 269 "ael.y"
+#line 274 "ael.y"
     {(yyval.pval)=0;/* allow older docs to be read */;}
     break;
 
   case 43:
-#line 272 "ael.y"
+#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 44:
-#line 277 "ael.y"
+#line 282 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.str = (yyvsp[(1) - (3)].str);
@@ -2332,7 +2359,7 @@ yyreduce:
     break;
 
   case 45:
-#line 281 "ael.y"
+#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);
@@ -2344,7 +2371,7 @@ yyreduce:
     break;
 
   case 46:
-#line 289 "ael.y"
+#line 294 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
@@ -2353,7 +2380,7 @@ yyreduce:
     break;
 
   case 47:
-#line 294 "ael.y"
+#line 299 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (7)]), &(yylsp[(7) - (7)]));
                (yyval.pval)->u1.str = (yyvsp[(5) - (7)].str);
@@ -2362,7 +2389,7 @@ yyreduce:
     break;
 
   case 48:
-#line 299 "ael.y"
+#line 304 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)]));
                (yyval.pval)->u1.str = (yyvsp[(6) - (8)].str);
@@ -2372,36 +2399,41 @@ yyreduce:
     break;
 
   case 49:
-#line 308 "ael.y"
+#line 313 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 50:
-#line 309 "ael.y"
+#line 314 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 51:
-#line 310 "ael.y"
+#line 315 "ael.y"
     {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
     break;
 
   case 52:
-#line 316 "ael.y"
+#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 53:
-#line 321 "ael.y"
+#line 331 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
     break;
 
   case 54:
-#line 325 "ael.y"
+#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)]));
@@ -2410,31 +2442,31 @@ yyreduce:
     break;
 
   case 55:
-#line 333 "ael.y"
+#line 343 "ael.y"
     { reset_parencount(parseio->scanner); ;}
     break;
 
   case 56:
-#line 333 "ael.y"
+#line 343 "ael.y"
     { (yyval.str) = (yyvsp[(3) - (4)].str); ;}
     break;
 
   case 57:
-#line 337 "ael.y"
+#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 58:
-#line 340 "ael.y"
+#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 59:
-#line 343 "ael.y"
+#line 353 "ael.y"
     {
                (yyval.pval) = npval2(PV_IFTIME, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
                (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);
@@ -2442,95 +2474,135 @@ yyreduce:
     break;
 
   case 60:
-#line 354 "ael.y"
+#line 364 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);;}
     break;
 
   case 61:
-#line 355 "ael.y"
+#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 62:
-#line 362 "ael.y"
+#line 377 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
     break;
 
   case 63:
-#line 363 "ael.y"
+#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 64:
-#line 367 "ael.y"
+#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 65:
-#line 371 "ael.y"
+#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 66:
-#line 377 "ael.y"
+#line 407 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);;}
     break;
 
   case 67:
-#line 378 "ael.y"
+#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 68:
-#line 383 "ael.y"
+#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 69:
-#line 391 "ael.y"
+#line 431 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);;}
     break;
 
   case 70:
-#line 392 "ael.y"
+#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 71:
-#line 396 "ael.y"
+#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 72:
-#line 402 "ael.y"
+#line 452 "ael.y"
     {
                (yyval.pval) = npval2(PV_SWITCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
@@ -2538,60 +2610,60 @@ yyreduce:
     break;
 
   case 73:
-#line 411 "ael.y"
+#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 74:
-#line 414 "ael.y"
+#line 464 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
     break;
 
   case 75:
-#line 415 "ael.y"
+#line 465 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
     break;
 
   case 76:
-#line 416 "ael.y"
+#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 77:
-#line 419 "ael.y"
+#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 78:
-#line 422 "ael.y"
+#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 79:
-#line 425 "ael.y"
+#line 475 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 80:
-#line 426 "ael.y"
+#line 476 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 81:
-#line 427 "ael.y"
+#line 477 "ael.y"
     {reset_parencount(parseio->scanner);;}
     break;
 
   case 82:
-#line 427 "ael.y"
+#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);
@@ -2601,7 +2673,7 @@ yyreduce:
     break;
 
   case 83:
-#line 433 "ael.y"
+#line 483 "ael.y"
     {
                (yyval.pval) = npval2(PV_WHILE, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (3)].str);
@@ -2609,34 +2681,34 @@ yyreduce:
     break;
 
   case 84:
-#line 437 "ael.y"
+#line 487 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
     break;
 
   case 85:
-#line 438 "ael.y"
+#line 488 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(2) - (3)].pval), &(yylsp[(2) - (3)])); ;}
     break;
 
   case 86:
-#line 439 "ael.y"
+#line 489 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
     break;
 
   case 87:
-#line 440 "ael.y"
+#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 88:
-#line 443 "ael.y"
+#line 493 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 89:
-#line 443 "ael.y"
+#line 493 "ael.y"
     {
                char *bufx;
                int tot=0;
@@ -2673,22 +2745,22 @@ yyreduce:
     break;
 
   case 90:
-#line 476 "ael.y"
+#line 526 "ael.y"
     { (yyval.pval) = npval2(PV_BREAK, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
   case 91:
-#line 477 "ael.y"
+#line 527 "ael.y"
     { (yyval.pval) = npval2(PV_RETURN, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
   case 92:
-#line 478 "ael.y"
+#line 528 "ael.y"
     { (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
   case 93:
-#line 479 "ael.y"
+#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));
@@ -2696,41 +2768,41 @@ yyreduce:
     break;
 
   case 94:
-#line 483 "ael.y"
+#line 533 "ael.y"
     { (yyval.pval)=0; ;}
     break;
 
   case 95:
-#line 486 "ael.y"
+#line 536 "ael.y"
     { (yyval.pval) = (yyvsp[(2) - (2)].pval); ;}
     break;
 
   case 96:
-#line 487 "ael.y"
+#line 537 "ael.y"
     { (yyval.pval) = NULL ; ;}
     break;
 
   case 97:
-#line 490 "ael.y"
+#line 540 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
   case 98:
-#line 491 "ael.y"
+#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 99:
-#line 494 "ael.y"
+#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 100:
-#line 497 "ael.y"
+#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)]));
@@ -2738,7 +2810,7 @@ yyreduce:
     break;
 
   case 101:
-#line 501 "ael.y"
+#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)]));
@@ -2746,7 +2818,7 @@ yyreduce:
     break;
 
   case 102:
-#line 505 "ael.y"
+#line 555 "ael.y"
     {
                (yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
@@ -2754,7 +2826,7 @@ yyreduce:
     break;
 
   case 103:
-#line 509 "ael.y"
+#line 559 "ael.y"
     {
                (yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
@@ -2762,24 +2834,24 @@ yyreduce:
     break;
 
   case 104:
-#line 515 "ael.y"
+#line 565 "ael.y"
     { (yyval.str) = strdup("1"); ;}
     break;
 
   case 105:
-#line 516 "ael.y"
+#line 566 "ael.y"
     { (yyval.str) = (yyvsp[(2) - (2)].str); ;}
     break;
 
   case 106:
-#line 520 "ael.y"
+#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 107:
-#line 523 "ael.y"
+#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)]));
@@ -2787,12 +2859,12 @@ yyreduce:
     break;
 
   case 108:
-#line 529 "ael.y"
+#line 579 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
   case 109:
-#line 529 "ael.y"
+#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)]));
@@ -2801,19 +2873,19 @@ yyreduce:
     break;
 
   case 110:
-#line 534 "ael.y"
+#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 111:
-#line 542 "ael.y"
+#line 592 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
   case 112:
-#line 542 "ael.y"
+#line 592 "ael.y"
     {
                if (strcasecmp((yyvsp[(1) - (3)].str),"goto") == 0) {
                        (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(2) - (3)]));
@@ -2826,7 +2898,7 @@ yyreduce:
     break;
 
   case 113:
-#line 553 "ael.y"
+#line 603 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(3) - (3)]));
                if( (yyval.pval)->type == PV_GOTO )
@@ -2837,49 +2909,49 @@ yyreduce:
     break;
 
   case 114:
-#line 560 "ael.y"
+#line 610 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
     break;
 
   case 115:
-#line 563 "ael.y"
+#line 613 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str) ;}
     break;
 
   case 116:
-#line 564 "ael.y"
+#line 614 "ael.y"
     { (yyval.str) = strdup(""); ;}
     break;
 
   case 117:
-#line 567 "ael.y"
+#line 617 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
   case 118:
-#line 568 "ael.y"
+#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 119:
-#line 571 "ael.y"
+#line 621 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;}
     break;
 
   case 120:
-#line 574 "ael.y"
+#line 624 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 121:
-#line 575 "ael.y"
+#line 625 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 122:
-#line 578 "ael.y"
+#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);
@@ -2887,7 +2959,7 @@ yyreduce:
     break;
 
   case 123:
-#line 582 "ael.y"
+#line 632 "ael.y"
     {
                (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.str = NULL;
@@ -2895,7 +2967,7 @@ yyreduce:
     break;
 
   case 124:
-#line 586 "ael.y"
+#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);
@@ -2903,27 +2975,27 @@ yyreduce:
     break;
 
   case 125:
-#line 592 "ael.y"
+#line 642 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 126:
-#line 593 "ael.y"
+#line 643 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 127:
-#line 596 "ael.y"
+#line 646 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
   case 128:
-#line 597 "ael.y"
+#line 647 "ael.y"
     { (yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
   case 129:
-#line 598 "ael.y"
+#line 648 "ael.y"
     {
                (yyval.pval) = npval2(PV_CATCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
@@ -2931,47 +3003,56 @@ yyreduce:
     break;
 
   case 130:
-#line 604 "ael.y"
+#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 131:
-#line 609 "ael.y"
+#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 132:
-#line 614 "ael.y"
+#line 664 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 133:
-#line 615 "ael.y"
-    { (yyval.pval) = linku1(nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)])), (yyvsp[(3) - (3)].pval)); ;}
+#line 665 "ael.y"
+    { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval),nword((yyvsp[(2) - (3)].str), &(yylsp[(2) - (3)]))); ;}
     break;
 
   case 134:
-#line 616 "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));;}
+#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 135:
-#line 618 "ael.y"
+#line 677 "ael.y"
     {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
     break;
 
   case 136:
-#line 621 "ael.y"
+#line 680 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
   case 137:
-#line 622 "ael.y"
+#line 681 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
                (yyval.pval)->u2.arglist = (yyvsp[(3) - (3)].pval);
@@ -2979,36 +3060,36 @@ yyreduce:
     break;
 
   case 138:
-#line 629 "ael.y"
+#line 688 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (2)].pval); ;}
     break;
 
   case 139:
-#line 630 "ael.y"
+#line 689 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), (yyvsp[(2) - (3)].pval)); ;}
     break;
 
   case 140:
-#line 631 "ael.y"
+#line 690 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
     break;
 
   case 141:
-#line 634 "ael.y"
+#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 142:
-#line 637 "ael.y"
+#line 696 "ael.y"
     {
                (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));;}
     break;
 
 
-/* Line 1270 of yacc.c.  */
-#line 3012 "ael.tab.c"
+/* Line 1267 of yacc.c.  */
+#line 3093 "ael.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3223,11 +3304,12 @@ yyreturn:
   if (yymsg != yymsgbuf)
     YYSTACK_FREE (yymsg);
 #endif
-  return yyresult;
+  /* Make sure YYID is used.  */
+  return YYID (yyresult);
 }
 
 
-#line 642 "ael.y"
+#line 701 "ael.y"
 
 
 static char *token_equivs1[] =