make destroy_pval able to handle a NULL value
authorLuigi Rizzo <rizzo@icir.org>
Sun, 30 Apr 2006 12:30:08 +0000 (12:30 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Sun, 30 Apr 2006 12:30:08 +0000 (12:30 +0000)
(the warning should be removed);
define a 'elements_block' rule to simplify some other rules
removing duplicated code - runtests seems happy with this.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@23613 65c4cc65-6c06-0410-ace0-fbb531ad65f3

pbx/ael/ael.tab.c
pbx/ael/ael.y
pbx/pbx_ael.c

index 76a3eac..f0e5d78 100644 (file)
@@ -417,16 +417,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state. */
 #define YYFINAL  18
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   505
+#define YYLAST   488
 
 /* YYNTOKENS -- Number of terminals. */
 #define YYNTOKENS  42
 /* YYNNTS -- Number of nonterminals. */
-#define YYNNTS  55
+#define YYNNTS  56
 /* YYNRULES -- Number of rules. */
 #define YYNRULES  149
 /* YYNRULES -- Number of states. */
-#define YYNSTATES  346
+#define YYNSTATES  344
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -476,20 +476,20 @@ static const unsigned char yytranslate[] =
 static const unsigned short int yyprhs[] =
 {
        0,     0,     3,     5,     7,    10,    13,    15,    17,    19,
-      21,    23,    25,    31,    36,    43,    49,    58,    66,    74,
-      81,    86,    90,    92,    95,    98,    99,   105,   107,   111,
-     114,   116,   118,   121,   124,   126,   128,   130,   132,   134,
-     135,   141,   144,   146,   151,   155,   160,   168,   177,   179,
-     182,   185,   186,   192,   193,   199,   214,   225,   227,   230,
-     232,   235,   239,   241,   244,   248,   249,   256,   260,   261,
-     267,   271,   275,   278,   279,   280,   281,   294,   295,   302,
-     305,   309,   313,   316,   319,   320,   326,   329,   332,   335,
-     339,   343,   347,   349,   352,   353,   355,   359,   363,   369,
-     375,   381,   387,   389,   393,   399,   403,   409,   413,   414,
-     420,   424,   425,   429,   433,   436,   438,   439,   441,   442,
-     446,   448,   451,   456,   460,   465,   469,   472,   476,   478,
-     481,   483,   489,   494,   498,   503,   507,   510,   514,   517,
-     520,   535,   546,   550,   566,   578,   581,   583,   585,   590
+      21,    23,    25,    29,    34,    43,    51,    59,    66,    71,
+      75,    77,    80,    83,    84,    90,    92,    96,    99,   102,
+     106,   108,   110,   113,   116,   118,   120,   122,   124,   126,
+     127,   133,   136,   138,   143,   147,   152,   160,   169,   171,
+     174,   177,   178,   184,   185,   191,   206,   217,   219,   222,
+     224,   227,   231,   233,   236,   240,   241,   248,   252,   253,
+     259,   263,   267,   270,   271,   272,   273,   286,   287,   294,
+     297,   301,   305,   308,   311,   312,   318,   321,   324,   327,
+     331,   335,   339,   341,   344,   345,   347,   351,   355,   361,
+     367,   373,   379,   381,   385,   391,   395,   401,   405,   406,
+     412,   416,   417,   421,   425,   428,   430,   431,   433,   434,
+     438,   440,   443,   448,   452,   457,   461,   464,   468,   470,
+     473,   475,   481,   486,   490,   495,   499,   502,   506,   509,
+     512,   527,   538,   542,   558,   570,   573,   575,   577,   582
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
@@ -497,84 +497,83 @@ static const yysigned_char yyrhs[] =
 {
       43,     0,    -1,    44,    -1,    45,    -1,    44,    45,    -1,
       44,     1,    -1,    47,    -1,    48,    -1,    49,    -1,     8,
-      -1,    41,    -1,    36,    -1,     3,    46,     4,    54,     5,
-      -1,     3,    46,     4,     5,    -1,    23,     3,    46,     4,
-      54,     5,    -1,    23,     3,    46,     4,     5,    -1,    15,
-      41,     6,    53,     7,     4,    89,     5,    -1,    15,    41,
-       6,    53,     7,     4,     5,    -1,    15,    41,     6,     7,
-       4,    89,     5,    -1,    15,    41,     6,     7,     4,     5,
-      -1,    16,     4,    50,     5,    -1,    16,     4,     5,    -1,
-      51,    -1,    50,    51,    -1,    50,     1,    -1,    -1,    41,
-       9,    52,    41,     8,    -1,    41,    -1,    53,    10,    41,
-      -1,    53,     1,    -1,    55,    -1,     1,    -1,    54,    55,
-      -1,    54,     1,    -1,    58,    -1,    96,    -1,    91,    -1,
-      92,    -1,    57,    -1,    -1,    41,     9,    56,    41,     8,
-      -1,    41,     1,    -1,     8,    -1,    17,    24,    41,     8,
-      -1,    41,    24,    70,    -1,    30,    41,    24,    70,    -1,
-      31,     6,    66,     7,    41,    24,    70,    -1,    30,    31,
-       6,    66,     7,    41,    24,    70,    -1,    70,    -1,    59,
-      70,    -1,    59,     1,    -1,    -1,    19,     6,    61,    65,
-       7,    -1,    -1,    22,     6,    63,    65,     7,    -1,    20,
-       6,    66,    11,    66,    11,    66,    13,    66,    13,    66,
-      13,    66,     7,    -1,    20,     6,    41,    13,    66,    13,
-      66,    13,    66,     7,    -1,    41,    -1,    41,    41,    -1,
-      41,    -1,    41,    41,    -1,    41,    41,    41,    -1,    41,
-      -1,    41,    41,    -1,    41,    11,    41,    -1,    -1,    18,
-       6,    69,    41,     7,     4,    -1,     4,    59,     5,    -1,
-      -1,    41,     9,    71,    41,     8,    -1,    25,    78,     8,
-      -1,    26,    79,     8,    -1,    41,    11,    -1,    -1,    -1,
-      -1,    32,     6,    72,    41,     8,    73,    41,     8,    74,
-      41,     7,    70,    -1,    -1,    33,     6,    75,    41,     7,
-      70,    -1,    68,     5,    -1,    68,    87,     5,    -1,    12,
-      80,     8,    -1,    84,     8,    -1,    41,     8,    -1,    -1,
-      84,     9,    76,    41,     8,    -1,    28,     8,    -1,    27,
-       8,    -1,    29,     8,    -1,    62,    70,    77,    -1,    60,
-      70,    77,    -1,    64,    70,    77,    -1,     8,    -1,    21,
-      70,    -1,    -1,    67,    -1,    67,    13,    67,    -1,    67,
-      10,    67,    -1,    67,    13,    67,    13,    67,    -1,    67,
-      10,    67,    10,    67,    -1,    36,    13,    67,    13,    67,
-      -1,    36,    10,    67,    10,    67,    -1,    67,    -1,    67,
-      10,    67,    -1,    67,    10,    41,    14,    41,    -1,    67,
-      14,    67,    -1,    67,    10,    41,    14,    36,    -1,    67,
-      14,    36,    -1,    -1,    41,     6,    81,    86,     7,    -1,
-      41,     6,     7,    -1,    -1,    41,    83,     6,    -1,    82,
-      86,     7,    -1,    82,     7,    -1,    41,    -1,    -1,    65,
-      -1,    -1,    86,    10,    85,    -1,    88,    -1,    87,    88,
-      -1,    34,    41,    11,    59,    -1,    36,    11,    59,    -1,
-      35,    41,    11,    59,    -1,    34,    41,    11,    -1,    36,
-      11,    -1,    35,    41,    11,    -1,    90,    -1,    89,    90,
-      -1,    70,    -1,    37,    41,     4,    59,     5,    -1,    38,
-       4,    93,     5,    -1,    38,     4,     5,    -1,    39,     4,
-      93,     5,    -1,    39,     4,     5,    -1,    41,     8,    -1,
-      93,    41,     8,    -1,    93,     1,    -1,    95,     8,    -1,
-      95,    13,    66,    11,    66,    11,    66,    13,    66,    13,
-      66,    13,    66,     8,    -1,    95,    13,    41,    13,    66,
-      13,    66,    13,    66,     8,    -1,    94,    95,     8,    -1,
-      94,    95,    13,    66,    11,    66,    11,    66,    13,    66,
-      13,    66,    13,    66,     8,    -1,    94,    95,    13,    41,
-      13,    66,    13,    66,    13,    66,     8,    -1,    94,     1,
-      -1,    41,    -1,    36,    -1,    40,     4,    94,     5,    -1,
-      40,     4,     5,    -1
+      -1,    41,    -1,    36,    -1,     3,    46,    54,    -1,    23,
+       3,    46,    54,    -1,    15,    41,     6,    53,     7,     4,
+      90,     5,    -1,    15,    41,     6,    53,     7,     4,     5,
+      -1,    15,    41,     6,     7,     4,    90,     5,    -1,    15,
+      41,     6,     7,     4,     5,    -1,    16,     4,    50,     5,
+      -1,    16,     4,     5,    -1,    51,    -1,    50,    51,    -1,
+      50,     1,    -1,    -1,    41,     9,    52,    41,     8,    -1,
+      41,    -1,    53,    10,    41,    -1,    53,     1,    -1,     4,
+       5,    -1,     4,    55,     5,    -1,    56,    -1,     1,    -1,
+      55,    56,    -1,    55,     1,    -1,    59,    -1,    97,    -1,
+      92,    -1,    93,    -1,    58,    -1,    -1,    41,     9,    57,
+      41,     8,    -1,    41,     1,    -1,     8,    -1,    17,    24,
+      41,     8,    -1,    41,    24,    71,    -1,    30,    41,    24,
+      71,    -1,    31,     6,    67,     7,    41,    24,    71,    -1,
+      30,    31,     6,    67,     7,    41,    24,    71,    -1,    71,
+      -1,    60,    71,    -1,    60,     1,    -1,    -1,    19,     6,
+      62,    66,     7,    -1,    -1,    22,     6,    64,    66,     7,
+      -1,    20,     6,    67,    11,    67,    11,    67,    13,    67,
+      13,    67,    13,    67,     7,    -1,    20,     6,    41,    13,
+      67,    13,    67,    13,    67,     7,    -1,    41,    -1,    41,
+      41,    -1,    41,    -1,    41,    41,    -1,    41,    41,    41,
+      -1,    41,    -1,    41,    41,    -1,    41,    11,    41,    -1,
+      -1,    18,     6,    70,    41,     7,     4,    -1,     4,    60,
+       5,    -1,    -1,    41,     9,    72,    41,     8,    -1,    25,
+      79,     8,    -1,    26,    80,     8,    -1,    41,    11,    -1,
+      -1,    -1,    -1,    32,     6,    73,    41,     8,    74,    41,
+       8,    75,    41,     7,    71,    -1,    -1,    33,     6,    76,
+      41,     7,    71,    -1,    69,     5,    -1,    69,    88,     5,
+      -1,    12,    81,     8,    -1,    85,     8,    -1,    41,     8,
+      -1,    -1,    85,     9,    77,    41,     8,    -1,    28,     8,
+      -1,    27,     8,    -1,    29,     8,    -1,    63,    71,    78,
+      -1,    61,    71,    78,    -1,    65,    71,    78,    -1,     8,
+      -1,    21,    71,    -1,    -1,    68,    -1,    68,    13,    68,
+      -1,    68,    10,    68,    -1,    68,    13,    68,    13,    68,
+      -1,    68,    10,    68,    10,    68,    -1,    36,    13,    68,
+      13,    68,    -1,    36,    10,    68,    10,    68,    -1,    68,
+      -1,    68,    10,    68,    -1,    68,    10,    41,    14,    41,
+      -1,    68,    14,    68,    -1,    68,    10,    41,    14,    36,
+      -1,    68,    14,    36,    -1,    -1,    41,     6,    82,    87,
+       7,    -1,    41,     6,     7,    -1,    -1,    41,    84,     6,
+      -1,    83,    87,     7,    -1,    83,     7,    -1,    41,    -1,
+      -1,    66,    -1,    -1,    87,    10,    86,    -1,    89,    -1,
+      88,    89,    -1,    34,    41,    11,    60,    -1,    36,    11,
+      60,    -1,    35,    41,    11,    60,    -1,    34,    41,    11,
+      -1,    36,    11,    -1,    35,    41,    11,    -1,    91,    -1,
+      90,    91,    -1,    71,    -1,    37,    41,     4,    60,     5,
+      -1,    38,     4,    94,     5,    -1,    38,     4,     5,    -1,
+      39,     4,    94,     5,    -1,    39,     4,     5,    -1,    41,
+       8,    -1,    94,    41,     8,    -1,    94,     1,    -1,    96,
+       8,    -1,    96,    13,    67,    11,    67,    11,    67,    13,
+      67,    13,    67,    13,    67,     8,    -1,    96,    13,    41,
+      13,    67,    13,    67,    13,    67,     8,    -1,    95,    96,
+       8,    -1,    95,    96,    13,    67,    11,    67,    11,    67,
+      13,    67,    13,    67,    13,    67,     8,    -1,    95,    96,
+      13,    41,    13,    67,    13,    67,    13,    67,     8,    -1,
+      95,     1,    -1,    41,    -1,    36,    -1,    40,     4,    95,
+       5,    -1,    40,     4,     5,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short int yyrline[] =
 {
-       0,   168,   168,   171,   172,   183,   186,   187,   188,   189,
-     192,   193,   196,   200,   203,   208,   214,   217,   220,   224,
-     229,   232,   236,   237,   238,   241,   241,   247,   250,   254,
-     257,   258,   259,   262,   265,   266,   267,   268,   269,   270,
-     270,   274,   275,   278,   283,   287,   292,   297,   306,   307,
-     310,   313,   313,   318,   318,   323,   339,   359,   360,   367,
-     368,   373,   381,   382,   386,   392,   392,   400,   403,   403,
-     407,   410,   413,   416,   417,   418,   416,   424,   424,   428,
-     430,   433,   435,   437,   440,   440,   473,   474,   475,   476,
-     480,   484,   488,   491,   492,   497,   499,   504,   509,   516,
-     523,   530,   539,   544,   549,   556,   563,   570,   579,   579,
-     584,   589,   589,   599,   606,   609,   610,   613,   616,   619,
-     626,   627,   632,   636,   640,   644,   647,   650,   655,   656,
-     661,   662,   668,   671,   675,   678,   682,   685,   690,   693,
-     696,   713,   726,   731,   749,   764,   767,   768,   771,   774
+       0,   170,   170,   173,   174,   185,   188,   189,   190,   191,
+     194,   195,   198,   202,   209,   212,   215,   219,   224,   227,
+     231,   232,   233,   236,   236,   242,   245,   249,   252,   253,
+     256,   257,   258,   261,   264,   265,   266,   267,   268,   269,
+     269,   273,   274,   277,   282,   286,   291,   296,   305,   306,
+     309,   312,   312,   317,   317,   322,   338,   358,   359,   366,
+     367,   372,   380,   381,   385,   391,   391,   399,   402,   402,
+     406,   409,   412,   415,   416,   417,   415,   423,   423,   427,
+     429,   432,   434,   436,   439,   439,   472,   473,   474,   475,
+     479,   483,   487,   490,   491,   496,   498,   503,   508,   515,
+     522,   529,   538,   543,   548,   555,   562,   569,   578,   578,
+     583,   588,   588,   598,   605,   608,   609,   612,   615,   618,
+     625,   626,   631,   635,   639,   643,   646,   649,   654,   655,
+     660,   661,   667,   670,   674,   677,   681,   684,   689,   692,
+     695,   712,   725,   730,   748,   763,   766,   767,   770,   773
 };
 #endif
 
@@ -591,15 +590,15 @@ static const char *const yytname[] =
   "KW_FOR", "KW_WHILE", "KW_CASE", "KW_PATTERN", "KW_DEFAULT", "KW_CATCH",
   "KW_SWITCHES", "KW_ESWITCHES", "KW_INCLUDES", "word", "$accept", "file",
   "objects", "object", "word_or_default", "context", "macro", "globals",
-  "global_statements", "global_statement", "@1", "arglist", "elements",
-  "element", "@2", "ignorepat", "extension", "statements", "if_head", "@3",
-  "random_head", "@4", "iftime_head", "word_list", "word3_list",
-  "goto_word", "switch_head", "@5", "statement", "@6", "@7", "@8", "@9",
-  "@10", "@11", "opt_else", "target", "jumptarget", "macro_call", "@12",
-  "application_call_head", "@13", "application_call", "opt_word",
-  "eval_arglist", "case_statements", "case_statement", "macro_statements",
-  "macro_statement", "switches", "eswitches", "switchlist", "includeslist",
-  "includedname", "includes", 0
+  "global_statements", "global_statement", "@1", "arglist",
+  "elements_block", "elements", "element", "@2", "ignorepat", "extension",
+  "statements", "if_head", "@3", "random_head", "@4", "iftime_head",
+  "word_list", "word3_list", "goto_word", "switch_head", "@5", "statement",
+  "@6", "@7", "@8", "@9", "@10", "@11", "opt_else", "target", "jumptarget",
+  "macro_call", "@12", "application_call_head", "@13", "application_call",
+  "opt_word", "eval_arglist", "case_statements", "case_statement",
+  "macro_statements", "macro_statement", "switches", "eswitches",
+  "switchlist", "includeslist", "includedname", "includes", 0
 };
 #endif
 
@@ -620,28 +619,28 @@ static const unsigned short int yytoknum[] =
 static const unsigned char yyr1[] =
 {
        0,    42,    43,    44,    44,    44,    45,    45,    45,    45,
-      46,    46,    47,    47,    47,    47,    48,    48,    48,    48,
-      49,    49,    50,    50,    50,    52,    51,    53,    53,    53,
-      54,    54,    54,    54,    55,    55,    55,    55,    55,    56,
-      55,    55,    55,    57,    58,    58,    58,    58,    59,    59,
-      59,    61,    60,    63,    62,    64,    64,    65,    65,    66,
-      66,    66,    67,    67,    67,    69,    68,    70,    71,    70,
-      70,    70,    70,    72,    73,    74,    70,    75,    70,    70,
-      70,    70,    70,    70,    76,    70,    70,    70,    70,    70,
-      70,    70,    70,    77,    77,    78,    78,    78,    78,    78,
-      78,    78,    79,    79,    79,    79,    79,    79,    81,    80,
-      80,    83,    82,    84,    84,    85,    85,    86,    86,    86,
-      87,    87,    88,    88,    88,    88,    88,    88,    89,    89,
-      90,    90,    91,    91,    92,    92,    93,    93,    93,    94,
-      94,    94,    94,    94,    94,    94,    95,    95,    96,    96
+      46,    46,    47,    47,    48,    48,    48,    48,    49,    49,
+      50,    50,    50,    52,    51,    53,    53,    53,    54,    54,
+      55,    55,    55,    55,    56,    56,    56,    56,    56,    57,
+      56,    56,    56,    58,    59,    59,    59,    59,    60,    60,
+      60,    62,    61,    64,    63,    65,    65,    66,    66,    67,
+      67,    67,    68,    68,    68,    70,    69,    71,    72,    71,
+      71,    71,    71,    73,    74,    75,    71,    76,    71,    71,
+      71,    71,    71,    71,    77,    71,    71,    71,    71,    71,
+      71,    71,    71,    78,    78,    79,    79,    79,    79,    79,
+      79,    79,    80,    80,    80,    80,    80,    80,    82,    81,
+      81,    84,    83,    85,    85,    86,    86,    87,    87,    87,
+      88,    88,    89,    89,    89,    89,    89,    89,    90,    90,
+      91,    91,    92,    92,    93,    93,    94,    94,    94,    95,
+      95,    95,    95,    95,    95,    95,    96,    96,    97,    97
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const unsigned char yyr2[] =
 {
        0,     2,     1,     1,     2,     2,     1,     1,     1,     1,
-       1,     1,     5,     4,     6,     5,     8,     7,     7,     6,
-       4,     3,     1,     2,     2,     0,     5,     1,     3,     2,
+       1,     1,     3,     4,     8,     7,     7,     6,     4,     3,
+       1,     2,     2,     0,     5,     1,     3,     2,     2,     3,
        1,     1,     2,     2,     1,     1,     1,     1,     1,     0,
        5,     2,     1,     4,     3,     4,     7,     8,     1,     2,
        2,     0,     5,     0,     5,    14,    10,     1,     2,     1,
@@ -663,103 +662,103 @@ static const unsigned char yydefact[] =
 {
        0,     0,     9,     0,     0,     0,     0,     0,     3,     6,
        7,     8,    11,    10,     0,     0,     0,     0,     1,     5,
-       4,     0,     0,    21,     0,     0,    22,     0,    31,    13,
-      42,     0,     0,     0,     0,     0,     0,     0,     0,    30,
-      38,    34,    36,    37,    35,     0,    27,     0,    25,    24,
-      20,    23,     0,     0,     0,     0,     0,     0,     0,     0,
-      41,    39,     0,    33,    12,    32,     0,    29,     0,     0,
-       0,    15,     0,     0,     0,     0,    59,     0,   133,     0,
-       0,   135,     0,   149,   147,   146,     0,     0,     0,     0,
-      92,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   111,     0,     0,     0,     0,    44,   118,
-       0,    19,     0,   130,     0,   128,     0,    28,     0,    14,
-      43,     0,    45,    60,     0,   136,   138,   132,     0,   134,
-     145,   148,     0,   139,     0,     0,     0,    48,     0,     0,
-      65,    51,     0,    53,     0,    62,    95,     0,   102,     0,
-      87,    86,    88,    73,    77,    83,    68,    72,     0,    94,
-      94,    94,    79,     0,     0,     0,     0,   120,   114,    57,
-     117,     0,    82,    84,     0,    18,   129,    17,     0,    26,
-       0,    61,     0,   137,   142,     0,    59,     0,    40,    50,
-      67,    49,   108,    81,     0,     0,    59,     0,     0,     0,
-       0,     0,    63,     0,     0,    70,     0,     0,    71,     0,
-       0,     0,   112,     0,    90,    89,    91,     0,     0,   126,
-      80,   121,    58,   113,   116,     0,     0,    16,     0,     0,
-      59,     0,     0,     0,   110,   118,     0,     0,     0,     0,
-       0,     0,     0,    64,    97,    96,    62,   103,   107,   105,
-       0,     0,     0,    93,   125,   127,     0,   115,   119,     0,
-       0,     0,    46,     0,     0,     0,     0,     0,     0,    52,
-       0,     0,    54,     0,     0,     0,     0,     0,    74,     0,
-      69,     0,     0,    85,   131,    47,     0,     0,     0,     0,
-     109,    66,     0,     0,   101,   100,    99,    98,   106,   104,
-       0,    78,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    75,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   141,     0,    56,     0,     0,
-     144,     0,     0,     0,     0,     0,     0,     0,    76,     0,
-       0,     0,     0,   140,    55,   143
+       4,     0,    12,     0,    19,     0,     0,    20,     0,    31,
+      28,    42,     0,     0,     0,     0,     0,     0,     0,     0,
+      30,    38,    34,    36,    37,    35,     0,    25,     0,    23,
+      22,    18,    21,    13,     0,     0,     0,     0,     0,     0,
+       0,    41,    39,     0,    33,    29,    32,     0,    27,     0,
+       0,     0,     0,     0,     0,    59,     0,   133,     0,     0,
+     135,     0,   149,   147,   146,     0,     0,     0,     0,    92,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   111,     0,     0,     0,     0,    44,   118,     0,
+      17,     0,   130,     0,   128,     0,    26,     0,    43,     0,
+      45,    60,     0,   136,   138,   132,     0,   134,   145,   148,
+       0,   139,     0,     0,     0,    48,     0,     0,    65,    51,
+       0,    53,     0,    62,    95,     0,   102,     0,    87,    86,
+      88,    73,    77,    83,    68,    72,     0,    94,    94,    94,
+      79,     0,     0,     0,     0,   120,   114,    57,   117,     0,
+      82,    84,     0,    16,   129,    15,     0,    24,     0,    61,
+       0,   137,   142,     0,    59,     0,    40,    50,    67,    49,
+     108,    81,     0,     0,    59,     0,     0,     0,     0,     0,
+      63,     0,     0,    70,     0,     0,    71,     0,     0,     0,
+     112,     0,    90,    89,    91,     0,     0,   126,    80,   121,
+      58,   113,   116,     0,     0,    14,     0,     0,    59,     0,
+       0,     0,   110,   118,     0,     0,     0,     0,     0,     0,
+       0,    64,    97,    96,    62,   103,   107,   105,     0,     0,
+       0,    93,   125,   127,     0,   115,   119,     0,     0,     0,
+      46,     0,     0,     0,     0,     0,     0,    52,     0,     0,
+      54,     0,     0,     0,     0,     0,    74,     0,    69,     0,
+       0,    85,   131,    47,     0,     0,     0,     0,   109,    66,
+       0,     0,   101,   100,    99,    98,   106,   104,     0,    78,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    75,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   141,     0,    56,     0,     0,   144,     0,
+       0,     0,     0,     0,     0,     0,    76,     0,     0,     0,
+       0,   140,    55,   143
 };
 
 /* YYDEFGOTO[NTERM-NUM]. */
 static const short int yydefgoto[] =
 {
-      -1,     6,     7,     8,    14,     9,    10,    11,    25,    26,
-      70,    47,    38,    39,    88,    40,    41,   136,   104,   195,
-     105,   198,   106,   170,    77,   146,   107,   194,   137,   211,
-     209,   300,   322,   210,   225,   214,   147,   149,   139,   235,
-     109,   158,   110,   258,   171,   166,   167,   114,   115,    42,
-      43,    80,    86,    87,    44
+      -1,     6,     7,     8,    14,     9,    10,    11,    26,    27,
+      71,    48,    22,    39,    40,    87,    41,    42,   134,   103,
+     193,   104,   196,   105,   168,    76,   144,   106,   192,   135,
+     209,   207,   298,   320,   208,   223,   212,   145,   147,   137,
+     233,   108,   156,   109,   256,   169,   164,   165,   113,   114,
+      43,    44,    79,    85,    86,    45
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -193
+#define YYPACT_NINF -192
 static const short int yypact[] =
 {
-     121,   117,  -193,   -38,    84,    17,    95,   343,  -193,  -193,
-    -193,  -193,  -193,  -193,    98,   122,     9,   117,  -193,  -193,
-    -193,   151,    53,  -193,   110,    14,  -193,   167,  -193,  -193,
-    -193,   102,    39,   182,   200,   214,   218,   184,   204,  -193,
-    -193,  -193,  -193,  -193,  -193,   219,  -193,   196,  -193,  -193,
-    -193,  -193,   280,   183,   221,   207,   187,    23,    44,    20,
-    -193,  -193,   461,  -193,  -193,  -193,   357,  -193,   228,   192,
-     195,  -193,   333,   229,   187,   461,   197,   234,  -193,   238,
-      16,  -193,    46,  -193,  -193,  -193,     5,   147,   206,   461,
-    -193,   211,   249,   250,   251,   252,   125,   220,   254,   256,
-     258,   253,   261,   104,   461,   461,   461,   129,  -193,    60,
-      50,  -193,   230,  -193,   383,  -193,   409,  -193,   262,  -193,
-    -193,   270,  -193,   239,   242,  -193,  -193,  -193,   276,  -193,
-    -193,  -193,   149,  -193,   246,   281,   274,  -193,   263,   282,
-    -193,  -193,   257,  -193,   173,     7,   201,   283,    63,   287,
-    -193,  -193,  -193,  -193,  -193,  -193,  -193,  -193,   298,   292,
-     292,   292,  -193,   273,   284,   306,   138,  -193,  -193,   286,
-    -193,   120,  -193,  -193,   324,  -193,  -193,  -193,   435,  -193,
-     294,  -193,   236,  -193,  -193,   299,    -6,   328,  -193,  -193,
-    -193,  -193,   335,  -193,   307,   308,    40,   336,   308,   220,
-     220,   311,  -193,   220,   220,  -193,   312,   166,  -193,   313,
-     314,   315,  -193,   461,  -193,  -193,  -193,   346,   349,   461,
-    -193,  -193,  -193,  -193,   326,   327,   461,  -193,   354,   461,
-      65,   359,   187,   187,  -193,   308,   373,   374,   187,   187,
-     385,   386,   380,  -193,   387,   391,   109,  -193,  -193,  -193,
-     392,   399,   410,  -193,   461,   461,     4,  -193,  -193,   411,
-     304,   461,  -193,   187,   187,   394,   388,   177,   418,  -193,
-     412,   415,  -193,   220,   220,   220,   220,   174,  -193,   461,
-    -193,    64,   113,  -193,  -193,  -193,   417,   421,   187,   187,
-    -193,  -193,   187,   187,  -193,  -193,  -193,  -193,  -193,  -193,
-     382,  -193,   187,   187,   420,   431,   432,   436,   440,   438,
-     439,   187,   187,   187,   187,  -193,   187,   187,   448,   445,
-     452,   453,   429,   463,   462,  -193,   187,  -193,   187,   467,
-    -193,   187,   464,   465,   461,   469,   187,   187,  -193,   187,
-     476,   478,   483,  -193,  -193,  -193
+     178,    76,  -192,   -36,    21,    13,    18,   465,  -192,  -192,
+    -192,  -192,  -192,  -192,    43,    66,    52,    76,  -192,  -192,
+    -192,   144,  -192,     5,  -192,    61,    14,  -192,    43,  -192,
+    -192,  -192,    62,   113,    89,   143,   166,   176,   134,   201,
+    -192,  -192,  -192,  -192,  -192,  -192,   184,  -192,   152,  -192,
+    -192,  -192,  -192,  -192,   148,   213,   196,   149,    64,    93,
+       3,  -192,  -192,   431,  -192,  -192,  -192,   327,  -192,   225,
+     189,   192,   226,   149,   431,   194,   231,  -192,   235,    44,
+    -192,    53,  -192,  -192,  -192,    12,   138,   203,   431,  -192,
+     208,   246,   247,   248,   249,   124,   215,   250,   251,   253,
+     257,   258,   160,   431,   431,   431,   106,  -192,    25,    70,
+    -192,   216,  -192,   353,  -192,   379,  -192,   259,  -192,   261,
+    -192,   233,   236,  -192,  -192,  -192,   270,  -192,  -192,  -192,
+     179,  -192,   239,   273,   271,  -192,   260,   274,  -192,  -192,
+     243,  -192,   198,   109,   200,   277,   193,   278,  -192,  -192,
+    -192,  -192,  -192,  -192,  -192,  -192,   281,   267,   267,   267,
+    -192,   254,   266,   283,   121,  -192,  -192,   269,  -192,   205,
+    -192,  -192,   288,  -192,  -192,  -192,   405,  -192,   275,  -192,
+     284,  -192,  -192,   276,    10,   290,  -192,  -192,  -192,  -192,
+     304,  -192,   295,   296,    51,   303,   296,   215,   215,   297,
+    -192,   215,   215,  -192,   299,   163,  -192,   300,   302,   307,
+    -192,   431,  -192,  -192,  -192,   311,   313,   431,  -192,  -192,
+    -192,  -192,   309,   310,   431,  -192,   291,   431,    86,   314,
+     149,   149,  -192,   296,   337,   355,   149,   149,   356,   308,
+     354,  -192,   359,   357,   122,  -192,  -192,  -192,   358,   367,
+     368,  -192,   431,   431,     2,  -192,  -192,   369,   301,   431,
+    -192,   149,   149,   375,   378,   214,   388,  -192,   380,   384,
+    -192,   215,   215,   215,   215,   164,  -192,   431,  -192,    55,
+      96,  -192,  -192,  -192,   383,   389,   149,   149,  -192,  -192,
+     149,   149,  -192,  -192,  -192,  -192,  -192,  -192,   361,  -192,
+     149,   149,   390,   401,   402,   406,   410,   408,   409,   149,
+     149,   149,   149,  -192,   149,   149,   418,   415,   422,   423,
+     399,   433,   432,  -192,   149,  -192,   149,   437,  -192,   149,
+     434,   435,   431,   439,   149,   149,  -192,   149,   446,   448,
+     453,  -192,  -192,  -192
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const short int yypgoto[] =
 {
-    -193,  -193,  -193,   485,   479,  -193,  -193,  -193,  -193,   470,
-    -193,  -193,   446,    37,  -193,  -193,  -193,  -192,  -193,  -193,
-    -193,  -193,  -193,    18,   -63,   -96,  -193,  -193,   -62,  -193,
-    -193,  -193,  -193,  -193,  -193,    35,  -193,  -193,  -193,  -193,
-    -193,  -193,  -193,  -193,   264,  -193,   331,   384,  -112,  -193,
-    -193,   443,  -193,   419,  -193
+    -192,  -192,  -192,   455,   450,  -192,  -192,  -192,  -192,   443,
+    -192,  -192,   442,  -192,   436,  -192,  -192,  -192,  -191,  -192,
+    -192,  -192,  -192,  -192,    32,   -64,   -95,  -192,  -192,   -63,
+    -192,  -192,  -192,  -192,  -192,  -192,   -20,  -192,  -192,  -192,
+    -192,  -192,  -192,  -192,  -192,   238,  -192,   312,   362,  -111,
+    -192,  -192,   419,  -192,   394,  -192
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -769,112 +768,108 @@ static const short int yypgoto[] =
 #define YYTABLE_NINF -125
 static const short int yytable[] =
 {
-     108,   148,   176,    15,   113,   189,   130,   232,    89,  -123,
-     131,   121,    90,   122,    23,    49,    91,   126,   201,    50,
-      17,   127,    92,    93,    94,    83,    95,   256,    78,    96,
-      97,    98,    99,   100,   260,   123,   101,   102,  -123,  -123,
-    -123,    84,   159,   160,   161,   103,    85,   126,   202,    81,
-      24,   129,   113,   238,   113,    24,    84,   128,   172,   173,
-      45,    85,   281,   282,    79,   189,   176,   168,    89,  -122,
-      54,   187,    90,   206,   191,    65,    91,   207,   263,   197,
-      55,   123,    92,    93,    94,    79,    95,   128,    16,    96,
-      97,    98,    99,   100,    46,    18,   101,   102,  -122,  -122,
-    -122,   169,    21,   241,   242,   103,   123,   244,   245,    65,
-     247,   249,   155,   156,   189,   157,   113,    89,  -124,    48,
-     201,    90,   231,   277,     1,    91,    53,   223,    22,     2,
-     224,    92,    93,    94,   162,    95,     3,     4,    96,    97,
-      98,    99,   100,   220,     5,   101,   102,  -124,  -124,  -124,
-     202,   253,    28,    12,   103,   133,    29,   184,    13,    30,
-     134,   144,   185,   163,   164,   165,   145,   262,    31,   265,
-     266,    52,   163,   164,   165,   270,   271,   294,   295,   296,
-     297,    32,    33,   199,   290,    60,   200,   224,    56,    34,
-      35,    36,    37,    61,   191,   215,   216,    67,   191,   285,
-     286,   287,   248,    68,    57,    63,    69,   145,    62,    64,
-     298,   203,    30,   237,   204,   299,   240,   301,    58,   191,
-     191,    31,    59,    66,    73,   304,   305,    74,    76,   306,
-     307,    75,   116,   117,    32,    33,   118,   120,   123,   309,
-     310,   124,    34,    35,    36,    37,   125,   135,   318,   319,
-     320,   321,   138,   323,   324,   140,   141,   142,   143,   153,
-     229,   145,   150,   332,   151,   333,   152,   154,   335,   192,
-     179,   174,   338,   340,   341,   189,   342,   180,    89,   190,
-     181,    28,    90,   182,   183,    71,    91,   186,    30,   188,
-     193,   205,    92,    93,    94,   208,    95,    31,   196,    96,
-      97,    98,    99,   100,   212,   189,   101,   102,    89,   284,
-      32,    33,    90,   213,   217,   103,    91,   219,    34,    35,
-      36,    37,    92,    93,    94,   218,    95,   222,   226,    96,
-      97,    98,    99,   100,    63,   228,   101,   102,   119,   233,
-     230,    30,   234,    -2,    19,   103,     1,   239,   236,   169,
-      31,     2,   243,   246,   250,   251,   252,   254,     3,     4,
-     255,    89,   111,    32,    33,    90,     5,   257,   259,    91,
-     264,    34,    35,    36,    37,    92,    93,    94,   261,    95,
-     268,   269,    96,    97,    98,    99,   100,    89,   175,   101,
-     102,    90,   272,   274,   112,    91,   273,   275,   103,   289,
-     278,    92,    93,    94,   276,    95,   279,   288,    96,    97,
-      98,    99,   100,    89,   177,   101,   102,    90,   280,   283,
-     112,    91,   291,   308,   103,   292,   293,    92,    93,    94,
-     302,    95,   303,   311,    96,    97,    98,    99,   100,    89,
-     227,   101,   102,    90,   312,   313,   112,    91,   315,   314,
-     103,   316,   317,    92,    93,    94,   325,    95,   326,   327,
-      96,    97,    98,    99,   100,    89,   328,   101,   102,    90,
-     329,   330,   112,    91,   334,   331,   103,   336,   337,    92,
-      93,    94,   339,    95,   343,   344,    96,    97,    98,    99,
-     100,   345,    20,   101,   102,    51,    27,   221,    72,   267,
-     178,    82,   103,     0,     0,   132
+     107,   146,   174,   187,   112,    15,    88,  -123,    82,   119,
+      89,   120,    46,   128,    90,    50,    17,   129,    18,    51,
+      91,    92,    93,   230,    94,    16,   254,    95,    96,    97,
+      98,    99,   166,   258,   100,   101,  -123,  -123,  -123,    83,
+     157,   158,   159,   102,    84,   124,    47,    21,    83,   125,
+     112,   121,   112,    84,   124,    25,   187,    24,   127,    88,
+    -122,   279,   280,    89,   236,   174,   167,    90,   185,    77,
+      49,   189,    23,    91,    92,    93,   195,    94,   170,   171,
+      95,    96,    97,    98,    99,   126,    54,   100,   101,  -122,
+    -122,  -122,   121,    25,   126,    57,   102,   187,    80,   261,
+      88,  -124,   239,   240,    89,    78,   242,   243,    90,   245,
+     247,   160,    12,   112,    91,    92,    93,    13,    94,   229,
+     199,    95,    96,    97,    98,    99,   218,   121,   100,   101,
+    -124,  -124,  -124,   199,    78,    61,   275,   102,   213,   214,
+     161,   162,   163,    62,    55,    29,   131,    58,   251,    30,
+     200,   132,    31,    68,    56,   161,   162,   163,    63,    69,
+     142,    32,    70,   200,   260,   143,   263,   264,   153,   154,
+      59,   155,   268,   269,    33,    34,   292,   293,   294,   295,
+      60,     1,    35,    36,    37,    38,     2,   182,    67,    72,
+      75,   189,   183,     3,     4,   189,   283,   284,   285,   246,
+     296,     5,    64,   204,   143,   297,    65,   205,   197,    31,
+     201,   198,   221,   202,   299,   222,   189,   189,    32,    73,
+      74,   288,   302,   303,   222,   235,   304,   305,   238,   115,
+     116,    33,    34,   117,   118,   121,   307,   308,   122,    35,
+      36,    37,    38,   123,   133,   316,   317,   318,   319,   136,
+     321,   322,   138,   139,   140,   141,   143,   172,   148,   149,
+     330,   150,   331,   151,   152,   333,   190,   177,   178,   336,
+     338,   339,   187,   340,   179,    88,   188,   180,   181,    89,
+     184,   186,   191,    90,   194,   203,   206,   210,   211,    91,
+      92,    93,   224,    94,   217,   215,    95,    96,    97,    98,
+      99,   231,   187,   100,   101,    88,   282,   216,   227,    89,
+     220,   232,   102,    90,   237,   259,   226,   228,   271,    91,
+      92,    93,   252,    94,   253,   262,    95,    96,    97,    98,
+      99,    88,   110,   100,   101,    89,   234,   167,   241,    90,
+     244,   248,   102,   249,   266,    91,    92,    93,   250,    94,
+     255,   257,    95,    96,    97,    98,    99,    88,   173,   100,
+     101,    89,   267,   270,   111,    90,   276,   272,   102,   273,
+     274,    91,    92,    93,   277,    94,   278,   281,    95,    96,
+      97,    98,    99,    88,   175,   100,   101,    89,   286,   287,
+     111,    90,   289,   290,   102,   291,   300,    91,    92,    93,
+     301,    94,   306,   309,    95,    96,    97,    98,    99,    88,
+     225,   100,   101,    89,   310,   311,   111,    90,   313,   312,
+     102,   314,   315,    91,    92,    93,   323,    94,   324,   325,
+      95,    96,    97,    98,    99,    88,   326,   100,   101,    89,
+     327,   328,   111,    90,   332,   329,   102,   334,   335,    91,
+      92,    93,   337,    94,   341,   342,    95,    96,    97,    98,
+      99,   343,    20,   100,   101,    -2,    19,    28,     1,    52,
+      53,   265,   102,     2,     0,    66,   219,   176,    81,   130,
+       3,     4,     0,     0,     0,     0,     0,     0,     5
 };
 
 static const short int yycheck[] =
 {
-      62,    97,   114,    41,    66,     1,     1,    13,     4,     5,
-       5,    74,     8,    75,     5,     1,    12,     1,    11,     5,
-       3,     5,    18,    19,    20,     5,    22,   219,     5,    25,
-      26,    27,    28,    29,   226,    41,    32,    33,    34,    35,
-      36,    36,   104,   105,   106,    41,    41,     1,    41,     5,
-      41,     5,   114,    13,   116,    41,    36,    41,     8,     9,
-       7,    41,   254,   255,    41,     1,   178,     7,     4,     5,
-      31,   134,     8,    10,   136,    38,    12,    14,    13,   142,
-      41,    41,    18,    19,    20,    41,    22,    41,     4,    25,
-      26,    27,    28,    29,    41,     0,    32,    33,    34,    35,
-      36,    41,     4,   199,   200,    41,    41,   203,   204,    72,
-     206,   207,     8,     9,     1,    11,   178,     4,     5,     9,
-      11,     8,   185,    14,     3,    12,    24,     7,     6,     8,
-      10,    18,    19,    20,     5,    22,    15,    16,    25,    26,
-      27,    28,    29,     5,    23,    32,    33,    34,    35,    36,
-      41,   213,     1,    36,    41,     8,     5,     8,    41,     8,
-      13,    36,    13,    34,    35,    36,    41,   229,    17,   232,
-     233,     4,    34,    35,    36,   238,   239,   273,   274,   275,
-     276,    30,    31,    10,     7,     1,    13,    10,     6,    38,
-      39,    40,    41,     9,   256,   160,   161,     1,   260,   261,
-     263,   264,    36,     7,     4,     1,    10,    41,    24,     5,
-      36,    10,     8,   195,    13,    41,   198,   279,     4,   281,
-     282,    17,     4,     4,    41,   288,   289,     6,    41,   292,
-     293,    24,     4,    41,    30,    31,    41,     8,    41,   302,
-     303,     7,    38,    39,    40,    41,     8,    41,   311,   312,
-     313,   314,    41,   316,   317,     6,     6,     6,     6,     6,
-      24,    41,     8,   326,     8,   328,     8,     6,   331,     6,
-       8,    41,   334,   336,   337,     1,   339,     7,     4,     5,
-      41,     1,     8,    41,     8,     5,    12,    41,     8,     8,
-       8,     8,    18,    19,    20,     8,    22,    17,    41,    25,
-      26,    27,    28,    29,     6,     1,    32,    33,     4,     5,
-      30,    31,     8,    21,    41,    41,    12,    11,    38,    39,
-      40,    41,    18,    19,    20,    41,    22,    41,     4,    25,
-      26,    27,    28,    29,     1,    41,    32,    33,     5,    11,
-      41,     8,     7,     0,     1,    41,     3,    11,    41,    41,
-      17,     8,    41,    41,    41,    41,    41,    11,    15,    16,
-      11,     4,     5,    30,    31,     8,    23,    41,    41,    12,
-      11,    38,    39,    40,    41,    18,    19,    20,    24,    22,
-       7,     7,    25,    26,    27,    28,    29,     4,     5,    32,
-      33,     8,     7,    13,    37,    12,    10,    10,    41,    11,
-       8,    18,    19,    20,    13,    22,     7,    13,    25,    26,
-      27,    28,    29,     4,     5,    32,    33,     8,     8,     8,
-      37,    12,     4,    41,    41,    13,    11,    18,    19,    20,
-      13,    22,    11,    13,    25,    26,    27,    28,    29,     4,
+      63,    96,   113,     1,    67,    41,     4,     5,     5,    73,
+       8,    74,     7,     1,    12,     1,     3,     5,     0,     5,
+      18,    19,    20,    13,    22,     4,   217,    25,    26,    27,
+      28,    29,     7,   224,    32,    33,    34,    35,    36,    36,
+     103,   104,   105,    41,    41,     1,    41,     4,    36,     5,
+     113,    41,   115,    41,     1,    41,     1,     5,     5,     4,
+       5,   252,   253,     8,    13,   176,    41,    12,   132,     5,
+       9,   134,     6,    18,    19,    20,   140,    22,     8,     9,
+      25,    26,    27,    28,    29,    41,    24,    32,    33,    34,
+      35,    36,    41,    41,    41,     6,    41,     1,     5,    13,
+       4,     5,   197,   198,     8,    41,   201,   202,    12,   204,
+     205,     5,    36,   176,    18,    19,    20,    41,    22,   183,
+      11,    25,    26,    27,    28,    29,     5,    41,    32,    33,
+      34,    35,    36,    11,    41,     1,    14,    41,   158,   159,
+      34,    35,    36,     9,    31,     1,     8,     4,   211,     5,
+      41,    13,     8,     1,    41,    34,    35,    36,    24,     7,
+      36,    17,    10,    41,   227,    41,   230,   231,     8,     9,
+       4,    11,   236,   237,    30,    31,   271,   272,   273,   274,
+       4,     3,    38,    39,    40,    41,     8,     8,     4,    41,
+      41,   254,    13,    15,    16,   258,   259,   261,   262,    36,
+      36,    23,     1,    10,    41,    41,     5,    14,    10,     8,
+      10,    13,     7,    13,   277,    10,   279,   280,    17,     6,
+      24,     7,   286,   287,    10,   193,   290,   291,   196,     4,
+      41,    30,    31,    41,     8,    41,   300,   301,     7,    38,
+      39,    40,    41,     8,    41,   309,   310,   311,   312,    41,
+     314,   315,     6,     6,     6,     6,    41,    41,     8,     8,
+     324,     8,   326,     6,     6,   329,     6,     8,     7,   332,
+     334,   335,     1,   337,    41,     4,     5,    41,     8,     8,
+      41,     8,     8,    12,    41,     8,     8,     6,    21,    18,
+      19,    20,     4,    22,    11,    41,    25,    26,    27,    28,
+      29,    11,     1,    32,    33,     4,     5,    41,    24,     8,
+      41,     7,    41,    12,    11,    24,    41,    41,    10,    18,
+      19,    20,    11,    22,    11,    11,    25,    26,    27,    28,
+      29,     4,     5,    32,    33,     8,    41,    41,    41,    12,
+      41,    41,    41,    41,     7,    18,    19,    20,    41,    22,
+      41,    41,    25,    26,    27,    28,    29,     4,     5,    32,
+      33,     8,     7,     7,    37,    12,     8,    13,    41,    10,
+      13,    18,    19,    20,     7,    22,     8,     8,    25,    26,
+      27,    28,    29,     4,     5,    32,    33,     8,    13,    11,
+      37,    12,     4,    13,    41,    11,    13,    18,    19,    20,
+      11,    22,    41,    13,    25,    26,    27,    28,    29,     4,
        5,    32,    33,     8,    13,    13,    37,    12,     8,    13,
       41,    13,    13,    18,    19,    20,     8,    22,    13,     7,
       25,    26,    27,    28,    29,     4,    13,    32,    33,     8,
       41,     8,    37,    12,     7,    13,    41,    13,    13,    18,
       19,    20,    13,    22,     8,     7,    25,    26,    27,    28,
-      29,     8,     7,    32,    33,    25,    17,   166,    52,   235,
-     116,    58,    41,    -1,    -1,    86
+      29,     8,     7,    32,    33,     0,     1,    17,     3,    26,
+      28,   233,    41,     8,    -1,    39,   164,   115,    59,    85,
+      15,    16,    -1,    -1,    -1,    -1,    -1,    -1,    23
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -883,39 +878,39 @@ static const unsigned char yystos[] =
 {
        0,     3,     8,    15,    16,    23,    43,    44,    45,    47,
       48,    49,    36,    41,    46,    41,     4,     3,     0,     1,
-      45,     4,     6,     5,    41,    50,    51,    46,     1,     5,
-       8,    17,    30,    31,    38,    39,    40,    41,    54,    55,
-      57,    58,    91,    92,    96,     7,    41,    53,     9,     1,
-       5,    51,     4,    24,    31,    41,     6,     4,     4,     4,
-       1,     9,    24,     1,     5,    55,     4,     1,     7,    10,
-      52,     5,    54,    41,     6,    24,    41,    66,     5,    41,
-      93,     5,    93,     5,    36,    41,    94,    95,    56,     4,
-       8,    12,    18,    19,    20,    22,    25,    26,    27,    28,
-      29,    32,    33,    41,    60,    62,    64,    68,    70,    82,
-      84,     5,    37,    70,    89,    90,     4,    41,    41,     5,
-       8,    66,    70,    41,     7,     8,     1,     5,    41,     5,
-       1,     5,    95,     8,    13,    41,    59,    70,    41,    80,
-       6,     6,     6,     6,    36,    41,    67,    78,    67,    79,
-       8,     8,     8,     6,     6,     8,     9,    11,    83,    70,
-      70,    70,     5,    34,    35,    36,    87,    88,     7,    41,
-      65,    86,     8,     9,    41,     5,    90,     5,    89,     8,
-       7,    41,    41,     8,     8,    13,    41,    66,     8,     1,
-       5,    70,     6,     8,    69,    61,    41,    66,    63,    10,
-      13,    11,    41,    10,    13,     8,    10,    14,     8,    72,
-      75,    71,     6,    21,    77,    77,    77,    41,    41,    11,
-       5,    88,    41,     7,    10,    76,     4,     5,    41,    24,
-      41,    66,    13,    11,     7,    81,    41,    65,    13,    11,
-      65,    67,    67,    41,    67,    67,    41,    67,    36,    67,
-      41,    41,    41,    70,    11,    11,    59,    41,    85,    41,
-      59,    24,    70,    13,    11,    66,    66,    86,     7,     7,
-      66,    66,     7,    10,    13,    10,    13,    14,     8,     7,
-       8,    59,    59,     8,     5,    70,    66,    66,    13,    11,
-       7,     4,    13,    11,    67,    67,    67,    67,    36,    41,
-      73,    70,    13,    11,    66,    66,    66,    66,    41,    66,
-      66,    13,    13,    13,    13,     8,    13,    13,    66,    66,
-      66,    66,    74,    66,    66,     8,    13,     7,    13,    41,
-       8,    13,    66,    66,     7,    66,    13,    13,    70,    13,
-      66,    66,    66,     8,     7,     8
+      45,     4,    54,     6,     5,    41,    50,    51,    46,     1,
+       5,     8,    17,    30,    31,    38,    39,    40,    41,    55,
+      56,    58,    59,    92,    93,    97,     7,    41,    53,     9,
+       1,     5,    51,    54,    24,    31,    41,     6,     4,     4,
+       4,     1,     9,    24,     1,     5,    56,     4,     1,     7,
+      10,    52,    41,     6,    24,    41,    67,     5,    41,    94,
+       5,    94,     5,    36,    41,    95,    96,    57,     4,     8,
+      12,    18,    19,    20,    22,    25,    26,    27,    28,    29,
+      32,    33,    41,    61,    63,    65,    69,    71,    83,    85,
+       5,    37,    71,    90,    91,     4,    41,    41,     8,    67,
+      71,    41,     7,     8,     1,     5,    41,     5,     1,     5,
+      96,     8,    13,    41,    60,    71,    41,    81,     6,     6,
+       6,     6,    36,    41,    68,    79,    68,    80,     8,     8,
+       8,     6,     6,     8,     9,    11,    84,    71,    71,    71,
+       5,    34,    35,    36,    88,    89,     7,    41,    66,    87,
+       8,     9,    41,     5,    91,     5,    90,     8,     7,    41,
+      41,     8,     8,    13,    41,    67,     8,     1,     5,    71,
+       6,     8,    70,    62,    41,    67,    64,    10,    13,    11,
+      41,    10,    13,     8,    10,    14,     8,    73,    76,    72,
+       6,    21,    78,    78,    78,    41,    41,    11,     5,    89,
+      41,     7,    10,    77,     4,     5,    41,    24,    41,    67,
+      13,    11,     7,    82,    41,    66,    13,    11,    66,    68,
+      68,    41,    68,    68,    41,    68,    36,    68,    41,    41,
+      41,    71,    11,    11,    60,    41,    86,    41,    60,    24,
+      71,    13,    11,    67,    67,    87,     7,     7,    67,    67,
+       7,    10,    13,    10,    13,    14,     8,     7,     8,    60,
+      60,     8,     5,    71,    67,    67,    13,    11,     7,     4,
+      13,    11,    68,    68,    68,    68,    36,    41,    74,    71,
+      13,    11,    67,    67,    67,    67,    41,    67,    67,    13,
+      13,    13,    13,     8,    13,    13,    67,    67,    67,    67,
+      75,    67,    67,     8,    13,     7,    13,    41,     8,    13,
+      67,    67,     7,    67,    13,    13,    71,    13,    67,    67,
+      67,     8,     7,     8
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1291,311 +1286,319 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
   switch (yytype)
     {
       case 41: /* "word" */
-#line 163 "ael.y"
+#line 165 "ael.y"
         { free((yyvaluep->str));};
-#line 1297 "ael.tab.c"
+#line 1292 "ael.tab.c"
         break;
       case 44: /* "objects" */
-#line 151 "ael.y"
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1305 "ael.tab.c"
+#line 1300 "ael.tab.c"
         break;
       case 45: /* "object" */
-#line 151 "ael.y"
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1313 "ael.tab.c"
+#line 1308 "ael.tab.c"
         break;
       case 46: /* "word_or_default" */
-#line 163 "ael.y"
+#line 165 "ael.y"
         { free((yyvaluep->str));};
-#line 1318 "ael.tab.c"
+#line 1313 "ael.tab.c"
         break;
       case 47: /* "context" */
-#line 151 "ael.y"
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1326 "ael.tab.c"
+#line 1321 "ael.tab.c"
         break;
       case 48: /* "macro" */
-#line 151 "ael.y"
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1334 "ael.tab.c"
+#line 1329 "ael.tab.c"
         break;
       case 49: /* "globals" */
-#line 151 "ael.y"
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1342 "ael.tab.c"
+#line 1337 "ael.tab.c"
         break;
       case 50: /* "global_statements" */
-#line 151 "ael.y"
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1350 "ael.tab.c"
+#line 1345 "ael.tab.c"
         break;
       case 51: /* "global_statement" */
-#line 151 "ael.y"
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1358 "ael.tab.c"
+#line 1353 "ael.tab.c"
         break;
       case 53: /* "arglist" */
-#line 151 "ael.y"
+#line 152 "ael.y"
+        {
+               destroy_pval((yyvaluep->pval));
+               prev_word=0;
+       };
+#line 1361 "ael.tab.c"
+        break;
+      case 54: /* "elements_block" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1366 "ael.tab.c"
+#line 1369 "ael.tab.c"
         break;
-      case 54: /* "elements" */
-#line 151 "ael.y"
+      case 55: /* "elements" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1374 "ael.tab.c"
+#line 1377 "ael.tab.c"
         break;
-      case 55: /* "element" */
-#line 151 "ael.y"
+      case 56: /* "element" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1382 "ael.tab.c"
+#line 1385 "ael.tab.c"
         break;
-      case 57: /* "ignorepat" */
-#line 151 "ael.y"
+      case 58: /* "ignorepat" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1390 "ael.tab.c"
+#line 1393 "ael.tab.c"
         break;
-      case 58: /* "extension" */
-#line 151 "ael.y"
+      case 59: /* "extension" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1398 "ael.tab.c"
+#line 1401 "ael.tab.c"
         break;
-      case 59: /* "statements" */
-#line 151 "ael.y"
+      case 60: /* "statements" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1406 "ael.tab.c"
+#line 1409 "ael.tab.c"
         break;
-      case 60: /* "if_head" */
-#line 151 "ael.y"
+      case 61: /* "if_head" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1414 "ael.tab.c"
+#line 1417 "ael.tab.c"
         break;
-      case 62: /* "random_head" */
-#line 151 "ael.y"
+      case 63: /* "random_head" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1422 "ael.tab.c"
+#line 1425 "ael.tab.c"
         break;
-      case 64: /* "iftime_head" */
-#line 151 "ael.y"
+      case 65: /* "iftime_head" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1430 "ael.tab.c"
+#line 1433 "ael.tab.c"
         break;
-      case 65: /* "word_list" */
-#line 163 "ael.y"
+      case 66: /* "word_list" */
+#line 165 "ael.y"
         { free((yyvaluep->str));};
-#line 1435 "ael.tab.c"
+#line 1438 "ael.tab.c"
         break;
-      case 66: /* "word3_list" */
-#line 163 "ael.y"
+      case 67: /* "word3_list" */
+#line 165 "ael.y"
         { free((yyvaluep->str));};
-#line 1440 "ael.tab.c"
+#line 1443 "ael.tab.c"
         break;
-      case 67: /* "goto_word" */
-#line 163 "ael.y"
+      case 68: /* "goto_word" */
+#line 165 "ael.y"
         { free((yyvaluep->str));};
-#line 1445 "ael.tab.c"
+#line 1448 "ael.tab.c"
         break;
-      case 68: /* "switch_head" */
-#line 151 "ael.y"
+      case 69: /* "switch_head" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1453 "ael.tab.c"
+#line 1456 "ael.tab.c"
         break;
-      case 70: /* "statement" */
-#line 151 "ael.y"
+      case 71: /* "statement" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1461 "ael.tab.c"
+#line 1464 "ael.tab.c"
         break;
-      case 77: /* "opt_else" */
-#line 151 "ael.y"
+      case 78: /* "opt_else" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1469 "ael.tab.c"
+#line 1472 "ael.tab.c"
         break;
-      case 78: /* "target" */
-#line 151 "ael.y"
+      case 79: /* "target" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1477 "ael.tab.c"
+#line 1480 "ael.tab.c"
         break;
-      case 79: /* "jumptarget" */
-#line 151 "ael.y"
+      case 80: /* "jumptarget" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1485 "ael.tab.c"
+#line 1488 "ael.tab.c"
         break;
-      case 80: /* "macro_call" */
-#line 151 "ael.y"
+      case 81: /* "macro_call" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1493 "ael.tab.c"
+#line 1496 "ael.tab.c"
         break;
-      case 82: /* "application_call_head" */
-#line 151 "ael.y"
+      case 83: /* "application_call_head" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1501 "ael.tab.c"
+#line 1504 "ael.tab.c"
         break;
-      case 84: /* "application_call" */
-#line 151 "ael.y"
+      case 85: /* "application_call" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1509 "ael.tab.c"
+#line 1512 "ael.tab.c"
         break;
-      case 85: /* "opt_word" */
-#line 163 "ael.y"
+      case 86: /* "opt_word" */
+#line 165 "ael.y"
         { free((yyvaluep->str));};
-#line 1514 "ael.tab.c"
+#line 1517 "ael.tab.c"
         break;
-      case 86: /* "eval_arglist" */
-#line 151 "ael.y"
+      case 87: /* "eval_arglist" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1522 "ael.tab.c"
+#line 1525 "ael.tab.c"
         break;
-      case 87: /* "case_statements" */
-#line 151 "ael.y"
+      case 88: /* "case_statements" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1530 "ael.tab.c"
+#line 1533 "ael.tab.c"
         break;
-      case 88: /* "case_statement" */
-#line 151 "ael.y"
+      case 89: /* "case_statement" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1538 "ael.tab.c"
+#line 1541 "ael.tab.c"
         break;
-      case 89: /* "macro_statements" */
-#line 151 "ael.y"
+      case 90: /* "macro_statements" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1546 "ael.tab.c"
+#line 1549 "ael.tab.c"
         break;
-      case 90: /* "macro_statement" */
-#line 151 "ael.y"
+      case 91: /* "macro_statement" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1554 "ael.tab.c"
+#line 1557 "ael.tab.c"
         break;
-      case 91: /* "switches" */
-#line 151 "ael.y"
+      case 92: /* "switches" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1562 "ael.tab.c"
+#line 1565 "ael.tab.c"
         break;
-      case 92: /* "eswitches" */
-#line 151 "ael.y"
+      case 93: /* "eswitches" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1570 "ael.tab.c"
+#line 1573 "ael.tab.c"
         break;
-      case 93: /* "switchlist" */
-#line 151 "ael.y"
+      case 94: /* "switchlist" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1578 "ael.tab.c"
+#line 1581 "ael.tab.c"
         break;
-      case 94: /* "includeslist" */
-#line 151 "ael.y"
+      case 95: /* "includeslist" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1586 "ael.tab.c"
+#line 1589 "ael.tab.c"
         break;
-      case 95: /* "includedname" */
-#line 163 "ael.y"
+      case 96: /* "includedname" */
+#line 165 "ael.y"
         { free((yyvaluep->str));};
-#line 1591 "ael.tab.c"
+#line 1594 "ael.tab.c"
         break;
-      case 96: /* "includes" */
-#line 151 "ael.y"
+      case 97: /* "includes" */
+#line 152 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1599 "ael.tab.c"
+#line 1602 "ael.tab.c"
         break;
 
       default:
@@ -1912,17 +1915,17 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 168 "ael.y"
+#line 170 "ael.y"
     { (yyval.pval) = parseio->pval = (yyvsp[0].pval); ;}
     break;
 
   case 3:
-#line 171 "ael.y"
+#line 173 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 4:
-#line 173 "ael.y"
+#line 175 "ael.y"
     {
                        if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {
                                (yyval.pval)=(yyvsp[-1].pval);
@@ -1936,216 +1939,211 @@ yyreduce:
     break;
 
   case 5:
-#line 183 "ael.y"
+#line 185 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 6:
-#line 186 "ael.y"
+#line 188 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 7:
-#line 187 "ael.y"
+#line 189 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 8:
-#line 188 "ael.y"
+#line 190 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 9:
-#line 189 "ael.y"
+#line 191 "ael.y"
     {(yyval.pval)=0;/* allow older docs to be read */;}
     break;
 
   case 10:
-#line 192 "ael.y"
+#line 194 "ael.y"
     { (yyval.str) = (yyvsp[0].str); ;}
     break;
 
   case 11:
-#line 193 "ael.y"
+#line 195 "ael.y"
     { (yyval.str) = strdup("default"); ;}
     break;
 
   case 12:
-#line 196 "ael.y"
+#line 198 "ael.y"
     {
-               (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-4]), &(yylsp[0]));
-               (yyval.pval)->u1.str = (yyvsp[-3].str);
-               (yyval.pval)->u2.statements = (yyvsp[-1].pval); ;}
+               (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-2]), &(yylsp[0]));
+               (yyval.pval)->u1.str = (yyvsp[-1].str);
+               (yyval.pval)->u2.statements = (yyvsp[0].pval); ;}
     break;
 
   case 13:
-#line 200 "ael.y"
+#line 202 "ael.y"
     {
                (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-3]), &(yylsp[0]));
-               (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
-    break;
-
-  case 14:
-#line 203 "ael.y"
-    {
-               (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-5]), &(yylsp[0]));
-               (yyval.pval)->u1.str = (yyvsp[-3].str);
-               (yyval.pval)->u2.statements = (yyvsp[-1].pval);
-               (yyval.pval)->u3.abstract = 1; ;}
-    break;
-
-  case 15:
-#line 208 "ael.y"
-    {
-               (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-4]), &(yylsp[0]));
-               (yyval.pval)->u1.str = (yyvsp[-2].str);
+               (yyval.pval)->u1.str = (yyvsp[-1].str);
+               (yyval.pval)->u2.statements = (yyvsp[0].pval);
                (yyval.pval)->u3.abstract = 1; ;}
     break;
 
-  case 16:
-#line 214 "ael.y"
+  case 14:
+#line 209 "ael.y"
     {
                (yyval.pval) = npval2(PV_MACRO, &(yylsp[-7]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-6].str); (yyval.pval)->u2.arglist = (yyvsp[-4].pval); (yyval.pval)->u3.macro_statements = (yyvsp[-1].pval); ;}
     break;
 
-  case 17:
-#line 217 "ael.y"
+  case 15:
+#line 212 "ael.y"
     {
                (yyval.pval) = npval2(PV_MACRO, &(yylsp[-6]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-5].str); (yyval.pval)->u2.arglist = (yyvsp[-3].pval); ;}
     break;
 
-  case 18:
-#line 220 "ael.y"
+  case 16:
+#line 215 "ael.y"
     {
                (yyval.pval) = npval2(PV_MACRO, &(yylsp[-6]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-5].str);
                (yyval.pval)->u3.macro_statements = (yyvsp[-1].pval); ;}
     break;
 
-  case 19:
-#line 224 "ael.y"
+  case 17:
+#line 219 "ael.y"
     {
                (yyval.pval) = npval2(PV_MACRO, &(yylsp[-5]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-4].str); ;}
     break;
 
-  case 20:
-#line 229 "ael.y"
+  case 18:
+#line 224 "ael.y"
     {
                (yyval.pval) = npval2(PV_GLOBALS, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.statements = (yyvsp[-1].pval);;}
     break;
 
-  case 21:
-#line 232 "ael.y"
+  case 19:
+#line 227 "ael.y"
     { /* empty globals is OK */
                (yyval.pval) = npval2(PV_GLOBALS, &(yylsp[-2]), &(yylsp[0])); ;}
     break;
 
-  case 22:
-#line 236 "ael.y"
+  case 20:
+#line 231 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
-  case 23:
-#line 237 "ael.y"
+  case 21:
+#line 232 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));;}
     break;
 
-  case 24:
-#line 238 "ael.y"
+  case 22:
+#line 233 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
-  case 25:
-#line 241 "ael.y"
+  case 23:
+#line 236 "ael.y"
     { reset_semicount(parseio->scanner); ;}
     break;
 
-  case 26:
-#line 241 "ael.y"
+  case 24:
+#line 236 "ael.y"
     {
                (yyval.pval) = npval2(PV_VARDEC, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-4].str);
                (yyval.pval)->u2.val = (yyvsp[-1].str); ;}
     break;
 
-  case 27:
-#line 247 "ael.y"
+  case 25:
+#line 242 "ael.y"
     {
                (yyval.pval)= npval2(PV_WORD, &(yylsp[0]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[0].str); ;}
     break;
 
-  case 28:
-#line 250 "ael.y"
+  case 26:
+#line 245 "ael.y"
     {
                pval *z = npval2(PV_WORD, &(yylsp[-2]), &(yylsp[0]));
                z->u1.str = (yyvsp[0].str);
                (yyval.pval) = linku1((yyvsp[-2].pval),z); ;}
     break;
 
-  case 29:
-#line 254 "ael.y"
+  case 27:
+#line 249 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
+  case 28:
+#line 252 "ael.y"
+    { (yyval.pval) = NULL; ;}
+    break;
+
+  case 29:
+#line 253 "ael.y"
+    { (yyval.pval) = (yyvsp[-1].pval); ;}
+    break;
+
   case 30:
-#line 257 "ael.y"
+#line 256 "ael.y"
     { (yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 31:
-#line 258 "ael.y"
+#line 257 "ael.y"
     {(yyval.pval)=0;;}
     break;
 
   case 32:
-#line 259 "ael.y"
+#line 258 "ael.y"
     { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
                                else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
                                else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
     break;
 
   case 33:
-#line 262 "ael.y"
+#line 261 "ael.y"
     { (yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 34:
-#line 265 "ael.y"
+#line 264 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 35:
-#line 266 "ael.y"
+#line 265 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 36:
-#line 267 "ael.y"
+#line 266 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 37:
-#line 268 "ael.y"
+#line 267 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 38:
-#line 269 "ael.y"
+#line 268 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 39:
-#line 270 "ael.y"
+#line 269 "ael.y"
     { reset_semicount(parseio->scanner); ;}
     break;
 
   case 40:
-#line 270 "ael.y"
+#line 269 "ael.y"
     {
                (yyval.pval) = npval2(PV_VARDEC, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-4].str);
@@ -2153,24 +2151,24 @@ yyreduce:
     break;
 
   case 41:
-#line 274 "ael.y"
+#line 273 "ael.y"
     {free((yyvsp[-1].str)); (yyval.pval)=0;;}
     break;
 
   case 42:
-#line 275 "ael.y"
+#line 274 "ael.y"
     {(yyval.pval)=0;/* allow older docs to be read */;}
     break;
 
   case 43:
-#line 278 "ael.y"
+#line 277 "ael.y"
     {
                (yyval.pval) = npval2(PV_IGNOREPAT, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
   case 44:
-#line 283 "ael.y"
+#line 282 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2178,7 +2176,7 @@ yyreduce:
     break;
 
   case 45:
-#line 287 "ael.y"
+#line 286 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2187,7 +2185,7 @@ yyreduce:
     break;
 
   case 46:
-#line 292 "ael.y"
+#line 291 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[-6]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2196,7 +2194,7 @@ yyreduce:
     break;
 
   case 47:
-#line 297 "ael.y"
+#line 296 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[-7]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2206,48 +2204,48 @@ yyreduce:
     break;
 
   case 48:
-#line 306 "ael.y"
+#line 305 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 49:
-#line 307 "ael.y"
+#line 306 "ael.y"
     {if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
                                                 else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
                                                 else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
     break;
 
   case 50:
-#line 310 "ael.y"
+#line 309 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 51:
-#line 313 "ael.y"
+#line 312 "ael.y"
     { reset_parencount(parseio->scanner); ;}
     break;
 
   case 52:
-#line 313 "ael.y"
+#line 312 "ael.y"
     {
                (yyval.pval)= npval2(PV_IF, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str); ;}
     break;
 
   case 53:
-#line 318 "ael.y"
+#line 317 "ael.y"
     { reset_parencount(parseio->scanner); ;}
     break;
 
   case 54:
-#line 318 "ael.y"
+#line 317 "ael.y"
     {
                (yyval.pval) = npval2(PV_RANDOM, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str=(yyvsp[-1].str);;}
     break;
 
   case 55:
-#line 324 "ael.y"
+#line 323 "ael.y"
     {
                (yyval.pval) = npval2(PV_IFTIME, &(yylsp[-13]), &(yylsp[-9])); /* XXX really @5 or more ? */
                (yyval.pval)->u1.list = npval2(PV_WORD, &(yylsp[-11]), &(yylsp[-11]));
@@ -2266,7 +2264,7 @@ yyreduce:
     break;
 
   case 56:
-#line 339 "ael.y"
+#line 338 "ael.y"
     {
                (yyval.pval) = npval2(PV_IFTIME, &(yylsp[-9]), &(yylsp[-5])); /* XXX @5 or greater ? */
                (yyval.pval)->u1.list = npval2(PV_WORD, &(yylsp[-7]), &(yylsp[-7]));
@@ -2282,12 +2280,12 @@ yyreduce:
     break;
 
   case 57:
-#line 359 "ael.y"
+#line 358 "ael.y"
     { (yyval.str) = (yyvsp[0].str);;}
     break;
 
   case 58:
-#line 360 "ael.y"
+#line 359 "ael.y"
     {
                asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
                free((yyvsp[-1].str));
@@ -2296,12 +2294,12 @@ yyreduce:
     break;
 
   case 59:
-#line 367 "ael.y"
+#line 366 "ael.y"
     { (yyval.str) = (yyvsp[0].str);;}
     break;
 
   case 60:
-#line 368 "ael.y"
+#line 367 "ael.y"
     {
                asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
                free((yyvsp[-1].str));
@@ -2310,7 +2308,7 @@ yyreduce:
     break;
 
   case 61:
-#line 373 "ael.y"
+#line 372 "ael.y"
     {
                asprintf(&((yyval.str)), "%s%s%s", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str));
                free((yyvsp[-2].str));
@@ -2320,12 +2318,12 @@ yyreduce:
     break;
 
   case 62:
-#line 381 "ael.y"
+#line 380 "ael.y"
     { (yyval.str) = (yyvsp[0].str);;}
     break;
 
   case 63:
-#line 382 "ael.y"
+#line 381 "ael.y"
     {
                asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
                free((yyvsp[-1].str));
@@ -2333,7 +2331,7 @@ yyreduce:
     break;
 
   case 64:
-#line 386 "ael.y"
+#line 385 "ael.y"
     {
                asprintf(&((yyval.str)), "%s:%s", (yyvsp[-2].str), (yyvsp[0].str));
                free((yyvsp[-2].str));
@@ -2341,31 +2339,31 @@ yyreduce:
     break;
 
   case 65:
-#line 392 "ael.y"
+#line 391 "ael.y"
     { reset_parencount(parseio->scanner); ;}
     break;
 
   case 66:
-#line 392 "ael.y"
+#line 391 "ael.y"
     {
                (yyval.pval) = npval2(PV_SWITCH, &(yylsp[-5]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
     break;
 
   case 67:
-#line 400 "ael.y"
+#line 399 "ael.y"
     {
                (yyval.pval) = npval2(PV_STATEMENTBLOCK, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
     break;
 
   case 68:
-#line 403 "ael.y"
+#line 402 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 69:
-#line 403 "ael.y"
+#line 402 "ael.y"
     {
                (yyval.pval) = npval2(PV_VARDEC, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-4].str);
@@ -2373,43 +2371,43 @@ yyreduce:
     break;
 
   case 70:
-#line 407 "ael.y"
+#line 406 "ael.y"
     {
                (yyval.pval) = npval2(PV_GOTO, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
     break;
 
   case 71:
-#line 410 "ael.y"
+#line 409 "ael.y"
     {
                (yyval.pval) = npval2(PV_GOTO, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
     break;
 
   case 72:
-#line 413 "ael.y"
+#line 412 "ael.y"
     {
                (yyval.pval) = npval2(PV_LABEL, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str); ;}
     break;
 
   case 73:
-#line 416 "ael.y"
+#line 415 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 74:
-#line 417 "ael.y"
+#line 416 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 75:
-#line 418 "ael.y"
+#line 417 "ael.y"
     {reset_parencount(parseio->scanner);;}
     break;
 
   case 76:
-#line 418 "ael.y"
+#line 417 "ael.y"
     {
                (yyval.pval) = npval2(PV_FOR, &(yylsp[-11]), &(yylsp[0]));
                (yyval.pval)->u1.for_init = (yyvsp[-8].str);
@@ -2419,12 +2417,12 @@ yyreduce:
     break;
 
   case 77:
-#line 424 "ael.y"
+#line 423 "ael.y"
     {reset_parencount(parseio->scanner);;}
     break;
 
   case 78:
-#line 424 "ael.y"
+#line 423 "ael.y"
     {
                (yyval.pval) = npval2(PV_WHILE, &(yylsp[-5]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2432,44 +2430,44 @@ yyreduce:
     break;
 
   case 79:
-#line 428 "ael.y"
+#line 427 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[0])); ;}
     break;
 
   case 80:
-#line 430 "ael.y"
+#line 429 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-2].pval), &(yylsp[0]));
                (yyval.pval)->u2.statements = (yyvsp[-1].pval);;}
     break;
 
   case 81:
-#line 433 "ael.y"
+#line 432 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[-1])); ;}
     break;
 
   case 82:
-#line 435 "ael.y"
+#line 434 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[0])); ;}
     break;
 
   case 83:
-#line 437 "ael.y"
+#line 436 "ael.y"
     {
                (yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
   case 84:
-#line 440 "ael.y"
+#line 439 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 85:
-#line 440 "ael.y"
+#line 439 "ael.y"
     {
                char *bufx;
                int tot=0;
@@ -2506,22 +2504,22 @@ yyreduce:
     break;
 
   case 86:
-#line 473 "ael.y"
+#line 472 "ael.y"
     { (yyval.pval) = npval2(PV_BREAK, &(yylsp[-1]), &(yylsp[0])); ;}
     break;
 
   case 87:
-#line 474 "ael.y"
+#line 473 "ael.y"
     { (yyval.pval) = npval2(PV_RETURN, &(yylsp[-1]), &(yylsp[0])); ;}
     break;
 
   case 88:
-#line 475 "ael.y"
+#line 474 "ael.y"
     { (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[-1]), &(yylsp[0])); ;}
     break;
 
   case 89:
-#line 476 "ael.y"
+#line 475 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-2].pval), &(yylsp[-1])); /* XXX probably @3... */
                (yyval.pval)->u2.statements = (yyvsp[-1].pval);
@@ -2529,7 +2527,7 @@ yyreduce:
     break;
 
   case 90:
-#line 480 "ael.y"
+#line 479 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-2].pval), &(yylsp[-1])); /* XXX probably @3... */
                (yyval.pval)->u2.statements = (yyvsp[-1].pval);
@@ -2537,7 +2535,7 @@ yyreduce:
     break;
 
   case 91:
-#line 484 "ael.y"
+#line 483 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-2].pval), &(yylsp[-1])); /* XXX probably @3... */
                (yyval.pval)->u2.statements = (yyvsp[-1].pval);
@@ -2545,28 +2543,28 @@ yyreduce:
     break;
 
   case 92:
-#line 488 "ael.y"
+#line 487 "ael.y"
     { (yyval.pval)=0; ;}
     break;
 
   case 93:
-#line 491 "ael.y"
+#line 490 "ael.y"
     { (yyval.pval) = (yyvsp[0].pval); ;}
     break;
 
   case 94:
-#line 492 "ael.y"
+#line 491 "ael.y"
     { (yyval.pval) = NULL ; ;}
     break;
 
   case 95:
-#line 497 "ael.y"
+#line 496 "ael.y"
     { (yyval.pval) = npval2(PV_WORD, &(yylsp[0]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[0].str);;}
     break;
 
   case 96:
-#line 499 "ael.y"
+#line 498 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-2]), &(yylsp[-2]));
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2575,7 +2573,7 @@ yyreduce:
     break;
 
   case 97:
-#line 504 "ael.y"
+#line 503 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-2]), &(yylsp[-2]));
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2584,7 +2582,7 @@ yyreduce:
     break;
 
   case 98:
-#line 509 "ael.y"
+#line 508 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-4]), &(yylsp[-4]));
                (yyval.pval)->u1.str = (yyvsp[-4].str);
@@ -2595,7 +2593,7 @@ yyreduce:
     break;
 
   case 99:
-#line 516 "ael.y"
+#line 515 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-4]), &(yylsp[-4]));
                (yyval.pval)->u1.str = (yyvsp[-4].str);
@@ -2606,7 +2604,7 @@ yyreduce:
     break;
 
   case 100:
-#line 523 "ael.y"
+#line 522 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-4]), &(yylsp[-4]));
                (yyval.pval)->u1.str = strdup("default");
@@ -2617,7 +2615,7 @@ yyreduce:
     break;
 
   case 101:
-#line 530 "ael.y"
+#line 529 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-4]), &(yylsp[-4]));
                (yyval.pval)->u1.str = strdup("default");
@@ -2628,7 +2626,7 @@ yyreduce:
     break;
 
   case 102:
-#line 539 "ael.y"
+#line 538 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[0]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[0].str);
@@ -2637,7 +2635,7 @@ yyreduce:
     break;
 
   case 103:
-#line 544 "ael.y"
+#line 543 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-2]), &(yylsp[-2]));
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2646,7 +2644,7 @@ yyreduce:
     break;
 
   case 104:
-#line 549 "ael.y"
+#line 548 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-4]), &(yylsp[-4]));
                (yyval.pval)->u1.str = (yyvsp[0].str);
@@ -2657,7 +2655,7 @@ yyreduce:
     break;
 
   case 105:
-#line 556 "ael.y"
+#line 555 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-2]), &(yylsp[-2]));
                (yyval.pval)->u1.str = (yyvsp[0].str);
@@ -2668,7 +2666,7 @@ yyreduce:
     break;
 
   case 106:
-#line 563 "ael.y"
+#line 562 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-4]), &(yylsp[-4]));
                (yyval.pval)->u1.str = strdup("default");
@@ -2679,7 +2677,7 @@ yyreduce:
     break;
 
   case 107:
-#line 570 "ael.y"
+#line 569 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-2]), &(yylsp[-2]));
                (yyval.pval)->u1.str = strdup("default");
@@ -2690,12 +2688,12 @@ yyreduce:
     break;
 
   case 108:
-#line 579 "ael.y"
+#line 578 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
   case 109:
-#line 579 "ael.y"
+#line 578 "ael.y"
     {
                /* XXX original code had @2 but i think we need @5 */
                (yyval.pval) = npval2(PV_MACRO_CALL, &(yylsp[-4]), &(yylsp[0]));
@@ -2704,19 +2702,19 @@ yyreduce:
     break;
 
   case 110:
-#line 584 "ael.y"
+#line 583 "ael.y"
     {
                (yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
     break;
 
   case 111:
-#line 589 "ael.y"
+#line 588 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
   case 112:
-#line 589 "ael.y"
+#line 588 "ael.y"
     {
                if (strcasecmp((yyvsp[-2].str),"goto") == 0) {
                        (yyval.pval)= npval2(PV_GOTO, &(yylsp[-2]), &(yylsp[0]));
@@ -2728,7 +2726,7 @@ yyreduce:
     break;
 
   case 113:
-#line 599 "ael.y"
+#line 598 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-2].pval), &(yylsp[0]));
                if( (yyval.pval)->type == PV_GOTO )
@@ -2739,36 +2737,36 @@ yyreduce:
     break;
 
   case 114:
-#line 606 "ael.y"
+#line 605 "ael.y"
     { (yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[0])); ;}
     break;
 
   case 115:
-#line 609 "ael.y"
+#line 608 "ael.y"
     { (yyval.str) = (yyvsp[0].str) ;}
     break;
 
   case 116:
-#line 610 "ael.y"
+#line 609 "ael.y"
     { (yyval.str) = strdup(""); ;}
     break;
 
   case 117:
-#line 613 "ael.y"
+#line 612 "ael.y"
     { 
                (yyval.pval)= npval2(PV_WORD, &(yylsp[0]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[0].str);;}
     break;
 
   case 118:
-#line 616 "ael.y"
+#line 615 "ael.y"
     {
                (yyval.pval)= npval(PV_WORD,0/*@1.first_line*/,0/*@1.last_line*/,0/* @1.first_column*/, 0/*@1.last_column*/);
                (yyval.pval)->u1.str = strdup(""); ;}
     break;
 
   case 119:
-#line 619 "ael.y"
+#line 618 "ael.y"
     {
                pval *z = npval2(PV_WORD, &(yylsp[0]), &(yylsp[0]));
                (yyval.pval) = (yyvsp[-2].pval);
@@ -2777,19 +2775,19 @@ yyreduce:
     break;
 
   case 120:
-#line 626 "ael.y"
+#line 625 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 121:
-#line 627 "ael.y"
+#line 626 "ael.y"
     { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
                                                 else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
                                                 else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
     break;
 
   case 122:
-#line 632 "ael.y"
+#line 631 "ael.y"
     {
                (yyval.pval) = npval2(PV_CASE, &(yylsp[-3]), &(yylsp[-1])); /* XXX 3 or 4 ? */
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2797,7 +2795,7 @@ yyreduce:
     break;
 
   case 123:
-#line 636 "ael.y"
+#line 635 "ael.y"
     {
                (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = NULL;
@@ -2805,7 +2803,7 @@ yyreduce:
     break;
 
   case 124:
-#line 640 "ael.y"
+#line 639 "ael.y"
     {
                (yyval.pval) = npval2(PV_PATTERN, &(yylsp[-3]), &(yylsp[0])); /* XXX@3 or @4 ? */
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2813,45 +2811,45 @@ yyreduce:
     break;
 
   case 125:
-#line 644 "ael.y"
+#line 643 "ael.y"
     {
                (yyval.pval) = npval2(PV_CASE, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
   case 126:
-#line 647 "ael.y"
+#line 646 "ael.y"
     {
                (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.str = NULL;;}
     break;
 
   case 127:
-#line 650 "ael.y"
+#line 649 "ael.y"
     {
                (yyval.pval) = npval2(PV_PATTERN, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
   case 128:
-#line 655 "ael.y"
+#line 654 "ael.y"
     {(yyval.pval) = (yyvsp[0].pval);;}
     break;
 
   case 129:
-#line 656 "ael.y"
+#line 655 "ael.y"
     { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
                                                 else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
                                                 else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
     break;
 
   case 130:
-#line 661 "ael.y"
+#line 660 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 131:
-#line 662 "ael.y"
+#line 661 "ael.y"
     {
                (yyval.pval) = npval2(PV_CATCH, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-3].str);
@@ -2859,40 +2857,40 @@ yyreduce:
     break;
 
   case 132:
-#line 668 "ael.y"
+#line 667 "ael.y"
     {
                (yyval.pval) = npval2(PV_SWITCHES, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
     break;
 
   case 133:
-#line 671 "ael.y"
+#line 670 "ael.y"
     {
                (yyval.pval) = npval2(PV_SWITCHES, &(yylsp[-2]), &(yylsp[0])); ;}
     break;
 
   case 134:
-#line 675 "ael.y"
+#line 674 "ael.y"
     {
                (yyval.pval) = npval2(PV_ESWITCHES, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
     break;
 
   case 135:
-#line 678 "ael.y"
+#line 677 "ael.y"
     { /* empty switch list OK */
                (yyval.pval) = npval2(PV_ESWITCHES, &(yylsp[-2]), &(yylsp[0])); ;}
     break;
 
   case 136:
-#line 682 "ael.y"
+#line 681 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
   case 137:
-#line 685 "ael.y"
+#line 684 "ael.y"
     {
                pval *z = npval2(PV_WORD, &(yylsp[-1]), &(yylsp[0]));
                z->u1.str = (yyvsp[-1].str);
@@ -2901,19 +2899,19 @@ yyreduce:
     break;
 
   case 138:
-#line 690 "ael.y"
+#line 689 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 139:
-#line 693 "ael.y"
+#line 692 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
   case 140:
-#line 697 "ael.y"
+#line 696 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-13]), &(yylsp[-12]));
                (yyval.pval)->u1.str = (yyvsp[-13].str);
@@ -2933,7 +2931,7 @@ yyreduce:
     break;
 
   case 141:
-#line 713 "ael.y"
+#line 712 "ael.y"
     {
                (yyval.pval) = npval2(PV_WORD, &(yylsp[-9]), &(yylsp[-8]));
                (yyval.pval)->u1.str = (yyvsp[-9].str);
@@ -2950,7 +2948,7 @@ yyreduce:
     break;
 
   case 142:
-#line 726 "ael.y"
+#line 725 "ael.y"
     {
                pval *z = npval2(PV_WORD, &(yylsp[-1]), &(yylsp[0])); /* XXX don't we need @1-@3 ?*/
                (yyval.pval)=(yyvsp[-2].pval);
@@ -2959,7 +2957,7 @@ yyreduce:
     break;
 
   case 143:
-#line 732 "ael.y"
+#line 731 "ael.y"
     {
                pval *z = npval2(PV_WORD, &(yylsp[-13]), &(yylsp[-12]));
                (yyval.pval)=(yyvsp[-14].pval); z->u1.str = (yyvsp[-13].str);
@@ -2980,7 +2978,7 @@ yyreduce:
     break;
 
   case 144:
-#line 749 "ael.y"
+#line 748 "ael.y"
     {
                pval *z = npval2(PV_WORD, &(yylsp[-9]), &(yylsp[-8]));
                (yyval.pval)=(yyvsp[-10].pval);
@@ -2999,29 +2997,29 @@ yyreduce:
     break;
 
   case 145:
-#line 764 "ael.y"
+#line 763 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 146:
-#line 767 "ael.y"
+#line 766 "ael.y"
     { (yyval.str) = (yyvsp[0].str);;}
     break;
 
   case 147:
-#line 768 "ael.y"
+#line 767 "ael.y"
     {(yyval.str)=strdup("default");;}
     break;
 
   case 148:
-#line 771 "ael.y"
+#line 770 "ael.y"
     {
                (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
     break;
 
   case 149:
-#line 774 "ael.y"
+#line 773 "ael.y"
     {
                (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[-2]), &(yylsp[0]));;}
     break;
@@ -3031,7 +3029,7 @@ yyreduce:
     }
 
 /* Line 1126 of yacc.c.  */
-#line 3035 "ael.tab.c"
+#line 3033 "ael.tab.c"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -3306,7 +3304,7 @@ yyreturn:
 }
 
 
-#line 779 "ael.y"
+#line 778 "ael.y"
 
 
 static char *token_equivs1[] =
index 936d3f2..cf71eb1 100644 (file)
@@ -116,6 +116,7 @@ static pval *update_last(pval *, YYLTYPE *);
 %type <pval>file
 /* XXX lr changes */
 %type <pval>opt_else
+%type <pval>elements_block
 
 %type <str>opt_word
 %type <str>word_or_default
@@ -159,6 +160,7 @@ static pval *update_last(pval *, YYLTYPE *);
                ignorepat element elements arglist global_statement
                global_statements globals macro context object objects
                opt_else
+               elements_block
 
 %destructor { free($$);}  word word_list goto_word word3_list includedname opt_word word_or_default
 
@@ -193,21 +195,14 @@ word_or_default : word { $$ = $1; }
        | KW_DEFAULT { $$ = strdup("default"); }
        ;
 
-context : KW_CONTEXT word_or_default LC elements RC {
-               $$ = npval2(PV_CONTEXT, &@1, &@5);
+context : KW_CONTEXT word_or_default elements_block {
+               $$ = npval2(PV_CONTEXT, &@1, &@3);
                $$->u1.str = $2;
-               $$->u2.statements = $4; }
-       | KW_CONTEXT word_or_default LC RC /* empty context OK */ {
+               $$->u2.statements = $3; }
+       | KW_ABSTRACT KW_CONTEXT word_or_default elements_block {
                $$ = npval2(PV_CONTEXT, &@1, &@4);
-               $$->u1.str = $2; }
-       | KW_ABSTRACT KW_CONTEXT word_or_default LC elements RC {
-               $$ = npval2(PV_CONTEXT, &@1, &@6);
-               $$->u1.str = $3;
-               $$->u2.statements = $5;
-               $$->u3.abstract = 1; }
-       | KW_ABSTRACT KW_CONTEXT word_or_default LC RC /* empty context OK */ {
-               $$ = npval2(PV_CONTEXT, &@1, &@5);
                $$->u1.str = $3;
+               $$->u2.statements = $4;
                $$->u3.abstract = 1; }
        ;
 
@@ -254,6 +249,10 @@ arglist : word {
        | arglist error {$$=$1;}
        ;
 
+elements_block : LC RC { $$ = NULL; }
+       | LC elements RC { $$ = $2; }
+       ;
+
 elements : element { $$=$1;}
        | error {$$=0;}
        | elements element { if ( $1 && $2 ) {$$=$1; linku1($$,$2);}
index ad5bc67..abc566f 100644 (file)
@@ -3554,6 +3554,11 @@ STD_MOD(MOD_1 | NO_USECOUNT, reload, NULL, NULL);
 
 void destroy_pval_item(pval *item)
 {
+       if (item == NULL) {
+               ast_log(LOG_WARNING, "null item\n");
+               return;
+       }
+
        if (item->filename)
                free(item->filename);