[svn-commits] murf: trunk r39151 - in /trunk: include/asterisk/ pbx/ pbx/ael/ pbx/ael/ael-t...

svn-commits at lists.digium.com svn-commits at lists.digium.com
Mon Aug 7 05:59:48 MST 2006


Author: murf
Date: Mon Aug  7 07:59:47 2006
New Revision: 39151

URL: http://svn.digium.com/view/asterisk?rev=39151&view=rev
Log:
The contents of branch teams/murf/bug_7598 are being folded in here.

Added:
    trunk/pbx/ael/ael-test/ael-ntest10/
      - copied from r39150, team/murf/bug_7598/pbx/ael/ael-test/ael-ntest10/
    trunk/pbx/ael/ael-test/ael-ntest10/extensions.ael   (props changed)
      - copied unchanged from r39150, team/murf/bug_7598/pbx/ael/ael-test/ael-ntest10/extensions.ael
    trunk/pbx/ael/ael-test/ael-test11/
      - copied from r39150, team/murf/bug_7598/pbx/ael/ael-test/ael-test11/
    trunk/pbx/ael/ael-test/ael-test11/extensions.ael   (props changed)
      - copied unchanged from r39150, team/murf/bug_7598/pbx/ael/ael-test/ael-test11/extensions.ael
    trunk/pbx/ael/ael-test/ref.ael-ntest10   (props changed)
      - copied unchanged from r39150, team/murf/bug_7598/pbx/ael/ael-test/ref.ael-ntest10
    trunk/pbx/ael/ael-test/ref.ael-test11   (props changed)
      - copied unchanged from r39150, team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test11
Modified:
    trunk/include/asterisk/ael_structs.h
    trunk/pbx/ael/ael-test/ref.ael-test3
    trunk/pbx/ael/ael-test/ref.ael-test7
    trunk/pbx/ael/ael.tab.c
    trunk/pbx/ael/ael.y
    trunk/pbx/pbx_ael.c

Modified: trunk/include/asterisk/ael_structs.h
URL: http://svn.digium.com/view/asterisk/trunk/include/asterisk/ael_structs.h?rev=39151&r1=39150&r2=39151&view=diff
==============================================================================
--- trunk/include/asterisk/ael_structs.h (original)
+++ trunk/include/asterisk/ael_structs.h Mon Aug  7 07:59:47 2006
@@ -24,34 +24,34 @@
 
 typedef enum 
 {
-	PV_WORD, /* an ident, string, name, label, etc. A user-supplied string. */
-	PV_MACRO,
-	PV_CONTEXT,
-	PV_MACRO_CALL,
-	PV_APPLICATION_CALL,
-	PV_CASE,
-	PV_PATTERN,
-	PV_DEFAULT,
-	PV_CATCH,
-	PV_SWITCHES,
-	PV_ESWITCHES,
-	PV_INCLUDES,
-	PV_STATEMENTBLOCK,
-	PV_VARDEC, /* you know, var=val; */
-	PV_GOTO,
-	PV_LABEL,
-	PV_FOR,
-	PV_WHILE,
-	PV_BREAK,
-	PV_RETURN,
-	PV_CONTINUE,
-	PV_IF,
-	PV_IFTIME,
-	PV_RANDOM,
-	PV_SWITCH,
-	PV_EXTENSION,
-	PV_IGNOREPAT,
-	PV_GLOBALS,
+	PV_WORD, /* an ident, string, name, label, etc. A user-supplied string. */ /* 0 */
+	PV_MACRO,             /* 1 */
+	PV_CONTEXT,           /* 2 */
+	PV_MACRO_CALL,        /* 3 */
+	PV_APPLICATION_CALL,  /* 4 */
+	PV_CASE,              /* 5 */
+	PV_PATTERN,           /* 6 */
+	PV_DEFAULT,           /* 7 */
+	PV_CATCH,             /* 8 */
+	PV_SWITCHES,          /* 9 */
+	PV_ESWITCHES,         /* 10 */
+	PV_INCLUDES,          /* 11 */
+	PV_STATEMENTBLOCK,    /* 12 */
+	PV_VARDEC, /* you know, var=val; */  /* 13 */
+	PV_GOTO,              /* 14 */
+	PV_LABEL,             /* 15 */
+	PV_FOR,               /* 16 */
+	PV_WHILE,             /* 17 */
+	PV_BREAK,             /* 18 */
+	PV_RETURN,            /* 19 */
+	PV_CONTINUE,          /* 20 */
+	PV_IF,                /* 21 */
+	PV_IFTIME,            /* 22 */
+	PV_RANDOM,            /* 23 */
+	PV_SWITCH,            /* 24 */
+	PV_EXTENSION,         /* 25 */
+	PV_IGNOREPAT,         /* 26 */
+	PV_GLOBALS,           /* 27 */
 
 } pvaltype;
 
