From 0e8e343e1f281cf3008effb9b088e1943de3a882 Mon Sep 17 00:00:00 2001
From: Luigi Rizzo <rizzo@icir.org>
Date: Tue, 2 May 2006 20:11:24 +0000
Subject: [PATCH] global_statement is really an assignment statement

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@24339 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 pbx/ael/ael.tab.c | 1115 ++++++++++++++++++++++-----------------------
 pbx/ael/ael.y     |   27 +-
 2 files changed, 563 insertions(+), 579 deletions(-)

diff --git a/pbx/ael/ael.tab.c b/pbx/ael/ael.tab.c
index 5e478f7466..99080e6ec7 100644
--- a/pbx/ael/ael.tab.c
+++ b/pbx/ael/ael.tab.c
@@ -420,16 +420,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state. */
 #define YYFINAL  14
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   390
+#define YYLAST   374
 
 /* YYNTOKENS -- Number of terminals. */
 #define YYNTOKENS  42
 /* YYNNTS -- Number of nonterminals. */
-#define YYNNTS  56
+#define YYNNTS  55
 /* YYNRULES -- Number of rules. */
-#define YYNRULES  143
+#define YYNRULES  142
 /* YYNRULES -- Number of states. */
-#define YYNSTATES  274
+#define YYNSTATES  271
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -481,18 +481,18 @@ static const unsigned short int yyprhs[] =
        0,     0,     3,     5,     7,    10,    13,    15,    17,    19,
       21,    23,    25,    30,    32,    33,    42,    47,    51,    53,
       56,    59,    60,    66,    67,    69,    73,    76,    79,    83,
-      85,    87,    90,    93,    95,    97,    99,   101,   103,   104,
-     110,   113,   115,   120,   124,   129,   137,   146,   148,   151,
-     154,   160,   162,   170,   171,   176,   179,   182,   187,   189,
-     192,   194,   197,   201,   203,   206,   210,   214,   218,   219,
-     225,   229,   233,   236,   237,   238,   239,   252,   256,   259,
-     263,   267,   270,   273,   274,   280,   283,   286,   289,   293,
-     295,   298,   299,   301,   305,   309,   315,   321,   327,   333,
-     335,   339,   345,   349,   355,   359,   360,   366,   370,   371,
-     375,   379,   382,   384,   385,   387,   388,   392,   394,   397,
-     402,   406,   411,   415,   418,   422,   423,   425,   428,   430,
-     436,   439,   442,   446,   449,   452,   456,   459,   462,   467,
-     469,   472,   475,   480
+      85,    87,    90,    93,    95,    97,    99,   101,   103,   105,
+     108,   110,   115,   119,   124,   132,   141,   143,   146,   149,
+     155,   157,   165,   166,   171,   174,   177,   182,   184,   187,
+     189,   192,   196,   198,   201,   205,   209,   213,   214,   220,
+     224,   228,   231,   232,   233,   234,   247,   251,   254,   258,
+     262,   265,   268,   269,   275,   278,   281,   284,   288,   290,
+     293,   294,   296,   300,   304,   310,   316,   322,   328,   330,
+     334,   340,   344,   350,   354,   355,   361,   365,   366,   370,
+     374,   377,   379,   380,   382,   383,   387,   389,   392,   397,
+     401,   406,   410,   413,   417,   418,   420,   423,   425,   431,
+     434,   437,   441,   444,   447,   451,   454,   457,   462,   464,
+     467,   470,   475
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
@@ -501,52 +501,51 @@ static const yysigned_char yyrhs[] =
       43,     0,    -1,    44,    -1,    45,    -1,    44,    45,    -1,
       44,     1,    -1,    47,    -1,    49,    -1,    50,    -1,     8,
       -1,    41,    -1,    36,    -1,    48,     3,    46,    55,    -1,
-      23,    -1,    -1,    15,    41,     6,    54,     7,     4,    89,
+      23,    -1,    -1,    15,    41,     6,    54,     7,     4,    88,
        5,    -1,    16,     4,    51,     5,    -1,    16,     4,     5,
       -1,    52,    -1,    51,    52,    -1,    51,     1,    -1,    -1,
       41,     9,    53,    41,     8,    -1,    -1,    41,    -1,    54,
       10,    41,    -1,    54,     1,    -1,     4,     5,    -1,     4,
       56,     5,    -1,    57,    -1,     1,    -1,    56,    57,    -1,
-      56,     1,    -1,    60,    -1,    97,    -1,    91,    -1,    92,
-      -1,    59,    -1,    -1,    41,     9,    58,    41,     8,    -1,
-      41,     1,    -1,     8,    -1,    17,    24,    41,     8,    -1,
-      41,    24,    71,    -1,    30,    41,    24,    71,    -1,    31,
-       6,    68,     7,    41,    24,    71,    -1,    30,    31,     6,
-      68,     7,    41,    24,    71,    -1,    71,    -1,    61,    71,
-      -1,    61,     1,    -1,    68,    11,    68,    11,    68,    -1,
-      41,    -1,    62,    13,    68,    13,    68,    13,    68,    -1,
-      -1,     6,    65,    67,     7,    -1,    19,    64,    -1,    22,
-      64,    -1,    20,     6,    63,     7,    -1,    41,    -1,    41,
-      41,    -1,    41,    -1,    41,    41,    -1,    41,    41,    41,
-      -1,    41,    -1,    41,    41,    -1,    41,    11,    41,    -1,
-      18,    64,     4,    -1,     4,    61,     5,    -1,    -1,    41,
-       9,    72,    41,     8,    -1,    25,    78,     8,    -1,    26,
-      79,     8,    -1,    41,    11,    -1,    -1,    -1,    -1,    32,
-       6,    73,    41,     8,    74,    41,     8,    75,    41,     7,
-      71,    -1,    33,    64,    71,    -1,    70,     5,    -1,    70,
-      87,     5,    -1,    12,    80,     8,    -1,    84,     8,    -1,
-      41,     8,    -1,    -1,    84,     9,    76,    41,     8,    -1,
-      28,     8,    -1,    27,     8,    -1,    29,     8,    -1,    66,
-      71,    77,    -1,     8,    -1,    21,    71,    -1,    -1,    69,
-      -1,    69,    13,    69,    -1,    69,    10,    69,    -1,    69,
-      13,    69,    13,    69,    -1,    69,    10,    69,    10,    69,
-      -1,    36,    13,    69,    13,    69,    -1,    36,    10,    69,
-      10,    69,    -1,    69,    -1,    69,    10,    69,    -1,    69,
-      10,    41,    14,    41,    -1,    69,    14,    69,    -1,    69,
-      10,    41,    14,    36,    -1,    69,    14,    36,    -1,    -1,
-      41,     6,    81,    86,     7,    -1,    41,     6,     7,    -1,
-      -1,    41,     6,    83,    -1,    82,    86,     7,    -1,    82,
-       7,    -1,    41,    -1,    -1,    67,    -1,    -1,    86,    10,
-      85,    -1,    88,    -1,    87,    88,    -1,    34,    41,    11,
-      61,    -1,    36,    11,    61,    -1,    35,    41,    11,    61,
-      -1,    34,    41,    11,    -1,    36,    11,    -1,    35,    41,
-      11,    -1,    -1,    90,    -1,    89,    90,    -1,    71,    -1,
-      37,    41,     4,    61,     5,    -1,    38,    93,    -1,    39,
-      93,    -1,     4,    94,     5,    -1,     4,     5,    -1,    41,
-       8,    -1,    94,    41,     8,    -1,    94,     1,    -1,    46,
-       8,    -1,    46,    13,    63,     8,    -1,    95,    -1,    96,
-      95,    -1,    96,     1,    -1,    40,     4,    96,     5,    -1,
-      40,     4,     5,    -1
+      56,     1,    -1,    59,    -1,    96,    -1,    90,    -1,    91,
+      -1,    58,    -1,    52,    -1,    41,     1,    -1,     8,    -1,
+      17,    24,    41,     8,    -1,    41,    24,    70,    -1,    30,
+      41,    24,    70,    -1,    31,     6,    67,     7,    41,    24,
+      70,    -1,    30,    31,     6,    67,     7,    41,    24,    70,
+      -1,    70,    -1,    60,    70,    -1,    60,     1,    -1,    67,
+      11,    67,    11,    67,    -1,    41,    -1,    61,    13,    67,
+      13,    67,    13,    67,    -1,    -1,     6,    64,    66,     7,
+      -1,    19,    63,    -1,    22,    63,    -1,    20,     6,    62,
+       7,    -1,    41,    -1,    41,    41,    -1,    41,    -1,    41,
+      41,    -1,    41,    41,    41,    -1,    41,    -1,    41,    41,
+      -1,    41,    11,    41,    -1,    18,    63,     4,    -1,     4,
+      60,     5,    -1,    -1,    41,     9,    71,    41,     8,    -1,
+      25,    77,     8,    -1,    26,    78,     8,    -1,    41,    11,
+      -1,    -1,    -1,    -1,    32,     6,    72,    41,     8,    73,
+      41,     8,    74,    41,     7,    70,    -1,    33,    63,    70,
+      -1,    69,     5,    -1,    69,    86,     5,    -1,    12,    79,
+       8,    -1,    83,     8,    -1,    41,     8,    -1,    -1,    83,
+       9,    75,    41,     8,    -1,    28,     8,    -1,    27,     8,
+      -1,    29,     8,    -1,    65,    70,    76,    -1,     8,    -1,
+      21,    70,    -1,    -1,    68,    -1,    68,    13,    68,    -1,
+      68,    10,    68,    -1,    68,    13,    68,    13,    68,    -1,
+      68,    10,    68,    10,    68,    -1,    36,    13,    68,    13,
+      68,    -1,    36,    10,    68,    10,    68,    -1,    68,    -1,
+      68,    10,    68,    -1,    68,    10,    41,    14,    41,    -1,
+      68,    14,    68,    -1,    68,    10,    41,    14,    36,    -1,
+      68,    14,    36,    -1,    -1,    41,     6,    80,    85,     7,
+      -1,    41,     6,     7,    -1,    -1,    41,     6,    82,    -1,
+      81,    85,     7,    -1,    81,     7,    -1,    41,    -1,    -1,
+      66,    -1,    -1,    85,    10,    84,    -1,    87,    -1,    86,
+      87,    -1,    34,    41,    11,    60,    -1,    36,    11,    60,
+      -1,    35,    41,    11,    60,    -1,    34,    41,    11,    -1,
+      36,    11,    -1,    35,    41,    11,    -1,    -1,    89,    -1,
+      88,    89,    -1,    70,    -1,    37,    41,     4,    60,     5,
+      -1,    38,    92,    -1,    39,    92,    -1,     4,    93,     5,
+      -1,     4,     5,    -1,    41,     8,    -1,    93,    41,     8,
+      -1,    93,     1,    -1,    46,     8,    -1,    46,    13,    62,
+       8,    -1,    94,    -1,    95,    94,    -1,    95,     1,    -1,
+      40,     4,    95,     5,    -1,    40,     4,     5,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -555,18 +554,18 @@ static const unsigned short int yyrline[] =
        0,   180,   180,   183,   184,   185,   188,   189,   190,   191,
      194,   195,   198,   206,   207,   210,   215,   218,   222,   223,
      224,   227,   227,   233,   234,   235,   236,   239,   240,   243,
