This commit merges the contents of 7721, as it applied to the trunk version. Added...
authorSteve Murphy <murf@digium.com>
Sat, 12 Aug 2006 19:28:33 +0000 (19:28 +0000)
committerSteve Murphy <murf@digium.com>
Sat, 12 Aug 2006 19:28:33 +0000 (19:28 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@39571 65c4cc65-6c06-0410-ace0-fbb531ad65f3

pbx/ael/ael-test/ael-test1/extensions.ael
pbx/ael/ael.tab.c
pbx/ael/ael.y

index d25ddd3..e1943f6 100644 (file)
@@ -94,7 +94,7 @@ context testloop {
               y=${y}-1;
          };
     }; 
-    regexten hint(nasty/Thingy) 3 => {
+    regexten hint(nasty/Thingy&nasty/Thingamabob) 3 => {
         for (x=0; ${x} < 3; x=${x} + 1) 
                {
                Verbose(x is ${x} !);
index 6cef52e..563eb58 100644 (file)
@@ -490,16 +490,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  14
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   293
+#define YYLAST   298
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  42
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  53
+#define YYNNTS  54
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  128
+#define YYNRULES  131
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  258
+#define YYNSTATES  262
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -554,13 +554,14 @@ static const yytype_uint16 yyprhs[] =
       82,    84,    86,    88,    90,    92,    95,    97,   102,   106,
      111,   119,   128,   129,   132,   135,   141,   143,   151,   152,
      157,   160,   163,   168,   170,   173,   175,   178,   182,   184,
-     187,   191,   197,   201,   203,   207,   211,   214,   215,   216,
-     217,   230,   234,   236,   240,   243,   246,   247,   253,   256,
-     259,   262,   266,   268,   271,   272,   274,   278,   282,   288,
-     294,   300,   306,   307,   310,   313,   318,   319,   325,   329,
-     330,   334,   338,   341,   343,   344,   346,   347,   351,   352,
-     355,   360,   364,   369,   370,   373,   375,   381,   386,   391,
-     392,   396,   399,   401,   405,   408,   412,   415,   420
+     187,   191,   193,   196,   200,   206,   210,   212,   216,   220,
+     223,   224,   225,   226,   239,   243,   245,   249,   252,   255,
+     256,   262,   265,   268,   271,   275,   277,   280,   281,   283,
+     287,   291,   297,   303,   309,   315,   316,   319,   322,   327,
+     328,   334,   338,   339,   343,   347,   350,   352,   353,   355,
+     356,   360,   361,   364,   369,   373,   378,   379,   382,   384,
+     390,   395,   400,   401,   405,   408,   410,   414,   417,   421,
+     424,   429
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -570,45 +571,46 @@ static const yytype_int8 yyrhs[] =
       44,     1,    -1,    47,    -1,    49,    -1,    50,    -1,     8,
       -1,    41,    -1,    36,    -1,    48,     3,    46,     4,    55,
        5,    -1,    23,    -1,    -1,    15,    41,     6,    54,     7,
-       4,    87,     5,    -1,    16,     4,    51,     5,    -1,    -1,
+       4,    88,     5,    -1,    16,     4,    51,     5,    -1,    -1,
       52,    51,    -1,    51,     1,    -1,    -1,    41,     9,    53,
       41,     8,    -1,    -1,    41,    -1,    54,    10,    41,    -1,
       54,     1,    -1,    -1,    56,    55,    -1,    55,     1,    -1,
-      58,    -1,    94,    -1,    89,    -1,    90,    -1,    57,    -1,
+      58,    -1,    95,    -1,    90,    -1,    91,    -1,    57,    -1,
       52,    -1,    41,     1,    -1,     8,    -1,    17,    24,    41,
-       8,    -1,    41,    24,    69,    -1,    30,    41,    24,    69,
-      -1,    31,     6,    66,     7,    41,    24,    69,    -1,    30,
-      31,     6,    66,     7,    41,    24,    69,    -1,    -1,    69,
-      59,    -1,    59,     1,    -1,    66,    11,    66,    11,    66,
-      -1,    41,    -1,    60,    13,    66,    13,    66,    13,    66,
+       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,    -1,    70,
+      59,    -1,    59,     1,    -1,    67,    11,    67,    11,    67,
+      -1,    41,    -1,    60,    13,    67,    13,    67,    13,    67,
       -1,    -1,     6,    63,    65,     7,    -1,    19,    62,    -1,
       22,    62,    -1,    20,     6,    61,     7,    -1,    41,    -1,
-      41,    41,    -1,    41,    -1,    41,    41,    -1,    41,    41,
-      41,    -1,    41,    -1,    41,    41,    -1,    67,    11,    41,
-      -1,    18,    62,     4,    85,     5,    -1,     4,    59,     5,
-      -1,    52,    -1,    25,    75,     8,    -1,    26,    77,     8,
-      -1,    41,    11,    -1,    -1,    -1,    -1,    32,     6,    70,
-      41,     8,    71,    41,     8,    72,    41,     7,    69,    -1,
-      33,    62,    69,    -1,    68,    -1,    12,    78,     8,    -1,
-      82,     8,    -1,    41,     8,    -1,    -1,    82,     9,    73,
-      41,     8,    -1,    28,     8,    -1,    27,     8,    -1,    29,
-       8,    -1,    64,    69,    74,    -1,     8,    -1,    21,    69,
-      -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,    -1,    10,    41,    -1,
-      67,    76,    -1,    67,    76,    14,    46,    -1,    -1,    41,
-       6,    79,    84,     7,    -1,    41,     6,     7,    -1,    -1,
-      41,     6,    81,    -1,    80,    84,     7,    -1,    80,     7,
-      -1,    41,    -1,    -1,    65,    -1,    -1,    84,    10,    83,
-      -1,    -1,    86,    85,    -1,    34,    41,    11,    59,    -1,
-      36,    11,    59,    -1,    35,    41,    11,    59,    -1,    -1,
-      88,    87,    -1,    69,    -1,    37,    41,     4,    59,     5,
-      -1,    38,     4,    91,     5,    -1,    39,     4,    91,     5,
-      -1,    -1,    41,     8,    91,    -1,    91,     1,    -1,    46,
-      -1,    46,    13,    61,    -1,    92,     8,    -1,    93,    92,
-       8,    -1,    93,     1,    -1,    40,     4,    93,     5,    -1,
-      40,     4,     5,    -1
+      41,    41,    -1,    41,    -1,    66,    41,    -1,    66,    12,
+      41,    -1,    41,    -1,    41,    41,    -1,    41,    41,    41,
+      -1,    41,    -1,    41,    41,    -1,    68,    11,    41,    -1,
+      18,    62,     4,    86,     5,    -1,     4,    59,     5,    -1,
+      52,    -1,    25,    76,     8,    -1,    26,    78,     8,    -1,
+      41,    11,    -1,    -1,    -1,    -1,    32,     6,    71,    41,
+       8,    72,    41,     8,    73,    41,     7,    70,    -1,    33,
+      62,    70,    -1,    69,    -1,    12,    79,     8,    -1,    83,
+       8,    -1,    41,     8,    -1,    -1,    83,     9,    74,    41,
+       8,    -1,    28,     8,    -1,    27,     8,    -1,    29,     8,
+      -1,    64,    70,    75,    -1,     8,    -1,    21,    70,    -1,
+      -1,    68,    -1,    68,    13,    68,    -1,    68,    10,    68,
+      -1,    68,    13,    68,    13,    68,    -1,    68,    10,    68,
+      10,    68,    -1,    36,    13,    68,    13,    68,    -1,    36,
+      10,    68,    10,    68,    -1,    -1,    10,    41,    -1,    68,
+      77,    -1,    68,    77,    14,    46,    -1,    -1,    41,     6,
+      80,    85,     7,    -1,    41,     6,     7,    -1,    -1,    41,
+       6,    82,    -1,    81,    85,     7,    -1,    81,     7,    -1,
+      41,    -1,    -1,    65,    -1,    -1,    85,    10,    84,    -1,
+      -1,    87,    86,    -1,    34,    41,    11,    59,    -1,    36,
+      11,    59,    -1,    35,    41,    11,    59,    -1,    -1,    89,
+      88,    -1,    70,    -1,    37,    41,     4,    59,     5,    -1,
+      38,     4,    92,     5,    -1,    39,     4,    92,     5,    -1,
+      -1,    41,     8,    92,    -1,    92,     1,    -1,    46,    -1,
+      46,    13,    61,    -1,    93,     8,    -1,    94,    93,     8,
+      -1,    94,     1,    -1,    40,     4,    94,     5,    -1,    40,
+       4,     5,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -619,14 +621,15 @@ static const yytype_uint16 yyrline[] =
      233,   233,   240,   241,   242,   243,   246,   247,   248,   251,
      252,   253,   254,   255,   256,   257,   258,   261,   266,   270,
      275,   280,   290,   291,   292,   298,   303,   307,   315,   315,
-     319,   322,   325,   336,   337,   344,   345,   350,   358,   359,
-     363,   369,   378,   381,   382,   385,   388,   391,   392,   393,
-     391,   399,   403,   404,   405,   406,   409,   409,   442,   443,
-     444,   445,   449,   452,   453,   456,   457,   460,   463,   467,
-     471,   475,   481,   482,   486,   489,   495,   495,   500,   508,
-     508,   519,   526,   529,   530,   533,   534,   537,   540,   541,
-     544,   548,   552,   558,   559,   562,   563,   569,   574,   579,
-     580,   581,   584,   585,   592,   593,   594,   597,   600
+     319,   322,   325,   336,   337,   344,   345,   349,   355,   356,
+     361,   369,   370,   374,   380,   389,   392,   393,   396,   399,
+     402,   403,   404,   402,   410,   414,   415,   416,   417,   420,
+     420,   453,   454,   455,   456,   460,   463,   464,   467,   468,
+     471,   474,   478,   482,   486,   492,   493,   497,   500,   506,
+     506,   511,   519,   519,   530,   537,   540,   541,   544,   545,
+     548,   551,   552,   555,   559,   563,   569,   570,   573,   574,
+     580,   585,   590,   591,   592,   595,   596,   603,   604,   605,
+     608,   611
 };
 #endif
 
@@ -646,12 +649,12 @@ static const char *const yytname[] =
   "globals", "global_statements", "assignment", "@1", "arglist",
   "elements", "element", "ignorepat", "extension", "statements",
   "timerange", "timespec", "test_expr", "@2", "if_like_head", "word_list",
-  "word3_list", "goto_word", "switch_statement", "statement", "@3", "@4",
-  "@5", "@6", "opt_else", "target", "opt_pri", "jumptarget", "macro_call",
-  "@7", "application_call_head", "@8", "application_call", "opt_word",
-  "eval_arglist", "case_statements", "case_statement", "macro_statements",
-  "macro_statement", "switches", "eswitches", "switchlist",
-  "included_entry", "includeslist", "includes", 0
+  "hint_word", "word3_list", "goto_word", "switch_statement", "statement",
+  "@3", "@4", "@5", "@6", "opt_else", "target", "opt_pri", "jumptarget",
+  "macro_call", "@7", "application_call_head", "@8", "application_call",
+  "opt_word", "eval_arglist", "case_statements", "case_statement",
+  "macro_statements", "macro_statement", "switches", "eswitches",
+  "switchlist", "included_entry", "includeslist", "includes", 0
 };
 #endif
 
@@ -677,13 +680,14 @@ static const yytype_uint8 yyr1[] =
       56,    56,    56,    56,    56,    56,    56,    57,    58,    58,
       58,    58,    59,    59,    59,    60,    60,    61,    63,    62,
       64,    64,    64,    65,    65,    66,    66,    66,    67,    67,
-      67,    68,    69,    69,    69,    69,    69,    70,    71,    72,
-      69,    69,    69,    69,    69,    69,    73,    69,    69,    69,
-      69,    69,    69,    74,    74,    75,    75,    75,    75,    75,
-      75,    75,    76,    76,    77,    77,    79,    78,    78,    81,
-      80,    82,    82,    83,    83,    84,    84,    84,    85,    85,
-      86,    86,    86,    87,    87,    88,    88,    89,    90,    91,
-      91,    91,    92,    92,    93,    93,    93,    94,    94
+      67,    68,    68,    68,    69,    70,    70,    70,    70,    70,
+      71,    72,    73,    70,    70,    70,    70,    70,    70,    74,
+      70,    70,    70,    70,    70,    70,    75,    75,    76,    76,
+      76,    76,    76,    76,    76,    77,    77,    78,    78,    80,
+      79,    79,    82,    81,    83,    83,    84,    84,    85,    85,
+      85,    86,    86,    87,    87,    87,    88,    88,    89,    89,
+      90,    91,    92,    92,    92,    93,    93,    94,    94,    94,
+      95,    95
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -695,13 +699,14 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     1,     2,     1,     4,     3,     4,
        7,     8,     0,     2,     2,     5,     1,     7,     0,     4,
        2,     2,     4,     1,     2,     1,     2,     3,     1,     2,
-       3,     5,     3,     1,     3,     3,     2,     0,     0,     0,
-      12,     3,     1,     3,     2,     2,     0,     5,     2,     2,
-       2,     3,     1,     2,     0,     1,     3,     3,     5,     5,
-       5,     5,     0,     2,     2,     4,     0,     5,     3,     0,
-       3,     3,     2,     1,     0,     1,     0,     3,     0,     2,
-       4,     3,     4,     0,     2,     1,     5,     4,     4,     0,
-       3,     2,     1,     3,     2,     3,     2,     4,     3
+       3,     1,     2,     3,     5,     3,     1,     3,     3,     2,
+       0,     0,     0,    12,     3,     1,     3,     2,     2,     0,
+       5,     2,     2,     2,     3,     1,     2,     0,     1,     3,
+       3,     5,     5,     5,     5,     0,     2,     2,     4,     0,
+       5,     3,     0,     3,     3,     2,     1,     0,     1,     0,
+       3,     0,     2,     4,     3,     4,     0,     2,     1,     5,
+       4,     4,     0,     3,     2,     1,     3,     2,     3,     2,
+       4,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -714,155 +719,157 @@ static const yytype_uint8 yydefact[] =
        0,    17,    11,    10,     0,    23,     0,    20,    19,    16,
        0,    26,    25,     0,     0,     0,    36,     0,     0,     0,
        0,     0,     0,     0,    34,     0,    26,    33,    29,    31,
-      32,    30,   113,    24,     0,     0,     0,     0,     0,   119,
-     119,     0,    35,     0,    28,    12,     0,    42,    82,     0,
+      32,    30,   116,    24,     0,     0,     0,     0,     0,   122,
+     122,     0,    35,     0,    28,    12,     0,    42,    85,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    63,     0,    72,   115,   106,     0,     0,
-     113,    21,     0,     0,     0,    55,     0,     0,     0,     0,
-     128,   122,     0,     0,    38,     0,    42,     0,     0,    48,
-       0,    50,     0,    51,     0,    58,    85,     0,    92,     0,
-      79,    78,    80,    67,     0,     0,    99,    75,    66,    84,
-     102,    53,   105,     0,    74,    76,    15,   114,    37,     0,
-      39,    56,     0,   119,   121,   117,   118,     0,   124,   126,
-     127,     0,    44,    62,     0,    96,    73,     0,   108,    46,
-       0,     0,     0,     0,     0,    59,     0,     0,     0,    64,
-       0,    94,    65,     0,    71,    42,   100,     0,    81,    54,
-     101,   104,     0,     0,    57,     0,     0,   123,   125,    98,
-     106,     0,     0,     0,     0,     0,   108,     0,    52,     0,
-       0,     0,    87,    60,    86,    93,     0,     0,     0,    83,
-     103,   107,     0,     0,     0,     0,    49,     0,     0,    42,
-      61,   109,     0,     0,     0,     0,     0,     0,    95,    68,
-     116,    77,     0,    40,    97,    42,    42,     0,     0,     0,
-      91,    90,    89,    88,     0,    41,     0,     0,     0,    45,
-       0,     0,    69,    47,     0,     0,     0,    70
+       0,     0,     0,    66,     0,    75,   118,   109,     0,     0,
+     116,    21,     0,     0,     0,    55,     0,     0,     0,     0,
+     131,   125,     0,     0,    38,     0,    42,     0,     0,    48,
+       0,    50,     0,    51,     0,    61,    88,     0,    95,     0,
+      82,    81,    83,    70,     0,     0,   102,    78,    69,    87,
+     105,    53,   108,     0,    77,    79,    15,   117,    37,     0,
+      39,     0,     0,    56,   122,   124,   120,   121,     0,   127,
+     129,   130,     0,    44,    65,     0,    99,    76,     0,   111,
+      46,     0,     0,     0,     0,     0,    62,     0,     0,     0,
+      67,     0,    97,    68,     0,    74,    42,   103,     0,    84,
+      54,   104,   107,     0,     0,     0,    57,     0,   126,   128,
+     101,   109,     0,     0,     0,     0,     0,   111,    59,     0,
+      52,     0,     0,     0,    90,    63,    89,    96,     0,     0,
+       0,    86,   106,   110,     0,     0,     0,     0,    49,     0,
+       0,    42,    64,   112,    60,    58,     0,     0,     0,     0,
+       0,     0,    98,    71,   119,    80,     0,    40,   100,    42,
+      42,     0,     0,     0,    94,    93,    92,    91,     0,    41,
+       0,     0,     0,    45,     0,     0,    72,    47,     0,     0,
+       0,    73
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,     5,     6,     7,   101,     8,     9,    10,    11,    20,
-      83,    35,    26,    45,    46,    47,    48,   105,   160,   161,
-     110,   157,    84,   132,   162,   116,    85,   106,   173,   244,
-     254,   182,   178,   117,   171,   119,   108,   190,    87,   176,
-      88,   211,   133,   195,   196,    89,    90,    49,    50,    98,
-     102,   103,    51
+      83,    35,    26,    45,    46,    47,    48,   105,   161,   162,
+     110,   158,    84,   132,    96,   163,   116,    85,   106,   174,
+     248,   258,   183,   179,   117,   172,   119,   108,   191,    87,
+     177,    88,   213,   133,   196,   197,    89,    90,    49,    50,
+      98,   102,   103,    51
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -103
+#define YYPACT_NINF -195
 static const yytype_int16 yypact[] =
 {
-     142,  -103,    -7,    45,  -103,    56,   148,  -103,  -103,    60,
-    -103,  -103,    62,    39,  -103,  -103,  -103,   -10,    46,    86,
-     106,    39,  -103,  -103,   108,  -103,    12,  -103,  -103,  -103,
-     118,    91,  -103,   132,    97,   105,  -103,   123,   -23,   161,
-     171,   180,   193,    11,  -103,   119,    91,  -103,  -103,  -103,
-    -103,  -103,    25,  -103,   181,   157,   194,   175,   160,   162,
-     162,    19,  -103,    57,  -103,  -103,   134,    57,  -103,   164,
-     196,   196,   200,   196,    23,   169,   199,   201,   203,   202,
-     196,   172,   107,  -103,    57,  -103,  -103,     7,     8,   207,
-      25,  -103,   206,   160,    57,   178,   208,   209,   136,   165,
-    -103,   205,   212,     5,  -103,   167,    57,   210,   213,  -103,
-     218,  -103,   183,  -103,    68,   184,   166,   215,    17,   219,
-    -103,  -103,  -103,  -103,    57,   222,  -103,  -103,  -103,   211,
-    -103,   187,  -103,    99,  -103,  -103,  -103,  -103,  -103,   223,
-    -103,   188,   190,   162,  -103,  -103,  -103,   183,  -103,  -103,
-    -103,   225,  -103,  -103,    66,   227,  -103,   195,   125,    -2,
-     224,   228,   229,   169,   169,  -103,   169,   197,   169,  -103,
-     198,   230,  -103,   204,  -103,    57,  -103,    57,  -103,  -103,
-    -103,   214,   216,   217,  -103,   226,   168,  -103,  -103,  -103,
-     195,   234,   220,   221,   231,   238,   125,   160,  -103,   160,
-     182,   174,   185,  -103,   177,  -103,   -10,   239,   173,  -103,
-    -103,  -103,   240,   232,    57,   176,  -103,   235,   241,    57,
-    -103,  -103,   236,   242,   169,   169,   169,   169,  -103,  -103,
-    -103,  -103,    57,  -103,  -103,    57,    57,    69,   160,   160,
-     243,   243,   243,   243,   233,  -103,    92,   109,   246,  -103,
-     252,   160,  -103,  -103,   237,   244,    57,  -103
+     136,  -195,   -27,    22,  -195,    67,   127,  -195,  -195,    79,
+    -195,  -195,    89,    76,  -195,  -195,  -195,   -21,    88,   125,
+      12,    76,  -195,  -195,   156,  -195,    11,  -195,  -195,  -195,
+      35,   108,  -195,   193,    99,   129,  -195,   147,   -22,   176,
+     194,   195,   196,     7,  -195,   110,   108,  -195,  -195,  -195,
+    -195,  -195,    25,  -195,   197,   163,   200,   179,   169,   170,
+     170,    19,  -195,    81,  -195,  -195,   140,    81,  -195,   172,
+     201,   201,   203,   201,   -13,   174,   204,   206,   208,   211,
+     201,   180,    72,  -195,    81,  -195,  -195,    18,   115,   213,
+      25,  -195,   212,   169,    81,  -195,    15,   214,   160,   161,
+    -195,   188,   215,     5,  -195,   162,    81,   218,   217,  -195,
+     198,  -195,   186,  -195,   166,   187,   164,   221,   143,   222,
+    -195,  -195,  -195,  -195,    81,   227,  -195,  -195,  -195,   205,
+    -195,   191,  -195,   171,  -195,  -195,  -195,  -195,  -195,    64,
+    -195,   192,   199,  -195,   170,  -195,  -195,  -195,   186,  -195,
+    -195,  -195,   226,  -195,  -195,    29,   228,  -195,   202,   151,
+      63,   223,   230,   231,   174,   174,  -195,   174,   207,   174,
+    -195,   209,   224,  -195,   210,  -195,    81,  -195,    81,  -195,
+    -195,  -195,   216,   219,   220,   225,  -195,   167,  -195,  -195,
+    -195,   202,   232,   229,   233,   234,   236,   151,   235,   237,
+    -195,   237,   183,   177,   185,  -195,   178,  -195,   -21,   238,
+     168,  -195,  -195,  -195,   239,   240,    81,   173,  -195,   241,
+     242,    81,  -195,  -195,  -195,   243,   245,   244,   174,   174,
+     174,   174,  -195,  -195,  -195,  -195,    81,  -195,  -195,    81,
+      81,    34,   237,   237,   248,   248,   248,   248,   246,  -195,
+      85,    97,   249,  -195,   255,   237,  -195,  -195,   247,   258,
+      81,  -195
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -103,  -103,  -103,   257,   -15,  -103,  -103,  -103,  -103,   245,
-      -6,  -103,  -103,   247,  -103,  -103,  -103,  -102,  -103,   117,
-     -50,  -103,  -103,   110,   -57,   -72,  -103,   -52,  -103,  -103,
-    -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
-    -103,  -103,    75,    72,  -103,   179,  -103,  -103,  -103,   -55,
-     170,  -103,  -103
+    -195,  -195,  -195,   250,   -16,  -195,  -195,  -195,  -195,   251,
+      66,  -195,  -195,   252,  -195,  -195,  -195,  -103,  -195,    71,
+       4,  -195,  -195,    86,   175,  -194,   -73,  -195,   -52,  -195,
+    -195,  -195,  -195,  -195,  -195,  -195,  -195,  -195,  -195,  -195,
+    -195,  -195,  -195,    75,    57,  -195,   181,  -195,  -195,  -195,
+     -56,   182,  -195,  -195
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -121
+#define YYTABLE_NINF -124
 static const yytype_int16 yytable[] =
 {
-      86,    96,    24,   118,   154,    99,   149,    21,    56,   -55,
-     150,   104,    62,    32,   130,    21,   134,   135,    57,    33,
-      27,   111,    34,   113,   100,    44,    22,   170,   167,    67,
-     124,    23,   129,    68,    12,    63,   139,    69,    86,   141,
-      44,    22,   140,    70,    71,    72,    23,    73,   131,    13,
-      74,    75,    76,    77,    78,    22,    14,    79,    80,   114,
-      23,    67,    81,    17,   115,    68,    82,   152,    18,    69,
-     152,   -43,   174,   208,  -111,    70,    71,    72,   163,    73,
-      19,   164,    74,    75,    76,    77,    78,    25,   186,    79,
-      80,   200,   201,   152,   202,    27,   204,  -110,    82,    36,
-     -43,   -43,   -43,  -111,  -111,  -111,   180,    28,    37,   181,
-     152,    29,    31,   126,  -112,   127,    27,   237,   128,    28,
-      64,    38,    39,   -18,    65,   209,  -110,  -110,  -110,    40,
-      41,    42,    43,   246,   247,    64,    52,   144,    53,   -27,
-     222,   145,   223,  -112,  -112,  -112,    54,    55,    -2,    15,
-       1,   -14,   240,   241,   242,   243,     1,     2,     3,   192,
-     193,   194,   233,     2,     3,     4,   144,    58,   152,   144,
-     146,     4,   153,  -120,   152,    59,   166,   167,   230,   168,
-     245,   248,   249,   234,    60,   167,   181,   225,   167,    91,
-     227,   228,   224,   167,   253,   226,   167,    61,    92,    94,
-      93,    95,   109,    97,   257,   107,   112,   120,   123,   121,
-     115,   122,   136,   125,   138,   142,   155,   143,   147,   141,
-     148,   156,   158,   169,   159,   165,   175,   172,   179,   184,
-     183,   185,   177,   188,   189,   198,   131,   197,   203,   205,
-     199,   216,   219,   220,   206,   207,   235,   229,   231,   238,
-     214,   256,   236,   239,   167,   210,   232,   212,   213,   251,
-     252,   217,   218,    16,   187,   215,    30,   191,   221,   137,
-       0,     0,     0,   151,   250,     0,     0,     0,   255,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    66
+      86,    24,   118,   155,    99,   226,   150,   227,    62,    56,
+     151,   104,    32,    28,    12,    22,    27,    29,    33,    57,
+      23,    34,   141,   114,   100,   130,    13,   142,   115,    67,
+     153,    63,   129,    68,   -43,   153,    28,    69,    86,  -114,
+     -18,    22,   140,    70,    71,    72,    23,    73,   252,   253,
+      74,    75,    76,    77,    78,    22,   143,    79,    80,   131,
+      23,   257,    81,   -43,   -43,   -43,    82,    14,  -114,  -114,
+    -114,   184,   175,   210,   -58,   111,   142,   113,   126,    21,
+     127,    27,    17,   128,   124,    67,   153,    21,   187,    68,
+    -113,   202,   203,    69,   204,    18,   206,    44,   153,    70,
+      71,    72,  -115,    73,   198,   143,    74,    75,    76,    77,
+      78,    64,    44,    79,    80,    65,    36,    19,   241,  -113,
+    -113,  -113,    82,   134,   135,    37,   211,    -2,    15,    25,
+     -14,  -115,  -115,  -115,    27,     1,   250,   251,    38,    39,
+      53,    64,     2,     3,     1,   -27,    40,    41,    42,    43,
+       4,     2,     3,   171,   168,   244,   245,   246,   247,     4,
+      31,   145,   145,   153,   237,   146,   147,   154,   145,   153,
+      54,    55,  -123,   234,   167,   168,   164,   169,   181,   165,
+     238,   182,    58,   182,   249,   193,   194,   195,   168,   168,
+     229,   231,   232,   228,   168,   230,   168,    52,    59,    60,
+      61,   148,   159,    94,    92,    91,    93,   109,   261,   112,
+      95,    97,   120,   107,   121,   115,   122,   123,   136,   188,
+     138,   125,   144,   149,   156,   157,   178,   160,   166,   170,
+     173,   176,   180,   185,   189,   190,   199,   200,   208,   218,
+     186,   222,   201,   131,   192,   221,   233,   235,   205,   216,
+     207,   209,   239,   240,   223,   243,    16,   212,   242,   168,
+     214,   215,   255,   256,   236,   260,   217,     0,   139,     0,
+     219,   137,    30,     0,   220,     0,   224,     0,   225,     0,
+       0,     0,     0,     0,   198,   152,     0,   254,   259,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    66
 };
 
 static const yytype_int16 yycheck[] =
 {
-      52,    58,    17,    75,   106,    60,     1,    13,    31,    11,
-       5,    63,     1,     1,     7,    21,     8,     9,    41,     7,
-       9,    71,    10,    73,     5,    31,    36,    10,    11,     4,
-      80,    41,    84,     8,    41,    24,    93,    12,    90,    41,
-      46,    36,    94,    18,    19,    20,    41,    22,    41,     4,
-      25,    26,    27,    28,    29,    36,     0,    32,    33,    36,
-      41,     4,    37,     3,    41,     8,    41,     1,     6,    12,
-       1,     5,   124,   175,     5,    18,    19,    20,    10,    22,
-      41,    13,    25,    26,    27,    28,    29,    41,   143,    32,
-      33,   163,   164,     1,   166,     9,   168,     5,    41,     8,
-      34,    35,    36,    34,    35,    36,     7,     1,    17,    10,
-       1,     5,     4,     6,     5,     8,     9,   219,    11,     1,
-       1,    30,    31,     5,     5,   177,    34,    35,    36,    38,
-      39,    40,    41,   235,   236,     1,     4,     1,    41,     5,
-     197,     5,   199,    34,    35,    36,    41,    24,     0,     1,
-       8,     3,   224,   225,   226,   227,     8,    15,    16,    34,
-      35,    36,   214,    15,    16,    23,     1,     6,     1,     1,
-       5,    23,     5,     5,     1,     4,    10,    11,     5,    13,
-     232,   238,   239,     7,     4,    11,    10,    13,    11,     8,
-      13,   206,    10,    11,   251,    10,    11,     4,    41,    24,
-       6,    41,     6,    41,   256,    41,     6,     8,     6,     8,
-      41,     8,     5,    41,     8,     7,     6,     8,    13,    41,
-       8,     8,     4,     8,    41,    41,     4,     8,    41,    41,
-       7,    41,    21,     8,     7,     7,    41,    13,    41,    41,
-      11,     7,    11,     5,    14,    41,    11,     8,     8,    13,
-      24,     7,    11,    11,    11,    41,    24,    41,    41,    13,
-       8,    41,    41,     6,   147,   190,    21,   157,   196,    90,
-      -1,    -1,    -1,   103,    41,    -1,    -1,    -1,    41,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    46
+      52,    17,    75,   106,    60,   199,     1,   201,     1,    31,
+       5,    63,     1,     1,    41,    36,     9,     5,     7,    41,
+      41,    10,     7,    36,     5,     7,     4,    12,    41,     4,
+       1,    24,    84,     8,     5,     1,     1,    12,    90,     5,
+       5,    36,    94,    18,    19,    20,    41,    22,   242,   243,
+      25,    26,    27,    28,    29,    36,    41,    32,    33,    41,
+      41,   255,    37,    34,    35,    36,    41,     0,    34,    35,
+      36,     7,   124,   176,    11,    71,    12,    73,     6,    13,
+       8,     9,     3,    11,    80,     4,     1,    21,   144,     8,
+       5,   164,   165,    12,   167,     6,   169,    31,     1,    18,
+      19,    20,     5,    22,    41,    41,    25,    26,    27,    28,
+      29,     1,    46,    32,    33,     5,     8,    41,   221,    34,
+      35,    36,    41,     8,     9,    17,   178,     0,     1,    41,
+       3,    34,    35,    36,     9,     8,   239,   240,    30,    31,
+      41,     1,    15,    16,     8,     5,    38,    39,    40,    41,
+      23,    15,    16,    10,    11,   228,   229,   230,   231,    23,
+       4,     1,     1,     1,   216,     5,     5,     5,     1,     1,
+      41,    24,     5,     5,    10,    11,    10,    13,     7,    13,
+       7,    10,     6,    10,   236,    34,    35,    36,    11,    11,
+      13,    13,   208,    10,    11,    10,    11,     4,     4,     4,
+       4,    13,     4,    24,    41,     8,     6,     6,   260,     6,
+      41,    41,     8,    41,     8,    41,     8,     6,     5,   148,
+       8,    41,     8,     8,     6,     8,    21,    41,    41,     8,
+       8,     4,    41,    41,     8,     7,    13,     7,    14,     7,
+      41,     5,    11,    41,   158,    11,     8,     8,    41,    24,
+      41,    41,    11,    11,   197,    11,     6,    41,    13,    11,
+      41,    41,    13,     8,    24,     7,   191,    -1,    93,    -1,
+      41,    90,    21,    -1,    41,    -1,    41,    -1,    41,    -1,
+      -1,    -1,    -1,    -1,    41,   103,    -1,    41,    41,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -873,28 +880,29 @@ static const yytype_uint8 yystos[] =
       49,    50,    41,     4,     0,     1,    45,     3,     6,    41,
       51,    52,    36,    41,    46,    41,    54,     9,     1,     5,
       51,     4,     1,     7,    10,    53,     8,    17,    30,    31,
-      38,    39,    40,    41,    52,    55,    56,    57,    58,    89,
-      90,    94,     4,    41,    41,    24,    31,    41,     6,     4,
+      38,    39,    40,    41,    52,    55,    56,    57,    58,    90,
+      91,    95,     4,    41,    41,    24,    31,    41,     6,     4,
        4,     4,     1,    24,     1,     5,    55,     4,     8,    12,
       18,    19,    20,    22,    25,    26,    27,    28,    29,    32,
-      33,    37,    41,    52,    64,    68,    69,    80,    82,    87,
-      88,     8,    41,     6,    24,    41,    66,    41,    91,    91,
-       5,    46,    92,    93,    69,    59,    69,    41,    78,     6,
-      62,    62,     6,    62,    36,    41,    67,    75,    67,    77,
-       8,     8,     8,     6,    62,    41,     6,     8,    11,    69,
-       7,    41,    65,    84,     8,     9,     5,    87,     8,    66,
-      69,    41,     7,     8,     1,     5,     5,    13,     8,     1,
-       5,    92,     1,     5,    59,     6,     8,    63,     4,    41,
-      60,    61,    66,    10,    13,    41,    10,    11,    13,     8,
-      10,    76,     8,    70,    69,     4,    81,    21,    74,    41,
-       7,    10,    73,     7,    41,    41,    91,    61,     8,     7,
-      79,    65,    34,    35,    36,    85,    86,    13,     7,    11,
-      67,    67,    67,    41,    67,    41,    14,    41,    59,    69,
-      41,    83,    41,    41,    24,    84,     7,    41,    41,    11,
-       5,    85,    66,    66,    10,    13,    10,    13,    46,     8,
-       5,     8,    24,    69,     7,    11,    11,    59,    13,    11,
-      67,    67,    67,    67,    71,    69,    59,    59,    66,    66,
-      41,    13,     8,    66,    72,    41,     7,    69
+      33,    37,    41,    52,    64,    69,    70,    81,    83,    88,
+      89,     8,    41,     6,    24,    41,    66,    41,    92,    92,
+       5,    46,    93,    94,    70,    59,    70,    41,    79,     6,
+      62,    62,     6,    62,    36,    41,    68,    76,    68,    78,
+       8,     8,     8,     6,    62,    41,     6,     8,    11,    70,
+       7,    41,    65,    85,     8,     9,     5,    88,     8,    66,
+      70,     7,    12,    41,     8,     1,     5,     5,    13,     8,
+       1,     5,    93,     1,     5,    59,     6,     8,    63,     4,
+      41,    60,    61,    67,    10,    13,    41,    10,    11,    13,
+       8,    10,    77,     8,    71,    70,     4,    82,    21,    75,
+      41,     7,    10,    74,     7,    41,    41,    92,    61,     8,
+       7,    80,    65,    34,    35,    36,    86,    87,    41,    13,
+       7,    11,    68,    68,    68,    41,    68,    41,    14,    41,
+      59,    70,    41,    84,    41,    41,    24,    85,     7,    41,
+      41,    11,     5,    86,    41,    41,    67,    67,    10,    13,
+      10,    13,    46,     8,     5,     8,    24,    70,     7,    11,
+      11,    59,    13,    11,    68,    68,    68,    68,    72,    70,
+      59,    59,    67,    67,    41,    13,     8,    67,    73,    41,
+       7,    70
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1419,7 +1427,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
       case 41: /* "word" */
 #line 177 "ael.y"
        { free((yyvaluep->str));};
-#line 1423 "ael.tab.c"
+#line 1431 "ael.tab.c"
        break;
       case 44: /* "objects" */
 #line 164 "ael.y"
@@ -1427,7 +1435,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1431 "ael.tab.c"
+#line 1439 "ael.tab.c"
        break;
       case 45: /* "object" */
 #line 164 "ael.y"
@@ -1435,12 +1443,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1439 "ael.tab.c"
+#line 1447 "ael.tab.c"
        break;
       case 46: /* "context_name" */
 #line 177 "ael.y"
        { free((yyvaluep->str));};
-#line 1444 "ael.tab.c"
+#line 1452 "ael.tab.c"
        break;
       case 47: /* "context" */
 #line 164 "ael.y"
@@ -1448,7 +1456,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1452 "ael.tab.c"
+#line 1460 "ael.tab.c"
        break;
       case 49: /* "macro" */
 #line 164 "ael.y"
@@ -1456,7 +1464,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1460 "ael.tab.c"
+#line 1468 "ael.tab.c"
        break;
       case 50: /* "globals" */
 #line 164 "ael.y"
@@ -1464,7 +1472,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1468 "ael.tab.c"
+#line 1476 "ael.tab.c"
        break;
       case 51: /* "global_statements" */
 #line 164 "ael.y"
@@ -1472,7 +1480,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1476 "ael.tab.c"
+#line 1484 "ael.tab.c"
        break;
       case 52: /* "assignment" */
 #line 164 "ael.y"
@@ -1480,7 +1488,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1484 "ael.tab.c"
+#line 1492 "ael.tab.c"
        break;
       case 54: /* "arglist" */
 #line 164 "ael.y"
@@ -1488,7 +1496,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1492 "ael.tab.c"
+#line 1500 "ael.tab.c"
        break;
       case 55: /* "elements" */
 #line 164 "ael.y"
@@ -1496,7 +1504,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1500 "ael.tab.c"
+#line 1508 "ael.tab.c"
        break;
       case 56: /* "element" */
 #line 164 "ael.y"
@@ -1504,7 +1512,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1508 "ael.tab.c"
+#line 1516 "ael.tab.c"
        break;
       case 57: /* "ignorepat" */
 #line 164 "ael.y"
@@ -1512,7 +1520,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1516 "ael.tab.c"
+#line 1524 "ael.tab.c"
        break;
       case 58: /* "extension" */
 #line 164 "ael.y"
@@ -1520,7 +1528,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1524 "ael.tab.c"
+#line 1532 "ael.tab.c"
        break;
       case 59: /* "statements" */
 #line 164 "ael.y"
@@ -1528,12 +1536,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1532 "ael.tab.c"
+#line 1540 "ael.tab.c"
        break;
       case 60: /* "timerange" */
 #line 177 "ael.y"
        { free((yyvaluep->str));};
-#line 1537 "ael.tab.c"
+#line 1545 "ael.tab.c"
        break;
       case 61: /* "timespec" */
 #line 164 "ael.y"
@@ -1541,12 +1549,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1545 "ael.tab.c"
+#line 1553 "ael.tab.c"
        break;
       case 62: /* "test_expr" */
 #line 177 "ael.y"
        { free((yyvaluep->str));};
-#line 1550 "ael.tab.c"
+#line 1558 "ael.tab.c"
        break;
       case 64: /* "if_like_head" */
 #line 164 "ael.y"
@@ -1554,32 +1562,24 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1558 "ael.tab.c"
+#line 1566 "ael.tab.c"
        break;
       case 65: /* "word_list" */
 #line 177 "ael.y"
        { free((yyvaluep->str));};
-#line 1563 "ael.tab.c"
+#line 1571 "ael.tab.c"
        break;
-      case 66: /* "word3_list" */
+      case 67: /* "word3_list" */
 #line 177 "ael.y"
        { free((yyvaluep->str));};
-#line 1568 "ael.tab.c"
+#line 1576 "ael.tab.c"
        break;
-      case 67: /* "goto_word" */
+      case 68: /* "goto_word" */
 #line 177 "ael.y"
        { free((yyvaluep->str));};
-#line 1573 "ael.tab.c"
-       break;
-      case 68: /* "switch_statement" */
-#line 164 "ael.y"
-       {
-               destroy_pval((yyvaluep->pval));
-               prev_word=0;
-       };
 #line 1581 "ael.tab.c"
        break;
-      case 69: /* "statement" */
+      case 69: /* "switch_statement" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1587,7 +1587,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1589 "ael.tab.c"
        break;
-      case 74: /* "opt_else" */
+      case 70: /* "statement" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1595,7 +1595,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1597 "ael.tab.c"
        break;
-      case 75: /* "target" */
+      case 75: /* "opt_else" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1603,20 +1603,20 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1605 "ael.tab.c"
        break;
-      case 76: /* "opt_pri" */
-#line 177 "ael.y"
-       { free((yyvaluep->str));};
-#line 1610 "ael.tab.c"
-       break;
-      case 77: /* "jumptarget" */
+      case 76: /* "target" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
+#line 1613 "ael.tab.c"
+       break;
+      case 77: /* "opt_pri" */
+#line 177 "ael.y"
+       { free((yyvaluep->str));};
 #line 1618 "ael.tab.c"
        break;
-      case 78: /* "macro_call" */
+      case 78: /* "jumptarget" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1624,7 +1624,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1626 "ael.tab.c"
        break;
-      case 80: /* "application_call_head" */
+      case 79: /* "macro_call" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1632,7 +1632,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1634 "ael.tab.c"
        break;
-      case 82: /* "application_call" */
+      case 81: /* "application_call_head" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1640,20 +1640,20 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1642 "ael.tab.c"
        break;
-      case 83: /* "opt_word" */
-#line 177 "ael.y"
-       { free((yyvaluep->str));};
-#line 1647 "ael.tab.c"
-       break;
-      case 84: /* "eval_arglist" */
+      case 83: /* "application_call" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
+#line 1650 "ael.tab.c"
+       break;
+      case 84: /* "opt_word" */
+#line 177 "ael.y"
+       { free((yyvaluep->str));};
 #line 1655 "ael.tab.c"
        break;
-      case 85: /* "case_statements" */
+      case 85: /* "eval_arglist" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1661,7 +1661,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1663 "ael.tab.c"
        break;
-      case 86: /* "case_statement" */
+      case 86: /* "case_statements" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1669,7 +1669,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1671 "ael.tab.c"
        break;
-      case 87: /* "macro_statements" */
+      case 87: /* "case_statement" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1677,7 +1677,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1679 "ael.tab.c"
        break;
-      case 88: /* "macro_statement" */
+      case 88: /* "macro_statements" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1685,7 +1685,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1687 "ael.tab.c"
        break;
-      case 89: /* "switches" */
+      case 89: /* "macro_statement" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1693,7 +1693,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1695 "ael.tab.c"
        break;
-      case 90: /* "eswitches" */
+      case 90: /* "switches" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1701,7 +1701,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1703 "ael.tab.c"
        break;
-      case 91: /* "switchlist" */
+      case 91: /* "eswitches" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1709,7 +1709,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1711 "ael.tab.c"
        break;
-      case 92: /* "included_entry" */
+      case 92: /* "switchlist" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1717,7 +1717,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1719 "ael.tab.c"
        break;
-      case 93: /* "includeslist" */
+      case 93: /* "included_entry" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1725,7 +1725,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1727 "ael.tab.c"
        break;
-      case 94: /* "includes" */
+      case 94: /* "includeslist" */
 #line 164 "ael.y"
        {
                destroy_pval((yyvaluep->pval));
@@ -1733,6 +1733,14 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
        };
 #line 1735 "ael.tab.c"
        break;
+      case 95: /* "includes" */
+#line 164 "ael.y"
+       {
+               destroy_pval((yyvaluep->pval));
+               prev_word=0;
+       };
+#line 1743 "ael.tab.c"
+       break;
 
       default:
        break;
@@ -2371,20 +2379,41 @@ yyreduce:
 
   case 55:
 #line 344 "ael.y"
-    { (yyval.str) = (yyvsp[(1) - (1)].str);;}
+    { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
     break;
 
   case 56:
 #line 345 "ael.y"
     {
+               asprintf(&((yyval.str)), "%s %s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
+               free((yyvsp[(1) - (2)].str));
+               free((yyvsp[(2) - (2)].str)); ;}
+    break;
+
+  case 57:
+#line 349 "ael.y"
+    {  /* there are often '&' in hints */
+               asprintf(&((yyval.str)), "%s&%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str));
+               free((yyvsp[(1) - (3)].str));
+               free((yyvsp[(3) - (3)].str));;}
+    break;
+
+  case 58:
+#line 355 "ael.y"
+    { (yyval.str) = (yyvsp[(1) - (1)].str);;}
+    break;
+
+  case 59:
+#line 356 "ael.y"
+    {
                asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
                free((yyvsp[(1) - (2)].str));
                free((yyvsp[(2) - (2)].str));
                prev_word = (yyval.str);;}
     break;
 
-  case 57:
-#line 350 "ael.y"
+  case 60:
+#line 361 "ael.y"
     {
                asprintf(&((yyval.str)), "%s%s%s", (yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str));
                free((yyvsp[(1) - (3)].str));
@@ -2393,85 +2422,85 @@ yyreduce:
                prev_word=(yyval.str);;}
     break;
 
-  case 58:
-#line 358 "ael.y"
+  case 61:
+#line 369 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);;}
     break;
 
-  case 59:
-#line 359 "ael.y"
+  case 62:
+#line 370 "ael.y"
     {
                asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
                free((yyvsp[(1) - (2)].str));
                free((yyvsp[(2) - (2)].str));;}
     break;
 
-  case 60:
-#line 363 "ael.y"
+  case 63:
+#line 374 "ael.y"
     {
                asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str));
                free((yyvsp[(1) - (3)].str));
                free((yyvsp[(3) - (3)].str));;}
     break;
 
-  case 61:
-#line 369 "ael.y"
+  case 64:
+#line 380 "ael.y"
     {
                (yyval.pval) = npval2(PV_SWITCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
                (yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;}
     break;
 
-  case 62:
-#line 378 "ael.y"
+  case 65:
+#line 389 "ael.y"
     {
                (yyval.pval) = npval2(PV_STATEMENTBLOCK, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));;}
     break;
 
-  case 63:
-#line 381 "ael.y"
+  case 66:
+#line 392 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
     break;
 
-  case 64:
-#line 382 "ael.y"
+  case 67:
+#line 393 "ael.y"
     {
                (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;}
     break;
 
-  case 65:
-#line 385 "ael.y"
+  case 68:
+#line 396 "ael.y"
     {
                (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;}
     break;
 
-  case 66:
-#line 388 "ael.y"
+  case 69:
+#line 399 "ael.y"
     {
                (yyval.pval) = npval2(PV_LABEL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
                (yyval.pval)->u1.str = (yyvsp[(1) - (2)].str); ;}
     break;
 
-  case 67:
-#line 391 "ael.y"
+  case 70:
+#line 402 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
-  case 68:
-#line 392 "ael.y"
+  case 71:
+#line 403 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
-  case 69:
-#line 393 "ael.y"
+  case 72:
+#line 404 "ael.y"
     {reset_parencount(parseio->scanner);;}
     break;
 
-  case 70:
-#line 393 "ael.y"
+  case 73:
+#line 404 "ael.y"
     { /* XXX word_list maybe ? */
                (yyval.pval) = npval2(PV_FOR, &(yylsp[(1) - (12)]), &(yylsp[(12) - (12)]));
                (yyval.pval)->u1.for_init = (yyvsp[(4) - (12)].str);
@@ -2480,43 +2509,43 @@ yyreduce:
                (yyval.pval)->u4.for_statements = (yyvsp[(12) - (12)].pval); set_dads((yyval.pval),(yyvsp[(12) - (12)].pval));;}
     break;
 
-  case 71:
-#line 399 "ael.y"
+  case 74:
+#line 410 "ael.y"
     {
                (yyval.pval) = npval2(PV_WHILE, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (3)].str);
                (yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval); set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
     break;
 
-  case 72:
-#line 403 "ael.y"
+  case 75:
+#line 414 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
     break;
 
-  case 73:
-#line 404 "ael.y"
+  case 76:
+#line 415 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(2) - (3)].pval), &(yylsp[(2) - (3)])); ;}
     break;
 
-  case 74:
-#line 405 "ael.y"
+  case 77:
+#line 416 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 75:
-#line 406 "ael.y"
+  case 78:
+#line 417 "ael.y"
     {
                (yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
                (yyval.pval)->u1.str = (yyvsp[(1) - (2)].str);;}
     break;
 
-  case 76:
-#line 409 "ael.y"
+  case 79:
+#line 420 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
-  case 77:
-#line 409 "ael.y"
+  case 80:
+#line 420 "ael.y"
     {
                char *bufx;
                int tot=0;
@@ -2552,127 +2581,127 @@ yyreduce:
        ;}
     break;
 
-  case 78:
-#line 442 "ael.y"
+  case 81:
+#line 453 "ael.y"
     { (yyval.pval) = npval2(PV_BREAK, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 79:
-#line 443 "ael.y"
+  case 82:
+#line 454 "ael.y"
     { (yyval.pval) = npval2(PV_RETURN, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 80:
-#line 444 "ael.y"
+  case 83:
+#line 455 "ael.y"
     { (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 81:
-#line 445 "ael.y"
+  case 84:
+#line 456 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(2) - (3)]));
                (yyval.pval)->u2.statements = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));
                (yyval.pval)->u3.else_statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
     break;
 
-  case 82:
-#line 449 "ael.y"
+  case 85:
+#line 460 "ael.y"
     { (yyval.pval)=0; ;}
     break;
 
-  case 83:
-#line 452 "ael.y"
+  case 86:
+#line 463 "ael.y"
     { (yyval.pval) = (yyvsp[(2) - (2)].pval); ;}
     break;
 
-  case 84:
-#line 453 "ael.y"
+  case 87:
+#line 464 "ael.y"
     { (yyval.pval) = NULL ; ;}
     break;
 
-  case 85:
-#line 456 "ael.y"
+  case 88:
+#line 467 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
-  case 86:
-#line 457 "ael.y"
+  case 89:
+#line 468 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)])); ;}
     break;
 
-  case 87:
-#line 460 "ael.y"
+  case 90:
+#line 471 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)])); ;}
     break;
 
-  case 88:
-#line 463 "ael.y"
+  case 91:
+#line 474 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
                (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
     break;
 
-  case 89:
-#line 467 "ael.y"
+  case 92:
+#line 478 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
                (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
     break;
 
-  case 90:
-#line 471 "ael.y"
+  case 93:
+#line 482 "ael.y"
     {
                (yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
                (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
     break;
 
-  case 91:
-#line 475 "ael.y"
+  case 94:
+#line 486 "ael.y"
     {
                (yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
                (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
                (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
     break;
 
-  case 92:
-#line 481 "ael.y"
+  case 95:
+#line 492 "ael.y"
     { (yyval.str) = strdup("1"); ;}
     break;
 
-  case 93:
-#line 482 "ael.y"
+  case 96:
+#line 493 "ael.y"
     { (yyval.str) = (yyvsp[(2) - (2)].str); ;}
     break;
 
-  case 94:
-#line 486 "ael.y"
+  case 97:
+#line 497 "ael.y"
     {                  /* ext[, pri] default 1 */
                (yyval.pval) = nword((yyvsp[(1) - (2)].str), &(yylsp[(1) - (2)]));
                (yyval.pval)->next = nword((yyvsp[(2) - (2)].str), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 95:
-#line 489 "ael.y"
+  case 98:
+#line 500 "ael.y"
     {  /* context, ext, pri */
                (yyval.pval) = nword((yyvsp[(4) - (4)].str), &(yylsp[(4) - (4)]));
                (yyval.pval)->next = nword((yyvsp[(1) - (4)].str), &(yylsp[(1) - (4)]));
                (yyval.pval)->next->next = nword((yyvsp[(2) - (4)].str), &(yylsp[(2) - (4)])); ;}
     break;
 
-  case 96:
-#line 495 "ael.y"
+  case 99:
+#line 506 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
-  case 97:
-#line 495 "ael.y"
+  case 100:
+#line 506 "ael.y"
     {
                /* XXX original code had @2 but i think we need @5 */
                (yyval.pval) = npval2(PV_MACRO_CALL, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
@@ -2680,20 +2709,20 @@ yyreduce:
                (yyval.pval)->u2.arglist = (yyvsp[(4) - (5)].pval);;}
     break;
 
-  case 98:
-#line 500 "ael.y"
+  case 101:
+#line 511 "ael.y"
     {
                (yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.str = (yyvsp[(1) - (3)].str); ;}
     break;
 
-  case 99:
-#line 508 "ael.y"
+  case 102:
+#line 519 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
-  case 100:
-#line 508 "ael.y"
+  case 103:
+#line 519 "ael.y"
     {
                if (strcasecmp((yyvsp[(1) - (3)].str),"goto") == 0) {
                        (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(2) - (3)]));
@@ -2705,8 +2734,8 @@ yyreduce:
                } ;}
     break;
 
-  case 101:
-#line 519 "ael.y"
+  case 104:
+#line 530 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(3) - (3)]));
                if( (yyval.pval)->type == PV_GOTO )
@@ -2716,168 +2745,168 @@ yyreduce:
        ;}
     break;
 
-  case 102:
-#line 526 "ael.y"
+  case 105:
+#line 537 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
     break;
 
-  case 103:
-#line 529 "ael.y"
+  case 106:
+#line 540 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str) ;}
     break;
 
-  case 104:
-#line 530 "ael.y"
+  case 107:
+#line 541 "ael.y"
     { (yyval.str) = strdup(""); ;}
     break;
 
-  case 105:
-#line 533 "ael.y"
+  case 108:
+#line 544 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
-  case 106:
-#line 534 "ael.y"
+  case 109:
+#line 545 "ael.y"
     {
                (yyval.pval)= npval(PV_WORD,0/*@1.first_line*/,0/*@1.last_line*/,0/* @1.first_column*/, 0/*@1.last_column*/);
                (yyval.pval)->u1.str = strdup(""); ;}
     break;
 
-  case 107:
-#line 537 "ael.y"
+  case 110:
+#line 548 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;}
     break;
 
-  case 108:
-#line 540 "ael.y"
+  case 111:
+#line 551 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 109:
-#line 541 "ael.y"
+  case 112:
+#line 552 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 110:
-#line 544 "ael.y"
+  case 113:
+#line 555 "ael.y"
     {
                (yyval.pval) = npval2(PV_CASE, &(yylsp[(1) - (4)]), &(yylsp[(3) - (4)])); /* XXX 3 or 4 ? */
                (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
                (yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval); set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;}
     break;
 
-  case 111:
-#line 548 "ael.y"
+  case 114:
+#line 559 "ael.y"
     {
                (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
                (yyval.pval)->u1.str = NULL;
                (yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
     break;
 
-  case 112:
-#line 552 "ael.y"
+  case 115:
+#line 563 "ael.y"
     {
                (yyval.pval) = npval2(PV_PATTERN, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)])); /* XXX@3 or @4 ? */
                (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
                (yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval);set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;}
     break;
 
-  case 113:
-#line 558 "ael.y"
+  case 116:
+#line 569 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 114:
-#line 559 "ael.y"
+  case 117:
+#line 570 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
     break;
 
-  case 115:
-#line 562 "ael.y"
+  case 118:
+#line 573 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
     break;
 
-  case 116:
-#line 563 "ael.y"
+  case 119:
+#line 574 "ael.y"
     {
                (yyval.pval) = npval2(PV_CATCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
                (yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
                (yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;}
     break;
 
-  case 117:
-#line 569 "ael.y"
+  case 120:
+#line 580 "ael.y"
     {
                (yyval.pval) = npval2(PV_SWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)]));
                (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
     break;
 
-  case 118:
-#line 574 "ael.y"
+  case 121:
+#line 585 "ael.y"
     {
                (yyval.pval) = npval2(PV_ESWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)]));
                (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
     break;
 
-  case 119:
-#line 579 "ael.y"
+  case 122:
+#line 590 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 120:
-#line 580 "ael.y"
+  case 123:
+#line 591 "ael.y"
     { (yyval.pval) = linku1(nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)])), (yyvsp[(3) - (3)].pval)); ;}
     break;
 
-  case 121:
-#line 581 "ael.y"
+  case 124:
+#line 592 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
     break;
 
-  case 122:
-#line 584 "ael.y"
+  case 125:
+#line 595 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
     break;
 
-  case 123:
-#line 585 "ael.y"
+  case 126:
+#line 596 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
                (yyval.pval)->u2.arglist = (yyvsp[(3) - (3)].pval);
                prev_word=0; /* XXX sure ? */ ;}
     break;
 
-  case 124:
-#line 592 "ael.y"
+  case 127:
+#line 603 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (2)].pval); ;}
     break;
 
-  case 125:
-#line 593 "ael.y"
+  case 128:
+#line 604 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), (yyvsp[(2) - (3)].pval)); ;}
     break;
 
-  case 126:
-#line 594 "ael.y"
+  case 129:
+#line 605 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
     break;
 
-  case 127:
-#line 597 "ael.y"
+  case 130:
+#line 608 "ael.y"
     {
                (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
                (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
     break;
 
-  case 128:
-#line 600 "ael.y"
+  case 131:
+#line 611 "ael.y"
     {
                (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));;}
     break;
 
 
 /* Line 1270 of yacc.c.  */
-#line 2881 "ael.tab.c"
+#line 2910 "ael.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3096,7 +3125,7 @@ yyreturn:
 }
 
 
-#line 605 "ael.y"
+#line 616 "ael.y"
 
 
 static char *token_equivs1[] =
index 309cc93..81a76fd 100644 (file)
@@ -132,7 +132,7 @@ static pval *update_last(pval *, YYLTYPE *);
 
 %type <str>goto_word
 %type <str>word_list
-%type <str>word3_list
+%type <str>word3_list hint_word
 %type <str>test_expr
 %type <str>opt_pri
 
@@ -272,12 +272,12 @@ extension : word EXTENMARK statement {
                $$->u1.str = $2;
                $$->u2.statements = $4; set_dads($$,$4);
                $$->u4.regexten=1;}
-       | KW_HINT LP word3_list RP word EXTENMARK statement {
+       | KW_HINT LP hint_word RP word EXTENMARK statement {
                $$ = npval2(PV_EXTENSION, &@1, &@7);
                $$->u1.str = $5;
                $$->u2.statements = $7; set_dads($$,$7);
                $$->u3.hints = $3;}
-       | KW_REGEXTEN KW_HINT LP word3_list RP word EXTENMARK statement {
+       | KW_REGEXTEN KW_HINT LP hint_word RP word EXTENMARK statement {
                $$ = npval2(PV_EXTENSION, &@1, &@8);
                $$->u1.str = $6;
                $$->u2.statements = $8; set_dads($$,$8);
@@ -341,6 +341,17 @@ word_list : word { $$ = $1;}
                prev_word = $$;}
        ;
 
+hint_word : word { $$ = $1; }
+       | hint_word word {
+               asprintf(&($$), "%s %s", $1, $2);
+               free($1);
+               free($2); }
+       | hint_word AMPER word {  /* there are often '&' in hints */
+               asprintf(&($$), "%s&%s", $1, $3);
+               free($1);
+               free($3);}
+
+
 word3_list : word { $$ = $1;}
        | word word {
                asprintf(&($$), "%s%s", $1, $2);