From ab92fc1f351f4c42b39aba57cd55b660d0a3bfdc Mon Sep 17 00:00:00 2001
From: Steve Murphy <murf@digium.com>
Date: Tue, 27 Nov 2007 18:50:44 +0000
Subject: [PATCH] made AEL 8-bit transparent; mainly the lexer was tossing
 chars with the hi-order bit set. Not nice. Also, allow @ in extension names,
 and a backslash, also.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89682 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 pbx/ael/ael-test/ref.ael-ntest10 |  49 +-
 pbx/ael/ael-test/ref.ael-ntest12 |  17 +-
 pbx/ael/ael-test/ref.ael-ntest22 |  63 +-
 pbx/ael/ael-test/ref.ael-ntest9  |  17 +-
 pbx/ael/ael-test/ref.ael-test1   |  29 +-
 pbx/ael/ael-test/ref.ael-test11  |  19 +-
 pbx/ael/ael-test/ref.ael-test14  |  15 +-
 pbx/ael/ael-test/ref.ael-test15  |  15 +-
 pbx/ael/ael-test/ref.ael-test16  |  17 +-
 pbx/ael/ael-test/ref.ael-test18  |  15 +-
 pbx/ael/ael-test/ref.ael-test19  |  29 +-
 pbx/ael/ael-test/ref.ael-test2   |  49 +-
 pbx/ael/ael-test/ref.ael-test20  |  15 +-
 pbx/ael/ael-test/ref.ael-test3   | 191 +++---
 pbx/ael/ael-test/ref.ael-test4   |  49 +-
 pbx/ael/ael-test/ref.ael-test5   |  21 +-
 pbx/ael/ael-test/ref.ael-test6   |  41 +-
 pbx/ael/ael-test/ref.ael-test7   |  31 +-
 pbx/ael/ael-test/ref.ael-test8   |  15 +-
 res/ael/ael.flex                 |   6 +-
 res/ael/ael.tab.c                | 961 ++++++++++++++++---------------
 res/ael/ael.y                    |   9 +-
 res/ael/ael_lex.c                | 668 ++++++++++-----------
 23 files changed, 1174 insertions(+), 1167 deletions(-)

diff --git a/pbx/ael/ael-test/ref.ael-ntest10 b/pbx/ael/ael-test/ref.ael-ntest10
index 7e43b9702c..9eb8ac9894 100644
--- a/pbx/ael/ael-test/ref.ael-ntest10
+++ b/pbx/ael/ael-test/ref.ael-ntest10
@@ -5,27 +5,26 @@
 
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:913 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1-4: The macro endsess does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 6-9: The macro nullchk does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 11-26: The macro endcall does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 28-44: The macro endcall2 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 36-36: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 46-68: The macro endcall3 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 48-48: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 60-60: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 70-96: The macro endcall4 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 72-72: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 84-84: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 87-87: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 98-131: The macro endcall5 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 106-106: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 119-119: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 122-122: A default case was automatically added to the switch.
-LOG: lev:2 file:pbx_ael.c  line:931 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1-4: The macro endsess does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 6-9: The macro nullchk does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 11-26: The macro endcall does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 28-44: The macro endcall2 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 36-36: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 46-68: The macro endcall3 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 48-48: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 60-60: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 70-96: The macro endcall4 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 72-72: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 84-84: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 87-87: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 98-131: The macro endcall5 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 106-106: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 119-119: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 122-122: A default case was automatically added to the switch.
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
 Executed ast_context_create(conts, name=endsess, registrar=pbx_ael);
 Executed ast_context_create(conts, name=nullchk, registrar=pbx_ael);
 Executed ast_context_create(conts, name=endcall, registrar=pbx_ael);
@@ -164,9 +163,9 @@ Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=1
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=13, label=(null), callerid=(null), appl=Goto, data=sw-21-in,ptr1, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=14, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall5-out-16-17, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=15, label=(null), callerid=(null), appl=Goto, data=sw-16-in,10, FREE, registrar=pbx_ael);
-LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 Executed ast_merge_contexts_and_delete();
-LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 Executed ast_walk_contexts();
-LOG: lev:2 file:pbx_ael.c  line:939 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:527 func: main  7 contexts, 37 extensions, 131 priorities
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  7 contexts, 37 extensions, 131 priorities
diff --git a/pbx/ael/ael-test/ref.ael-ntest12 b/pbx/ael/ael-test/ref.ael-ntest12
index 99191200a6..184ce2d6cf 100644
--- a/pbx/ael/ael-test/ref.ael-ntest12
+++ b/pbx/ael/ael-test/ref.ael-ntest12
@@ -5,11 +5,10 @@
 
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:3910 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:3917 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3925 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3928 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-Executed ast_context_create(conts, name=test1, registrar=pbx_ael);
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+Executed ast_context_find_or_create(conts, name=test1, registrar=pbx_ael);
 Executed ast_add_extension2(context=test1, rep=0, exten=771, priority=1, label=(null), callerid=(null), appl=Set, data=i=$[0], FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=test1, rep=0, exten=771, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[ 
 			${i} <= 3]?3:6, FREE, registrar=pbx_ael);
