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);
#define YYLLOC_DEFAULT(Current, Rhs, N)
static const short int yypact_[]
static const signed char yycheck_[]
bool lparen
Whether there was a left-paren.
virtual void yy_reduce_print_(int r)
Report on the debug stream that the rule r is going to be reduced.
std::size_t num_tapes(const context &ctx)
The number of input tapes.
void context(const dyn::context &ctx)
Set the expressionset to use from this context.
static bool yy_pact_value_is_default_(int yyvalue)
Whether the given yypact_ value indicates a defaulted state.
static const unsigned char yystos_[]
Termination state number.
static const signed char yypact_ninf_
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.
static const unsigned char yydefact_[]
std::unique_ptr< yyFlexLexer > scanner_
The scanner.
int debug_level_type
Type for debugging levels.
std::ostream & debug_stream() const
The current debugging stream.
symbol_number_type type_get() const
The (internal) type number (corresponding to state).
std::vector< stack_symbol_type >::const_reverse_iterator const_iterator
context context_of(const automaton &a)
The context of this automaton.
void yypop_(unsigned int n=1)
Pop n symbols the three stacks.
T & build()
Instantiate an empty T in here.
virtual std::string yysyntax_error_(state_type yystate, const symbol_type &yyla) const
Generate an error message.
#define YY_SYMBOL_PRINT(Title, Symbol)
void tape_push()
Push a new tape number on the stack.
location(const position &b, const position &e)
Construct a location from b to e.
void set_debug_level(debug_level_type l)
Set the current debugging level.
The abstract, non-parameterized, root for all rational expression node types.
automaton transpose(automaton &aut)
Transpose aut.
static std::string yytnamerr_(const char *n)
Convert the symbol name n to a form suitable for a diagnostic.
virtual int parse()
Parse.
static const char *const yytname_[]
For a symbol, its name in clear.
void set_debug_stream(std::ostream &)
Set the current debugging stream.
expression concatenate(const expression &lhs, const expression &rhs)
Concatenate two expressions.
automaton multiply(const automaton &lhs, const automaton &rhs, const std::string &algo="auto")
Multiply (concatenate) two automata.
virtual void error(const location_type &loc, const std::string &msg)
Report a syntax error.
std::vector< dyn::context > tape_ctx_
The context for each tape. If single-tape, [0] is ctx_.
int state_type
State numbers.
static const unsigned char yyr1_[]
static const unsigned char yyr2_[]
void yypush_(const char *m, stack_symbol_type &s)
Push a new state on the stack.
expression expression_zero(const context &c, identities ids)
The expression for \z.
static const signed char yytable_ninf_
bool empty() const
Whether empty.
Template-less root for contexts.
stack_symbol_type()
Construct an empty symbol.
location_type location
The location.
Syntax errors thrown from user actions.
An expression that "remembers" whether it was in parentheses.
void move(by_state &that)
Steal the symbol type from that.
static bool yy_table_value_is_error_(int yyvalue)
Whether the given yytable_ value indicates a syntax error.
const_iterator end() const
S::size_type size() const
parser(driver &driver__yyarg)
Build a parser object.
void clear()
Destroy contents, and record that is empty.
An expressionset can implement several different sets of identities on expressions.
int symbol_number_type
Symbol type: an internal symbol number.
Type access provider for state based symbols.
dyn::expression result_
The parsed expression.
std::set< std::pair< std::string, std::string >> class_t
A set of label ranges.
stack_symbol_type & operator=(const stack_symbol_type &that)
Assignment, needed by push_back.
virtual void yystack_print_()
Print the state stack on the debug stream.
dyn::expression make_expression(const location &loc, const class_t &c, bool accept)
From a label class, generate an expression.
state_type state
The state.
std::string to_string(identities i)
Wrapper around operator<<.
static const signed char yypgoto_[]
#define YY_REDUCE_PRINT(Rule)
static dyn::expression prefer(const dyn::expression &e, const dyn::expression &f)
Generate an expression for "e <+ f = e % f + f".
stack_type yystack_
The stack.
dyn::expression exp
The expression parsed so far.
void yy_destroy_(const char *yymsg, basic_symbol< Base > &yysym) const
Reclaim the memory associated to a symbol.
static parser::symbol_type yylex(driver &d)
Use our local scanner object.
void move(self_type &other)
Move the content of other to this.
static const unsigned char yytable_[]
T & as()
Accessor to a built T.
void clear()
Record that this symbol is empty.
void tape_pop()
Pop the tape stack.
State and public interface for rational expression parsing.
bool rparen
Whether there was a right-paren.
dyn::context ctx_
The context used to read the expression.
debug_level_type debug_level() const
The current debugging level.
auto & as()
Extract wrapped typed value.
std::tuple< int, int > irange_type
An integer range, for quantifiers/exponents.
static const signed char yydefgoto_[]
void tape_inc(const location &l)
Increment the top most tape.
Present a slice of the top of a stack.
const_iterator begin() const
void pop(unsigned int n=1)
static identities ids(const driver &d)
Get the identities of the driver.
location location_
The inital location.
void yy_print_(std::ostream &yyo, const basic_symbol< Base > &yysym) const
Display a symbol type, value and location.
void move(basic_symbol &s)
Destructive move, s is emptied into this.
Container::value_type back(const Container &container)
The last member of this Container.
by_state()
Default constructor.
void push(T &t)
Steal the contents of t.
dyn::expression make_atom(const location &loc, const std::string &s)
From a string, generate an expression.
automaton rdivide(const automaton &lhs, const automaton &rhs)
Right-division of two automata (lhs / rhs).
expression expression_one(const context &c, identities ids)
The expression for \e.
value_impl< detail::expression_tag > expression
state_type yy_lr_goto_state_(state_type yystate, int yysym)
Compute post-reduction state.
Define the vcsn::rat::parser class.
static const unsigned short int yyrline_[]
rat::identities identities() const
Get the identities.
dyn::weight make_weight(const location &loc, const std::string &s)
From a string, generate a weight.
"Internal" symbol: element of the stack.
semantic_type value
The semantic value.
static dyn::context ctx(const driver &d)
Get the context of the driver.