Merged revisions 8758 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Fri, 27 Jan 2006 01:04:03 +0000 (01:04 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Fri, 27 Jan 2006 01:04:03 +0000 (01:04 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r8758 | tilghman | 2006-01-26 18:52:12 -0600 (Thu, 26 Jan 2006) | 2 lines

Bug 6072 - Revisions to the source bison and flex files don't auto-regenerate these files

........

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

ast_expr2.c
ast_expr2.h
ast_expr2f.c

index 39928d5..adc58e7 100644 (file)
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 1.875d.  */
+/* A Bison parser, made by GNU Bison 2.0.  */
 
 /* Skeleton parser for Yacc-like parsing with Bison,
    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
@@ -45,8 +45,7 @@
 /* Using locations.  */
 #define YYLSP_NEEDED 1
 
-/* If NAME_PREFIX is specified substitute the variables and functions
-   names.  */
+/* Substitute the variable and function names.  */
 #define yyparse ast_yyparse
 #define yylex   ast_yylex
 #define yyerror ast_yyerror
@@ -238,7 +237,12 @@ int                ast_yyerror(const char *,YYLTYPE *, struct parse_io *);
    some useful info about the error. Not as easy as it looks, but it
    is possible. */
 #define ast_yyerror(x) ast_yyerror(x,&yyloc,parseio)
-
+#define DESTROY(x) { \
+if ((x)->type == AST_EXPR_numeric_string || (x)->type == AST_EXPR_string) \
+       free((x)->u.s); \
+       (x)->u.s = 0; \
+       free(x); \
+}
 
 
 /* Enabling traces.  */
@@ -255,12 +259,12 @@ int               ast_yyerror(const char *,YYLTYPE *, struct parse_io *);
 #endif
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 137 "ast_expr2.y"
+#line 142 "ast_expr2.y"
 typedef union YYSTYPE {
        struct val *val;
 } YYSTYPE;
-/* Line 191 of yacc.c.  */
-#line 264 "ast_expr2.c"
+/* Line 190 of yacc.c.  */
+#line 268 "ast_expr2.c"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
@@ -281,13 +285,13 @@ typedef struct YYLTYPE
 
 
 /* Copy the second part of user declarations.  */
-#line 141 "ast_expr2.y"
+#line 146 "ast_expr2.y"
 
 extern int             ast_yylex __P((YYSTYPE *, YYLTYPE *, yyscan_t));
 
 
-/* Line 214 of yacc.c.  */
-#line 291 "ast_expr2.c"
+/* Line 213 of yacc.c.  */
+#line 295 "ast_expr2.c"
 
 #if ! defined (yyoverflow) || YYERROR_VERBOSE
 
@@ -302,14 +306,10 @@ extern int                ast_yylex __P((YYSTYPE *, YYLTYPE *, yyscan_t));
 
 # ifdef YYSTACK_USE_ALLOCA
 #  if YYSTACK_USE_ALLOCA
-#   define YYSTACK_ALLOC alloca
-#  endif
-# else
-#  if defined (alloca) || defined (_ALLOCA_H)
-#   define YYSTACK_ALLOC alloca
-#  else
 #   ifdef __GNUC__
 #    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
 #   endif
 #  endif
 # endif
@@ -473,9 +473,9 @@ static const yysigned_char yyrhs[] =
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned char yyrline[] =
 {
-       0,   160,   160,   168,   169,   172,   175,   178,   181,   184,
-     187,   190,   193,   196,   199,   202,   205,   208,   211,   214,
-     217,   220,   223
+       0,   165,   165,   175,   176,   180,   184,   188,   192,   196,
+     200,   204,   208,   212,   216,   220,   224,   228,   232,   236,
+     240,   244,   248
 };
 #endif
 
@@ -660,20 +660,53 @@ do                                                                \
     }                                                          \
 while (0)
 
+
 #define YYTERROR       1
 #define YYERRCODE      256
 
-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
-   are run).  */
 
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
 #ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)               \
