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