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 203 "/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 221 "/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 222 "/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 223 "/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 227 "/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 228 "/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 234 "/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 235 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859
809 if (yystack_[0].value.as< std::vector<vcsn::dyn::expression> > ().size() == 1)
811 else if (yystack_[0].value.as< std::vector<vcsn::dyn::expression> > ().size() ==
driver_.
tape_ctx_.size())
816 +
std::to_string(yystack_[0].value.as< std::vector<vcsn::dyn::expression> > ().size())
820 #line 821 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859
824 #line 252 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859
828 #line 829 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859
832 #line 255 "/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 256 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859
840 yylhs.
value.
as< std::vector<vcsn::dyn::expression> > () = yystack_[3].value.as< std::vector<vcsn::dyn::expression> > ();
843 #line 844 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859
847 #line 263 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859
849 #line 850 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859
853 #line 264 "/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 265 "/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 266 "/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 267 "/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 268 "/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 269 "/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 270 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859
892 #line 893 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859
896 #line 272 "/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 273 "/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 275 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859
920 #line 921 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859
924 #line 286 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859
928 std::get<0>(yystack_[0].value.as<
irange_type > ()), std::get<1>(yystack_[0].value.as<
irange_type > ()))); }
929 #line 930 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859
933 #line 290 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859
935 #line 936 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859
939 #line 291 "/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 292 "/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 293 "/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 294 "/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 295 "/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 296 "/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 297 "/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 298 "/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
1006 { 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 > ()); }
1007 #line 1008 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859
1011 #line 309 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:859
1012 { 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 > ()); }
1013 #line 1014 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859
1017 #line 1018 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:859
1050 if (yyerrstatus_ == 3)
1056 if (yyla.type_get () ==
yyeof_)
1058 else if (!yyla.
empty ())
1095 yyn =
yypact_[yystack_[0].state];
1108 if (yystack_.size () == 1)
1121 error_token.
state = yyn;
1122 yypush_ (
"Shifting", error_token);
1138 yy_destroy_ (
"Cleanup: discarding lookahead", yyla);
1143 while (1 < yystack_.size ())
1153 YYCDEBUG <<
"Exception caught: cleaning lookahead and stack"
1183 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1185 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1214 int yytoken = yyla.type_get ();
1215 yyarg[yycount++] =
yytname_[yytoken];
1222 int yyxbegin = yyn < 0 ? -yyn : 0;
1224 int yychecklim =
yylast_ - yyn + 1;
1226 for (
int yyx = yyxbegin; yyx < yyxend; ++yyx)
1230 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1244 #define YYCASE_(N, S) \
1249 YYCASE_(1,
YY_(
"syntax error, unexpected %s"));
1250 YYCASE_(2,
YY_(
"syntax error, unexpected %s, expecting %s"));
1251 YYCASE_(3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
1252 YYCASE_(4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
1253 YYCASE_(5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1260 for (
char const* yyp = yyformat; *yyp; ++yyp)
1261 if (yyp[0] ==
'%' && yyp[1] ==
's' && yyi < yycount)
1279 -19, 4, -8, -19, 153, -19, -19, -19, -19, -19,
1280 153, 3, -19, -19, -19, -19, -10, 9, 52, 153,
1281 -19, 171, -19, -18, 13, -19, -19, 153, 153, 153,
1282 153, -19, 153, 153, 153, 153, -19, -19, 176, 120,
1283 -5, -17, -19, 10, -19, 153, 125, 125, 148, 125,
1284 176, 77, 102, 148, -19, 7, 52, -19
1290 8, 0, 3, 6, 0, 1, 4, 8, 5, 2,
1291 0, 36, 8, 29, 28, 30, 34, 9, 10, 0,
1292 7, 26, 36, 0, 0, 35, 11, 0, 0, 0,
1293 0, 25, 0, 0, 0, 0, 27, 24, 23, 22,
1294 21, 0, 31, 37, 33, 0, 14, 16, 18, 15,
1295 13, 17, 20, 19, 32, 0, 12, 38
1301 -19, -19, -19, 0, -19, -19, -19, -19, -4, -2,
1308 -1, 1, 9, 2, 3, 4, 17, 45, 38, 19,
1315 18, 6, 42, 54, 5, 31, 21, 20, 43, 43,
1316 22, 7, 24, 8, 25, 40, 39, 16, 36, 39,
1317 37, 55, 0, 46, 47, 48, 49, 26, 50, 51,
1318 52, 53, 7, 57, 44, 40, 39, 41, 39, 0,
1319 0, 56, 0, 0, 39, 39, 39, 39, 39, 39,
1320 39, 39, 0, 0, 39, 27, 28, 29, 10, 0,
1321 30, 0, 31, 0, 32, 11, 12, 33, 13, 34,
1322 0, 0, 0, 0, 35, 36, 14, 37, 15, 16,
1323 27, 28, 29, 10, 0, 30, 0, 31, 0, 32,
1324 11, 12, 0, 13, 34, 0, 0, 0, 0, 35,
1325 36, 14, 37, 15, 16, 27, 28, 29, 10, 0,
1326 30, 0, 31, 0, 32, 11, 12, 0, 13, 0,
1327 0, 0, 0, 0, 35, 36, 14, 37, 15, 16,
1328 29, 10, 0, 11, 12, 31, 13, 32, 11, 12,
1329 0, 13, 0, 0, 14, 0, 15, 35, 36, 14,
1330 37, 15, 16, 29, 10, 0, 0, 0, 31, 10,
1331 32, 11, 12, 0, 13, 0, 11, 12, 0, 13,
1332 0, 36, 14, 37, 15, 16, 0, 14, 0, 15,
1333 16, 31, 0, 32, 11, 12, 31, 13, 0, 11,
1334 12, 0, 13, 0, 36, 14, 37, 15, 16, 36,
1341 4, 9, 20, 20, 0, 10, 10, 7, 26, 26,
1342 7, 19, 12, 21, 16, 19, 18, 27, 23, 21,
1343 25, 11, -1, 27, 28, 29, 30, 18, 32, 33,
1344 34, 35, 19, 26, 21, 39, 38, 22, 40, -1,
1345 -1, 45, -1, -1, 46, 47, 48, 49, 50, 51,
1346 52, 53, -1, -1, 56, 3, 4, 5, 6, -1,
1347 8, -1, 10, -1, 12, 13, 14, 15, 16, 17,
1348 -1, -1, -1, -1, 22, 23, 24, 25, 26, 27,
1349 3, 4, 5, 6, -1, 8, -1, 10, -1, 12,
1350 13, 14, -1, 16, 17, -1, -1, -1, -1, 22,
1351 23, 24, 25, 26, 27, 3, 4, 5, 6, -1,
1352 8, -1, 10, -1, 12, 13, 14, -1, 16, -1,
1353 -1, -1, -1, -1, 22, 23, 24, 25, 26, 27,
1354 5, 6, -1, 13, 14, 10, 16, 12, 13, 14,
1355 -1, 16, -1, -1, 24, -1, 26, 22, 23, 24,
1356 25, 26, 27, 5, 6, -1, -1, -1, 10, 6,
1357 12, 13, 14, -1, 16, -1, 13, 14, -1, 16,
1358 -1, 23, 24, 25, 26, 27, -1, 24, -1, 26,
1359 27, 10, -1, 12, 13, 14, 10, 16, -1, 13,
1360 14, -1, 16, -1, 23, 24, 25, 26, 27, 23,
1367 0, 32, 34, 35, 36, 0, 9, 19, 21, 33,
1368 6, 13, 14, 16, 24, 26, 27, 37, 39, 40,
1369 34, 39, 7, 41, 34, 40, 18, 3, 4, 5,
1370 8, 10, 12, 15, 17, 22, 23, 25, 39, 40,
1371 39, 41, 20, 26, 21, 38, 39, 39, 39, 39,
1372 39, 39, 39, 39, 20, 11, 39, 26
1378 0, 31, 32, 33, 33, 33, 34, 34, 36, 35,
1379 37, 38, 37, 39, 39, 39, 39, 39, 39, 39,
1380 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
1381 39, 39, 39, 39, 40, 40, 41, 41, 41
1387 0, 2, 2, 0, 1, 1, 1, 3, 0, 2,
1388 1, 0, 4, 3, 3, 3, 3, 3, 3, 3,
1389 3, 2, 2, 2, 2, 2, 2, 2, 1, 1,
1390 1, 3, 4, 3, 1, 2, 0, 2, 4
1400 "\"end\"",
"error",
"$undefined",
"\"&\"",
"\"&:\"",
"\"{\\\\}\"",
1401 "\"!\"",
"\"^\"",
"\":\"",
"\",\"",
"\"{c}\"",
"\"-\"",
"\".\"",
"\"[\"",
1402 "\"(\"",
"\"<+\"",
"\"\\\\e\"",
"\"%\"",
"\"|\"",
"\"+\"",
"\"]\"",
1403 "\")\"",
"\"{/}\"",
"\"{T}\"",
"\"\\\\z\"",
"\"*\"",
"\"letter\"",
1404 "\"weight\"",
"CONCAT",
"RWEIGHT",
"LWEIGHT",
"$accept",
"input",
1405 "terminator.opt",
"sum",
"tuple",
"$@1",
"tuple.1",
"$@2",
"exp",
1410 const unsigned short int
1413 0, 202, 202, 221, 222, 223, 227, 228, 234, 234,
1414 251, 255, 255, 263, 264, 265, 266, 267, 268, 269,
1415 270, 272, 273, 274, 286, 290, 291, 292, 293, 294,
1416 295, 296, 297, 298, 302, 303, 307, 308, 309
1436 unsigned int yylno =
yyrline_[yyrule];
1437 int yynrhs =
yyr2_[yyrule];
1439 *
yycdebug_ <<
"Reducing stack by rule " << yyrule - 1
1440 <<
" (line " << yylno <<
"):" << std::endl;
1442 for (
int yyi = 0; yyi < yynrhs; yyi++)
1449 #line 11 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:1167
1451 #line 1452 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.cc" // lalr1.cc:1167
1452 #line 312 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:1168
1469 driver_.error(l, m);
static bool yy_pact_value_is_default_(int yyvalue)
Whether the given yypact_ value indicates a defaulted state.
void move(by_state &that)
Steal the symbol type from that.
bool lparen
Whether there was a left-paren.
Termination state number.
std::unique_ptr< yyFlexLexer > scanner_
The scanner.
static const signed char yypact_ninf_
static const unsigned char yystos_[]
std::ostream & print(const automaton &aut, std::ostream &out, const std::string &format="default")
Print automaton a on o using format format.
void yy_print_(std::ostream &yyo, const basic_symbol< Base > &yysym) const
Display a symbol type, value and location.
location(const position &b, const position &e)
Construct a location from b to e.
void tape_pop()
Pop the tape stack.
expression concatenate(const expression &lhs, const expression &rhs)
Concatenate two expressions.
Syntax errors thrown from user actions.
static const short int yypact_[]
symbol_number_type type_get() const
The (internal) type number (corresponding to state).
const_iterator begin() const
void set_debug_level(debug_level_type l)
Set the current debugging level.
dyn::expression make_expression(const location &loc, const class_t &c, bool accept)
From a label class, generate an expression.
void context(const dyn::context &ctx)
Set the expressionset to use from this context.
dyn::expression exp
The expression parsed so far.
std::tuple< int, int > irange_type
An integer range, for quantifiers/exponents.
void yypop_(unsigned int n=1)
Pop n symbols the three stacks.
static const unsigned char yyr2_[]
static const signed char yycheck_[]
virtual int parse()
Parse.
void push(T &t)
Steal the contents of t.
static const signed char yytable_ninf_
Container::value_type back(const Container &container)
The last member of this Container.
virtual void yy_reduce_print_(int r)
Report on the debug stream that the rule r is going to be reduced.
dyn::weight make_weight(const location &loc, const std::string &s)
From a string, generate a weight.
State and public interface for rational expression parsing.
const_iterator end() const
Present a slice of the top of a stack.
void set_debug_stream(std::ostream &)
Set the current debugging stream.
static dyn::expression prefer(const dyn::expression &e, const dyn::expression &f)
Generate an expression for "e <+ f = e % f + f".
automaton left_mult(const weight &w, const automaton &aut, const std::string &algo="auto")
The left-multiplication of an automaton with w as weight.
semantic_type value
The semantic value.
void clear()
Record that this symbol is empty.
Define the vcsn::rat::parser class.
int debug_level_type
Type for debugging levels.
T & build()
Instantiate an empty T in here.
int state_type
State numbers.
stack_symbol_type()
Construct an empty symbol.
int symbol_number_type
Symbol type: an internal symbol number.
static const unsigned char yyr1_[]
stack_type yystack_
The stack.
automaton right_mult(const automaton &aut, const weight &w, const std::string &algo="auto")
The right-mult automaton with w as weight.
static bool yy_table_value_is_error_(int yyvalue)
Whether the given yytable_ value indicates a syntax error.
rat::identities identities() const
Get the identities.
by_state()
Default constructor.
std::vector< dyn::context > tape_ctx_
The context for each tape. If single-tape, [0] is ctx_.
std::shared_ptr< const detail::context_base > context
A dyn::context.
std::size_t num_tapes(const context &ctx)
The number of input tapes.
void pop(unsigned int n=1)
void move(basic_symbol &s)
Destructive move, s is emptied into this.
bool rparen
Whether there was a right-paren.
virtual void error(const location_type &loc, const std::string &msg)
Report a syntax error.
static std::string yytnamerr_(const char *n)
Convert the symbol name n to a form suitable for a diagnostic.
expression expression_one(const context &c, rat::identities ids)
The expression for \e.
static const char *const yytname_[]
For a symbol, its name in clear.
state_type state
The state.
std::shared_ptr< const detail::weight_base > weight
context context_of(const automaton &a)
The context of this automaton.
static parser::symbol_type yylex(driver &d)
Use our local scanner object.
automaton rdiv(const automaton &lhs, const automaton &rhs)
Right-division of two automata (lhs / rhs).
void move(self_type &other)
Move the content of other to this.
std::set< std::pair< std::string, std::string >> class_t
A set of label ranges.
dyn::context ctx_
The context used to read the expression.
std::string to_string(identities i)
Wrapper around operator<<.
static const unsigned short int yyrline_[]
virtual void yystack_print_()
Print the state stack on the debug stream.
automaton multiply(const automaton &lhs, const automaton &rhs, const std::string &algo="auto")
Multiply (concatenate) two automata.
dyn::expression result_
The parsed expression.
Type access provider for state based symbols.
void yypush_(const char *m, stack_symbol_type &s)
Push a new state on the stack.
stack_symbol_type & operator=(const stack_symbol_type &that)
Assignment, needed by push_back.
static identities ids(const driver &d)
Get the identities of the driver.
#define YY_REDUCE_PRINT(Rule)
parser(driver &driver__yyarg)
Build a parser object.
static dyn::context ctx(const driver &d)
Get the context of the driver.
#define YY_SYMBOL_PRINT(Title, Symbol)
static const signed char yypgoto_[]
An expression that "remembers" whether it was in parentheses.
bool empty() const
Whether empty.
void yy_destroy_(const char *yymsg, basic_symbol< Base > &yysym) const
Reclaim the memory associated to a symbol.
state_type yy_lr_goto_state_(state_type yystate, int yysym)
Compute post-reduction state.
T & as()
Accessor to a built T.
location_type location
The location.
std::vector< stack_symbol_type >::const_reverse_iterator const_iterator
static const unsigned char yytable_[]
#define YYLLOC_DEFAULT(Current, Rhs, N)
"Internal" symbol: element of the stack.
location location_
The inital location.
expression expression_zero(const context &c, rat::identities ids)
The expression for \z.
static const unsigned char yydefact_[]
The abstract, non-parameterized, root for all rational expression node types.
std::shared_ptr< detail::expression_base > expression
debug_level_type debug_level() const
The current debugging level.
static const signed char yydefgoto_[]
S::size_type size() const
virtual std::string yysyntax_error_(state_type yystate, const symbol_type &yyla) const
Generate an error message.
void tape_inc(const location &l)
Increment the top most tape.
void tape_push()
Push a new tape number on the stack.
An expressionset can implement several different sets of identities on expressions.
dyn::expression make_atom(const location &loc, const std::string &s)
From a string, generate an expression.
expansion tuple(const std::vector< expansion > &rs)
Build a k-tape expansion from k expansions.
void clear()
Destroy contents, and record that is empty.
std::ostream & debug_stream() const
The current debugging stream.