36 #line 37 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:404 
   39 #  if defined __cplusplus && 201103L <= __cplusplus 
   40 #   define YY_NULLPTR nullptr 
   50 #line 51 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:412 
   52 #line 63 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:413 
   60 #define TRY(Loc, Stm)                           \ 
   65   catch (std::exception& e)                     \ 
   67       error(Loc, e.what());                     \ 
  103 #line 104 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:413 
  107 # if defined YYENABLE_NLS && YYENABLE_NLS 
  109 #   include <libintl.h>  
  110 #   define YY_(msgid) dgettext ("bison-runtime", msgid) 
  114 #  define YY_(msgid) msgid 
  118 #define YYRHSLOC(Rhs, K) ((Rhs)[K].location) 
  123 # ifndef YYLLOC_DEFAULT 
  124 #  define YYLLOC_DEFAULT(Current, Rhs, N)                               \ 
  128           (Current).begin  = YYRHSLOC (Rhs, 1).begin;                   \ 
  129           (Current).end    = YYRHSLOC (Rhs, N).end;                     \ 
  133           (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end;      \ 
  140 #define YYUSE(E) ((void) (E)) 
  146 # define YYCDEBUG if (yydebug_) (*yycdebug_) 
  148 # define YY_SYMBOL_PRINT(Title, Symbol)         \ 
  152       *yycdebug_ << Title << ' ';               \ 
  153       yy_print_ (*yycdebug_, Symbol);           \ 
  154       *yycdebug_ << std::endl;                  \ 
  158 # define YY_REDUCE_PRINT(Rule)          \ 
  161       yy_reduce_print_ (Rule);          \ 
  164 # define YY_STACK_PRINT()               \ 
  172 # define YYCDEBUG if (false) std::cerr 
  173 # define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE(Symbol) 
  174 # define YY_REDUCE_PRINT(Rule)           static_cast<void>(0) 
  175 # define YY_STACK_PRINT()                static_cast<void>(0) 
  179 #define yyerrok         (yyerrstatus_ = 0) 
  180 #define yyclearin       (yyla.clear ()) 
  182 #define YYACCEPT        goto yyacceptlab 
  183 #define YYABORT         goto yyabortlab 
  184 #define YYERROR         goto yyerrorlab 
  185 #define YYRECOVERING()  (!!yyerrstatus_) 
  187 #line 11 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:479 
  188 namespace vcsn { 
namespace rat {
 
  189 #line 190 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:479 
  201         std::string yyr = 
"";
 
  202         char const *yyp = yystr;
 
  209               goto do_not_strip_quotes;
 
  213                 goto do_not_strip_quotes;
 
  222       do_not_strip_quotes: ;
 
  234       yycdebug_ (&
std::cerr),
 
  236       driver_ (driver__yyarg)
 
  252     : state (empty_state)
 
  257     : state (other.state)
 
  284     if (state == empty_state)
 
  299       switch (that.type_get ())
 
  365         value.copy< std::string > (that.
value);
 
  369         value.copy< std::vector<vcsn::dyn::expression> > (that.
value);
 
  381   template <
typename Base>
 
  391   template <
typename Base>
 
  396     std::ostream& yyoutput = yyo;
 
  403     yyo << (yytype < 
yyntokens_ ? 
"token" : 
"nterm")
 
  410 #line 121 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:636 
  411         { yyo << 
'"' << yysym.
value.template as< std::string > () << 
'"'; }
 
  412 #line 413 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:636 
  417 #line 128 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:636 
  418         { yyo << 
'<' << yysym.
value.template as< std::string > () << 
'>'; }
 
  419 #line 420 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:636 
  446 #line 130 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:636 
  449   yyo << (yysym.
value.template as< braced_expression > ().lparen ? 
" (lpar, " : 
" (no lpar, ");
 
  450   yyo << (yysym.
value.template as< braced_expression > ().rparen ? 
"rpar)" : 
"no rpar)");
 
  452 #line 453 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:636 
  457 #line 136 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:636 
  459   const char* sep = 
"[[";
 
  460   for (
auto e: yysym.
value.template as< std::vector<vcsn::dyn::expression> > ())
 
  467 #line 468 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:636 
  472 #line 130 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:636 
  475   yyo << (yysym.
value.template as< braced_expression > ().lparen ? 
" (lpar, " : 
" (no lpar, ");
 
  476   yyo << (yysym.
value.template as< braced_expression > ().rparen ? 
"rpar)" : 
"no rpar)");
 
  478 #line 479 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:636 
  483 #line 146 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:636 
  485 #line 486 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:636 
  490 #line 123 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:636 
  493   for (
auto c: yysym.
value.template as< class_t > ()) yyo << c.first << 
"-" << c.second;
 
  496 #line 497 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:636 
  590     int yyerrstatus_ = 0;
 
  605     YYCDEBUG << 
"Starting parse" << std::endl;
 
  609     #line 117 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:741 
  614 #line 615 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:741 
  648             yyla.
move (yylookahead);
 
  660     yyn += yyla.type_get ();
 
  679     yypush_ (
"Shifting", yyn, yyla);
 
  729         yylhs.
value.
build< std::vector<vcsn::dyn::expression> > ();
 
  750 #line 206 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  754     if (dim_exp != dim_ctx)
 
  766 #line 767 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  770 #line 224 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  772 #line 773 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  776 #line 225 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  778 #line 779 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  782 #line 226 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  784 #line 785 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  788 #line 230 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  790 #line 791 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  794 #line 231 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  796 #line 797 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  800 #line 232 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  802 #line 803 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  806 #line 238 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  808 #line 809 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  812 #line 239 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  815     if (yystack_[0].value.as< std::vector<vcsn::dyn::expression> > ().size() == 1)
 
  817     else if (yystack_[0].value.as< std::vector<vcsn::dyn::expression> > ().size() == 
driver_.
tape_ctx_.size())
 
  822                          + 
std::to_string(yystack_[0].value.as< std::vector<vcsn::dyn::expression> > ().size())
 
  826 #line 827 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  830 #line 256 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  834 #line 835 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  838 #line 259 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  840 #line 841 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  844 #line 260 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  846     yylhs.
value.
as< std::vector<vcsn::dyn::expression> > () = yystack_[3].value.as< std::vector<vcsn::dyn::expression> > ();
 
  849 #line 850 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  853 #line 267 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  855 #line 856 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  859 #line 268 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  861 #line 862 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  865 #line 269 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  867 #line 868 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  871 #line 270 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  873 #line 874 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  877 #line 271 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  879 #line 880 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  883 #line 272 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  885 #line 886 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  889 #line 273 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  891 #line 892 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  895 #line 274 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  898 #line 899 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  902 #line 276 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  904 #line 905 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  908 #line 277 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  910 #line 911 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  914 #line 279 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  926 #line 927 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  930 #line 290 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  934                                         std::get<0>(yystack_[0].value.as< 
irange_type > ()), std::get<1>(yystack_[0].value.as< 
irange_type > ()))); }
 
  935 #line 936 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  939 #line 294 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  941 #line 942 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  945 #line 295 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  947 #line 948 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  951 #line 296 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  953 #line 954 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  957 #line 297 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  959 #line 960 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  963 #line 298 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  965 #line 966 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  969 #line 299 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  971 #line 972 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  975 #line 300 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  977 #line 978 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  981 #line 301 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  983 #line 984 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  987 #line 302 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  989 #line 990 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  993 #line 303 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
  995 #line 996 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
  999 #line 307 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
 1001 #line 1002 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
 1005 #line 308 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
 1007 #line 1008 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
 1011 #line 312 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
 1013 #line 1014 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
 1017 #line 313 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
 1018     { yylhs.
value.
as< 
class_t > () = yystack_[1].value.as< 
class_t > (); yylhs.
value.
as< 
class_t > ().emplace(yystack_[0].value.as< std::string > (), yystack_[0].value.as< std::string > ()); }
 
 1019 #line 1020 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
 1023 #line 314 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859 
 1024     { yylhs.
value.
as< 
class_t > () = yystack_[3].value.as< 
class_t > (); yylhs.
value.
as< 
class_t > ().emplace(yystack_[2].value.as< std::string > (), yystack_[0].value.as< std::string > ()); }
 
 1025 #line 1026 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
 1029 #line 1030 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859 
 1062     if (yyerrstatus_ == 3)
 
 1068         if (yyla.type_get () == 
yyeof_)
 
 1070         else if (!yyla.
empty ())
 
 1107           yyn = 