-     244,   245,   246,   249,   250,   251,   252,   253,   254,   254,
-     258,   259,   262,   267,   271,   276,   281,   290,   291,   292,
-     298,   303,   307,   315,   315,   320,   323,   326,   337,   338,
-     345,   346,   351,   359,   360,   364,   370,   378,   381,   381,
-     385,   388,   391,   394,   395,   396,   394,   402,   406,   408,
-     411,   413,   415,   418,   418,   451,   452,   453,   454,   458,
-     461,   462,   467,   468,   471,   474,   478,   482,   486,   493,
-     496,   499,   503,   507,   511,   517,   517,   522,   530,   530,
-     541,   548,   551,   552,   555,   556,   559,   562,   563,   566,
-     570,   574,   578,   581,   584,   589,   590,   591,   594,   595,
-     601,   606,   611,   612,   615,   616,   617,   620,   621,   628,
-     629,   630,   633,   636
+     244,   245,   246,   249,   250,   251,   252,   253,   254,   255,
+     256,   259,   264,   268,   273,   278,   287,   288,   289,   295,
+     300,   304,   312,   312,   317,   320,   323,   334,   335,   342,
+     343,   348,   356,   357,   361,   367,   375,   378,   378,   382,
+     385,   388,   391,   392,   393,   391,   399,   403,   405,   408,
+     410,   412,   415,   415,   448,   449,   450,   451,   455,   458,
+     459,   464,   465,   468,   471,   475,   479,   483,   490,   493,
+     496,   500,   504,   508,   514,   514,   519,   527,   527,   538,
+     545,   548,   549,   552,   553,   556,   559,   560,   563,   567,
+     571,   575,   578,   581,   586,   587,   588,   591,   592,   598,
+     603,   608,   609,   612,   613,   614,   617,   618,   625,   626,
+     627,   630,   633
 };
 #endif
 
@@ -583,12 +582,12 @@ static const char *const yytname[] =
   "KW_FOR", "KW_WHILE", "KW_CASE", "KW_PATTERN", "KW_DEFAULT", "KW_CATCH",
   "KW_SWITCHES", "KW_ESWITCHES", "KW_INCLUDES", "word", "$accept", "file",
   "objects", "object", "context_name", "context", "opt_abstract", "macro",
-  "globals", "global_statements", "global_statement", "@1", "arglist",
-  "elements_block", "elements", "element", "@2", "ignorepat", "extension",
-  "statements", "timerange", "timespec", "test_expr", "@3", "if_like_head",
-  "word_list", "word3_list", "goto_word", "switch_head", "statement", "@4",
-  "@5", "@6", "@7", "@8", "opt_else", "target", "jumptarget", "macro_call",
-  "@9", "application_call_head", "@10", "application_call", "opt_word",
+  "globals", "global_statements", "assignment", "@1", "arglist",
+  "elements_block", "elements", "element", "ignorepat", "extension",
+  "statements", "timerange", "timespec", "test_expr", "@2", "if_like_head",
+  "word_list", "word3_list", "goto_word", "switch_head", "statement", "@3",
+  "@4", "@5", "@6", "@7", "opt_else", "target", "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_block",
   "switchlist", "included_entry", "includeslist", "includes", 0
@@ -614,18 +613,18 @@ static const unsigned char yyr1[] =
        0,    42,    43,    44,    44,    44,    45,    45,    45,    45,
       46,    46,    47,    48,    48,    49,    50,    50,    51,    51,
       51,    53,    52,    54,    54,    54,    54,    55,    55,    56,
-      56,    56,    56,    57,    57,    57,    57,    57,    58,    57,
-      57,    57,    59,    60,    60,    60,    60,    61,    61,    61,
-      62,    62,    63,    65,    64,    66,    66,    66,    67,    67,
-      68,    68,    68,    69,    69,    69,    70,    71,    72,    71,
-      71,    71,    71,    73,    74,    75,    71,    71,    71,    71,
-      71,    71,    71,    76,    71,    71,    71,    71,    71,    71,
-      77,    77,    78,    78,    78,    78,    78,    78,    78,    79,
-      79,    79,    79,    79,    79,    81,    80,    80,    83,    82,
-      84,    84,    85,    85,    86,    86,    86,    87,    87,    88,
-      88,    88,    88,    88,    88,    89,    89,    89,    90,    90,
-      91,    92,    93,    93,    94,    94,    94,    95,    95,    96,
-      96,    96,    97,    97
+      56,    56,    56,    57,    57,    57,    57,    57,    57,    57,
+      57,    58,    59,    59,    59,    59,    60,    60,    60,    61,
+      61,    62,    64,    63,    65,    65,    65,    66,    66,    67,
+      67,    67,    68,    68,    68,    69,    70,    71,    70,    70,
+      70,    70,    72,    73,    74,    70,    70,    70,    70,    70,
+      70,    70,    75,    70,    70,    70,    70,    70,    70,    76,
+      76,    77,    77,    77,    77,    77,    77,    77,    78,    78,
+      78,    78,    78,    78,    80,    79,    79,    82,    81,    83,
+      83,    84,    84,    85,    85,    85,    86,    86,    87,    87,
+      87,    87,    87,    87,    88,    88,    88,    89,    89,    90,
+      91,    92,    92,    93,    93,    93,    94,    94,    95,    95,
+      95,    96,    96
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -634,18 +633,18 @@ static const unsigned char yyr2[] =
        0,     2,     1,     1,     2,     2,     1,     1,     1,     1,
        1,     1,     4,     1,     0,     8,     4,     3,     1,     2,
        2,     0,     5,     0,     1,     3,     2,     2,     3,     1,
-       1,     2,     2,     1,     1,     1,     1,     1,     0,     5,
-       2,     1,     4,     3,     4,     7,     8,     1,     2,     2,
-       5,     1,     7,     0,     4,     2,     2,     4,     1,     2,
-       1,     2,     3,     1,     2,     3,     3,     3,     0,     5,
-       3,     3,     2,     0,     0,     0,    12,     3,     2,     3,
-       3,     2,     2,     0,     5,     2,     2,     2,     3,     1,
-       2,     0,     1,     3,     3,     5,     5,     5,     5,     1,
-       3,     5,     3,     5,     3,     0,     5,     3,     0,     3,
-       3,     2,     1,     0,     1,     0,     3,     1,     2,     4,
-       3,     4,     3,     2,     3,     0,     1,     2,     1,     5,
-       2,     2,     3,     2,     2,     3,     2,     2,     4,     1,
-       2,     2,     4,     3
+       1,     2,     2,     1,     1,     1,     1,     1,     1,     2,
+       1,     4,     3,     4,     7,     8,     1,     2,     2,     5,
+       1,     7,     0,     4,     2,     2,     4,     1,     2,     1,
+       2,     3,     1,     2,     3,     3,     3,     0,     5,     3,
+       3,     2,     0,     0,     0,    12,     3,     2,     3,     3,
+       2,     2,     0,     5,     2,     2,     2,     3,     1,     2,
+       0,     1,     3,     3,     5,     5,     5,     5,     1,     3,
+       5,     3,     5,     3,     0,     5,     3,     0,     3,     3,
+       2,     1,     0,     1,     0,     3,     1,     2,     4,     3,
+       4,     3,     2,     3,     0,     1,     2,     1,     5,     2,
+       2,     3,     2,     2,     3,     2,     2,     4,     1,     2,
+       2,     4,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -657,180 +656,176 @@ static const unsigned char yydefact[] =
        7,     8,     0,     0,     1,     5,     4,     0,    23,    17,
        0,     0,    18,    11,    10,     0,    24,     0,    21,    20,
       16,    19,     0,    12,    26,     0,     0,     0,    30,    27,