@@ -23,9 +22,9 @@ Executed ast_add_extension2(context=test1, rep=0, exten=772, priority=3, label=(
 Executed ast_add_extension2(context=test1, rep=0, exten=772, priority=4, label=(null), callerid=(null), appl=Set, data=i=$[ ${i} + 1 ], FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=test1, rep=0, exten=772, priority=5, label=(null), callerid=(null), appl=Goto, data=2, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=test1, rep=0, exten=772, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish for-test1-2, FREE, registrar=pbx_ael);
-LOG: lev:2 file:pbx_ael.c  line:3930 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 Executed ast_merge_contexts_and_delete();
-LOG: lev:2 file:pbx_ael.c  line:3933 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 Executed ast_walk_contexts();
-LOG: lev:2 file:pbx_ael.c  line:3936 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:479 func: main  1 contexts, 2 extensions, 12 priorities
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  1 contexts, 2 extensions, 12 priorities
diff --git a/pbx/ael/ael-test/ref.ael-ntest22 b/pbx/ael/ael-test/ref.ael-ntest22
index fcebec18a4..c9317f64ea 100644
--- a/pbx/ael/ael-test/ref.ael-ntest22
+++ b/pbx/ael/ael-test/ref.ael-ntest22
@@ -5,34 +5,33 @@
 
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:913 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././t1/a.ael, 41 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././t1/b.ael, 42 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././t1/c.ael, 106 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././t2/d.ael, 41 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././t2/e.ael, 42 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././t2/f.ael, 82 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././qq.ael, 45 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././t3/g.ael, 41 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././t3/h.ael, 42 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././t3/i.ael, 41 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././t3/j.ael, 43 chars
-LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:931 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-Executed ast_context_create(conts, name=a, registrar=pbx_ael);
-Executed ast_context_create(conts, name=b, registrar=pbx_ael);
-Executed ast_context_create(conts, name=c, registrar=pbx_ael);
-Executed ast_context_create(conts, name=d, registrar=pbx_ael);
-Executed ast_context_create(conts, name=e, registrar=pbx_ael);
-Executed ast_context_create(conts, name=qq, registrar=pbx_ael);
-Executed ast_context_create(conts, name=f, registrar=pbx_ael);
-Executed ast_context_create(conts, name=g, registrar=pbx_ael);
-Executed ast_context_create(conts, name=h, registrar=pbx_ael);
-Executed ast_context_create(conts, name=i, registrar=pbx_ael);
-Executed ast_context_create(conts, name=j, registrar=pbx_ael);
-Executed ast_context_create(conts, name=w, registrar=pbx_ael);
-Executed ast_context_create(conts, name=z, registrar=pbx_ael);
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././t1/a.ael, 41 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././t1/b.ael, 42 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././t1/c.ael, 106 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././t2/d.ael, 41 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././t2/e.ael, 42 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././t2/f.ael, 82 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././qq.ael, 45 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././t3/g.ael, 41 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././t3/h.ael, 42 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././t3/i.ael, 41 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././t3/j.ael, 43 chars
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+Executed ast_context_find_or_create(conts, name=a, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=b, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=c, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=d, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=e, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=qq, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=f, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=g, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=h, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=i, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=j, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=w, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=z, registrar=pbx_ael);
 Executed ast_add_extension2(context=a, rep=0, exten=134, priority=1, label=(null), callerid=(null), appl=NoOp, data=hi there, a, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=b, rep=0, exten=456, priority=1, label=(null), callerid=(null), appl=NoOp, data=hithere, b, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=c, rep=0, exten=567, priority=1, label=(null), callerid=(null), appl=NoOp, data=hi there, c, FREE, registrar=pbx_ael);
@@ -47,9 +46,9 @@ Executed ast_add_extension2(context=j, rep=0, exten=567, priority=1, label=(null
 Executed ast_add_extension2(context=w, rep=0, exten=890, priority=1, label=(null), callerid=(null), appl=NoOp, data=hi there, w, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=z, rep=0, exten=123, priority=1, label=(null), callerid=(null), appl=NoOp, data=hi there, z, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=z, rep=0, exten=124, priority=1, label=(null), callerid=(null), appl=NoOp, data=hi there, z, FREE, registrar=pbx_ael);
-LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 Executed ast_merge_contexts_and_delete();
-LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 Executed ast_walk_contexts();
-LOG: lev:2 file:pbx_ael.c  line:939 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:527 func: main  13 contexts, 13 extensions, 14 priorities
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  13 contexts, 13 extensions, 14 priorities
diff --git a/pbx/ael/ael-test/ref.ael-ntest9 b/pbx/ael/ael-test/ref.ael-ntest9
index 1fe34ecebc..e40790e593 100644
--- a/pbx/ael/ael-test/ref.ael-ntest9
+++ b/pbx/ael/ael-test/ref.ael-ntest9
@@ -5,20 +5,19 @@
 
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:3910 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:3917 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3925 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3928 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-Executed ast_context_create(conts, name=workext, registrar=pbx_ael);
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+Executed ast_context_find_or_create(conts, name=workext, registrar=pbx_ael);
 Executed ast_context_add_ignorepat2(con, value=8, registrar=pbx_ael);
 Executed ast_context_add_ignorepat2(con, value=9, registrar=pbx_ael);
 Executed ast_add_extension2(context=workext, rep=0, exten=793, priority=1, label=(null), callerid=(null), appl=Set, data=QUERYSTRING=SELECT\ foo\,\ bar\ FROM\ foobar, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=workext, rep=0, exten=793, priority=2, label=(null), callerid=(null), appl=Verbose, data=2|${QUERYSTRING}, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=workext, rep=0, exten=793, priority=3, label=(null), callerid=(null), appl=Set, data=query=$["SELECT foo\, bar FROM foobar" ], FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=workext, rep=0, exten=793, priority=4, label=(null), callerid=(null), appl=Verbose, data=2|${query}, FREE, registrar=pbx_ael);
-LOG: lev:2 file:pbx_ael.c  line:3930 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 Executed ast_merge_contexts_and_delete();
-LOG: lev:2 file:pbx_ael.c  line:3933 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 Executed ast_walk_contexts();
-LOG: lev:2 file:pbx_ael.c  line:3936 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:479 func: main  1 contexts, 1 extensions, 4 priorities
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  1 contexts, 1 extensions, 4 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test1 b/pbx/ael/ael-test/ref.ael-test1
index 4b4a866b8c..5538514fed 100644
--- a/pbx/ael/ael-test/ref.ael-test1
+++ b/pbx/ael/ael-test/ref.ael-test1
@@ -2,18 +2,17 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:913 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 2-16: The macro testdial does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 18-25: The macro exten-gen does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:1360 func: check_goto  Warning: file ./extensions.ael, line 21-21: It's bad form to have a goto in a macro to a target outside the macro!
-LOG: lev:3 file:pval.c  line:1360 func: check_goto  Warning: file ./extensions.ael, line 23-23: It's bad form to have a goto in a macro to a target outside the macro!
-LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 58-58: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:920 func: check_dow  Warning: file ./extensions.ael, line 67-67: The day (m0n) must be one of 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', or 'sat'!
-LOG: lev:3 file:pval.c  line:878 func: check_timerange  Warning: file ./extensions.ael, line 78-78: The end time (25:00) is out of range!
-LOG: lev:2 file:pbx_ael.c  line:931 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:939 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:527 func: main  5 contexts, 16 extensions, 157 priorities
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 2-16: The macro testdial does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 18-25: The macro exten-gen does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:1362 func: check_goto  Warning: file ./extensions.ael, line 21-21: It's bad form to have a goto in a macro to a target outside the macro!
+LOG: lev:3 file:pval.c  line:1362 func: check_goto  Warning: file ./extensions.ael, line 23-23: It's bad form to have a goto in a macro to a target outside the macro!
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 58-58: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:922 func: check_dow  Warning: file ./extensions.ael, line 67-67: The day (m0n) must be one of 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', or 'sat'!
+LOG: lev:3 file:pval.c  line:880 func: check_timerange  Warning: file ./extensions.ael, line 78-78: The end time (25:00) is out of range!
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  5 contexts, 16 extensions, 157 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test11 b/pbx/ael/ael-test/ref.ael-test11
index 6f1e062e46..c47f2b8bf3 100644
--- a/pbx/ael/ael-test/ref.ael-test11
+++ b/pbx/ael/ael-test/ref.ael-test11
@@ -2,13 +2,12 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:1680 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:1687 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:1695 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:4 file:pval.c  line:1143 func: check_label  Error: file ./extensions.ael, line 13-13: Duplicate label lab1! Previously defined at file ./extensions.ael, line 8.
-LOG: lev:3 file:pval.c  line:2280 func: check_switch_expr  Warning: file ./extensions.ael, line 32-32: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2280 func: check_switch_expr  Warning: file ./extensions.ael, line 44-44: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2280 func: check_switch_expr  Warning: file ./extensions.ael, line 47-47: A default case was automatically added to the switch.
-LOG: lev:4 file:pval.c  line:1143 func: check_label  Error: file ./extensions.ael, line 49-49: Duplicate label ptr1! Previously defined at file ./extensions.ael, line 33.
-LOG: lev:4 file:pbx_ael.c  line:1708 func: pbx_load_module  Sorry, but 0 syntax errors and 2 semantic errors were detected. It doesn't make sense to compile.
-LOG: lev:4 file:ael2_parse  line:521 func: main  0 contexts, 0 extensions, 0 priorities
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:4 file:pval.c  line:1147 func: check_label  Error: file ./extensions.ael, line 13-13: Duplicate label lab1! Previously defined at file ./extensions.ael, line 8.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 32-32: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 44-44: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 47-47: A default case was automatically added to the switch.
+LOG: lev:4 file:pval.c  line:1147 func: check_label  Error: file ./extensions.ael, line 49-49: Duplicate label ptr1! Previously defined at file ./extensions.ael, line 33.
+LOG: lev:4 file:pbx_ael.c  line:139 func: pbx_load_module  Sorry, but 0 syntax errors and 2 semantic errors were detected. It doesn't make sense to compile.
+LOG: lev:4 file:ael2_parse  line:531 func: main  0 contexts, 0 extensions, 0 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test14 b/pbx/ael/ael-test/ref.ael-test14
index 6c0d3770ab..2cd4ed1b1d 100644
--- a/pbx/ael/ael-test/ref.ael-test14
+++ b/pbx/ael/ael-test/ref.ael-test14
@@ -2,11 +2,10 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:1680 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:1687 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:1695 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:2280 func: check_switch_expr  Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch.
-LOG: lev:4 file:pval.c  line:1067 func: check_continue  Error: file ./extensions.ael, line 15-15: 'continue' not in 'for' or 'while' statement!
-LOG: lev:4 file:pval.c  line:1048 func: check_break  Error: file ./extensions.ael, line 17-17: 'break' not in switch, for, or while statement!
-LOG: lev:4 file:pbx_ael.c  line:1708 func: pbx_load_module  Sorry, but 0 syntax errors and 2 semantic errors were detected. It doesn't make sense to compile.
-LOG: lev:4 file:ael2_parse  line:521 func: main  0 contexts, 0 extensions, 0 priorities
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch.
+LOG: lev:4 file:pval.c  line:1071 func: check_continue  Error: file ./extensions.ael, line 15-15: 'continue' not in 'for' or 'while' statement!
+LOG: lev:4 file:pval.c  line:1052 func: check_break  Error: file ./extensions.ael, line 17-17: 'break' not in switch, for, or while statement!
+LOG: lev:4 file:pbx_ael.c  line:139 func: pbx_load_module  Sorry, but 0 syntax errors and 2 semantic errors were detected. It doesn't make sense to compile.
+LOG: lev:4 file:ael2_parse  line:531 func: main  0 contexts, 0 extensions, 0 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test15 b/pbx/ael/ael-test/ref.ael-test15
index 892e516494..9950685633 100644
--- a/pbx/ael/ael-test/ref.ael-test15
+++ b/pbx/ael/ael-test/ref.ael-test15
@@ -3,11 +3,10 @@
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
 LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:120 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:3905 func: ast_compile_ael2  Warning: file ./extensions.ael, line 8-13: Empty Extension!
-LOG: lev:2 file:pbx_ael.c  line:133 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:136 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:499 func: main  1 contexts, 0 extensions, 0 priorities
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:4070 func: ast_compile_ael2  Warning: file ./extensions.ael, line 8-13: Empty Extension!
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  1 contexts, 0 extensions, 0 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test16 b/pbx/ael/ael-test/ref.ael-test16
index 9bbca8beeb..f43257d463 100644
--- a/pbx/ael/ael-test/ref.ael-test16
+++ b/pbx/ael/ael-test/ref.ael-test16
@@ -2,12 +2,11 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:913 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:931 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:3784 func: add_extensions  This file is Empty!
-LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:939 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:543 func: main  1 contexts, 0 extensions, 0 priorities
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:3786 func: add_extensions  This file is Empty!
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  1 contexts, 0 extensions, 0 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test18 b/pbx/ael/ael-test/ref.ael-test18
index a0972f55ee..072135ef25 100644
--- a/pbx/ael/ael-test/ref.ael-test18
+++ b/pbx/ael/ael-test/ref.ael-test18
@@ -2,11 +2,10 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:4069 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:4076 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:4084 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:4087 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:4089 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:4092 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:4095 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:527 func: main  1 contexts, 7 extensions, 27 priorities
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  1 contexts, 7 extensions, 27 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test19 b/pbx/ael/ael-test/ref.ael-test19
index f0ab667177..e093d75e56 100644
--- a/pbx/ael/ael-test/ref.ael-test19
+++ b/pbx/ael/ael-test/ref.ael-test19
@@ -2,18 +2,17 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:913 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:2298 func: check_context_names  Warning: file ./extensions.ael, line 49-62: The context name (incoming) is also declared in file ./extensions.ael, line 62-69! (and neither is marked 'extend')
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 71-175: The macro std-priv-exten does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 245-246: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2424 func: check_pval_item  Warning: file ./extensions.ael, line 312-312: macro call to non-existent funcA! (Not even in the extensions.conf stuff!)
-LOG: lev:3 file:pval.c  line:2424 func: check_pval_item  Warning: file ./extensions.ael, line 313-313: macro call to non-existent funcD! (Not even in the extensions.conf stuff!)
-LOG: lev:3 file:pval.c  line:1344 func: check_goto  Warning: file ./extensions.ael, line 319-319: goto:  Couldn't find goto target test5|s|1, not even in extensions.conf!
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 363-366: The macro dialoutpstn does not end with a return; I will insert one.
-LOG: lev:2 file:pbx_ael.c  line:931 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:939 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:543 func: main  13 contexts, 57 extensions, 188 priorities
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:2300 func: check_context_names  Warning: file ./extensions.ael, line 49-62: The context name (incoming) is also declared in file ./extensions.ael, line 62-69! (and neither is marked 'extend')
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 71-175: The macro std-priv-exten does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 245-246: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2426 func: check_pval_item  Warning: file ./extensions.ael, line 312-312: macro call to non-existent funcA! (Not even in the extensions.conf stuff!)
+LOG: lev:3 file:pval.c  line:2426 func: check_pval_item  Warning: file ./extensions.ael, line 313-313: macro call to non-existent funcD! (Not even in the extensions.conf stuff!)
+LOG: lev:3 file:pval.c  line:1346 func: check_goto  Warning: file ./extensions.ael, line 319-319: goto:  Couldn't find goto target test5|s|1, not even in extensions.conf!
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 363-366: The macro dialoutpstn does not end with a return; I will insert one.
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  13 contexts, 57 extensions, 188 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test2 b/pbx/ael/ael-test/ref.ael-test2
index 1a426c4d95..892b63464a 100644
--- a/pbx/ael/ael-test/ref.ael-test2
+++ b/pbx/ael/ael-test/ref.ael-test2
@@ -2,28 +2,27 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:913 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././apptest.ael2, 3474 chars
-LOG: lev:3 file:ael.y  line:542 func: ael_yyparse  ==== File: ././apptest.ael2, Line 46, Cols: 8-11: Suggestion: Use the goto statement instead of the Goto() application call in AEL.
-LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 35-35: application call to EndWhile affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 37-37: application call to ExecIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 38-38: application call to ExecIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 44-44: application call to Gosub affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 45-45: application call to GosubIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:1344 func: check_goto  Warning: file ././apptest.ael2, line 46-46: goto:  Couldn't find goto target cont|exten|prior, not even in extensions.conf!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 47-47: application call to GotoIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 48-48: application call to GotoIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 58-58: application call to Macro affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2510 func: check_pval_item  Warning: file ././apptest.ael2, line 59-59: I am converting the MacroExit call here to a return statement.
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 60-60: application call to MacroIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 85-85: application call to Random affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 94-94: application call to Return affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 119-119: application call to StackPop affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 141-141: application call to While affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:2 file:pbx_ael.c  line:931 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:939 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:527 func: main  1 contexts, 1 extensions, 142 priorities
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././apptest.ael2, 3474 chars
+LOG: lev:3 file:ael.y  line:546 func: ael_yyparse  ==== File: ././apptest.ael2, Line 46, Cols: 8-11: Suggestion: Use the goto statement instead of the Goto() application call in AEL.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 35-35: application call to EndWhile affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 37-37: application call to ExecIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 38-38: application call to ExecIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 44-44: application call to Gosub affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 45-45: application call to GosubIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:1346 func: check_goto  Warning: file ././apptest.ael2, line 46-46: goto:  Couldn't find goto target cont|exten|prior, not even in extensions.conf!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 47-47: application call to GotoIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 48-48: application call to GotoIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 58-58: application call to Macro affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2512 func: check_pval_item  Warning: file ././apptest.ael2, line 59-59: I am converting the MacroExit call here to a return statement.
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 60-60: application call to MacroIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 85-85: application call to Random affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 94-94: application call to Return affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 119-119: application call to StackPop affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 141-141: application call to While affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  1 contexts, 1 extensions, 142 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test20 b/pbx/ael/ael-test/ref.ael-test20
index 5b424e8ae5..065281f942 100644
--- a/pbx/ael/ael-test/ref.ael-test20
+++ b/pbx/ael/ael-test/ref.ael-test20
@@ -2,11 +2,10 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:3915 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:3922 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3930 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3933 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3935 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3938 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3941 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:512 func: main  1 contexts, 1 extensions, 1 priorities
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  1 contexts, 1 extensions, 1 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test3 b/pbx/ael/ael-test/ref.ael-test3
index 635b87df51..5ff89ef8b1 100644
--- a/pbx/ael/ael-test/ref.ael-test3
+++ b/pbx/ael/ael-test/ref.ael-test3
@@ -2,99 +2,98 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:913 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././include1.ael2, 78 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././include2.ael2, 98 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././include3.ael2, 57 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././include5.ael2, 56 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././include4.ael2, 87 chars
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././telemarket_torture.ael2, 28036 chars
-LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 14-34: The macro std-exten does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:1360 func: check_goto  Warning: file ./extensions.ael, line 17-17: It's bad form to have a goto in a macro to a target outside the macro!
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 36-59: The macro std-priv-exten_1 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 62-85: The macro std-priv-exten_2 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 88-111: The macro std-priv-exten_3 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 114-137: The macro std-priv-exten_4 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 140-163: The macro std-priv-exten_5 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 166-189: The macro std-priv-exten_6 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 192-215: The macro std-priv-exten_7 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 218-241: The macro std-priv-exten_8 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 244-267: The macro std-priv-exten_9 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 270-293: The macro std-priv-exten_10 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 296-319: The macro std-priv-exten_11 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 322-345: The macro std-priv-exten_12 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 348-371: The macro std-priv-exten_13 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 374-397: The macro std-priv-exten_14 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 400-423: The macro std-priv-exten_15 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 426-449: The macro std-priv-exten_16 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 452-475: The macro std-priv-exten_17 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 478-501: The macro std-priv-exten_18 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 504-527: The macro std-priv-exten_19 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 530-553: The macro std-priv-exten_20 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 556-579: The macro std-priv-exten_21 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 582-605: The macro std-priv-exten_22 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 608-631: The macro std-priv-exten_23 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 634-657: The macro std-priv-exten_24 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 660-683: The macro std-priv-exten_25 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 686-709: The macro std-priv-exten_26 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 712-735: The macro std-priv-exten_27 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 738-761: The macro std-priv-exten_28 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 764-787: The macro std-priv-exten_29 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 790-813: The macro std-priv-exten_30 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 816-839: The macro std-priv-exten_31 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 842-865: The macro std-priv-exten_32 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 868-891: The macro std-priv-exten_33 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 894-917: The macro std-priv-exten_34 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 920-943: The macro std-priv-exten_35 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 946-969: The macro std-priv-exten_36 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 972-995: The macro std-priv-exten_37 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 998-1021: The macro std-priv-exten_38 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1024-1047: The macro std-priv-exten_39 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1050-1073: The macro std-priv-exten_40 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1076-1099: The macro std-priv-exten_41 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1102-1125: The macro std-priv-exten_42 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1128-1151: The macro std-priv-exten_43 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1154-1177: The macro std-priv-exten_44 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1180-1203: The macro std-priv-exten_45 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1206-1229: The macro std-priv-exten_46 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1232-1255: The macro std-priv-exten_47 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1258-1281: The macro std-priv-exten_48 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1284-1307: The macro std-priv-exten_49 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1310-1333: The macro std-priv-exten_50 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1336-1359: The macro std-priv-exten_51 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1362-1385: The macro std-priv-exten_52 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1388-1411: The macro std-priv-exten_53 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1414-1437: The macro std-priv-exten_54 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1440-1463: The macro std-priv-exten_55 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1466-1489: The macro std-priv-exten_56 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1492-1515: The macro std-priv-exten_57 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1518-1541: The macro std-priv-exten_58 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1544-1567: The macro std-priv-exten_59 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1570-1593: The macro std-priv-exten_60 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1596-1619: The macro std-priv-exten_61 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1622-1645: The macro std-priv-exten_62 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1648-1671: The macro std-priv-exten_63 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1674-1697: The macro std-priv-exten_64 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1700-1723: The macro std-priv-exten_65 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1726-1749: The macro std-priv-exten_66 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1752-1775: The macro std-priv-exten_67 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1778-1801: The macro std-priv-exten_68 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1804-1827: The macro std-priv-exten_69 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1830-1853: The macro std-priv-exten_70 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1856-1879: The macro std-priv-exten_71 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1882-1905: The macro std-priv-exten_72 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1908-1931: The macro std-priv-exten_73 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1934-1957: The macro std-priv-exten does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1959-1995: The macro fillcidname does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 1997-2015: The macro ciddial does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 2017-2028: The macro ciddial3 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 2030-2048: The macro ciddial2 does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 2050-2065: The macro callerid-liar does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 2067-2072: The macro callerid-bad does not end with a return; I will insert one.
-LOG: lev:2 file:pbx_ael.c  line:931 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:939 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:527 func: main  172 contexts, 934 extensions, 2482 priorities
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include1.ael2, 78 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include2.ael2, 98 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include3.ael2, 57 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include5.ael2, 56 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include4.ael2, 87 chars
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././telemarket_torture.ael2, 28036 chars
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 14-34: The macro std-exten does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:1362 func: check_goto  Warning: file ./extensions.ael, line 17-17: It's bad form to have a goto in a macro to a target outside the macro!
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 36-59: The macro std-priv-exten_1 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 62-85: The macro std-priv-exten_2 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 88-111: The macro std-priv-exten_3 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 114-137: The macro std-priv-exten_4 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 140-163: The macro std-priv-exten_5 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 166-189: The macro std-priv-exten_6 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 192-215: The macro std-priv-exten_7 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 218-241: The macro std-priv-exten_8 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 244-267: The macro std-priv-exten_9 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 270-293: The macro std-priv-exten_10 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 296-319: The macro std-priv-exten_11 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 322-345: The macro std-priv-exten_12 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 348-371: The macro std-priv-exten_13 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 374-397: The macro std-priv-exten_14 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 400-423: The macro std-priv-exten_15 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 426-449: The macro std-priv-exten_16 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 452-475: The macro std-priv-exten_17 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 478-501: The macro std-priv-exten_18 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 504-527: The macro std-priv-exten_19 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 530-553: The macro std-priv-exten_20 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 556-579: The macro std-priv-exten_21 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 582-605: The macro std-priv-exten_22 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 608-631: The macro std-priv-exten_23 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 634-657: The macro std-priv-exten_24 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 660-683: The macro std-priv-exten_25 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 686-709: The macro std-priv-exten_26 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 712-735: The macro std-priv-exten_27 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 738-761: The macro std-priv-exten_28 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 764-787: The macro std-priv-exten_29 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 790-813: The macro std-priv-exten_30 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 816-839: The macro std-priv-exten_31 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 842-865: The macro std-priv-exten_32 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 868-891: The macro std-priv-exten_33 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 894-917: The macro std-priv-exten_34 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 920-943: The macro std-priv-exten_35 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 946-969: The macro std-priv-exten_36 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 972-995: The macro std-priv-exten_37 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 998-1021: The macro std-priv-exten_38 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1024-1047: The macro std-priv-exten_39 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1050-1073: The macro std-priv-exten_40 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1076-1099: The macro std-priv-exten_41 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1102-1125: The macro std-priv-exten_42 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1128-1151: The macro std-priv-exten_43 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1154-1177: The macro std-priv-exten_44 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1180-1203: The macro std-priv-exten_45 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1206-1229: The macro std-priv-exten_46 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1232-1255: The macro std-priv-exten_47 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1258-1281: The macro std-priv-exten_48 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1284-1307: The macro std-priv-exten_49 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1310-1333: The macro std-priv-exten_50 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1336-1359: The macro std-priv-exten_51 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1362-1385: The macro std-priv-exten_52 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1388-1411: The macro std-priv-exten_53 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1414-1437: The macro std-priv-exten_54 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1440-1463: The macro std-priv-exten_55 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1466-1489: The macro std-priv-exten_56 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1492-1515: The macro std-priv-exten_57 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1518-1541: The macro std-priv-exten_58 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1544-1567: The macro std-priv-exten_59 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1570-1593: The macro std-priv-exten_60 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1596-1619: The macro std-priv-exten_61 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1622-1645: The macro std-priv-exten_62 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1648-1671: The macro std-priv-exten_63 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1674-1697: The macro std-priv-exten_64 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1700-1723: The macro std-priv-exten_65 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1726-1749: The macro std-priv-exten_66 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1752-1775: The macro std-priv-exten_67 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1778-1801: The macro std-priv-exten_68 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1804-1827: The macro std-priv-exten_69 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1830-1853: The macro std-priv-exten_70 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1856-1879: The macro std-priv-exten_71 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1882-1905: The macro std-priv-exten_72 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1908-1931: The macro std-priv-exten_73 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1934-1957: The macro std-priv-exten does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1959-1995: The macro fillcidname does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1997-2015: The macro ciddial does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 2017-2028: The macro ciddial3 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 2030-2048: The macro ciddial2 does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 2050-2065: The macro callerid-liar does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 2067-2072: The macro callerid-bad does not end with a return; I will insert one.
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  172 contexts, 934 extensions, 2482 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test4 b/pbx/ael/ael-test/ref.ael-test4
index 1a426c4d95..892b63464a 100644
--- a/pbx/ael/ael-test/ref.ael-test4
+++ b/pbx/ael/ael-test/ref.ael-test4
@@ -2,28 +2,27 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:913 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:ael.flex  line:659 func: setup_filestack    --Read in included file ././apptest.ael2, 3474 chars
-LOG: lev:3 file:ael.y  line:542 func: ael_yyparse  ==== File: ././apptest.ael2, Line 46, Cols: 8-11: Suggestion: Use the goto statement instead of the Goto() application call in AEL.
-LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 35-35: application call to EndWhile affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 37-37: application call to ExecIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 38-38: application call to ExecIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 44-44: application call to Gosub affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 45-45: application call to GosubIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:1344 func: check_goto  Warning: file ././apptest.ael2, line 46-46: goto:  Couldn't find goto target cont|exten|prior, not even in extensions.conf!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 47-47: application call to GotoIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 48-48: application call to GotoIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 58-58: application call to Macro affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2510 func: check_pval_item  Warning: file ././apptest.ael2, line 59-59: I am converting the MacroExit call here to a return statement.
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 60-60: application call to MacroIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 85-85: application call to Random affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 94-94: application call to Return affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 119-119: application call to StackPop affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:3 file:pval.c  line:2505 func: check_pval_item  Warning: file ././apptest.ael2, line 141-141: application call to While affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
-LOG: lev:2 file:pbx_ael.c  line:931 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:939 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:527 func: main  1 contexts, 1 extensions, 142 priorities
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././apptest.ael2, 3474 chars
+LOG: lev:3 file:ael.y  line:546 func: ael_yyparse  ==== File: ././apptest.ael2, Line 46, Cols: 8-11: Suggestion: Use the goto statement instead of the Goto() application call in AEL.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 35-35: application call to EndWhile affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 37-37: application call to ExecIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 38-38: application call to ExecIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 44-44: application call to Gosub affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 45-45: application call to GosubIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:1346 func: check_goto  Warning: file ././apptest.ael2, line 46-46: goto:  Couldn't find goto target cont|exten|prior, not even in extensions.conf!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 47-47: application call to GotoIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 48-48: application call to GotoIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 58-58: application call to Macro affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2512 func: check_pval_item  Warning: file ././apptest.ael2, line 59-59: I am converting the MacroExit call here to a return statement.
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 60-60: application call to MacroIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 85-85: application call to Random affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 94-94: application call to Return affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 119-119: application call to StackPop affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:3 file:pval.c  line:2507 func: check_pval_item  Warning: file ././apptest.ael2, line 141-141: application call to While affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  1 contexts, 1 extensions, 142 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test5 b/pbx/ael/ael-test/ref.ael-test5
index de4a6c0c2e..79c3274133 100644
--- a/pbx/ael/ael-test/ref.ael-test5
+++ b/pbx/ael/ael-test/ref.ael-test5
@@ -2,14 +2,13 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:913 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 130-183: The macro stdexten does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 185-192: The macro uvm does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 194-201: The macro bvm does not end with a return; I will insert one.
-LOG: lev:2 file:pbx_ael.c  line:931 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:939 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:527 func: main  38 contexts, 91 extensions, 493 priorities
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 130-183: The macro stdexten does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 185-192: The macro uvm does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 194-201: The macro bvm does not end with a return; I will insert one.
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  38 contexts, 91 extensions, 493 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test6 b/pbx/ael/ael-test/ref.ael-test6
index 45a717fb4d..968c7c71e9 100644
--- a/pbx/ael/ael-test/ref.ael-test6
+++ b/pbx/ael/ael-test/ref.ael-test6
@@ -2,24 +2,23 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:1680 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:1687 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:4 file:ael.flex  line:277 func: ael_yylex  File=./extensions.ael, line=165, column=49: Mismatched '}' in expression!
-LOG: lev:4 file:ael.y  line:764 func: ael_yyerror  ==== File: ./extensions.ael, Line 165, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')'
-LOG: lev:4 file:ael.flex  line:277 func: ael_yylex  File=./extensions.ael, line=174, column=49: Mismatched '}' in expression!
-LOG: lev:4 file:ael.y  line:764 func: ael_yyerror  ==== File: ./extensions.ael, Line 174, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')'
-LOG: lev:4 file:ael.flex  line:277 func: ael_yylex  File=./extensions.ael, line=222, column=41: Mismatched '}' in expression!
-LOG: lev:4 file:ael.y  line:764 func: ael_yyerror  ==== File: ./extensions.ael, Line 222, Cols: 43-43: Error: syntax error, unexpected '=', expecting ')'
-LOG: lev:4 file:ael.y  line:764 func: ael_yyerror  ==== File: ./extensions.ael, Line 291, Cols: 21-28: Error: syntax error, unexpected word, expecting '(' or ';' or '=' or ':'
-LOG: lev:4 file:ael.y  line:764 func: ael_yyerror  ==== File: ./extensions.ael, Line 291, Cols: 32-32: Error: syntax error, unexpected '|', expecting '(' or ';' or '=' or ':'
-LOG: lev:2 file:pbx_ael.c  line:1695 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:669 func: check_macro_returns  Warning: file ./extensions.ael, line 116-125: The macro dialout does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:669 func: check_macro_returns  Warning: file ./extensions.ael, line 129-182: The macro stdexten does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:669 func: check_macro_returns  Warning: file ./extensions.ael, line 184-191: The macro uvm does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:669 func: check_macro_returns  Warning: file ./extensions.ael, line 193-200: The macro bvm does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:669 func: check_macro_returns  Warning: file ./extensions.ael, line 202-207: The macro checkdnd does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:669 func: check_macro_returns  Warning: file ./extensions.ael, line 209-216: The macro checkcf does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:669 func: check_macro_returns  Warning: file ./extensions.ael, line 218-230: The macro checkcfb does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:669 func: check_macro_returns  Warning: file ./extensions.ael, line 688-694: The macro check-psd-exists does not end with a return; I will insert one.
-LOG: lev:4 file:pbx_ael.c  line:1708 func: pbx_load_module  Sorry, but 5 syntax errors and 0 semantic errors were detected. It doesn't make sense to compile.
-LOG: lev:4 file:ael2_parse  line:523 func: main  0 contexts, 0 extensions, 0 priorities
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:4 file:ael.flex  line:288 func: ael_yylex  File=./extensions.ael, line=165, column=49: Mismatched '}' in expression!
+LOG: lev:4 file:ael.y  line:772 func: ael_yyerror  ==== File: ./extensions.ael, Line 165, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')'
+LOG: lev:4 file:ael.flex  line:288 func: ael_yylex  File=./extensions.ael, line=174, column=49: Mismatched '}' in expression!
+LOG: lev:4 file:ael.y  line:772 func: ael_yyerror  ==== File: ./extensions.ael, Line 174, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')'
+LOG: lev:4 file:ael.flex  line:288 func: ael_yylex  File=./extensions.ael, line=222, column=41: Mismatched '}' in expression!
+LOG: lev:4 file:ael.y  line:772 func: ael_yyerror  ==== File: ./extensions.ael, Line 222, Cols: 43-43: Error: syntax error, unexpected '=', expecting ')'
+LOG: lev:4 file:ael.y  line:772 func: ael_yyerror  ==== File: ./extensions.ael, Line 291, Cols: 21-28: Error: syntax error, unexpected word, expecting '(' or ';' or '=' or ':'
+LOG: lev:4 file:ael.y  line:772 func: ael_yyerror  ==== File: ./extensions.ael, Line 291, Cols: 32-32: Error: syntax error, unexpected '|', expecting '(' or ';' or '=' or ':'
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 116-125: The macro dialout does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 129-182: The macro stdexten does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 184-191: The macro uvm does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 193-200: The macro bvm does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 202-207: The macro checkdnd does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 209-216: The macro checkcf does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 218-230: The macro checkcfb does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 688-694: The macro check-psd-exists does not end with a return; I will insert one.
+LOG: lev:4 file:pbx_ael.c  line:139 func: pbx_load_module  Sorry, but 5 syntax errors and 0 semantic errors were detected. It doesn't make sense to compile.
+LOG: lev:4 file:ael2_parse  line:531 func: main  0 contexts, 0 extensions, 0 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test7 b/pbx/ael/ael-test/ref.ael-test7
index 10ab30ddf1..69f0c9f919 100644
--- a/pbx/ael/ael-test/ref.ael-test7
+++ b/pbx/ael/ael-test/ref.ael-test7
@@ -2,19 +2,18 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:1680 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:1687 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:1695 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:669 func: check_macro_returns  Warning: file ./extensions.ael, line 22-42: The macro stdexten does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:669 func: check_macro_returns  Warning: file ./extensions.ael, line 44-49: The macro announce_minutes does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:669 func: check_macro_returns  Warning: file ./extensions.ael, line 59-89: The macro checkanddial does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:669 func: check_macro_returns  Warning: file ./extensions.ael, line 91-100: The macro trunkdial does not end with a return; I will insert one.
-LOG: lev:4 file:pval.c  line:2465 func: check_pval_item  Error: file ./extensions.ael, line 98-98: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
-LOG: lev:3 file:pval.c  line:669 func: check_macro_returns  Warning: file ./extensions.ael, line 102-112: The macro checklocal does not end with a return; I will insert one.
-LOG: lev:4 file:pval.c  line:2465 func: check_pval_item  Error: file ./extensions.ael, line 107-107: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
-LOG: lev:3 file:pval.c  line:669 func: check_macro_returns  Warning: file ./extensions.ael, line 114-119: The macro autodial does not end with a return; I will insert one.
-LOG: lev:4 file:pval.c  line:2465 func: check_pval_item  Error: file ./extensions.ael, line 284-284: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
-LOG: lev:4 file:pval.c  line:2465 func: check_pval_item  Error: file ./extensions.ael, line 287-287: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
-LOG: lev:3 file:pval.c  line:2423 func: check_pval_item  Warning: file ./extensions.ael, line 452-452: macro call to non-existent std-exten-ael! (Not even in the extensions.conf stuff!)
-LOG: lev:4 file:pbx_ael.c  line:1708 func: pbx_load_module  Sorry, but 0 syntax errors and 4 semantic errors were detected. It doesn't make sense to compile.
-LOG: lev:4 file:ael2_parse  line:523 func: main  0 contexts, 0 extensions, 0 priorities
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 22-42: The macro stdexten does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 44-49: The macro announce_minutes does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 59-89: The macro checkanddial does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 91-100: The macro trunkdial does not end with a return; I will insert one.
+LOG: lev:4 file:pval.c  line:2468 func: check_pval_item  Error: file ./extensions.ael, line 98-98: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 102-112: The macro checklocal does not end with a return; I will insert one.
+LOG: lev:4 file:pval.c  line:2468 func: check_pval_item  Error: file ./extensions.ael, line 107-107: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
+LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 114-119: The macro autodial does not end with a return; I will insert one.
+LOG: lev:4 file:pval.c  line:2468 func: check_pval_item  Error: file ./extensions.ael, line 284-284: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
+LOG: lev:4 file:pval.c  line:2468 func: check_pval_item  Error: file ./extensions.ael, line 287-287: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
+LOG: lev:3 file:pval.c  line:2426 func: check_pval_item  Warning: file ./extensions.ael, line 452-452: macro call to non-existent std-exten-ael! (Not even in the extensions.conf stuff!)
+LOG: lev:4 file:pbx_ael.c  line:139 func: pbx_load_module  Sorry, but 0 syntax errors and 4 semantic errors were detected. It doesn't make sense to compile.
+LOG: lev:4 file:ael2_parse  line:531 func: main  0 contexts, 0 extensions, 0 priorities
diff --git a/pbx/ael/ael-test/ref.ael-test8 b/pbx/ael/ael-test/ref.ael-test8
index 1793d2f4c3..4e5d0aa376 100644
--- a/pbx/ael/ael-test/ref.ael-test8
+++ b/pbx/ael/ael-test/ref.ael-test8
@@ -2,11 +2,10 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:913 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:931 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:939 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:527 func: main  1 contexts, 7 extensions, 17 priorities
+LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:531 func: main  1 contexts, 7 extensions, 17 priorities
diff --git a/res/ael/ael.flex b/res/ael/ael.flex
index b67309a46f..5e32e8d39d 100644
--- a/res/ael/ael.flex
+++ b/res/ael/ael.flex
@@ -33,7 +33,7 @@
  * add option noyywrap to remove it.
  */
 %option prefix="ael_yy"
-%option noyywrap
+%option noyywrap 8bit
 
 /* batch gives a bit more performance if we are using it in
  * a non-interactive mode. We probably don't care much.
@@ -178,6 +178,8 @@ NOARGG		([^(),\{\}\[\]]|\\[,()\[\]\{\}])*
 
 NOSEMIC		([^;()\{\}\[\]]|\\[;()\[\]\{\}])*
 
+HIBIT		[\x80-\xff]
+
 %%
 
 \{		{ STORE_POS; return LC;}
@@ -233,7 +235,7 @@ includes	{ STORE_POS; return KW_INCLUDES;}
 [ ]+		{ my_col += yyleng; }
 [\t]+		{ my_col += (yyleng*8)-(my_col%8); }
 
-[-a-zA-Z0-9'"_/.\<\>\*\+!$#\[\]][-a-zA-Z0-9'"_/.!\*\+\<\>\{\}$#\[\]]*	{
+([-a-zA-Z0-9'"_/.\<\>\*\\\+!$#\[\]]|{HIBIT})([-a-zA-Z0-9'"_/.!\*\\\+\<\>\{\}$#\[\]]|{HIBIT})*	{
 		STORE_POS;
 		yylval->str = strdup(yytext);
 		prev_word = yylval->str;
diff --git a/res/ael/ael.tab.c b/res/ael/ael.tab.c
index ccd8fa4e81..aa1ec0fadc 100644
--- a/res/ael/ael.tab.c
+++ b/res/ael/ael.tab.c
@@ -494,16 +494,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  17
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   321
+#define YYLAST   327
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  44
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  56
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  141
+#define YYNRULES  142
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  284
+#define YYNSTATES  288
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -556,17 +556,17 @@ static const yytype_uint16 yyprhs[] =
       21,    23,    25,    32,    34,    35,    37,    40,    43,    52,
       57,    58,    61,    64,    65,    71,    72,    79,    80,    82,
       86,    89,    90,    93,    96,    98,   100,   102,   104,   106,
-     108,   110,   113,   115,   120,   124,   129,   137,   146,   147,
-     150,   153,   159,   161,   169,   170,   175,   178,   181,   186,
-     188,   191,   193,   196,   200,   204,   206,   209,   213,   215,
-     218,   222,   228,   232,   234,   236,   240,   244,   247,   248,
-     249,   250,   263,   267,   269,   273,   276,   279,   280,   286,
-     289,   292,   295,   299,   301,   304,   305,   307,   311,   315,
-     321,   327,   333,   339,   340,   343,   346,   351,   352,   358,
-     362,   363,   367,   371,   374,   376,   377,   379,   380,   384,
-     385,   388,   393,   397,   402,   403,   406,   408,   410,   416,
-     421,   426,   427,   431,   437,   440,   442,   446,   449,   453,
-     456,   461
+     108,   110,   113,   115,   120,   124,   130,   135,   143,   152,
+     153,   156,   159,   165,   167,   175,   176,   181,   184,   187,
+     192,   194,   197,   199,   202,   206,   210,   212,   215,   219,
+     221,   224,   228,   234,   238,   240,   242,   246,   250,   253,
+     254,   255,   256,   269,   273,   275,   279,   282,   285,   286,
+     292,   295,   298,   301,   305,   307,   310,   311,   313,   317,
+     321,   327,   333,   339,   345,   346,   349,   352,   357,   358,
+     364,   368,   369,   373,   377,   380,   382,   383,   385,   386,
+     390,   391,   394,   399,   403,   408,   409,   412,   414,   416,
+     422,   427,   432,   433,   437,   443,   446,   448,   452,   455,
+     459,   462,   467
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -584,41 +584,42 @@ static const yytype_int8 yyrhs[] =
       60,    59,    -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,    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,    11,    71,    11,    71,    -1,    43,
-      -1,    64,    13,    71,    13,    71,    13,    71,    -1,    -1,
-       6,    67,    69,     7,    -1,    19,    66,    -1,    22,    66,
-      -1,    20,     6,    65,     7,    -1,    43,    -1,    43,    43,
-      -1,    43,    -1,    70,    43,    -1,    70,    11,    43,    -1,
-      70,    12,    43,    -1,    43,    -1,    43,    43,    -1,    43,
-      43,    43,    -1,    43,    -1,    43,    43,    -1,    72,    11,
-      43,    -1,    18,    66,     4,    90,     5,    -1,     4,    63,
-       5,    -1,    54,    -1,    56,    -1,    26,    80,     8,    -1,
-      27,    82,     8,    -1,    43,    11,    -1,    -1,    -1,    -1,
-      33,     6,    75,    43,     8,    76,    43,     8,    77,    43,
-       7,    74,    -1,    34,    66,    74,    -1,    73,    -1,    12,
-      83,     8,    -1,    87,     8,    -1,    43,     8,    -1,    -1,
-      87,     9,    78,    43,     8,    -1,    29,     8,    -1,    28,
-       8,    -1,    30,     8,    -1,    68,    74,    79,    -1,     8,
-      -1,    21,    74,    -1,    -1,    72,    -1,    72,    13,    72,
-      -1,    72,    10,    72,    -1,    72,    13,    72,    13,    72,
-      -1,    72,    10,    72,    10,    72,    -1,    37,    13,    72,
-      13,    72,    -1,    37,    10,    72,    10,    72,    -1,    -1,
-      10,    43,    -1,    72,    81,    -1,    72,    81,    14,    48,
-      -1,    -1,    43,     6,    84,    89,     7,    -1,    43,     6,
-       7,    -1,    -1,    43,     6,    86,    -1,    85,    89,     7,
-      -1,    85,     7,    -1,    43,    -1,    -1,    69,    -1,    -1,
-      89,    10,    88,    -1,    -1,    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,     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,    65,    -1,    97,     8,    -1,    98,
-      97,     8,    -1,    98,     1,    -1,    41,     4,    98,     5,
-      -1,    41,     4,     5,    -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,
+      11,    71,    11,    71,    -1,    43,    -1,    64,    13,    71,
+      13,    71,    13,    71,    -1,    -1,     6,    67,    69,     7,
+      -1,    19,    66,    -1,    22,    66,    -1,    20,     6,    65,
+       7,    -1,    43,    -1,    43,    43,    -1,    43,    -1,    70,
+      43,    -1,    70,    11,    43,    -1,    70,    12,    43,    -1,
+      43,    -1,    43,    43,    -1,    43,    43,    43,    -1,    43,
+      -1,    43,    43,    -1,    72,    11,    43,    -1,    18,    66,
+       4,    90,     5,    -1,     4,    63,     5,    -1,    54,    -1,
+      56,    -1,    26,    80,     8,    -1,    27,    82,     8,    -1,
+      43,    11,    -1,    -1,    -1,    -1,    33,     6,    75,    43,
+       8,    76,    43,     8,    77,    43,     7,    74,    -1,    34,
+      66,    74,    -1,    73,    -1,    12,    83,     8,    -1,    87,
+       8,    -1,    43,     8,    -1,    -1,    87,     9,    78,    43,
+       8,    -1,    29,     8,    -1,    28,     8,    -1,    30,     8,
+      -1,    68,    74,    79,    -1,     8,    -1,    21,    74,    -1,
+      -1,    72,    -1,    72,    13,    72,    -1,    72,    10,    72,
+      -1,    72,    13,    72,    13,    72,    -1,    72,    10,    72,
+      10,    72,    -1,    37,    13,    72,    13,    72,    -1,    37,
+      10,    72,    10,    72,    -1,    -1,    10,    43,    -1,    72,
+      81,    -1,    72,    81,    14,    48,    -1,    -1,    43,     6,
+      84,    89,     7,    -1,    43,     6,     7,    -1,    -1,    43,
+       6,    86,    -1,    85,    89,     7,    -1,    85,     7,    -1,
+      43,    -1,    -1,    69,    -1,    -1,    89,    10,    88,    -1,
+      -1,    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,
+       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,
+      65,    -1,    97,     8,    -1,    98,    97,     8,    -1,    98,
+       1,    -1,    41,     4,    98,     5,    -1,    41,     4,     5,
+      -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -628,17 +629,17 @@ static const yytype_uint16 yyrline[] =
      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,   286,   291,   301,   302,
-     303,   309,   314,   318,   326,   326,   330,   333,   336,   347,
-     348,   355,   356,   360,   364,   370,   371,   376,   384,   385,
-     389,   395,   404,   407,   408,   409,   412,   415,   418,   419,
-     420,   418,   426,   430,   431,   432,   433,   436,   436,   469,
-     470,   471,   472,   476,   479,   480,   483,   484,   487,   490,
-     494,   498,   502,   508,   509,   513,   516,   522,   522,   527,
-     535,   535,   546,   553,   556,   557,   560,   561,   564,   567,
-     568,   571,   575,   579,   585,   586,   589,   590,   591,   597,
-     602,   607,   608,   609,   611,   614,   615,   622,   623,   624,
-     627,   630
+     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
 };
 #endif
 
@@ -688,17 +689,17 @@ static const yytype_uint8 yyr1[] =
       48,    48,    49,    50,    50,    50,    50,    50,    51,    52,
       53,    53,    53,    55,    54,    57,    56,    58,    58,    58,
       58,    59,    59,    59,    60,    60,    60,    60,    60,    60,
-      60,    60,    60,    61,    62,    62,    62,    62,    63,    63,
-      63,    64,    64,    65,    67,    66,    68,    68,    68,    69,
-      69,    70,    70,    70,    70,    71,    71,    71,    72,    72,
-      72,    73,    74,    74,    74,    74,    74,    74,    75,    76,
-      77,    74,    74,    74,    74,    74,    74,    78,    74,    74,
-      74,    74,    74,    74,    79,    79,    80,    80,    80,    80,
-      80,    80,    80,    81,    81,    82,    82,    84,    83,    83,
-      86,    85,    87,    87,    88,    88,    89,    89,    89,    90,
-      90,    91,    91,    91,    92,    92,    93,    93,    93,    94,
-      95,    96,    96,    96,    96,    97,    97,    98,    98,    98,
-      99,    99
+      60,    60,    60,    61,    62,    62,    62,    62,    62,    63,
+      63,    63,    64,    64,    65,    67,    66,    68,    68,    68,
+      69,    69,    70,    70,    70,    70,    71,    71,    71,    72,
+      72,    72,    73,    74,    74,    74,    74,    74,    74,    75,
+      76,    77,    74,    74,    74,    74,    74,    74,    78,    74,
+      74,    74,    74,    74,    74,    79,    79,    80,    80,    80,
+      80,    80,    80,    80,    81,    81,    82,    82,    84,    83,
+      83,    86,    85,    87,    87,    88,    88,    89,    89,    89,
+      90,    90,    91,    91,    91,    92,    92,    93,    93,    93,
+      94,    95,    96,    96,    96,    96,    97,    97,    98,    98,
+      98,    99,    99
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -708,17 +709,17 @@ static const yytype_uint8 yyr2[] =
        1,     1,     6,     1,     0,     1,     2,     2,     8,     4,
        0,     2,     2,     0,     5,     0,     6,     0,     1,     3,
        2,     0,     2,     2,     1,     1,     1,     1,     1,     1,
-       1,     2,     1,     4,     3,     4,     7,     8,     0,     2,
-       2,     5,     1,     7,     0,     4,     2,     2,     4,     1,
-       2,     1,     2,     3,     3,     1,     2,     3,     1,     2,
-       3,     5,     3,     1,     1,     3,     3,     2,     0,     0,
-       0,    12,     3,     1,     3,     2,     2,     0,     5,     2,
-       2,     2,     3,     1,     2,     0,     1,     3,     3,     5,
-       5,     5,     5,     0,     2,     2,     4,     0,     5,     3,
-       0,     3,     3,     2,     1,     0,     1,     0,     3,     0,
-       2,     4,     3,     4,     0,     2,     1,     1,     5,     4,
-       4,     0,     3,     5,     2,     1,     3,     2,     3,     2,
-       4,     3
+       1,     2,     1,     4,     3,     5,     4,     7,     8,     0,
+       2,     2,     5,     1,     7,     0,     4,     2,     2,     4,
+       1,     2,     1,     2,     3,     3,     1,     2,     3,     1,
+       2,     3,     5,     3,     1,     1,     3,     3,     2,     0,
+       0,     0,    12,     3,     1,     3,     2,     2,     0,     5,
+       2,     2,     2,     3,     1,     2,     0,     1,     3,     3,
+       5,     5,     5,     5,     0,     2,     2,     4,     0,     5,
+       3,     0,     3,     3,     2,     1,     0,     1,     0,     3,
+       0,     2,     4,     3,     4,     0,     2,     1,     1,     5,
+       4,     4,     0,     3,     5,     2,     1,     3,     2,     3,
+       2,     4,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -731,167 +732,167 @@ static const yytype_uint8 yydefact[] =
        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,   124,
+      39,    40,     0,     0,    38,    34,    36,    37,    35,   125,
       29,     0,    33,     0,     0,     0,     0,     0,     0,     0,
-       0,    41,     0,    12,    32,     0,    93,     0,     0,     0,
+       0,    41,     0,     0,    12,    32,     0,    94,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    73,    74,     0,    83,   126,   117,     0,     0,   124,
-     127,    24,     0,     0,     0,    61,     0,     0,     0,     0,
-       0,   141,   135,     0,     0,    25,    44,     0,     0,     0,
-       0,     0,    54,     0,    56,     0,    57,     0,    68,    96,
-       0,   103,     0,    90,    89,    91,    78,     0,     0,   110,
-      86,    77,    95,   113,    59,   116,     0,    85,    87,    18,
-     125,    43,     0,    45,     0,     0,     0,    62,   134,     0,
-       0,   129,   130,     0,   137,   139,   140,     0,     0,    50,
-      72,    49,   107,    84,     0,   119,    52,     0,     0,     0,
-       0,     0,    69,     0,     0,     0,    75,     0,   105,    76,
-       0,    82,     0,   111,     0,    92,    60,   112,   115,     0,
-       0,     0,    63,    64,   132,     0,   136,   138,     0,   109,
-     117,     0,     0,     0,     0,     0,   119,    66,     0,    58,
-       0,     0,     0,    98,    70,    97,   104,     0,     0,     0,
-      94,   114,   118,     0,     0,     0,     0,    26,     0,    55,
-       0,     0,     0,    71,   120,    67,    65,     0,     0,     0,
-       0,     0,     0,   106,    79,   128,    88,     0,    46,   133,
-     108,     0,     0,   122,     0,     0,   102,   101,   100,    99,
-       0,    47,   121,   123,     0,    51,     0,     0,    80,    53,
-       0,     0,     0,    81
+       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,
+     105,     0,     0,     0,    95,   115,   119,     0,     0,     0,
+       0,    26,     0,    56,     0,     0,     0,    72,   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
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     6,     7,     8,   112,     9,    10,    11,    12,    24,
-      91,    39,    92,   168,    30,    52,    53,    54,    55,   118,
-     177,   178,   123,   174,    93,   145,   106,   179,   129,    94,
-     119,   190,   270,   280,   199,   195,   130,   188,   132,   121,
-     210,    96,   193,    97,   232,   146,   215,   216,    98,    99,
-      56,    57,   109,   113,   114,    58
+      -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
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -213
+#define YYPACT_NINF -219
 static const yytype_int16 yypact[] =
 {
-     130,  -213,   -22,    32,    20,    28,    72,    93,  -213,  -213,
-      73,  -213,  -213,   118,    14,  -213,  -213,  -213,  -213,  -213,
-      -5,    88,    14,   146,   134,    14,  -213,  -213,   184,  -213,
-     104,  -213,  -213,  -213,  -213,   120,  -213,   186,   115,   151,
-     120,  -213,   171,   -15,   191,   200,   201,   205,   167,    22,
-    -213,  -213,   207,   120,  -213,  -213,  -213,  -213,  -213,   173,
-    -213,   210,  -213,   176,   214,   197,   181,    19,    19,    -2,
-     216,  -213,   209,  -213,  -213,   114,  -213,   183,   224,   224,
-     226,   224,    -4,   202,   232,   238,   239,   228,   224,   206,
-     178,  -213,  -213,   209,  -213,  -213,     3,    78,   243,   173,
-    -213,  -213,   242,   181,   209,  -213,    15,    19,    56,   248,
-     250,  -213,   244,   252,    11,  -213,  -213,    55,   251,    55,
-     255,   254,  -213,   259,  -213,   215,  -213,     1,   221,    58,
-     257,   102,   258,  -213,  -213,  -213,  -213,   209,   263,  -213,
-    -213,  -213,   247,  -213,   227,  -213,    96,  -213,  -213,  -213,
-    -213,  -213,    18,  -213,   230,   231,   233,  -213,  -213,    19,
-     234,  -213,  -213,   215,  -213,  -213,  -213,   261,   235,  -213,
-    -213,  -213,   264,  -213,   236,   143,     7,   262,   273,   270,
-     202,   202,  -213,   202,   240,   202,  -213,   241,   268,  -213,
-     245,  -213,   114,  -213,   209,  -213,  -213,  -213,   246,   249,
-     253,   260,  -213,  -213,  -213,   278,  -213,  -213,   279,  -213,
-     236,   283,   256,   265,   280,   288,   143,   266,   267,  -213,
-     267,   164,   116,   172,  -213,   154,  -213,    -5,   286,   290,
-    -213,  -213,  -213,   289,   275,   209,    19,  -213,   100,  -213,
-     287,   291,    55,  -213,  -213,  -213,   269,   292,   293,   202,
-     202,   202,   202,  -213,  -213,  -213,  -213,   209,  -213,  -213,
-    -213,    55,    55,  -213,   267,   267,   295,   295,   295,   295,
-     271,  -213,  -213,  -213,   294,  -213,   303,   267,  -213,  -213,
-     272,   296,   209,  -213
+     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
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -213,  -213,  -213,   306,   -19,  -213,  -213,  -213,  -213,    98,
-     219,  -213,     2,  -213,  -213,    26,  -213,  -213,  -213,  -112,
-    -213,   138,    85,  -213,  -213,   142,   217,  -212,   -81,  -213,
-     -59,  -213,  -213,  -213,  -213,  -213,  -213,  -213,  -213,  -213,
-    -213,  -213,  -213,  -213,  -213,   107,   103,  -213,   222,  -213,
-    -213,  -213,   -64,   204,  -213,   -50
+    -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
 };
 
 /* 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 -132
+#define YYTABLE_NINF -133
 static const yytype_int16 yytable[] =
 {
-      95,    28,   131,   111,   110,   169,   247,   171,   248,   100,
-     143,   180,   165,   116,   181,    22,   166,    64,   -65,   -20,
-     107,    13,   154,    71,  -131,   200,   155,   156,    65,   155,
-     156,    32,    26,   127,   142,    26,    14,    51,    27,   128,
-      95,    27,    51,   158,    15,   153,   144,    72,    26,   100,
-     217,    16,   274,   275,    27,    51,   117,    23,   157,    75,
-     -48,   157,   108,    76,   159,   279,    62,    77,   183,   184,
-     160,   185,    17,    78,    79,    80,    20,    81,   191,    74,
-     229,    82,    83,    84,    85,    86,   147,   148,    87,    88,
-     -48,   -48,   -48,    -2,    18,   204,   -14,    48,    90,   221,
-     222,     1,   223,   197,   225,    36,   198,   260,     2,     3,
-     198,    37,   187,   184,    38,   117,     4,     5,    75,   -48,
-      31,    40,    76,    34,    21,   -31,    77,   184,    41,   250,
-     263,    29,    78,    79,    80,   230,    81,    42,     1,    33,
-      82,    83,    84,    85,    86,     2,     3,    87,    88,   272,
-     273,    43,    44,     4,     5,    32,    48,    90,    60,    45,
-      46,    47,    48,    49,   124,   184,   126,   252,   266,   267,
-     268,   269,   259,   137,   249,   184,   258,    75,   212,   213,
-     214,    76,   251,   184,   139,    77,   140,    32,    35,   141,
-      59,    78,    79,    80,    61,    81,    63,    66,   271,    82,
-      83,    84,    85,    86,    67,    68,    87,    88,   253,    69,
-      70,    89,    73,    75,    47,    48,    90,    76,   101,   102,
-     103,    77,   104,   283,   105,   115,   120,    78,    79,    80,
-     122,    81,   125,    25,   136,    82,    83,    84,    85,    86,
-     133,    25,    87,    88,    25,   128,   134,   135,   149,   138,
-     151,    48,    90,   161,    50,   162,   170,   163,   176,    50,
-     164,   172,   173,   175,   182,   186,   189,   192,   194,   207,
-     196,   209,    50,   201,   202,   218,   203,   205,   208,   144,
-     219,   220,   227,   224,   226,   235,   236,   237,   228,   231,
-     239,   242,   233,   243,   254,   255,   234,   256,   261,   240,
-     257,   206,   262,   282,   265,   264,   184,   277,   241,   245,
-     246,   278,   217,    19,   276,   281,   211,   238,   167,   244,
-     152,   150
+      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
 };
 
-static const yytype_uint16 yycheck[] =
+static const yytype_int16 yycheck[] =
 {
-      59,    20,    83,     5,    68,   117,   218,   119,   220,    59,
-       7,    10,     1,    72,    13,     1,     5,    32,    11,     5,
-       1,    43,     7,     1,     5,     7,    11,    12,    43,    11,
-      12,     9,    37,    37,    93,    37,     4,    35,    43,    43,
-      99,    43,    40,   107,    24,   104,    43,    25,    37,    99,
-      43,    23,   264,   265,    43,    53,     1,    43,    43,     4,
-       5,    43,    43,     8,     8,   277,    40,    12,    10,    11,
-      14,    13,     0,    18,    19,    20,     3,    22,   137,    53,
-     192,    26,    27,    28,    29,    30,     8,     9,    33,    34,
-      35,    36,    37,     0,     1,   159,     3,    42,    43,   180,
-     181,     8,   183,     7,   185,     1,    10,     7,    15,    16,
-      10,     7,    10,    11,    10,     1,    23,    24,     4,     5,
-      22,     1,     8,    25,     6,     5,    12,    11,     8,    13,
-     242,    43,    18,    19,    20,   194,    22,    17,     8,     5,
-      26,    27,    28,    29,    30,    15,    16,    33,    34,   261,
-     262,    31,    32,    23,    24,     9,    42,    43,    43,    39,
-      40,    41,    42,    43,    79,    11,    81,    13,   249,   250,
-     251,   252,   236,    88,    10,    11,   235,     4,    35,    36,
-      37,     8,    10,    11,     6,    12,     8,     9,     4,    11,
-       4,    18,    19,    20,    43,    22,    25,     6,   257,    26,
-      27,    28,    29,    30,     4,     4,    33,    34,   227,     4,
-      43,    38,     5,     4,    41,    42,    43,     8,     8,    43,
-       6,    12,    25,   282,    43,     9,    43,    18,    19,    20,
-       6,    22,     6,    14,     6,    26,    27,    28,    29,    30,
-       8,    22,    33,    34,    25,    43,     8,     8,     5,    43,
-       8,    42,    43,     5,    35,     5,     5,    13,    43,    40,
-       8,     6,     8,     4,    43,     8,     8,     4,    21,     8,
-      43,     7,    53,    43,    43,    13,    43,    43,    43,    43,
-       7,    11,    14,    43,    43,    25,     8,     8,    43,    43,
-       7,    11,    43,     5,     8,     5,    43,     8,    11,    43,
-      25,   163,    11,     7,    11,    13,    11,    13,    43,    43,
-      43,     8,    43,     7,    43,    43,   174,   210,   114,   216,
-     103,    99
+      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
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -905,28 +906,28 @@ static const yytype_uint8 yystos[] =
        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,    25,     5,    59,     4,     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,    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,    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,     7,
-      84,    69,    35,    36,    37,    90,    91,    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,    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
+      43,     1,    14,    25,     5,    59,     4,     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,
+      43,    14,    43,    63,    74,    43,    88,    43,    43,    25,
+       8,     8,    89,     7,    43,    43,    11,     5,    90,    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
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -1451,7 +1452,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
       case 43: /* "word" */
 #line 178 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1455 "ael.tab.c"
+#line 1456 "ael.tab.c"
 	break;
       case 46: /* "objects" */
 #line 165 "ael.y"
@@ -1459,7 +1460,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1463 "ael.tab.c"
+#line 1464 "ael.tab.c"
 	break;
       case 47: /* "object" */
 #line 165 "ael.y"
@@ -1467,12 +1468,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1471 "ael.tab.c"
+#line 1472 "ael.tab.c"
 	break;
       case 48: /* "context_name" */
 #line 178 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1476 "ael.tab.c"
+#line 1477 "ael.tab.c"
 	break;
       case 49: /* "context" */
 #line 165 "ael.y"
@@ -1480,7 +1481,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1484 "ael.tab.c"
+#line 1485 "ael.tab.c"
 	break;
       case 51: /* "macro" */
 #line 165 "ael.y"
@@ -1488,7 +1489,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1492 "ael.tab.c"
+#line 1493 "ael.tab.c"
 	break;
       case 52: /* "globals" */
 #line 165 "ael.y"
@@ -1496,7 +1497,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1500 "ael.tab.c"
+#line 1501 "ael.tab.c"
 	break;
       case 53: /* "global_statements" */
 #line 165 "ael.y"
@@ -1504,7 +1505,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1508 "ael.tab.c"
+#line 1509 "ael.tab.c"
 	break;
       case 54: /* "assignment" */
 #line 165 "ael.y"
@@ -1512,7 +1513,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1516 "ael.tab.c"
+#line 1517 "ael.tab.c"
 	break;
       case 56: /* "local_assignment" */
 #line 165 "ael.y"
@@ -1520,7 +1521,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1524 "ael.tab.c"
+#line 1525 "ael.tab.c"
 	break;
       case 58: /* "arglist" */
 #line 165 "ael.y"
@@ -1528,7 +1529,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1532 "ael.tab.c"
+#line 1533 "ael.tab.c"
 	break;
       case 59: /* "elements" */
 #line 165 "ael.y"
@@ -1536,7 +1537,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1540 "ael.tab.c"
+#line 1541 "ael.tab.c"
 	break;
       case 60: /* "element" */
 #line 165 "ael.y"
@@ -1544,7 +1545,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1548 "ael.tab.c"
+#line 1549 "ael.tab.c"
 	break;
       case 61: /* "ignorepat" */
 #line 165 "ael.y"
@@ -1552,7 +1553,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1556 "ael.tab.c"
+#line 1557 "ael.tab.c"
 	break;
       case 62: /* "extension" */
 #line 165 "ael.y"
@@ -1560,7 +1561,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1564 "ael.tab.c"
+#line 1565 "ael.tab.c"
 	break;
       case 63: /* "statements" */
 #line 165 "ael.y"
@@ -1568,12 +1569,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1572 "ael.tab.c"
+#line 1573 "ael.tab.c"
 	break;
       case 64: /* "timerange" */
 #line 178 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1577 "ael.tab.c"
+#line 1578 "ael.tab.c"
 	break;
       case 65: /* "timespec" */
 #line 165 "ael.y"
@@ -1581,12 +1582,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1585 "ael.tab.c"
+#line 1586 "ael.tab.c"
 	break;
       case 66: /* "test_expr" */
 #line 178 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1590 "ael.tab.c"
+#line 1591 "ael.tab.c"
 	break;
       case 68: /* "if_like_head" */
 #line 165 "ael.y"
@@ -1594,22 +1595,22 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1598 "ael.tab.c"
+#line 1599 "ael.tab.c"
 	break;
       case 69: /* "word_list" */
 #line 178 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1603 "ael.tab.c"
+#line 1604 "ael.tab.c"
 	break;
       case 71: /* "word3_list" */
 #line 178 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1608 "ael.tab.c"
+#line 1609 "ael.tab.c"
 	break;
       case 72: /* "goto_word" */
 #line 178 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1613 "ael.tab.c"
+#line 1614 "ael.tab.c"
 	break;
       case 73: /* "switch_statement" */
 #line 165 "ael.y"
@@ -1617,7 +1618,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1621 "ael.tab.c"
+#line 1622 "ael.tab.c"
 	break;
       case 74: /* "statement" */
 #line 165 "ael.y"
@@ -1625,7 +1626,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1629 "ael.tab.c"
+#line 1630 "ael.tab.c"
 	break;
       case 79: /* "opt_else" */
 #line 165 "ael.y"
@@ -1633,7 +1634,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1637 "ael.tab.c"
+#line 1638 "ael.tab.c"
 	break;
       case 80: /* "target" */
 #line 165 "ael.y"
@@ -1641,12 +1642,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1645 "ael.tab.c"
+#line 1646 "ael.tab.c"
 	break;
       case 81: /* "opt_pri" */
 #line 178 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1650 "ael.tab.c"
+#line 1651 "ael.tab.c"
 	break;
       case 82: /* "jumptarget" */
 #line 165 "ael.y"
@@ -1654,7 +1655,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1658 "ael.tab.c"
+#line 1659 "ael.tab.c"
 	break;
       case 83: /* "macro_call" */
 #line 165 "ael.y"
@@ -1662,7 +1663,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1666 "ael.tab.c"
+#line 1667 "ael.tab.c"
 	break;
       case 85: /* "application_call_head" */
 #line 165 "ael.y"
@@ -1670,7 +1671,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1674 "ael.tab.c"
+#line 1675 "ael.tab.c"
 	break;
       case 87: /* "application_call" */
 #line 165 "ael.y"
@@ -1678,12 +1679,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1682 "ael.tab.c"
+#line 1683 "ael.tab.c"
 	break;
       case 88: /* "opt_word" */
 #line 178 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1687 "ael.tab.c"
+#line 1688 "ael.tab.c"
 	break;
       case 89: /* "eval_arglist" */
 #line 165 "ael.y"
@@ -1691,7 +1692,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1695 "ael.tab.c"
+#line 1696 "ael.tab.c"
 	break;
       case 90: /* "case_statements" */
 #line 165 "ael.y"
@@ -1699,7 +1700,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1703 "ael.tab.c"
+#line 1704 "ael.tab.c"
 	break;
       case 91: /* "case_statement" */
 #line 165 "ael.y"
@@ -1707,7 +1708,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1711 "ael.tab.c"
+#line 1712 "ael.tab.c"
 	break;
       case 92: /* "macro_statements" */
 #line 165 "ael.y"
@@ -1715,7 +1716,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1719 "ael.tab.c"
+#line 1720 "ael.tab.c"
 	break;
       case 93: /* "macro_statement" */
 #line 165 "ael.y"
@@ -1723,7 +1724,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1727 "ael.tab.c"
+#line 1728 "ael.tab.c"
 	break;
       case 94: /* "switches" */
 #line 165 "ael.y"
@@ -1731,7 +1732,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1735 "ael.tab.c"
+#line 1736 "ael.tab.c"
 	break;
       case 95: /* "eswitches" */
 #line 165 "ael.y"
@@ -1739,7 +1740,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1743 "ael.tab.c"
+#line 1744 "ael.tab.c"
 	break;
       case 96: /* "switchlist" */
 #line 165 "ael.y"
@@ -1747,7 +1748,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1751 "ael.tab.c"
+#line 1752 "ael.tab.c"
 	break;
       case 97: /* "included_entry" */
 #line 165 "ael.y"
@@ -1755,7 +1756,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1759 "ael.tab.c"
+#line 1760 "ael.tab.c"
 	break;
       case 98: /* "includeslist" */
 #line 165 "ael.y"
@@ -1763,7 +1764,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1767 "ael.tab.c"
+#line 1768 "ael.tab.c"
 	break;
       case 99: /* "includes" */
 #line 165 "ael.y"
@@ -1771,7 +1772,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1775 "ael.tab.c"
+#line 1776 "ael.tab.c"
 	break;
 
       default:
@@ -2332,6 +2333,18 @@ yyreduce:
 
   case 45:
 #line 281 "ael.y"
+    {
+		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (5)]), &(yylsp[(3) - (5)]));
+		(yyval.pval)->u1.str = malloc(strlen((yyvsp[(1) - (5)].str))+strlen((yyvsp[(3) - (5)].str))+2);
+		strcpy((yyval.pval)->u1.str,(yyvsp[(1) - (5)].str));
+		strcat((yyval.pval)->u1.str,"@");
+		strcat((yyval.pval)->u1.str,(yyvsp[(3) - (5)].str));
+		free((yyvsp[(1) - (5)].str));
+		(yyval.pval)->u2.statements = (yyvsp[(5) - (5)].pval); set_dads((yyval.pval),(yyvsp[(5) - (5)].pval));;}
+    break;
+
+  case 46:
+#line 289 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
 		(yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
@@ -2339,8 +2352,8 @@ yyreduce:
 		(yyval.pval)->u4.regexten=1;;}
     break;
 
-  case 46:
-#line 286 "ael.y"
+  case 47:
+#line 294 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (7)]), &(yylsp[(7) - (7)]));
 		(yyval.pval)->u1.str = (yyvsp[(5) - (7)].str);
@@ -2348,8 +2361,8 @@ yyreduce:
 		(yyval.pval)->u3.hints = (yyvsp[(3) - (7)].str);;}
     break;
 