@@ -88,7 +88,8 @@
 		struct pval *statements; /* used in case, default, catch, while's statement, CONTEXT elements, GLOBALS */
 		char *val;  /* used in VARDEC */
 		char *for_test; /* used in FOR */
-		
+		int label_in_case; /* a boolean for LABELs */
+		struct pval *goto_target;  /* used in GOTO */
 	} u2;
 	
 	union
@@ -98,6 +99,8 @@
 		struct pval *macro_statements; /* used in MACRO */
 		int abstract;  /* used for context */
 		char *hints; /* used in EXTENSION */
+		int goto_target_in_case; /* used in GOTO */
+		struct ael_extension *compiled_label;
 	} u3;
 	
 	union
@@ -106,11 +109,11 @@
 		int regexten;                /* used in EXTENSION */
 	} u4;
 	
-	
 	struct pval *next; /* the pval at the end of this ptr will ALWAYS be of the same type as this one! 
 						  EXCEPT for objects of the different types, that are in the same list, like contexts & macros, etc */
 	
-	
+	struct pval *dad; /* the 'container' of this struct instance */
+	struct pval *prev; /* the opposite of the 'next' pointer */
 } ;
 
 
@@ -174,6 +177,8 @@
 	char *hints;
 	int regexten;
 	
+	struct ast_context *context;
+	
 	struct ael_priority *plist;
 	struct ael_priority *plist_last;
 	struct ael_extension *next_exten;

Propchange: trunk/pbx/ael/ael-test/ael-ntest10/extensions.ael
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/pbx/ael/ael-test/ael-ntest10/extensions.ael
------------------------------------------------------------------------------
    svn:keywords = Author Id Date Revision

Propchange: trunk/pbx/ael/ael-test/ael-ntest10/extensions.ael
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Propchange: trunk/pbx/ael/ael-test/ael-test11/extensions.ael
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/pbx/ael/ael-test/ael-test11/extensions.ael
------------------------------------------------------------------------------
    svn:keywords = Author Id Date Revision

Propchange: trunk/pbx/ael/ael-test/ael-test11/extensions.ael
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Propchange: trunk/pbx/ael/ael-test/ref.ael-ntest10
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/pbx/ael/ael-test/ref.ael-ntest10
------------------------------------------------------------------------------
    svn:keywords = Author Id Date Revision

Propchange: trunk/pbx/ael/ael-test/ref.ael-ntest10
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Propchange: trunk/pbx/ael/ael-test/ref.ael-test11
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/pbx/ael/ael-test/ref.ael-test11
------------------------------------------------------------------------------
    svn:keywords = Author Id Date Revision