-      41,     0,     0,     0,     0,     0,     0,     0,     0,    29,
-      37,    33,    35,    36,    34,   125,    25,     0,     0,     0,
-       0,     0,     0,   130,   131,     0,    40,    38,     0,    32,
-      28,    31,     0,    89,     0,     0,     0,     0,     0,     0,
+      40,     0,     0,     0,     0,     0,     0,     0,    38,     0,
+      29,    37,    33,    35,    36,    34,   124,    25,     0,     0,
+       0,     0,     0,     0,   129,   130,     0,    39,     0,    32,
+      28,    31,     0,    88,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     128,   115,     0,     0,   126,    22,     0,     0,     0,    60,
-       0,   133,     0,     0,   143,     0,   139,     0,     0,    43,
-       0,    47,     0,     0,    53,     0,    55,     0,    56,     0,
-      63,    92,     0,    99,     0,    86,    85,    87,    73,     0,
-       0,   108,    82,    68,    72,    91,    78,     0,     0,     0,
-       0,   117,   111,    58,   114,     0,    81,    83,    15,   127,
-      42,     0,    44,    61,     0,   134,   136,   132,     0,   137,
-       0,   141,   142,   140,     0,    49,    67,    48,   105,    80,
-       0,    66,    51,     0,     0,     0,     0,     0,     0,    64,
-       0,     0,    70,     0,     0,    71,     0,    77,     0,   109,
-       0,     0,    88,     0,     0,   123,    79,   118,    59,   110,
-     113,     0,     0,    62,     0,   135,     0,    39,   107,   115,
-       0,     0,    57,     0,     0,     0,    65,    94,    93,    63,
-     100,   104,   102,     0,     0,     0,    90,   122,   124,     0,
-     112,   116,     0,     0,     0,   138,     0,    54,     0,     0,
-       0,     0,     0,     0,     0,    74,   129,    69,     0,     0,
-      84,     0,    45,   106,     0,     0,    98,    97,    96,    95,
-     103,   101,     0,    46,     0,    50,     0,     0,    75,    52,
-       0,     0,     0,    76
+     127,   114,     0,     0,   125,    22,     0,     0,     0,    59,
+       0,   132,     0,     0,   142,     0,   138,     0,    42,     0,
+      46,     0,     0,    52,     0,    54,     0,    55,     0,    62,
+      91,     0,    98,     0,    85,    84,    86,    72,     0,     0,
+     107,    81,    67,    71,    90,    77,     0,     0,     0,     0,
+     116,   110,    57,   113,     0,    80,    82,    15,   126,    41,
+       0,    43,    60,     0,   133,   135,   131,     0,   136,     0,
+     140,   141,   139,    48,    66,    47,   104,    79,     0,    65,
+      50,     0,     0,     0,     0,     0,     0,    63,     0,     0,
+      69,     0,     0,    70,     0,    76,     0,   108,     0,     0,
+      87,     0,     0,   122,    78,   117,    58,   109,   112,     0,
+       0,    61,     0,   134,     0,   106,   114,     0,     0,    56,
+       0,     0,     0,    64,    93,    92,    62,    99,   103,   101,
+       0,     0,     0,    89,   121,   123,     0,   111,   115,     0,
+       0,     0,   137,     0,    53,     0,     0,     0,     0,     0,
+       0,     0,    73,   128,    68,     0,     0,    83,     0,    44,
+     105,     0,     0,    97,    96,    95,    94,   102,   100,     0,
+      45,     0,    49,     0,     0,    74,    51,     0,     0,     0,
+      75
 };
 
 /* YYDEFGOTO[NTERM-NUM]. */
 static const short int yydefgoto[] =
 {
       -1,     5,     6,     7,   105,     8,     9,    10,    11,    21,
-      22,    37,    27,    33,    48,    49,   108,    50,    51,   110,
-     173,   174,   115,   170,    88,   144,   175,   121,    89,   111,
-     190,   186,   262,   270,   201,   192,   122,   124,   113,   209,
-      91,   189,    92,   231,   145,   140,   141,    93,    94,    52,
-      53,    63,   103,   106,   107,    54
+      48,    37,    27,    33,    49,    50,    51,    52,   109,   171,
+     172,   114,   168,    88,   143,   173,   120,    89,   110,   188,
+     184,   259,   267,   199,   190,   121,   123,   112,   206,    91,
+     187,    92,   228,   144,   139,   140,    93,    94,    53,    54,
+      64,   103,   106,   107,    55
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -142
+#define YYPACT_NINF -102
 static const short int yypact[] =
 {
-     111,  -142,   -36,    28,  -142,     7,   367,  -142,  -142,    27,
-    -142,  -142,    10,     3,  -142,  -142,  -142,   -12,    -7,  -142,
-      48,    26,  -142,  -142,  -142,    64,  -142,    13,  -142,  -142,
-    -142,  -142,    20,  -142,  -142,    86,    58,    62,  -142,  -142,
-    -142,    94,   -22,   125,   129,   129,   133,     2,   127,  -142,
-    -142,  -142,  -142,  -142,  -142,   307,  -142,   145,   118,   165,
-     148,   143,    12,  -142,  -142,    89,  -142,  -142,   333,  -142,
-    -142,  -142,   333,  -142,   144,   180,   180,   181,   180,    47,
-     149,   192,   193,   194,   183,   180,   162,   139,   333,   104,
-    -142,    -5,   174,   281,  -142,  -142,   196,   143,   333,   170,
-     201,  -142,   210,    34,  -142,   138,  -142,     5,   184,  -142,
-     225,  -142,   218,   219,  -142,   227,  -142,   191,  -142,   163,
-      54,   167,   226,     8,   228,  -142,  -142,  -142,  -142,   333,
-     231,  -142,  -142,  -142,  -142,   217,  -142,   198,   199,   230,
-     107,  -142,  -142,   205,  -142,   142,  -142,  -142,  -142,  -142,
-    -142,   235,  -142,   207,   208,  -142,  -142,  -142,   247,  -142,
-     191,  -142,  -142,  -142,   253,  -142,  -142,  -142,   257,  -142,
-     221,  -142,    70,   252,   261,   258,   149,   149,   229,  -142,
-     149,   149,  -142,   237,   119,  -142,   238,  -142,   333,  -142,
-     249,   333,  -142,   260,   265,   333,  -142,  -142,  -142,  -142,
-     250,   251,   254,  -142,   248,  -142,   286,  -142,  -142,   221,
-     290,   143,  -142,   143,   288,   289,  -142,   294,   292,     1,
-    -142,  -142,  -142,   304,   255,   308,  -142,   333,   333,    44,
-    -142,  -142,   309,   296,   333,  -142,   171,  -142,   310,   313,
-     149,   149,   149,   149,   134,  -142,  -142,  -142,    88,   187,
-    -142,   333,  -142,  -142,   143,   143,  -142,  -142,  -142,  -142,
-    -142,  -142,   280,  -142,   315,  -142,   322,   143,  -142,  -142,
-     297,   324,   333,  -142
+       5,  -102,   -38,     6,  -102,    34,   141,  -102,  -102,    14,
+    -102,  -102,    12,     3,  -102,  -102,  -102,    93,    32,  -102,
+      46,    10,  -102,  -102,  -102,    78,  -102,    79,  -102,  -102,
+    -102,  -102,    18,  -102,  -102,    84,    56,    69,  -102,  -102,
+    -102,    92,   -17,   139,   143,   143,   159,   116,  -102,   138,
+    -102,  -102,  -102,  -102,  -102,  -102,   303,  -102,   166,   157,
+     198,   196,   173,    11,  -102,  -102,    -3,  -102,   329,  -102,
+    -102,  -102,   329,  -102,   180,   201,   201,   217,   201,   112,
+     187,   219,   222,   223,   226,   201,   193,   174,   329,    96,
+    -102,     0,   164,   277,  -102,  -102,   227,   173,   329,   195,
+     230,  -102,   234,    24,  -102,   154,  -102,     4,  -102,   221,
+    -102,   232,   236,  -102,   241,  -102,   210,  -102,    71,    -5,
+     186,   249,    17,   250,  -102,  -102,  -102,  -102,   329,   256,
+    -102,  -102,  -102,  -102,   240,  -102,   224,   225,   253,   102,
+    -102,  -102,   231,  -102,   144,  -102,  -102,  -102,  -102,  -102,
+     260,  -102,   233,   245,  -102,  -102,  -102,   267,  -102,   210,
+    -102,  -102,  -102,  -102,  -102,  -102,   261,  -102,   246,  -102,
+      68,   275,   283,   280,   187,   187,   252,  -102,   187,   187,
+    -102,   257,   130,  -102,   259,  -102,   329,  -102,   271,   329,
+    -102,   290,   297,   329,  -102,  -102,  -102,  -102,   272,   276,
+     278,  -102,   270,  -102,   308,  -102,   246,   313,   173,  -102,
+     173,   314,   321,  -102,   316,   325,    52,  -102,  -102,  -102,
+     319,   251,   331,  -102,   329,   329,    42,  -102,  -102,   334,
+     322,   329,  -102,   190,  -102,   330,   339,   187,   187,   187,
+     187,   145,  -102,  -102,  -102,    86,   183,  -102,   329,  -102,
+    -102,   173,   173,  -102,  -102,  -102,  -102,  -102,  -102,   304,
+    -102,   340,  -102,   344,   173,  -102,  -102,   318,   353,   329,
+    -102
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const short int yypgoto[] =
 {
-    -142,  -142,  -142,   336,   326,  -142,  -142,  -142,  -142,  -142,
-     325,  -142,  -142,  -142,  -142,   299,  -142,  -142,  -142,  -141,
-    -142,   189,     6,  -142,  -142,   186,   -57,   -79,  -142,   -55,
-    -142,  -142,  -142,  -142,  -142,  -142,  -142,  -142,  -142,  -142,
-    -142,  -142,  -142,  -142,   141,  -142,   214,  -142,   264,  -142,
-    -142,   318,  -142,   262,  -142,  -142
+    -102,  -102,  -102,   357,   347,  -102,  -102,  -102,  -102,  -102,
+       9,  -102,  -102,  -102,  -102,   317,  -102,  -102,  -101,  -102,
+     206,    50,  -102,  -102,   199,   -58,   -79,  -102,   -56,  -102,
+    -102,  -102,  -102,  -102,  -102,  -102,  -102,  -102,  -102,  -102,
+    -102,  -102,  -102,   162,  -102,   235,  -102,   279,  -102,  -102,
+     324,  -102,   264,  -102,  -102
 };
 
 /* 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 -122
+#define YYTABLE_NINF -121
 static const short int yytable[] =
 {
-      90,   123,   142,    66,   100,    12,   161,    14,    19,    59,
-     162,    67,   178,   109,    34,   244,    18,   101,   183,    60,
-      35,    38,   184,    36,    23,    39,    68,    29,    40,    24,
-      17,    30,    13,   135,    26,   156,   143,    41,    90,   157,
-     151,    23,   179,   152,    20,   165,    24,   224,    72,  -120,
-      42,    43,    73,   102,   229,   167,    74,    28,    44,    45,
-      46,    47,    75,    76,    77,   178,    78,    20,    32,    79,
-      80,    81,    82,    83,   187,   158,    84,    85,  -120,  -120,
-    -120,   -60,   116,   119,   118,    87,   248,   249,   120,   165,
-      55,   129,    72,  -119,   104,   179,    73,   214,   215,    56,
-      74,   217,   218,    57,   220,   222,    75,    76,    77,   136,
-      78,   153,   196,    79,    80,    81,    82,    83,    58,     1,
-      84,    85,  -119,  -119,  -119,    23,     2,     3,    69,    87,
-      24,    61,    70,    62,     4,    40,   226,    65,   137,   138,
-     139,   137,   138,   139,    41,   131,   159,   132,   133,   199,
-     134,   160,   200,    95,   238,   221,   239,    42,    43,    96,
-     120,   256,   257,   258,   259,    44,    45,    46,    47,   167,
-     260,    97,    98,   176,   167,   261,   177,   180,   253,   252,
-     181,   200,   146,   147,    99,   112,   114,   117,   165,   128,
-     120,    72,  -121,   167,   167,    73,   263,   264,   265,    74,
-     125,   126,   127,   130,   150,    75,    76,    77,   154,    78,
-     269,   153,    79,    80,    81,    82,    83,   273,   155,    84,
-      85,  -121,  -121,  -121,   168,   164,   165,   169,    87,    72,
-     166,   171,   172,    73,   182,   188,   185,    74,   191,   193,
-     194,   195,   202,    75,    76,    77,   198,    78,   203,   204,
-      79,    80,    81,    82,    83,   205,   165,    84,    85,    72,
-     246,   207,   143,    73,   208,   211,    87,    74,   212,   213,
-     216,   227,   234,    75,    76,    77,   228,    78,   219,   223,
-      79,    80,    81,    82,    83,    72,   148,    84,    85,    73,
-     225,   230,   232,    74,   235,   233,    87,   237,   240,    75,
-      76,    77,   241,    78,   242,   243,    79,    80,    81,    82,
-      83,    72,   245,    84,    85,    73,   247,   250,    86,    74,
-     251,   266,    87,   254,   255,    75,    76,    77,   267,    78,
-     268,   272,    79,    80,    81,    82,    83,    72,   271,    84,
-      85,    73,    16,    25,    86,    74,    31,    71,    87,   206,
-     236,    75,    76,    77,   197,    78,   210,   149,    79,    80,
-      81,    82,    83,    64,     0,    84,    85,    -2,    15,   163,
-     -14,     0,     0,     0,    87,     1,     0,     0,     0,     0,
-       0,     0,     2,     3,     0,     0,     0,     0,     0,     0,
-       4
+      90,   122,   104,    12,   100,   160,   176,   141,    19,   161,
+      13,    29,   108,     1,    60,    30,   101,    17,    18,    38,
+       2,     3,    22,    39,    61,   155,    40,   181,     4,   156,
+      31,   182,   134,    23,    14,    41,   177,    90,    24,   150,
+      23,   142,   151,   163,    20,    24,    72,  -119,    42,    43,
+      73,    20,   102,   165,    74,    28,    44,    45,    46,    47,
+      75,    76,    77,   176,    78,   157,   241,    79,    80,    81,
+      82,    83,   185,    26,    84,    85,  -119,  -119,  -119,   -59,
+      34,   174,    32,    87,   175,   221,    35,   163,    56,    36,
+      72,  -118,   226,   177,    73,   211,   212,    57,    74,   214,
+     215,   135,   217,   219,    75,    76,    77,   194,    78,   152,
+      58,    79,    80,    81,    82,    83,    59,    67,    84,    85,
+    -118,  -118,  -118,   245,   246,    28,   115,    87,   117,    23,
+     136,   137,   138,   223,    24,   128,   136,   137,   138,    69,
+      68,    -2,    15,    70,   -14,    62,    40,    63,   118,     1,
+     235,   197,   236,   119,   198,    41,     2,     3,   253,   254,
+     255,   256,   158,    66,     4,   165,   218,   159,    42,    43,
+     165,   119,   145,   146,    95,   249,    44,    45,    46,    47,
+     130,   257,   131,   132,   163,   133,   258,    72,  -120,   165,
+     165,    73,   260,   261,   262,    74,   178,   250,    96,   179,
+     198,    75,    76,    77,    97,    78,   266,   113,    79,    80,
+      81,    82,    83,   270,    99,    84,    85,  -120,  -120,  -120,
+      98,   111,   163,   116,    87,    72,   164,   124,   119,    73,
+     125,   126,   127,    74,   129,   149,   152,   153,   166,    75,
+      76,    77,   154,    78,   167,   169,    79,    80,    81,    82,
+      83,   170,   163,    84,    85,    72,   243,   180,   183,    73,
+     186,   189,    87,    74,   193,   191,   192,   200,   205,    75,
+      76,    77,   196,    78,   201,   203,    79,    80,    81,    82,
+      83,    72,   147,    84,    85,    73,   202,   142,   208,    74,
+     209,   210,    87,   213,   231,    75,    76,    77,   216,    78,
+     220,   224,    79,    80,    81,    82,    83,    72,   225,    84,
+      85,    73,   222,   227,    86,    74,   232,   229,    87,   230,
+     234,    75,    76,    77,   237,    78,   239,   242,    79,    80,
+      81,    82,    83,    72,   238,    84,    85,    73,   240,   244,
+      86,    74,   247,   251,    87,   263,   248,    75,    76,    77,
+     252,    78,   265,   264,    79,    80,    81,    82,    83,   268,
+     269,    84,    85,    16,    25,   204,    71,   207,   233,    65,
+      87,   162,   148,     0,   195
 };
 
 static const short int yycheck[] =
 {
-      55,    80,     7,     1,    61,    41,     1,     0,     5,    31,
-       5,     9,    11,    68,     1,    14,     6,     5,    10,    41,
-       7,     1,    14,    10,    36,     5,    24,     1,     8,    41,
-       3,     5,     4,    88,    41,     1,    41,    17,    93,     5,
-      97,    36,    41,    98,    41,     1,    41,   188,     4,     5,
-      30,    31,     8,    41,   195,   110,    12,     9,    38,    39,
-      40,    41,    18,    19,    20,    11,    22,    41,     4,    25,
-      26,    27,    28,    29,   129,    41,    32,    33,    34,    35,
-      36,    11,    76,    36,    78,    41,   227,   228,    41,     1,
-       4,    85,     4,     5,     5,    41,     8,   176,   177,    41,
-      12,   180,   181,    41,   183,   184,    18,    19,    20,     5,
-      22,    41,     5,    25,    26,    27,    28,    29,    24,     8,
-      32,    33,    34,    35,    36,    36,    15,    16,     1,    41,
-      41,     6,     5,     4,    23,     8,   191,     4,    34,    35,
-      36,    34,    35,    36,    17,     6,     8,     8,     9,     7,
-      11,    13,    10,     8,   211,    36,   213,    30,    31,    41,
-      41,   240,   241,   242,   243,    38,    39,    40,    41,   224,
-      36,     6,    24,    10,   229,    41,    13,    10,     7,   234,
-      13,    10,     8,     9,    41,    41,     6,     6,     1,     6,
-      41,     4,     5,   248,   249,     8,   251,   254,   255,    12,
-       8,     8,     8,    41,     8,    18,    19,    20,     7,    22,
-     267,    41,    25,    26,    27,    28,    29,   272,     8,    32,
-      33,    34,    35,    36,     6,    41,     1,     8,    41,     4,
-       5,     4,    41,     8,     8,     4,     8,    12,    21,    41,
-      41,    11,     7,    18,    19,    20,    41,    22,    41,    41,
-      25,    26,    27,    28,    29,     8,     1,    32,    33,     4,
-       5,     8,    41,     8,     7,    13,    41,    12,     7,    11,
-      41,    11,    24,    18,    19,    20,    11,    22,    41,    41,
-      25,    26,    27,    28,    29,     4,     5,    32,    33,     8,
-      41,    41,    41,    12,     8,    41,    41,     7,    10,    18,
-      19,    20,    13,    22,    10,    13,    25,    26,    27,    28,
-      29,     4,     8,    32,    33,     8,     8,     8,    37,    12,
-      24,    41,    41,    13,    11,    18,    19,    20,    13,    22,
-       8,     7,    25,    26,    27,    28,    29,     4,    41,    32,
-      33,     8,     6,    17,    37,    12,    21,    48,    41,   160,
-     209,    18,    19,    20,   140,    22,   170,    93,    25,    26,
-      27,    28,    29,    45,    -1,    32,    33,     0,     1,   107,
-       3,    -1,    -1,    -1,    41,     8,    -1,    -1,    -1,    -1,
-      -1,    -1,    15,    16,    -1,    -1,    -1,    -1,    -1,    -1,
-      23
+      56,    80,     5,    41,    62,     1,    11,     7,     5,     5,
+       4,     1,    68,     8,    31,     5,     5,     3,     6,     1,
+      15,    16,    13,     5,    41,     1,     8,    10,    23,     5,
+      21,    14,    88,    36,     0,    17,    41,    93,    41,    97,
+      36,    41,    98,     1,    41,    41,     4,     5,    30,    31,
+       8,    41,    41,   109,    12,     9,    38,    39,    40,    41,
+      18,    19,    20,    11,    22,    41,    14,    25,    26,    27,
+      28,    29,   128,    41,    32,    33,    34,    35,    36,    11,
+       1,    10,     4,    41,    13,   186,     7,     1,     4,    10,
+       4,     5,   193,    41,     8,   174,   175,    41,    12,   178,
+     179,     5,   181,   182,    18,    19,    20,     5,    22,    41,
+      41,    25,    26,    27,    28,    29,    24,     1,    32,    33,
+      34,    35,    36,   224,   225,     9,    76,    41,    78,    36,
+      34,    35,    36,   189,    41,    85,    34,    35,    36,     1,
+      24,     0,     1,     5,     3,     6,     8,     4,    36,     8,
+     208,     7,   210,    41,    10,    17,    15,    16,   237,   238,
+     239,   240,     8,     4,    23,   221,    36,    13,    30,    31,
+     226,    41,     8,     9,     8,   231,    38,    39,    40,    41,
+       6,    36,     8,     9,     1,    11,    41,     4,     5,   245,
+     246,     8,   248,   251,   252,    12,    10,     7,    41,    13,
+      10,    18,    19,    20,     6,    22,   264,     6,    25,    26,
+      27,    28,    29,   269,    41,    32,    33,    34,    35,    36,
+      24,    41,     1,     6,    41,     4,     5,     8,    41,     8,
+       8,     8,     6,    12,    41,     8,    41,     7,     6,    18,
+      19,    20,     8,    22,     8,     4,    25,    26,    27,    28,
+      29,    41,     1,    32,    33,     4,     5,     8,     8,     8,
+       4,    21,    41,    12,    11,    41,    41,     7,     7,    18,
+      19,    20,    41,    22,    41,     8,    25,    26,    27,    28,
+      29,     4,     5,    32,    33,     8,    41,    41,    13,    12,
+       7,    11,    41,    41,    24,    18,    19,    20,    41,    22,
+      41,    11,    25,    26,    27,    28,    29,     4,    11,    32,
+      33,     8,    41,    41,    37,    12,     8,    41,    41,    41,
+       7,    18,    19,    20,    10,    22,    10,     8,    25,    26,
+      27,    28,    29,     4,    13,    32,    33,     8,    13,     8,
+      37,    12,     8,    13,    41,    41,    24,    18,    19,    20,
+      11,    22,     8,    13,    25,    26,    27,    28,    29,    41,
+       7,    32,    33,     6,    17,   159,    49,   168,   206,    45,
+      41,   107,    93,    -1,   139
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -841,30 +836,30 @@ static const unsigned char yystos[] =
       49,    50,    41,     4,     0,     1,    45,     3,     6,     5,
       41,    51,    52,    36,    41,    46,    41,    54,     9,     1,
        5,    52,     4,    55,     1,     7,    10,    53,     1,     5,
-       8,    17,    30,    31,    38,    39,    40,    41,    56,    57,
-      59,    60,    91,    92,    97,     4,    41,    41,    24,    31,
-      41,     6,     4,    93,    93,     4,     1,     9,    24,     1,
+       8,    17,    30,    31,    38,    39,    40,    41,    52,    56,
+      57,    58,    59,    90,    91,    96,     4,    41,    41,    24,
+      31,    41,     6,     4,    92,    92,     4,     1,    24,     1,
        5,    57,     4,     8,    12,    18,    19,    20,    22,    25,
-      26,    27,    28,    29,    32,    33,    37,    41,    66,    70,
-      71,    82,    84,    89,    90,     8,    41,     6,    24,    41,
-      68,     5,    41,    94,     5,    46,    95,    96,    58,    71,
-      61,    71,    41,    80,     6,    64,    64,     6,    64,    36,
-      41,    69,    78,    69,    79,     8,     8,     8,     6,    64,
-      41,     6,     8,     9,    11,    71,     5,    34,    35,    36,
-      87,    88,     7,    41,    67,    86,     8,     9,     5,    90,
-       8,    68,    71,    41,     7,     8,     1,     5,    41,     8,
-      13,     1,     5,    95,    41,     1,     5,    71,     6,     8,
-      65,     4,    41,    62,    63,    68,    10,    13,    11,    41,
-      10,    13,     8,    10,    14,     8,    73,    71,     4,    83,
-      72,    21,    77,    41,    41,    11,     5,    88,    41,     7,
-      10,    76,     7,    41,    41,     8,    63,     8,     7,    81,
-      67,    13,     7,    11,    69,    69,    41,    69,    69,    41,
-      69,    36,    69,    41,    61,    41,    71,    11,    11,    61,
-      41,    85,    41,    41,    24,     8,    86,     7,    68,    68,
-      10,    13,    10,    13,    14,     8,     5,     8,    61,    61,
-       8,    24,    71,     7,    13,    11,    69,    69,    69,    69,
-      36,    41,    74,    71,    68,    68,    41,    13,     8,    68,
-      75,    41,     7,    71
+      26,    27,    28,    29,    32,    33,    37,    41,    65,    69,
+      70,    81,    83,    88,    89,     8,    41,     6,    24,    41,
+      67,     5,    41,    93,     5,    46,    94,    95,    70,    60,
+      70,    41,    79,     6,    63,    63,     6,    63,    36,    41,
+      68,    77,    68,    78,     8,     8,     8,     6,    63,    41,
+       6,     8,     9,    11,    70,     5,    34,    35,    36,    86,
+      87,     7,    41,    66,    85,     8,     9,     5,    89,     8,
+      67,    70,    41,     7,     8,     1,     5,    41,     8,    13,
+       1,     5,    94,     1,     5,    70,     6,     8,    64,     4,
+      41,    61,    62,    67,    10,    13,    11,    41,    10,    13,
+       8,    10,    14,     8,    72,    70,     4,    82,    71,    21,
+      76,    41,    41,    11,     5,    87,    41,     7,    10,    75,
+       7,    41,    41,     8,    62,     7,    80,    66,    13,     7,
+      11,    68,    68,    41,    68,    68,    41,    68,    36,    68,
+      41,    60,    41,    70,    11,    11,    60,    41,    84,    41,
+      41,    24,     8,    85,     7,    67,    67,    10,    13,    10,
+      13,    14,     8,     5,     8,    60,    60,     8,    24,    70,
+       7,    13,    11,    68,    68,    68,    68,    36,    41,    73,
+      70,    67,    67,    41,    13,     8,    67,    74,    41,     7,
+      70
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -1242,7 +1237,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
       case 41: /* "word" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1246 "ael.tab.c"
+#line 1241 "ael.tab.c"
         break;
       case 44: /* "objects" */
 #line 159 "ael.y"
@@ -1250,7 +1245,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1254 "ael.tab.c"
+#line 1249 "ael.tab.c"
         break;
       case 45: /* "object" */
 #line 159 "ael.y"
@@ -1258,12 +1253,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1262 "ael.tab.c"
+#line 1257 "ael.tab.c"
         break;
       case 46: /* "context_name" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1267 "ael.tab.c"
+#line 1262 "ael.tab.c"
         break;
       case 47: /* "context" */
 #line 159 "ael.y"
@@ -1271,7 +1266,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1275 "ael.tab.c"
+#line 1270 "ael.tab.c"
         break;
       case 49: /* "macro" */
 #line 159 "ael.y"
@@ -1279,7 +1274,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1283 "ael.tab.c"
+#line 1278 "ael.tab.c"
         break;
       case 50: /* "globals" */
 #line 159 "ael.y"
@@ -1287,7 +1282,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1291 "ael.tab.c"
+#line 1286 "ael.tab.c"
         break;
       case 51: /* "global_statements" */
 #line 159 "ael.y"
@@ -1295,15 +1290,15 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1299 "ael.tab.c"
+#line 1294 "ael.tab.c"
         break;
-      case 52: /* "global_statement" */
+      case 52: /* "assignment" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1307 "ael.tab.c"
+#line 1302 "ael.tab.c"
         break;
       case 54: /* "arglist" */
 #line 159 "ael.y"
@@ -1311,7 +1306,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1315 "ael.tab.c"
+#line 1310 "ael.tab.c"
         break;
       case 55: /* "elements_block" */
 #line 159 "ael.y"
@@ -1319,7 +1314,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1323 "ael.tab.c"
+#line 1318 "ael.tab.c"
         break;
       case 56: /* "elements" */
 #line 159 "ael.y"
@@ -1327,7 +1322,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1331 "ael.tab.c"
+#line 1326 "ael.tab.c"
         break;
       case 57: /* "element" */
 #line 159 "ael.y"
@@ -1335,237 +1330,237 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1339 "ael.tab.c"
+#line 1334 "ael.tab.c"
         break;
-      case 59: /* "ignorepat" */
+      case 58: /* "ignorepat" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1347 "ael.tab.c"
+#line 1342 "ael.tab.c"
         break;
-      case 60: /* "extension" */
+      case 59: /* "extension" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1355 "ael.tab.c"
+#line 1350 "ael.tab.c"
         break;
-      case 61: /* "statements" */
+      case 60: /* "statements" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1363 "ael.tab.c"
+#line 1358 "ael.tab.c"
         break;
-      case 62: /* "timerange" */
+      case 61: /* "timerange" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1368 "ael.tab.c"
+#line 1363 "ael.tab.c"
         break;
-      case 63: /* "timespec" */
+      case 62: /* "timespec" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1376 "ael.tab.c"
+#line 1371 "ael.tab.c"
         break;
-      case 64: /* "test_expr" */
+      case 63: /* "test_expr" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1381 "ael.tab.c"
+#line 1376 "ael.tab.c"
         break;
-      case 66: /* "if_like_head" */
+      case 65: /* "if_like_head" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1389 "ael.tab.c"
+#line 1384 "ael.tab.c"
         break;
-      case 67: /* "word_list" */
+      case 66: /* "word_list" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1394 "ael.tab.c"
+#line 1389 "ael.tab.c"
         break;
-      case 68: /* "word3_list" */
+      case 67: /* "word3_list" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1399 "ael.tab.c"
+#line 1394 "ael.tab.c"
         break;
-      case 69: /* "goto_word" */
+      case 68: /* "goto_word" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1404 "ael.tab.c"
+#line 1399 "ael.tab.c"
         break;
-      case 70: /* "switch_head" */
+      case 69: /* "switch_head" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1412 "ael.tab.c"
+#line 1407 "ael.tab.c"
         break;
-      case 71: /* "statement" */
+      case 70: /* "statement" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1420 "ael.tab.c"
+#line 1415 "ael.tab.c"
         break;
-      case 77: /* "opt_else" */
+      case 76: /* "opt_else" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1428 "ael.tab.c"
+#line 1423 "ael.tab.c"
         break;
-      case 78: /* "target" */
+      case 77: /* "target" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1436 "ael.tab.c"
+#line 1431 "ael.tab.c"
         break;
-      case 79: /* "jumptarget" */
+      case 78: /* "jumptarget" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1444 "ael.tab.c"
+#line 1439 "ael.tab.c"
         break;
-      case 80: /* "macro_call" */
+      case 79: /* "macro_call" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1452 "ael.tab.c"
+#line 1447 "ael.tab.c"
         break;
-      case 82: /* "application_call_head" */
+      case 81: /* "application_call_head" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1460 "ael.tab.c"
+#line 1455 "ael.tab.c"
         break;
-      case 84: /* "application_call" */
+      case 83: /* "application_call" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1468 "ael.tab.c"
+#line 1463 "ael.tab.c"
         break;
-      case 85: /* "opt_word" */
+      case 84: /* "opt_word" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1473 "ael.tab.c"
+#line 1468 "ael.tab.c"
         break;
-      case 86: /* "eval_arglist" */
+      case 85: /* "eval_arglist" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1481 "ael.tab.c"
+#line 1476 "ael.tab.c"
         break;
-      case 87: /* "case_statements" */
+      case 86: /* "case_statements" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1489 "ael.tab.c"
+#line 1484 "ael.tab.c"
         break;
-      case 88: /* "case_statement" */
+      case 87: /* "case_statement" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1497 "ael.tab.c"
+#line 1492 "ael.tab.c"
         break;
-      case 89: /* "macro_statements" */
+      case 88: /* "macro_statements" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1505 "ael.tab.c"
+#line 1500 "ael.tab.c"
         break;
-      case 90: /* "macro_statement" */
+      case 89: /* "macro_statement" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1513 "ael.tab.c"
+#line 1508 "ael.tab.c"
         break;
-      case 91: /* "switches" */
+      case 90: /* "switches" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1521 "ael.tab.c"
+#line 1516 "ael.tab.c"
         break;
-      case 92: /* "eswitches" */
+      case 91: /* "eswitches" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1529 "ael.tab.c"
+#line 1524 "ael.tab.c"
         break;
-      case 93: /* "switchlist_block" */
+      case 92: /* "switchlist_block" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1537 "ael.tab.c"
+#line 1532 "ael.tab.c"
         break;
-      case 94: /* "switchlist" */
+      case 93: /* "switchlist" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1545 "ael.tab.c"
+#line 1540 "ael.tab.c"
         break;
-      case 95: /* "included_entry" */
+      case 94: /* "included_entry" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1553 "ael.tab.c"
+#line 1548 "ael.tab.c"
         break;
-      case 96: /* "includeslist" */
+      case 95: /* "includeslist" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1561 "ael.tab.c"
+#line 1556 "ael.tab.c"
         break;
-      case 97: /* "includes" */
+      case 96: /* "includes" */
 #line 159 "ael.y"
         {
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1569 "ael.tab.c"
+#line 1564 "ael.tab.c"
         break;
 
       default:
@@ -2075,44 +2070,36 @@ yyreduce:
 
   case 38:
 #line 254 "ael.y"
-    { reset_semicount(parseio->scanner); ;}
+    {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 39:
-#line 254 "ael.y"
-    {
-		(yyval.pval) = npval2(PV_VARDEC, &(yylsp[-4]), &(yylsp[0]));
-		(yyval.pval)->u1.str = (yyvsp[-4].str);
-		(yyval.pval)->u2.val = (yyvsp[-1].str); ;}
+#line 255 "ael.y"
+    {free((yyvsp[-1].str)); (yyval.pval)=0;;}
     break;
 
   case 40:
-#line 258 "ael.y"
-    {free((yyvsp[-1].str)); (yyval.pval)=0;;}
+#line 256 "ael.y"
+    {(yyval.pval)=0;/* allow older docs to be read */;}
     break;
 
   case 41:
 #line 259 "ael.y"
-    {(yyval.pval)=0;/* allow older docs to be read */;}
-    break;
-
-  case 42:
-#line 262 "ael.y"
     {
 		(yyval.pval) = npval2(PV_IGNOREPAT, &(yylsp[-3]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
-  case 43:
-#line 267 "ael.y"
+  case 42:
+#line 264 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[-2]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[-2].str);
 		(yyval.pval)->u2.statements = (yyvsp[0].pval); ;}
     break;
 
-  case 44:
-#line 271 "ael.y"
+  case 43:
+#line 268 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[-3]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2120,8 +2107,8 @@ yyreduce:
 		(yyval.pval)->u4.regexten=1;;}
     break;
 
-  case 45:
-#line 276 "ael.y"
+  case 44:
+#line 273 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[-6]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2129,8 +2116,8 @@ yyreduce:
 		(yyval.pval)->u3.hints = (yyvsp[-4].str);;}
     break;
 
-  case 46:
-#line 281 "ael.y"
+  case 45:
+#line 278 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[-7]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2139,23 +2126,23 @@ yyreduce:
 		(yyval.pval)->u3.hints = (yyvsp[-4].str);;}
     break;
 
-  case 47:
-#line 290 "ael.y"
+  case 46:
+#line 287 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
-  case 48:
-#line 291 "ael.y"
+  case 47:
+#line 288 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
     break;
 
-  case 49:
-#line 292 "ael.y"
+  case 48:
+#line 289 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
-  case 50:
-#line 298 "ael.y"
+  case 49:
+#line 295 "ael.y"
     {
 		asprintf(&(yyval.str), "%s:%s:%s", (yyvsp[-4].str), (yyvsp[-2].str), (yyvsp[0].str));
 		free((yyvsp[-4].str));
@@ -2163,13 +2150,13 @@ yyreduce:
 		free((yyvsp[0].str)); ;}
     break;
 
-  case 51:
-#line 303 "ael.y"
+  case 50:
+#line 300 "ael.y"
     { (yyval.str) = (yyvsp[0].str); ;}
     break;
 
-  case 52:
-#line 307 "ael.y"
+  case 51:
+#line 304 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[-6].str), &(yylsp[-6]));
 		(yyval.pval)->u1.list = nword((yyvsp[-4].str), &(yylsp[-4]));
@@ -2177,46 +2164,46 @@ yyreduce:
 		(yyval.pval)->u1.list->next->next = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
-  case 53:
-#line 315 "ael.y"
+  case 52:
+#line 312 "ael.y"
     { reset_parencount(parseio->scanner); ;}
     break;
 
-  case 54:
-#line 315 "ael.y"
+  case 53:
+#line 312 "ael.y"
     {
 		(yyval.str) = (yyvsp[-1].str); ;}
     break;
 
-  case 55:
-#line 320 "ael.y"
+  case 54:
+#line 317 "ael.y"
     {
 		(yyval.pval)= npval2(PV_IF, &(yylsp[-1]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[0].str); ;}
     break;
 
-  case 56:
-#line 323 "ael.y"
+  case 55:
+#line 320 "ael.y"
     {
 		(yyval.pval) = npval2(PV_RANDOM, &(yylsp[-1]), &(yylsp[0]));
 		(yyval.pval)->u1.str=(yyvsp[0].str);;}
     break;
 
-  case 57:
-#line 326 "ael.y"
+  case 56:
+#line 323 "ael.y"
     {
 		(yyval.pval) = npval2(PV_IFTIME, &(yylsp[-3]), &(yylsp[0]));
 		(yyval.pval)->u1.list = (yyvsp[-1].pval);
 		prev_word = 0; ;}
     break;
 
-  case 58:
-#line 337 "ael.y"
+  case 57:
+#line 334 "ael.y"
     { (yyval.str) = (yyvsp[0].str);;}
     break;
 
-  case 59:
-#line 338 "ael.y"
+  case 58:
+#line 335 "ael.y"
     {
 		asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
 		free((yyvsp[-1].str));
@@ -2224,13 +2211,13 @@ yyreduce:
 		prev_word = (yyval.str);;}
     break;
 
-  case 60:
-#line 345 "ael.y"
+  case 59:
+#line 342 "ael.y"
     { (yyval.str) = (yyvsp[0].str);;}
     break;
 
-  case 61:
-#line 346 "ael.y"
+  case 60:
+#line 343 "ael.y"
     {
 		asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
 		free((yyvsp[-1].str));
@@ -2238,8 +2225,8 @@ yyreduce:
 		prev_word = (yyval.str);;}
     break;
 
-  case 62:
-#line 351 "ael.y"
+  case 61:
+#line 348 "ael.y"
     {
 		asprintf(&((yyval.str)), "%s%s%s", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str));
 		free((yyvsp[-2].str));
@@ -2248,92 +2235,92 @@ yyreduce:
 		prev_word=(yyval.str);;}
     break;
 
-  case 63:
-#line 359 "ael.y"
+  case 62:
+#line 356 "ael.y"
     { (yyval.str) = (yyvsp[0].str);;}
     break;
 
-  case 64:
-#line 360 "ael.y"
+  case 63:
+#line 357 "ael.y"
     {
 		asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
 		free((yyvsp[-1].str));
 		free((yyvsp[0].str));;}
     break;
 
-  case 65:
-#line 364 "ael.y"
+  case 64:
+#line 361 "ael.y"
     {
 		asprintf(&((yyval.str)), "%s:%s", (yyvsp[-2].str), (yyvsp[0].str));
 		free((yyvsp[-2].str));
 		free((yyvsp[0].str));;}
     break;
 
-  case 66:
-#line 370 "ael.y"
+  case 65:
+#line 367 "ael.y"
     {
 		(yyval.pval) = npval2(PV_SWITCH, &(yylsp[-2]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[-1].str); ;}
     break;
 
-  case 67:
-#line 378 "ael.y"
+  case 66:
+#line 375 "ael.y"
     {
 		(yyval.pval) = npval2(PV_STATEMENTBLOCK, &(yylsp[-2]), &(yylsp[0]));
 		(yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
     break;
 
-  case 68:
-#line 381 "ael.y"
+  case 67:
+#line 378 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
-  case 69:
-#line 381 "ael.y"
+  case 68:
+#line 378 "ael.y"
     {
 		(yyval.pval) = npval2(PV_VARDEC, &(yylsp[-4]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[-4].str);
 		(yyval.pval)->u2.val = (yyvsp[-1].str); ;}
     break;
 
-  case 70:
-#line 385 "ael.y"
+  case 69:
+#line 382 "ael.y"
     {
 		(yyval.pval) = npval2(PV_GOTO, &(yylsp[-2]), &(yylsp[0]));
 		(yyval.pval)->u1.list = (yyvsp[-1].pval);;}
     break;
 
-  case 71:
-#line 388 "ael.y"
+  case 70:
+#line 385 "ael.y"
     {
 		(yyval.pval) = npval2(PV_GOTO, &(yylsp[-2]), &(yylsp[0]));
 		(yyval.pval)->u1.list = (yyvsp[-1].pval);;}
     break;
 
-  case 72:
-#line 391 "ael.y"
+  case 71:
+#line 388 "ael.y"
     {
 		(yyval.pval) = npval2(PV_LABEL, &(yylsp[-1]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[-1].str); ;}
     break;
 
-  case 73:
-#line 394 "ael.y"
+  case 72:
+#line 391 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
-  case 74:
-#line 395 "ael.y"
+  case 73:
+#line 392 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
-  case 75:
-#line 396 "ael.y"
+  case 74:
+#line 393 "ael.y"
     {reset_parencount(parseio->scanner);;}
     break;
 
-  case 76:
-#line 396 "ael.y"
+  case 75:
+#line 393 "ael.y"
     { /* XXX word_list maybe ? */
 		(yyval.pval) = npval2(PV_FOR, &(yylsp[-11]), &(yylsp[0]));
 		(yyval.pval)->u1.for_init = (yyvsp[-8].str);
@@ -2342,53 +2329,53 @@ yyreduce:
 		(yyval.pval)->u4.for_statements = (yyvsp[0].pval);;}
     break;
 
-  case 77:
-#line 402 "ael.y"
+  case 76:
+#line 399 "ael.y"
     {
 		(yyval.pval) = npval2(PV_WHILE, &(yylsp[-2]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[-1].str);
 		(yyval.pval)->u2.statements = (yyvsp[0].pval); ;}
     break;
 
-  case 78:
-#line 406 "ael.y"
+  case 77:
+#line 403 "ael.y"
     {
 		(yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[0])); ;}
     break;
 
-  case 79:
-#line 408 "ael.y"
+  case 78:
+#line 405 "ael.y"
     {
 		(yyval.pval) = update_last((yyvsp[-2].pval), &(yylsp[0]));
 		(yyval.pval)->u2.statements = (yyvsp[-1].pval);;}
     break;
 
-  case 80:
-#line 411 "ael.y"
+  case 79:
+#line 408 "ael.y"
     {
 		(yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[-1])); ;}
     break;
 
-  case 81:
-#line 413 "ael.y"
+  case 80:
+#line 410 "ael.y"
     {
 		(yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[0])); ;}
     break;
 
-  case 82:
-#line 415 "ael.y"
+  case 81:
+#line 412 "ael.y"
     {
 		(yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[-1]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
-  case 83:
-#line 418 "ael.y"
+  case 82:
+#line 415 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
-  case 84:
-#line 418 "ael.y"
+  case 83:
+#line 415 "ael.y"
     {
 		char *bufx;
 		int tot=0;
@@ -2424,148 +2411,148 @@ yyreduce:
 	;}
     break;
 
-  case 85:
-#line 451 "ael.y"
+  case 84:
+#line 448 "ael.y"
     { (yyval.pval) = npval2(PV_BREAK, &(yylsp[-1]), &(yylsp[0])); ;}
     break;
 
-  case 86:
-#line 452 "ael.y"
+  case 85:
+#line 449 "ael.y"
     { (yyval.pval) = npval2(PV_RETURN, &(yylsp[-1]), &(yylsp[0])); ;}
     break;
 
-  case 87:
-#line 453 "ael.y"
+  case 86:
+#line 450 "ael.y"
     { (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[-1]), &(yylsp[0])); ;}
     break;
 
-  case 88:
-#line 454 "ael.y"
+  case 87:
+#line 451 "ael.y"
     {
 		(yyval.pval) = update_last((yyvsp[-2].pval), &(yylsp[-1]));
 		(yyval.pval)->u2.statements = (yyvsp[-1].pval);
 		(yyval.pval)->u3.else_statements = (yyvsp[0].pval);;}
     break;
 
-  case 89:
-#line 458 "ael.y"
+  case 88:
+#line 455 "ael.y"
     { (yyval.pval)=0; ;}
     break;
 
-  case 90:
-#line 461 "ael.y"
+  case 89:
+#line 458 "ael.y"
     { (yyval.pval) = (yyvsp[0].pval); ;}
     break;
 
-  case 91:
-#line 462 "ael.y"
+  case 90:
+#line 459 "ael.y"
     { (yyval.pval) = NULL ; ;}
     break;
 
-  case 92:
-#line 467 "ael.y"
+  case 91:
+#line 464 "ael.y"
     { (yyval.pval) = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
-  case 93:
-#line 468 "ael.y"
+  case 92:
+#line 465 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[-2].str), &(yylsp[-2]));
 		(yyval.pval)->next = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
-  case 94:
-#line 471 "ael.y"
+  case 93:
+#line 468 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[-2].str), &(yylsp[-2]));
 		(yyval.pval)->next = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
-  case 95:
-#line 474 "ael.y"
+  case 94:
+#line 471 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[-4].str), &(yylsp[-4]));
 		(yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
 		(yyval.pval)->next->next = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
-  case 96:
-#line 478 "ael.y"
+  case 95:
+#line 475 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[-4].str), &(yylsp[-4]));
 		(yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
 		(yyval.pval)->next->next = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
-  case 97:
-#line 482 "ael.y"
+  case 96:
+#line 479 "ael.y"
     {
 		(yyval.pval) = nword(strdup("default"), &(yylsp[-4]));
 		(yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
 		(yyval.pval)->next->next = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
-  case 98:
-#line 486 "ael.y"
+  case 97:
+#line 483 "ael.y"
     {
 		(yyval.pval) = nword(strdup("default"), &(yylsp[-4]));
 		(yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
 		(yyval.pval)->next->next = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
-  case 99:
-#line 493 "ael.y"
-    {
+  case 98:
+#line 490 "ael.y"
+    {			/* ext, 1 */
 		(yyval.pval) = nword((yyvsp[0].str), &(yylsp[0]));
 		(yyval.pval)->next = nword(strdup("1"), &(yylsp[0])); ;}
     break;
 
-  case 100:
-#line 496 "ael.y"
-    {
+  case 99:
+#line 493 "ael.y"
+    {		/* ext, pri */
 		(yyval.pval) = nword((yyvsp[-2].str), &(yylsp[-2]));
 		(yyval.pval)->next = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
-  case 101:
-#line 499 "ael.y"
-    {	/* XXX they are stored in a different order */
+  case 100:
+#line 496 "ael.y"
+    {	/* context, ext, pri */
 		(yyval.pval) = nword((yyvsp[0].str), &(yylsp[0]));
 		(yyval.pval)->next = nword((yyvsp[-4].str), &(yylsp[-4]));
 		(yyval.pval)->next->next = nword((yyvsp[-2].str), &(yylsp[-2])); ;}
     break;
 
-  case 102:
-#line 503 "ael.y"
-    {
+  case 101:
+#line 500 "ael.y"
+    {		/* context, ext, 1 */
 		(yyval.pval) = nword((yyvsp[0].str), &(yylsp[0]));
 		(yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
 		(yyval.pval)->next->next = nword(strdup("1"), &(yylsp[0])); ;}
     break;
 
-  case 103:
-#line 507 "ael.y"
-    {
+  case 102:
+#line 504 "ael.y"
+    {	/* default, ext, pri */
 		(yyval.pval) = nword(strdup("default"), &(yylsp[-4]));
 		(yyval.pval)->next = nword((yyvsp[-4].str), &(yylsp[-4]));
 		(yyval.pval)->next->next = nword((yyvsp[-2].str), &(yylsp[-2])); ;}
     break;
 
-  case 104:
-#line 511 "ael.y"
-    {
+  case 103:
+#line 508 "ael.y"
+    {		/* default, ext, 1 */
 		(yyval.pval) = nword(strdup("default"), &(yylsp[-2]));
 		(yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[0]));
 		(yyval.pval)->next->next = nword( strdup("1"), &(yylsp[0])); ;}
     break;
 
-  case 105:
-#line 517 "ael.y"
+  case 104:
+#line 514 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
-  case 106:
-#line 517 "ael.y"
+  case 105:
+#line 514 "ael.y"
     {
 		/* XXX original code had @2 but i think we need @5 */
 		(yyval.pval) = npval2(PV_MACRO_CALL, &(yylsp[-4]), &(yylsp[0]));
@@ -2573,20 +2560,20 @@ yyreduce:
 		(yyval.pval)->u2.arglist = (yyvsp[-1].pval);;}
     break;
 
-  case 107:
-#line 522 "ael.y"
+  case 106:
+#line 519 "ael.y"
     {
 		(yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[-2]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[-2].str); ;}
     break;
 
-  case 108:
-#line 530 "ael.y"
+  case 107:
+#line 527 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
-  case 109:
-#line 530 "ael.y"
+  case 108:
+#line 527 "ael.y"
     {
 		if (strcasecmp((yyvsp[-2].str),"goto") == 0) {
 			(yyval.pval) = npval2(PV_GOTO, &(yylsp[-2]), &(yylsp[-1]));
@@ -2598,8 +2585,8 @@ yyreduce:
 		} ;}
     break;
 
-  case 110:
-#line 541 "ael.y"
+  case 109:
+#line 538 "ael.y"
     {
 		(yyval.pval) = update_last((yyvsp[-2].pval), &(yylsp[0]));
  		if( (yyval.pval)->type == PV_GOTO )
@@ -2609,197 +2596,197 @@ yyreduce:
 	;}
     break;
 
+  case 110:
+#line 545 "ael.y"
+    { (yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[0])); ;}
+    break;
+
   case 111:
 #line 548 "ael.y"
-    { (yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[0])); ;}
+    { (yyval.str) = (yyvsp[0].str) ;}
     break;
 
   case 112:
-#line 551 "ael.y"
-    { (yyval.str) = (yyvsp[0].str) ;}
+#line 549 "ael.y"
+    { (yyval.str) = strdup(""); ;}
     break;
 
   case 113:
 #line 552 "ael.y"
-    { (yyval.str) = strdup(""); ;}
+    { (yyval.pval) = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
   case 114:
-#line 555 "ael.y"
-    { (yyval.pval) = nword((yyvsp[0].str), &(yylsp[0])); ;}
+#line 553 "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 556 "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(""); ;}
+    { (yyval.pval) = linku1((yyvsp[-2].pval), nword((yyvsp[0].str), &(yylsp[0]))); ;}
     break;
 
   case 116:
 #line 559 "ael.y"
-    { (yyval.pval) = linku1((yyvsp[-2].pval), nword((yyvsp[0].str), &(yylsp[0]))); ;}
+    {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 117:
-#line 562 "ael.y"
-    {(yyval.pval)=(yyvsp[0].pval);;}
+#line 560 "ael.y"
+    { (yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
     break;
 
   case 118:
 #line 563 "ael.y"
-    { (yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
-    break;
-
-  case 119:
-#line 566 "ael.y"
     {
 		(yyval.pval) = npval2(PV_CASE, &(yylsp[-3]), &(yylsp[-1])); /* XXX 3 or 4 ? */
 		(yyval.pval)->u1.str = (yyvsp[-2].str);
 		(yyval.pval)->u2.statements = (yyvsp[0].pval);;}
     break;
 
-  case 120:
-#line 570 "ael.y"
+  case 119:
+#line 567 "ael.y"
     {
 		(yyval.pval) = npval2(PV_DEFAULT, &(yylsp[-2]), &(yylsp[0]));
 		(yyval.pval)->u1.str = NULL;
 		(yyval.pval)->u2.statements = (yyvsp[0].pval);;}
     break;
 
-  case 121:
-#line 574 "ael.y"
+  case 120:
+#line 571 "ael.y"
     {
 		(yyval.pval) = npval2(PV_PATTERN, &(yylsp[-3]), &(yylsp[0])); /* XXX@3 or @4 ? */
 		(yyval.pval)->u1.str = (yyvsp[-2].str);
 		(yyval.pval)->u2.statements = (yyvsp[0].pval);;}
     break;
 
-  case 122:
-#line 578 "ael.y"
+  case 121:
+#line 575 "ael.y"
     {
 		(yyval.pval) = npval2(PV_CASE, &(yylsp[-2]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
-  case 123:
-#line 581 "ael.y"
+  case 122:
+#line 578 "ael.y"
     {
 		(yyval.pval) = npval2(PV_DEFAULT, &(yylsp[-1]), &(yylsp[0]));
 		(yyval.pval)->u1.str = NULL;;}
     break;
 
-  case 124:
-#line 584 "ael.y"
+  case 123:
+#line 581 "ael.y"
     {
 		(yyval.pval) = npval2(PV_PATTERN, &(yylsp[-2]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
-  case 125:
-#line 589 "ael.y"
+  case 124:
+#line 586 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 126:
-#line 590 "ael.y"
+  case 125:
+#line 587 "ael.y"
     {(yyval.pval) = (yyvsp[0].pval);;}
     break;
 
-  case 127:
-#line 591 "ael.y"
+  case 126:
+#line 588 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
     break;
 
-  case 128:
-#line 594 "ael.y"
+  case 127:
+#line 591 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
-  case 129:
-#line 595 "ael.y"
+  case 128:
+#line 592 "ael.y"
     {
 		(yyval.pval) = npval2(PV_CATCH, &(yylsp[-4]), &(yylsp[0]));
 		(yyval.pval)->u1.str = (yyvsp[-3].str);
 		(yyval.pval)->u2.statements = (yyvsp[-1].pval);;}
     break;
 
-  case 130:
-#line 601 "ael.y"
+  case 129:
+#line 598 "ael.y"
     {
 		(yyval.pval) = npval2(PV_SWITCHES, &(yylsp[-1]), &(yylsp[0]));
 		(yyval.pval)->u1.list = (yyvsp[0].pval); ;}
     break;
 
-  case 131:
-#line 606 "ael.y"
+  case 130:
+#line 603 "ael.y"
     {
 		(yyval.pval) = npval2(PV_ESWITCHES, &(yylsp[-1]), &(yylsp[0]));
 		(yyval.pval)->u1.list = (yyvsp[0].pval); ;}
     break;
 
-  case 132:
-#line 611 "ael.y"
+  case 131:
+#line 608 "ael.y"
     { (yyval.pval) = (yyvsp[-1].pval); ;}
     break;
 
-  case 133:
-#line 612 "ael.y"
+  case 132:
+#line 609 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 134:
-#line 615 "ael.y"
+  case 133:
+#line 612 "ael.y"
     { (yyval.pval) = nword((yyvsp[-1].str), &(yylsp[-1])); ;}
     break;
 
-  case 135:
-#line 616 "ael.y"
+  case 134:
+#line 613 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-2].pval), nword((yyvsp[-1].str), &(yylsp[-1]))); ;}
     break;
 
-  case 136:
-#line 617 "ael.y"
+  case 135:
+#line 614 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
-  case 137:
-#line 620 "ael.y"
+  case 136:
+#line 617 "ael.y"
     { (yyval.pval) = nword((yyvsp[-1].str), &(yylsp[-1])); ;}
     break;
 
-  case 138:
-#line 621 "ael.y"
+  case 137:
+#line 618 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[-3].str), &(yylsp[-3]));
 		(yyval.pval)->u2.arglist = (yyvsp[-1].pval);
 		prev_word=0; /* XXX sure ? */ ;}
     break;
 
-  case 139:
-#line 628 "ael.y"
+  case 138:
+#line 625 "ael.y"
     { (yyval.pval) = (yyvsp[0].pval); ;}
     break;
 
-  case 140:
-#line 629 "ael.y"
+  case 139:
+#line 626 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
     break;
 
-  case 141:
-#line 630 "ael.y"
+  case 140:
+#line 627 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
-  case 142:
-#line 633 "ael.y"
+  case 141:
+#line 630 "ael.y"
     {
 		(yyval.pval) = npval2(PV_INCLUDES, &(yylsp[-3]), &(yylsp[0]));
 		(yyval.pval)->u1.list = (yyvsp[-1].pval);;}
     break;
 
-  case 143:
-#line 636 "ael.y"
+  case 142:
+#line 633 "ael.y"
     {
 		(yyval.pval) = npval2(PV_INCLUDES, &(yylsp[-2]), &(yylsp[0]));;}
     break;
@@ -2809,7 +2796,7 @@ yyreduce:
     }
 
 /* Line 1126 of yacc.c.  */
-#line 2813 "ael.tab.c"
+#line 2800 "ael.tab.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -3084,7 +3071,7 @@ yyreturn:
 }
 
 
-#line 641 "ael.y"
+#line 638 "ael.y"
 
 
 static char *token_equivs1[] =
diff --git a/pbx/ael/ael.y b/pbx/ael/ael.y
index a8b2b99fdd..4e826169a9 100644
--- a/pbx/ael/ael.y
+++ b/pbx/ael/ael.y
@@ -107,7 +107,7 @@ static pval *update_last(pval *, YYLTYPE *);
 %type <pval>element
 %type <pval>elements
 %type <pval>arglist
-%type <pval>global_statement
+%type <pval>assignment
 %type <pval>global_statements
 %type <pval>globals
 %type <pval>macro
@@ -164,7 +164,7 @@ static pval *update_last(pval *, YYLTYPE *);
 		eval_arglist application_call application_call_head
 		macro_call target jumptarget statement switch_head
 		if_like_head statements extension
-		ignorepat element elements arglist global_statement
+		ignorepat element elements arglist assignment
 		global_statements globals macro context object objects
 		opt_else
 		elements_block switchlist_block
@@ -219,12 +219,12 @@ globals : KW_GLOBALS LC global_statements RC {
 		$$ = npval2(PV_GLOBALS, &@1, &@3); }
 	;
 
-global_statements : global_statement {$$=$1;}
-	| global_statements global_statement {$$ = linku1($1, $2); }
+global_statements : assignment {$$=$1;}
+	| global_statements assignment {$$ = linku1($1, $2); }
 	| global_statements error {$$=$1;}
 	;
 
-global_statement : word EQ { reset_semicount(parseio->scanner); }  word SEMI {
+assignment : word EQ { reset_semicount(parseio->scanner); }  word SEMI {
 		$$ = npval2(PV_VARDEC, &@1, &@5);
 		$$->u1.str = $1;
 		$$->u2.val = $4; }
@@ -251,10 +251,7 @@ element : extension {$$=$1;}
 	| switches {$$=$1;}
 	| eswitches {$$=$1;}
 	| ignorepat {$$=$1;}
-	| word EQ { reset_semicount(parseio->scanner); } word SEMI {
-		$$ = npval2(PV_VARDEC, &@1, &@5);
-		$$->u1.str = $1;
-		$$->u2.val = $4; }
+	| assignment {$$=$1;}
 	| word error {free($1); $$=0;}
 	| SEMI  {$$=0;/* allow older docs to be read */}
 	;
@@ -490,25 +487,25 @@ target : goto_word { $$ = nword($1, &@1); }
 	;
 
 /* XXX please document the form of jumptarget */
-jumptarget : goto_word {
+jumptarget : goto_word {			/* ext, 1 */
 		$$ = nword($1, &@1);
 		$$->next = nword(strdup("1"), &@1); }  /*  jump extension[,priority][@context] */
-	| goto_word COMMA goto_word {
+	| goto_word COMMA goto_word {		/* ext, pri */
 		$$ = nword($1, &@1);
 		$$->next = nword($3, &@3); }
-	| goto_word COMMA word AT word {	/* XXX they are stored in a different order */
+	| goto_word COMMA word AT word {	/* context, ext, pri */
 		$$ = nword($5, &@5);
 		$$->next = nword($1, &@1);
 		$$->next->next = nword($3, &@3); }
-	| goto_word AT goto_word {
+	| goto_word AT goto_word {		/* context, ext, 1 */
 		$$ = nword($3, &@3);
 		$$->next = nword($1, &@1);
 		$$->next->next = nword(strdup("1"), &@3); }
-	| goto_word COMMA word AT KW_DEFAULT {
+	| goto_word COMMA word AT KW_DEFAULT {	/* default, ext, pri */
 		$$ = nword(strdup("default"), &@1);
 		$$->next = nword($1, &@1);
 		$$->next->next = nword($3, &@3); }
-	| goto_word AT KW_DEFAULT {
+	| goto_word AT KW_DEFAULT {		/* default, ext, 1 */
 		$$ = nword(strdup("default"), &@1);
 		$$->next = nword($1, &@3);
 		$$->next->next = nword( strdup("1"), &@3); }
-- 
GitLab