Merged revisions 177225 via svnmerge from
authorSteve Murphy <murf@digium.com>
Wed, 18 Feb 2009 23:50:57 +0000 (23:50 +0000)
committerSteve Murphy <murf@digium.com>
Wed, 18 Feb 2009 23:50:57 +0000 (23:50 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r177225 | murf | 2009-02-18 15:43:14 -0700 (Wed, 18 Feb 2009) | 34 lines

  This patch fixes a regression of sorts that was introduced in
  rev 24425.

  It basically fixes AST-190/ABE-1782.

  What was wrong: the user has 6000 extensions in one context; and
  then 6000 contexts, one per extension. The parser could only handle
  about 4893 of the 6000 extens in the single context.

  This was due to the regression I mentioned. To get rid of
  shift/reduce conflicts, Luigi set up right-recursive lists
  for globals, context elements, switch lists, and statements.
  Right recursive lists got rid of the warnings, but instead, they
  use up a tremendous amount of stack space when the lists are long.

  I saw this a few years back, and resolved not to fix it until
  someone complained. That day has arrived!

  After the changes were made, I ran the regression test suite,
  and there were no problems.

  I took the test case the user provided, and added 100,000
  extensions to the single context, that already had 6,000 extens
  in it. (I'll see your 6, and raise you 100!) It takes a few minutes
  to read it all in, check it and generate code for it, but no
  problems.

  So, I think I can say that fundamentally, there are no longer
  any limits on the number of items you can place in contexts,
  statement blocks, switches, or globals, beyond your virt mem
  constraints.
........

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

res/ael/ael.tab.c
res/ael/ael.y

index b24ee1c..34900ac 100644 (file)
@@ -511,7 +511,7 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  17
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   327
+#define YYLAST   373
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  44
@@ -520,7 +520,7 @@ union yyalloc
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  142
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  288
+#define YYNSTATES  281
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -594,17 +594,17 @@ static const yytype_int8 yyrhs[] =
       -1,    43,    -1,    37,    -1,    50,     3,    48,     4,    59,
        5,    -1,    23,    -1,    -1,    24,    -1,    24,    23,    -1,
       23,    24,    -1,    15,    43,     6,    58,     7,     4,    92,
-       5,    -1,    16,     4,    53,     5,    -1,    -1,    54,    53,
+       5,    -1,    16,     4,    53,     5,    -1,    -1,    53,    54,
       -1,     1,    53,    -1,    -1,    43,     9,    55,    43,     8,
       -1,    -1,    42,    43,     9,    57,    43,     8,    -1,    -1,
       43,    -1,    58,    10,    43,    -1,    58,     1,    -1,    -1,
-      60,    59,    -1,     1,    59,    -1,    62,    -1,    99,    -1,
+      59,    60,    -1,     1,    59,    -1,    62,    -1,    99,    -1,
       94,    -1,    95,    -1,    61,    -1,    54,    -1,    56,    -1,
       43,     1,    -1,     8,    -1,    17,    25,    43,     8,    -1,
       43,    25,    74,    -1,    43,    14,    43,    25,    74,    -1,
       31,    43,    25,    74,    -1,    32,     6,    70,     7,    43,
       25,    74,    -1,    31,    32,     6,    70,     7,    43,    25,
-      74,    -1,    -1,    74,    63,    -1,     1,    63,    -1,    71,
+      74,    -1,    -1,    63,    74,    -1,     1,    63,    -1,    71,
       11,    71,    11,    71,    -1,    43,    -1,    64,    13,    71,
       13,    71,    13,    71,    -1,    -1,     6,    67,    69,     7,
       -1,    19,    66,    -1,    22,    66,    -1,    20,     6,    65,
@@ -628,12 +628,12 @@ static const yytype_int8 yyrhs[] =
       84,    89,     7,    -1,    43,     6,     7,    -1,    -1,    43,
        6,    86,    -1,    85,    89,     7,    -1,    85,     7,    -1,
       43,    -1,    -1,    69,    -1,    -1,    89,    10,    88,    -1,
-      -1,    91,    90,    -1,    35,    43,    11,    63,    -1,    37,
-      11,    63,    -1,    36,    43,    11,    63,    -1,    -1,    93,
-      92,    -1,    74,    -1,    99,    -1,    38,    43,     4,    63,
+      -1,    90,    91,    -1,    35,    43,    11,    63,    -1,    37,
+      11,    63,    -1,    36,    43,    11,    63,    -1,    -1,    92,
+      93,    -1,    74,    -1,    99,    -1,    38,    43,     4,    63,
        5,    -1,    39,     4,    96,     5,    -1,    40,     4,    96,
-       5,    -1,    -1,    43,     8,    96,    -1,    43,    14,    43,
-       8,    96,    -1,     1,    96,    -1,    48,    -1,    48,    13,
+       5,    -1,    -1,    96,    43,     8,    -1,    96,    43,    14,
+      43,     8,    -1,     1,    96,    -1,    48,    -1,    48,    13,
       65,    -1,    97,     8,    -1,    98,    97,     8,    -1,    98,
        1,    -1,    41,     4,    98,     5,    -1,    41,     4,     5,
       -1
@@ -746,91 +746,91 @@ static const yytype_uint8 yydefact[] =
 {
       14,     9,     0,     0,    13,    15,     0,     0,     3,     6,
        0,     7,     8,     0,     0,    17,    16,     1,     5,     4,
-       0,    27,     0,     0,     0,     0,    11,    10,     0,    28,
-       0,    22,    23,    19,    21,     0,    30,     0,     0,     0,
-       0,    42,     0,     0,     0,     0,     0,     0,     0,     0,
-      39,    40,     0,     0,    38,    34,    36,    37,    35,   125,
-      29,     0,    33,     0,     0,     0,     0,     0,     0,     0,
-       0,    41,     0,     0,    12,    32,     0,    94,     0,     0,
+       0,    27,     0,     0,    11,    10,     0,    28,     0,    22,
+      19,     0,    21,     0,    30,     0,     0,    23,     0,     0,
+     125,    29,     0,    33,    12,    42,     0,     0,     0,     0,
+       0,     0,     0,     0,    39,    40,    32,    38,    34,    36,
+      37,    35,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    41,     0,     0,     0,    18,    94,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    74,    75,     0,    84,   127,   118,     0,     0,
-     125,   128,    24,     0,     0,     0,    62,     0,     0,     0,
-       0,     0,   142,   136,     0,     0,    25,     0,    44,     0,
-       0,     0,     0,     0,    55,     0,    57,     0,    58,     0,
-      69,    97,     0,   104,     0,    91,    90,    92,    79,     0,
-       0,   111,    87,    78,    96,   114,    60,   117,     0,    86,
-      88,    18,   126,    43,     0,    46,     0,     0,     0,    63,
-     135,     0,     0,   130,   131,     0,   138,   140,   141,     0,
-       0,     0,    51,    73,    50,   108,    85,     0,   120,    53,
-       0,     0,     0,     0,     0,    70,     0,     0,     0,    76,
-       0,   106,    77,     0,    83,     0,   112,     0,    93,    61,
-     113,   116,     0,     0,     0,    64,    65,   133,     0,   137,
-     139,     0,    45,   110,   118,     0,     0,     0,     0,     0,
-     120,    67,     0,    59,     0,     0,     0,    99,    71,    98,
+       0,     0,    74,    75,     0,    84,   127,   118,     0,   126,
+     128,    24,     0,     0,     0,    62,     0,     0,     0,     0,
+     142,   136,     0,     0,    25,     0,    44,     0,     0,     0,
+       0,    55,     0,    57,     0,    58,     0,    69,    97,     0,
+     104,     0,    91,    90,    92,    79,     0,     0,   111,    87,
+      78,    96,   114,    60,   117,     0,    86,    88,    43,     0,
+      46,     0,     0,     0,    63,   135,   130,     0,   131,     0,
+     138,   140,   141,     0,     0,     0,    51,    73,    50,   108,
+      85,     0,   120,    53,     0,     0,     0,     0,     0,    70,
+       0,     0,     0,    76,     0,   106,    77,     0,    83,     0,
+     112,     0,    93,    61,   113,   116,     0,     0,     0,    64,
+      65,   133,     0,   137,   139,     0,    45,   110,   118,     0,
+       0,    67,     0,    59,     0,     0,     0,    99,    71,    98,
      105,     0,     0,     0,    95,   115,   119,     0,     0,     0,
-       0,    26,     0,    56,     0,     0,     0,    72,   121,    68,
+       0,    26,     0,    56,    72,     0,     0,     0,   121,    68,
       66,     0,     0,     0,     0,     0,     0,   107,    80,   129,
-      89,     0,    47,   134,   109,     0,     0,   123,     0,     0,
-     103,   102,   101,   100,     0,    48,   122,   124,     0,    52,
-       0,     0,    81,    54,     0,     0,     0,    82
+      89,     0,    47,   134,   109,     0,     0,     0,     0,     0,
+     103,   102,   101,   100,     0,    48,     0,     0,   123,     0,
+      52,     0,   122,   124,     0,    81,    54,     0,     0,     0,
+      82
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     6,     7,     8,   113,     9,    10,    11,    12,    24,
-      92,    39,    93,   170,    30,    52,    53,    54,    55,   120,
-     180,   181,   125,   177,    94,   147,   107,   182,   131,    95,
-     121,   193,   274,   284,   202,   198,   132,   191,   134,   123,
-     214,    97,   196,    98,   236,   148,   219,   220,    99,   100,
-      56,    57,   110,   114,   115,    58
+      -1,     6,     7,     8,   111,     9,    10,    11,    12,    23,
+      92,    42,    93,   164,    28,    39,    56,    57,    58,   118,
+     174,   175,   122,   171,    94,   144,   106,   176,   128,    95,
+     168,   187,   264,   277,   196,   192,   129,   185,   131,   120,
+     208,    97,   190,    98,   226,   145,   210,   238,    62,    99,
+      59,    60,   108,   112,   113,    61
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -219
+#define YYPACT_NINF -209
 static const yytype_int16 yypact[] =
 {
-     102,  -219,   -25,    40,    24,    29,    70,   249,  -219,  -219,
-      74,  -219,  -219,   107,    11,  -219,  -219,  -219,  -219,  -219,
-      -6,    65,    11,   137,   148,    11,  -219,  -219,   152,  -219,
-      87,  -219,  -219,  -219,  -219,   123,  -219,   173,   126,   136,
-     123,  -219,   159,   -11,   186,   190,   194,   196,   158,    86,
-    -219,  -219,   203,   123,  -219,  -219,  -219,  -219,  -219,   177,
-    -219,   201,  -219,   170,   208,   191,   179,    12,    12,    19,
-     214,  -219,   181,   213,  -219,  -219,   115,  -219,   183,   222,
-     222,   223,   222,    36,   187,   226,   228,   229,   232,   222,
-     202,   182,  -219,  -219,   213,  -219,  -219,    16,   113,   239,
-     177,  -219,  -219,   240,   179,   213,  -219,    22,    12,   101,
-     246,   248,  -219,   241,   250,    10,  -219,   234,  -219,    56,
-     255,    56,   256,   253,  -219,   259,  -219,   224,  -219,    26,
-     225,   157,   258,   119,   261,  -219,  -219,  -219,  -219,   213,
-     266,  -219,  -219,  -219,   254,  -219,   231,  -219,    59,  -219,
-    -219,  -219,  -219,  -219,    60,  -219,   233,   235,   236,  -219,
-    -219,    12,   237,  -219,  -219,   224,  -219,  -219,  -219,   263,
-     238,   213,  -219,  -219,  -219,   270,  -219,   242,   124,    -1,
-     269,   276,   273,   187,   187,  -219,   187,   243,   187,  -219,
-     244,   274,  -219,   247,  -219,   115,  -219,   213,  -219,  -219,
-    -219,   251,   252,   257,   264,  -219,  -219,  -219,   283,  -219,
-    -219,   284,  -219,  -219,   242,   286,   260,   262,   285,   292,
-     124,   265,   267,  -219,   267,   172,    15,   176,  -219,   165,
-    -219,    -6,   290,   294,  -219,  -219,  -219,   293,   277,   213,
-      12,  -219,   129,  -219,   295,   296,    56,  -219,  -219,  -219,
-     268,   291,   298,   187,   187,   187,   187,  -219,  -219,  -219,
-    -219,   213,  -219,  -219,  -219,    56,    56,  -219,   267,   267,
-     301,   301,   301,   301,   271,  -219,  -219,  -219,   300,  -219,
-     307,   267,  -219,  -219,   275,   309,   213,  -219
+     262,  -209,   -32,    21,     5,    13,    69,   296,  -209,  -209,
+     112,  -209,  -209,   115,    14,  -209,  -209,  -209,  -209,  -209,
+     -29,    85,    14,     0,  -209,  -209,   129,  -209,   116,    92,
+    -209,   140,  -209,   105,  -209,   147,   125,  -209,   105,    99,
+    -209,  -209,   132,   252,  -209,  -209,   163,   -25,   159,   182,
+     186,   197,   162,   242,  -209,  -209,  -209,  -209,  -209,  -209,
+    -209,  -209,   165,   201,   170,   222,   204,   187,    16,    16,
+      68,   223,  -209,   190,   246,    59,  -209,  -209,   193,   234,
+     234,   236,   234,   -27,   212,   249,   251,   255,   238,   234,
+     228,   292,  -209,  -209,   246,  -209,  -209,    15,   146,  -209,
+    -209,  -209,   273,   187,   246,  -209,   107,    16,    25,    29,
+    -209,   269,   279,    39,  -209,   265,  -209,    19,   192,   299,
+     294,  -209,   302,  -209,   264,  -209,    70,   266,   161,   300,
+     168,   305,  -209,  -209,  -209,  -209,   246,   306,  -209,  -209,
+    -209,   293,  -209,   272,  -209,    84,  -209,  -209,  -209,   113,
+    -209,   274,   275,   278,  -209,   280,  -209,    76,  -209,   264,
+    -209,  -209,  -209,   308,   281,   246,   246,  -209,  -209,   315,
+    -209,   282,  -209,    22,   313,   320,   317,   212,   212,  -209,
+     212,   286,   212,  -209,   287,   318,  -209,   288,  -209,    59,
+    -209,   246,  -209,  -209,  -209,   290,   291,   295,   310,  -209,
+    -209,  -209,   297,  -209,  -209,   328,  -209,  -209,   282,   330,
+     122,   298,   301,  -209,   301,   171,    86,   205,  -209,   121,
+    -209,   -29,   331,   219,  -209,  -209,  -209,   334,   321,   246,
+     335,  -209,   102,  -209,  -209,   304,   307,   337,  -209,  -209,
+     309,   332,   338,   212,   212,   212,   212,  -209,  -209,  -209,
+    -209,   246,  -209,  -209,  -209,   340,   342,    19,   301,   301,
+     343,   343,   343,   343,   312,  -209,    19,    19,   246,   344,
+    -209,   348,   246,   246,   301,  -209,  -209,   316,   351,   246,
+    -209
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -219,  -219,  -219,   310,   -19,  -219,  -219,  -219,  -219,   125,
-       5,  -219,   -15,  -219,  -219,   -31,  -219,  -219,  -219,  -114,
-    -219,   154,    25,  -219,  -219,   143,   217,  -218,   -82,  -219,
-     -59,  -219,  -219,  -219,  -219,  -219,  -219,  -219,  -219,  -219,
-    -219,  -219,  -219,  -219,  -219,   108,   103,  -219,   227,  -219,
-    -219,  -219,   -65,   209,  -219,   -51
+    -209,  -209,  -209,   353,   -19,  -209,  -209,  -209,  -209,   339,
+     137,  -209,   -30,  -209,  -209,   324,  -209,  -209,  -209,  -114,
+    -209,   206,   -54,  -209,  -209,   195,   260,  -208,   -82,  -209,
+     -62,  -209,  -209,  -209,  -209,  -209,  -209,  -209,  -209,  -209,
+    -209,  -209,  -209,  -209,  -209,   156,  -209,  -209,  -209,  -209,
+    -209,  -209,     1,   254,  -209,   311
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -840,76 +840,86 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -133
 static const yytype_int16 yytable[] =
 {
-      96,    28,   133,   111,   251,   172,   252,   174,   101,    62,
-     -66,   167,    22,   108,   118,   168,   -20,  -132,    13,    25,
-      51,    64,    75,   145,   112,    51,   187,    25,   254,   156,
-      25,    26,    65,   157,   158,   144,   183,    27,    51,   184,
-      50,    96,   221,   160,    14,    50,   155,    26,    15,   101,
-     278,   279,    16,    27,    23,   109,    26,   119,    50,   146,
-      76,   -49,    27,   283,    77,   159,   200,   203,    78,   201,
-      17,   157,   158,   129,    79,    80,    81,    20,    82,   130,
-     194,   233,    83,    84,    85,    86,    87,    71,    36,    88,
-      89,   -49,   -49,   -49,    37,    32,   207,    38,    48,    91,
-      72,   225,   226,   159,   227,   126,   229,   128,    29,   161,
-       1,    73,   212,    21,   139,   162,   119,     2,     3,    76,
-     -49,   149,   150,    77,    40,     4,     5,    78,   -31,   190,
-     187,    41,   267,    79,    80,    81,   264,    82,   234,   201,
-      42,    83,    84,    85,    86,    87,    32,    31,    88,    89,
-      34,   276,   277,    33,    43,    44,    35,    48,    91,   216,
-     217,   218,    45,    46,    47,    48,    49,   186,   187,    60,
-     188,   270,   271,   272,   273,   263,   187,    59,   256,    61,
-     262,    76,   253,   187,    63,    77,   255,   187,   141,    78,
-     142,    32,    66,   143,    67,    79,    80,    81,    68,    82,
-      69,    70,   275,    83,    84,    85,    86,    87,    74,   102,
-      88,    89,   257,   103,   104,    90,   105,    76,    47,    48,
-      91,    77,   106,   116,   117,    78,   122,   287,   124,   127,
-     130,    79,    80,    81,   135,    82,   136,   137,   138,    83,
-      84,    85,    86,    87,   151,   140,    88,    89,   153,    -2,
-      18,   163,   -14,   164,   165,    48,    91,     1,   166,   171,
-     173,   176,   175,   178,     2,     3,   189,   179,   185,   192,
-     195,   210,     4,     5,   199,   197,   204,   213,   205,   206,
-     208,   211,   222,   223,   224,   146,   228,   230,   231,   239,
-     232,   240,   241,   243,   235,   237,   246,   247,   258,   259,
-     238,   260,   261,   244,   268,   245,   265,   266,   249,   269,
-     250,   221,   187,   281,   280,   282,   286,    19,   285,   209,
-     215,   154,   242,   248,   169,     0,     0,   152
+      96,    26,   130,   166,   241,    30,   242,    65,    24,    55,
+     126,    13,   116,    55,    25,    22,   127,   107,    66,   -20,
+     117,  -132,   142,   -49,   -49,    14,   123,   -49,   125,    15,
+     156,   -49,   141,   -66,   158,   136,    16,   -49,   -49,   -49,
+     161,   -49,   150,    31,   162,   -49,   -49,   -49,   -49,   -49,
+     269,   270,   -49,   -49,   -49,   -49,   -49,   -20,   143,  -132,
+     117,   -49,   -49,   -49,   -49,   211,   276,   -49,   157,    17,
+     109,   -49,   157,   110,   188,   223,    24,   -49,   -49,   -49,
+     177,   -49,    25,   178,   201,   -49,   -49,   -49,   -49,   -49,
+     202,   194,   -49,   -49,   195,   215,   216,   181,   217,   244,
+     219,   -49,   -49,   206,    44,    24,    38,    45,   155,   254,
+     -31,    25,   195,   -31,   151,    20,    46,    34,   152,   153,
+     197,    21,   -31,    35,   152,   153,    36,   234,    27,   224,
+      47,    48,   181,    33,   246,    31,   -31,   -31,    49,    50,
+      51,    52,    53,   268,   -31,   -31,   -31,   -31,   -31,    37,
+     154,    40,   272,   273,   146,   147,   154,   235,   236,   237,
+      32,   260,   261,   262,   263,    67,    32,   252,    41,    75,
+      76,   180,   181,    77,   182,    63,    54,    78,   184,   181,
+      54,   243,   181,    79,    80,    81,    68,    82,    64,   265,
+      69,    83,    84,    85,    86,    87,    75,   167,    88,    89,
+      77,    70,   247,    90,    78,    71,    51,    52,    91,   101,
+      79,    80,    81,   102,    82,   245,   181,   280,    83,    84,
+      85,    86,    87,    75,   249,    88,    89,    77,   103,   104,
+     105,    78,   114,   115,    52,    91,   119,    79,    80,    81,
+     121,    82,   124,    72,   135,    83,    84,    85,    86,    87,
+      75,    37,    88,    89,    77,   127,    73,   132,    78,   133,
+      45,    52,    91,   134,    79,    80,    81,    74,    82,    46,
+       1,   137,    83,    84,    85,    86,    87,     2,     3,    88,
+      89,   148,   159,    47,    48,     4,     5,   160,    52,    91,
+     165,    49,    50,    51,    52,    53,    -2,    18,   138,   -14,
+     139,    37,   170,   140,     1,   169,   172,   173,   183,   179,
+     189,     2,     3,   186,   191,   193,   204,   198,   199,     4,
+       5,   200,   207,   157,   205,   143,   212,   213,   214,   218,
+     220,   222,   221,   225,   227,   229,   231,   233,   228,   248,
+     230,   239,   250,   253,   240,   258,   251,   255,   257,   259,
+     256,   266,   211,   267,   181,   271,   275,   274,   279,   278,
+      19,    29,    43,   149,   232,   203,   209,   163,     0,     0,
+       0,     0,     0,   100
 };
 
 static const yytype_int16 yycheck[] =
 {
-      59,    20,    84,    68,   222,   119,   224,   121,    59,    40,
-      11,     1,     1,     1,    73,     5,     5,     5,    43,    14,
-      35,    32,    53,     7,     5,    40,    11,    22,    13,     7,
-      25,    37,    43,    11,    12,    94,    10,    43,    53,    13,
-      35,   100,    43,   108,     4,    40,   105,    37,    24,   100,
-     268,   269,    23,    43,    43,    43,    37,     1,    53,    43,
-       4,     5,    43,   281,     8,    43,     7,     7,    12,    10,
-       0,    11,    12,    37,    18,    19,    20,     3,    22,    43,
-     139,   195,    26,    27,    28,    29,    30,     1,     1,    33,
-      34,    35,    36,    37,     7,     9,   161,    10,    42,    43,
-      14,   183,   184,    43,   186,    80,   188,    82,    43,     8,
-       8,    25,   171,     6,    89,    14,     1,    15,    16,     4,
-       5,     8,     9,     8,     1,    23,    24,    12,     5,    10,
-      11,     8,   246,    18,    19,    20,     7,    22,   197,    10,
-      17,    26,    27,    28,    29,    30,     9,    22,    33,    34,
-      25,   265,   266,     5,    31,    32,     4,    42,    43,    35,
-      36,    37,    39,    40,    41,    42,    43,    10,    11,    43,
-      13,   253,   254,   255,   256,   240,    11,     4,    13,    43,
-     239,     4,    10,    11,    25,     8,    10,    11,     6,    12,
-       8,     9,     6,    11,     4,    18,    19,    20,     4,    22,
-       4,    43,   261,    26,    27,    28,    29,    30,     5,     8,
-      33,    34,   231,    43,     6,    38,    25,     4,    41,    42,
-      43,     8,    43,     9,    43,    12,    43,   286,     6,     6,
-      43,    18,    19,    20,     8,    22,     8,     8,     6,    26,
-      27,    28,    29,    30,     5,    43,    33,    34,     8,     0,
-       1,     5,     3,     5,    13,    42,    43,     8,     8,    25,
-       5,     8,     6,     4,    15,    16,     8,    43,    43,     8,
-       4,     8,    23,    24,    43,    21,    43,     7,    43,    43,
-      43,    43,    13,     7,    11,    43,    43,    43,    14,    25,
-      43,     8,     8,     7,    43,    43,    11,     5,     8,     5,
-      43,     8,    25,    43,    13,    43,    11,    11,    43,    11,
-      43,    43,    11,    13,    43,     8,     7,     7,    43,   165,
-     177,   104,   214,   220,   115,    -1,    -1,   100
+      62,    20,    84,   117,   212,     5,   214,    32,    37,    39,
+      37,    43,    74,    43,    43,     1,    43,     1,    43,     5,
+       1,     5,     7,     4,     5,     4,    80,     8,    82,    24,
+       5,    12,    94,    11,     5,    89,    23,    18,    19,    20,
+       1,    22,   104,    43,     5,    26,    27,    28,    29,    30,
+     258,   259,    33,    34,    35,    36,    37,    43,    43,    43,
+       1,    42,    43,     4,     5,    43,   274,     8,    43,     0,
+      69,    12,    43,     5,   136,   189,    37,    18,    19,    20,
+      10,    22,    43,    13,     8,    26,    27,    28,    29,    30,
+      14,     7,    33,    34,    10,   177,   178,    11,   180,    13,
+     182,    42,    43,   165,     5,    37,     1,     8,   107,     7,
+       5,    43,    10,     8,     7,     3,    17,     1,    11,    12,
+       7,     6,    17,     7,    11,    12,    10,     5,    43,   191,
+      31,    32,    11,     4,    13,    43,    31,    32,    39,    40,
+      41,    42,    43,   257,    39,    40,    41,    42,    43,     9,
+      43,     4,   266,   267,     8,     9,    43,    35,    36,    37,
+      23,   243,   244,   245,   246,     6,    29,   229,    43,     4,
+       5,    10,    11,     8,    13,    43,    39,    12,    10,    11,
+      43,    10,    11,    18,    19,    20,     4,    22,    25,   251,
+       4,    26,    27,    28,    29,    30,     4,     5,    33,    34,
+       8,     4,   221,    38,    12,    43,    41,    42,    43,     8,
+      18,    19,    20,    43,    22,    10,    11,   279,    26,    27,
+      28,    29,    30,     4,     5,    33,    34,     8,     6,    25,
+      43,    12,     9,    43,    42,    43,    43,    18,    19,    20,
+       6,    22,     6,     1,     6,    26,    27,    28,    29,    30,
+       4,     9,    33,    34,     8,    43,    14,     8,    12,     8,
+       8,    42,    43,     8,    18,    19,    20,    25,    22,    17,
+       8,    43,    26,    27,    28,    29,    30,    15,    16,    33,
+      34,     8,    13,    31,    32,    23,    24,     8,    42,    43,
+      25,    39,    40,    41,    42,    43,     0,     1,     6,     3,
+       8,     9,     8,    11,     8,     6,     4,    43,     8,    43,
+       4,    15,    16,     8,    21,    43,     8,    43,    43,    23,
+      24,    43,     7,    43,    43,    43,    13,     7,    11,    43,
+      43,    43,    14,    43,    43,    25,     8,     7,    43,     8,
+      43,    43,     8,     8,    43,    13,    25,    43,    11,    11,
+      43,    11,    43,    11,    11,    43,     8,    13,     7,    43,
+       7,    22,    38,   103,   208,   159,   171,   113,    -1,    -1,
+      -1,    -1,    -1,    62
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -918,33 +928,33 @@ static const yytype_uint8 yystos[] =
 {
        0,     8,    15,    16,    23,    24,    45,    46,    47,    49,
       50,    51,    52,    43,     4,    24,    23,     0,     1,    47,
-       3,     6,     1,    43,    53,    54,    37,    43,    48,    43,
-      58,    53,     9,     5,    53,     4,     1,     7,    10,    55,
-       1,     8,    17,    31,    32,    39,    40,    41,    42,    43,
-      54,    56,    59,    60,    61,    62,    94,    95,    99,     4,
-      43,    43,    59,    25,    32,    43,     6,     4,     4,     4,
-      43,     1,    14,    25,     5,    59,     4,     8,    12,    18,
+       3,     6,     1,    53,    37,    43,    48,    43,    58,    53,
+       5,    43,    54,     4,     1,     7,    10,     9,     1,    59,
+       4,    43,    55,    59,     5,     8,    17,    31,    32,    39,
+      40,    41,    42,    43,    54,    56,    60,    61,    62,    94,
+      95,    99,    92,    43,    25,    32,    43,     6,     4,     4,
+       4,    43,     1,    14,    25,     4,     5,     8,    12,    18,
       19,    20,    22,    26,    27,    28,    29,    30,    33,    34,
-      38,    43,    54,    56,    68,    73,    74,    85,    87,    92,
-      93,    99,     8,    43,     6,    25,    43,    70,     1,    43,
-      96,    96,     5,    48,    97,    98,     9,    43,    74,     1,
-      63,    74,    43,    83,     6,    66,    66,     6,    66,    37,
-      43,    72,    80,    72,    82,     8,     8,     8,     6,    66,
-      43,     6,     8,    11,    74,     7,    43,    69,    89,     8,
-       9,     5,    92,     8,    70,    74,     7,    11,    12,    43,
-      96,     8,    14,     5,     5,    13,     8,     1,     5,    97,
-      57,    25,    63,     5,    63,     6,     8,    67,     4,    43,
-      64,    65,    71,    10,    13,    43,    10,    11,    13,     8,
-      10,    81,     8,    75,    74,     4,    86,    21,    79,    43,
-       7,    10,    78,     7,    43,    43,    43,    96,    43,    65,
-       8,    43,    74,     7,    84,    69,    35,    36,    37,    90,
-      91,    43,    13,     7,    11,    72,    72,    72,    43,    72,
+      38,    43,    54,    56,    68,    73,    74,    85,    87,    93,
+      99,     8,    43,     6,    25,    43,    70,     1,    96,    96,
+       5,    48,    97,    98,     9,    43,    74,     1,    63,    43,
+      83,     6,    66,    66,     6,    66,    37,    43,    72,    80,
+      72,    82,     8,     8,     8,     6,    66,    43,     6,     8,
+      11,    74,     7,    43,    69,    89,     8,     9,     8,    70,
+      74,     7,    11,    12,    43,    96,     5,    43,     5,    13,
+       8,     1,     5,    97,    57,    25,    63,     5,    74,     6,
+       8,    67,     4,    43,    64,    65,    71,    10,    13,    43,
+      10,    11,    13,     8,    10,    81,     8,    75,    74,     4,
+      86,    21,    79,    43,     7,    10,    78,     7,    43,    43,
+      43,     8,    14,    65,     8,    43,    74,     7,    84,    69,
+      90,    43,    13,     7,    11,    72,    72,    72,    43,    72,
       43,    14,    43,    63,    74,    43,    88,    43,    43,    25,
-       8,     8,    89,     7,    43,    43,    11,     5,    90,    43,
+      43,     8,    89,     7,     5,    35,    36,    37,    91,    43,
       43,    71,    71,    10,    13,    10,    13,    48,     8,     5,
-       8,    25,    74,    96,     7,    11,    11,    63,    13,    11,
-      72,    72,    72,    72,    76,    74,    63,    63,    71,    71,
-      43,    13,     8,    71,    77,    43,     7,    74
+       8,    25,    74,     8,     7,    43,    43,    11,    13,    11,
+      72,    72,    72,    72,    76,    74,    11,    11,    63,    71,
+      71,    43,    63,    63,    13,     8,    71,    77,    43,     7,
+      74
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1469,7 +1479,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
       case 43: /* "word" */
 #line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1473 "ael.tab.c"
+#line 1483 "ael.tab.c"
        break;
       case 46: /* "objects" */
 #line 170 "ael.y"
@@ -1477,7 +1487,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1481 "ael.tab.c"
+#line 1491 "ael.tab.c"
        break;
       case 47: /* "object" */
 #line 170 "ael.y"
@@ -1485,12 +1495,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1489 "ael.tab.c"
+#line 1499 "ael.tab.c"
        break;
       case 48: /* "context_name" */
 #line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1494 "ael.tab.c"
+#line 1504 "ael.tab.c"
        break;
       case 49: /* "context" */
 #line 170 "ael.y"
@@ -1498,7 +1508,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1502 "ael.tab.c"
+#line 1512 "ael.tab.c"
        break;
       case 51: /* "macro" */
 #line 170 "ael.y"
@@ -1506,7 +1516,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1510 "ael.tab.c"
+#line 1520 "ael.tab.c"
        break;
       case 52: /* "globals" */
 #line 170 "ael.y"
@@ -1514,7 +1524,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1518 "ael.tab.c"
+#line 1528 "ael.tab.c"
        break;
       case 53: /* "global_statements" */
 #line 170 "ael.y"
@@ -1522,7 +1532,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1526 "ael.tab.c"
+#line 1536 "ael.tab.c"
        break;
       case 54: /* "assignment" */
 #line 170 "ael.y"
@@ -1530,7 +1540,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1534 "ael.tab.c"
+#line 1544 "ael.tab.c"
        break;
       case 56: /* "local_assignment" */
 #line 170 "ael.y"
@@ -1538,7 +1548,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1542 "ael.tab.c"
+#line 1552 "ael.tab.c"
        break;
       case 58: /* "arglist" */
 #line 170 "ael.y"
@@ -1546,7 +1556,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1550 "ael.tab.c"
+#line 1560 "ael.tab.c"
        break;
       case 59: /* "elements" */
 #line 170 "ael.y"
@@ -1554,7 +1564,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1558 "ael.tab.c"
+#line 1568 "ael.tab.c"
        break;
       case 60: /* "element" */
 #line 170 "ael.y"
@@ -1562,7 +1572,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1566 "ael.tab.c"
+#line 1576 "ael.tab.c"
        break;
       case 61: /* "ignorepat" */
 #line 170 "ael.y"
@@ -1570,7 +1580,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1574 "ael.tab.c"
+#line 1584 "ael.tab.c"
        break;
       case 62: /* "extension" */
 #line 170 "ael.y"
@@ -1578,7 +1588,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1582 "ael.tab.c"
+#line 1592 "ael.tab.c"
        break;
       case 63: /* "statements" */
 #line 170 "ael.y"
@@ -1586,12 +1596,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1590 "ael.tab.c"
+#line 1600 "ael.tab.c"
        break;
       case 64: /* "timerange" */
 #line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1595 "ael.tab.c"
+#line 1605 "ael.tab.c"
        break;
       case 65: /* "timespec" */
 #line 170 "ael.y"
@@ -1599,12 +1609,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1603 "ael.tab.c"
+#line 1613 "ael.tab.c"
        break;
       case 66: /* "test_expr" */
 #line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1608 "ael.tab.c"
+#line 1618 "ael.tab.c"
        break;
       case 68: /* "if_like_head" */
 #line 170 "ael.y"
@@ -1612,22 +1622,22 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1616 "ael.tab.c"
+#line 1626 "ael.tab.c"
        break;
       case 69: /* "word_list" */
 #line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1621 "ael.tab.c"
+#line 1631 "ael.tab.c"
        break;
       case 71: /* "word3_list" */
 #line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1626 "ael.tab.c"
+#line 1636 "ael.tab.c"
        break;
       case 72: /* "goto_word" */
 #line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1631 "ael.tab.c"
+#line 1641 "ael.tab.c"
        break;
       case 73: /* "switch_statement" */
 #line 170 "ael.y"
@@ -1635,7 +1645,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1639 "ael.tab.c"
+#line 1649 "ael.tab.c"
        break;
       case 74: /* "statement" */
 #line 170 "ael.y"
@@ -1643,7 +1653,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1647 "ael.tab.c"
+#line 1657 "ael.tab.c"
        break;
       case 79: /* "opt_else" */
 #line 170 "ael.y"
@@ -1651,7 +1661,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1655 "ael.tab.c"
+#line 1665 "ael.tab.c"
        break;
       case 80: /* "target" */
 #line 170 "ael.y"
@@ -1659,12 +1669,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1663 "ael.tab.c"
+#line 1673 "ael.tab.c"
        break;
       case 81: /* "opt_pri" */
 #line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1668 "ael.tab.c"
+#line 1678 "ael.tab.c"
        break;
       case 82: /* "jumptarget" */
 #line 170 "ael.y"
@@ -1672,7 +1682,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1676 "ael.tab.c"
+#line 1686 "ael.tab.c"
        break;
       case 83: /* "macro_call" */
 #line 170 "ael.y"
@@ -1680,7 +1690,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1684 "ael.tab.c"
+#line 1694 "ael.tab.c"
        break;
       case 85: /* "application_call_head" */
 #line 170 "ael.y"
@@ -1688,7 +1698,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1692 "ael.tab.c"
+#line 1702 "ael.tab.c"
        break;
       case 87: /* "application_call" */
 #line 170 "ael.y"
@@ -1696,12 +1706,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1700 "ael.tab.c"
+#line 1710 "ael.tab.c"
        break;
       case 88: /* "opt_word" */
 #line 183 "ael.y"
        { free((yyvaluep->str));};
-#line 1705 "ael.tab.c"
+#line 1715 "ael.tab.c"
        break;
       case 89: /* "eval_arglist" */
 #line 170 "ael.y"
@@ -1709,7 +1719,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1713 "ael.tab.c"
+#line 1723 "ael.tab.c"
        break;
       case 90: /* "case_statements" */
 #line 170 "ael.y"
@@ -1717,7 +1727,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1721 "ael.tab.c"
+#line 1731 "ael.tab.c"
        break;
       case 91: /* "case_statement" */
 #line 170 "ael.y"
@@ -1725,7 +1735,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1729 "ael.tab.c"
+#line 1739 "ael.tab.c"
        break;
       case 92: /* "macro_statements" */
 #line 170 "ael.y"
@@ -1733,7 +1743,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1737 "ael.tab.c"
+#line 1747 "ael.tab.c"
        break;
       case 93: /* "macro_statement" */
 #line 170 "ael.y"
@@ -1741,7 +1751,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1745 "ael.tab.c"
+#line 1755 "ael.tab.c"
        break;
       case 94: /* "switches" */
 #line 170 "ael.y"
@@ -1749,7 +1759,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1753 "ael.tab.c"
+#line 1763 "ael.tab.c"
        break;
       case 95: /* "eswitches" */
 #line 170 "ael.y"
@@ -1757,7 +1767,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1761 "ael.tab.c"
+#line 1771 "ael.tab.c"
        break;
       case 96: /* "switchlist" */
 #line 170 "ael.y"
@@ -1765,7 +1775,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1769 "ael.tab.c"
+#line 1779 "ael.tab.c"
        break;
       case 97: /* "included_entry" */
 #line 170 "ael.y"
@@ -1773,7 +1783,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1777 "ael.tab.c"
+#line 1787 "ael.tab.c"
        break;
       case 98: /* "includeslist" */
 #line 170 "ael.y"
@@ -1781,7 +1791,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1785 "ael.tab.c"
+#line 1795 "ael.tab.c"
        break;
       case 99: /* "includes" */
 #line 170 "ael.y"
@@ -1789,7 +1799,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1793 "ael.tab.c"
+#line 1803 "ael.tab.c"
        break;
 
       default:
@@ -3013,20 +3023,20 @@ yyreduce:
 
   case 133:
 #line 665 "ael.y"
-    { (yyval.pval) = linku1(nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)])), (yyvsp[(3) - (3)].pval)); ;}
+    { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval),nword((yyvsp[(2) - (3)].str), &(yylsp[(2) - (3)]))); ;}
     break;
 
   case 134:
 #line 666 "ael.y"
     {
          char *x;
-         if (asprintf(&x,"%s@%s", (yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str)) < 0) {
+         if (asprintf(&x,"%s@%s", (yyvsp[(2) - (5)].str), (yyvsp[(4) - (5)].str)) < 0) {
                ast_log(LOG_WARNING, "asprintf() failed\n");
                (yyval.pval) = NULL;
          } else {
-               free((yyvsp[(1) - (5)].str));
-               free((yyvsp[(3) - (5)].str));
-               (yyval.pval) = linku1(nword(x, &(yylsp[(1) - (5)])), (yyvsp[(5) - (5)].pval));
+               free((yyvsp[(2) - (5)].str));
+               free((yyvsp[(4) - (5)].str));
+               (yyval.pval) = linku1((yyvsp[(1) - (5)].pval),nword(x, &(yylsp[(2) - (5)])));
          }
        ;}
     break;
@@ -3079,7 +3089,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 3083 "ael.tab.c"
+#line 3093 "ael.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
index d16d20d..f8398dd 100644 (file)
@@ -159,7 +159,7 @@ static pval *update_last(pval *, YYLTYPE *);
 
 /* there will be two shift/reduce conflicts, they involve the if statement, where a single statement occurs not wrapped in curlies in the "true" section
    the default action to shift will attach the else to the preceeding if. */
-%expect 3
+%expect 30
 %error-verbose
 
 /*
@@ -235,7 +235,7 @@ globals : KW_GLOBALS LC global_statements RC {
        ;
 
 global_statements : { $$ = NULL; }
-       | assignment global_statements {$$ = linku1($1, $2); }
+       | global_statements assignment {$$ = linku1($1, $2); }
        | error global_statements {$$=$2;}
        ;
 
@@ -259,7 +259,7 @@ arglist : /* empty */ { $$ = NULL; }
        ;
 
 elements : {$$=0;}
-       | element elements { $$ = linku1($1, $2); }
+       | elements element { $$ = linku1($1, $2); }
        | error elements  { $$=$2;}
        ;
 
@@ -311,7 +311,7 @@ extension : word EXTENMARK statement {
 
 /* list of statements in a block or after a case label - can be empty */
 statements : /* empty */ { $$ = NULL; }
-       | statement statements { $$ = linku1($1, $2); }
+       | statements statement { $$ = linku1($1, $2); }
        | error statements {$$=$2;}
        ;
 
@@ -622,7 +622,7 @@ eval_arglist :  word_list { $$ = nword($1, &@1); }
        ;
 
 case_statements: /* empty */ { $$ = NULL; }
-       | case_statement case_statements { $$ = linku1($1, $2); }
+       | case_statements case_statement { $$ = linku1($1, $2); }
        ;
 
 case_statement: KW_CASE word COLON statements {
@@ -640,7 +640,7 @@ case_statement: KW_CASE word COLON statements {
        ;
 
 macro_statements: /* empty */ { $$ = NULL; }
-       | macro_statement macro_statements { $$ = linku1($1, $2); }
+       | macro_statements macro_statement { $$ = linku1($1, $2); }
        ;
 
 macro_statement : statement {$$=$1;}
@@ -662,16 +662,16 @@ eswitches : KW_ESWITCHES LC switchlist RC {
        ;
 
 switchlist : /* empty */ { $$ = NULL; }
-       | word SEMI switchlist { $$ = linku1(nword($1, &@1), $3); }
-       | word AT word SEMI switchlist {
+       | switchlist word SEMI { $$ = linku1($1,nword($2, &@2)); }
+       | switchlist word AT word SEMI {
          char *x;
-         if (asprintf(&x,"%s@%s", $1, $3) < 0) {
+         if (asprintf(&x,"%s@%s", $2, $4) < 0) {
                ast_log(LOG_WARNING, "asprintf() failed\n");
                $$ = NULL;
          } else {
-               free($1);
-               free($3);
-               $$ = linku1(nword(x, &@1), $5);
+               free($2);
+               free($4);
+               $$ = linku1($1,nword(x, &@2));
          }
        }
        | error switchlist {$$=$2;}