Propchange: trunk/pbx/ael/ael-test/ref.ael-test11
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: trunk/pbx/ael/ael-test/ref.ael-test3
URL: http://svn.digium.com/view/asterisk/trunk/pbx/ael/ael-test/ref.ael-test3?rev=39151&r1=39150&r2=39151&view=diff
==============================================================================
--- trunk/pbx/ael/ael-test/ref.ael-test3 (original)
+++ trunk/pbx/ael/ael-test/ref.ael-test3 Mon Aug  7 07:59:47 2006
@@ -1,18 +1,18 @@
 Executed ast_register_file_version();
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3428 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3435 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:ael.flex  line:467 func: ael_yylex    --Read in included file ./include1.ael2, 78 chars
-LOG: lev:2 file:ael.flex  line:467 func: ael_yylex    --Read in included file ./include2.ael2, 98 chars
-LOG: lev:2 file:ael.flex  line:467 func: ael_yylex    --Read in included file ./include3.ael2, 57 chars
-LOG: lev:2 file:ael.flex  line:467 func: ael_yylex    --Read in included file ./include5.ael2, 56 chars
-LOG: lev:2 file:ael.flex  line:467 func: ael_yylex    --Read in included file ./include4.ael2, 87 chars
-LOG: lev:2 file:ael.flex  line:467 func: ael_yylex    --Read in included file /etc/asterisk/telemarket_torture.ael2, 28036 chars
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3438 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:../pbx/pbx_ael.c  line:2186 func: check_pval_item  Warning: file ./extensions.ael, line 5-5: expression Console/dsp has operators, but no variables. Interesting...
-LOG: lev:3 file:../pbx/pbx_ael.c  line:2186 func: check_pval_item  Warning: file ./extensions.ael, line 8-8: expression "Joe-Worker" has operators, but no variables. Interesting...
-LOG: lev:3 file:../pbx/pbx_ael.c  line:2186 func: check_pval_item  Warning: file ./extensions.ael, line 10-10: expression Zap/6  has operators, but no variables. Interesting...
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3441 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3443 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3446 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3449 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:261 func: main  172 contexts, 858 extensions, 2326 priorities
+Executed ast_register_file_version();
+Executed ast_register_file_version();
+Executed ast_register_file_version();
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3732 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3739 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:ael.flex  line:422 func: ael_yylex    --Read in included file ./include1.ael2, 78 chars
+LOG: lev:2 file:ael.flex  line:422 func: ael_yylex    --Read in included file ./include2.ael2, 98 chars
+LOG: lev:2 file:ael.flex  line:422 func: ael_yylex    --Read in included file ./include3.ael2, 57 chars
+LOG: lev:2 file:ael.flex  line:422 func: ael_yylex    --Read in included file ./include5.ael2, 56 chars
+LOG: lev:2 file:ael.flex  line:422 func: ael_yylex    --Read in included file ./include4.ael2, 87 chars
+LOG: lev:2 file:ael.flex  line:422 func: ael_yylex    --Read in included file /etc/asterisk/telemarket_torture.ael2, 28036 chars
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3742 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3745 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3747 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3750 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3753 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:253 func: main  172 contexts, 858 extensions, 2326 priorities

Modified: trunk/pbx/ael/ael-test/ref.ael-test7
URL: http://svn.digium.com/view/asterisk/trunk/pbx/ael/ael-test/ref.ael-test7?rev=39151&r1=39150&r2=39151&view=diff
==============================================================================
--- trunk/pbx/ael/ael-test/ref.ael-test7 (original)
+++ trunk/pbx/ael/ael-test/ref.ael-test7 Mon Aug  7 07:59:47 2006
@@ -1,13 +1,14 @@
 Executed ast_register_file_version();
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3428 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3435 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3438 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:../pbx/pbx_ael.c  line:2186 func: check_pval_item  Warning: file ./extensions.ael, line 6-6: expression Console/dsp has operators, but no variables. Interesting...
-LOG: lev:3 file:../pbx/pbx_ael.c  line:2186 func: check_pval_item  Warning: file ./extensions.ael, line 10-10: expression pstn-spa3k has operators, but no variables. Interesting...
-LOG: lev:4 file:../pbx/pbx_ael.c  line:2055 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:4 file:../pbx/pbx_ael.c  line:2055 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:4 file:../pbx/pbx_ael.c  line:2055 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:../pbx/pbx_ael.c  line:2055 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:4 file:../pbx/pbx_ael.c  line:2036 func: check_pval_item  Error: file ./extensions.ael, line 452-452: macro call to non-existent std-exten-ael !
-LOG: lev:4 file:../pbx/pbx_ael.c  line:3451 func: pbx_load_module  Sorry, but 0 syntax errors and 5 semantic errors were detected. It doesn't make sense to compile.
-LOG: lev:4 file:ael2_parse  line:261 func: main  0 contexts, 0 extensions, 0 priorities
+Executed ast_register_file_version();
+Executed ast_register_file_version();
+Executed ast_register_file_version();
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3732 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3739 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3742 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:4 file:../pbx/pbx_ael.c  line:2229 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:4 file:../pbx/pbx_ael.c  line:2229 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:4 file:../pbx/pbx_ael.c  line:2229 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:../pbx/pbx_ael.c  line:2229 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:4 file:../pbx/pbx_ael.c  line:2210 func: check_pval_item  Error: file ./extensions.ael, line 452-452: macro call to non-existent std-exten-ael !
+LOG: lev:4 file:../pbx/pbx_ael.c  line:3755 func: pbx_load_module  Sorry, but 0 syntax errors and 5 semantic errors were detected. It doesn't make sense to compile.
+LOG: lev:4 file:ael2_parse  line:253 func: main  0 contexts, 0 extensions, 0 priorities