yypact_[yystack_[0].state];
 
 1120           if (yystack_.size () == 1)
 
 1133       error_token.
state = yyn;
 
 1134       yypush_ (
"Shifting", error_token);
 
 1150       yy_destroy_ (
"Cleanup: discarding lookahead", yyla);
 
 1155     while (1 < yystack_.size ())
 
 1165         YYCDEBUG << 
"Exception caught: cleaning lookahead and stack" 
 1195     enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
 
 1197     char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
 
 1226         int yytoken = yyla.type_get ();
 
 1227         yyarg[yycount++] = 
yytname_[yytoken];
 
 1234             int yyxbegin = yyn < 0 ? -yyn : 0;
 
 1236             int yychecklim = 
yylast_ - yyn + 1;
 
 1238             for (
int yyx = yyxbegin; yyx < yyxend; ++yyx)
 
 1242                   if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
 
 1256 #define YYCASE_(N, S)                         \ 
 1261         YYCASE_(1, 
YY_(
"syntax error, unexpected %s"));
 
 1262         YYCASE_(2, 
YY_(
"syntax error, unexpected %s, expecting %s"));
 
 1263         YYCASE_(3, 
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
 
 1264         YYCASE_(4, 
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
 
 1265         YYCASE_(5, 
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
 
 1272     for (
char const* yyp = yyformat; *yyp; ++yyp)
 
 1273       if (yyp[0] == 
'%' && yyp[1] == 
's' && yyi < yycount)
 
 1291      -26,     2,    14,   -26,    -6,   -26,   -26,   -26,   -26,   -26,
 
 1292      -26,    -6,     4,   -26,   -26,   -26,   -26,   -25,    -5,    52,
 
 1293       -6,   -26,    13,   173,   -26,   -15,    40,   -26,   -26,    -6,
 
 1294       -6,    -6,    -6,   -26,    -6,    -6,    -6,    -6,   -26,   -26,
 
 1295      -26,   192,   149,   100,    43,   -26,    17,   -26,    -6,   130,
 
 1296      130,   154,   130,   192,    79,   106,   154,   -26,     7,    52,
 
 1303        9,     0,     3,     6,     0,     1,     9,     4,     9,     5,
 
 1304        2,     0,    38,     9,    31,    30,    32,    36,    10,    11,
 
 1305        0,     8,     7,    27,    38,     0,     0,    37,    12,     0,
 
 1306        0,     0,     0,    26,     0,     0,     0,     0,    28,    29,
 
 1307       25,    24,    23,    22,     0,    33,    39,    35,     0,    15,
 
 1308       17,    19,    16,    14,    18,    21,    20,    34,     0,    13,
 
 1315      -26,   -26,   -26,    -3,   -26,   -26,   -26,   -26,    -4,    -2,
 
 1322       -1,     1,    10,     2,     3,     4,    18,    48,    41,    20,
 
 1329       19,    11,     5,    21,    17,    22,    45,    23,    12,    13,
 
 1330       26,    14,    24,    46,    28,    27,    43,    42,     6,     6,
 
 1331       15,    42,    16,    17,     7,    49,    50,    51,    52,    58,
 
 1332       53,    54,    55,    56,     8,    60,     9,     0,    43,    42,
 
 1333       44,    42,     0,     0,    59,     6,     0,    42,    42,    42,
 
 1334       42,    42,    42,    42,    42,    29,    30,    42,    31,    11,
 
 1335        8,    32,    47,    33,    57,    34,    12,    13,    35,    14,
 
 1336       36,    46,     0,     0,     0,    37,    38,    39,    15,    40,
 
 1337       16,    17,    29,    30,     0,    31,    11,     0,    32,     0,
 
 1338       33,     0,    34,    12,    13,     0,    14,    36,     0,     0,
 
 1339        0,     0,    37,    38,    39,    15,    40,    16,    17,    29,
 
 1340       30,    33,    31,    11,     0,    32,     0,    33,     0,    34,
 
 1341       12,    13,     0,    14,    38,    39,     0,    40,     0,    37,
 
 1342       38,    39,    15,    40,    16,    17,    31,    11,     0,     0,
 
 1343        0,    33,     0,    34,    12,    13,     0,    14,     0,     0,
 
 1344        0,     0,     0,    37,    38,    39,    15,    40,    16,    17,
 
 1345       31,    11,     0,    12,    13,    33,    14,    34,    12,    13,
 
 1346        0,    14,     0,     0,     0,    15,     0,    16,    38,    39,
 
 1347       15,    40,    16,    17,    33,     0,    34,    12,    13,     0,
 
 1348       14,     0,     0,     0,     0,     0,     0,    38,    39,    15,
 
 1349       40,    16,    17,    33,     0,     0,    12,    13,     0,    14,
 
 1350        0,     0,     0,     0,     0,     0,    38,    39,    15,    40,
 
 1357        4,     7,     0,     6,    29,     8,    21,    11,    14,    15,
 
 1358       13,    17,     8,    28,    19,    17,    20,    19,     5,     5,
 
 1359       26,    23,    28,    29,    10,    29,    30,    31,    32,    12,
 
 1360       34,    35,    36,    37,    20,    28,    22,    -1,    42,    41,
 
 1361       24,    43,    -1,    -1,    48,     5,    -1,    49,    50,    51,
 
 1362       52,    53,    54,    55,    56,     3,     4,    59,     6,     7,
 
 1363       20,     9,    22,    11,    21,    13,    14,    15,    16,    17,
 
 1364       18,    28,    -1,    -1,    -1,    23,    24,    25,    26,    27,
 
 1365       28,    29,     3,     4,    -1,     6,     7,    -1,     9,    -1,
 
 1366       11,    -1,    13,    14,    15,    -1,    17,    18,    -1,    -1,
 
 1367       -1,    -1,    23,    24,    25,    26,    27,    28,    29,     3,
 
 1368        4,    11,     6,     7,    -1,     9,    -1,    11,    -1,    13,
 
 1369       14,    15,    -1,    17,    24,    25,    -1,    27,    -1,    23,
 
 1370       24,    25,    26,    27,    28,    29,     6,     7,    -1,    -1,
 
 1371       -1,    11,    -1,    13,    14,    15,    -1,    17,    -1,    -1,
 
 1372       -1,    -1,    -1,    23,    24,    25,    26,    27,    28,    29,
 
 1373        6,     7,    -1,    14,    15,    11,    17,    13,    14,    15,
 
 1374       -1,    17,    -1,    -1,    -1,    26,    -1,    28,    24,    25,
 
 1375       26,    27,    28,    29,    11,    -1,    13,    14,    15,    -1,
 
 1376       17,    -1,    -1,    -1,    -1,    -1,    -1,    24,    25,    26,
 
 1377       27,    28,    29,    11,    -1,    -1,    14,    15,    -1,    17,
 
 1378       -1,    -1,    -1,    -1,    -1,    -1,    24,    25,    26,    27,
 
 1385        0,    34,    36,    37,    38,     0,     5,    10,    20,    22,
 
 1386       35,     7,    14,    15,    17,    26,    28,    29,    39,    41,
 
 1387       42,    36,    36,    41,     8,    43,    36,    42,    19,     3,
 
 1388        4,     6,     9,    11,    13,    16,    18,    23,    24,    25,
 
 1389       27,    41,    42,    41,    43,    21,    28,    22,    40,    41,
 
 1390       41,    41,    41,    41,    41,    41,    41,    21,    12,    41,
 
 1397        0,    33,    34,    35,    35,    35,    36,    36,    36,    38,
 
 1398       37,    39,    40,    39,    41,    41,    41,    41,    41,    41,
 
 1399       41,    41,    41,    41,    41,    41,    41,    41,    41,    41,
 
 1400       41,    41,    41,    41,    41,    41,    42,    42,    43,    43,
 
 1407        0,     2,     2,     0,     1,     1,     1,     3,     3,     0,
 
 1408        2,     1,     0,     4,     3,     3,     3,     3,     3,     3,
 
 1409        3,     3,     2,     2,     2,     2,     2,     2,     2,     2,
 
 1410        1,     1,     1,     3,     4,     3,     1,     2,     0,     2,
 
 1421   "\"end\"", 
"error", 
"$undefined", 
"\"&\"", 
"\"&:\"", 
"\"@\"",
 
 1422   "\"{\\\\}\"", 
"\"!\"", 
"\"^\"", 
"\":\"", 
"\",\"", 
"\"{c}\"", 
"\"-\"",
 
 1423   "\".\"", 
"\"[\"", 
"\"(\"", 
"\"<+\"", 
"\"\\\\e\"", 
"\"%\"", 
"\"|\"",
 
 1424   "\"+\"", 
"\"]\"", 
"\")\"", 
"\"{/}\"", 
"\"{T}\"", 
"\"{t}\"", 
"\"\\\\z\"",
 
 1425   "\"*\"", 
"\"letter\"", 
"\"weight\"", 
"CONCAT", 
"RWEIGHT", 
"LWEIGHT",
 
 1426   "$accept", 
"input", 
"terminator.opt", 
"add", 
"tuple", 
"$@1", 
"tuple.1",
 
 1431   const unsigned short int 
 1434        0,   205,   205,   224,   225,   226,   230,   231,   232,   238,
 
 1435      238,   255,   259,   259,   267,   268,   269,   270,   271,   272,
 
 1436      273,   274,   276,   277,   278,   290,   294,   295,   296,   297,
 
 1437      298,   299,   300,   301,   302,   303,   307,   308,   312,   313,
 
 1458     unsigned int yylno = 
yyrline_[yyrule];
 
 1459     int yynrhs = 
yyr2_[yyrule];
 
 1461     *
yycdebug_ << 
"Reducing stack by rule " << yyrule - 1
 
 1462                << 
" (line " << yylno << 
"):" << std::endl;
 
 1464     for (
int yyi = 0; yyi < yynrhs; yyi++)
 
 1471 #line 11 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:1167 
 1473 #line 1474 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:1167 
 1474 #line 317 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:1168 
 1491       driver_.error(l, m);
 
static const unsigned char yyr1_[]
 
stack_symbol_type()
Construct an empty symbol. 
 
bool lparen
Whether there was a left-paren. 
 
static dyn::context ctx(const driver &d)
Get the context of the driver. 
 
std::ostream & print(const automaton &aut, std::ostream &out=std::cout, const std::string &format="default")
Print automaton a on out using format format. 
 
automaton tuple(const automaton &lhs, const automaton &rhs)
Build a two-tape automaton from two automata. 
 
void tape_push()
Push a new tape number on the stack. 
 
int debug_level_type
Type for debugging levels. 
 
const_iterator end() const 
 
"Internal" symbol: element of the stack. 
 
void push(T &t)
Steal the contents of t. 
 
static const signed char yycheck_[]
 
Present a slice of the top of a stack. 
 
static identities ids(const driver &d)
Get the identities of the driver. 
 
std::ostream & debug_stream() const 
The current debugging stream. 
 
location(const position &b, const position &e)
Construct a location from b to e. 
 
stack_symbol_type & operator=(const stack_symbol_type &that)
Assignment, needed by push_back. 
 
#define YYLLOC_DEFAULT(Current, Rhs, N)                                                          
 
expression expression_zero(const context &c, identities ids)
The expression for \\z. 
 
virtual std::string yysyntax_error_(state_type yystate, const symbol_type &yyla) const 
Generate an error message. 
 
const_iterator begin() const 
 
void move(self_type &other)
Move the content of other to this. 
 
symbol_number_type type_get() const 
The (internal) type number (corresponding to state). 
 
std::set< std::pair< std::string, std::string >> class_t
A set of label ranges. 
 
automaton rdivide(const automaton &lhs, const automaton &rhs)
Right-division of two automata (lhs / rhs). 
 
void tape_inc(const location &l)
Increment the top most tape. 
 
virtual int parse()
Parse. 
 
Syntax errors thrown from user actions. 
 
static const short int yypact_[]
 
static const unsigned char yystos_[]
 
virtual void yy_reduce_print_(int r)
Report on the debug stream that the rule r is going to be reduced. 
 
T & as()
Accessor to a built T. 
 
dyn::expression result_
The parsed expression. 
 
int symbol_number_type
Symbol type: an internal symbol number. 
 
debug_level_type debug_level() const 
The current debugging level. 
 
location location_
The inital location. 
 
static const unsigned char yyr2_[]
 
dyn::weight make_weight(const location &loc, const std::string &s)
From a string, generate a weight. 
 
static const unsigned short int yyrline_[]
 
static const signed char yytable_ninf_
 
dyn::expression make_atom(const location &loc, const std::string &s)
From a string, generate an expression. 
 
State and public interface for rational expression parsing. 
 
void yy_print_(std::ostream &yyo, const basic_symbol< Base > &yysym) const 
Display a symbol type, value and location. 
 
std::unique_ptr< yyFlexLexer > scanner_
The scanner. 
 
static bool yy_table_value_is_error_(int yyvalue)
Whether the given yytable_ value indicates a syntax error. 
 
#define YY_SYMBOL_PRINT(Title, Symbol)              
 
virtual void error(const location_type &loc, const std::string &msg)
Report a syntax error. 
 
bool empty() const 
Whether empty. 
 
Template-less root for contexts. 
 
S::size_type size() const 
 
rat::identities identities() const 
Get the identities. 
 
location_type location
The location. 
 
static const signed char yypgoto_[]
 
An expression that "remembers" whether it was in parentheses. 
 
static parser::symbol_type yylex(driver &d)
Use our local scanner object. 
 
std::size_t num_tapes(const context &ctx)
The number of input tapes. 
 
std::vector< stack_symbol_type >::const_reverse_iterator const_iterator
 
void yypush_(const char *m, stack_symbol_type &s)
Push a new state on the stack. 
 
void yy_destroy_(const char *yymsg, basic_symbol< Base > &yysym) const 
Reclaim the memory associated to a symbol. 
 
virtual void yystack_print_()
Print the state stack on the debug stream. 
 
void move(by_state &that)
Steal the symbol type from that. 
 
std::tuple< int, int > irange_type
An integer range, for quantifiers/exponents. 
 
static const unsigned char yytable_[]
 
dyn::context ctx_
The context used to read the expression. 
 
void clear()
Destroy contents, and record that is empty. 
 
expression expression_one(const context &c, identities ids)
The expression for \\e. 
 
Type access provider for state based symbols. 
 
static std::string yytnamerr_(const char *n)
Convert the symbol name n to a form suitable for a diagnostic. 
 
void set_debug_stream(std::ostream &)
Set the current debugging stream. 
 
static const signed char yydefgoto_[]
 
stack_type yystack_
The stack. 
 
static const signed char yypact_ninf_
 
void context(const dyn::context &ctx)
Set the expressionset to use from this context. 
 
An expressionset can implement several different sets of identities on expressions. 
 
expression concatenate(const expression &lhs, const expression &rhs)
Concatenate two expressions. 
 
state_type state
The state. 
 
parser(driver &driver__yyarg)
Build a parser object. 
 
automaton multiply(const automaton &lhs, const automaton &rhs, const std::string &algo="auto")
Multiply (concatenate) two automata. 
 
auto & as()
Extract wrapped typed value. 
 
dyn::expression exp
The expression parsed so far. 
 
void set_debug_level(debug_level_type l)
Set the current debugging level. 
 
state_type yy_lr_goto_state_(state_type yystate, int yysym)
Compute post-reduction state. 
 
Container::value_type back(const Container &container)
The last member of this Container. 
 
context context_of(const automaton &a)
The context of this automaton. 
 
#define YY_REDUCE_PRINT(Rule)                
 
void pop(unsigned int n=1)
 
Termination state number. 
 
void clear()
Record that this symbol is empty. 
 
value_impl< detail::expression_tag > expression
 
bool rparen
Whether there was a right-paren. 
 
automaton transpose(automaton &aut)
Transpose aut. 
 
void move(basic_symbol &s)
Destructive move, s is emptied into this. 
 
static bool yy_pact_value_is_default_(int yyvalue)
Whether the given yypact_ value indicates a defaulted state. 
 
int state_type
State numbers. 
 
std::vector< dyn::context > tape_ctx_
The context for each tape. If single-tape, [0] is ctx_. 
 
dyn::expression make_expression(const location &loc, const class_t &c, bool accept)
From a label class, generate an expression. 
 
static const unsigned char yydefact_[]
 
by_state()
Default constructor. 
 
static const char *const yytname_[]
For a symbol, its name in clear. 
 
void tape_pop()
Pop the tape stack. 
 
std::string to_string(identities i)
Wrapper around operator<<. 
 
semantic_type value
The semantic value. 
 
static dyn::expression prefer(const dyn::expression &e, const dyn::expression &f)
Generate an expression for "e <+ f = e % f + f". 
 
Define the vcsn::rat::parser class. 
 
T & build()
Instantiate an empty T in here. 
 
void yypop_(unsigned int n=1)
Pop n symbols the three stacks. 
 
The abstract, non-parameterized, root for all rational expression node types.