-  case 47:
-#line 291 "ael.y"
+  case 48:
+#line 299 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)]));
 		(yyval.pval)->u1.str = (yyvsp[(6) - (8)].str);
@@ -2358,23 +2371,23 @@ yyreduce:
 		(yyval.pval)->u3.hints = (yyvsp[(4) - (8)].str);;}
     break;
 
-  case 48:
-#line 301 "ael.y"
+  case 49:
+#line 308 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 49:
-#line 302 "ael.y"
+  case 50:
+#line 309 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 50:
-#line 303 "ael.y"
+  case 51:
+#line 310 "ael.y"
     {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
     break;
 
-  case 51:
-#line 309 "ael.y"
+  case 52:
+#line 316 "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));
@@ -2382,13 +2395,13 @@ yyreduce:
 		free((yyvsp[(5) - (5)].str)); ;}
     break;
 
-  case 52:
-#line 314 "ael.y"
+  case 53:
+#line 321 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
     break;
 
-  case 53:
-#line 318 "ael.y"
+  case 54:
+#line 325 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[(1) - (7)].str), &(yylsp[(1) - (7)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (7)].str), &(yylsp[(3) - (7)]));
@@ -2396,45 +2409,45 @@ yyreduce:
 		(yyval.pval)->next->next->next = nword((yyvsp[(7) - (7)].str), &(yylsp[(7) - (7)])); ;}
     break;
 