Modified: trunk/pbx/ael/ael.tab.c
URL: http://svn.digium.com/view/asterisk/trunk/pbx/ael/ael.tab.c?rev=39151&r1=39150&r2=39151&view=diff
==============================================================================
--- trunk/pbx/ael/ael.tab.c (original)
+++ trunk/pbx/ael/ael.tab.c Mon Aug  7 07:59:47 2006
@@ -187,7 +187,7 @@
 #include "asterisk/ael_structs.h"
 
 static pval * linku1(pval *head, pval *tail);
-
+static void set_dads(pval *dad, pval *child_list);
 void reset_parencount(yyscan_t yyscanner);
 void reset_semicount(yyscan_t yyscanner);
 void reset_argcount(yyscan_t yyscanner );
@@ -615,18 +615,18 @@
 static const yytype_uint16 yyrline[] =
 {
        0,   185,   185,   188,   189,   190,   193,   194,   195,   196,
-     199,   200,   203,   211,   212,   215,   220,   225,   226,   227,
-     230,   230,   237,   238,   239,   240,   243,   244,   245,   248,
-     249,   250,   251,   252,   253,   254,   255,   258,   263,   267,
-     272,   277,   287,   288,   289,   295,   300,   304,   312,   312,
-     316,   319,   322,   333,   334,   341,   342,   347,   355,   356,
-     360,   366,   375,   378,   379,   382,   385,   388,   389,   390,
-     388,   396,   400,   401,   402,   403,   406,   406,   439,   440,
-     441,   442,   446,   449,   450,   453,   454,   457,   460,   464,
-     468,   472,   478,   479,   483,   486,   492,   492,   497,   505,
-     505,   516,   523,   526,   527,   530,   531,   534,   537,   538,
-     541,   545,   549,   555,   556,   559,   560,   566,   571,   576,
-     577,   578,   581,   582,   589,   590,   591,   594,   597
+     199,   200,   203,   212,   213,   216,   222,   228,   229,   230,
+     233,   233,   240,   241,   242,   243,   246,   247,   248,   251,
+     252,   253,   254,   255,   256,   257,   258,   261,   266,   270,
+     275,   280,   290,   291,   292,   298,   303,   307,   315,   315,
+     319,   322,   325,   336,   337,   344,   345,   350,   358,   359,
+     363,   369,   378,   381,   382,   385,   388,   391,   392,   393,
+     391,   399,   403,   404,   405,   406,   409,   409,   442,   443,
+     444,   445,   449,   452,   453,   456,   457,   460,   463,   467,
+     471,   475,   481,   482,   486,   489,   495,   495,   500,   508,
+     508,   519,   526,   529,   530,   533,   534,   537,   540,   541,
+     544,   548,   552,   558,   559,   562,   563,   569,   574,   579,
+     580,   581,   584,   585,   592,   593,   594,   597,   600
 };
 #endif
 
@@ -2109,55 +2109,58 @@
 		(yyval.pval) = npval2(PV_CONTEXT, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)]));
 		(yyval.pval)->u1.str = (yyvsp[(3) - (6)].str);
 		(yyval.pval)->u2.statements = (yyvsp[(5) - (6)].pval);
+		set_dads((yyval.pval),(yyvsp[(5) - (6)].pval));
 		(yyval.pval)->u3.abstract = (yyvsp[(1) - (6)].intval); ;}
     break;
 
   case 13:
-#line 211 "ael.y"
+#line 212 "ael.y"
     { (yyval.intval) = 1; ;}
     break;
 
   case 14:
-#line 212 "ael.y"
+#line 213 "ael.y"
     { (yyval.intval) = 0; ;}
     break;
 
   case 15:
-#line 215 "ael.y"
+#line 216 "ael.y"
     {
 		(yyval.pval) = npval2(PV_MACRO, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)]));
-		(yyval.pval)->u1.str = (yyvsp[(2) - (8)].str); (yyval.pval)->u2.arglist = (yyvsp[(4) - (8)].pval); (yyval.pval)->u3.macro_statements = (yyvsp[(7) - (8)].pval); ;}
+		(yyval.pval)->u1.str = (yyvsp[(2) - (8)].str); (yyval.pval)->u2.arglist = (yyvsp[(4) - (8)].pval); (yyval.pval)->u3.macro_statements = (yyvsp[(7) - (8)].pval);
+        set_dads((yyval.pval),(yyvsp[(7) - (8)].pval));;}
     break;
 
   case 16:
-#line 220 "ael.y"
+#line 222 "ael.y"
     {
 		(yyval.pval) = npval2(PV_GLOBALS, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
-		(yyval.pval)->u1.statements = (yyvsp[(3) - (4)].pval);;}
+		(yyval.pval)->u1.statements = (yyvsp[(3) - (4)].pval);
+        set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
     break;
 
   case 17:
-#line 225 "ael.y"
+#line 228 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 18:
-#line 226 "ael.y"
+#line 229 "ael.y"
     {(yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 19:
-#line 227 "ael.y"
+#line 230 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
     break;
 
   case 20:
-#line 230 "ael.y"
+#line 233 "ael.y"
     { reset_semicount(parseio->scanner); ;}
     break;
 
   case 21:
-#line 230 "ael.y"
+#line 233 "ael.y"
     {
 		(yyval.pval) = npval2(PV_VARDEC, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
 		(yyval.pval)->u1.str = (yyvsp[(1) - (5)].str);
@@ -2165,140 +2168,140 @@
     break;
 
   case 22:
-#line 237 "ael.y"
+#line 240 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 23:
-#line 238 "ael.y"
+#line 241 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
   case 24:
-#line 239 "ael.y"
+#line 242 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;}
     break;
 
   case 25:
-#line 240 "ael.y"
+#line 243 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
     break;
 
   case 26:
-#line 243 "ael.y"
+#line 246 "ael.y"
     {(yyval.pval)=0;;}
     break;
 
   case 27:
-#line 244 "ael.y"
+#line 247 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 28:
-#line 245 "ael.y"
+#line 248 "ael.y"
     { (yyval.pval)=(yyvsp[(1) - (2)].pval);;}
     break;
 
   case 29:
-#line 248 "ael.y"
-    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
-    break;
-
-  case 30:
-#line 249 "ael.y"
-    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
-    break;
-
-  case 31:
-#line 250 "ael.y"
-    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
-    break;
-
-  case 32:
 #line 251 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
-  case 33:
+  case 30:
 #line 252 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
-  case 34:
+  case 31:
 #line 253 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
+  case 32:
+#line 254 "ael.y"
+    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
+    break;
+
+  case 33:
+#line 255 "ael.y"
+    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
+    break;
+
+  case 34:
+#line 256 "ael.y"
+    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
+    break;
+
   case 35:
-#line 254 "ael.y"
+#line 257 "ael.y"
     {free((yyvsp[(1) - (2)].str)); (yyval.pval)=0;;}
     break;
 
   case 36:
-#line 255 "ael.y"
+#line 258 "ael.y"
     {(yyval.pval)=0;/* allow older docs to be read */;}
     break;
 
   case 37:
-#line 258 "ael.y"
+#line 261 "ael.y"
     {
 		(yyval.pval) = npval2(PV_IGNOREPAT, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
 		(yyval.pval)->u1.str = (yyvsp[(3) - (4)].str);;}
     break;
 
   case 38:
-#line 263 "ael.y"
+#line 266 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.str = (yyvsp[(1) - (3)].str);
-		(yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval); ;}
+		(yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval); set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
     break;
 
   case 39:
-#line 267 "ael.y"
+#line 270 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
 		(yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
-		(yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval);
+		(yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval); set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));
 		(yyval.pval)->u4.regexten=1;;}
     break;
 
   case 40:
-#line 272 "ael.y"
+#line 275 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (7)]), &(yylsp[(7) - (7)]));
 		(yyval.pval)->u1.str = (yyvsp[(5) - (7)].str);
-		(yyval.pval)->u2.statements = (yyvsp[(7) - (7)].pval);
+		(yyval.pval)->u2.statements = (yyvsp[(7) - (7)].pval); set_dads((yyval.pval),(yyvsp[(7) - (7)].pval));
 		(yyval.pval)->u3.hints = (yyvsp[(3) - (7)].str);;}
     break;
 
   case 41:
-#line 277 "ael.y"
+#line 280 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)]));
 		(yyval.pval)->u1.str = (yyvsp[(6) - (8)].str);
-		(yyval.pval)->u2.statements = (yyvsp[(8) - (8)].pval);
+		(yyval.pval)->u2.statements = (yyvsp[(8) - (8)].pval); set_dads((yyval.pval),(yyvsp[(8) - (8)].pval));
 		(yyval.pval)->u4.regexten=1;
 		(yyval.pval)->u3.hints = (yyvsp[(4) - (8)].str);;}
     break;
 
   case 42:
-#line 287 "ael.y"
+#line 290 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 43:
-#line 288 "ael.y"
+#line 291 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 44:
-#line 289 "ael.y"
+#line 292 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
     break;
 
   case 45:
-#line 295 "ael.y"
+#line 298 "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));
@@ -2307,12 +2310,12 @@
     break;
 
   case 46:
-#line 300 "ael.y"
+#line 303 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
     break;
 
   case 47:
-#line 304 "ael.y"
+#line 307 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[(1) - (7)].str), &(yylsp[(1) - (7)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (7)].str), &(yylsp[(3) - (7)]));
@@ -2321,31 +2324,31 @@
     break;
 
   case 48:
-#line 312 "ael.y"
+#line 315 "ael.y"
     { reset_parencount(parseio->scanner); ;}
     break;
 
   case 49:
-#line 312 "ael.y"
+#line 315 "ael.y"
     { (yyval.str) = (yyvsp[(3) - (4)].str); ;}
     break;
 
   case 50:
-#line 316 "ael.y"
+#line 319 "ael.y"
     {
 		(yyval.pval)= npval2(PV_IF, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
 		(yyval.pval)->u1.str = (yyvsp[(2) - (2)].str); ;}
     break;
 
   case 51:
-#line 319 "ael.y"
+#line 322 "ael.y"
     {
 		(yyval.pval) = npval2(PV_RANDOM, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
 		(yyval.pval)->u1.str=(yyvsp[(2) - (2)].str);;}
     break;
 
   case 52:
-#line 322 "ael.y"
+#line 325 "ael.y"
     {
 		(yyval.pval) = npval2(PV_IFTIME, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
 		(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);
@@ -2353,12 +2356,12 @@
     break;
 
   case 53:
-#line 333 "ael.y"
+#line 336 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);;}
     break;
 
   case 54:
-#line 334 "ael.y"
+#line 337 "ael.y"
     {
 		asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
 		free((yyvsp[(1) - (2)].str));
@@ -2367,12 +2370,12 @@
     break;
 
   case 55:
-#line 341 "ael.y"
+#line 344 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);;}
     break;
 
   case 56:
-#line 342 "ael.y"
+#line 345 "ael.y"
     {
 		asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
 		free((yyvsp[(1) - (2)].str));
@@ -2381,7 +2384,7 @@
     break;
 
   case 57:
-#line 347 "ael.y"
+#line 350 "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));
@@ -2391,12 +2394,12 @@
     break;
 
   case 58:
-#line 355 "ael.y"
+#line 358 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);;}
     break;
 
   case 59:
-#line 356 "ael.y"
+#line 359 "ael.y"
     {
 		asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
 		free((yyvsp[(1) - (2)].str));
@@ -2404,7 +2407,7 @@
     break;
 
   case 60:
-#line 360 "ael.y"
+#line 363 "ael.y"
     {
 		asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str));
 		free((yyvsp[(1) - (3)].str));
@@ -2412,108 +2415,108 @@
     break;
 
   case 61:
-#line 366 "ael.y"
+#line 369 "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);;}
+		(yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;}
     break;
 
   case 62:
-#line 375 "ael.y"
+#line 378 "ael.y"
     {
 		(yyval.pval) = npval2(PV_STATEMENTBLOCK, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
-		(yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval); ;}
+		(yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));;}
     break;
 
   case 63:
-#line 378 "ael.y"
+#line 381 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
     break;
 
   case 64:
-#line 379 "ael.y"
+#line 382 "ael.y"
     {
 		(yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;}
     break;
 
   case 65:
-#line 382 "ael.y"
+#line 385 "ael.y"
     {
 		(yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;}
     break;
 
   case 66:
-#line 385 "ael.y"
+#line 388 "ael.y"
     {
 		(yyval.pval) = npval2(PV_LABEL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
 		(yyval.pval)->u1.str = (yyvsp[(1) - (2)].str); ;}
     break;
 
   case 67:
-#line 388 "ael.y"
+#line 391 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 68:
-#line 389 "ael.y"
+#line 392 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 69:
-#line 390 "ael.y"
+#line 393 "ael.y"
     {reset_parencount(parseio->scanner);;}
     break;
 
   case 70:
-#line 390 "ael.y"
+#line 393 "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);
 		(yyval.pval)->u2.for_test=(yyvsp[(7) - (12)].str);
 		(yyval.pval)->u3.for_inc = (yyvsp[(10) - (12)].str);
-		(yyval.pval)->u4.for_statements = (yyvsp[(12) - (12)].pval);;}
+		(yyval.pval)->u4.for_statements = (yyvsp[(12) - (12)].pval); set_dads((yyval.pval),(yyvsp[(12) - (12)].pval));;}
     break;
 
   case 71:
-#line 396 "ael.y"
+#line 399 "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); ;}
+		(yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval); set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
     break;
 
   case 72:
-#line 400 "ael.y"
+#line 403 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
     break;
 
   case 73:
-#line 401 "ael.y"
+#line 404 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(2) - (3)].pval), &(yylsp[(2) - (3)])); ;}
     break;
 
   case 74:
-#line 402 "ael.y"
+#line 405 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
     break;
 
   case 75:
-#line 403 "ael.y"
+#line 406 "ael.y"
     {
 		(yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
 		(yyval.pval)->u1.str = (yyvsp[(1) - (2)].str);;}
     break;
 
   case 76:
-#line 406 "ael.y"
+#line 409 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 77:
-#line 406 "ael.y"
+#line 409 "ael.y"
     {
 		char *bufx;
 		int tot=0;
@@ -2550,64 +2553,64 @@
     break;
 
   case 78:
-#line 439 "ael.y"
+#line 442 "ael.y"
     { (yyval.pval) = npval2(PV_BREAK, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
   case 79:
-#line 440 "ael.y"
+#line 443 "ael.y"
     { (yyval.pval) = npval2(PV_RETURN, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
   case 80:
-#line 441 "ael.y"
+#line 444 "ael.y"
     { (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
   case 81:
-#line 442 "ael.y"
+#line 445 "ael.y"
     {
 		(yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(2) - (3)]));
-		(yyval.pval)->u2.statements = (yyvsp[(2) - (3)].pval);
-		(yyval.pval)->u3.else_statements = (yyvsp[(3) - (3)].pval);;}
+		(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 82:
-#line 446 "ael.y"
+#line 449 "ael.y"
     { (yyval.pval)=0; ;}
     break;
 
   case 83:
-#line 449 "ael.y"
+#line 452 "ael.y"
     { (yyval.pval) = (yyvsp[(2) - (2)].pval); ;}
     break;
 
   case 84:
-#line 450 "ael.y"
+#line 453 "ael.y"
     { (yyval.pval) = NULL ; ;}
     break;
 
   case 85:
-#line 453 "ael.y"
+#line 456 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
   case 86:
-#line 454 "ael.y"
+#line 457 "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 87:
-#line 457 "ael.y"
+#line 460 "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 88:
-#line 460 "ael.y"
+#line 463 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
@@ -2615,7 +2618,7 @@
     break;
 
   case 89:
-#line 464 "ael.y"
+#line 467 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
@@ -2623,7 +2626,7 @@
     break;
 
   case 90:
-#line 468 "ael.y"
+#line 471 "ael.y"
     {
 		(yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
@@ -2631,7 +2634,7 @@
     break;
 
   case 91:
-#line 472 "ael.y"
+#line 475 "ael.y"
     {
 		(yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
@@ -2639,24 +2642,24 @@
     break;
 
   case 92:
-#line 478 "ael.y"
+#line 481 "ael.y"
     { (yyval.str) = strdup("1"); ;}
     break;
 
   case 93:
-#line 479 "ael.y"
+#line 482 "ael.y"
     { (yyval.str) = (yyvsp[(2) - (2)].str); ;}
     break;
 
   case 94:
-#line 483 "ael.y"
+#line 486 "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 95:
-#line 486 "ael.y"
+#line 489 "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)]));
@@ -2664,12 +2667,12 @@
     break;
 
   case 96:
-#line 492 "ael.y"
+#line 495 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
   case 97:
-#line 492 "ael.y"
+#line 495 "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)]));
@@ -2678,19 +2681,19 @@
     break;
 
   case 98:
-#line 497 "ael.y"
+#line 500 "ael.y"
     {
 		(yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.str = (yyvsp[(1) - (3)].str); ;}
     break;
 
   case 99:
-#line 505 "ael.y"
+#line 508 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
   case 100:
-#line 505 "ael.y"
+#line 508 "ael.y"
     {
 		if (strcasecmp((yyvsp[(1) - (3)].str),"goto") == 0) {
 			(yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(2) - (3)]));
@@ -2703,7 +2706,7 @@
     break;
 
   case 101:
-#line 516 "ael.y"
+#line 519 "ael.y"
     {
 		(yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(3) - (3)]));
  		if( (yyval.pval)->type == PV_GOTO )
@@ -2714,130 +2717,130 @@
     break;
 
   case 102:
-#line 523 "ael.y"
+#line 526 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
     break;
 
   case 103:
-#line 526 "ael.y"
+#line 529 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str) ;}
     break;
 
   case 104:
-#line 527 "ael.y"
+#line 530 "ael.y"
     { (yyval.str) = strdup(""); ;}
     break;
 
   case 105:
-#line 530 "ael.y"
+#line 533 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
   case 106:
-#line 531 "ael.y"
+#line 534 "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 107:
-#line 534 "ael.y"
+#line 537 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;}
     break;
 
   case 108:
-#line 537 "ael.y"
+#line 540 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 109:
-#line 538 "ael.y"
+#line 541 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 110:
-#line 541 "ael.y"
+#line 544 "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);;}
+		(yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval); set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;}
     break;
 
   case 111:
-#line 545 "ael.y"
+#line 548 "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);;}
+		(yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
     break;
 
   case 112:
-#line 549 "ael.y"
+#line 552 "ael.y"
     {
 		(yyval.pval) = npval2(PV_PATTERN, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)])); /* XXX at 3 or @4 ? */
 		(yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
-		(yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval);;}
+		(yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval);set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;}
     break;
 
   case 113:
-#line 555 "ael.y"
+#line 558 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 114:
-#line 556 "ael.y"
+#line 559 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
   case 115:
-#line 559 "ael.y"
+#line 562 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
   case 116:
-#line 560 "ael.y"
+#line 563 "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);;}
+		(yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;}
     break;
 
   case 117:
-#line 566 "ael.y"
+#line 569 "ael.y"
     {
 		(yyval.pval) = npval2(PV_SWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)]));
-		(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); ;}
+		(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
     break;
 
   case 118:
-#line 571 "ael.y"
+#line 574 "ael.y"
     {
 		(yyval.pval) = npval2(PV_ESWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)]));
-		(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); ;}
+		(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
     break;
 
   case 119:
-#line 576 "ael.y"
+#line 579 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 120:
-#line 577 "ael.y"
+#line 580 "ael.y"
     { (yyval.pval) = linku1(nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)])), (yyvsp[(3) - (3)].pval)); ;}
     break;
 
   case 121:
-#line 578 "ael.y"
+#line 581 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
     break;
 
   case 122:
-#line 581 "ael.y"
+#line 584 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
   case 123:
-#line 582 "ael.y"
+#line 585 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
 		(yyval.pval)->u2.arglist = (yyvsp[(3) - (3)].pval);
@@ -2845,36 +2848,36 @@
     break;
 
   case 124:
-#line 589 "ael.y"
+#line 592 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (2)].pval); ;}
     break;
 
   case 125:
-#line 590 "ael.y"
+#line 593 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), (yyvsp[(2) - (3)].pval)); ;}
     break;
 
   case 126:
-#line 591 "ael.y"
+#line 594 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
     break;
 
   case 127:
-#line 594 "ael.y"
+#line 597 "ael.y"
     {
 		(yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
-		(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);;}
+		(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
     break;
 
   case 128:
-#line 597 "ael.y"
+#line 600 "ael.y"
     {
 		(yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));;}
     break;
 
 
 /* Line 1270 of yacc.c.  */
-#line 2878 "ael.tab.c"
+#line 2881 "ael.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3093,7 +3096,7 @@
 }
 
 
-#line 602 "ael.y"
+#line 605 "ael.y"
 
 
 static char *token_equivs1[] =
@@ -3279,7 +3282,18 @@
 			head->u1_last->next = tail;

[... 1099 lines stripped ...]


More information about the svn-commits mailing list