-   ((Current).first_line   = (Rhs)[1].first_line,      \
-    (Current).first_column = (Rhs)[1].first_column,    \
-    (Current).last_line    = (Rhs)[N].last_line,       \
-    (Current).last_column  = (Rhs)[N].last_column)
+# define YYLLOC_DEFAULT(Current, Rhs, N)                               \
+    do                                                                 \
+      if (N)                                                           \
+       {                                                               \
+         (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
+         (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
+         (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
+         (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
+       }                                                               \
+      else                                                             \
+       {                                                               \
+         (Current).first_line   = (Current).last_line   =              \
+           YYRHSLOC (Rhs, 0).last_line;                                \
+         (Current).first_column = (Current).last_column =              \
+           YYRHSLOC (Rhs, 0).last_column;                              \
+       }                                                               \
+    while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)                 \
+     fprintf (File, "%d.%d-%d.%d",                     \
+              (Loc).first_line, (Loc).first_column,    \
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
 #endif
 
+
 /* YYLEX -- calling `yylex' with the right arguments.  */
 
 #ifdef YYLEX_PARAM
@@ -696,19 +729,13 @@ do {                                              \
     YYFPRINTF Args;                            \
 } while (0)
 
-# define YYDSYMPRINT(Args)                     \
-do {                                           \
-  if (yydebug)                                 \
-    yysymprint Args;                           \
-} while (0)
-
-# define YYDSYMPRINTF(Title, Token, Value, Location)           \
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)         \
 do {                                                           \
   if (yydebug)                                                 \
     {                                                          \
       YYFPRINTF (stderr, "%s ", Title);                                \
       yysymprint (stderr,                                      \
-                  Token, Value, Location);     \
+                  Type, Value, Location);      \
       YYFPRINTF (stderr, "\n");                                        \
     }                                                          \
 } while (0)
@@ -775,8 +802,7 @@ do {                                        \
 int yydebug;
 #else /* !YYDEBUG */
 # define YYDPRINTF(Args)
-# define YYDSYMPRINT(Args)
-# define YYDSYMPRINTF(Title, Token, Value, Location)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
@@ -794,10 +820,6 @@ int yydebug;
    SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
    evaluated with infinite-precision integer arithmetic.  */
 
-#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
-# undef YYMAXDEPTH
-#endif
-
 #ifndef YYMAXDEPTH
 # define YYMAXDEPTH 10000
 #endif
@@ -881,15 +903,17 @@ yysymprint (yyoutput, yytype, yyvaluep, yylocationp)
   (void) yylocationp;
 
   if (yytype < YYNTOKENS)
-    {
-      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-# ifdef YYPRINT
-      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# endif
-    }
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
   else
     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
 
+  YY_LOCATION_PRINT (yyoutput, *yylocationp);
+  fprintf (yyoutput, ": ");
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
   switch (yytype)
     {
       default:
@@ -905,10 +929,11 @@ yysymprint (yyoutput, yytype, yyvaluep, yylocationp)
 
 #if defined (__STDC__) || defined (__cplusplus)
 static void
-yydestruct (int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
 #else
 static void
-yydestruct (yytype, yyvaluep, yylocationp)
+yydestruct (yymsg, yytype, yyvaluep, yylocationp)
+    const char *yymsg;
     int yytype;
     YYSTYPE *yyvaluep;
     YYLTYPE *yylocationp;
@@ -918,6 +943,10 @@ yydestruct (yytype, yyvaluep, yylocationp)
   (void) yyvaluep;
   (void) yylocationp;
 
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
   switch (yytype)
     {
 
@@ -970,15 +999,15 @@ yyparse ()
 #endif
 #endif
 {
-  /* The lookahead symbol.  */
+  /* The look-ahead symbol.  */
 int yychar;
 
-/* The semantic value of the lookahead symbol.  */
+/* The semantic value of the look-ahead symbol.  */
 YYSTYPE yylval;
 
 /* Number of syntax errors so far.  */
 int yynerrs;
-/* Location data for the lookahead symbol.  */
+/* Location data for the look-ahead symbol.  */
 YYLTYPE yylloc;
 
   register int yystate;
@@ -986,7 +1015,7 @@ YYLTYPE yylloc;
   int yyresult;
   /* Number of tokens to shift before error messages enabled.  */
   int yyerrstatus;
-  /* Lookahead token as an internal (translated) token number.  */
+  /* Look-ahead token as an internal (translated) token number.  */
   int yytoken = 0;
 
   /* Three stacks and their tools:
@@ -1011,7 +1040,8 @@ YYLTYPE yylloc;
   YYLTYPE yylsa[YYINITDEPTH];
   YYLTYPE *yyls = yylsa;
   YYLTYPE *yylsp;
-  YYLTYPE *yylerrsp;
+  /* The locations where the error started and ended. */
+  YYLTYPE yyerror_range[2];
 
 #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
 
@@ -1041,6 +1071,15 @@ YYLTYPE yylloc;
   yyssp = yyss;
   yyvsp = yyvs;
   yylsp = yyls;
+#if YYLTYPE_IS_TRIVIAL
+  /* Initialize the default location before parsing starts.  */
+  yylloc.first_line   = yylloc.last_line   = 1;
+  yylloc.first_column = yylloc.last_column = 0;
+#endif
+
+
+  yyvsp[0] = yylval;
+    yylsp[0] = yylloc;
 
   goto yysetstate;
 
@@ -1131,18 +1170,18 @@ YYLTYPE yylloc;
 yybackup:
 
 /* Do appropriate processing given the current state.  */
-/* Read a lookahead token if we need one and don't already have one.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
 /* yyresume: */
 
-  /* First try to decide what to do without reference to lookahead token.  */
+  /* First try to decide what to do without reference to look-ahead token.  */
 
   yyn = yypact[yystate];
   if (yyn == YYPACT_NINF)
     goto yydefault;
 
-  /* Not known => get a lookahead token if don't already have one.  */
+  /* Not known => get a look-ahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
@@ -1157,7 +1196,7 @@ yybackup:
   else
     {
       yytoken = YYTRANSLATE (yychar);
-      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
     }
 
   /* If the proper action on seeing token YYTOKEN is to reduce or to
@@ -1177,8 +1216,8 @@ yybackup:
   if (yyn == YYFINAL)
     YYACCEPT;
 
-  /* Shift the lookahead token.  */
-  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 
   /* Discard the token being shifted unless it is eof.  */
   if (yychar != YYEOF)
@@ -1229,158 +1268,180 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 160 "ast_expr2.y"
+#line 165 "ast_expr2.y"
     { ((struct parse_io *)parseio)->val = (struct val *)calloc(sizeof(struct val),1);
-              ((struct parse_io *)parseio)->val->type = yyval.val->type;
-              if( yyval.val->type == AST_EXPR_integer )
-               ((struct parse_io *)parseio)->val->u.i = yyval.val->u.i;
+              ((struct parse_io *)parseio)->val->type = (yyvsp[0].val)->type;
+              if( (yyvsp[0].val)->type == AST_EXPR_integer )
+                                 ((struct parse_io *)parseio)->val->u.i = (yyvsp[0].val)->u.i;
               else
-                ((struct parse_io *)parseio)->val->u.s = yyval.val->u.s; ;}
+                                 ((struct parse_io *)parseio)->val->u.s = (yyvsp[0].val)->u.s; 
+                         free((yyvsp[0].val));
+                       ;}
     break;
 
   case 3:
-#line 168 "ast_expr2.y"
-    { yyval.val= yyvsp[0].val;;}
+#line 175 "ast_expr2.y"
+    { (yyval.val)= (yyvsp[0].val);;}
     break;
 
   case 4:
-#line 169 "ast_expr2.y"
-    { yyval.val = yyvsp[-1].val; 
-                              yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                  yyloc.first_line=0; yyloc.last_line=0;;}
+#line 176 "ast_expr2.y"
+    { (yyval.val) = (yyvsp[-1].val); 
+                              (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                  (yyloc).first_line=0; (yyloc).last_line=0;
+                                                       DESTROY((yyvsp[-2].val)); DESTROY((yyvsp[0].val)); ;}
     break;
 
   case 5:
-#line 172 "ast_expr2.y"
-    { yyval.val = op_or (yyvsp[-2].val, yyvsp[0].val);
-                         yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                yyloc.first_line=0; yyloc.last_line=0;;}
+#line 180 "ast_expr2.y"
+    { (yyval.val) = op_or ((yyvsp[-2].val), (yyvsp[0].val));
+                                               DESTROY((yyvsp[-1].val));       
+                         (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 6:
-#line 175 "ast_expr2.y"
-    { yyval.val = op_and (yyvsp[-2].val, yyvsp[0].val); 
-                             yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                          yyloc.first_line=0; yyloc.last_line=0;;}
+#line 184 "ast_expr2.y"
+    { (yyval.val) = op_and ((yyvsp[-2].val), (yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-1].val));       
+                             (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                          (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 7:
-#line 178 "ast_expr2.y"
-    { yyval.val = op_eq (yyvsp[-2].val, yyvsp[0].val);
-                            yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column;
-                                                yyloc.first_line=0; yyloc.last_line=0;;}
+#line 188 "ast_expr2.y"
+    { (yyval.val) = op_eq ((yyvsp[-2].val), (yyvsp[0].val));
+                                               DESTROY((yyvsp[-1].val));       
+                            (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column;
+                                                (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 8:
-#line 181 "ast_expr2.y"
-    { yyval.val = op_gt (yyvsp[-2].val, yyvsp[0].val);
-                         yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column;
-                                                yyloc.first_line=0; yyloc.last_line=0;;}
+#line 192 "ast_expr2.y"
+    { (yyval.val) = op_gt ((yyvsp[-2].val), (yyvsp[0].val));
+                                               DESTROY((yyvsp[-1].val));       
+                         (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column;
+                                                (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 9:
-#line 184 "ast_expr2.y"
-    { yyval.val = op_lt (yyvsp[-2].val, yyvsp[0].val); 
-                            yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                yyloc.first_line=0; yyloc.last_line=0;;}
+#line 196 "ast_expr2.y"
+    { (yyval.val) = op_lt ((yyvsp[-2].val), (yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-1].val));       
+                            (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 10:
-#line 187 "ast_expr2.y"
-    { yyval.val = op_ge (yyvsp[-2].val, yyvsp[0].val); 
-                             yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                 yyloc.first_line=0; yyloc.last_line=0;;}
+#line 200 "ast_expr2.y"
+    { (yyval.val) = op_ge ((yyvsp[-2].val), (yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-1].val));       
+                             (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                 (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 11:
-#line 190 "ast_expr2.y"
-    { yyval.val = op_le (yyvsp[-2].val, yyvsp[0].val); 
-                             yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                 yyloc.first_line=0; yyloc.last_line=0;;}
+#line 204 "ast_expr2.y"
+    { (yyval.val) = op_le ((yyvsp[-2].val), (yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-1].val));       
+                             (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                 (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 12:
-#line 193 "ast_expr2.y"
-    { yyval.val = op_ne (yyvsp[-2].val, yyvsp[0].val); 
-                             yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                 yyloc.first_line=0; yyloc.last_line=0;;}
+#line 208 "ast_expr2.y"
+    { (yyval.val) = op_ne ((yyvsp[-2].val), (yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-1].val));       
+                             (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                 (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 13:
-#line 196 "ast_expr2.y"
-    { yyval.val = op_plus (yyvsp[-2].val, yyvsp[0].val); 
-                              yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                  yyloc.first_line=0; yyloc.last_line=0;;}
+#line 212 "ast_expr2.y"
+    { (yyval.val) = op_plus ((yyvsp[-2].val), (yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-1].val));       
+                              (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                  (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 14:
-#line 199 "ast_expr2.y"
-    { yyval.val = op_minus (yyvsp[-2].val, yyvsp[0].val); 
-                               yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                       yyloc.first_line=0; yyloc.last_line=0;;}
+#line 216 "ast_expr2.y"
+    { (yyval.val) = op_minus ((yyvsp[-2].val), (yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-1].val));       
+                               (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                       (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 15:
-#line 202 "ast_expr2.y"
-    { yyval.val = op_negate (yyvsp[0].val); 
-                               yyloc.first_column = yylsp[-1].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                       yyloc.first_line=0; yyloc.last_line=0;;}
+#line 220 "ast_expr2.y"
+    { (yyval.val) = op_negate ((yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-1].val));       
+                               (yyloc).first_column = (yylsp[-1]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                       (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 16:
-#line 205 "ast_expr2.y"
-    { yyval.val = op_compl (yyvsp[0].val); 
-                               yyloc.first_column = yylsp[-1].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                       yyloc.first_line=0; yyloc.last_line=0;;}
+#line 224 "ast_expr2.y"
+    { (yyval.val) = op_compl ((yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-1].val));       
+                               (yyloc).first_column = (yylsp[-1]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                       (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 17:
-#line 208 "ast_expr2.y"
-    { yyval.val = op_times (yyvsp[-2].val, yyvsp[0].val); 
-                              yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                  yyloc.first_line=0; yyloc.last_line=0;;}
+#line 228 "ast_expr2.y"
+    { (yyval.val) = op_times ((yyvsp[-2].val), (yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-1].val));       
+                              (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                  (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 18:
-#line 211 "ast_expr2.y"
-    { yyval.val = op_div (yyvsp[-2].val, yyvsp[0].val); 
-                             yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                 yyloc.first_line=0; yyloc.last_line=0;;}
+#line 232 "ast_expr2.y"
+    { (yyval.val) = op_div ((yyvsp[-2].val), (yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-1].val));       
+                             (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                 (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 19:
-#line 214 "ast_expr2.y"
-    { yyval.val = op_rem (yyvsp[-2].val, yyvsp[0].val); 
-                             yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                 yyloc.first_line=0; yyloc.last_line=0;;}
+#line 236 "ast_expr2.y"
+    { (yyval.val) = op_rem ((yyvsp[-2].val), (yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-1].val));       
+                             (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                 (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 20:
-#line 217 "ast_expr2.y"
-    { yyval.val = op_colon (yyvsp[-2].val, yyvsp[0].val); 
-                               yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                       yyloc.first_line=0; yyloc.last_line=0;;}
+#line 240 "ast_expr2.y"
+    { (yyval.val) = op_colon ((yyvsp[-2].val), (yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-1].val));       
+                               (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                       (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 21:
-#line 220 "ast_expr2.y"
-    { yyval.val = op_eqtilde (yyvsp[-2].val, yyvsp[0].val); 
-                               yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                                                       yyloc.first_line=0; yyloc.last_line=0;;}
+#line 244 "ast_expr2.y"
+    { (yyval.val) = op_eqtilde ((yyvsp[-2].val), (yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-1].val));       
+                               (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                                                       (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 22:
-#line 223 "ast_expr2.y"
-    { yyval.val = op_cond (yyvsp[-4].val, yyvsp[-2].val, yyvsp[0].val); 
-                               yyloc.first_column = yylsp[-4].first_column; yyloc.last_column = yylsp[-2].last_column; 
-                                                       yyloc.first_line=0; yyloc.last_line=0;;}
+#line 248 "ast_expr2.y"
+    { (yyval.val) = op_cond ((yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[0].val)); 
+                                               DESTROY((yyvsp[-3].val));       
+                                               DESTROY((yyvsp[-1].val));       
+                               (yyloc).first_column = (yylsp[-4]).first_column; (yyloc).last_column = (yylsp[-2]).last_column; 
+                                                       (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
 
     }
 
-/* Line 1010 of yacc.c.  */
-#line 1384 "ast_expr2.c"
+/* Line 1037 of yacc.c.  */
+#line 1445 "ast_expr2.c"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -1476,11 +1537,11 @@ yyerrlab:
        yyerror ("syntax error");
     }
 
-  yylerrsp = yylsp;
+  yyerror_range[0] = yylloc;
 
   if (yyerrstatus == 3)
     {
-      /* If just tried and failed to reuse lookahead token after an
+      /* If just tried and failed to reuse look-ahead token after an
         error, discard it.  */
 
       if (yychar <= YYEOF)
@@ -1490,23 +1551,22 @@ yyerrlab:
          if (yychar == YYEOF)
             for (;;)
               {
+                 yyerror_range[0] = *yylsp;
                 YYPOPSTACK;
                 if (yyssp == yyss)
                   YYABORT;
-                YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
-                yydestruct (yystos[*yyssp], yyvsp, yylsp);
+                yydestruct ("Error: popping",
+                             yystos[*yyssp], yyvsp, yylsp);
               }
         }
       else
        {
-         YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
-         yydestruct (yytoken, &yylval, &yylloc);
+         yydestruct ("Error: discarding", yytoken, &yylval, &yylloc);
          yychar = YYEMPTY;
-         *++yylerrsp = yylloc;
        }
     }
 
-  /* Else will try to reuse lookahead token after shifting the error
+  /* Else will try to reuse look-ahead token after shifting the error
      token.  */
   goto yyerrlab1;
 
@@ -1523,12 +1583,11 @@ yyerrorlab:
      goto yyerrorlab;
 #endif
 
+  yyerror_range[0] = yylsp[1-yylen];
+  yylsp -= yylen;
   yyvsp -= yylen;
   yyssp -= yylen;
   yystate = *yyssp;
-  yylerrsp = yylsp;
-  *++yylerrsp = yyloc;
-  yylsp -= yylen;
   goto yyerrlab1;
 
 
@@ -1556,8 +1615,8 @@ yyerrlab1:
       if (yyssp == yyss)
        YYABORT;
 
-      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
-      yydestruct (yystos[yystate], yyvsp, yylsp);
+      yyerror_range[0] = *yylsp;
+      yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp);
       YYPOPSTACK;
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
@@ -1566,12 +1625,17 @@ yyerrlab1:
   if (yyn == YYFINAL)
     YYACCEPT;
 
-  YYDPRINTF ((stderr, "Shifting error token, "));
-
   *++yyvsp = yylval;
-  YYLLOC_DEFAULT (yyloc, yylsp, yylerrsp - yylsp);
+
+  yyerror_range[1] = yylloc;
+  /* Using YYLLOC is tempting, but would change the location of
+     the look-ahead.  YYLOC is available though. */
+  YYLLOC_DEFAULT (yyloc, yyerror_range - 1, 2);
   *++yylsp = yyloc;
 
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
   yystate = yyn;
   goto yynewstate;
 
@@ -1587,6 +1651,9 @@ yyacceptlab:
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
 yyabortlab:
+  yydestruct ("Error: discarding lookahead",
+              yytoken, &yylval, &yylloc);
+  yychar = YYEMPTY;
   yyresult = 1;
   goto yyreturn;
 
@@ -1609,7 +1676,7 @@ yyreturn:
 }
 
 
-#line 228 "ast_expr2.y"
+#line 255 "ast_expr2.y"
 
 
 static struct val *
@@ -1666,6 +1733,7 @@ free_value (struct val *vp)
        }
        if (vp->type == AST_EXPR_string || vp->type == AST_EXPR_numeric_string)
                free (vp->u.s); 
+       free(vp);
 }
 
 
index e214e83..1afe7d1 100644 (file)
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 1.875d.  */
+/* A Bison parser, made by GNU Bison 2.0.  */
 
 /* Skeleton parser for Yacc-like parsing with Bison,
    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 137 "ast_expr2.y"
+#line 142 "ast_expr2.y"
 typedef union YYSTYPE {
        struct val *val;
 } YYSTYPE;
-/* Line 1285 of yacc.c.  */
+/* Line 1318 of yacc.c.  */
 #line 87 "ast_expr2.h"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
index 71f62ee..3079eb9 100644 (file)
@@ -347,266 +347,266 @@ static yyconst flex_int16_t yy_nxt[][128] =
     },
 
     {
-        3,    4,    4,    4,    4,    4,    4,    4,    4,    5,
-        6,    4,    4,    5,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    5,    7,    8,    9,    9,   10,   11,    9,
-       12,   13,   14,   15,    9,   16,    9,   17,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   19,    9,
-       20,   21,   22,   23,    9,    9,    9,    9,    9,    9,
-
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    4,    9,    4,    9,    9,    4,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,   24,    9,    4,    4
+        7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
+       10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
+        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
+        8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
+       17,   18,   19,   20,   13,   21,   13,   22,   23,   23,
+       23,   23,   23,   23,   23,   23,   23,   23,   24,   13,
+       25,   26,   27,   28,   13,   13,   13,   13,   13,   13,
+
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,    8,   29,    8,    8,    8
     },
 
     {
-        3,    4,    4,    4,    4,    4,    4,    4,    4,    5,
-        6,    4,    4,    5,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    5,    7,    8,    9,    9,   10,   11,    9,
-
-       12,   13,   14,   15,    9,   16,    9,   17,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   19,    9,
-       20,   21,   22,   23,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    4,    9,    4,    9,    9,    4,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,   24,    9,    4,    4
+        7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
+       10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
+        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
+        8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
+
+       17,   18,   19,   20,   13,   21,   13,   22,   23,   23,
+       23,   23,   23,   23,   23,   23,   23,   23,   24,   13,
+       25,   26,   27,   28,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,    8,   29,    8,    8,    8
     },
 
     {
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3
+        7,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   31,   30,   32,   30,   30
     },
 
     {
-        3,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4
+        7,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   31,   30,   32,   30,   30
     },
 
     {
-        3,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5
+        7,   33,   33,   33,   33,   33,   33,   33,   33,   34,
+       34,   33,   33,   34,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   34,   34,   33,   33,   35,   34,   34,   33,
+       34,   34,   34,   34,   33,   34,   33,   34,   33,   33,
+
+       33,   33,   33,   33,   33,   33,   33,   33,   34,   33,
+       34,   34,   34,   34,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   34,   33,   33,   33
     },
 
     {
-        3,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6
+        7,   33,   33,   33,   33,   33,   33,   33,   33,   34,
+       34,   33,   33,   34,   33,   33,   33,   33,   33,   33,
+
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   34,   34,   33,   33,   35,   34,   34,   33,
+       34,   34,   34,   34,   33,   34,   33,   34,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   34,   33,
+       34,   34,   34,   34,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+
+       33,   33,   33,   33,   34,   33,   33,   33
     },
 
     {
-        3,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
-       -7,   -7,   -7,   25,   -7,   25,   25,   25,   -7,   25,
-       -7,   -7,   -7,   -7,   25,   -7,   25,   -7,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   -7,   25,
-       -7,   26,   -7,   -7,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-
-       25,   -7,   25,   -7,   25,   25,   -7,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   -7,   25,   -7,   -7
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7
     },
 
     {
-        3,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   28,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27
+        7,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8
     },
 
     {
-        3,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+        7,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
 
-       -9,   -9,   -9,   25,   -9,   25,   25,   25,   -9,   25,
-       -9,   -9,   -9,   -9,   25,   -9,   25,   -9,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   -9,   25,
-       -9,   -9,   -9,   -9,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   -9,   25,   -9,   25,   25,   -9,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   -9,   25,   -9,   -9
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9
 
     },
 
     {
-        3,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+        7,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+
       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
-      -10,  -10,  -10,   25,  -10,   25,   25,   25,  -10,   25,
-      -10,  -10,  -10,  -10,   25,  -10,   25,  -10,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,  -10,   25,
-      -10,  -10,  -10,  -10,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,  -10,   25,  -10,   25,   25,  -10,   25,   25,   25,
-
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,  -10,   25,  -10,  -10
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10
     },
 
     {
-        3,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+        7,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
-      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
-      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
-      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
-      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
-
-      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
-      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
-      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
-      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
-      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
-      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11
+      -11,  -11,  -11,   36,  -11,   36,   36,   36,  -11,   36,
+      -11,  -11,  -11,  -11,   36,  -11,   36,  -11,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,  -11,   36,
+      -11,   37,  -11,  -11,   36,   36,   36,   36,   36,   36,
+
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,  -11,   36,  -11,   36,   36,  -11,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,  -11,  -11,  -11,  -11,  -11
     },
 
     {
-        3,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
-      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
-      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
-      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
-
-      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
-      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
-      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
-      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
-      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
-      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
-      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
-      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
-      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12
+        7,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   39,   38,   38,   38,   38,   38,
+
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38
     },
 
     {
-        3,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
+        7,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
 
       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
-      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
-      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
-      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
-      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
-      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
-      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
-      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
-      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
-
-      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
-      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13
+      -13,  -13,  -13,   36,  -13,   36,   36,   36,  -13,   36,
+      -13,  -13,  -13,  -13,   36,  -13,   36,  -13,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,  -13,   36,
+      -13,  -13,  -13,  -13,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,  -13,   36,  -13,   36,   36,  -13,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,  -13,  -13,  -13,  -13,  -13
     },
 
     {
-        3,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
-      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
-      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
-      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
-      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
-      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
-      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
-      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
-
-      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
+        7,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
-      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
-      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14
+      -14,  -14,  -14,   36,  -14,   36,   36,   36,  -14,   36,
+      -14,  -14,  -14,  -14,   36,  -14,   36,  -14,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,  -14,   36,
+      -14,  -14,  -14,  -14,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,  -14,   36,  -14,   36,   36,  -14,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   40,  -14,  -14,  -14,  -14
     },
 
     {
-        3,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
-      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
-      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
-      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
-      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
-
-      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
-      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+        7,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
-      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
-      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
-      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
-      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15
+      -15,  -15,  -15,   36,  -15,   36,   36,   36,  -15,   36,
+      -15,  -15,  -15,  -15,   36,  -15,   36,  -15,   36,   36,
+
+       36,   36,   36,   36,   36,   36,   36,   36,  -15,   36,
+      -15,  -15,  -15,  -15,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,  -15,   36,  -15,   36,   36,  -15,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,  -15,  -15,  -15,  -15,  -15
     },
 
     {
-        3,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+        7,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
 
       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
@@ -624,7 +624,7 @@ static yyconst flex_int16_t yy_nxt[][128] =
     },
 
     {
-        3,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+        7,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
@@ -641,30 +641,30 @@ static yyconst flex_int16_t yy_nxt[][128] =
     },
 
     {
-        3,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+        7,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
-      -18,  -18,  -18,   25,  -18,   25,   25,   25,  -18,   25,
-      -18,  -18,  -18,  -18,   25,  -18,   25,  -18,   29,   29,
-       29,   29,   29,   29,   29,   29,   29,   29,  -18,   25,
-
-      -18,  -18,  -18,  -18,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,  -18,   25,  -18,   25,   25,  -18,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,  -18,   25,  -18,  -18
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18
     },
 
     {
-        3,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+        7,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
 
       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
-      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,   30,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
@@ -676,13 +676,13 @@ static yyconst flex_int16_t yy_nxt[][128] =
     },
 
     {
-        3,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+        7,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
-      -20,   31,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
@@ -693,7 +693,7 @@ static yyconst flex_int16_t yy_nxt[][128] =
     },
 
     {
-        3,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+        7,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
@@ -710,14 +710,14 @@ static yyconst flex_int16_t yy_nxt[][128] =
     },
 
     {
-        3,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+        7,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
 
       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
-      -22,   32,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
@@ -727,30 +727,30 @@ static yyconst flex_int16_t yy_nxt[][128] =
     },
 
     {
-        3,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+        7,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
 
       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
-      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
-      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
-      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
-      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
-      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
-      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
-      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
-      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
-
-      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
-      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23
+      -23,  -23,  -23,   36,  -23,   36,   36,   36,  -23,   36,
+      -23,  -23,  -23,  -23,   36,  -23,   36,  -23,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,  -23,   36,
+      -23,  -23,  -23,  -23,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,  -23,   36,  -23,   36,   36,  -23,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,  -23,  -23,  -23,  -23,  -23
     },
 
     {
-        3,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
-      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
+        7,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
+      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,   42,  -24,
       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
 
@@ -762,24 +762,24 @@ static yyconst flex_int16_t yy_nxt[][128] =
     },
 
     {
-        3,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+        7,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,   43,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
-      -25,  -25,  -25,   25,  -25,   25,   25,   25,  -25,   25,
-      -25,  -25,  -25,  -25,   25,  -25,   25,  -25,   25,   25,
-
-       25,   25,   25,   25,   25,   25,   25,   25,  -25,   25,
-      -25,  -25,  -25,  -25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,  -25,   25,  -25,   25,   25,  -25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,  -25,   25,  -25,  -25
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25
     },
 
     {
-        3,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+        7,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
 
       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
@@ -797,24 +797,24 @@ static yyconst flex_int16_t yy_nxt[][128] =
     },
 
     {
-        3,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   28,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   27,   27
+        7,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,   44,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27
     },
 
     {
-        3,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+        7,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
@@ -831,42 +831,42 @@ static yyconst flex_int16_t yy_nxt[][128] =
     },
 
     {
-        3,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+        7,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
 
-      -29,  -29,  -29,   25,  -29,   25,   25,   25,  -29,   25,
-      -29,  -29,  -29,  -29,   25,  -29,   25,  -29,   29,   29,
-       29,   29,   29,   29,   29,   29,   29,   29,  -29,   25,
-      -29,  -29,  -29,  -29,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,  -29,   25,  -29,   25,   25,  -29,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,  -29,   25,  -29,  -29
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29
 
     },
 
     {
-        3,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
-      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
-      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
-      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
-      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
-      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
-      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
-      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
-      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
-      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
-
-      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
-      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
-      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30
+        7,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   46,   45,   47,   45,   45
     },
 
     {
-        3,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+        7,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
@@ -883,7 +883,7 @@ static yyconst flex_int16_t yy_nxt[][128] =
     },
 
     {
-        3,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
+        7,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
@@ -899,6 +899,301 @@ static yyconst flex_int16_t yy_nxt[][128] =
       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32
     },
 
+    {
+        7,   48,   48,   48,   48,   48,   48,   48,   48,  -33,
+
+      -33,   48,   48,  -33,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,  -33,  -33,   48,   48,  -33,  -33,  -33,   48,
+      -33,  -33,  -33,  -33,   48,  -33,   48,  -33,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,  -33,   48,
+      -33,  -33,  -33,  -33,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,  -33,   48,   48,   48
+    },
+
+    {
+        7,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34
+    },
+
+    {
+        7,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,   49,  -35,  -35,  -35,  -35
+    },
+
+    {
+        7,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,   36,  -36,   36,   36,   36,  -36,   36,
+      -36,  -36,  -36,  -36,   36,  -36,   36,  -36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,  -36,   36,
+      -36,  -36,  -36,  -36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,  -36,   36,  -36,   36,   36,  -36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+
+       36,   36,   36,  -36,  -36,  -36,  -36,  -36
+    },
+
+    {
+        7,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37
+    },
+
+    {
+        7,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   39,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38
+    },
+
+    {
+        7,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
+      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39
+
+    },
+
+    {
+        7,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40
+    },
+
+    {
+        7,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
+      -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
+      -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
+      -41,  -41,  -41,   36,  -41,   36,   36,   36,  -41,   36,
+      -41,  -41,  -41,  -41,   36,  -41,   36,  -41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,  -41,   36,
+      -41,  -41,  -41,  -41,   36,   36,   36,   36,   36,   36,
+
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,  -41,   36,  -41,   36,   36,  -41,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,  -41,  -41,  -41,  -41,  -41
+    },
+
+    {
+        7,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
+      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
+      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
+      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
+
+      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
+      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
+      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
+      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
+      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
+      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
+      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
+      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
+      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42
+    },
+
+    {
+        7,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43
+    },
+
+    {
+        7,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44
+    },
+
+    {
+        7,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   46,   45,   47,   45,   45
+    },
+
+    {
+        7,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+
+      -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+
+      -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46
+    },
+
+    {
+        7,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47
+    },
+
+    {
+        7,   48,   48,   48,   48,   48,   48,   48,   48,  -48,
+      -48,   48,   48,  -48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,  -48,  -48,   48,   48,  -48,  -48,  -48,   48,
+      -48,  -48,  -48,  -48,   48,  -48,   48,  -48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,  -48,   48,
+
+      -48,  -48,  -48,  -48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,  -48,   48,   48,   48
+    },
+
+    {
+        7,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49
+
+    },
+
     } ;
 
 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
@@ -911,13 +1206,14 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
  */
 #define YY_DO_BEFORE_ACTION \
        yyg->yytext_ptr = yy_bp; \
-       yyleng = (size_t) (yy_cp - yy_bp); \
+       yyg->yytext_ptr -= yyg->yy_more_len; \
+       yyleng = (size_t) (yy_cp - yyg->yytext_ptr); \
        yyg->yy_hold_char = *yy_cp; \
        *yy_cp = '\0'; \
        yyg->yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 24
-#define YY_END_OF_BUFFER 25
+#define YY_NUM_RULES 30
+#define YY_END_OF_BUFFER 31
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -925,31 +1221,38 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[33] =
+static yyconst flex_int16_t yy_accept[50] =
     {   0,
-        0,    0,   25,   24,   19,   21,   23,   24,   23,   13,
-        2,   17,   18,   11,    9,   10,   12,   22,   15,    5,
-        3,    4,   14,    1,   23,    8,    0,   20,   22,   16,
-        7,    6
+        0,    0,    0,    0,   27,   27,   31,   30,   20,   22,
+       24,   30,   24,   24,   13,    2,   17,   18,   11,    9,
+       10,   12,   23,   15,    5,    3,    4,   14,    1,   30,
+       26,   25,   27,   28,   28,   24,    8,    0,   21,   19,
+       23,   16,    7,    6,    0,   26,   25,   27,   29
     } ;
 
-static yyconst yy_state_type yy_NUL_trans[33] =
+static yyconst yy_state_type yy_NUL_trans[50] =
     {   0,
-        4,    4,    0,    0,    0,    0,    0,   27,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   27,    0,    0,    0,
-        0,    0
+        8,    8,   30,   30,   33,   33,    0,    0,    0,    0,
+        0,   38,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   45,
+        0,    0,   48,    0,    0,    0,    0,   38,    0,    0,
+        0,    0,    0,    0,   45,    0,    0,   48,    0
     } ;
 
 /* The intent behind this definition is that it'll catch
  * any uses of REJECT which flex missed.
  */
 #define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
+#define yymore() (yyg->yy_more_flag = 1)
+#define YY_MORE_ADJ yyg->yy_more_len
 #define YY_RESTORE_YY_MORE_OFFSET
 #line 1 "ast_expr2.fl"
 #line 2 "ast_expr2.fl"
+/*! \file
+ *
+ * \brief Dialplan Expression Parser
+ */
+
 #include <sys/types.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -995,18 +1298,19 @@ struct parse_io
  
 void ast_yyset_column(int column_no, yyscan_t yyscanner);
 int ast_yyget_column(yyscan_t yyscanner);
+static int curlycount = 0;
 
-#line 1000 "ast_expr2f.c"
+#line 1304 "ast_expr2f.c"
 
 #define INITIAL 0
+#define var 1
+#define trail 2
 
-#ifndef YY_NO_UNISTD_H
 /* Special case for "unistd.h", since it is non-ANSI. We include it way
  * down here because we want the user's section 1 to have been scanned first.
  * The user has a chance to override it with an option.
  */
 #include <unistd.h>
-#endif
 
 #ifndef YY_EXTRA_TYPE
 #define YY_EXTRA_TYPE void *
@@ -1213,10 +1517,10 @@ YY_DECL
        register int yy_act;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-#line 58 "ast_expr2.fl"
+#line 64 "ast_expr2.fl"
 
 
-#line 1220 "ast_expr2f.c"
+#line 1524 "ast_expr2f.c"
 
     yylval = yylval_param;
 
@@ -1250,6 +1554,12 @@ YY_DECL
 
        while ( 1 )             /* loops until end-of-file is reached */
                {
+               yyg->yy_more_len = 0;
+               if ( yyg->yy_more_flag )
+                       {
+                       yyg->yy_more_len = yyg->yy_c_buf_p - yyg->yytext_ptr;
+                       yyg->yy_more_flag = 0;
+                       }
                yy_cp = yyg->yy_c_buf_p;
 
                /* Support of yytext. */
@@ -1293,130 +1603,169 @@ do_action:    /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 60 "ast_expr2.fl"
+#line 66 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_OR;}
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 61 "ast_expr2.fl"
+#line 67 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_AND;}
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 62 "ast_expr2.fl"
+#line 68 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 63 "ast_expr2.fl"
+#line 69 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_GT;}
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 64 "ast_expr2.fl"
+#line 70 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_LT;}
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 65 "ast_expr2.fl"
+#line 71 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_GE;}
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 66 "ast_expr2.fl"
+#line 72 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_LE;}
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 67 "ast_expr2.fl"
+#line 73 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_NE;}
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 68 "ast_expr2.fl"
+#line 74 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_PLUS;}
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 69 "ast_expr2.fl"
+#line 75 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_MINUS;}
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 70 "ast_expr2.fl"
+#line 76 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_MULT;}
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 71 "ast_expr2.fl"
+#line 77 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_DIV;}
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 72 "ast_expr2.fl"
+#line 78 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_MOD;}
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 73 "ast_expr2.fl"
+#line 79 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_COND;}
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 74 "ast_expr2.fl"
+#line 80 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_COLON;}
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 75 "ast_expr2.fl"
+#line 81 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 76 "ast_expr2.fl"
+#line 82 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_LP;}
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 77 "ast_expr2.fl"
+#line 83 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_RP;}
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 79 "ast_expr2.fl"
-{}
+#line 84 "ast_expr2.fl"
+{/* gather the contents of ${} expressions, with trailing stuff, into a single TOKEN. They are much more complex now than they used to be */
+                       curlycount = 0; BEGIN(var); yymore();}
        YY_BREAK
 case 20:
-/* rule 20 can match eol */
 YY_RULE_SETUP
-#line 80 "ast_expr2.fl"
-{SET_COLUMNS; SET_STRING; return TOKEN;}
+#line 87 "ast_expr2.fl"
+{}
        YY_BREAK
 case 21:
 /* rule 21 can match eol */
 YY_RULE_SETUP
-#line 82 "ast_expr2.fl"
-{/* what to do with eol */}
+#line 88 "ast_expr2.fl"
+{SET_COLUMNS; SET_STRING; return TOKEN;}
        YY_BREAK
 case 22:
+/* rule 22 can match eol */
 YY_RULE_SETUP
-#line 83 "ast_expr2.fl"
+#line 90 "ast_expr2.fl"
+{/* what to do with eol */}
+       YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 91 "ast_expr2.fl"
 {   SET_COLUMNS;  /* the original behavior of the expression parser was to bring in numbers as a numeric string */
                                SET_NUMERIC_STRING;
                                return TOKEN;}
        YY_BREAK
-case 23:
+case 24:
 YY_RULE_SETUP
-#line 86 "ast_expr2.fl"
+#line 94 "ast_expr2.fl"
 {SET_COLUMNS; SET_STRING; return TOKEN;}
        YY_BREAK
-case 24:
+case 25:
+/* rule 25 can match eol */
 YY_RULE_SETUP
-#line 88 "ast_expr2.fl"
+#line 96 "ast_expr2.fl"
+{curlycount--; if(curlycount < 0){ BEGIN(trail);  yymore();} else {  yymore();}}
+       YY_BREAK
+case 26:
+/* rule 26 can match eol */
+YY_RULE_SETUP
+#line 97 "ast_expr2.fl"
+{curlycount++; yymore();  }
+       YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 98 "ast_expr2.fl"
+{BEGIN(0); SET_COLUMNS; SET_STRING; return TOKEN;}
+       YY_BREAK
+case 28:
+/* rule 28 can match eol */
+YY_RULE_SETUP
+#line 99 "ast_expr2.fl"
+{char c = yytext[yyleng-1]; BEGIN(0); unput(c); SET_COLUMNS; SET_STRING; return TOKEN;}
+       YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 100 "ast_expr2.fl"
+{curlycount = 0; BEGIN(var); yymore();  }
+       YY_BREAK
+case YY_STATE_EOF(trail):
+#line 101 "ast_expr2.fl"
+{BEGIN(0); SET_COLUMNS; SET_STRING; return TOKEN; /* actually, if an expr is only a variable ref, this could happen a LOT */}
+       YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 103 "ast_expr2.fl"
 ECHO;
        YY_BREAK
-#line 1419 "ast_expr2f.c"
+#line 1767 "ast_expr2f.c"
 case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(var):
        yyterminate();
 
        case YY_END_OF_BUFFER:
@@ -2156,16 +2505,16 @@ YY_BUFFER_STATE ast_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yys
 
 /** Setup the input buffer state to scan a string. The next call to ast_yylex() will
  * scan from a @e copy of @a str.
- * @param yy_str a NUL-terminated string to scan
+ * @param str a NUL-terminated string to scan
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  * @note If you want to scan bytes that may contain NUL values, then use
  *       ast_yy_scan_bytes() instead.
  */
-YY_BUFFER_STATE ast_yy_scan_string (yyconst char * yy_str , yyscan_t yyscanner)
+YY_BUFFER_STATE ast_yy_scan_string (yyconst char * str , yyscan_t yyscanner)
 {
     
-       return ast_yy_scan_bytes(yy_str,strlen(yy_str) ,yyscanner);
+       return ast_yy_scan_bytes(str,strlen(str) ,yyscanner);
 }
 
 /** Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will
@@ -2332,7 +2681,7 @@ void ast_yyset_lineno (int  line_number , yyscan_t yyscanner)
 }
 
 /** Set the current column.
- * @param column_no
+ * @param line_number
  * @param yyscanner The scanner object.
  */
 void ast_yyset_column (int  column_no , yyscan_t yyscanner)
@@ -2547,7 +2896,7 @@ void ast_yyfree (void * ptr , yyscan_t yyscanner)
 #undef YY_DECL_IS_OURS
 #undef YY_DECL
 #endif
-#line 88 "ast_expr2.fl"
+#line 103 "ast_expr2.fl"
 
 
 
@@ -2594,6 +2943,7 @@ int ast_expr(char *expr, char *buf, int length)
                        ast_copy_string(buf, io.val->u.s, length);
 #endif /* STANDALONE */
                        return_value = strlen(buf);
+                       free(io.val->u.s);
                }
                free(io.val);
        }
@@ -2608,15 +2958,6 @@ int ast_yyerror (const char *s,  yyltype *loc, struct parse_io *parseio )
        int i=0;
        spacebuf[0] = 0;
        
-#ifdef WHEN_LOC_MEANS_SOMETHING
-       if( loc->first_column > 7990 ) /* if things get out of whack, why crash? */
-               loc->first_column = 7990;
-       if( loc->last_column > 7990 )
-               loc->last_column = 7990;
-       for(i=0;i<loc->first_column;i++) spacebuf[i] = ' ';
-       for(   ;i<loc->last_column;i++) spacebuf[i] = '^';
-       spacebuf[i] = 0;
-#endif
        for(i=0;i< (int)(yytext - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf);i++) spacebuf2[i] = ' ';  /* uh... assuming yyg is defined, then I can use the yycolumn macro,
                                                                                                        which is the same thing as... get this:
                                                                                                        yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]->yy_bs_column