-  case 54:
-#line 326 "ael.y"
+  case 55:
+#line 333 "ael.y"
     { reset_parencount(parseio->scanner); ;}
     break;
 
-  case 55:
-#line 326 "ael.y"
+  case 56:
+#line 333 "ael.y"
     { (yyval.str) = (yyvsp[(3) - (4)].str); ;}
     break;
 
-  case 56:
-#line 330 "ael.y"
+  case 57:
+#line 337 "ael.y"
     {
 		(yyval.pval)= npval2(PV_IF, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
 		(yyval.pval)->u1.str = (yyvsp[(2) - (2)].str); ;}
     break;
 
-  case 57:
-#line 333 "ael.y"
+  case 58:
+#line 340 "ael.y"
     {
 		(yyval.pval) = npval2(PV_RANDOM, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
 		(yyval.pval)->u1.str=(yyvsp[(2) - (2)].str);;}
     break;
 
-  case 58:
-#line 336 "ael.y"
+  case 59:
+#line 343 "ael.y"
     {
 		(yyval.pval) = npval2(PV_IFTIME, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
 		(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);
 		prev_word = 0; ;}
     break;
 
-  case 59:
-#line 347 "ael.y"
+  case 60:
+#line 354 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);;}
     break;
 
-  case 60:
-#line 348 "ael.y"
+  case 61:
+#line 355 "ael.y"
     {
 		asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
 		free((yyvsp[(1) - (2)].str));
@@ -2442,42 +2455,42 @@ yyreduce:
 		prev_word = (yyval.str);;}
     break;
 
-  case 61:
-#line 355 "ael.y"
+  case 62:
+#line 362 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
     break;
 
-  case 62:
-#line 356 "ael.y"
+  case 63:
+#line 363 "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)); ;}
     break;
 
-  case 63:
-#line 360 "ael.y"
+  case 64:
+#line 367 "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)); ;}
     break;
 
-  case 64:
-#line 364 "ael.y"
+  case 65:
+#line 371 "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));;}
     break;
 
-  case 65:
-#line 370 "ael.y"
+  case 66:
+#line 377 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);;}
     break;
 
-  case 66:
-#line 371 "ael.y"
+  case 67:
+#line 378 "ael.y"
     {
 		asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
 		free((yyvsp[(1) - (2)].str));
@@ -2485,8 +2498,8 @@ yyreduce:
 		prev_word = (yyval.str);;}
     break;
 
-  case 67:
-#line 376 "ael.y"
+  case 68:
+#line 383 "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));
@@ -2495,90 +2508,90 @@ yyreduce:
 		prev_word=(yyval.str);;}
     break;
 
-  case 68:
-#line 384 "ael.y"
+  case 69:
+#line 391 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);;}
     break;
 
-  case 69:
-#line 385 "ael.y"
+  case 70:
+#line 392 "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));;}
     break;
 
-  case 70:
-#line 389 "ael.y"
+  case 71:
+#line 396 "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));;}
     break;
 
-  case 71:
-#line 395 "ael.y"
+  case 72:
+#line 402 "ael.y"
     {
 		(yyval.pval) = npval2(PV_SWITCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
 		(yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
 		(yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;}
     break;
 
-  case 72:
-#line 404 "ael.y"
+  case 73:
+#line 411 "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 73:
-#line 407 "ael.y"
+  case 74:
+#line 414 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
     break;
 
-  case 74:
-#line 408 "ael.y"
+  case 75:
+#line 415 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
     break;
 
-  case 75:
-#line 409 "ael.y"
+  case 76:
+#line 416 "ael.y"
     {
 		(yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;}
     break;
 
-  case 76:
-#line 412 "ael.y"
+  case 77:
+#line 419 "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 415 "ael.y"
+  case 78:
+#line 422 "ael.y"
     {
 		(yyval.pval) = npval2(PV_LABEL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
 		(yyval.pval)->u1.str = (yyvsp[(1) - (2)].str); ;}
     break;
 
-  case 78:
-#line 418 "ael.y"
+  case 79:
+#line 425 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
-  case 79:
-#line 419 "ael.y"
+  case 80:
+#line 426 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
-  case 80:
-#line 420 "ael.y"
+  case 81:
+#line 427 "ael.y"
     {reset_parencount(parseio->scanner);;}
     break;
 
-  case 81:
-#line 420 "ael.y"
+  case 82:
+#line 427 "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);
@@ -2587,43 +2600,43 @@ yyreduce:
 		(yyval.pval)->u4.for_statements = (yyvsp[(12) - (12)].pval); set_dads((yyval.pval),(yyvsp[(12) - (12)].pval));;}
     break;
 
-  case 82:
-#line 426 "ael.y"
+  case 83:
+#line 433 "ael.y"
     {
 		(yyval.pval) = npval2(PV_WHILE, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.str = (yyvsp[(2) - (3)].str);
 		(yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval); set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
     break;
 
-  case 83:
-#line 430 "ael.y"
+  case 84:
+#line 437 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
     break;
 
-  case 84:
-#line 431 "ael.y"
+  case 85:
+#line 438 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(2) - (3)].pval), &(yylsp[(2) - (3)])); ;}
     break;
 
-  case 85:
-#line 432 "ael.y"
+  case 86:
+#line 439 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 86:
-#line 433 "ael.y"
+  case 87:
+#line 440 "ael.y"
     {
 		(yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
 		(yyval.pval)->u1.str = (yyvsp[(1) - (2)].str);;}
     break;
 
-  case 87:
-#line 436 "ael.y"
+  case 88:
+#line 443 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
-  case 88:
-#line 436 "ael.y"
+  case 89:
+#line 443 "ael.y"
     {
 		char *bufx;
 		int tot=0;
@@ -2659,127 +2672,127 @@ yyreduce:
 	;}
     break;
 
-  case 89:
-#line 469 "ael.y"
+  case 90:
+#line 476 "ael.y"
     { (yyval.pval) = npval2(PV_BREAK, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 90:
-#line 470 "ael.y"
+  case 91:
+#line 477 "ael.y"
     { (yyval.pval) = npval2(PV_RETURN, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 91:
-#line 471 "ael.y"
+  case 92:
+#line 478 "ael.y"
     { (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 92:
-#line 472 "ael.y"
+  case 93:
+#line 479 "ael.y"
     {
 		(yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(2) - (3)]));
 		(yyval.pval)->u2.statements = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));
 		(yyval.pval)->u3.else_statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
     break;
 
-  case 93:
-#line 476 "ael.y"
+  case 94:
+#line 483 "ael.y"
     { (yyval.pval)=0; ;}
     break;
 
-  case 94:
-#line 479 "ael.y"
+  case 95:
+#line 486 "ael.y"
     { (yyval.pval) = (yyvsp[(2) - (2)].pval); ;}
     break;
 
-  case 95:
-#line 480 "ael.y"
+  case 96:
+#line 487 "ael.y"
     { (yyval.pval) = NULL ; ;}
     break;
 
-  case 96:
-#line 483 "ael.y"
+  case 97:
+#line 490 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
-  case 97:
-#line 484 "ael.y"
+  case 98:
+#line 491 "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 98:
-#line 487 "ael.y"
+  case 99:
+#line 494 "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 490 "ael.y"
+  case 100:
+#line 497 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
 		(yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
     break;
 
-  case 100:
-#line 494 "ael.y"
+  case 101:
+#line 501 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
 		(yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
     break;
 
-  case 101:
-#line 498 "ael.y"
+  case 102:
+#line 505 "ael.y"
     {
 		(yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
 		(yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
     break;
 
-  case 102:
-#line 502 "ael.y"
+  case 103:
+#line 509 "ael.y"
     {
 		(yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
 		(yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
     break;
 
-  case 103:
-#line 508 "ael.y"
+  case 104:
+#line 515 "ael.y"
     { (yyval.str) = strdup("1"); ;}
     break;
 
-  case 104:
-#line 509 "ael.y"
+  case 105:
+#line 516 "ael.y"
     { (yyval.str) = (yyvsp[(2) - (2)].str); ;}
     break;
 
-  case 105:
-#line 513 "ael.y"
+  case 106:
+#line 520 "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 106:
-#line 516 "ael.y"
+  case 107:
+#line 523 "ael.y"
     {	/* context, ext, pri */
 		(yyval.pval) = nword((yyvsp[(4) - (4)].str), &(yylsp[(4) - (4)]));
 		(yyval.pval)->next = nword((yyvsp[(1) - (4)].str), &(yylsp[(1) - (4)]));
 		(yyval.pval)->next->next = nword((yyvsp[(2) - (4)].str), &(yylsp[(2) - (4)])); ;}
     break;
 
-  case 107:
-#line 522 "ael.y"
+  case 108:
+#line 529 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
-  case 108:
-#line 522 "ael.y"
+  case 109:
+#line 529 "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)]));
@@ -2787,20 +2800,20 @@ yyreduce:
 		(yyval.pval)->u2.arglist = (yyvsp[(4) - (5)].pval);;}
     break;
 
-  case 109:
-#line 527 "ael.y"
+  case 110:
+#line 534 "ael.y"
     {
 		(yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.str = (yyvsp[(1) - (3)].str); ;}
     break;
 
-  case 110:
-#line 535 "ael.y"
+  case 111:
+#line 542 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
-  case 111:
-#line 535 "ael.y"
+  case 112:
+#line 542 "ael.y"
     {
 		if (strcasecmp((yyvsp[(1) - (3)].str),"goto") == 0) {
 			(yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(2) - (3)]));
@@ -2812,8 +2825,8 @@ yyreduce:
 		} ;}
     break;
 
-  case 112:
-#line 546 "ael.y"
+  case 113:
+#line 553 "ael.y"
     {
 		(yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(3) - (3)]));
  		if( (yyval.pval)->type == PV_GOTO )
@@ -2823,179 +2836,179 @@ yyreduce:
 	;}
     break;
 
-  case 113:
-#line 553 "ael.y"
+  case 114:
+#line 560 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 114:
-#line 556 "ael.y"
+  case 115:
+#line 563 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str) ;}
     break;
 
-  case 115:
-#line 557 "ael.y"
+  case 116:
+#line 564 "ael.y"
     { (yyval.str) = strdup(""); ;}
     break;
 
-  case 116:
-#line 560 "ael.y"
+  case 117:
+#line 567 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
-  case 117:
-#line 561 "ael.y"
+  case 118:
+#line 568 "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 118:
-#line 564 "ael.y"
+  case 119:
+#line 571 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;}
     break;
 
-  case 119:
-#line 567 "ael.y"
+  case 120:
+#line 574 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 120:
-#line 568 "ael.y"
+  case 121:
+#line 575 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 121:
-#line 571 "ael.y"
+  case 122:
+#line 578 "ael.y"
     {
 		(yyval.pval) = npval2(PV_CASE, &(yylsp[(1) - (4)]), &(yylsp[(3) - (4)])); /* XXX 3 or 4 ? */
 		(yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
 		(yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval); set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;}
     break;
 
-  case 122:
-#line 575 "ael.y"
+  case 123:
+#line 582 "ael.y"
     {
 		(yyval.pval) = npval2(PV_DEFAULT, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.str = NULL;
 		(yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
     break;
 
-  case 123:
-#line 579 "ael.y"
+  case 124:
+#line 586 "ael.y"
     {
 		(yyval.pval) = npval2(PV_PATTERN, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)])); /* XXX@3 or @4 ? */
 		(yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
 		(yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval);set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;}
     break;
 
-  case 124:
-#line 585 "ael.y"
+  case 125:
+#line 592 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 125:
-#line 586 "ael.y"
+  case 126:
+#line 593 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 126:
-#line 589 "ael.y"
+  case 127:
+#line 596 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
-  case 127:
-#line 590 "ael.y"
+  case 128:
+#line 597 "ael.y"
     { (yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
-  case 128:
-#line 591 "ael.y"
+  case 129:
+#line 598 "ael.y"
     {
 		(yyval.pval) = npval2(PV_CATCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
 		(yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
 		(yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;}
     break;
 
-  case 129:
-#line 597 "ael.y"
+  case 130:
+#line 604 "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 130:
-#line 602 "ael.y"
+  case 131:
+#line 609 "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 131:
-#line 607 "ael.y"
+  case 132:
+#line 614 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 132:
-#line 608 "ael.y"
+  case 133:
+#line 615 "ael.y"
     { (yyval.pval) = linku1(nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)])), (yyvsp[(3) - (3)].pval)); ;}
     break;
 
-  case 133:
-#line 609 "ael.y"
+  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));;}
     break;
 
-  case 134:
-#line 611 "ael.y"
+  case 135:
+#line 618 "ael.y"
     {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
     break;
 
-  case 135:
-#line 614 "ael.y"
+  case 136:
+#line 621 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
-  case 136:
-#line 615 "ael.y"
+  case 137:
+#line 622 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
 		(yyval.pval)->u2.arglist = (yyvsp[(3) - (3)].pval);
 		prev_word=0; /* XXX sure ? */ ;}
     break;
 
-  case 137:
-#line 622 "ael.y"
+  case 138:
+#line 629 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (2)].pval); ;}
     break;
 
-  case 138:
-#line 623 "ael.y"
+  case 139:
+#line 630 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), (yyvsp[(2) - (3)].pval)); ;}
     break;
 
-  case 139:
-#line 624 "ael.y"
+  case 140:
+#line 631 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
     break;
 
-  case 140:
-#line 627 "ael.y"
+  case 141:
+#line 634 "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 141:
-#line 630 "ael.y"
+  case 142:
+#line 637 "ael.y"
     {
 		(yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));;}
     break;
 
 
 /* Line 1270 of yacc.c.  */
-#line 2999 "ael.tab.c"
+#line 3012 "ael.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3214,7 +3227,7 @@ yyreturn:
 }
 
 
-#line 635 "ael.y"
+#line 642 "ael.y"
 
 
 static char *token_equivs1[] =
diff --git a/res/ael/ael.y b/res/ael/ael.y
index cac4a42661..a8df1cb511 100644
--- a/res/ael/ael.y
+++ b/res/ael/ael.y
@@ -278,6 +278,14 @@ extension : word EXTENMARK statement {
 		$$ = npval2(PV_EXTENSION, &@1, &@3);
 		$$->u1.str = $1;
 		$$->u2.statements = $3; set_dads($$,$3);}
+	| word AT word EXTENMARK statement {
+		$$ = npval2(PV_EXTENSION, &@1, &@3);
+		$$->u1.str = malloc(strlen($1)+strlen($3)+2);
+		strcpy($$->u1.str,$1);
+		strcat($$->u1.str,"@");
+		strcat($$->u1.str,$3);
+		free($1);
+		$$->u2.statements = $5; set_dads($$,$5);}
 	| KW_REGEXTEN word EXTENMARK statement {
 		$$ = npval2(PV_EXTENSION, &@1, &@4);
 		$$->u1.str = $2;
@@ -294,7 +302,6 @@ extension : word EXTENMARK statement {
 		$$->u2.statements = $8; set_dads($$,$8);
 		$$->u4.regexten=1;
 		$$->u3.hints = $4;}
-
 	;
 
 /* list of statements in a block or after a case label - can be empty */
diff --git a/res/ael/ael_lex.c b/res/ael/ael_lex.c
index 0ae6a7754a..6a3e2c16b6 100644
--- a/res/ael/ael_lex.c
+++ b/res/ael/ael_lex.c
@@ -9,7 +9,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 31
+#define YY_FLEX_SUBMINOR_VERSION 33
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -32,7 +32,15 @@
 
 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
 
-#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
+#if __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types. 
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
 #include <inttypes.h>
 typedef int8_t flex_int8_t;
 typedef uint8_t flex_uint8_t;
@@ -155,6 +163,10 @@ int ael_yylex_init (yyscan_t* scanner);
 #define YY_BUF_SIZE 16384
 #endif
 
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
 #define YY_TYPEDEF_YY_BUFFER_STATE
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
@@ -400,62 +412,62 @@ static yyconst flex_int32_t yy_ec[256] =
 
        27,   28,   29,   30,   31,   32,   33,   34,   35,   36,
        37,   38,    5,   39,   40,   41,   42,    5,   43,   44,
-        5,    5,   45,   46,   47,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1
+        5,    5,   45,   46,   47,    1,    1,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48
     } ;
 
-static yyconst flex_int32_t yy_meta[48] =
+static yyconst flex_int32_t yy_meta[49] =
     {   0,
         1,    1,    2,    1,    3,    4,    3,    1,    1,    1,
         5,    1,    3,    1,    1,    1,    3,    1,    3,    3,
-        1,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    1,    3
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    1,    3,    3
     } ;
 
 static yyconst flex_int16_t yy_base[257] =
     {   0,
-        0,    0,   39,   42,   81,  120,  159,  198,   47,   54,
-      319,  985,  316,  985,  313,    0,  285,  985,  985,  985,
-      985,   42,  985,  985,  298,  985,  290,  274,   31,  285,
-       32,  274,   33,  279,   45,  267,  271,  284,  283,   48,
-      262,  274,  985,  985,  985,   73,  985,  985,   89,  985,
-      237,  985,  985,  985,  276,  315,  985,  985,  985,  354,
-      985,  300,  985,   66,  300,  297,    0,  264,    0,  401,
-      985,  259,  268,   64,  258,  265,  252,  247,  248,  249,
-      250,  242,  245,  261,  243,  253,  242,  251,  250,  233,
-      237,   51,  241,  240,  103,  985,  985,  137,  985,  142,
-
-      176,  181,  439,  985,  985,  985,  478,  517,  556,  595,
-      634,  985,  985,  985,  673,  985,  712,  751,  790,  829,
-      267,  985,  103,  985,  104,  985,  244,    0,  876,  227,
-      244,  239,  240,  223,  240,  235,  230,  233,    0,  232,
-      218,  213,  222,  214,  216,  211,  225,  205,  201,  215,
-      213,  197,  197,  203,  202,  196,  201,    0,  203,  100,
-      190,    0,  190,  194,  206,    0,    0,  192,  186,  182,
-        0,  188,  180,  189,  178,  170,  174,  187,  184,  167,
-      182,    0,    0,  156,  163,  161,  169,  167,  158,  161,
-      156,  152,    0,    0,  138,  141,  134,  137,  136,    0,
-
-      135,  135,  115,  113,  113,  123,    0,  109,    0,  107,
-      117,  107,    0,  112,    0,  111,  110,   92,    0,  105,
-        0,   95,    0,   85,   60,    0,   61,   48,  117,    0,
-        0,   45,   37,    0,    0,    0,  168,    0,    0,    0,
-       50,  985,  985,  922,  927,  932,  937,  940,  945,  950,
-      955,  960,  964,  969,  974,  979
+        0,    0,   40,   43,   82,  121,  160,  199,   48,   55,
+      320,  986,  317,  986,  314,    0,  286,  986,  986,  986,
+      986,   43,  986,  986,  299,  986,  291,  275,   32,  286,
+       33,  275,   34,  280,   46,  268,  272,  285,  284,   49,
+      263,  275,  986,  986,  986,   74,  986,  986,   90,  986,
+      238,  986,  986,  986,  277,  316,  986,  986,  986,  355,
+      986,  301,  986,   67,  301,  298,    0,  265,    0,  402,
+      986,  260,  269,   65,  259,  266,  253,  248,  249,  250,
+      251,  243,  246,  262,  244,  254,  243,  252,  251,  234,
+      238,   52,  242,  241,  104,  986,  986,  138,  986,  143,
+
+      177,  182,  440,  986,  986,  986,  479,  518,  557,  596,
+      635,  986,  986,  986,  674,  986,  713,  752,  791,  830,
+      268,  986,  104,  986,  105,  986,  245,    0,  877,  228,
+      245,  240,  241,  224,  241,  236,  231,  234,    0,  233,
+      219,  214,  223,  215,  217,  212,  226,  206,  202,  216,
+      214,  198,  198,  204,  203,  197,  202,    0,  204,  101,
+      191,    0,  191,  195,  207,    0,    0,  193,  187,  183,
+        0,  189,  181,  190,  179,  171,  175,  188,  185,  168,
+      183,    0,    0,  157,  164,  162,  170,  168,  159,  162,
+      157,  153,    0,    0,  139,  142,  135,  138,  137,    0,
+
+      136,  136,  116,  114,  114,  124,    0,  110,    0,  108,
+      118,  108,    0,  113,    0,  112,  111,   93,    0,  106,
+        0,   96,    0,   86,   61,    0,   62,   49,  118,    0,
+        0,   46,   38,    0,    0,    0,  169,    0,    0,    0,
+       51,  986,  986,  923,  928,  933,  938,  941,  946,  951,
+      956,  961,  965,  970,  975,  980
     } ;
 
 static yyconst flex_int16_t yy_def[257] =
@@ -490,240 +502,240 @@ static yyconst flex_int16_t yy_def[257] =
       243,  243,  243,  243,  243,  243
     } ;
 
-static yyconst flex_int16_t yy_nxt[1033] =
+static yyconst flex_int16_t yy_nxt[1035] =
     {   0,
        12,   13,   14,   15,   16,   16,   17,   18,   19,   20,
        16,   21,   22,   23,   24,   25,   16,   26,   16,   16,
-       12,   16,   27,   28,   29,   30,   31,   32,   33,   34,
+       16,   16,   27,   28,   29,   30,   31,   32,   33,   34,
        35,   36,   16,   37,   38,   16,   16,   39,   40,   41,
-       16,   16,   42,   16,   43,   44,   45,   47,   48,   63,
-       47,   48,   69,   74,   70,  242,   63,   64,   47,   49,
-       50,   47,   49,   50,   64,   77,   81,   75,  124,   82,
-       91,   78,   84,   85,   92,   79,  125,  239,  126,  151,
-       86,   96,   97,   47,  238,   50,   47,  236,   50,   52,
-       53,  152,   96,   98,   99,   54,  235,  100,  101,  234,
-
-       52,   55,   53,  132,  133,  124,  124,  233,  100,   98,
-      102,   96,   97,  243,  125,  243,  243,   96,  237,   99,
-      237,  232,   96,   98,   99,   52,  184,   53,   52,   53,
-      185,  231,  230,  100,   54,  102,  229,  228,  227,   52,
-       55,   53,  226,  225,  224,  100,  101,   96,  223,   99,
-       96,   97,  222,  221,  220,  219,  100,   98,  102,  218,
-      217,   96,   98,   99,   52,  216,   53,   57,   58,  237,
-       59,  237,  215,  240,  214,  213,  212,  211,   57,   60,
-       61,  100,  210,  102,   96,   97,   96,  209,   99,   96,
-       97,  208,  207,  206,  205,   96,   98,   99,  204,  203,
-
-       96,   98,   99,   57,  202,   61,   57,   58,  201,   59,
-      200,  199,  198,  197,  196,  195,  194,   57,   60,   61,
-       96,  193,   99,  192,  191,   96,  190,   99,  189,  188,
-      187,  186,  183,  182,  181,  180,  179,  178,  177,  176,
-      175,  174,   57,  173,   61,  104,  105,  172,  171,  170,
-      169,  106,  168,  167,  166,  165,  104,  107,  105,  164,
-      163,  162,  161,  160,  159,  158,  157,  156,  155,  122,
-      154,  153,  150,  149,  148,  147,  146,  145,  144,  143,
-      142,  104,  141,  105,  108,  109,  140,  139,  138,  137,
-      110,  136,  135,  134,  131,  108,  107,  109,  130,  127,
-
-       66,   65,  122,   94,   93,   90,   89,   88,   87,   83,
-       80,   76,   73,   72,   71,   68,   66,   65,  243,  243,
-      108,  243,  109,  112,  113,  243,  114,  243,  243,  243,
-      243,  243,  243,  243,  112,  115,  116,  243,  243,  243,
+       16,   16,   42,   16,   43,   44,   45,   16,   47,   48,
+       63,   47,   48,   69,   74,   70,  242,   63,   64,   47,
+       49,   50,   47,   49,   50,   64,   77,   81,   75,  124,
+       82,   91,   78,   84,   85,   92,   79,  125,  239,  126,
+      151,   86,   96,   97,   47,  238,   50,   47,  236,   50,
+       52,   53,  152,   96,   98,   99,   54,  235,  100,  101,
+
+      234,   52,   55,   53,  132,  133,  124,  124,  233,  100,
+       98,  102,   96,   97,  243,  125,  243,  243,   96,  237,
+       99,  237,  232,   96,   98,   99,   52,  184,   53,   52,
+       53,  185,  231,  230,  100,   54,  102,  229,  228,  227,
+       52,   55,   53,  226,  225,  224,  100,  101,   96,  223,
+       99,   96,   97,  222,  221,  220,  219,  100,   98,  102,
+      218,  217,   96,   98,   99,   52,  216,   53,   57,   58,
+      237,   59,  237,  215,  240,  214,  213,  212,  211,   57,
+       60,   61,  100,  210,  102,   96,   97,   96,  209,   99,
+       96,   97,  208,  207,  206,  205,   96,   98,   99,  204,
+
+      203,   96,   98,   99,   57,  202,   61,   57,   58,  201,
+       59,  200,  199,  198,  197,  196,  195,  194,   57,   60,
+       61,   96,  193,   99,  192,  191,   96,  190,   99,  189,
+      188,  187,  186,  183,  182,  181,  180,  179,  178,  177,
+      176,  175,  174,   57,  173,   61,  104,  105,  172,  171,
+      170,  169,  106,  168,  167,  166,  165,  104,  107,  105,
+      164,  163,  162,  161,  160,  159,  158,  157,  156,  155,
+      122,  154,  153,  150,  149,  148,  147,  146,  145,  144,
+      143,  142,  104,  141,  105,  108,  109,  140,  139,  138,
+      137,  110,  136,  135,  134,  131,  108,  107,  109,  130,
+
+      127,   66,   65,  122,   94,   93,   90,   89,   88,   87,
+       83,   80,   76,   73,   72,   71,   68,   66,   65,  243,
+      243,  108,  243,  109,  112,  113,  243,  114,  243,  243,
+      243,  243,  243,  243,  243,  112,  115,  116,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-      243,  243,  243,  243,  243,  243,  243,  243,  243,  112,
-      243,  116,  117,  118,  243,  119,  243,  243,  243,  243,
-      243,  243,  243,  117,  115,  120,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-      243,  243,  243,  243,  243,  243,  243,  243,  117,  243,
+      112,  243,  116,  117,  118,  243,  119,  243,  243,  243,
+      243,  243,  243,  243,  117,  115,  120,  243,  243,  243,
+      243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
+      243,  243,  243,  243,  243,  243,  243,  243,  243,  117,
 
-      120,  128,  128,  243,  128,  243,  243,  243,  128,  128,
-      128,  243,  128,  243,  128,  128,  128,  243,  128,  243,
-      243,  128,  243,  243,  243,  243,  243,  243,  243,  243,
+      243,  120,  128,  128,  243,  128,  243,  243,  243,  128,
+      128,  128,  243,  128,  243,  128,  128,  128,  243,  128,
+      243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-      243,  243,  243,  243,  243,  243,  128,  104,  105,  243,
-      243,  243,  243,  106,  243,  243,  243,  243,  104,  107,
-      105,  243,  243,  243,  243,  243,  243,  243,  243,  243,
+      243,  243,  243,  243,  243,  243,  243,  128,  104,  105,
+      243,  243,  243,  243,  106,  243,  243,  243,  243,  104,
+      107,  105,  243,  243,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-      243,  243,  243,  104,  243,  105,  108,  109,  243,  243,
-      243,  243,  110,  243,  243,  243,  243,  108,  107,  109,
+      243,  243,  243,  243,  104,  243,  105,  108,  109,  243,
+      243,  243,  243,  110,  243,  243,  243,  243,  108,  107,
 
+      109,  243,  243,  243,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
+      243,  243,  243,  108,  243,  109,  104,  105,  243,  243,
+      243,  243,  106,  243,  243,  243,  243,  104,  107,  105,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-      243,  243,  108,  243,  109,  104,  105,  243,  243,  243,
+      243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
+      243,  243,  104,  243,  105,  104,  105,  243,  243,  243,
       243,  106,  243,  243,  243,  243,  104,  107,  105,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
+
       243,  104,  243,  105,  104,  105,  243,  243,  243,  243,
       106,  243,  243,  243,  243,  104,  107,  105,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-
-      104,  243,  105,  104,  105,  243,  243,  243,  243,  106,
-      243,  243,  243,  243,  104,  107,  105,  243,  243,  243,
-      243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-      243,  243,  243,  243,  243,  243,  243,  243,  243,  104,
-      243,  105,  112,  113,  243,  114,  243,  243,  243,  243,
-      243,  243,  243,  112,  115,  116,  243,  243,  243,  243,
+      104,  243,  105,  112,  113,  243,  114,  243,  243,  243,
+      243,  243,  243,  243,  112,  115,  116,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-      243,  243,  243,  243,  243,  243,  243,  243,  112,  243,
-      116,  117,  118,  243,  119,  243,  243,  243,  243,  243,
-      243,  243,  117,  115,  120,  243,  243,  243,  243,  243,
+      243,  243,  243,  243,  243,  243,  243,  243,  243,  112,
+      243,  116,  117,  118,  243,  119,  243,  243,  243,  243,
+      243,  243,  243,  117,  115,  120,  243,  243,  243,  243,
 
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-      243,  243,  243,  243,  243,  243,  243,  117,  243,  120,
+      243,  243,  243,  243,  243,  243,  243,  243,  117,  243,
+      120,  112,  113,  243,  114,  243,  243,  243,  243,  243,
+      243,  243,  112,  115,  116,  243,  243,  243,  243,  243,
+      243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
+      243,  243,  243,  243,  243,  243,  243,  112,  243,  116,
       112,  113,  243,  114,  243,  243,  243,  243,  243,  243,
       243,  112,  115,  116,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  112,  243,  116,  112,
+
       113,  243,  114,  243,  243,  243,  243,  243,  243,  243,
       112,  115,  116,  243,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  112,  243,  116,  112,  113,
-
       243,  114,  243,  243,  243,  243,  243,  243,  243,  112,
       115,  116,  243,  243,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-      243,  243,  243,  243,  112,  243,  116,  112,  113,  243,
-      114,  243,  243,  243,  243,  243,  243,  243,  112,  115,
-      116,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-      243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-      243,  243,  243,  112,  243,  116,  128,  128,  243,  128,
-      243,  243,  243,  128,  128,  128,  243,  128,  243,  128,
-      128,  128,  243,  128,  243,  243,  128,  243,  243,  243,
+      243,  243,  243,  243,  112,  243,  116,  128,  128,  243,
+      128,  243,  243,  243,  128,  128,  128,  243,  128,  243,
+      128,  128,  128,  243,  128,  243,  243,  243,  243,  243,
 
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-      243,  128,   46,   46,   46,   46,   46,   51,   51,   51,
-       51,   51,   56,   56,   56,   56,   56,   62,   62,   62,
-       62,   62,   67,   67,   67,   95,   95,   95,   95,   95,
-      103,  103,  103,  103,  103,  111,  111,  111,  111,  111,
-      121,  121,  121,  121,  123,  123,  123,  123,  123,  129,
-      243,  129,  129,  129,  128,  243,  128,  128,  128,  241,
-      241,  241,  243,  241,   11,  243,  243,  243,  243,  243,
+      243,  243,  128,   46,   46,   46,   46,   46,   51,   51,
+       51,   51,   51,   56,   56,   56,   56,   56,   62,   62,
+       62,   62,   62,   67,   67,   67,   95,   95,   95,   95,
+       95,  103,  103,  103,  103,  103,  111,  111,  111,  111,
+      111,  121,  121,  121,  121,  123,  123,  123,  123,  123,
+      129,  243,  129,  129,  129,  128,  243,  128,  128,  128,
+      241,  241,  241,  243,  241,   11,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
 
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-      243,  243
+      243,  243,  243,  243
     } ;
 
-static yyconst flex_int16_t yy_chk[1033] =
+static yyconst flex_int16_t yy_chk[1035] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    3,    3,    9,
-        4,    4,   22,   29,   22,  241,   10,    9,    3,    3,
-        3,    4,    4,    4,   10,   31,   33,   29,   64,   33,
-       40,   31,   35,   35,   40,   31,   64,  233,   64,   92,
-       35,   46,   46,    3,  232,    3,    4,  228,    4,    5,
-        5,   92,   46,   46,   46,    5,  227,   49,   49,  225,
-
-        5,    5,    5,   74,   74,  123,  125,  224,   49,   49,
-       49,   95,   95,  123,  125,  123,  125,   46,  229,   46,
-      229,  222,   95,   95,   95,    5,  160,    5,    6,    6,
-      160,  220,  218,   49,    6,   49,  217,  216,  214,    6,
-        6,    6,  212,  211,  210,   98,   98,   95,  208,   95,
-      100,  100,  206,  205,  204,  203,   98,   98,   98,  202,
-      201,  100,  100,  100,    6,  199,    6,    7,    7,  237,
-        7,  237,  198,  237,  197,  196,  195,  192,    7,    7,
-        7,   98,  191,   98,  101,  101,  100,  190,  100,  102,
-      102,  189,  188,  187,  186,  101,  101,  101,  185,  184,
-
-      102,  102,  102,    7,  181,    7,    8,    8,  180,    8,
-      179,  178,  177,  176,  175,  174,  173,    8,    8,    8,
-      101,  172,  101,  170,  169,  102,  168,  102,  165,  164,
-      163,  161,  159,  157,  156,  155,  154,  153,  152,  151,
-      150,  149,    8,  148,    8,   51,   51,  147,  146,  145,
-      144,   51,  143,  142,  141,  140,   51,   51,   51,  138,
-      137,  136,  135,  134,  133,  132,  131,  130,  127,  121,
-       94,   93,   91,   90,   89,   88,   87,   86,   85,   84,
-       83,   51,   82,   51,   55,   55,   81,   80,   79,   78,
-       55,   77,   76,   75,   73,   55,   55,   55,   72,   68,
-
-       66,   65,   62,   42,   41,   39,   38,   37,   36,   34,
-       32,   30,   28,   27,   25,   17,   15,   13,   11,    0,
-       55,    0,   55,   56,   56,    0,   56,    0,    0,    0,
-        0,    0,    0,    0,   56,   56,   56,    0,    0,    0,
+        1,    1,    1,    1,    1,    1,    1,    1,    3,    3,
+        9,    4,    4,   22,   29,   22,  241,   10,    9,    3,
+        3,    3,    4,    4,    4,   10,   31,   33,   29,   64,
+       33,   40,   31,   35,   35,   40,   31,   64,  233,   64,
+       92,   35,   46,   46,    3,  232,    3,    4,  228,    4,
+        5,    5,   92,   46,   46,   46,    5,  227,   49,   49,
+
+      225,    5,    5,    5,   74,   74,  123,  125,  224,   49,
+       49,   49,   95,   95,  123,  125,  123,  125,   46,  229,
+       46,  229,  222,   95,   95,   95,    5,  160,    5,    6,
+        6,  160,  220,  218,   49,    6,   49,  217,  216,  214,
+        6,    6,    6,  212,  211,  210,   98,   98,   95,  208,
+       95,  100,  100,  206,  205,  204,  203,   98,   98,   98,
+      202,  201,  100,  100,  100,    6,  199,    6,    7,    7,
+      237,    7,  237,  198,  237,  197,  196,  195,  192,    7,
+        7,    7,   98,  191,   98,  101,  101,  100,  190,  100,
+      102,  102,  189,  188,  187,  186,  101,  101,  101,  185,
+
+      184,  102,  102,  102,    7,  181,    7,    8,    8,  180,
+        8,  179,  178,  177,  176,  175,  174,  173,    8,    8,
+        8,  101,  172,  101,  170,  169,  102,  168,  102,  165,
+      164,  163,  161,  159,  157,  156,  155,  154,  153,  152,
+      151,  150,  149,    8,  148,    8,   51,   51,  147,  146,
+      145,  144,   51,  143,  142,  141,  140,   51,   51,   51,
+      138,  137,  136,  135,  134,  133,  132,  131,  130,  127,
+      121,   94,   93,   91,   90,   89,   88,   87,   86,   85,
+       84,   83,   51,   82,   51,   55,   55,   81,   80,   79,
+       78,   55,   77,   76,   75,   73,   55,   55,   55,   72,
+
+       68,   66,   65,   62,   42,   41,   39,   38,   37,   36,
+       34,   32,   30,   28,   27,   25,   17,   15,   13,   11,
+        0,   55,    0,   55,   56,   56,    0,   56,    0,    0,
+        0,    0,    0,    0,    0,   56,   56,   56,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   56,
-        0,   56,   60,   60,    0,   60,    0,    0,    0,    0,
-        0,    0,    0,   60,   60,   60,    0,    0,    0,    0,
+       56,    0,   56,   60,   60,    0,   60,    0,    0,    0,
+        0,    0,    0,    0,   60,   60,   60,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   60,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   60,
 
-       60,   70,   70,    0,   70,    0,    0,    0,   70,   70,
-       70,    0,   70,    0,   70,   70,   70,    0,   70,    0,
-        0,   70,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   60,   70,   70,    0,   70,    0,    0,    0,   70,
+       70,   70,    0,   70,    0,   70,   70,   70,    0,   70,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   70,  103,  103,    0,
-        0,    0,    0,  103,    0,    0,    0,    0,  103,  103,
-      103,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  103,    0,  103,  107,  107,    0,    0,
-        0,    0,  107,    0,    0,    0,    0,  107,  107,  107,
-
+        0,    0,    0,    0,    0,    0,    0,   70,  103,  103,
+        0,    0,    0,    0,  103,    0,    0,    0,    0,  103,
+      103,  103,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  103,    0,  103,  107,  107,    0,
+        0,    0,    0,  107,    0,    0,    0,    0,  107,  107,
+
+      107,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  107,    0,  107,  108,  108,    0,    0,    0,
-        0,  108,    0,    0,    0,    0,  108,  108,  108,    0,
+        0,    0,    0,  107,    0,  107,  108,  108,    0,    0,
+        0,    0,  108,    0,    0,    0,    0,  108,  108,  108,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  108,    0,  108,  109,  109,    0,    0,    0,    0,
-      109,    0,    0,    0,    0,  109,  109,  109,    0,    0,
+        0,    0,  108,    0,  108,  109,  109,    0,    0,    0,
+        0,  109,    0,    0,    0,    0,  109,  109,  109,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-      109,    0,  109,  110,  110,    0,    0,    0,    0,  110,
-        0,    0,    0,    0,  110,  110,  110,    0,    0,    0,
+        0,  109,    0,  109,  110,  110,    0,    0,    0,    0,
+      110,    0,    0,    0,    0,  110,  110,  110,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  110,
-        0,  110,  111,  111,    0,  111,    0,    0,    0,    0,
-        0,    0,    0,  111,  111,  111,    0,    0,    0,    0,
+      110,    0,  110,  111,  111,    0,  111,    0,    0,    0,
+        0,    0,    0,    0,  111,  111,  111,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  111,    0,
-      111,  115,  115,    0,  115,    0,    0,    0,    0,    0,
-        0,    0,  115,  115,  115,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  111,
+        0,  111,  115,  115,    0,  115,    0,    0,    0,    0,
+        0,    0,    0,  115,  115,  115,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  115,    0,  115,
-      117,  117,    0,  117,    0,    0,    0,    0,    0,    0,
-        0,  117,  117,  117,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  115,    0,
+      115,  117,  117,    0,  117,    0,    0,    0,    0,    0,
+        0,    0,  117,  117,  117,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  117,    0,  117,  118,
-      118,    0,  118,    0,    0,    0,    0,    0,    0,    0,
-      118,  118,  118,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  117,    0,  117,
+      118,  118,    0,  118,    0,    0,    0,    0,    0,    0,
+        0,  118,  118,  118,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  118,    0,  118,  119,  119,
+        0,    0,    0,    0,    0,    0,  118,    0,  118,  119,
 
-        0,  119,    0,    0,    0,    0,    0,    0,    0,  119,
-      119,  119,    0,    0,    0,    0,    0,    0,    0,    0,
+      119,    0,  119,    0,    0,    0,    0,    0,    0,    0,
+      119,  119,  119,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  119,    0,  119,  120,  120,    0,
-      120,    0,    0,    0,    0,    0,    0,    0,  120,  120,
-      120,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  119,    0,  119,  120,  120,
+        0,  120,    0,    0,    0,    0,    0,    0,    0,  120,
+      120,  120,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  120,    0,  120,  129,  129,    0,  129,
-        0,    0,    0,  129,  129,  129,    0,  129,    0,  129,
-      129,  129,    0,  129,    0,    0,  129,    0,    0,    0,
+        0,    0,    0,    0,  120,    0,  120,  129,  129,    0,
+      129,    0,    0,    0,  129,  129,  129,    0,  129,    0,
+      129,  129,  129,    0,  129,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  129,  244,  244,  244,  244,  244,  245,  245,  245,
-      245,  245,  246,  246,  246,  246,  246,  247,  247,  247,
-      247,  247,  248,  248,  248,  249,  249,  249,  249,  249,
-      250,  250,  250,  250,  250,  251,  251,  251,  251,  251,
-      252,  252,  252,  252,  253,  253,  253,  253,  253,  254,
-        0,  254,  254,  254,  255,    0,  255,  255,  255,  256,
-      256,  256,    0,  256,  243,  243,  243,  243,  243,  243,
+        0,    0,  129,  244,  244,  244,  244,  244,  245,  245,
+      245,  245,  245,  246,  246,  246,  246,  246,  247,  247,
+      247,  247,  247,  248,  248,  248,  249,  249,  249,  249,
+      249,  250,  250,  250,  250,  250,  251,  251,  251,  251,
+      251,  252,  252,  252,  252,  253,  253,  253,  253,  253,
+      254,    0,  254,  254,  254,  255,    0,  255,  255,  255,
+      256,  256,  256,    0,  256,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
 
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
       243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
-      243,  243
+      243,  243,  243,  243
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -892,7 +904,7 @@ static void pbcwhere(const char *text, int *line, int *col )
 #define	STORE_POS
 #define	STORE_LOC
 #endif
-#line 895 "ael_lex.c"
+#line 907 "ael_lex.c"
 
 #define INITIAL 0
 #define paren 1
@@ -1102,11 +1114,9 @@ static int input (yyscan_t yyscanner );
 #ifndef YY_DECL
 #define YY_DECL_IS_OURS 1
 
-extern int ael_yylex \
-               (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
+extern int ael_yylex (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
 
-#define YY_DECL int ael_yylex \
-               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
+#define YY_DECL int ael_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
 #endif /* !YY_DECL */
 
 /* Code executed at the beginning of each rule, after yytext and yyleng
@@ -1133,18 +1143,18 @@ YY_DECL
 	register int yy_act;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-#line 181 "ael.flex"
+#line 183 "ael.flex"
 
 
-#line 1139 "ael_lex.c"
+#line 1149 "ael_lex.c"
 
     yylval = yylval_param;
 
     yylloc = yylloc_param;
 
-	if ( yyg->yy_init )
+	if ( !yyg->yy_init )
 		{
-		yyg->yy_init = 0;
+		yyg->yy_init = 1;
 
 #ifdef YY_USER_INIT
 		YY_USER_INIT;
@@ -1227,260 +1237,260 @@ do_action:	/* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 183 "ael.flex"
+#line 185 "ael.flex"
 { STORE_POS; return LC;}
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 184 "ael.flex"
+#line 186 "ael.flex"
 { STORE_POS; return RC;}
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 185 "ael.flex"
+#line 187 "ael.flex"
 { STORE_POS; return LP;}
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 186 "ael.flex"
+#line 188 "ael.flex"
 { STORE_POS; return RP;}
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 187 "ael.flex"
+#line 189 "ael.flex"
 { STORE_POS; return SEMI;}
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 188 "ael.flex"
+#line 190 "ael.flex"
 { STORE_POS; return EQ;}
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 189 "ael.flex"
+#line 191 "ael.flex"
 { STORE_POS; return COMMA;}
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 190 "ael.flex"
+#line 192 "ael.flex"
 { STORE_POS; return COLON;}
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 191 "ael.flex"
+#line 193 "ael.flex"
 { STORE_POS; return AMPER;}
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 192 "ael.flex"
+#line 194 "ael.flex"
 { STORE_POS; return BAR;}
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 193 "ael.flex"
+#line 195 "ael.flex"
 { STORE_POS; return EXTENMARK;}
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 194 "ael.flex"
+#line 196 "ael.flex"
 { STORE_POS; return AT;}
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 195 "ael.flex"
+#line 197 "ael.flex"
 {/*comment*/}
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 196 "ael.flex"
+#line 198 "ael.flex"
 { STORE_POS; return KW_CONTEXT;}
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 197 "ael.flex"
+#line 199 "ael.flex"
 { STORE_POS; return KW_ABSTRACT;}
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 198 "ael.flex"
+#line 200 "ael.flex"
 { STORE_POS; return KW_EXTEND;}
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 199 "ael.flex"
+#line 201 "ael.flex"
 { STORE_POS; return KW_MACRO;};
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 200 "ael.flex"
+#line 202 "ael.flex"
 { STORE_POS; return KW_GLOBALS;}
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 201 "ael.flex"
+#line 203 "ael.flex"
 { STORE_POS; return KW_LOCAL;}
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 202 "ael.flex"
+#line 204 "ael.flex"
 { STORE_POS; return KW_IGNOREPAT;}
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 203 "ael.flex"
+#line 205 "ael.flex"
 { STORE_POS; return KW_SWITCH;}
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 204 "ael.flex"
+#line 206 "ael.flex"
 { STORE_POS; return KW_IF;}
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 205 "ael.flex"
+#line 207 "ael.flex"
 { STORE_POS; return KW_IFTIME;}
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 206 "ael.flex"
+#line 208 "ael.flex"
 { STORE_POS; return KW_RANDOM;}
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 207 "ael.flex"
+#line 209 "ael.flex"
 { STORE_POS; return KW_REGEXTEN;}
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 208 "ael.flex"
+#line 210 "ael.flex"
 { STORE_POS; return KW_HINT;}
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 209 "ael.flex"
+#line 211 "ael.flex"
 { STORE_POS; return KW_ELSE;}
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 210 "ael.flex"
+#line 212 "ael.flex"
 { STORE_POS; return KW_GOTO;}
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 211 "ael.flex"
+#line 213 "ael.flex"
 { STORE_POS; return KW_JUMP;}
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 212 "ael.flex"
+#line 214 "ael.flex"
 { STORE_POS; return KW_RETURN;}
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 213 "ael.flex"
+#line 215 "ael.flex"
 { STORE_POS; return KW_BREAK;}
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 214 "ael.flex"
+#line 216 "ael.flex"
 { STORE_POS; return KW_CONTINUE;}
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 215 "ael.flex"
+#line 217 "ael.flex"
 { STORE_POS; return KW_FOR;}
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 216 "ael.flex"
+#line 218 "ael.flex"
 { STORE_POS; return KW_WHILE;}
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 217 "ael.flex"
+#line 219 "ael.flex"
 { STORE_POS; return KW_CASE;}
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 218 "ael.flex"
+#line 220 "ael.flex"
 { STORE_POS; return KW_DEFAULT;}
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 219 "ael.flex"
+#line 221 "ael.flex"
 { STORE_POS; return KW_PATTERN;}
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 220 "ael.flex"
+#line 222 "ael.flex"
 { STORE_POS; return KW_CATCH;}
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 221 "ael.flex"
+#line 223 "ael.flex"
 { STORE_POS; return KW_SWITCHES;}
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 222 "ael.flex"
+#line 224 "ael.flex"
 { STORE_POS; return KW_ESWITCHES;}
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 223 "ael.flex"
+#line 225 "ael.flex"
 { STORE_POS; return KW_INCLUDES;}
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 224 "ael.flex"
+#line 226 "ael.flex"
 { BEGIN(comment); my_col += 2; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 226 "ael.flex"
+#line 228 "ael.flex"
 { my_col += yyleng; }
 	YY_BREAK
 case 44:
 /* rule 44 can match eol */
 YY_RULE_SETUP
-#line 227 "ael.flex"
+#line 229 "ael.flex"
 { ++my_lineno; my_col=1;}
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 228 "ael.flex"
+#line 230 "ael.flex"
 { my_col += yyleng; }
 	YY_BREAK
 case 46:
 /* rule 46 can match eol */
 YY_RULE_SETUP
-#line 229 "ael.flex"
+#line 231 "ael.flex"
 { ++my_lineno; my_col=1;}
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 230 "ael.flex"
+#line 232 "ael.flex"
 { my_col += 2; BEGIN(INITIAL); }
 	YY_BREAK
 case 48:
 /* rule 48 can match eol */
 YY_RULE_SETUP
-#line 232 "ael.flex"
+#line 234 "ael.flex"
 { my_lineno++; my_col = 1; }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 233 "ael.flex"
+#line 235 "ael.flex"
 { my_col += yyleng; }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 234 "ael.flex"
+#line 236 "ael.flex"
 { my_col += (yyleng*8)-(my_col%8); }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 236 "ael.flex"
+#line 238 "ael.flex"
 {
 		STORE_POS;
 		yylval->str = strdup(yytext);
@@ -1498,7 +1508,7 @@ YY_RULE_SETUP
 case 52:
 /* rule 52 can match eol */
 YY_RULE_SETUP
-#line 252 "ael.flex"
+#line 254 "ael.flex"
 {
 		if ( pbcpop(')') ) {	/* error */
 			STORE_LOC;
@@ -1524,7 +1534,7 @@ YY_RULE_SETUP
 case 53:
 /* rule 53 can match eol */
 YY_RULE_SETUP
-#line 274 "ael.flex"
+#line 276 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if (c == '(')
@@ -1536,7 +1546,7 @@ YY_RULE_SETUP
 case 54:
 /* rule 54 can match eol */
 YY_RULE_SETUP
-#line 282 "ael.flex"
+#line 284 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if ( pbcpop(c))  { /* error */
@@ -1561,7 +1571,7 @@ YY_RULE_SETUP
 case 55:
 /* rule 55 can match eol */
 YY_RULE_SETUP
-#line 304 "ael.flex"
+#line 306 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if (c == '(')
@@ -1573,7 +1583,7 @@ YY_RULE_SETUP
 case 56:
 /* rule 56 can match eol */
 YY_RULE_SETUP
-#line 312 "ael.flex"
+#line 314 "ael.flex"
 {
 		if ( pbcpop(')') ) { /* error */
 			STORE_LOC;
@@ -1601,7 +1611,7 @@ YY_RULE_SETUP
 case 57:
 /* rule 57 can match eol */
 YY_RULE_SETUP
-#line 336 "ael.flex"
+#line 338 "ael.flex"
 {
 		if( parencount != 0) { /* printf("Folding in a comma!\n"); */
 			yymore();
@@ -1619,7 +1629,7 @@ YY_RULE_SETUP
 case 58:
 /* rule 58 can match eol */
 YY_RULE_SETUP
-#line 350 "ael.flex"
+#line 352 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if ( pbcpop(c) ) { /* error */
@@ -1640,7 +1650,7 @@ YY_RULE_SETUP
 case 59:
 /* rule 59 can match eol */
 YY_RULE_SETUP
-#line 367 "ael.flex"
+#line 369 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		yymore();
@@ -1650,7 +1660,7 @@ YY_RULE_SETUP
 case 60:
 /* rule 60 can match eol */
 YY_RULE_SETUP
-#line 373 "ael.flex"
+#line 375 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if ( pbcpop(c) ) { /* error */
@@ -1666,7 +1676,7 @@ YY_RULE_SETUP
 case 61:
 /* rule 61 can match eol */
 YY_RULE_SETUP
-#line 385 "ael.flex"
+#line 387 "ael.flex"
 {
 		STORE_LOC;
 		yylval->str = strdup(yytext);
@@ -1679,7 +1689,7 @@ YY_RULE_SETUP
 case 62:
 /* rule 62 can match eol */
 YY_RULE_SETUP
-#line 394 "ael.flex"
+#line 396 "ael.flex"
 {
 		char fnamebuf[1024],*p1,*p2;
 		int glob_ret;
@@ -1729,7 +1739,7 @@ case YY_STATE_EOF(paren):
 case YY_STATE_EOF(semic):
 case YY_STATE_EOF(argg):
 case YY_STATE_EOF(comment):
-#line 439 "ael.flex"
+#line 441 "ael.flex"
 {
 		char fnamebuf[2048];
 		if (include_stack_index > 0 && include_stack[include_stack_index-1].globbuf_pos < include_stack[include_stack_index-1].globbuf.gl_pathc-1) {
@@ -1766,10 +1776,10 @@ case YY_STATE_EOF(comment):
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 473 "ael.flex"
+#line 475 "ael.flex"
 ECHO;
 	YY_BREAK
-#line 1772 "ael_lex.c"
+#line 1782 "ael_lex.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -2071,7 +2081,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
 {
 	register int yy_is_jam;
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
 	register char *yy_cp = yyg->yy_c_buf_p;
 
 	register YY_CHAR yy_c = 1;
@@ -2520,10 +2530,10 @@ YY_BUFFER_STATE ael_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yys
  * @note If you want to scan bytes that may contain NUL values, then use
  *       ael_yy_scan_bytes() instead.
  */
-YY_BUFFER_STATE ael_yy_scan_string (yyconst char * yy_str , yyscan_t yyscanner)
+YY_BUFFER_STATE ael_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
 {
     
-	return ael_yy_scan_bytes(yy_str,strlen(yy_str) ,yyscanner);
+	return ael_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
 }
 
 /** Setup the input buffer state to scan the given bytes. The next call to ael_yylex() will
@@ -2533,7 +2543,7 @@ YY_BUFFER_STATE ael_yy_scan_string (yyconst char * yy_str , yyscan_t yyscanner)
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE ael_yy_scan_bytes  (yyconst char * bytes, int  len , yyscan_t yyscanner)
+YY_BUFFER_STATE ael_yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
 {
 	YY_BUFFER_STATE b;
 	char *buf;
@@ -2541,15 +2551,15 @@ YY_BUFFER_STATE ael_yy_scan_bytes  (yyconst char * bytes, int  len , yyscan_t yy
 	int i;
     
 	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = len + 2;
+	n = _yybytes_len + 2;
 	buf = (char *) ael_yyalloc(n ,yyscanner );
 	if ( ! buf )
 		YY_FATAL_ERROR( "out of dynamic memory in ael_yy_scan_bytes()" );
 
-	for ( i = 0; i < len; ++i )
-		buf[i] = bytes[i];
+	for ( i = 0; i < _yybytes_len; ++i )
+		buf[i] = yybytes[i];
 
-	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
 
 	b = ael_yy_scan_buffer(buf,n ,yyscanner);
 	if ( ! b )
@@ -2760,21 +2770,51 @@ void ael_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
     yylloc = yylloc_param;
 }
     
+/* User-visible API */
+
+/* ael_yylex_init is special because it creates the scanner itself, so it is
+ * the ONLY reentrant function that doesn't take the scanner as the last argument.
+ * That's why we explicitly handle the declaration, instead of using our macros.
+ */
+
+int ael_yylex_init(yyscan_t* ptr_yy_globals)
+
+{
+    if (ptr_yy_globals == NULL){
+        errno = EINVAL;
+        return 1;
+    }
+
+    *ptr_yy_globals = (yyscan_t) ael_yyalloc ( sizeof( struct yyguts_t ), NULL );
+
+    if (*ptr_yy_globals == NULL){
+        errno = ENOMEM;
+        return 1;
+    }
+
+    /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
+    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
+
+    return yy_init_globals ( *ptr_yy_globals );
+}
+
 static int yy_init_globals (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     /* Initialization is the same as for the non-reentrant scanner.
-       This function is called once per scanner lifetime. */
+     * This function is called from ael_yylex_destroy(), so don't allocate here.
+     */
 
     yyg->yy_buffer_stack = 0;
     yyg->yy_buffer_stack_top = 0;
     yyg->yy_buffer_stack_max = 0;
     yyg->yy_c_buf_p = (char *) 0;
-    yyg->yy_init = 1;
+    yyg->yy_init = 0;
     yyg->yy_start = 0;
+
     yyg->yy_start_stack_ptr = 0;
     yyg->yy_start_stack_depth = 0;
-    yyg->yy_start_stack = (int *) 0;
+    yyg->yy_start_stack =  NULL;
 
 /* Defined in main.c */
 #ifdef YY_STDINIT
@@ -2791,33 +2831,6 @@ static int yy_init_globals (yyscan_t yyscanner)
     return 0;
 }
 
-/* User-visible API */
-
-/* ael_yylex_init is special because it creates the scanner itself, so it is
- * the ONLY reentrant function that doesn't take the scanner as the last argument.
- * That's why we explicitly handle the declaration, instead of using our macros.
- */
-
-int ael_yylex_init(yyscan_t* ptr_yy_globals)
-
-{
-    if (ptr_yy_globals == NULL){
-        errno = EINVAL;
-        return 1;
-    }
-
-    *ptr_yy_globals = (yyscan_t) ael_yyalloc ( sizeof( struct yyguts_t ), NULL );
-
-    if (*ptr_yy_globals == NULL){
-        errno = ENOMEM;
-        return 1;
-    }
-
-    memset(*ptr_yy_globals,0,sizeof(struct yyguts_t));
-
-    return yy_init_globals ( *ptr_yy_globals );
-}
-
 /* ael_yylex_destroy is for both reentrant and non-reentrant scanners. */
 int ael_yylex_destroy  (yyscan_t yyscanner)
 {
@@ -2838,8 +2851,13 @@ int ael_yylex_destroy  (yyscan_t yyscanner)
         ael_yyfree(yyg->yy_start_stack ,yyscanner );
         yyg->yy_start_stack = NULL;
 
+    /* Reset the globals. This is important in a non-reentrant scanner so the next time
+     * ael_yylex() is called, initialization will occur. */
+    yy_init_globals( yyscanner);
+
     /* Destroy the main struct (reentrant only). */
     ael_yyfree ( yyscanner , yyscanner );
+    yyscanner = NULL;
     return 0;
 }
 
@@ -2851,7 +2869,6 @@ int ael_yylex_destroy  (yyscan_t yyscanner)
 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
 {
 	register int i;
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	for ( i = 0; i < n; ++i )
 		s1[i] = s2[i];
 }
@@ -2861,7 +2878,6 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yysca
 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
 {
 	register int n;
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	for ( n = 0; s[n]; ++n )
 		;
 
@@ -2893,19 +2909,7 @@ void ael_yyfree (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#undef YY_NEW_FILE
-#undef YY_FLUSH_BUFFER
-#undef yy_set_bol
-#undef yy_new_buffer
-#undef yy_set_interactive
-#undef yytext_ptr
-#undef YY_DO_BEFORE_ACTION
-
-#ifdef YY_DECL_IS_OURS
-#undef YY_DECL_IS_OURS
-#undef YY_DECL
-#endif
-#line 473 "ael.flex"
+#line 475 "ael.flex"
 
 
 
-- 
GitLab