hi
This commit is contained in:
parent
b51dbfe2a0
commit
4fdd08f1d1
2
Makefile
2
Makefile
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
devel = 0
|
devel = 1
|
||||||
|
|
||||||
BISON = bison
|
BISON = bison
|
||||||
FLEX = flex
|
FLEX = flex
|
||||||
|
55
kk.cpp
55
kk.cpp
@ -539,6 +539,39 @@ compute_sq2 ()
|
|||||||
sage_show_khsq (outfp, H, sq1, sq2);
|
sage_show_khsq (outfp, H, sq1, sq2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
unsigned
|
||||||
|
kh_rk (knot_diagram kd)
|
||||||
|
{
|
||||||
|
cube<Z2> c (kd);
|
||||||
|
mod_map<Z2> d = c.compute_d (1, 0, 0, 0, 0);
|
||||||
|
|
||||||
|
chain_complex_simplifier<Z2> s (c.khC, d, maybe<int> (1), maybe<int> (0));
|
||||||
|
assert (s.new_d == 0);
|
||||||
|
return s.new_C->free_rank();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
run_demo ()
|
||||||
|
{
|
||||||
|
printf ("Link \t\t L1 \t L2 \t L \n");
|
||||||
|
for (unsigned i = 10; i <= 11; i ++)
|
||||||
|
{
|
||||||
|
for (unsigned j = 90; j <= fmin(mt_links (i, 0), 230); j ++)
|
||||||
|
{
|
||||||
|
|
||||||
|
knot_diagram kd (mt_link (i, 0, j));
|
||||||
|
if (kd.num_components () != 2)
|
||||||
|
continue;
|
||||||
|
knot_diagram L1 (SUBLINK, smallbitset (2, 1), kd);
|
||||||
|
knot_diagram L2 (SUBLINK, smallbitset (2, 2), kd);
|
||||||
|
|
||||||
|
printf ("%s \t %d \t %d \t %d \n", kd.name.c_str(), kh_rk(L1), kh_rk(L2), kh_rk(kd));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
@ -557,6 +590,11 @@ main (int argc, char **argv)
|
|||||||
usage ();
|
usage ();
|
||||||
exit (EXIT_SUCCESS);
|
exit (EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
else if (strcmp (argv[i], "-demo") == 0)
|
||||||
|
{
|
||||||
|
run_demo();
|
||||||
|
exit (EXIT_SUCCESS);
|
||||||
|
}
|
||||||
else if (!strcmp (argv[i], "-v"))
|
else if (!strcmp (argv[i], "-v"))
|
||||||
verbose = 1;
|
verbose = 1;
|
||||||
else if (!strcmp (argv[i], "-f"))
|
else if (!strcmp (argv[i], "-f"))
|
||||||
@ -626,6 +664,23 @@ main (int argc, char **argv)
|
|||||||
kd = parse_knot (knot);
|
kd = parse_knot (knot);
|
||||||
kd.marked_edge = 1;
|
kd.marked_edge = 1;
|
||||||
|
|
||||||
|
if (!strcmp (invariant, "gauss"))
|
||||||
|
{
|
||||||
|
basedvector<basedvector<int, 1>, 1> gc = kd.as_gauss_code ();
|
||||||
|
for (unsigned i = 1; i <= gc.size (); i ++)
|
||||||
|
{
|
||||||
|
if (i > 1)
|
||||||
|
printf (":");
|
||||||
|
for (unsigned j = 1; j <= gc[i].size (); j ++)
|
||||||
|
{
|
||||||
|
if (j > 1)
|
||||||
|
printf (",");
|
||||||
|
printf ("%d", gc[i][j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
newline ();
|
||||||
|
}
|
||||||
|
|
||||||
if (!strcmp (invariant, "sq2"))
|
if (!strcmp (invariant, "sq2"))
|
||||||
{
|
{
|
||||||
if (strcmp (field, "Z2"))
|
if (strcmp (field, "Z2"))
|
||||||
|
@ -1040,6 +1040,59 @@ knot_diagram::planar_diagram_crossings () const
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
basedvector<basedvector<int, 1>, 1>
|
||||||
|
knot_diagram::as_gauss_code () const
|
||||||
|
{
|
||||||
|
set<unsigned> visited;
|
||||||
|
unsigned m = num_components ();
|
||||||
|
|
||||||
|
basedvector<basedvector<int, 1>, 1> gc (m);
|
||||||
|
|
||||||
|
unsigned k = 0; // index component
|
||||||
|
for (unsigned i = 1; i <= num_edges (); i ++)
|
||||||
|
{
|
||||||
|
if (visited % i)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
basedvector<int, 1> comp_gc;
|
||||||
|
|
||||||
|
unsigned p = edge_to_ept (i);
|
||||||
|
for (unsigned j = i;;)
|
||||||
|
{
|
||||||
|
visited.push (j);
|
||||||
|
|
||||||
|
unsigned c = ept_crossing[p];
|
||||||
|
|
||||||
|
int t = (is_over_ept (p)
|
||||||
|
? -c
|
||||||
|
: c);
|
||||||
|
comp_gc.append (t);
|
||||||
|
|
||||||
|
p = crossings[c][add_base1_mod4 (ept_index[p], 2)];
|
||||||
|
p = edge_other_ept (p);
|
||||||
|
assert (is_to_ept (p));
|
||||||
|
|
||||||
|
j = ept_edge (p);
|
||||||
|
|
||||||
|
if (j == i)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
++ k;
|
||||||
|
gc[k] = comp_gc;
|
||||||
|
}
|
||||||
|
assert (visited.card () == num_edges ());
|
||||||
|
|
||||||
|
#ifndef NDEBUG
|
||||||
|
unsigned n = 0;
|
||||||
|
for (unsigned i = 1; i <= m; i ++)
|
||||||
|
n += gc[i].size ();
|
||||||
|
assert (n == 2*n_crossings);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return gc;
|
||||||
|
}
|
||||||
|
|
||||||
hash_t
|
hash_t
|
||||||
knot_diagram::hash_self () const
|
knot_diagram::hash_self () const
|
||||||
{
|
{
|
||||||
|
@ -175,6 +175,8 @@ class knot_diagram
|
|||||||
|
|
||||||
basedvector<basedvector<int, 1>, 1> planar_diagram_crossings () const;
|
basedvector<basedvector<int, 1>, 1> planar_diagram_crossings () const;
|
||||||
|
|
||||||
|
basedvector<basedvector<int, 1>, 1> as_gauss_code () const;
|
||||||
|
|
||||||
hash_t hash_self () const;
|
hash_t hash_self () const;
|
||||||
|
|
||||||
void show_ept (unsigned p) const;
|
void show_ept (unsigned p) const;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* A Bison parser, made by GNU Bison 2.6.5. */
|
/* A Bison parser, made by GNU Bison 2.7. */
|
||||||
|
|
||||||
/* Skeleton implementation for Bison LALR(1) parsers in C++
|
/* Skeleton implementation for Bison LALR(1) parsers in C++
|
||||||
|
|
||||||
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
/* First part of user declarations. */
|
/* First part of user declarations. */
|
||||||
|
|
||||||
/* Line 278 of lalr1.cc */
|
/* Line 279 of lalr1.cc */
|
||||||
#line 38 "knot_parser/knot_parser.cc"
|
#line 38 "knot_parser/knot_parser.cc"
|
||||||
|
|
||||||
|
|
||||||
@ -41,23 +41,23 @@
|
|||||||
|
|
||||||
/* User implementation prologue. */
|
/* User implementation prologue. */
|
||||||
|
|
||||||
/* Line 284 of lalr1.cc */
|
/* Line 285 of lalr1.cc */
|
||||||
#line 46 "knot_parser/knot_parser.cc"
|
#line 46 "knot_parser/knot_parser.cc"
|
||||||
/* Unqualified %code blocks. */
|
/* Unqualified %code blocks. */
|
||||||
/* Line 285 of lalr1.cc */
|
/* Line 286 of lalr1.cc */
|
||||||
#line 15 "knot_parser/knot_parser.yy"
|
#line 15 "knot_parser/knot_parser.yy"
|
||||||
|
|
||||||
#define YY_DECL \
|
#define YY_DECL \
|
||||||
yy::knot_parser::token_type knot_yylex (yy::knot_parser::semantic_type *yylval)
|
yy::knot_parser::token_type knot_yylex (yy::knot_parser::semantic_type *yylval)
|
||||||
YY_DECL;
|
YY_DECL;
|
||||||
|
|
||||||
/* Line 285 of lalr1.cc */
|
/* Line 286 of lalr1.cc */
|
||||||
#line 30 "knot_parser/knot_parser.yy"
|
#line 30 "knot_parser/knot_parser.yy"
|
||||||
|
|
||||||
#define yylex knot_yylex
|
#define yylex knot_yylex
|
||||||
|
|
||||||
|
|
||||||
/* Line 285 of lalr1.cc */
|
/* Line 286 of lalr1.cc */
|
||||||
#line 62 "knot_parser/knot_parser.cc"
|
#line 62 "knot_parser/knot_parser.cc"
|
||||||
|
|
||||||
|
|
||||||
@ -136,9 +136,9 @@ do { \
|
|||||||
#else /* !YYDEBUG */
|
#else /* !YYDEBUG */
|
||||||
|
|
||||||
# define YYCDEBUG if (false) std::cerr
|
# define YYCDEBUG if (false) std::cerr
|
||||||
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
|
# define YY_SYMBOL_PRINT(Title, Type, Value, Location) YYUSE(Type)
|
||||||
# define YY_REDUCE_PRINT(Rule)
|
# define YY_REDUCE_PRINT(Rule) static_cast<void>(0)
|
||||||
# define YY_STACK_PRINT()
|
# define YY_STACK_PRINT() static_cast<void>(0)
|
||||||
|
|
||||||
#endif /* !YYDEBUG */
|
#endif /* !YYDEBUG */
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ do { \
|
|||||||
|
|
||||||
|
|
||||||
namespace yy {
|
namespace yy {
|
||||||
/* Line 352 of lalr1.cc */
|
/* Line 353 of lalr1.cc */
|
||||||
#line 157 "knot_parser/knot_parser.cc"
|
#line 157 "knot_parser/knot_parser.cc"
|
||||||
|
|
||||||
/// Build a parser object.
|
/// Build a parser object.
|
||||||
@ -212,7 +212,8 @@ namespace yy {
|
|||||||
YYUSE (yymsg);
|
YYUSE (yymsg);
|
||||||
YYUSE (yyvaluep);
|
YYUSE (yyvaluep);
|
||||||
|
|
||||||
YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
|
if (yymsg)
|
||||||
|
YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
|
||||||
|
|
||||||
switch (yytype)
|
switch (yytype)
|
||||||
{
|
{
|
||||||
@ -300,6 +301,10 @@ namespace yy {
|
|||||||
|
|
||||||
int yyresult;
|
int yyresult;
|
||||||
|
|
||||||
|
// FIXME: This shoud be completely indented. It is not yet to
|
||||||
|
// avoid gratuitous conflicts when merging into the master branch.
|
||||||
|
try
|
||||||
|
{
|
||||||
YYCDEBUG << "Starting parse" << std::endl;
|
YYCDEBUG << "Starting parse" << std::endl;
|
||||||
|
|
||||||
|
|
||||||
@ -335,8 +340,8 @@ namespace yy {
|
|||||||
/* Read a lookahead token. */
|
/* Read a lookahead token. */
|
||||||
if (yychar == yyempty_)
|
if (yychar == yyempty_)
|
||||||
{
|
{
|
||||||
YYCDEBUG << "Reading a token: ";
|
YYCDEBUG << "Reading a token: ";
|
||||||
yychar = yylex (&yylval);
|
yychar = yylex (&yylval);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Convert token to internal form. */
|
/* Convert token to internal form. */
|
||||||
@ -409,15 +414,18 @@ namespace yy {
|
|||||||
else
|
else
|
||||||
yyval = yysemantic_stack_[0];
|
yyval = yysemantic_stack_[0];
|
||||||
|
|
||||||
|
// Compute the default @$.
|
||||||
{
|
{
|
||||||
slice<location_type, location_stack_type> slice (yylocation_stack_, yylen);
|
slice<location_type, location_stack_type> slice (yylocation_stack_, yylen);
|
||||||
YYLLOC_DEFAULT (yyloc, slice, yylen);
|
YYLLOC_DEFAULT (yyloc, slice, yylen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Perform the reduction.
|
||||||
YY_REDUCE_PRINT (yyn);
|
YY_REDUCE_PRINT (yyn);
|
||||||
switch (yyn)
|
switch (yyn)
|
||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 60 "knot_parser/knot_parser.yy"
|
#line 60 "knot_parser/knot_parser.yy"
|
||||||
{
|
{
|
||||||
parsed_knot = *(yysemantic_stack_[(1) - (1)].kd);
|
parsed_knot = *(yysemantic_stack_[(1) - (1)].kd);
|
||||||
@ -426,7 +434,7 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 69 "knot_parser/knot_parser.yy"
|
#line 69 "knot_parser/knot_parser.yy"
|
||||||
{
|
{
|
||||||
(yyval.kd) = new knot_diagram (DISJOINT_UNION, *(yysemantic_stack_[(2) - (1)].kd), *(yysemantic_stack_[(2) - (2)].kd));
|
(yyval.kd) = new knot_diagram (DISJOINT_UNION, *(yysemantic_stack_[(2) - (1)].kd), *(yysemantic_stack_[(2) - (2)].kd));
|
||||||
@ -436,7 +444,7 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 13:
|
case 13:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 89 "knot_parser/knot_parser.yy"
|
#line 89 "knot_parser/knot_parser.yy"
|
||||||
{
|
{
|
||||||
unsigned n = (yysemantic_stack_[(3) - (1)].integer),
|
unsigned n = (yysemantic_stack_[(3) - (1)].integer),
|
||||||
@ -455,7 +463,7 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 14:
|
case 14:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 107 "knot_parser/knot_parser.yy"
|
#line 107 "knot_parser/knot_parser.yy"
|
||||||
{
|
{
|
||||||
unsigned n = (yysemantic_stack_[(3) - (1)].integer),
|
unsigned n = (yysemantic_stack_[(3) - (1)].integer),
|
||||||
@ -475,7 +483,7 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 15:
|
case 15:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 126 "knot_parser/knot_parser.yy"
|
#line 126 "knot_parser/knot_parser.yy"
|
||||||
{
|
{
|
||||||
unsigned n = (yysemantic_stack_[(4) - (2)].integer),
|
unsigned n = (yysemantic_stack_[(4) - (2)].integer),
|
||||||
@ -495,19 +503,19 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 16:
|
case 16:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 145 "knot_parser/knot_parser.yy"
|
#line 145 "knot_parser/knot_parser.yy"
|
||||||
{ (yyval.kd) = new knot_diagram (planar_diagram ("<parsed>", *(yysemantic_stack_[(4) - (3)].int_vec2))); }
|
{ (yyval.kd) = new knot_diagram (planar_diagram ("<parsed>", *(yysemantic_stack_[(4) - (3)].int_vec2))); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 17:
|
case 17:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 147 "knot_parser/knot_parser.yy"
|
#line 147 "knot_parser/knot_parser.yy"
|
||||||
{ (yyval.kd) = new knot_diagram (planar_diagram ("<parsed>", *(yysemantic_stack_[(4) - (3)].int_vec2))); }
|
{ (yyval.kd) = new knot_diagram (planar_diagram ("<parsed>", *(yysemantic_stack_[(4) - (3)].int_vec2))); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 18:
|
case 18:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 152 "knot_parser/knot_parser.yy"
|
#line 152 "knot_parser/knot_parser.yy"
|
||||||
{
|
{
|
||||||
basedvector<basedvector<int, 1>, 1> even_labels (1);
|
basedvector<basedvector<int, 1>, 1> even_labels (1);
|
||||||
@ -517,31 +525,31 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 19:
|
case 19:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 158 "knot_parser/knot_parser.yy"
|
#line 158 "knot_parser/knot_parser.yy"
|
||||||
{ (yyval.kd) = new knot_diagram (dt_code ("<parsed>", *(yysemantic_stack_[(4) - (3)].int_vec2))); }
|
{ (yyval.kd) = new knot_diagram (dt_code ("<parsed>", *(yysemantic_stack_[(4) - (3)].int_vec2))); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 20:
|
case 20:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 160 "knot_parser/knot_parser.yy"
|
#line 160 "knot_parser/knot_parser.yy"
|
||||||
{ (yyval.kd) = new knot_diagram (dt_code ("<parsed>", (yysemantic_stack_[(4) - (3)].string))); }
|
{ (yyval.kd) = new knot_diagram (dt_code ("<parsed>", (yysemantic_stack_[(4) - (3)].string))); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 21:
|
case 21:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 165 "knot_parser/knot_parser.yy"
|
#line 165 "knot_parser/knot_parser.yy"
|
||||||
{ (yyval.kd) = new knot_diagram (torus_knot ((yysemantic_stack_[(6) - (3)].integer), (yysemantic_stack_[(6) - (5)].integer))); }
|
{ (yyval.kd) = new knot_diagram (torus_knot ((yysemantic_stack_[(6) - (3)].integer), (yysemantic_stack_[(6) - (5)].integer))); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 22:
|
case 22:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 170 "knot_parser/knot_parser.yy"
|
#line 170 "knot_parser/knot_parser.yy"
|
||||||
{ (yyval.kd) = new knot_diagram (braid ((yysemantic_stack_[(6) - (3)].integer), *(yysemantic_stack_[(6) - (5)].int_vec))); }
|
{ (yyval.kd) = new knot_diagram (braid ((yysemantic_stack_[(6) - (3)].integer), *(yysemantic_stack_[(6) - (5)].int_vec))); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 23:
|
case 23:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 175 "knot_parser/knot_parser.yy"
|
#line 175 "knot_parser/knot_parser.yy"
|
||||||
{
|
{
|
||||||
unsigned unknot_ar[1][4] = {
|
unsigned unknot_ar[1][4] = {
|
||||||
@ -552,7 +560,7 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 26:
|
case 26:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 190 "knot_parser/knot_parser.yy"
|
#line 190 "knot_parser/knot_parser.yy"
|
||||||
{
|
{
|
||||||
basedvector<basedvector<int, 1>, 1> *v
|
basedvector<basedvector<int, 1>, 1> *v
|
||||||
@ -563,7 +571,7 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 27:
|
case 27:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 197 "knot_parser/knot_parser.yy"
|
#line 197 "knot_parser/knot_parser.yy"
|
||||||
{
|
{
|
||||||
basedvector<basedvector<int, 1>, 1> *v = (yysemantic_stack_[(3) - (1)].int_vec2);
|
basedvector<basedvector<int, 1>, 1> *v = (yysemantic_stack_[(3) - (1)].int_vec2);
|
||||||
@ -573,19 +581,19 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 28:
|
case 28:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 206 "knot_parser/knot_parser.yy"
|
#line 206 "knot_parser/knot_parser.yy"
|
||||||
{ (yyval.int_vec) = (yysemantic_stack_[(3) - (2)].int_vec); }
|
{ (yyval.int_vec) = (yysemantic_stack_[(3) - (2)].int_vec); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 29:
|
case 29:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 208 "knot_parser/knot_parser.yy"
|
#line 208 "knot_parser/knot_parser.yy"
|
||||||
{ (yyval.int_vec) = (yysemantic_stack_[(3) - (2)].int_vec); }
|
{ (yyval.int_vec) = (yysemantic_stack_[(3) - (2)].int_vec); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 30:
|
case 30:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 213 "knot_parser/knot_parser.yy"
|
#line 213 "knot_parser/knot_parser.yy"
|
||||||
{
|
{
|
||||||
basedvector<int, 1> *v =
|
basedvector<int, 1> *v =
|
||||||
@ -596,7 +604,7 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 31:
|
case 31:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 220 "knot_parser/knot_parser.yy"
|
#line 220 "knot_parser/knot_parser.yy"
|
||||||
{
|
{
|
||||||
basedvector<int, 1> *v = (yysemantic_stack_[(3) - (1)].int_vec);
|
basedvector<int, 1> *v = (yysemantic_stack_[(3) - (1)].int_vec);
|
||||||
@ -606,7 +614,7 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 32:
|
case 32:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 229 "knot_parser/knot_parser.yy"
|
#line 229 "knot_parser/knot_parser.yy"
|
||||||
{
|
{
|
||||||
basedvector<basedvector<int, 1>, 1> *v
|
basedvector<basedvector<int, 1>, 1> *v
|
||||||
@ -617,7 +625,7 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 33:
|
case 33:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 236 "knot_parser/knot_parser.yy"
|
#line 236 "knot_parser/knot_parser.yy"
|
||||||
{
|
{
|
||||||
basedvector<basedvector<int, 1>, 1> *v = (yysemantic_stack_[(3) - (1)].int_vec2);
|
basedvector<basedvector<int, 1>, 1> *v = (yysemantic_stack_[(3) - (1)].int_vec2);
|
||||||
@ -627,7 +635,7 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 34:
|
case 34:
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 245 "knot_parser/knot_parser.yy"
|
#line 245 "knot_parser/knot_parser.yy"
|
||||||
{
|
{
|
||||||
basedvector<int, 1> *v
|
basedvector<int, 1> *v
|
||||||
@ -641,11 +649,12 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
/* Line 661 of lalr1.cc */
|
/* Line 670 of lalr1.cc */
|
||||||
#line 646 "knot_parser/knot_parser.cc"
|
#line 654 "knot_parser/knot_parser.cc"
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* User semantic actions sometimes alter yychar, and that requires
|
/* User semantic actions sometimes alter yychar, and that requires
|
||||||
that yytoken be updated with the new translation. We take the
|
that yytoken be updated with the new translation. We take the
|
||||||
approach of translating immediately before every use of yytoken.
|
approach of translating immediately before every use of yytoken.
|
||||||
@ -696,20 +705,19 @@ namespace yy {
|
|||||||
yyerror_range[1] = yylloc;
|
yyerror_range[1] = yylloc;
|
||||||
if (yyerrstatus_ == 3)
|
if (yyerrstatus_ == 3)
|
||||||
{
|
{
|
||||||
/* If just tried and failed to reuse lookahead token after an
|
/* If just tried and failed to reuse lookahead token after an
|
||||||
error, discard it. */
|
error, discard it. */
|
||||||
|
if (yychar <= yyeof_)
|
||||||
if (yychar <= yyeof_)
|
{
|
||||||
{
|
/* Return failure if at end of input. */
|
||||||
/* Return failure if at end of input. */
|
if (yychar == yyeof_)
|
||||||
if (yychar == yyeof_)
|
YYABORT;
|
||||||
YYABORT;
|
}
|
||||||
}
|
else
|
||||||
else
|
{
|
||||||
{
|
yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
|
||||||
yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
|
yychar = yyempty_;
|
||||||
yychar = yyempty_;
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Else will try to reuse lookahead token after shifting the error
|
/* Else will try to reuse lookahead token after shifting the error
|
||||||
@ -758,7 +766,7 @@ namespace yy {
|
|||||||
|
|
||||||
/* Pop the current state because it cannot handle the error token. */
|
/* Pop the current state because it cannot handle the error token. */
|
||||||
if (yystate_stack_.height () == 1)
|
if (yystate_stack_.height () == 1)
|
||||||
YYABORT;
|
YYABORT;
|
||||||
|
|
||||||
yyerror_range[1] = yylocation_stack_[0];
|
yyerror_range[1] = yylocation_stack_[0];
|
||||||
yydestruct_ ("Error: popping",
|
yydestruct_ ("Error: popping",
|
||||||
@ -806,16 +814,42 @@ namespace yy {
|
|||||||
/* Do not reclaim the symbols of the rule which action triggered
|
/* Do not reclaim the symbols of the rule which action triggered
|
||||||
this YYABORT or YYACCEPT. */
|
this YYABORT or YYACCEPT. */
|
||||||
yypop_ (yylen);
|
yypop_ (yylen);
|
||||||
while (yystate_stack_.height () != 1)
|
while (1 < yystate_stack_.height ())
|
||||||
{
|
{
|
||||||
yydestruct_ ("Cleanup: popping",
|
yydestruct_ ("Cleanup: popping",
|
||||||
yystos_[yystate_stack_[0]],
|
yystos_[yystate_stack_[0]],
|
||||||
&yysemantic_stack_[0],
|
&yysemantic_stack_[0],
|
||||||
&yylocation_stack_[0]);
|
&yylocation_stack_[0]);
|
||||||
yypop_ ();
|
yypop_ ();
|
||||||
}
|
}
|
||||||
|
|
||||||
return yyresult;
|
return yyresult;
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
YYCDEBUG << "Exception caught: cleaning lookahead and stack"
|
||||||
|
<< std::endl;
|
||||||
|
// Do not try to display the values of the reclaimed symbols,
|
||||||
|
// as their printer might throw an exception.
|
||||||
|
if (yychar != yyempty_)
|
||||||
|
{
|
||||||
|
/* Make sure we have latest lookahead translation. See
|
||||||
|
comments at user semantic actions for why this is
|
||||||
|
necessary. */
|
||||||
|
yytoken = yytranslate_ (yychar);
|
||||||
|
yydestruct_ (YY_NULL, yytoken, &yylval, &yylloc);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (1 < yystate_stack_.height ())
|
||||||
|
{
|
||||||
|
yydestruct_ (YY_NULL,
|
||||||
|
yystos_[yystate_stack_[0]],
|
||||||
|
&yysemantic_stack_[0],
|
||||||
|
&yylocation_stack_[0]);
|
||||||
|
yypop_ ();
|
||||||
|
}
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate an error message.
|
// Generate an error message.
|
||||||
@ -1094,9 +1128,9 @@ namespace yy {
|
|||||||
|
|
||||||
|
|
||||||
} // yy
|
} // yy
|
||||||
/* Line 1106 of lalr1.cc */
|
/* Line 1141 of lalr1.cc */
|
||||||
#line 1099 "knot_parser/knot_parser.cc"
|
#line 1133 "knot_parser/knot_parser.cc"
|
||||||
/* Line 1107 of lalr1.cc */
|
/* Line 1142 of lalr1.cc */
|
||||||
#line 255 "knot_parser/knot_parser.yy"
|
#line 255 "knot_parser/knot_parser.yy"
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* A Bison parser, made by GNU Bison 2.6.5. */
|
/* A Bison parser, made by GNU Bison 2.7. */
|
||||||
|
|
||||||
/* Skeleton interface for Bison LALR(1) parsers in C++
|
/* Skeleton interface for Bison LALR(1) parsers in C++
|
||||||
|
|
||||||
@ -41,13 +41,13 @@
|
|||||||
# define YY_YY_KNOT_PARSER_KNOT_PARSER_HH_INCLUDED
|
# define YY_YY_KNOT_PARSER_KNOT_PARSER_HH_INCLUDED
|
||||||
|
|
||||||
/* "%code requires" blocks. */
|
/* "%code requires" blocks. */
|
||||||
/* Line 36 of lalr1.cc */
|
/* Line 33 of lalr1.cc */
|
||||||
#line 11 "knot_parser/knot_parser.yy"
|
#line 11 "knot_parser/knot_parser.yy"
|
||||||
|
|
||||||
#include <knotkit.h>
|
#include <knotkit.h>
|
||||||
|
|
||||||
|
|
||||||
/* Line 36 of lalr1.cc */
|
/* Line 33 of lalr1.cc */
|
||||||
#line 52 "knot_parser/knot_parser.hh"
|
#line 52 "knot_parser/knot_parser.hh"
|
||||||
|
|
||||||
|
|
||||||
@ -63,7 +63,7 @@
|
|||||||
|
|
||||||
|
|
||||||
namespace yy {
|
namespace yy {
|
||||||
/* Line 36 of lalr1.cc */
|
/* Line 33 of lalr1.cc */
|
||||||
#line 68 "knot_parser/knot_parser.hh"
|
#line 68 "knot_parser/knot_parser.hh"
|
||||||
|
|
||||||
/// A Bison parser.
|
/// A Bison parser.
|
||||||
@ -74,7 +74,7 @@ namespace yy {
|
|||||||
#ifndef YYSTYPE
|
#ifndef YYSTYPE
|
||||||
union semantic_type
|
union semantic_type
|
||||||
{
|
{
|
||||||
/* Line 36 of lalr1.cc */
|
/* Line 33 of lalr1.cc */
|
||||||
#line 21 "knot_parser/knot_parser.yy"
|
#line 21 "knot_parser/knot_parser.yy"
|
||||||
|
|
||||||
int integer;
|
int integer;
|
||||||
@ -85,7 +85,7 @@ namespace yy {
|
|||||||
knot_diagram *kd;
|
knot_diagram *kd;
|
||||||
|
|
||||||
|
|
||||||
/* Line 36 of lalr1.cc */
|
/* Line 33 of lalr1.cc */
|
||||||
#line 90 "knot_parser/knot_parser.hh"
|
#line 90 "knot_parser/knot_parser.hh"
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
@ -254,6 +254,7 @@ namespace yy {
|
|||||||
|
|
||||||
/// \brief Reclaim the memory associated to a symbol.
|
/// \brief Reclaim the memory associated to a symbol.
|
||||||
/// \param yymsg Why this token is reclaimed.
|
/// \param yymsg Why this token is reclaimed.
|
||||||
|
/// If null, do not display the symbol, just free it.
|
||||||
/// \param yytype The symbol type.
|
/// \param yytype The symbol type.
|
||||||
/// \param yyvaluep Its semantic value.
|
/// \param yyvaluep Its semantic value.
|
||||||
/// \param yylocationp Its location.
|
/// \param yylocationp Its location.
|
||||||
@ -283,8 +284,8 @@ namespace yy {
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // yy
|
} // yy
|
||||||
/* Line 36 of lalr1.cc */
|
/* Line 33 of lalr1.cc */
|
||||||
#line 288 "knot_parser/knot_parser.hh"
|
#line 289 "knot_parser/knot_parser.hh"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -66,6 +66,7 @@ typedef int16_t flex_int16_t;
|
|||||||
typedef uint16_t flex_uint16_t;
|
typedef uint16_t flex_uint16_t;
|
||||||
typedef int32_t flex_int32_t;
|
typedef int32_t flex_int32_t;
|
||||||
typedef uint32_t flex_uint32_t;
|
typedef uint32_t flex_uint32_t;
|
||||||
|
typedef uint64_t flex_uint64_t;
|
||||||
#else
|
#else
|
||||||
typedef signed char flex_int8_t;
|
typedef signed char flex_int8_t;
|
||||||
typedef short int flex_int16_t;
|
typedef short int flex_int16_t;
|
||||||
@ -172,7 +173,12 @@ typedef unsigned int flex_uint32_t;
|
|||||||
typedef struct yy_buffer_state *YY_BUFFER_STATE;
|
typedef struct yy_buffer_state *YY_BUFFER_STATE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern int knot_yyleng;
|
#ifndef YY_TYPEDEF_YY_SIZE_T
|
||||||
|
#define YY_TYPEDEF_YY_SIZE_T
|
||||||
|
typedef size_t yy_size_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern yy_size_t knot_yyleng;
|
||||||
|
|
||||||
extern FILE *knot_yyin, *knot_yyout;
|
extern FILE *knot_yyin, *knot_yyout;
|
||||||
|
|
||||||
@ -198,11 +204,6 @@ extern FILE *knot_yyin, *knot_yyout;
|
|||||||
|
|
||||||
#define unput(c) yyunput( c, (yytext_ptr) )
|
#define unput(c) yyunput( c, (yytext_ptr) )
|
||||||
|
|
||||||
#ifndef YY_TYPEDEF_YY_SIZE_T
|
|
||||||
#define YY_TYPEDEF_YY_SIZE_T
|
|
||||||
typedef size_t yy_size_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef YY_STRUCT_YY_BUFFER_STATE
|
#ifndef YY_STRUCT_YY_BUFFER_STATE
|
||||||
#define YY_STRUCT_YY_BUFFER_STATE
|
#define YY_STRUCT_YY_BUFFER_STATE
|
||||||
struct yy_buffer_state
|
struct yy_buffer_state
|
||||||
@ -220,7 +221,7 @@ struct yy_buffer_state
|
|||||||
/* Number of characters read into yy_ch_buf, not including EOB
|
/* Number of characters read into yy_ch_buf, not including EOB
|
||||||
* characters.
|
* characters.
|
||||||
*/
|
*/
|
||||||
int yy_n_chars;
|
yy_size_t yy_n_chars;
|
||||||
|
|
||||||
/* Whether we "own" the buffer - i.e., we know we created it,
|
/* Whether we "own" the buffer - i.e., we know we created it,
|
||||||
* and can realloc() it to grow it, and should free() it to
|
* and can realloc() it to grow it, and should free() it to
|
||||||
@ -290,8 +291,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
|
|||||||
|
|
||||||
/* yy_hold_char holds the character lost when knot_yytext is formed. */
|
/* yy_hold_char holds the character lost when knot_yytext is formed. */
|
||||||
static char yy_hold_char;
|
static char yy_hold_char;
|
||||||
static int yy_n_chars; /* number of characters read into yy_ch_buf */
|
static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
|
||||||
int knot_yyleng;
|
yy_size_t knot_yyleng;
|
||||||
|
|
||||||
/* Points to current character in buffer. */
|
/* Points to current character in buffer. */
|
||||||
static char *yy_c_buf_p = (char *) 0;
|
static char *yy_c_buf_p = (char *) 0;
|
||||||
@ -319,7 +320,7 @@ static void knot_yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
|
|||||||
|
|
||||||
YY_BUFFER_STATE knot_yy_scan_buffer (char *base,yy_size_t size );
|
YY_BUFFER_STATE knot_yy_scan_buffer (char *base,yy_size_t size );
|
||||||
YY_BUFFER_STATE knot_yy_scan_string (yyconst char *yy_str );
|
YY_BUFFER_STATE knot_yy_scan_string (yyconst char *yy_str );
|
||||||
YY_BUFFER_STATE knot_yy_scan_bytes (yyconst char *bytes,int len );
|
YY_BUFFER_STATE knot_yy_scan_bytes (yyconst char *bytes,yy_size_t len );
|
||||||
|
|
||||||
void *knot_yyalloc (yy_size_t );
|
void *knot_yyalloc (yy_size_t );
|
||||||
void *knot_yyrealloc (void *,yy_size_t );
|
void *knot_yyrealloc (void *,yy_size_t );
|
||||||
@ -377,7 +378,7 @@ static void yy_fatal_error (yyconst char msg[] );
|
|||||||
*/
|
*/
|
||||||
#define YY_DO_BEFORE_ACTION \
|
#define YY_DO_BEFORE_ACTION \
|
||||||
(yytext_ptr) = yy_bp; \
|
(yytext_ptr) = yy_bp; \
|
||||||
knot_yyleng = (size_t) (yy_cp - yy_bp); \
|
knot_yyleng = (yy_size_t) (yy_cp - yy_bp); \
|
||||||
(yy_hold_char) = *yy_cp; \
|
(yy_hold_char) = *yy_cp; \
|
||||||
*yy_cp = '\0'; \
|
*yy_cp = '\0'; \
|
||||||
(yy_c_buf_p) = yy_cp;
|
(yy_c_buf_p) = yy_cp;
|
||||||
@ -483,7 +484,7 @@ char *knot_yytext;
|
|||||||
|
|
||||||
typedef yy::knot_parser::token token;
|
typedef yy::knot_parser::token token;
|
||||||
typedef yy::knot_parser::token_type token_type;
|
typedef yy::knot_parser::token_type token_type;
|
||||||
#line 487 "knot_parser/knot_scanner.cc"
|
#line 488 "knot_parser/knot_scanner.cc"
|
||||||
|
|
||||||
#define INITIAL 0
|
#define INITIAL 0
|
||||||
|
|
||||||
@ -522,7 +523,7 @@ FILE *knot_yyget_out (void );
|
|||||||
|
|
||||||
void knot_yyset_out (FILE * out_str );
|
void knot_yyset_out (FILE * out_str );
|
||||||
|
|
||||||
int knot_yyget_leng (void );
|
yy_size_t knot_yyget_leng (void );
|
||||||
|
|
||||||
char *knot_yyget_text (void );
|
char *knot_yyget_text (void );
|
||||||
|
|
||||||
@ -581,7 +582,7 @@ static int input (void );
|
|||||||
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
|
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
|
||||||
{ \
|
{ \
|
||||||
int c = '*'; \
|
int c = '*'; \
|
||||||
int n; \
|
yy_size_t n; \
|
||||||
for ( n = 0; n < max_size && \
|
for ( n = 0; n < max_size && \
|
||||||
(c = getc( knot_yyin )) != EOF && c != '\n'; ++n ) \
|
(c = getc( knot_yyin )) != EOF && c != '\n'; ++n ) \
|
||||||
buf[n] = (char) c; \
|
buf[n] = (char) c; \
|
||||||
@ -666,7 +667,7 @@ YY_DECL
|
|||||||
#line 16 "knot_parser/knot_scanner.ll"
|
#line 16 "knot_parser/knot_scanner.ll"
|
||||||
|
|
||||||
|
|
||||||
#line 670 "knot_parser/knot_scanner.cc"
|
#line 671 "knot_parser/knot_scanner.cc"
|
||||||
|
|
||||||
if ( !(yy_init) )
|
if ( !(yy_init) )
|
||||||
{
|
{
|
||||||
@ -808,7 +809,7 @@ YY_RULE_SETUP
|
|||||||
#line 63 "knot_parser/knot_scanner.ll"
|
#line 63 "knot_parser/knot_scanner.ll"
|
||||||
ECHO;
|
ECHO;
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
#line 812 "knot_parser/knot_scanner.cc"
|
#line 813 "knot_parser/knot_scanner.cc"
|
||||||
case YY_STATE_EOF(INITIAL):
|
case YY_STATE_EOF(INITIAL):
|
||||||
yyterminate();
|
yyterminate();
|
||||||
|
|
||||||
@ -995,7 +996,7 @@ static int yy_get_next_buffer (void)
|
|||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int num_to_read =
|
yy_size_t num_to_read =
|
||||||
YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
|
YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
|
||||||
|
|
||||||
while ( num_to_read <= 0 )
|
while ( num_to_read <= 0 )
|
||||||
@ -1009,7 +1010,7 @@ static int yy_get_next_buffer (void)
|
|||||||
|
|
||||||
if ( b->yy_is_our_buffer )
|
if ( b->yy_is_our_buffer )
|
||||||
{
|
{
|
||||||
int new_size = b->yy_buf_size * 2;
|
yy_size_t new_size = b->yy_buf_size * 2;
|
||||||
|
|
||||||
if ( new_size <= 0 )
|
if ( new_size <= 0 )
|
||||||
b->yy_buf_size += b->yy_buf_size / 8;
|
b->yy_buf_size += b->yy_buf_size / 8;
|
||||||
@ -1040,7 +1041,7 @@ static int yy_get_next_buffer (void)
|
|||||||
|
|
||||||
/* Read in more data. */
|
/* Read in more data. */
|
||||||
YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
|
YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
|
||||||
(yy_n_chars), (size_t) num_to_read );
|
(yy_n_chars), num_to_read );
|
||||||
|
|
||||||
YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
|
YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
|
||||||
}
|
}
|
||||||
@ -1162,7 +1163,7 @@ static int yy_get_next_buffer (void)
|
|||||||
|
|
||||||
else
|
else
|
||||||
{ /* need more input */
|
{ /* need more input */
|
||||||
int offset = (yy_c_buf_p) - (yytext_ptr);
|
yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
|
||||||
++(yy_c_buf_p);
|
++(yy_c_buf_p);
|
||||||
|
|
||||||
switch ( yy_get_next_buffer( ) )
|
switch ( yy_get_next_buffer( ) )
|
||||||
@ -1186,7 +1187,7 @@ static int yy_get_next_buffer (void)
|
|||||||
case EOB_ACT_END_OF_FILE:
|
case EOB_ACT_END_OF_FILE:
|
||||||
{
|
{
|
||||||
if ( knot_yywrap( ) )
|
if ( knot_yywrap( ) )
|
||||||
return EOF;
|
return 0;
|
||||||
|
|
||||||
if ( ! (yy_did_buffer_switch_on_eof) )
|
if ( ! (yy_did_buffer_switch_on_eof) )
|
||||||
YY_NEW_FILE;
|
YY_NEW_FILE;
|
||||||
@ -1438,7 +1439,7 @@ void knot_yypop_buffer_state (void)
|
|||||||
*/
|
*/
|
||||||
static void knot_yyensure_buffer_stack (void)
|
static void knot_yyensure_buffer_stack (void)
|
||||||
{
|
{
|
||||||
int num_to_alloc;
|
yy_size_t num_to_alloc;
|
||||||
|
|
||||||
if (!(yy_buffer_stack)) {
|
if (!(yy_buffer_stack)) {
|
||||||
|
|
||||||
@ -1535,12 +1536,11 @@ YY_BUFFER_STATE knot_yy_scan_string (yyconst char * yystr )
|
|||||||
*
|
*
|
||||||
* @return the newly allocated buffer state object.
|
* @return the newly allocated buffer state object.
|
||||||
*/
|
*/
|
||||||
YY_BUFFER_STATE knot_yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
|
YY_BUFFER_STATE knot_yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
|
||||||
{
|
{
|
||||||
YY_BUFFER_STATE b;
|
YY_BUFFER_STATE b;
|
||||||
char *buf;
|
char *buf;
|
||||||
yy_size_t n;
|
yy_size_t n, i;
|
||||||
int i;
|
|
||||||
|
|
||||||
/* Get memory for full buffer, including space for trailing EOB's. */
|
/* Get memory for full buffer, including space for trailing EOB's. */
|
||||||
n = _yybytes_len + 2;
|
n = _yybytes_len + 2;
|
||||||
@ -1622,7 +1622,7 @@ FILE *knot_yyget_out (void)
|
|||||||
/** Get the length of the current token.
|
/** Get the length of the current token.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int knot_yyget_leng (void)
|
yy_size_t knot_yyget_leng (void)
|
||||||
{
|
{
|
||||||
return knot_yyleng;
|
return knot_yyleng;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* A Bison parser, made by GNU Bison 2.6.5. */
|
/* A Bison parser, made by GNU Bison 2.7. */
|
||||||
|
|
||||||
/* Locations for Bison parsers in C++
|
/* Locations for Bison parsers in C++
|
||||||
|
|
||||||
@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
|
|
||||||
namespace yy {
|
namespace yy {
|
||||||
/* Line 164 of location.cc */
|
/* Line 166 of location.cc */
|
||||||
#line 47 "knot_parser/location.hh"
|
#line 47 "knot_parser/location.hh"
|
||||||
|
|
||||||
/// Abstract a location.
|
/// Abstract a location.
|
||||||
@ -156,7 +156,9 @@ namespace yy {
|
|||||||
**
|
**
|
||||||
** Avoid duplicate information.
|
** Avoid duplicate information.
|
||||||
*/
|
*/
|
||||||
inline std::ostream& operator<< (std::ostream& ostr, const location& loc)
|
template <typename YYChar>
|
||||||
|
inline std::basic_ostream<YYChar>&
|
||||||
|
operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
|
||||||
{
|
{
|
||||||
position last = loc.end - 1;
|
position last = loc.end - 1;
|
||||||
ostr << loc.begin;
|
ostr << loc.begin;
|
||||||
@ -173,7 +175,7 @@ namespace yy {
|
|||||||
|
|
||||||
|
|
||||||
} // yy
|
} // yy
|
||||||
/* Line 292 of location.cc */
|
/* Line 296 of location.cc */
|
||||||
#line 178 "knot_parser/location.hh"
|
#line 180 "knot_parser/location.hh"
|
||||||
|
|
||||||
#endif /* !YY_YY_KNOT_PARSER_LOCATION_HH_INCLUDED */
|
#endif /* !YY_YY_KNOT_PARSER_LOCATION_HH_INCLUDED */
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* A Bison parser, made by GNU Bison 2.6.5. */
|
/* A Bison parser, made by GNU Bison 2.7. */
|
||||||
|
|
||||||
/* Positions for Bison parsers in C++
|
/* Positions for Bison parsers in C++
|
||||||
|
|
||||||
@ -52,7 +52,7 @@
|
|||||||
|
|
||||||
|
|
||||||
namespace yy {
|
namespace yy {
|
||||||
/* Line 38 of location.cc */
|
/* Line 36 of location.cc */
|
||||||
#line 57 "knot_parser/position.hh"
|
#line 57 "knot_parser/position.hh"
|
||||||
/// Abstract a position.
|
/// Abstract a position.
|
||||||
class position
|
class position
|
||||||
@ -156,8 +156,9 @@ namespace yy {
|
|||||||
** \param ostr the destination output stream
|
** \param ostr the destination output stream
|
||||||
** \param pos a reference to the position to redirect
|
** \param pos a reference to the position to redirect
|
||||||
*/
|
*/
|
||||||
inline std::ostream&
|
template <typename YYChar>
|
||||||
operator<< (std::ostream& ostr, const position& pos)
|
inline std::basic_ostream<YYChar>&
|
||||||
|
operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
|
||||||
{
|
{
|
||||||
if (pos.filename)
|
if (pos.filename)
|
||||||
ostr << *pos.filename << ':';
|
ostr << *pos.filename << ':';
|
||||||
@ -166,6 +167,6 @@ namespace yy {
|
|||||||
|
|
||||||
|
|
||||||
} // yy
|
} // yy
|
||||||
/* Line 149 of location.cc */
|
/* Line 148 of location.cc */
|
||||||
#line 171 "knot_parser/position.hh"
|
#line 172 "knot_parser/position.hh"
|
||||||
#endif /* !YY_YY_KNOT_PARSER_POSITION_HH_INCLUDED */
|
#endif /* !YY_YY_KNOT_PARSER_POSITION_HH_INCLUDED */
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* A Bison parser, made by GNU Bison 2.6.5. */
|
/* A Bison parser, made by GNU Bison 2.7. */
|
||||||
|
|
||||||
/* Stack handling for Bison parsers in C++
|
/* Stack handling for Bison parsers in C++
|
||||||
|
|
||||||
@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
|
|
||||||
namespace yy {
|
namespace yy {
|
||||||
/* Line 37 of stack.hh */
|
/* Line 34 of stack.hh */
|
||||||
#line 47 "knot_parser/stack.hh"
|
#line 47 "knot_parser/stack.hh"
|
||||||
template <class T, class S = std::deque<T> >
|
template <class T, class S = std::deque<T> >
|
||||||
class stack
|
class stack
|
||||||
@ -127,7 +127,7 @@ namespace yy {
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // yy
|
} // yy
|
||||||
/* Line 119 of stack.hh */
|
/* Line 116 of stack.hh */
|
||||||
#line 132 "knot_parser/stack.hh"
|
#line 132 "knot_parser/stack.hh"
|
||||||
|
|
||||||
#endif /* !YY_YY_KNOT_PARSER_STACK_HH_INCLUDED */
|
#endif /* !YY_YY_KNOT_PARSER_STACK_HH_INCLUDED */
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
/* A Bison parser, made by GNU Bison 2.4.3. */
|
/* A Bison parser, made by GNU Bison 2.7. */
|
||||||
|
|
||||||
/* Locations for Bison parsers in C++
|
/* Locations for Bison parsers in C++
|
||||||
|
|
||||||
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 Free Software
|
Copyright (C) 2002-2007, 2009-2012 Free Software Foundation, Inc.
|
||||||
Foundation, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -32,39 +31,55 @@
|
|||||||
version 2.2 of Bison. */
|
version 2.2 of Bison. */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
** \file location.hh
|
** \file rd_parser/location.hh
|
||||||
** Define the yy::location class.
|
** Define the yy::location class.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef BISON_LOCATION_HH
|
#ifndef YY_YY_RD_PARSER_LOCATION_HH_INCLUDED
|
||||||
# define BISON_LOCATION_HH
|
# define YY_YY_RD_PARSER_LOCATION_HH_INCLUDED
|
||||||
|
|
||||||
# include <iostream>
|
|
||||||
# include <string>
|
|
||||||
# include "position.hh"
|
# include "position.hh"
|
||||||
|
|
||||||
|
|
||||||
namespace yy {
|
namespace yy {
|
||||||
|
/* Line 166 of location.cc */
|
||||||
/* Line 163 of location.cc */
|
#line 47 "rd_parser/location.hh"
|
||||||
#line 51 "rd_parser/location.hh"
|
|
||||||
|
|
||||||
/// Abstract a location.
|
/// Abstract a location.
|
||||||
class location
|
class location
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/// Construct a location.
|
/// Construct a location from \a b to \a e.
|
||||||
location ()
|
location (const position& b, const position& e)
|
||||||
: begin (), end ()
|
: begin (b)
|
||||||
|
, end (e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Construct a 0-width location in \a p.
|
||||||
|
explicit location (const position& p = position ())
|
||||||
|
: begin (p)
|
||||||
|
, end (p)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Construct a 0-width location in \a f, \a l, \a c.
|
||||||
|
explicit location (std::string* f,
|
||||||
|
unsigned int l = 1u,
|
||||||
|
unsigned int c = 1u)
|
||||||
|
: begin (f, l, c)
|
||||||
|
, end (f, l, c)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Initialization.
|
/// Initialization.
|
||||||
inline void initialize (std::string* fn)
|
void initialize (std::string* f = YY_NULL,
|
||||||
|
unsigned int l = 1u,
|
||||||
|
unsigned int c = 1u)
|
||||||
{
|
{
|
||||||
begin.initialize (fn);
|
begin.initialize (f, l, c);
|
||||||
end = begin;
|
end = begin;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,19 +87,19 @@ namespace yy {
|
|||||||
** \{ */
|
** \{ */
|
||||||
public:
|
public:
|
||||||
/// Reset initial location to final location.
|
/// Reset initial location to final location.
|
||||||
inline void step ()
|
void step ()
|
||||||
{
|
{
|
||||||
begin = end;
|
begin = end;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Extend the current location to the COUNT next columns.
|
/// Extend the current location to the COUNT next columns.
|
||||||
inline void columns (unsigned int count = 1)
|
void columns (unsigned int count = 1)
|
||||||
{
|
{
|
||||||
end += count;
|
end += count;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Extend the current location to the COUNT next lines.
|
/// Extend the current location to the COUNT next lines.
|
||||||
inline void lines (unsigned int count = 1)
|
void lines (unsigned int count = 1)
|
||||||
{
|
{
|
||||||
end.lines (count);
|
end.lines (count);
|
||||||
}
|
}
|
||||||
@ -141,7 +156,9 @@ namespace yy {
|
|||||||
**
|
**
|
||||||
** Avoid duplicate information.
|
** Avoid duplicate information.
|
||||||
*/
|
*/
|
||||||
inline std::ostream& operator<< (std::ostream& ostr, const location& loc)
|
template <typename YYChar>
|
||||||
|
inline std::basic_ostream<YYChar>&
|
||||||
|
operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
|
||||||
{
|
{
|
||||||
position last = loc.end - 1;
|
position last = loc.end - 1;
|
||||||
ostr << loc.begin;
|
ostr << loc.begin;
|
||||||
@ -158,8 +175,7 @@ namespace yy {
|
|||||||
|
|
||||||
|
|
||||||
} // yy
|
} // yy
|
||||||
|
/* Line 296 of location.cc */
|
||||||
|
#line 180 "rd_parser/location.hh"
|
||||||
|
|
||||||
/* Line 272 of location.cc */
|
#endif /* !YY_YY_RD_PARSER_LOCATION_HH_INCLUDED */
|
||||||
#line 164 "rd_parser/location.hh"
|
|
||||||
|
|
||||||
#endif // not BISON_LOCATION_HH
|
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
/* A Bison parser, made by GNU Bison 2.4.3. */
|
/* A Bison parser, made by GNU Bison 2.7. */
|
||||||
|
|
||||||
/* Positions for Bison parsers in C++
|
/* Positions for Bison parsers in C++
|
||||||
|
|
||||||
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 Free Software
|
Copyright (C) 2002-2007, 2009-2012 Free Software Foundation, Inc.
|
||||||
Foundation, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -32,60 +31,71 @@
|
|||||||
version 2.2 of Bison. */
|
version 2.2 of Bison. */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
** \file position.hh
|
** \file rd_parser/position.hh
|
||||||
** Define the yy::position class.
|
** Define the yy::position class.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef BISON_POSITION_HH
|
#ifndef YY_YY_RD_PARSER_POSITION_HH_INCLUDED
|
||||||
# define BISON_POSITION_HH
|
# define YY_YY_RD_PARSER_POSITION_HH_INCLUDED
|
||||||
|
|
||||||
|
# include <algorithm> // std::max
|
||||||
# include <iostream>
|
# include <iostream>
|
||||||
# include <string>
|
# include <string>
|
||||||
# include <algorithm>
|
|
||||||
|
# ifndef YY_NULL
|
||||||
|
# if defined __cplusplus && 201103L <= __cplusplus
|
||||||
|
# define YY_NULL nullptr
|
||||||
|
# else
|
||||||
|
# define YY_NULL 0
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
namespace yy {
|
namespace yy {
|
||||||
|
/* Line 36 of location.cc */
|
||||||
/* Line 38 of location.cc */
|
#line 57 "rd_parser/position.hh"
|
||||||
#line 51 "rd_parser/position.hh"
|
|
||||||
/// Abstract a position.
|
/// Abstract a position.
|
||||||
class position
|
class position
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/// Construct a position.
|
/// Construct a position.
|
||||||
position ()
|
explicit position (std::string* f = YY_NULL,
|
||||||
: filename (0), line (1), column (1)
|
unsigned int l = 1u,
|
||||||
|
unsigned int c = 1u)
|
||||||
|
: filename (f)
|
||||||
|
, line (l)
|
||||||
|
, column (c)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Initialization.
|
/// Initialization.
|
||||||
inline void initialize (std::string* fn)
|
void initialize (std::string* fn = YY_NULL,
|
||||||
|
unsigned int l = 1u,
|
||||||
|
unsigned int c = 1u)
|
||||||
{
|
{
|
||||||
filename = fn;
|
filename = fn;
|
||||||
line = 1;
|
line = l;
|
||||||
column = 1;
|
column = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \name Line and Column related manipulators
|
/** \name Line and Column related manipulators
|
||||||
** \{ */
|
** \{ */
|
||||||
public:
|
|
||||||
/// (line related) Advance to the COUNT next lines.
|
/// (line related) Advance to the COUNT next lines.
|
||||||
inline void lines (int count = 1)
|
void lines (int count = 1)
|
||||||
{
|
{
|
||||||
column = 1;
|
column = 1u;
|
||||||
line += count;
|
line += count;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// (column related) Advance to the COUNT next columns.
|
/// (column related) Advance to the COUNT next columns.
|
||||||
inline void columns (int count = 1)
|
void columns (int count = 1)
|
||||||
{
|
{
|
||||||
column = std::max (1u, column + count);
|
column = std::max (1u, column + count);
|
||||||
}
|
}
|
||||||
/** \} */
|
/** \} */
|
||||||
|
|
||||||
public:
|
|
||||||
/// File name to which this position refers.
|
/// File name to which this position refers.
|
||||||
std::string* filename;
|
std::string* filename;
|
||||||
/// Current line number.
|
/// Current line number.
|
||||||
@ -95,7 +105,7 @@ namespace yy {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/// Add and assign a position.
|
/// Add and assign a position.
|
||||||
inline const position&
|
inline position&
|
||||||
operator+= (position& res, const int width)
|
operator+= (position& res, const int width)
|
||||||
{
|
{
|
||||||
res.columns (width);
|
res.columns (width);
|
||||||
@ -111,7 +121,7 @@ namespace yy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Add and assign a position.
|
/// Add and assign a position.
|
||||||
inline const position&
|
inline position&
|
||||||
operator-= (position& res, const int width)
|
operator-= (position& res, const int width)
|
||||||
{
|
{
|
||||||
return res += -width;
|
return res += -width;
|
||||||
@ -146,8 +156,9 @@ namespace yy {
|
|||||||
** \param ostr the destination output stream
|
** \param ostr the destination output stream
|
||||||
** \param pos a reference to the position to redirect
|
** \param pos a reference to the position to redirect
|
||||||
*/
|
*/
|
||||||
inline std::ostream&
|
template <typename YYChar>
|
||||||
operator<< (std::ostream& ostr, const position& pos)
|
inline std::basic_ostream<YYChar>&
|
||||||
|
operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
|
||||||
{
|
{
|
||||||
if (pos.filename)
|
if (pos.filename)
|
||||||
ostr << *pos.filename << ':';
|
ostr << *pos.filename << ':';
|
||||||
@ -156,7 +167,6 @@ namespace yy {
|
|||||||
|
|
||||||
|
|
||||||
} // yy
|
} // yy
|
||||||
|
/* Line 148 of location.cc */
|
||||||
/* Line 145 of location.cc */
|
#line 172 "rd_parser/position.hh"
|
||||||
#line 162 "rd_parser/position.hh"
|
#endif /* !YY_YY_RD_PARSER_POSITION_HH_INCLUDED */
|
||||||
#endif // not BISON_POSITION_HH
|
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
/* A Bison parser, made by GNU Bison 2.4.3. */
|
/* A Bison parser, made by GNU Bison 2.7. */
|
||||||
|
|
||||||
/* Skeleton implementation for Bison LALR(1) parsers in C++
|
/* Skeleton implementation for Bison LALR(1) parsers in C++
|
||||||
|
|
||||||
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
|
Copyright (C) 2002-2012 Free Software Foundation, Inc.
|
||||||
Software Foundation, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -34,21 +33,18 @@
|
|||||||
|
|
||||||
/* First part of user declarations. */
|
/* First part of user declarations. */
|
||||||
|
|
||||||
|
/* Line 279 of lalr1.cc */
|
||||||
/* Line 311 of lalr1.cc */
|
#line 38 "rd_parser/rd_parser.cc"
|
||||||
#line 40 "rd_parser/rd_parser.cc"
|
|
||||||
|
|
||||||
|
|
||||||
#include "rd_parser.hh"
|
#include "rd_parser.hh"
|
||||||
|
|
||||||
/* User implementation prologue. */
|
/* User implementation prologue. */
|
||||||
|
|
||||||
|
/* Line 285 of lalr1.cc */
|
||||||
/* Line 317 of lalr1.cc */
|
#line 46 "rd_parser/rd_parser.cc"
|
||||||
#line 49 "rd_parser/rd_parser.cc"
|
|
||||||
/* Unqualified %code blocks. */
|
/* Unqualified %code blocks. */
|
||||||
|
/* Line 286 of lalr1.cc */
|
||||||
/* Line 318 of lalr1.cc */
|
|
||||||
#line 15 "rd_parser/rd_parser.yy"
|
#line 15 "rd_parser/rd_parser.yy"
|
||||||
|
|
||||||
#define YY_DECL \
|
#define YY_DECL \
|
||||||
@ -59,16 +55,23 @@ YY_DECL;
|
|||||||
#define CPT_MARKED 0x10000
|
#define CPT_MARKED 0x10000
|
||||||
#define CPT_MARKED2 0x20000
|
#define CPT_MARKED2 0x20000
|
||||||
|
|
||||||
|
/* Line 286 of lalr1.cc */
|
||||||
/* Line 318 of lalr1.cc */
|
|
||||||
#line 32 "rd_parser/rd_parser.yy"
|
#line 32 "rd_parser/rd_parser.yy"
|
||||||
|
|
||||||
#define yylex rd_yylex
|
#define yylex rd_yylex
|
||||||
|
|
||||||
|
|
||||||
|
/* Line 286 of lalr1.cc */
|
||||||
|
#line 66 "rd_parser/rd_parser.cc"
|
||||||
|
|
||||||
/* Line 318 of lalr1.cc */
|
|
||||||
#line 72 "rd_parser/rd_parser.cc"
|
# ifndef YY_NULL
|
||||||
|
# if defined __cplusplus && 201103L <= __cplusplus
|
||||||
|
# define YY_NULL nullptr
|
||||||
|
# else
|
||||||
|
# define YY_NULL 0
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
#ifndef YY_
|
#ifndef YY_
|
||||||
# if defined YYENABLE_NLS && YYENABLE_NLS
|
# if defined YYENABLE_NLS && YYENABLE_NLS
|
||||||
@ -82,6 +85,27 @@ YY_DECL;
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define YYRHSLOC(Rhs, K) ((Rhs)[K])
|
||||||
|
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
|
||||||
|
If N is 0, then set CURRENT to the empty location which ends
|
||||||
|
the previous symbol: RHS[0] (always defined). */
|
||||||
|
|
||||||
|
# ifndef YYLLOC_DEFAULT
|
||||||
|
# define YYLLOC_DEFAULT(Current, Rhs, N) \
|
||||||
|
do \
|
||||||
|
if (N) \
|
||||||
|
{ \
|
||||||
|
(Current).begin = YYRHSLOC (Rhs, 1).begin; \
|
||||||
|
(Current).end = YYRHSLOC (Rhs, N).end; \
|
||||||
|
} \
|
||||||
|
else \
|
||||||
|
{ \
|
||||||
|
(Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
|
||||||
|
} \
|
||||||
|
while (/*CONSTCOND*/ false)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
/* Suppress unused-variable warnings by "using" E. */
|
/* Suppress unused-variable warnings by "using" E. */
|
||||||
#define YYUSE(e) ((void) (e))
|
#define YYUSE(e) ((void) (e))
|
||||||
|
|
||||||
@ -116,9 +140,9 @@ do { \
|
|||||||
#else /* !YYDEBUG */
|
#else /* !YYDEBUG */
|
||||||
|
|
||||||
# define YYCDEBUG if (false) std::cerr
|
# define YYCDEBUG if (false) std::cerr
|
||||||
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
|
# define YY_SYMBOL_PRINT(Title, Type, Value, Location) YYUSE(Type)
|
||||||
# define YY_REDUCE_PRINT(Rule)
|
# define YY_REDUCE_PRINT(Rule) static_cast<void>(0)
|
||||||
# define YY_STACK_PRINT()
|
# define YY_STACK_PRINT() static_cast<void>(0)
|
||||||
|
|
||||||
#endif /* !YYDEBUG */
|
#endif /* !YYDEBUG */
|
||||||
|
|
||||||
@ -132,49 +156,8 @@ do { \
|
|||||||
|
|
||||||
|
|
||||||
namespace yy {
|
namespace yy {
|
||||||
|
/* Line 353 of lalr1.cc */
|
||||||
/* Line 380 of lalr1.cc */
|
#line 161 "rd_parser/rd_parser.cc"
|
||||||
#line 138 "rd_parser/rd_parser.cc"
|
|
||||||
#if YYERROR_VERBOSE
|
|
||||||
|
|
||||||
/* Return YYSTR after stripping away unnecessary quotes and
|
|
||||||
backslashes, so that it's suitable for yyerror. The heuristic is
|
|
||||||
that double-quoting is unnecessary unless the string contains an
|
|
||||||
apostrophe, a comma, or backslash (other than backslash-backslash).
|
|
||||||
YYSTR is taken from yytname. */
|
|
||||||
std::string
|
|
||||||
rd_parser::yytnamerr_ (const char *yystr)
|
|
||||||
{
|
|
||||||
if (*yystr == '"')
|
|
||||||
{
|
|
||||||
std::string yyr = "";
|
|
||||||
char const *yyp = yystr;
|
|
||||||
|
|
||||||
for (;;)
|
|
||||||
switch (*++yyp)
|
|
||||||
{
|
|
||||||
case '\'':
|
|
||||||
case ',':
|
|
||||||
goto do_not_strip_quotes;
|
|
||||||
|
|
||||||
case '\\':
|
|
||||||
if (*++yyp != '\\')
|
|
||||||
goto do_not_strip_quotes;
|
|
||||||
/* Fall through. */
|
|
||||||
default:
|
|
||||||
yyr += *yyp;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '"':
|
|
||||||
return yyr;
|
|
||||||
}
|
|
||||||
do_not_strip_quotes: ;
|
|
||||||
}
|
|
||||||
|
|
||||||
return yystr;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// Build a parser object.
|
/// Build a parser object.
|
||||||
rd_parser::rd_parser (resolution_diagram &parsed_rd_yyarg)
|
rd_parser::rd_parser (resolution_diagram &parsed_rd_yyarg)
|
||||||
@ -202,6 +185,9 @@ namespace yy {
|
|||||||
{
|
{
|
||||||
YYUSE (yylocationp);
|
YYUSE (yylocationp);
|
||||||
YYUSE (yyvaluep);
|
YYUSE (yyvaluep);
|
||||||
|
std::ostream& yyo = debug_stream ();
|
||||||
|
std::ostream& yyoutput = yyo;
|
||||||
|
YYUSE (yyoutput);
|
||||||
switch (yytype)
|
switch (yytype)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
@ -230,7 +216,8 @@ namespace yy {
|
|||||||
YYUSE (yymsg);
|
YYUSE (yymsg);
|
||||||
YYUSE (yyvaluep);
|
YYUSE (yyvaluep);
|
||||||
|
|
||||||
YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
|
if (yymsg)
|
||||||
|
YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
|
||||||
|
|
||||||
switch (yytype)
|
switch (yytype)
|
||||||
{
|
{
|
||||||
@ -275,6 +262,18 @@ namespace yy {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
inline bool
|
||||||
|
rd_parser::yy_pact_value_is_default_ (int yyvalue)
|
||||||
|
{
|
||||||
|
return yyvalue == yypact_ninf_;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool
|
||||||
|
rd_parser::yy_table_value_is_error_ (int yyvalue)
|
||||||
|
{
|
||||||
|
return yyvalue == yytable_ninf_;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
rd_parser::parse ()
|
rd_parser::parse ()
|
||||||
{
|
{
|
||||||
@ -282,17 +281,18 @@ namespace yy {
|
|||||||
int yychar = yyempty_;
|
int yychar = yyempty_;
|
||||||
int yytoken = 0;
|
int yytoken = 0;
|
||||||
|
|
||||||
/* State. */
|
// State.
|
||||||
int yyn;
|
int yyn;
|
||||||
int yylen = 0;
|
int yylen = 0;
|
||||||
int yystate = 0;
|
int yystate = 0;
|
||||||
|
|
||||||
/* Error handling. */
|
// Error handling.
|
||||||
int yynerrs_ = 0;
|
int yynerrs_ = 0;
|
||||||
int yyerrstatus_ = 0;
|
int yyerrstatus_ = 0;
|
||||||
|
|
||||||
/// Semantic value of the lookahead.
|
/// Semantic value of the lookahead.
|
||||||
semantic_type yylval;
|
static semantic_type yyval_default;
|
||||||
|
semantic_type yylval = yyval_default;
|
||||||
/// Location of the lookahead.
|
/// Location of the lookahead.
|
||||||
location_type yylloc;
|
location_type yylloc;
|
||||||
/// The locations where the error started and ended.
|
/// The locations where the error started and ended.
|
||||||
@ -305,6 +305,10 @@ namespace yy {
|
|||||||
|
|
||||||
int yyresult;
|
int yyresult;
|
||||||
|
|
||||||
|
// FIXME: This shoud be completely indented. It is not yet to
|
||||||
|
// avoid gratuitous conflicts when merging into the master branch.
|
||||||
|
try
|
||||||
|
{
|
||||||
YYCDEBUG << "Starting parse" << std::endl;
|
YYCDEBUG << "Starting parse" << std::endl;
|
||||||
|
|
||||||
|
|
||||||
@ -334,17 +338,16 @@ namespace yy {
|
|||||||
|
|
||||||
/* Try to take a decision without lookahead. */
|
/* Try to take a decision without lookahead. */
|
||||||
yyn = yypact_[yystate];
|
yyn = yypact_[yystate];
|
||||||
if (yyn == yypact_ninf_)
|
if (yy_pact_value_is_default_ (yyn))
|
||||||
goto yydefault;
|
goto yydefault;
|
||||||
|
|
||||||
/* Read a lookahead token. */
|
/* Read a lookahead token. */
|
||||||
if (yychar == yyempty_)
|
if (yychar == yyempty_)
|
||||||
{
|
{
|
||||||
YYCDEBUG << "Reading a token: ";
|
YYCDEBUG << "Reading a token: ";
|
||||||
yychar = yylex (&yylval);
|
yychar = yylex (&yylval);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Convert token to internal form. */
|
/* Convert token to internal form. */
|
||||||
if (yychar <= yyeof_)
|
if (yychar <= yyeof_)
|
||||||
{
|
{
|
||||||
@ -367,8 +370,8 @@ namespace yy {
|
|||||||
yyn = yytable_[yyn];
|
yyn = yytable_[yyn];
|
||||||
if (yyn <= 0)
|
if (yyn <= 0)
|
||||||
{
|
{
|
||||||
if (yyn == 0 || yyn == yytable_ninf_)
|
if (yy_table_value_is_error_ (yyn))
|
||||||
goto yyerrlab;
|
goto yyerrlab;
|
||||||
yyn = -yyn;
|
yyn = -yyn;
|
||||||
goto yyreduce;
|
goto yyreduce;
|
||||||
}
|
}
|
||||||
@ -415,16 +418,18 @@ namespace yy {
|
|||||||
else
|
else
|
||||||
yyval = yysemantic_stack_[0];
|
yyval = yysemantic_stack_[0];
|
||||||
|
|
||||||
|
// Compute the default @$.
|
||||||
{
|
{
|
||||||
slice<location_type, location_stack_type> slice (yylocation_stack_, yylen);
|
slice<location_type, location_stack_type> slice (yylocation_stack_, yylen);
|
||||||
YYLLOC_DEFAULT (yyloc, slice, yylen);
|
YYLLOC_DEFAULT (yyloc, slice, yylen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Perform the reduction.
|
||||||
YY_REDUCE_PRINT (yyn);
|
YY_REDUCE_PRINT (yyn);
|
||||||
switch (yyn)
|
switch (yyn)
|
||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
|
/* Line 670 of lalr1.cc */
|
||||||
/* Line 678 of lalr1.cc */
|
|
||||||
#line 54 "rd_parser/rd_parser.yy"
|
#line 54 "rd_parser/rd_parser.yy"
|
||||||
{
|
{
|
||||||
unsigned n_crossings = (yysemantic_stack_[(1) - (1)].integer);
|
unsigned n_crossings = (yysemantic_stack_[(1) - (1)].integer);
|
||||||
@ -453,8 +458,7 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 6:
|
case 6:
|
||||||
|
/* Line 670 of lalr1.cc */
|
||||||
/* Line 678 of lalr1.cc */
|
|
||||||
#line 88 "rd_parser/rd_parser.yy"
|
#line 88 "rd_parser/rd_parser.yy"
|
||||||
{
|
{
|
||||||
unsigned s = ++ parsed_rd.n_starting_circles;
|
unsigned s = ++ parsed_rd.n_starting_circles;
|
||||||
@ -480,8 +484,7 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 12:
|
case 12:
|
||||||
|
/* Line 670 of lalr1.cc */
|
||||||
/* Line 678 of lalr1.cc */
|
|
||||||
#line 126 "rd_parser/rd_parser.yy"
|
#line 126 "rd_parser/rd_parser.yy"
|
||||||
{
|
{
|
||||||
basedvector<int, 1> *v =
|
basedvector<int, 1> *v =
|
||||||
@ -492,8 +495,7 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 13:
|
case 13:
|
||||||
|
/* Line 670 of lalr1.cc */
|
||||||
/* Line 678 of lalr1.cc */
|
|
||||||
#line 133 "rd_parser/rd_parser.yy"
|
#line 133 "rd_parser/rd_parser.yy"
|
||||||
{
|
{
|
||||||
basedvector<int, 1> *v = (yysemantic_stack_[(3) - (1)].cpt_vec);
|
basedvector<int, 1> *v = (yysemantic_stack_[(3) - (1)].cpt_vec);
|
||||||
@ -503,36 +505,31 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 15:
|
case 15:
|
||||||
|
/* Line 670 of lalr1.cc */
|
||||||
/* Line 678 of lalr1.cc */
|
|
||||||
#line 143 "rd_parser/rd_parser.yy"
|
#line 143 "rd_parser/rd_parser.yy"
|
||||||
{ (yyval.cpt) = (yysemantic_stack_[(2) - (1)].cpt) | CPT_MARKED; }
|
{ (yyval.cpt) = (yysemantic_stack_[(2) - (1)].cpt) | CPT_MARKED; }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 16:
|
case 16:
|
||||||
|
/* Line 670 of lalr1.cc */
|
||||||
/* Line 678 of lalr1.cc */
|
|
||||||
#line 145 "rd_parser/rd_parser.yy"
|
#line 145 "rd_parser/rd_parser.yy"
|
||||||
{ (yyval.cpt) = (yysemantic_stack_[(2) - (1)].cpt) | CPT_MARKED2; }
|
{ (yyval.cpt) = (yysemantic_stack_[(2) - (1)].cpt) | CPT_MARKED2; }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 17:
|
case 17:
|
||||||
|
/* Line 670 of lalr1.cc */
|
||||||
/* Line 678 of lalr1.cc */
|
|
||||||
#line 147 "rd_parser/rd_parser.yy"
|
#line 147 "rd_parser/rd_parser.yy"
|
||||||
{ (yyval.cpt) = (yysemantic_stack_[(3) - (1)].cpt) | CPT_MARKED | CPT_MARKED2; }
|
{ (yyval.cpt) = (yysemantic_stack_[(3) - (1)].cpt) | CPT_MARKED | CPT_MARKED2; }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 18:
|
case 18:
|
||||||
|
/* Line 670 of lalr1.cc */
|
||||||
/* Line 678 of lalr1.cc */
|
|
||||||
#line 149 "rd_parser/rd_parser.yy"
|
#line 149 "rd_parser/rd_parser.yy"
|
||||||
{ (yyval.cpt) = (yysemantic_stack_[(3) - (1)].cpt) | CPT_MARKED | CPT_MARKED2; }
|
{ (yyval.cpt) = (yysemantic_stack_[(3) - (1)].cpt) | CPT_MARKED | CPT_MARKED2; }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 19:
|
case 19:
|
||||||
|
/* Line 670 of lalr1.cc */
|
||||||
/* Line 678 of lalr1.cc */
|
|
||||||
#line 154 "rd_parser/rd_parser.yy"
|
#line 154 "rd_parser/rd_parser.yy"
|
||||||
{
|
{
|
||||||
if ((yysemantic_stack_[(2) - (2)].inside))
|
if ((yysemantic_stack_[(2) - (2)].inside))
|
||||||
@ -542,26 +539,35 @@ namespace yy {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 20:
|
case 20:
|
||||||
|
/* Line 670 of lalr1.cc */
|
||||||
/* Line 678 of lalr1.cc */
|
|
||||||
#line 163 "rd_parser/rd_parser.yy"
|
#line 163 "rd_parser/rd_parser.yy"
|
||||||
{ (yyval.cpt) = parsed_rd.crossing_to_cpt ((yysemantic_stack_[(2) - (2)].integer)); }
|
{ (yyval.cpt) = parsed_rd.crossing_to_cpt ((yysemantic_stack_[(2) - (2)].integer)); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 21:
|
case 21:
|
||||||
|
/* Line 670 of lalr1.cc */
|
||||||
/* Line 678 of lalr1.cc */
|
|
||||||
#line 165 "rd_parser/rd_parser.yy"
|
#line 165 "rd_parser/rd_parser.yy"
|
||||||
{ (yyval.cpt) = parsed_rd.crossing_from_cpt ((yysemantic_stack_[(2) - (2)].integer)); }
|
{ (yyval.cpt) = parsed_rd.crossing_from_cpt ((yysemantic_stack_[(2) - (2)].integer)); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
/* Line 670 of lalr1.cc */
|
||||||
/* Line 678 of lalr1.cc */
|
#line 556 "rd_parser/rd_parser.cc"
|
||||||
#line 562 "rd_parser/rd_parser.cc"
|
default:
|
||||||
default:
|
break;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* User semantic actions sometimes alter yychar, and that requires
|
||||||
|
that yytoken be updated with the new translation. We take the
|
||||||
|
approach of translating immediately before every use of yytoken.
|
||||||
|
One alternative is translating here after every semantic action,
|
||||||
|
but that translation would be missed if the semantic action
|
||||||
|
invokes YYABORT, YYACCEPT, or YYERROR immediately after altering
|
||||||
|
yychar. In the case of YYABORT or YYACCEPT, an incorrect
|
||||||
|
destructor might then be invoked immediately. In the case of
|
||||||
|
YYERROR, subsequent parser actions might lead to an incorrect
|
||||||
|
destructor call or verbose syntax error message before the
|
||||||
|
lookahead is translated. */
|
||||||
YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc);
|
YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc);
|
||||||
|
|
||||||
yypop_ (yylen);
|
yypop_ (yylen);
|
||||||
@ -585,30 +591,35 @@ namespace yy {
|
|||||||
| yyerrlab -- here on detecting error |
|
| yyerrlab -- here on detecting error |
|
||||||
`------------------------------------*/
|
`------------------------------------*/
|
||||||
yyerrlab:
|
yyerrlab:
|
||||||
|
/* Make sure we have latest lookahead translation. See comments at
|
||||||
|
user semantic actions for why this is necessary. */
|
||||||
|
yytoken = yytranslate_ (yychar);
|
||||||
|
|
||||||
/* If not already recovering from an error, report this error. */
|
/* If not already recovering from an error, report this error. */
|
||||||
if (!yyerrstatus_)
|
if (!yyerrstatus_)
|
||||||
{
|
{
|
||||||
++yynerrs_;
|
++yynerrs_;
|
||||||
error (yylloc, yysyntax_error_ (yystate));
|
if (yychar == yyempty_)
|
||||||
|
yytoken = yyempty_;
|
||||||
|
error (yylloc, yysyntax_error_ (yystate, yytoken));
|
||||||
}
|
}
|
||||||
|
|
||||||
yyerror_range[1] = yylloc;
|
yyerror_range[1] = yylloc;
|
||||||
if (yyerrstatus_ == 3)
|
if (yyerrstatus_ == 3)
|
||||||
{
|
{
|
||||||
/* If just tried and failed to reuse lookahead token after an
|
/* If just tried and failed to reuse lookahead token after an
|
||||||
error, discard it. */
|
error, discard it. */
|
||||||
|
if (yychar <= yyeof_)
|
||||||
if (yychar <= yyeof_)
|
{
|
||||||
{
|
/* Return failure if at end of input. */
|
||||||
/* Return failure if at end of input. */
|
if (yychar == yyeof_)
|
||||||
if (yychar == yyeof_)
|
YYABORT;
|
||||||
YYABORT;
|
}
|
||||||
}
|
else
|
||||||
else
|
{
|
||||||
{
|
yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
|
||||||
yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
|
yychar = yyempty_;
|
||||||
yychar = yyempty_;
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Else will try to reuse lookahead token after shifting the error
|
/* Else will try to reuse lookahead token after shifting the error
|
||||||
@ -644,7 +655,7 @@ namespace yy {
|
|||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
yyn = yypact_[yystate];
|
yyn = yypact_[yystate];
|
||||||
if (yyn != yypact_ninf_)
|
if (!yy_pact_value_is_default_ (yyn))
|
||||||
{
|
{
|
||||||
yyn += yyterror_;
|
yyn += yyterror_;
|
||||||
if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
|
if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
|
||||||
@ -657,7 +668,7 @@ namespace yy {
|
|||||||
|
|
||||||
/* Pop the current state because it cannot handle the error token. */
|
/* Pop the current state because it cannot handle the error token. */
|
||||||
if (yystate_stack_.height () == 1)
|
if (yystate_stack_.height () == 1)
|
||||||
YYABORT;
|
YYABORT;
|
||||||
|
|
||||||
yyerror_range[1] = yylocation_stack_[0];
|
yyerror_range[1] = yylocation_stack_[0];
|
||||||
yydestruct_ ("Error: popping",
|
yydestruct_ ("Error: popping",
|
||||||
@ -694,70 +705,60 @@ namespace yy {
|
|||||||
|
|
||||||
yyreturn:
|
yyreturn:
|
||||||
if (yychar != yyempty_)
|
if (yychar != yyempty_)
|
||||||
yydestruct_ ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc);
|
{
|
||||||
|
/* Make sure we have latest lookahead translation. See comments
|
||||||
|
at user semantic actions for why this is necessary. */
|
||||||
|
yytoken = yytranslate_ (yychar);
|
||||||
|
yydestruct_ ("Cleanup: discarding lookahead", yytoken, &yylval,
|
||||||
|
&yylloc);
|
||||||
|
}
|
||||||
|
|
||||||
/* Do not reclaim the symbols of the rule which action triggered
|
/* Do not reclaim the symbols of the rule which action triggered
|
||||||
this YYABORT or YYACCEPT. */
|
this YYABORT or YYACCEPT. */
|
||||||
yypop_ (yylen);
|
yypop_ (yylen);
|
||||||
while (yystate_stack_.height () != 1)
|
while (1 < yystate_stack_.height ())
|
||||||
{
|
{
|
||||||
yydestruct_ ("Cleanup: popping",
|
yydestruct_ ("Cleanup: popping",
|
||||||
yystos_[yystate_stack_[0]],
|
yystos_[yystate_stack_[0]],
|
||||||
&yysemantic_stack_[0],
|
&yysemantic_stack_[0],
|
||||||
&yylocation_stack_[0]);
|
&yylocation_stack_[0]);
|
||||||
yypop_ ();
|
yypop_ ();
|
||||||
}
|
}
|
||||||
|
|
||||||
return yyresult;
|
return yyresult;
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
YYCDEBUG << "Exception caught: cleaning lookahead and stack"
|
||||||
|
<< std::endl;
|
||||||
|
// Do not try to display the values of the reclaimed symbols,
|
||||||
|
// as their printer might throw an exception.
|
||||||
|
if (yychar != yyempty_)
|
||||||
|
{
|
||||||
|
/* Make sure we have latest lookahead translation. See
|
||||||
|
comments at user semantic actions for why this is
|
||||||
|
necessary. */
|
||||||
|
yytoken = yytranslate_ (yychar);
|
||||||
|
yydestruct_ (YY_NULL, yytoken, &yylval, &yylloc);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (1 < yystate_stack_.height ())
|
||||||
|
{
|
||||||
|
yydestruct_ (YY_NULL,
|
||||||
|
yystos_[yystate_stack_[0]],
|
||||||
|
&yysemantic_stack_[0],
|
||||||
|
&yylocation_stack_[0]);
|
||||||
|
yypop_ ();
|
||||||
|
}
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate an error message.
|
// Generate an error message.
|
||||||
std::string
|
std::string
|
||||||
rd_parser::yysyntax_error_ (int yystate)
|
rd_parser::yysyntax_error_ (int, int)
|
||||||
{
|
{
|
||||||
std::string res;
|
return YY_("syntax error");
|
||||||
YYUSE (yystate);
|
|
||||||
#if YYERROR_VERBOSE
|
|
||||||
int yyn = yypact_[yystate];
|
|
||||||
if (yypact_ninf_ < yyn && yyn <= yylast_)
|
|
||||||
{
|
|
||||||
/* Start YYX at -YYN if negative to avoid negative indexes in
|
|
||||||
YYCHECK. */
|
|
||||||
int yyxbegin = yyn < 0 ? -yyn : 0;
|
|
||||||
|
|
||||||
/* Stay within bounds of both yycheck and yytname. */
|
|
||||||
int yychecklim = yylast_ - yyn + 1;
|
|
||||||
int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
|
|
||||||
int count = 0;
|
|
||||||
for (int x = yyxbegin; x < yyxend; ++x)
|
|
||||||
if (yycheck_[x + yyn] == x && x != yyterror_)
|
|
||||||
++count;
|
|
||||||
|
|
||||||
// FIXME: This method of building the message is not compatible
|
|
||||||
// with internationalization. It should work like yacc.c does it.
|
|
||||||
// That is, first build a string that looks like this:
|
|
||||||
// "syntax error, unexpected %s or %s or %s"
|
|
||||||
// Then, invoke YY_ on this string.
|
|
||||||
// Finally, use the string as a format to output
|
|
||||||
// yytname_[tok], etc.
|
|
||||||
// Until this gets fixed, this message appears in English only.
|
|
||||||
res = "syntax error, unexpected ";
|
|
||||||
res += yytnamerr_ (yytname_[tok]);
|
|
||||||
if (count < 5)
|
|
||||||
{
|
|
||||||
count = 0;
|
|
||||||
for (int x = yyxbegin; x < yyxend; ++x)
|
|
||||||
if (yycheck_[x + yyn] == x && x != yyterror_)
|
|
||||||
{
|
|
||||||
res += (!count++) ? ", expecting " : " or ";
|
|
||||||
res += yytnamerr_ (yytname_[x]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
res = YY_("syntax error");
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -773,9 +774,9 @@ namespace yy {
|
|||||||
-12, -12, -12, 18, 13, -12, -12
|
-12, -12, -12, 18, 13, -12, -12
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
|
/* YYDEFACT[S] -- default reduction number in state S. Performed when
|
||||||
doesn't specify something else to do. Zero means the default is an
|
YYTABLE doesn't specify something else to do. Zero means the
|
||||||
error. */
|
default is an error. */
|
||||||
const unsigned char
|
const unsigned char
|
||||||
rd_parser::yydefact_[] =
|
rd_parser::yydefact_[] =
|
||||||
{
|
{
|
||||||
@ -803,7 +804,7 @@ namespace yy {
|
|||||||
|
|
||||||
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
||||||
positive, shift that token. If negative, reduce the rule which
|
positive, shift that token. If negative, reduce the rule which
|
||||||
number is the opposite. If zero, do what YYDEFACT says. */
|
number is the opposite. If YYTABLE_NINF_, syntax error. */
|
||||||
const signed char rd_parser::yytable_ninf_ = -1;
|
const signed char rd_parser::yytable_ninf_ = -1;
|
||||||
const unsigned char
|
const unsigned char
|
||||||
rd_parser::yytable_[] =
|
rd_parser::yytable_[] =
|
||||||
@ -864,7 +865,7 @@ namespace yy {
|
|||||||
2, 2, 1, 1
|
2, 2, 1, 1
|
||||||
};
|
};
|
||||||
|
|
||||||
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
|
#if YYDEBUG
|
||||||
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
|
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
|
||||||
First, the terminals, then, starting at \a yyntokens_, nonterminals. */
|
First, the terminals, then, starting at \a yyntokens_, nonterminals. */
|
||||||
const char*
|
const char*
|
||||||
@ -875,11 +876,10 @@ namespace yy {
|
|||||||
"resolution_diagram", "$@1", "starting_circles", "starting_circle",
|
"resolution_diagram", "$@1", "starting_circles", "starting_circle",
|
||||||
"dual_crossings_opt", "dual_crossings", "dual_crossing",
|
"dual_crossings_opt", "dual_crossings", "dual_crossing",
|
||||||
"crossing_points", "crossing_point", "crossing_point_1",
|
"crossing_points", "crossing_point", "crossing_point_1",
|
||||||
"crossing_point_spec", "inout", 0
|
"crossing_point_spec", "inout", YY_NULL
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|
||||||
#if YYDEBUG
|
|
||||||
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
||||||
const rd_parser::rhs_number_type
|
const rd_parser::rhs_number_type
|
||||||
rd_parser::yyrhs_[] =
|
rd_parser::yyrhs_[] =
|
||||||
@ -997,12 +997,9 @@ namespace yy {
|
|||||||
|
|
||||||
|
|
||||||
} // yy
|
} // yy
|
||||||
|
/* Line 1141 of lalr1.cc */
|
||||||
/* Line 1054 of lalr1.cc */
|
#line 1002 "rd_parser/rd_parser.cc"
|
||||||
#line 1003 "rd_parser/rd_parser.cc"
|
/* Line 1142 of lalr1.cc */
|
||||||
|
|
||||||
|
|
||||||
/* Line 1056 of lalr1.cc */
|
|
||||||
#line 173 "rd_parser/rd_parser.yy"
|
#line 173 "rd_parser/rd_parser.yy"
|
||||||
|
|
||||||
|
|
||||||
@ -1027,4 +1024,3 @@ parse_resolution_diagram (const char *s)
|
|||||||
|
|
||||||
return rd;
|
return rd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
/* A Bison parser, made by GNU Bison 2.4.3. */
|
/* A Bison parser, made by GNU Bison 2.7. */
|
||||||
|
|
||||||
/* Skeleton interface for Bison LALR(1) parsers in C++
|
/* Skeleton interface for Bison LALR(1) parsers in C++
|
||||||
|
|
||||||
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
|
Copyright (C) 2002-2012 Free Software Foundation, Inc.
|
||||||
Software Foundation, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -31,41 +30,30 @@
|
|||||||
This special exception was added by the Free Software Foundation in
|
This special exception was added by the Free Software Foundation in
|
||||||
version 2.2 of Bison. */
|
version 2.2 of Bison. */
|
||||||
|
|
||||||
|
/**
|
||||||
|
** \file rd_parser/rd_parser.hh
|
||||||
|
** Define the yy::parser class.
|
||||||
|
*/
|
||||||
|
|
||||||
/* C++ LALR(1) parser skeleton written by Akim Demaille. */
|
/* C++ LALR(1) parser skeleton written by Akim Demaille. */
|
||||||
|
|
||||||
#ifndef PARSER_HEADER_H
|
#ifndef YY_YY_RD_PARSER_RD_PARSER_HH_INCLUDED
|
||||||
# define PARSER_HEADER_H
|
# define YY_YY_RD_PARSER_RD_PARSER_HH_INCLUDED
|
||||||
|
|
||||||
/* "%code requires" blocks. */
|
/* "%code requires" blocks. */
|
||||||
|
/* Line 33 of lalr1.cc */
|
||||||
/* Line 35 of lalr1.cc */
|
|
||||||
#line 11 "rd_parser/rd_parser.yy"
|
#line 11 "rd_parser/rd_parser.yy"
|
||||||
|
|
||||||
#include <knotkit.h>
|
#include <knotkit.h>
|
||||||
|
|
||||||
|
|
||||||
|
/* Line 33 of lalr1.cc */
|
||||||
/* Line 35 of lalr1.cc */
|
#line 52 "rd_parser/rd_parser.hh"
|
||||||
#line 50 "rd_parser/rd_parser.hh"
|
|
||||||
|
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "stack.hh"
|
#include "stack.hh"
|
||||||
|
|
||||||
|
|
||||||
namespace yy {
|
|
||||||
|
|
||||||
/* Line 35 of lalr1.cc */
|
|
||||||
#line 61 "rd_parser/rd_parser.hh"
|
|
||||||
class position;
|
|
||||||
class location;
|
|
||||||
|
|
||||||
} // yy
|
|
||||||
|
|
||||||
/* Line 35 of lalr1.cc */
|
|
||||||
#line 68 "rd_parser/rd_parser.hh"
|
|
||||||
|
|
||||||
#include "location.hh"
|
#include "location.hh"
|
||||||
|
|
||||||
/* Enabling traces. */
|
/* Enabling traces. */
|
||||||
@ -73,43 +61,10 @@ namespace yy {
|
|||||||
# define YYDEBUG 0
|
# define YYDEBUG 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Enabling verbose error messages. */
|
|
||||||
#ifdef YYERROR_VERBOSE
|
|
||||||
# undef YYERROR_VERBOSE
|
|
||||||
# define YYERROR_VERBOSE 1
|
|
||||||
#else
|
|
||||||
# define YYERROR_VERBOSE 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Enabling the token table. */
|
|
||||||
#ifndef YYTOKEN_TABLE
|
|
||||||
# define YYTOKEN_TABLE 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
|
|
||||||
If N is 0, then set CURRENT to the empty location which ends
|
|
||||||
the previous symbol: RHS[0] (always defined). */
|
|
||||||
|
|
||||||
#ifndef YYLLOC_DEFAULT
|
|
||||||
# define YYLLOC_DEFAULT(Current, Rhs, N) \
|
|
||||||
do { \
|
|
||||||
if (N) \
|
|
||||||
{ \
|
|
||||||
(Current).begin = (Rhs)[1].begin; \
|
|
||||||
(Current).end = (Rhs)[N].end; \
|
|
||||||
} \
|
|
||||||
else \
|
|
||||||
{ \
|
|
||||||
(Current).begin = (Current).end = (Rhs)[0].end; \
|
|
||||||
} \
|
|
||||||
} while (false)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
namespace yy {
|
namespace yy {
|
||||||
|
/* Line 33 of lalr1.cc */
|
||||||
/* Line 35 of lalr1.cc */
|
#line 68 "rd_parser/rd_parser.hh"
|
||||||
#line 113 "rd_parser/rd_parser.hh"
|
|
||||||
|
|
||||||
/// A Bison parser.
|
/// A Bison parser.
|
||||||
class rd_parser
|
class rd_parser
|
||||||
@ -119,8 +74,7 @@ namespace yy {
|
|||||||
#ifndef YYSTYPE
|
#ifndef YYSTYPE
|
||||||
union semantic_type
|
union semantic_type
|
||||||
{
|
{
|
||||||
|
/* Line 33 of lalr1.cc */
|
||||||
/* Line 35 of lalr1.cc */
|
|
||||||
#line 25 "rd_parser/rd_parser.yy"
|
#line 25 "rd_parser/rd_parser.yy"
|
||||||
|
|
||||||
int integer;
|
int integer;
|
||||||
@ -129,9 +83,8 @@ namespace yy {
|
|||||||
basedvector<int, 1> *cpt_vec;
|
basedvector<int, 1> *cpt_vec;
|
||||||
|
|
||||||
|
|
||||||
|
/* Line 33 of lalr1.cc */
|
||||||
/* Line 35 of lalr1.cc */
|
#line 88 "rd_parser/rd_parser.hh"
|
||||||
#line 135 "rd_parser/rd_parser.hh"
|
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
typedef YYSTYPE semantic_type;
|
typedef YYSTYPE semantic_type;
|
||||||
@ -186,7 +139,7 @@ namespace yy {
|
|||||||
/// Generate an error message.
|
/// Generate an error message.
|
||||||
/// \param state the state where the error occurred.
|
/// \param state the state where the error occurred.
|
||||||
/// \param tok the lookahead token.
|
/// \param tok the lookahead token.
|
||||||
virtual std::string yysyntax_error_ (int yystate);
|
virtual std::string yysyntax_error_ (int yystate, int tok);
|
||||||
|
|
||||||
#if YYDEBUG
|
#if YYDEBUG
|
||||||
/// \brief Report a symbol value on the debug stream.
|
/// \brief Report a symbol value on the debug stream.
|
||||||
@ -222,6 +175,14 @@ namespace yy {
|
|||||||
/// The location stack.
|
/// The location stack.
|
||||||
location_stack_type yylocation_stack_;
|
location_stack_type yylocation_stack_;
|
||||||
|
|
||||||
|
/// Whether the given \c yypact_ value indicates a defaulted state.
|
||||||
|
/// \param yyvalue the value to check
|
||||||
|
static bool yy_pact_value_is_default_ (int yyvalue);
|
||||||
|
|
||||||
|
/// Whether the given \c yytable_ value indicates a syntax error.
|
||||||
|
/// \param yyvalue the value to check
|
||||||
|
static bool yy_table_value_is_error_ (int yyvalue);
|
||||||
|
|
||||||
/// Internal symbol numbers.
|
/// Internal symbol numbers.
|
||||||
typedef unsigned char token_number_type;
|
typedef unsigned char token_number_type;
|
||||||
/* Tables. */
|
/* Tables. */
|
||||||
@ -229,7 +190,7 @@ namespace yy {
|
|||||||
static const signed char yypact_[];
|
static const signed char yypact_[];
|
||||||
static const signed char yypact_ninf_;
|
static const signed char yypact_ninf_;
|
||||||
|
|
||||||
/// For a state, default rule to reduce.
|
/// For a state, default reduction number.
|
||||||
/// Unless\a yytable_ specifies something else to do.
|
/// Unless\a yytable_ specifies something else to do.
|
||||||
/// Zero means the default is an error.
|
/// Zero means the default is an error.
|
||||||
static const unsigned char yydefact_[];
|
static const unsigned char yydefact_[];
|
||||||
@ -253,19 +214,12 @@ namespace yy {
|
|||||||
/// For a rule, its LHS.
|
/// For a rule, its LHS.
|
||||||
static const unsigned char yyr1_[];
|
static const unsigned char yyr1_[];
|
||||||
/// For a rule, its RHS length.
|
/// For a rule, its RHS length.
|
||||||
static const unsigned char yyr2_[];
|
static const unsigned char yyr2_[];
|
||||||
|
|
||||||
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
|
|
||||||
/// For a symbol, its name in clear.
|
|
||||||
static const char* const yytname_[];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if YYERROR_VERBOSE
|
|
||||||
/// Convert the symbol name \a n to a form suitable for a diagnostic.
|
|
||||||
virtual std::string yytnamerr_ (const char *n);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if YYDEBUG
|
#if YYDEBUG
|
||||||
|
/// For a symbol, its name in clear.
|
||||||
|
static const char* const yytname_[];
|
||||||
|
|
||||||
/// A type to store symbol numbers and -1.
|
/// A type to store symbol numbers and -1.
|
||||||
typedef signed char rhs_number_type;
|
typedef signed char rhs_number_type;
|
||||||
/// A `-1'-separated list of the rules' RHS.
|
/// A `-1'-separated list of the rules' RHS.
|
||||||
@ -291,6 +245,7 @@ namespace yy {
|
|||||||
|
|
||||||
/// \brief Reclaim the memory associated to a symbol.
|
/// \brief Reclaim the memory associated to a symbol.
|
||||||
/// \param yymsg Why this token is reclaimed.
|
/// \param yymsg Why this token is reclaimed.
|
||||||
|
/// If null, do not display the symbol, just free it.
|
||||||
/// \param yytype The symbol type.
|
/// \param yytype The symbol type.
|
||||||
/// \param yyvaluep Its semantic value.
|
/// \param yyvaluep Its semantic value.
|
||||||
/// \param yylocationp Its location.
|
/// \param yylocationp Its location.
|
||||||
@ -320,10 +275,9 @@ namespace yy {
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // yy
|
} // yy
|
||||||
|
/* Line 33 of lalr1.cc */
|
||||||
/* Line 35 of lalr1.cc */
|
#line 280 "rd_parser/rd_parser.hh"
|
||||||
#line 326 "rd_parser/rd_parser.hh"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* ! defined PARSER_HEADER_H */
|
#endif /* !YY_YY_RD_PARSER_RD_PARSER_HH_INCLUDED */
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
/* A Bison parser, made by GNU Bison 2.4.3. */
|
/* A Bison parser, made by GNU Bison 2.7. */
|
||||||
|
|
||||||
/* Stack handling for Bison parsers in C++
|
/* Stack handling for Bison parsers in C++
|
||||||
|
|
||||||
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
|
Copyright (C) 2002-2012 Free Software Foundation, Inc.
|
||||||
Software Foundation, Inc.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -31,21 +30,24 @@
|
|||||||
This special exception was added by the Free Software Foundation in
|
This special exception was added by the Free Software Foundation in
|
||||||
version 2.2 of Bison. */
|
version 2.2 of Bison. */
|
||||||
|
|
||||||
#ifndef BISON_STACK_HH
|
/**
|
||||||
# define BISON_STACK_HH
|
** \file rd_parser/stack.hh
|
||||||
|
** Define the yy::stack class.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <deque>
|
#ifndef YY_YY_RD_PARSER_STACK_HH_INCLUDED
|
||||||
|
# define YY_YY_RD_PARSER_STACK_HH_INCLUDED
|
||||||
|
|
||||||
|
# include <deque>
|
||||||
|
|
||||||
|
|
||||||
namespace yy {
|
namespace yy {
|
||||||
|
/* Line 34 of stack.hh */
|
||||||
/* Line 1067 of lalr1.cc */
|
#line 47 "rd_parser/stack.hh"
|
||||||
#line 44 "rd_parser/stack.hh"
|
|
||||||
template <class T, class S = std::deque<T> >
|
template <class T, class S = std::deque<T> >
|
||||||
class stack
|
class stack
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Hide our reversed order.
|
// Hide our reversed order.
|
||||||
typedef typename S::reverse_iterator iterator;
|
typedef typename S::reverse_iterator iterator;
|
||||||
typedef typename S::const_reverse_iterator const_iterator;
|
typedef typename S::const_reverse_iterator const_iterator;
|
||||||
@ -84,7 +86,7 @@ namespace yy {
|
|||||||
pop (unsigned int n = 1)
|
pop (unsigned int n = 1)
|
||||||
{
|
{
|
||||||
for (; n; --n)
|
for (; n; --n)
|
||||||
seq_.pop_front ();
|
seq_.pop_front ();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
@ -98,7 +100,6 @@ namespace yy {
|
|||||||
inline const_iterator end () const { return seq_.rend (); }
|
inline const_iterator end () const { return seq_.rend (); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
S seq_;
|
S seq_;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -107,10 +108,9 @@ namespace yy {
|
|||||||
class slice
|
class slice
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
slice (const S& stack, unsigned int range)
|
||||||
slice (const S& stack,
|
: stack_ (stack)
|
||||||
unsigned int range) : stack_ (stack),
|
, range_ (range)
|
||||||
range_ (range)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,15 +122,12 @@ namespace yy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
const S& stack_;
|
const S& stack_;
|
||||||
unsigned int range_;
|
unsigned int range_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // yy
|
} // yy
|
||||||
|
/* Line 116 of stack.hh */
|
||||||
|
#line 132 "rd_parser/stack.hh"
|
||||||
|
|
||||||
/* Line 1153 of lalr1.cc */
|
#endif /* !YY_YY_RD_PARSER_STACK_HH_INCLUDED */
|
||||||
#line 134 "rd_parser/stack.hh"
|
|
||||||
|
|
||||||
#endif // not BISON_STACK_HH[]dnl
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user