use prolog::io::*;
use prolog::machine::*;
+use prolog::prolog_parser::*;
#[cfg(test)]
mod tests {
use super::*;
- use prolog::ast::*;
+ use prolog::codegen::*;
- fn submit(wam: &mut Machine, buffer: &str) -> EvalResult {
- let result = eval(wam, buffer);
+ fn submit(wam: &mut Machine, buffer: &str) -> bool {
wam.reset();
- result
+
+ match parse_TopLevel(buffer.trim()) {
+ Ok(tl) =>
+ match eval(wam, &tl) {
+ EvalResult::InitialQuerySuccess(_, _) |
+ EvalResult::EntrySuccess |
+ EvalResult::SubsequentQuerySuccess =>
+ true,
+ _ => false
+ },
+ Err(_) => panic!("Bad parse in test case!")
+ }
}
#[test]
submit(&mut wam, "clouds(are, nice).");
// submit returns true on failure, false on success.
- assert_eq!(submit(&mut wam, "?- p(Z, Z).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(Z, z).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(Z, w).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(z, w).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(w, w).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- clouds(Z, Z).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- clouds(are, Z).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- clouds(Z, nice).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- p(Z, Z)."), true);
+ assert_eq!(submit(&mut wam, "?- p(Z, z)."), true);
+ assert_eq!(submit(&mut wam, "?- p(Z, w)."), true);
+ assert_eq!(submit(&mut wam, "?- p(z, w)."), false);
+ assert_eq!(submit(&mut wam, "?- p(w, w)."), true);
+ assert_eq!(submit(&mut wam, "?- clouds(Z, Z)."), false);
+ assert_eq!(submit(&mut wam, "?- clouds(are, Z)."), true);
+ assert_eq!(submit(&mut wam, "?- clouds(Z, nice)."), true);
- assert_eq!(submit(&mut wam, "?- p(Z, h(Z, W), f(W)).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- p(Z, h(Z, W), f(W))."), false);
submit(&mut wam, "p(Z, h(Z, W), f(W)).");
- assert_eq!(submit(&mut wam, "?- p(z, h(z, z), f(w)).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(z, h(z, w), f(w)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(z, h(z, W), f(w)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(Z, h(Z, w), f(Z)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(z, h(Z, w), f(Z)).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- p(z, h(z, z), f(w))."), false);
+ assert_eq!(submit(&mut wam, "?- p(z, h(z, w), f(w))."), true);
+ assert_eq!(submit(&mut wam, "?- p(z, h(z, W), f(w))."), true);
+ assert_eq!(submit(&mut wam, "?- p(Z, h(Z, w), f(Z))."), true);
+ assert_eq!(submit(&mut wam, "?- p(z, h(Z, w), f(Z))."), false);
submit(&mut wam, "p(f(X), h(Y, f(a)), Y).");
- assert_eq!(submit(&mut wam, "?- p(Z, h(Z, W), f(W)).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- p(Z, h(Z, W), f(W))."), true);
}
#[test]
submit(&mut wam, "q(q, s).");
submit(&mut wam, "r(s, t).");
- assert_eq!(submit(&mut wam, "?- p(X, Y).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(q, t).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(t, q).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(q, T).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(Q, t).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(t, t).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y)."), true);
+ assert_eq!(submit(&mut wam, "?- p(q, t)."), true);
+ assert_eq!(submit(&mut wam, "?- p(t, q)."), false);
+ assert_eq!(submit(&mut wam, "?- p(q, T)."), true);
+ assert_eq!(submit(&mut wam, "?- p(Q, t)."), true);
+ assert_eq!(submit(&mut wam, "?- p(t, t)."), false);
submit(&mut wam, "p(X, Y) :- q(f(f(X)), R), r(S, T).");
submit(&mut wam, "q(f(f(X)), r).");
- assert_eq!(submit(&mut wam, "?- p(X, Y).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- p(X, Y)."), true);
submit(&mut wam, "q(f(f(x)), r).");
- assert_eq!(submit(&mut wam, "?- p(X, Y).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- p(X, Y)."), true);
submit(&mut wam, "p(X, Y) :- q(X, Y), r(X, Y).");
submit(&mut wam, "q(s, t).");
submit(&mut wam, "r(X, Y) :- r(a).");
submit(&mut wam, "r(a).");
- assert_eq!(submit(&mut wam, "?- p(X, Y).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(t, S).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(t, s).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(s, T).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(S, t).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- p(X, Y)."), true);
+ assert_eq!(submit(&mut wam, "?- p(t, S)."), false);
+ assert_eq!(submit(&mut wam, "?- p(t, s)."), false);
+ assert_eq!(submit(&mut wam, "?- p(s, T)."), true);
+ assert_eq!(submit(&mut wam, "?- p(S, t)."), true);
submit(&mut wam, "p(f(f(a), g(b), X), g(b), h) :- q(X, Y).");
submit(&mut wam, "q(X, Y).");
- assert_eq!(submit(&mut wam, "?- p(f(X, Y, Z), g(b), h).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(f(X, g(Y), Z), g(Z), X).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(f(X, g(Y), Z), g(Z), h).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(Z, Y, X).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(f(X, Y, Z), Y, h).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- p(f(X, Y, Z), g(b), h)."), true);
+ assert_eq!(submit(&mut wam, "?- p(f(X, g(Y), Z), g(Z), X)."), false);
+ assert_eq!(submit(&mut wam, "?- p(f(X, g(Y), Z), g(Z), h)."), true);
+ assert_eq!(submit(&mut wam, "?- p(Z, Y, X)."), true);
+ assert_eq!(submit(&mut wam, "?- p(f(X, Y, Z), Y, h)."), true);
submit(&mut wam, "p(_, f(_, Y, _)) :- h(Y).");
submit(&mut wam, "h(y).");
- assert_eq!(submit(&mut wam, "?- p(_, f(_, Y, _)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(_, f(_, y, _)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(_, f(_, z, _)).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- p(_, f(_, Y, _))."), true);
+ assert_eq!(submit(&mut wam, "?- p(_, f(_, y, _))."), true);
+ assert_eq!(submit(&mut wam, "?- p(_, f(_, z, _))."), false);
}
#[test]
submit(&mut wam, "p(X, a). p(b, X).");
- assert_eq!(submit(&mut wam, "?- p(x, Y).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(X, a).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(b, X).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(X, X).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(b, a).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(a, b).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- p(x, Y)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, a)."), true);
+ assert_eq!(submit(&mut wam, "?- p(b, X)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, X)."), true);
+ assert_eq!(submit(&mut wam, "?- p(b, a)."), true);
+ assert_eq!(submit(&mut wam, "?- p(a, b)."), false);
submit(&mut wam, "p(X, Y, a). p(X, a, Y). p(X, Y, a).");
- assert_eq!(submit(&mut wam, "?- p(c, d, X).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(a, a, a).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(b, c, d).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- p(c, d, X)."), true);
+ assert_eq!(submit(&mut wam, "?- p(a, a, a)."), true);
+ assert_eq!(submit(&mut wam, "?- p(b, c, d)."), false);
submit(&mut wam, "p(X, a). p(X, Y) :- q(Z), p(X, X).");
- assert_eq!(submit(&mut wam, "?- p(X, Y).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(x, a).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(X, a).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(X, b).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y)."), true);
+ assert_eq!(submit(&mut wam, "?- p(x, a)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, a)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, b)."), false);
submit(&mut wam, "q(z).");
- assert_eq!(submit(&mut wam, "?- p(X, b).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(x, a).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(X, Y).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- p(X, b)."), true);
+ assert_eq!(submit(&mut wam, "?- p(x, a)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y)."), true);
submit(&mut wam, "p(X, a). p(X, Y) :- q(Y), p(X, X).");
- assert_eq!(submit(&mut wam, "?- p(X, Y).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(X, b).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, b)."), false);
submit(&mut wam, "p(a, z). p(X, Y) :- q(Y), p(X, Y).");
- assert_eq!(submit(&mut wam, "?- p(X, Y).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(X, z).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(a, z).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(a, X).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(b, a).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, z)."), true);
+ assert_eq!(submit(&mut wam, "?- p(a, z)."), true);
+ assert_eq!(submit(&mut wam, "?- p(a, X)."), true);
+ assert_eq!(submit(&mut wam, "?- p(b, a)."), false);
submit(&mut wam, "p(X, Y, Z) :- q(X), r(Y), s(Z).
- p(a, b, Z) :- q(Z).");
+ p(a, b, Z) :- q(Z).");
submit(&mut wam, "q(x).");
submit(&mut wam, "r(y).");
submit(&mut wam, "s(z).");
- assert_eq!(submit(&mut wam, "?- p(X, Y, Z).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(a, b, c).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(a, b, C).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- p(X, Y, Z)."), true);
+ assert_eq!(submit(&mut wam, "?- p(a, b, c)."), false);
+ assert_eq!(submit(&mut wam, "?- p(a, b, C)."), true);
submit(&mut wam, "p(X) :- q(X). p(X) :- r(X).");
submit(&mut wam, "q(X) :- a.");
submit(&mut wam, "s(x, t).");
submit(&mut wam, "t(y, u).");
- assert_eq!(submit(&mut wam, "?- p(X).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(x).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(y).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(z).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- p(X)."), true);
+ assert_eq!(submit(&mut wam, "?- p(x)."), true);
+ assert_eq!(submit(&mut wam, "?- p(y)."), true);
+ assert_eq!(submit(&mut wam, "?- p(z)."), false);
submit(&mut wam, "p(f(f(X)), h(W), Y) :- g(W), h(W), f(X).
p(X, Y, Z) :- h(Y), g(W), z(Z).");
submit(&mut wam, "f(s).");
submit(&mut wam, "z(Z).");
- assert_eq!(submit(&mut wam, "?- p(X, Y, Z).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(X, X, Z).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(f(f(Z)), Y, Z).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(X, X, X).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(X, Y, X).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(f(f(X)), h(f(X)), Y).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y, Z)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, X, Z)."), true);
+ assert_eq!(submit(&mut wam, "?- p(f(f(Z)), Y, Z)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, X, X)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y, X)."), true);
+ assert_eq!(submit(&mut wam, "?- p(f(f(X)), h(f(X)), Y)."), false);
submit(&mut wam, "p(X) :- f(Y), g(Y), i(X, Y).");
submit(&mut wam, "g(f(a)). g(f(b)). g(f(c)).");
submit(&mut wam, "f(f(a)). f(f(b)). f(f(c)).");
submit(&mut wam, "i(X, X).");
- assert_eq!(submit(&mut wam, "?- p(X).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- p(X)."), true);
submit(&mut wam, "p(X) :- f(f(Y)), g(Y, f(Y)), i(X, f(Y)).");
submit(&mut wam, "g(Y, f(Y)) :- g(f(Y)).");
- assert_eq!(submit(&mut wam, "?- p(X).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- p(X)."), true);
}
#[test]
submit(&mut wam, "memberchk(X, [X|_]) :- !.
memberchk(X, [_|Xs]) :- memberchk(X, Xs).");
- assert_eq!(submit(&mut wam, "?- memberchk(X, [a,b,c]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- memberchk([X,X], [a,b,c,[d,e],[d,d]]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- memberchk([X,X], [a,b,c,[D,d],[e,e]]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- memberchk([X,X], [a,b,c,[e,d],[f,e]]).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- memberchk([X,X,Y], [a,b,c,[e,d],[f,e]]).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- memberchk([X,X,Y], [a,b,c,[e,e,d],[f,e]]).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- memberchk(X, [a,b,c])."), true);
+ assert_eq!(submit(&mut wam, "?- memberchk([X,X], [a,b,c,[d,e],[d,d]])."), true);
+ assert_eq!(submit(&mut wam, "?- memberchk([X,X], [a,b,c,[D,d],[e,e]])."), true);
+ assert_eq!(submit(&mut wam, "?- memberchk([X,X], [a,b,c,[e,d],[f,e]])."), false);
+ assert_eq!(submit(&mut wam, "?- memberchk([X,X,Y], [a,b,c,[e,d],[f,e]])."), false);
+ assert_eq!(submit(&mut wam, "?- memberchk([X,X,Y], [a,b,c,[e,e,d],[f,e]])."), true);
// test deep cuts.
- submit(&mut wam, "commit :- a, !.");
+ submit(&mut wam, "commit :- a, !.");
+
+ assert_eq!(submit(&mut wam, "?- commit."), false);
- assert_eq!(submit(&mut wam, "?- commit.").failed_query(), true);
-
submit(&mut wam, "a.");
- assert_eq!(submit(&mut wam, "?- commit.").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- commit."), true);
submit(&mut wam, "commit(X) :- a(X), !.");
- assert_eq!(submit(&mut wam, "?- commit(X).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- commit(X)."), false);
submit(&mut wam, "a(x).");
- assert_eq!(submit(&mut wam, "?- commit(X).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- commit(X)."), true);
submit(&mut wam, "a :- b, !, c. a :- d.");
- assert_eq!(submit(&mut wam, "?- a.").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- a."), false);
submit(&mut wam, "b.");
- assert_eq!(submit(&mut wam, "?- a.").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- a."), false);
submit(&mut wam, "d.");
// we've committed to the first clause since the query on b
// succeeds, so we expect failure here.
- assert_eq!(submit(&mut wam, "?- a.").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- a."), false);
submit(&mut wam, "c.");
- assert_eq!(submit(&mut wam, "?- a.").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- a."), true);
submit(&mut wam, "a(X) :- b, !, c(X). a(X) :- d(X).");
- assert_eq!(submit(&mut wam, "?- a(X).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- a(X)."), false);
submit(&mut wam, "c(c).");
submit(&mut wam, "d(d).");
- assert_eq!(submit(&mut wam, "?- a(X).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- a(X)."), true);
submit(&mut wam, "b.");
- assert_eq!(submit(&mut wam, "?- a(X).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- a(X)."), true);
wam.clear();
- assert_eq!(submit(&mut wam, "?- c(X).").failed_query(), true);
-
+ assert_eq!(submit(&mut wam, "?- c(X)."), false);
+
submit(&mut wam, "a(X) :- b, c(X), !. a(X) :- d(X).");
submit(&mut wam, "b.");
- assert_eq!(submit(&mut wam, "?- a(X).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- a(X)."), false);
submit(&mut wam, "d(d).");
- assert_eq!(submit(&mut wam, "?- a(X).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- a(X)."), true);
submit(&mut wam, "c(c).");
-
- assert_eq!(submit(&mut wam, "?- a(X).").failed_query(), false);
+
+ assert_eq!(submit(&mut wam, "?- a(X)."), true);
}
-
+
#[test]
fn test_queries_on_lists() {
let mut wam = Machine::new();
submit(&mut wam, "p([Z, W]).");
- assert_eq!(submit(&mut wam, "?- p([Z, Z]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Z, W, Y]).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p([Z | W]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Z | [Z]]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Z | [W]]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Z | []]).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- p([Z, Z])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Z, W, Y])."), false);
+ assert_eq!(submit(&mut wam, "?- p([Z | W])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Z | [Z]])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Z | [W]])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Z | []])."), false);
submit(&mut wam, "p([Z, Z]).");
- assert_eq!(submit(&mut wam, "?- p([Z, Z]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Z, W, Y]).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p([Z | W]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Z | [Z]]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Z | [W]]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Z | []]).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- p([Z, Z])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Z, W, Y])."), false);
+ assert_eq!(submit(&mut wam, "?- p([Z | W])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Z | [Z]])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Z | [W]])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Z | []])."), false);
submit(&mut wam, "p([Z]).");
- assert_eq!(submit(&mut wam, "?- p([Z, Z]).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p([Z, W, Y]).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p([Z | W]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Z | [Z]]).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p([Z | [W]]).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p([Z | []]).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- p([Z, Z])."), false);
+ assert_eq!(submit(&mut wam, "?- p([Z, W, Y])."), false);
+ assert_eq!(submit(&mut wam, "?- p([Z | W])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Z | [Z]])."), false);
+ assert_eq!(submit(&mut wam, "?- p([Z | [W]])."), false);
+ assert_eq!(submit(&mut wam, "?- p([Z | []])."), true);
submit(&mut wam, "member(X, [X|Xs]).
member(X, [Y|Xs]) :- member(X, Xs).");
- assert_eq!(submit(&mut wam, "?- member(a, [c, [X, Y]]).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- member(c, [a, [X, Y]]).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- member(a, [a, [X, Y]]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- member(a, [X, Y, Z]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- member([X, X], [a, [X, Y]]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- member([X, X], [a, [b, c], [b, b], [Z, x], [d, f]]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- member([X, X], [a, [b, c], [b, d], [foo, x], [d, f]]).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- member([X, Y], [a, [b, c], [b, b], [Z, x], [d, f]]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- member([X, Y, Y], [a, [b, c], [b, b], [Z, x], [d, f]]).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- member([X, Y, Z], [a, [b, c], [b, b], [Z, x], [d, f]]).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- member(a, [c, [X, Y]])."), false);
+ assert_eq!(submit(&mut wam, "?- member(c, [a, [X, Y]])."), false);
+ assert_eq!(submit(&mut wam, "?- member(a, [a, [X, Y]])."), true);
+ assert_eq!(submit(&mut wam, "?- member(a, [X, Y, Z])."), true);
+ assert_eq!(submit(&mut wam, "?- member([X, X], [a, [X, Y]])."), true);
+ assert_eq!(submit(&mut wam, "?- member([X, X], [a, [b, c], [b, b], [Z, x], [d, f]])."), true);
+ assert_eq!(submit(&mut wam, "?- member([X, X], [a, [b, c], [b, d], [foo, x], [d, f]])."), false);
+ assert_eq!(submit(&mut wam, "?- member([X, Y], [a, [b, c], [b, b], [Z, x], [d, f]])."), true);
+ assert_eq!(submit(&mut wam, "?- member([X, Y, Y], [a, [b, c], [b, b], [Z, x], [d, f]])."), false);
+ assert_eq!(submit(&mut wam, "?- member([X, Y, Z], [a, [b, c], [b, b], [Z, x], [d, f]])."), false);
}
#[test]
p(X) :- x.
p([c, d, e]).");
- assert_eq!(submit(&mut wam, "?- p(a).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(b).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(c).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(f(a)).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(g(b, X)).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(g(Y, X)).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(g(Y, c)).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(g(b)).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p([]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c, d, e]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c, d | X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c|X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Y|X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Y|[d|Xs]]).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- p(a)."), false);
+ assert_eq!(submit(&mut wam, "?- p(b)."), false);
+ assert_eq!(submit(&mut wam, "?- p(c)."), false);
+ assert_eq!(submit(&mut wam, "?- p(f(a))."), false);
+ assert_eq!(submit(&mut wam, "?- p(g(b, X))."), false);
+ assert_eq!(submit(&mut wam, "?- p(g(Y, X))."), false);
+ assert_eq!(submit(&mut wam, "?- p(g(Y, c))."), false);
+ assert_eq!(submit(&mut wam, "?- p(g(b))."), false);
+ assert_eq!(submit(&mut wam, "?- p([])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c, d, e])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c, d | X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c|X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Y|X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Y|[d|Xs]])."), true);
submit(&mut wam, "a.");
-
- assert_eq!(submit(&mut wam, "?- p(a).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(b).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(c).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(f(a)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(g(b, X)).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(g(Y, X)).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(g(Y, c)).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(g(b)).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p([]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c, d, e]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c, d | X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c|X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Y|X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Y|[d|Xs]]).").failed_query(), false);
+
+ assert_eq!(submit(&mut wam, "?- p(a)."), true);
+ assert_eq!(submit(&mut wam, "?- p(b)."), false);
+ assert_eq!(submit(&mut wam, "?- p(c)."), false);
+ assert_eq!(submit(&mut wam, "?- p(f(a))."), true);
+ assert_eq!(submit(&mut wam, "?- p(g(b, X))."), false);
+ assert_eq!(submit(&mut wam, "?- p(g(Y, X))."), false);
+ assert_eq!(submit(&mut wam, "?- p(g(Y, c))."), false);
+ assert_eq!(submit(&mut wam, "?- p(g(b))."), false);
+ assert_eq!(submit(&mut wam, "?- p([])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c, d, e])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c, d | X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c|X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Y|X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Y|[d|Xs]])."), true);
submit(&mut wam, "b.");
submit(&mut wam, "f(x).");
-
- assert_eq!(submit(&mut wam, "?- p(a).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(b).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(c).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- p(f(a)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(g(b, X)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(g(Y, X)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(g(Y, c)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(g(b)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c, d, e]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c, d | X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c|X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Y|X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Y|[d|Xs]]).").failed_query(), false);
+
+ assert_eq!(submit(&mut wam, "?- p(a)."), true);
+ assert_eq!(submit(&mut wam, "?- p(b)."), true);
+ assert_eq!(submit(&mut wam, "?- p(c)."), false);
+ assert_eq!(submit(&mut wam, "?- p(f(a))."), true);
+ assert_eq!(submit(&mut wam, "?- p(g(b, X))."), true);
+ assert_eq!(submit(&mut wam, "?- p(g(Y, X))."), true);
+ assert_eq!(submit(&mut wam, "?- p(g(Y, c))."), true);
+ assert_eq!(submit(&mut wam, "?- p(g(b))."), true);
+ assert_eq!(submit(&mut wam, "?- p([])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c, d, e])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c, d | X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c|X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Y|X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Y|[d|Xs]])."), true);
submit(&mut wam, "c.");
submit(&mut wam, "g(X).");
- assert_eq!(submit(&mut wam, "?- p(a).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(b).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(c).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(f(a)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(g(b, X)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(g(Y, X)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(g(Y, c)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(g(b)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c, d, e]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c, d | X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c|X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Y|X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Y|[d|Xs]]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(blah).").failed_query(), true);
+ assert_eq!(submit(&mut wam, "?- p(a)."), true);
+ assert_eq!(submit(&mut wam, "?- p(b)."), true);
+ assert_eq!(submit(&mut wam, "?- p(c)."), true);
+ assert_eq!(submit(&mut wam, "?- p(f(a))."), true);
+ assert_eq!(submit(&mut wam, "?- p(g(b, X))."), true);
+ assert_eq!(submit(&mut wam, "?- p(g(Y, X))."), true);
+ assert_eq!(submit(&mut wam, "?- p(g(Y, c))."), true);
+ assert_eq!(submit(&mut wam, "?- p(g(b))."), true);
+ assert_eq!(submit(&mut wam, "?- p([])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c, d, e])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c, d | X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c|X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Y|X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Y|[d|Xs]])."), true);
+ assert_eq!(submit(&mut wam, "?- p(blah)."), false);
submit(&mut wam, "x.");
-
- assert_eq!(submit(&mut wam, "?- p(a).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(b).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(c).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(f(a)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(g(b, X)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(g(Y, X)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(g(Y, c)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(g(b)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c, d, e]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c, d | X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([c|X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Y|X]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p([Y|[d|Xs]]).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- p(blah).").failed_query(), false);
+
+ assert_eq!(submit(&mut wam, "?- p(a)."), true);
+ assert_eq!(submit(&mut wam, "?- p(b)."), true);
+ assert_eq!(submit(&mut wam, "?- p(c)."), true);
+ assert_eq!(submit(&mut wam, "?- p(true(a))."), true);
+ assert_eq!(submit(&mut wam, "?- p(g(b, X))."), true);
+ assert_eq!(submit(&mut wam, "?- p(g(Y, X))."), true);
+ assert_eq!(submit(&mut wam, "?- p(g(Y, c))."), true);
+ assert_eq!(submit(&mut wam, "?- p(g(b))."), true);
+ assert_eq!(submit(&mut wam, "?- p([])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c, d, e])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c, d | X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([c|X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Y|X])."), true);
+ assert_eq!(submit(&mut wam, "?- p([Y|[d|Xs]])."), true);
+ assert_eq!(submit(&mut wam, "?- p(blah)."), true);
submit(&mut wam, "call(or(X, Y)) :- call(X).
call(trace) :- trace.
call(call(X)) :- call(X).
call(repeat).
call(repeat) :- call(repeat).
- call(true).");
-
- assert_eq!(submit(&mut wam, "?- call(repeat).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(true).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(call(repeat)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(call(true)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(notrace).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- call(nl).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- call(builtin(X)).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- call(extern(X)).").failed_query(), true);
-
+ call(false).");
+
+ assert_eq!(submit(&mut wam, "?- call(repeat)."), true);
+ assert_eq!(submit(&mut wam, "?- call(false)."), true);
+ assert_eq!(submit(&mut wam, "?- call(call(repeat))."), true);
+ assert_eq!(submit(&mut wam, "?- call(call(false))."), true);
+ assert_eq!(submit(&mut wam, "?- call(notrace)."), false);
+ assert_eq!(submit(&mut wam, "?- call(nl)."), false);
+ assert_eq!(submit(&mut wam, "?- call(builtin(X))."), false);
+ assert_eq!(submit(&mut wam, "?- call(extern(X))."), false);
+
submit(&mut wam, "notrace.");
submit(&mut wam, "nl.");
-
- assert_eq!(submit(&mut wam, "?- call(repeat).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(true).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(call(repeat)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(call(true)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(notrace).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(nl).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(builtin(X)).").failed_query(), true);
- assert_eq!(submit(&mut wam, "?- call(extern(X)).").failed_query(), true);
-
+
+ assert_eq!(submit(&mut wam, "?- call(repeat)."), true);
+ assert_eq!(submit(&mut wam, "?- call(false)."), true);
+ assert_eq!(submit(&mut wam, "?- call(call(repeat))."), true);
+ assert_eq!(submit(&mut wam, "?- call(call(false))."), true);
+ assert_eq!(submit(&mut wam, "?- call(notrace)."), true);
+ assert_eq!(submit(&mut wam, "?- call(nl)."), true);
+ assert_eq!(submit(&mut wam, "?- call(builtin(X))."), false);
+ assert_eq!(submit(&mut wam, "?- call(extern(X))."), false);
+
submit(&mut wam, "builtin(X).");
submit(&mut wam, "extern(x).");
- assert_eq!(submit(&mut wam, "?- call(repeat).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(true).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(call(repeat)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(call(true)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(notrace).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(nl).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(builtin(X)).").failed_query(), false);
- assert_eq!(submit(&mut wam, "?- call(extern(X)).").failed_query(), false);
+ assert_eq!(submit(&mut wam, "?- call(repeat)."), true);
+ assert_eq!(submit(&mut wam, "?- call(false)."), true);
+ assert_eq!(submit(&mut wam, "?- call(call(repeat))."), true);
+ assert_eq!(submit(&mut wam, "?- call(call(false))."), true);
+ assert_eq!(submit(&mut wam, "?- call(notrace)."), true);
+ assert_eq!(submit(&mut wam, "?- call(nl)."), true);
+ assert_eq!(submit(&mut wam, "?- call(builtin(X))."), true);
+ assert_eq!(submit(&mut wam, "?- call(extern(X))."), true);
+ }
+
+ #[test]
+ fn test_queries_on_conjuctive_queries() {
+ let mut wam = Machine::new();
+
+ submit(&mut wam, "p(a, b).");
+ submit(&mut wam, "q(b, c).");
+
+ assert_eq!(submit(&mut wam, "?- p(X, Y), q(Y, Z)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y), q(Y, X)."), false);
+
+ submit(&mut wam, "p(a, [f(g(X))]).");
+ submit(&mut wam, "q(Y, c).");
+
+ assert_eq!(submit(&mut wam, "?- p(X, Y), q(Y, Z)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y), q(Y, X)."), false);
+
+ submit(&mut wam, "member(X, [X|_]).
+ member(X, [_|Xs]) :- member(X, Xs).");
+
+ assert_eq!(submit(&mut wam, "?- member(X, [a,b,c]), member(X, [a,b,c])."), true);
+ assert_eq!(submit(&mut wam, "?- member(X, [a,b,c]), member(X, [b,c])."), true);
+ assert_eq!(submit(&mut wam, "?- member(X, [a,c]), member(X, [b,c])."), true);
+ assert_eq!(submit(&mut wam, "?- member(X, [a,b,c,d]), !, member(X, [a,d])."), true);
+ assert_eq!(submit(&mut wam, "?- member(X, [a,b,c,d]), !, member(X, [e])."), false);
+ assert_eq!(submit(&mut wam, "?- member([X,X],[a,b,c,[d,d],[e,d]]),
+ member(X, [a,b,c,d,e,f,g]),
+ member(Y, [X, a, b, c, d])."),
+ true);
+ assert_eq!(submit(&mut wam, "?- member([X,X],[a,b,c,[d,d],[e,d]]),
+ member(X, [a,b,c,d,e,f,g]),
+ !,
+ member(Y, [X, a, b, c, d])."),
+ true);
+
+ submit(&mut wam, "p(a, [f(g(X))]).");
+ submit(&mut wam, "q(Y, c).");
+
+ assert_eq!(submit(&mut wam, "?- p(X, Y), q(Y, Z)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y), q(Y, X)."), false);
+
+ submit(&mut wam, "p(a, [f(g(X))]). p(X, c) :- c.");
+ submit(&mut wam, "c.");
+ submit(&mut wam, "q(Y, c).");
+
+ assert_eq!(submit(&mut wam, "?- p(X, Y), q(Y, Z)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y), !, q(Y, Z)."), true);
+
+ submit(&mut wam, "q([f(g(x))], Z). q([f(g(y))], Y). q([f(g(z))], a).");
+
+ assert_eq!(submit(&mut wam, "?- p(X, Y), q(Y, Z)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y), !, q(Y, Z)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y), !, q(Y, X)."), true);
+
+ submit(&mut wam, "p(X, [f(g(x))]). p(X, [f(g(y))]). p(X, [f(g(z))]).");
+
+ assert_eq!(submit(&mut wam, "?- q(f(X), Y), p(X, Y)."), false);
+ assert_eq!(submit(&mut wam, "?- q(X, Y), p(X, Y)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y), q(X, Y)."), true);
+ assert_eq!(submit(&mut wam, "?- p(X, Y), q(Y, X)."), true);
+ assert_eq!(submit(&mut wam, "?- q(X, Y), p(Y, X)."), true);
}
}
+fn process_buffer(wam: &mut Machine, buffer: &str)
+{
+ match parse_TopLevel(buffer.trim()) {
+ Ok(tl) => {
+ let result = eval(wam, &tl);
+ print(wam, result);
+ },
+ Err(_) => {
+ println!("Grammatical error of some kind!");
+ }
+ };
+}
+
fn prolog_repl() {
let mut wam = Machine::new();
if buffer == "quit\n" {
break;
} else if buffer == "clear\n" {
- wam = Machine::new();
+ wam.clear();
continue;
}
- let result = eval(&mut wam, buffer.trim());
- print(&mut wam, result);
-
+ process_buffer(&mut wam, buffer.trim());
wam.reset();
}
}
Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2b(::std::vec::Vec<Box<Term>>),
Nt_28_3cPredicateClause_3e_29(PredicateClause),
Nt_28_3cPredicateClause_3e_29_2b(::std::vec::Vec<PredicateClause>),
+ Nt_28_3cTermOrCut_3e_20_22_2c_22_29(TermOrCut),
+ Nt_28_3cTermOrCut_3e_20_22_2c_22_29_2a(::std::vec::Vec<TermOrCut>),
+ Nt_28_3cTermOrCut_3e_20_22_2c_22_29_2b(::std::vec::Vec<TermOrCut>),
NtAtom(Atom),
NtBoxedTerm(Box<Term>),
NtClause(Term),
NtListInternals(Term),
NtPredicate(Vec<PredicateClause>),
NtPredicateClause(PredicateClause),
+ NtQuery(Vec<TermOrCut>),
NtRule(Rule),
NtTerm(Term),
NtTermOrCut(TermOrCut),
// State 1
0, 0, 0, 0, 0, 0, 0, 13, 14, 0, 15, 0, 16, 17, 0,
// State 2
- 0, 21, 0, 0, -30, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 21, 0, 0, -37, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 3
- 0, 0, 0, 0, -31, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -38, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 4
- 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 5
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 6
// State 9
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 10
- 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 11
- 0, 0, 0, 0, 0, 0, 0, 13, 14, 0, 15, 0, 16, 29, 0,
+ 34, 0, 0, 0, 0, 0, 0, 35, 36, 0, 37, 0, 38, 39, 0,
// State 12
- 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 39, 0, 40, 41, 0,
+ 0, 0, 0, 0, 0, 0, 0, 47, 48, 0, 49, 0, 50, 51, 0,
// State 13
- 0, 0, 0, 0, -18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 14
- 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- // State 15
0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ // State 15
+ 0, 0, 0, 0, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 16
- 0, -14, 0, 0, -14, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -19, 0, 0, -19, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 17
0, 0, 0, 0, 0, 0, 0, -13, -13, 0, -13, 0, -13, -13, 0,
// State 18
- 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 19
- 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 20
- 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, 0, 54, 55, 0,
+ 0, 0, 0, 0, 0, 0, 0, 61, 62, 0, 63, 0, 64, 65, 0,
// State 21
- 62, 0, 0, 0, 0, 0, 0, 63, 64, 0, 65, 0, 66, 67, 0,
+ 34, 0, 0, 0, 0, 0, 0, 35, 36, 0, 37, 0, 38, 39, 0,
// State 22
- 62, 0, 0, 0, 0, 0, 0, 63, 64, 0, 65, 0, 66, 67, 0,
+ 34, 0, 0, 0, 0, 0, 0, 35, 36, 0, 37, 0, 38, 39, 0,
// State 23
- 0, 0, 0, 0, 0, 0, 0, -24, -24, 0, -24, 0, -24, -24, 0,
+ 0, 0, 0, 0, 0, 0, 0, -29, -29, 0, -29, 0, -29, -29, 0,
// State 24
- 0, 0, 0, 0, 0, 0, 0, -25, -25, 0, -25, 0, -25, -25, 0,
+ 0, 0, 0, 0, 0, 0, 0, -30, -30, 0, -30, 0, -30, -30, 0,
// State 25
- 0, 69, 0, 0, -30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 34, 0, 0, 0, 0, 0, 0, 35, 36, 0, 37, 0, 38, 39, 0,
// State 26
- 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 69, 0, -37, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 27
- 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -38, -38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 28
- 0, -14, 0, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -39, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 29
- 0, 71, 0, -30, 0, 0, 0, 0, 0, -30, 0, -30, 0, 0, 0,
+ 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 30
- 0, 0, 0, 72, 0, 0, 0, 0, 0, -20, 0, 73, 0, 0, 0,
+ 0, 0, 0, -43, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 31
- 0, 0, 0, -31, 0, 0, 0, 0, 0, -31, 0, -31, 0, 0, 0,
+ 0, 0, 0, 71, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 32
- 0, 0, 0, -32, 0, 0, 0, 0, 0, -32, 0, -32, 0, 0, 0,
+ 0, 0, 0, -40, -40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 33
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0,
+ 0, 0, 0, -42, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 34
- 0, 0, 0, -15, 0, 0, 0, 0, 0, -15, 0, -15, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 47, 48, 0, 49, 0, 50, 51, 0,
// State 35
- 0, 0, 0, -33, 0, 0, 0, 0, 0, -33, 0, -33, 0, 0, 0,
+ 0, 0, 0, -23, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 36
- 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 39, 0, 40, 41, 0,
+ 0, 0, 0, -41, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 37
- 0, 0, 0, -18, 0, 0, 0, 0, 0, -18, 0, -18, 0, 0, 0,
+ 0, 0, 0, -48, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 38
- 0, 0, 0, -34, 0, 0, 0, 0, 0, -34, 0, -34, 0, 0, 0,
+ 0, -19, 0, -19, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 39
- 0, 0, 0, -41, 0, 0, 0, 0, 0, -41, 0, -41, 0, 0, 0,
+ 0, 73, 0, -37, 0, 0, 0, 0, 0, -37, 0, -37, 0, 0, 0,
// State 40
- 0, -14, 0, -14, 0, 0, 0, 0, 0, -14, 0, -14, 0, 0, 0,
+ 0, 0, 0, 74, 0, 0, 0, 0, 0, -25, 0, 75, 0, 0, 0,
// State 41
- 0, 0, 0, 0, 0, 0, 0, -24, -24, 0, -24, 0, -24, -24, 0,
+ 0, 0, 0, -38, 0, 0, 0, 0, 0, -38, 0, -38, 0, 0, 0,
// State 42
- 0, 0, 0, 0, 0, 0, 0, -25, -25, 0, -25, 0, -25, -25, 0,
+ 0, 0, 0, -39, 0, 0, 0, 0, 0, -39, 0, -39, 0, 0, 0,
// State 43
- 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, 0, 54, 55, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0,
// State 44
- 0, 77, -30, -30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -20, 0, 0, 0, 0, 0, -20, 0, -20, 0, 0, 0,
// State 45
- 0, 0, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -40, 0, 0, 0, 0, 0, -40, 0, -40, 0, 0, 0,
// State 46
- 0, 0, -31, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 47, 48, 0, 49, 0, 50, 51, 0,
// State 47
- 0, 0, -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -23, 0, 0, 0, 0, 0, -23, 0, -23, 0, 0, 0,
// State 48
- 0, 0, -15, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -41, 0, 0, 0, 0, 0, -41, 0, -41, 0, 0, 0,
// State 49
- 0, 0, -33, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -48, 0, 0, 0, 0, 0, -48, 0, -48, 0, 0, 0,
// State 50
- 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 39, 0, 40, 41, 0,
+ 0, -19, 0, -19, 0, 0, 0, 0, 0, -19, 0, -19, 0, 0, 0,
// State 51
- 0, 0, -18, -18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -29, -29, 0, -29, 0, -29, -29, 0,
// State 52
- 0, 0, -34, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -30, -30, 0, -30, 0, -30, -30, 0,
// State 53
- 0, 0, -41, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 61, 62, 0, 63, 0, 64, 65, 0,
// State 54
- 0, -14, -14, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 79, -37, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 55
- 0, 81, 0, -30, -30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 80, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 56
- 0, 0, 0, -31, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -38, -38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 57
- 0, 0, 0, -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -39, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 58
- 0, 0, 0, -36, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -20, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 59
- 0, 0, 0, 83, -28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -40, -40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 60
- 0, 0, 0, -33, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 47, 48, 0, 49, 0, 50, 51, 0,
// State 61
- 0, 0, 0, -35, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -23, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 62
- 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 39, 0, 40, 41, 0,
+ 0, 0, -41, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 63
- 0, 0, 0, -18, -18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -48, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 64
- 0, 0, 0, -34, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -19, -19, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 65
- 0, 0, 0, -41, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 84, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 66
- 0, -14, 0, -14, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 84, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 67
- 0, 0, 0, 83, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 86, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 68
- 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, 0, 54, 55, 0,
+ 0, 0, 0, 0, 0, 0, 0, 61, 62, 0, 63, 0, 64, 65, 0,
// State 69
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 70
- 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, 0, 54, 55, 0,
+ -17, 0, 0, 0, 0, 0, 0, -17, -17, 0, -17, 0, -17, -17, 0,
// State 71
- 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 39, 0, 40, 41, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0,
// State 72
- 0, 0, 0, 0, 0, 0, 0, 97, 98, 0, 99, 0, 100, 101, 0,
+ 0, 0, 0, 0, 0, 0, 0, 61, 62, 0, 63, 0, 64, 65, 0,
// State 73
- 0, 0, 0, 0, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 47, 48, 0, 49, 0, 50, 51, 0,
// State 74
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 99, 100, 0, 101, 0, 102, 103, 0,
// State 75
- 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 76
- 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, 0, 54, 55, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0,
// State 77
- 0, 0, 0, 0, -16, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 78
- 0, 0, 0, 0, 0, 0, 0, -9, -9, 0, -9, 0, -9, -9, 0,
+ 0, 0, 0, 0, 0, 0, 0, 61, 62, 0, 63, 0, 64, 65, 0,
// State 79
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -21, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 80
- 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, 0, 54, 55, 0,
+ 0, 0, 0, 0, 0, 0, 0, -9, -9, 0, -9, 0, -9, -9, 0,
// State 81
- 0, 0, 0, 110, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0,
// State 82
- 62, 0, 0, 0, 0, 0, 0, 63, 64, 0, 65, 0, 66, 67, 0,
+ 0, 0, 0, 110, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 83
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0,
+ 34, 0, 0, 0, 0, 0, 0, 35, 36, 0, 37, 0, 38, 39, 0,
// State 84
- 0, 0, 0, 110, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 110, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 85
- 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, 0, 54, 55, 0,
+ -18, 0, 0, 0, 0, 0, 0, -18, -18, 0, -18, 0, -18, -18, 0,
// State 86
- 0, 0, 114, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 61, 62, 0, 63, 0, 64, 65, 0,
// State 87
- 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, 0, 54, 55, 0,
+ 0, 0, 113, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 88
- 0, 0, 116, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -24, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 89
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 61, 62, 0, 63, 0, 64, 65, 0,
// State 90
- 0, 117, 0, 0, 0, 0, 0, 0, 0, -30, 0, 0, 0, 0, 0,
+ 0, 0, 115, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 91
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0,
// State 92
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0,
+ 0, 116, 0, 0, 0, 0, 0, 0, 0, -37, 0, 0, 0, 0, 0,
// State 93
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0,
// State 94
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -38, 0, 0, 0, 0, 0,
// State 95
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0, 0,
// State 96
- 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 39, 0, 40, 41, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0, 0, 0,
// State 97
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -18, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, 0, 0, 0, 0,
// State 98
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 47, 48, 0, 49, 0, 50, 51, 0,
// State 99
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, 0, 0, 0, 0, 0,
// State 100
- 0, -14, 0, 0, 0, 0, 0, 0, 0, -14, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0,
// State 101
- 0, 0, 0, -19, 0, 0, 0, 0, 0, -19, 0, -19, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, 0, 0, 0, 0, 0,
// State 102
- 0, 0, 0, 0, -17, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -19, 0, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0, 0, 0,
// State 103
- 0, 0, 0, 0, 0, 0, 0, -10, -10, 0, -10, 0, -10, -10, 0,
+ 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, -24, 0, 0, 0,
// State 104
- 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, 0, 54, 55, 0,
+ 0, 0, 0, 0, -22, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 105
- 0, 0, 120, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -10, -10, 0, -10, 0, -10, -10, 0,
// State 106
- 0, 0, -19, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 61, 62, 0, 63, 0, 64, 65, 0,
// State 107
- 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, 0, 54, 55, 0,
+ 0, 0, 119, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 108
- 0, 0, 122, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -24, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 109
- 62, 0, 0, 0, 0, 0, 0, 63, 64, 0, 65, 0, 66, 67, 0,
+ 34, 0, 0, 0, 0, 0, 0, 35, 36, 0, 37, 0, 38, 39, 0,
// State 110
0, 0, 0, -4, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 111
- 0, 0, 0, -19, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 121, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 112
- 0, 0, 124, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -21, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 113
- 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 122, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 114
- 0, 0, 125, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -21, 0, 0, 0, 0, 0, -21, 0, -21, 0, 0, 0,
// State 115
- 0, 0, 0, -16, 0, 0, 0, 0, 0, -16, 0, -16, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 61, 62, 0, 63, 0, 64, 65, 0,
// State 116
- 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, 0, 54, 55, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0,
// State 117
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0,
+ 0, 0, 126, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 118
- 0, 0, 129, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -21, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 119
- 0, 0, -16, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -5, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 120
- 0, 0, 130, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -22, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 121
- 0, 0, 0, -16, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -22, 0, 0, 0, 0, 0, -22, 0, -22, 0, 0, 0,
// State 122
- 0, 0, 0, -5, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 61, 62, 0, 63, 0, 64, 65, 0,
// State 123
- 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 128, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 124
- 0, 0, 0, -17, 0, 0, 0, 0, 0, -17, 0, -17, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0,
// State 125
- 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, 0, 54, 55, 0,
+ 0, 0, -22, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 126
- 0, 0, 132, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 129, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 127
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, 0, 0, 0, 0, 0,
// State 128
- 0, 0, -17, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- // State 129
- 0, 0, 0, -17, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- // State 130
- 0, 0, 133, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- // State 131
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0,
- // State 132
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, 0, 0, 0, 0, 0,
];
const __EOF_ACTION: &'static [i32] = &[
0,
0,
0,
0,
- -38,
+ -45,
0,
0,
0,
- -42,
+ -49,
0,
0,
0,
0,
0,
0,
- -23,
+ -28,
0,
0,
0,
0,
0,
- -39,
- -40,
+ -46,
+ -47,
0,
0,
0,
0,
0,
0,
- -24,
- -25,
0,
0,
0,
0,
0,
0,
+ -29,
+ -30,
0,
0,
0,
0,
0,
0,
- -37,
- 0,
- 0,
- 0,
- 0,
+ -44,
0,
0,
0,
];
const __GOTO: &'static [i32] = &[
// State 0
- 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 4, 5, 0, 6, 7, 8, 9, 0, 10, 11, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 4, 5, 0, 6, 7, 0, 8, 9, 0, 10, 11, 0,
// State 1
- 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 5, 0, 0, 18, 19, 20, 0, 0, 11, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 5, 0, 0, 18, 0, 19, 20, 0, 0, 11, 0,
// State 2
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 3
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 4
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 5
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 6
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 7
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 8
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 9
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 10
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 11
- 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 27, 5, 0, 0, 0, 0, 28, 0, 0, 11, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 0, 28, 29, 0, 0, 0, 30, 0, 31, 32, 0, 33, 0,
// State 12
- 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 33, 34, 0, 0, 0, 35, 0, 0, 36, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 43, 44, 0, 0, 0, 0, 45, 0, 0, 46, 0,
// State 13
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 14
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 15
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 16
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 17
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 18
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 19
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 20
- 0, 0, 0, 0, 0, 44, 0, 0, 45, 46, 47, 48, 0, 0, 0, 0, 49, 0, 0, 50, 0,
+ 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 55, 56, 57, 58, 0, 0, 0, 0, 0, 59, 0, 0, 60, 0,
// State 21
- 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 57, 58, 0, 0, 0, 0, 59, 60, 0, 61, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 29, 0, 0, 0, 0, 0, 31, 66, 0, 33, 0,
// State 22
- 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 57, 58, 0, 0, 0, 0, 59, 68, 0, 61, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 29, 0, 0, 0, 0, 0, 31, 67, 0, 33, 0,
// State 23
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 24
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 25
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 29, 0, 0, 0, 0, 0, 31, 68, 0, 33, 0,
// State 26
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 27
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 28
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 29
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 30
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 31
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 32
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 33
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 34
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 43, 72, 0, 0, 0, 0, 45, 0, 0, 46, 0,
// State 35
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 36
- 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 33, 75, 0, 0, 0, 35, 0, 0, 36, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 37
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 38
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 39
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 40
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 41
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 42
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 43
- 0, 0, 0, 0, 0, 0, 0, 0, 45, 76, 47, 48, 0, 0, 0, 0, 49, 0, 0, 50, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 44
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 45
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 46
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 43, 77, 0, 0, 0, 0, 45, 0, 0, 46, 0,
// State 47
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 48
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 49
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 50
- 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 33, 80, 0, 0, 0, 35, 0, 0, 36, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 51
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 52
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 53
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 78, 57, 58, 0, 0, 0, 0, 0, 59, 0, 0, 60, 0,
// State 54
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 55
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 56
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 57
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 58
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 59
- 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 60
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 43, 82, 0, 0, 0, 0, 45, 0, 0, 46, 0,
// State 61
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 62
- 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 33, 84, 0, 0, 0, 35, 0, 0, 36, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 63
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 64
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 65
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 66
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 67
- 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 68
- 0, 0, 0, 0, 0, 86, 0, 0, 45, 87, 47, 48, 0, 0, 0, 0, 49, 0, 0, 50, 0,
+ 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 55, 88, 57, 58, 0, 0, 0, 0, 0, 59, 0, 0, 60, 0,
// State 69
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 70
- 0, 0, 0, 0, 0, 88, 0, 0, 45, 89, 47, 48, 0, 0, 0, 0, 49, 0, 0, 50, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 71
- 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 33, 90, 0, 0, 0, 35, 0, 0, 36, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 72
- 0, 0, 0, 0, 0, 0, 0, 0, 91, 92, 93, 94, 0, 0, 0, 0, 95, 0, 0, 96, 0,
+ 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 55, 91, 57, 58, 0, 0, 0, 0, 0, 59, 0, 0, 60, 0,
// State 73
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 43, 92, 0, 0, 0, 0, 45, 0, 0, 46, 0,
// State 74
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 94, 95, 96, 0, 0, 0, 0, 0, 97, 0, 0, 98, 0,
// State 75
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 76
- 0, 0, 0, 0, 0, 105, 0, 0, 45, 106, 47, 48, 0, 0, 0, 0, 49, 0, 0, 50, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 77
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 78
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 55, 108, 57, 58, 0, 0, 0, 0, 0, 59, 0, 0, 60, 0,
// State 79
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 80
- 0, 0, 0, 0, 0, 108, 0, 0, 45, 109, 47, 48, 0, 0, 0, 0, 49, 0, 0, 50, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 81
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 82
- 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 57, 58, 0, 0, 0, 0, 59, 111, 0, 61, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 83
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 29, 0, 0, 0, 0, 0, 31, 111, 0, 33, 0,
// State 84
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 85
- 0, 0, 0, 0, 0, 0, 0, 0, 45, 113, 47, 48, 0, 0, 0, 0, 49, 0, 0, 50, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 86
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 112, 57, 58, 0, 0, 0, 0, 0, 59, 0, 0, 60, 0,
// State 87
- 0, 0, 0, 0, 0, 0, 0, 0, 45, 115, 47, 48, 0, 0, 0, 0, 49, 0, 0, 50, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 88
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 89
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 114, 57, 58, 0, 0, 0, 0, 0, 59, 0, 0, 60, 0,
// State 90
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 91
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 92
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 93
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 94
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 95
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 96
- 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 33, 118, 0, 0, 0, 35, 0, 0, 36, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 97
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 98
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 43, 117, 0, 0, 0, 0, 45, 0, 0, 46, 0,
// State 99
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 100
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 101
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 102
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 103
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 104
- 0, 0, 0, 0, 0, 0, 0, 0, 45, 119, 47, 48, 0, 0, 0, 0, 49, 0, 0, 50, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 105
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 106
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 118, 57, 58, 0, 0, 0, 0, 0, 59, 0, 0, 60, 0,
// State 107
- 0, 0, 0, 0, 0, 0, 0, 0, 45, 121, 47, 48, 0, 0, 0, 0, 49, 0, 0, 50, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 108
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 109
- 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 57, 58, 0, 0, 0, 0, 59, 123, 0, 61, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 29, 0, 0, 0, 0, 0, 31, 120, 0, 33, 0,
// State 110
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 111
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 112
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 113
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 114
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 115
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 55, 124, 57, 58, 0, 0, 0, 0, 0, 59, 0, 0, 60, 0,
// State 116
- 0, 0, 0, 0, 0, 126, 0, 0, 45, 127, 47, 48, 0, 0, 0, 0, 49, 0, 0, 50, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 117
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 118
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 119
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 120
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 121
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 122
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 127, 57, 58, 0, 0, 0, 0, 0, 59, 0, 0, 60, 0,
// State 123
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 124
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 125
- 0, 0, 0, 0, 0, 0, 0, 0, 45, 131, 47, 48, 0, 0, 0, 0, 49, 0, 0, 50, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 126
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 127
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// State 128
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- // State 129
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- // State 130
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- // State 131
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- // State 132
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
];
fn __expected_tokens(__state: usize) -> Vec<::std::string::String> {
const __TERMINAL: &'static [&'static str] = &[
{
let __nonterminal = match -__action {
1 => {
- // ("," <TermOrCut>) = ",", TermOrCut => ActionFn(28);
+ // ("," <TermOrCut>) = ",", TermOrCut => ActionFn(29);
let __sym1 = __pop_NtTermOrCut(__symbols);
let __sym0 = __pop_Term_22_2c_22(__symbols);
let __start = __sym0.0.clone();
let __end = __sym1.2.clone();
- let __nt = super::__action28::<>(input, __sym0, __sym1);
+ let __nt = super::__action29::<>(input, __sym0, __sym1);
let __states_len = __states.len();
__states.truncate(__states_len - 2);
__symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cTermOrCut_3e_29(__nt), __end));
0
}
2 => {
- // ("," <TermOrCut>)* = => ActionFn(26);
+ // ("," <TermOrCut>)* = => ActionFn(27);
let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default();
let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone());
- let __nt = super::__action26::<>(input, &__start, &__end);
+ let __nt = super::__action27::<>(input, &__start, &__end);
let __states_len = __states.len();
__states.truncate(__states_len - 0);
__symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cTermOrCut_3e_29_2a(__nt), __end));
1
}
3 => {
- // ("," <TermOrCut>)* = ("," <TermOrCut>)+ => ActionFn(27);
+ // ("," <TermOrCut>)* = ("," <TermOrCut>)+ => ActionFn(28);
let __sym0 = __pop_Nt_28_22_2c_22_20_3cTermOrCut_3e_29_2b(__symbols);
let __start = __sym0.0.clone();
let __end = __sym0.2.clone();
- let __nt = super::__action27::<>(input, __sym0);
+ let __nt = super::__action28::<>(input, __sym0);
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cTermOrCut_3e_29_2a(__nt), __end));
1
}
4 => {
- // ("," <TermOrCut>)+ = ",", TermOrCut => ActionFn(39);
+ // ("," <TermOrCut>)+ = ",", TermOrCut => ActionFn(45);
let __sym1 = __pop_NtTermOrCut(__symbols);
let __sym0 = __pop_Term_22_2c_22(__symbols);
let __start = __sym0.0.clone();
let __end = __sym1.2.clone();
- let __nt = super::__action39::<>(input, __sym0, __sym1);
+ let __nt = super::__action45::<>(input, __sym0, __sym1);
let __states_len = __states.len();
__states.truncate(__states_len - 2);
__symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cTermOrCut_3e_29_2b(__nt), __end));
2
}
5 => {
- // ("," <TermOrCut>)+ = ("," <TermOrCut>)+, ",", TermOrCut => ActionFn(40);
+ // ("," <TermOrCut>)+ = ("," <TermOrCut>)+, ",", TermOrCut => ActionFn(46);
let __sym2 = __pop_NtTermOrCut(__symbols);
let __sym1 = __pop_Term_22_2c_22(__symbols);
let __sym0 = __pop_Nt_28_22_2c_22_20_3cTermOrCut_3e_29_2b(__symbols);
let __start = __sym0.0.clone();
let __end = __sym2.2.clone();
- let __nt = super::__action40::<>(input, __sym0, __sym1, __sym2);
+ let __nt = super::__action46::<>(input, __sym0, __sym1, __sym2);
let __states_len = __states.len();
__states.truncate(__states_len - 3);
__symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cTermOrCut_3e_29_2b(__nt), __end));
2
}
6 => {
- // (<BoxedTerm> ",") = BoxedTerm, "," => ActionFn(34);
+ // (<BoxedTerm> ",") = BoxedTerm, "," => ActionFn(38);
let __sym1 = __pop_Term_22_2c_22(__symbols);
let __sym0 = __pop_NtBoxedTerm(__symbols);
let __start = __sym0.0.clone();
let __end = __sym1.2.clone();
- let __nt = super::__action34::<>(input, __sym0, __sym1);
+ let __nt = super::__action38::<>(input, __sym0, __sym1);
let __states_len = __states.len();
__states.truncate(__states_len - 2);
__symbols.push((__start, __Symbol::Nt_28_3cBoxedTerm_3e_20_22_2c_22_29(__nt), __end));
3
}
7 => {
- // (<BoxedTerm> ",")* = => ActionFn(32);
+ // (<BoxedTerm> ",")* = => ActionFn(36);
let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default();
let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone());
- let __nt = super::__action32::<>(input, &__start, &__end);
+ let __nt = super::__action36::<>(input, &__start, &__end);
let __states_len = __states.len();
__states.truncate(__states_len - 0);
__symbols.push((__start, __Symbol::Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2a(__nt), __end));
4
}
8 => {
- // (<BoxedTerm> ",")* = (<BoxedTerm> ",")+ => ActionFn(33);
+ // (<BoxedTerm> ",")* = (<BoxedTerm> ",")+ => ActionFn(37);
let __sym0 = __pop_Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2b(__symbols);
let __start = __sym0.0.clone();
let __end = __sym0.2.clone();
- let __nt = super::__action33::<>(input, __sym0);
+ let __nt = super::__action37::<>(input, __sym0);
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2a(__nt), __end));
4
}
9 => {
- // (<BoxedTerm> ",")+ = BoxedTerm, "," => ActionFn(45);
+ // (<BoxedTerm> ",")+ = BoxedTerm, "," => ActionFn(51);
let __sym1 = __pop_Term_22_2c_22(__symbols);
let __sym0 = __pop_NtBoxedTerm(__symbols);
let __start = __sym0.0.clone();
let __end = __sym1.2.clone();
- let __nt = super::__action45::<>(input, __sym0, __sym1);
+ let __nt = super::__action51::<>(input, __sym0, __sym1);
let __states_len = __states.len();
__states.truncate(__states_len - 2);
__symbols.push((__start, __Symbol::Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2b(__nt), __end));
5
}
10 => {
- // (<BoxedTerm> ",")+ = (<BoxedTerm> ",")+, BoxedTerm, "," => ActionFn(46);
+ // (<BoxedTerm> ",")+ = (<BoxedTerm> ",")+, BoxedTerm, "," => ActionFn(52);
let __sym2 = __pop_Term_22_2c_22(__symbols);
let __sym1 = __pop_NtBoxedTerm(__symbols);
let __sym0 = __pop_Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2b(__symbols);
let __start = __sym0.0.clone();
let __end = __sym2.2.clone();
- let __nt = super::__action46::<>(input, __sym0, __sym1, __sym2);
+ let __nt = super::__action52::<>(input, __sym0, __sym1, __sym2);
let __states_len = __states.len();
__states.truncate(__states_len - 3);
__symbols.push((__start, __Symbol::Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2b(__nt), __end));
5
}
11 => {
- // (<PredicateClause>) = PredicateClause => ActionFn(31);
+ // (<PredicateClause>) = PredicateClause => ActionFn(35);
let __sym0 = __pop_NtPredicateClause(__symbols);
let __start = __sym0.0.clone();
let __end = __sym0.2.clone();
- let __nt = super::__action31::<>(input, __sym0);
+ let __nt = super::__action35::<>(input, __sym0);
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::Nt_28_3cPredicateClause_3e_29(__nt), __end));
6
}
12 => {
- // (<PredicateClause>)+ = PredicateClause => ActionFn(49);
+ // (<PredicateClause>)+ = PredicateClause => ActionFn(55);
let __sym0 = __pop_NtPredicateClause(__symbols);
let __start = __sym0.0.clone();
let __end = __sym0.2.clone();
- let __nt = super::__action49::<>(input, __sym0);
+ let __nt = super::__action55::<>(input, __sym0);
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::Nt_28_3cPredicateClause_3e_29_2b(__nt), __end));
7
}
13 => {
- // (<PredicateClause>)+ = (<PredicateClause>)+, PredicateClause => ActionFn(50);
+ // (<PredicateClause>)+ = (<PredicateClause>)+, PredicateClause => ActionFn(56);
let __sym1 = __pop_NtPredicateClause(__symbols);
let __sym0 = __pop_Nt_28_3cPredicateClause_3e_29_2b(__symbols);
let __start = __sym0.0.clone();
let __end = __sym1.2.clone();
- let __nt = super::__action50::<>(input, __sym0, __sym1);
+ let __nt = super::__action56::<>(input, __sym0, __sym1);
let __states_len = __states.len();
__states.truncate(__states_len - 2);
__symbols.push((__start, __Symbol::Nt_28_3cPredicateClause_3e_29_2b(__nt), __end));
7
}
14 => {
+ // (<TermOrCut> ",") = TermOrCut, "," => ActionFn(32);
+ let __sym1 = __pop_Term_22_2c_22(__symbols);
+ let __sym0 = __pop_NtTermOrCut(__symbols);
+ let __start = __sym0.0.clone();
+ let __end = __sym1.2.clone();
+ let __nt = super::__action32::<>(input, __sym0, __sym1);
+ let __states_len = __states.len();
+ __states.truncate(__states_len - 2);
+ __symbols.push((__start, __Symbol::Nt_28_3cTermOrCut_3e_20_22_2c_22_29(__nt), __end));
+ 8
+ }
+ 15 => {
+ // (<TermOrCut> ",")* = => ActionFn(30);
+ let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default();
+ let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone());
+ let __nt = super::__action30::<>(input, &__start, &__end);
+ let __states_len = __states.len();
+ __states.truncate(__states_len - 0);
+ __symbols.push((__start, __Symbol::Nt_28_3cTermOrCut_3e_20_22_2c_22_29_2a(__nt), __end));
+ 9
+ }
+ 16 => {
+ // (<TermOrCut> ",")* = (<TermOrCut> ",")+ => ActionFn(31);
+ let __sym0 = __pop_Nt_28_3cTermOrCut_3e_20_22_2c_22_29_2b(__symbols);
+ let __start = __sym0.0.clone();
+ let __end = __sym0.2.clone();
+ let __nt = super::__action31::<>(input, __sym0);
+ let __states_len = __states.len();
+ __states.truncate(__states_len - 1);
+ __symbols.push((__start, __Symbol::Nt_28_3cTermOrCut_3e_20_22_2c_22_29_2a(__nt), __end));
+ 9
+ }
+ 17 => {
+ // (<TermOrCut> ",")+ = TermOrCut, "," => ActionFn(57);
+ let __sym1 = __pop_Term_22_2c_22(__symbols);
+ let __sym0 = __pop_NtTermOrCut(__symbols);
+ let __start = __sym0.0.clone();
+ let __end = __sym1.2.clone();
+ let __nt = super::__action57::<>(input, __sym0, __sym1);
+ let __states_len = __states.len();
+ __states.truncate(__states_len - 2);
+ __symbols.push((__start, __Symbol::Nt_28_3cTermOrCut_3e_20_22_2c_22_29_2b(__nt), __end));
+ 10
+ }
+ 18 => {
+ // (<TermOrCut> ",")+ = (<TermOrCut> ",")+, TermOrCut, "," => ActionFn(58);
+ let __sym2 = __pop_Term_22_2c_22(__symbols);
+ let __sym1 = __pop_NtTermOrCut(__symbols);
+ let __sym0 = __pop_Nt_28_3cTermOrCut_3e_20_22_2c_22_29_2b(__symbols);
+ let __start = __sym0.0.clone();
+ let __end = __sym2.2.clone();
+ let __nt = super::__action58::<>(input, __sym0, __sym1, __sym2);
+ let __states_len = __states.len();
+ __states.truncate(__states_len - 3);
+ __symbols.push((__start, __Symbol::Nt_28_3cTermOrCut_3e_20_22_2c_22_29_2b(__nt), __end));
+ 10
+ }
+ 19 => {
// Atom = r#"[a-z][A-Za-z0-9_]*"# => ActionFn(5);
let __sym0 = __pop_Termr_23_22_5ba_2dz_5d_5bA_2dZa_2dz0_2d9___5d_2a_22_23(__symbols);
let __start = __sym0.0.clone();
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::NtAtom(__nt), __end));
- 8
+ 11
}
- 15 => {
+ 20 => {
// BoxedTerm = Term => ActionFn(6);
let __sym0 = __pop_NtTerm(__symbols);
let __start = __sym0.0.clone();
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::NtBoxedTerm(__nt), __end));
- 9
+ 12
}
- 16 => {
- // Clause = Atom, "(", BoxedTerm, ")" => ActionFn(47);
+ 21 => {
+ // Clause = Atom, "(", BoxedTerm, ")" => ActionFn(53);
let __sym3 = __pop_Term_22_29_22(__symbols);
let __sym2 = __pop_NtBoxedTerm(__symbols);
let __sym1 = __pop_Term_22_28_22(__symbols);
let __sym0 = __pop_NtAtom(__symbols);
let __start = __sym0.0.clone();
let __end = __sym3.2.clone();
- let __nt = super::__action47::<>(input, __sym0, __sym1, __sym2, __sym3);
+ let __nt = super::__action53::<>(input, __sym0, __sym1, __sym2, __sym3);
let __states_len = __states.len();
__states.truncate(__states_len - 4);
__symbols.push((__start, __Symbol::NtClause(__nt), __end));
- 10
+ 13
}
- 17 => {
- // Clause = Atom, "(", (<BoxedTerm> ",")+, BoxedTerm, ")" => ActionFn(48);
+ 22 => {
+ // Clause = Atom, "(", (<BoxedTerm> ",")+, BoxedTerm, ")" => ActionFn(54);
let __sym4 = __pop_Term_22_29_22(__symbols);
let __sym3 = __pop_NtBoxedTerm(__symbols);
let __sym2 = __pop_Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2b(__symbols);
let __sym0 = __pop_NtAtom(__symbols);
let __start = __sym0.0.clone();
let __end = __sym4.2.clone();
- let __nt = super::__action48::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4);
+ let __nt = super::__action54::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4);
let __states_len = __states.len();
__states.truncate(__states_len - 5);
__symbols.push((__start, __Symbol::NtClause(__nt), __end));
- 10
+ 13
}
- 18 => {
+ 23 => {
// List = "[]" => ActionFn(8);
let __sym0 = __pop_Term_22_5b_5d_22(__symbols);
let __start = __sym0.0.clone();
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::NtList(__nt), __end));
- 11
+ 14
}
- 19 => {
+ 24 => {
// List = "[", ListInternals, "]" => ActionFn(9);
let __sym2 = __pop_Term_22_5d_22(__symbols);
let __sym1 = __pop_NtListInternals(__symbols);
let __states_len = __states.len();
__states.truncate(__states_len - 3);
__symbols.push((__start, __Symbol::NtList(__nt), __end));
- 11
+ 14
}
- 20 => {
+ 25 => {
// ListInternals = BoxedTerm => ActionFn(10);
let __sym0 = __pop_NtBoxedTerm(__symbols);
let __start = __sym0.0.clone();
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::NtListInternals(__nt), __end));
- 12
+ 15
}
- 21 => {
+ 26 => {
// ListInternals = BoxedTerm, ",", ListInternals => ActionFn(11);
let __sym2 = __pop_NtListInternals(__symbols);
let __sym1 = __pop_Term_22_2c_22(__symbols);
let __states_len = __states.len();
__states.truncate(__states_len - 3);
__symbols.push((__start, __Symbol::NtListInternals(__nt), __end));
- 12
+ 15
}
- 22 => {
+ 27 => {
// ListInternals = BoxedTerm, "|", BoxedTerm => ActionFn(12);
let __sym2 = __pop_NtBoxedTerm(__symbols);
let __sym1 = __pop_Term_22_7c_22(__symbols);
let __states_len = __states.len();
__states.truncate(__states_len - 3);
__symbols.push((__start, __Symbol::NtListInternals(__nt), __end));
- 12
+ 15
}
- 23 => {
+ 28 => {
// Predicate = (<PredicateClause>)+, PredicateClause => ActionFn(13);
let __sym1 = __pop_NtPredicateClause(__symbols);
let __sym0 = __pop_Nt_28_3cPredicateClause_3e_29_2b(__symbols);
let __states_len = __states.len();
__states.truncate(__states_len - 2);
__symbols.push((__start, __Symbol::NtPredicate(__nt), __end));
- 13
+ 16
}
- 24 => {
+ 29 => {
// PredicateClause = Rule, "." => ActionFn(14);
let __sym1 = __pop_Term_22_2e_22(__symbols);
let __sym0 = __pop_NtRule(__symbols);
let __states_len = __states.len();
__states.truncate(__states_len - 2);
__symbols.push((__start, __Symbol::NtPredicateClause(__nt), __end));
- 14
+ 17
}
- 25 => {
+ 30 => {
// PredicateClause = Term, "." => ActionFn(15);
let __sym1 = __pop_Term_22_2e_22(__symbols);
let __sym0 = __pop_NtTerm(__symbols);
let __states_len = __states.len();
__states.truncate(__states_len - 2);
__symbols.push((__start, __Symbol::NtPredicateClause(__nt), __end));
- 14
+ 17
}
- 26 => {
- // Rule = Clause, ":-", TermOrCut => ActionFn(41);
+ 31 => {
+ // Query = TermOrCut => ActionFn(59);
+ let __sym0 = __pop_NtTermOrCut(__symbols);
+ let __start = __sym0.0.clone();
+ let __end = __sym0.2.clone();
+ let __nt = super::__action59::<>(input, __sym0);
+ let __states_len = __states.len();
+ __states.truncate(__states_len - 1);
+ __symbols.push((__start, __Symbol::NtQuery(__nt), __end));
+ 18
+ }
+ 32 => {
+ // Query = (<TermOrCut> ",")+, TermOrCut => ActionFn(60);
+ let __sym1 = __pop_NtTermOrCut(__symbols);
+ let __sym0 = __pop_Nt_28_3cTermOrCut_3e_20_22_2c_22_29_2b(__symbols);
+ let __start = __sym0.0.clone();
+ let __end = __sym1.2.clone();
+ let __nt = super::__action60::<>(input, __sym0, __sym1);
+ let __states_len = __states.len();
+ __states.truncate(__states_len - 2);
+ __symbols.push((__start, __Symbol::NtQuery(__nt), __end));
+ 18
+ }
+ 33 => {
+ // Rule = Clause, ":-", TermOrCut => ActionFn(47);
let __sym2 = __pop_NtTermOrCut(__symbols);
let __sym1 = __pop_Term_22_3a_2d_22(__symbols);
let __sym0 = __pop_NtClause(__symbols);
let __start = __sym0.0.clone();
let __end = __sym2.2.clone();
- let __nt = super::__action41::<>(input, __sym0, __sym1, __sym2);
+ let __nt = super::__action47::<>(input, __sym0, __sym1, __sym2);
let __states_len = __states.len();
__states.truncate(__states_len - 3);
__symbols.push((__start, __Symbol::NtRule(__nt), __end));
- 15
+ 19
}
- 27 => {
- // Rule = Clause, ":-", TermOrCut, ("," <TermOrCut>)+ => ActionFn(42);
+ 34 => {
+ // Rule = Clause, ":-", TermOrCut, ("," <TermOrCut>)+ => ActionFn(48);
let __sym3 = __pop_Nt_28_22_2c_22_20_3cTermOrCut_3e_29_2b(__symbols);
let __sym2 = __pop_NtTermOrCut(__symbols);
let __sym1 = __pop_Term_22_3a_2d_22(__symbols);
let __sym0 = __pop_NtClause(__symbols);
let __start = __sym0.0.clone();
let __end = __sym3.2.clone();
- let __nt = super::__action42::<>(input, __sym0, __sym1, __sym2, __sym3);
+ let __nt = super::__action48::<>(input, __sym0, __sym1, __sym2, __sym3);
let __states_len = __states.len();
__states.truncate(__states_len - 4);
__symbols.push((__start, __Symbol::NtRule(__nt), __end));
- 15
+ 19
}
- 28 => {
- // Rule = Atom, ":-", TermOrCut => ActionFn(43);
+ 35 => {
+ // Rule = Atom, ":-", TermOrCut => ActionFn(49);
let __sym2 = __pop_NtTermOrCut(__symbols);
let __sym1 = __pop_Term_22_3a_2d_22(__symbols);
let __sym0 = __pop_NtAtom(__symbols);
let __start = __sym0.0.clone();
let __end = __sym2.2.clone();
- let __nt = super::__action43::<>(input, __sym0, __sym1, __sym2);
+ let __nt = super::__action49::<>(input, __sym0, __sym1, __sym2);
let __states_len = __states.len();
__states.truncate(__states_len - 3);
__symbols.push((__start, __Symbol::NtRule(__nt), __end));
- 15
+ 19
}
- 29 => {
- // Rule = Atom, ":-", TermOrCut, ("," <TermOrCut>)+ => ActionFn(44);
+ 36 => {
+ // Rule = Atom, ":-", TermOrCut, ("," <TermOrCut>)+ => ActionFn(50);
let __sym3 = __pop_Nt_28_22_2c_22_20_3cTermOrCut_3e_29_2b(__symbols);
let __sym2 = __pop_NtTermOrCut(__symbols);
let __sym1 = __pop_Term_22_3a_2d_22(__symbols);
let __sym0 = __pop_NtAtom(__symbols);
let __start = __sym0.0.clone();
let __end = __sym3.2.clone();
- let __nt = super::__action44::<>(input, __sym0, __sym1, __sym2, __sym3);
+ let __nt = super::__action50::<>(input, __sym0, __sym1, __sym2, __sym3);
let __states_len = __states.len();
__states.truncate(__states_len - 4);
__symbols.push((__start, __Symbol::NtRule(__nt), __end));
- 15
+ 19
}
- 30 => {
- // Term = Atom => ActionFn(20);
+ 37 => {
+ // Term = Atom => ActionFn(21);
let __sym0 = __pop_NtAtom(__symbols);
let __start = __sym0.0.clone();
let __end = __sym0.2.clone();
- let __nt = super::__action20::<>(input, __sym0);
+ let __nt = super::__action21::<>(input, __sym0);
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::NtTerm(__nt), __end));
- 16
+ 20
}
- 31 => {
- // Term = Clause => ActionFn(21);
+ 38 => {
+ // Term = Clause => ActionFn(22);
let __sym0 = __pop_NtClause(__symbols);
let __start = __sym0.0.clone();
let __end = __sym0.2.clone();
- let __nt = super::__action21::<>(input, __sym0);
+ let __nt = super::__action22::<>(input, __sym0);
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::NtTerm(__nt), __end));
- 16
+ 20
}
- 32 => {
- // Term = List => ActionFn(22);
+ 39 => {
+ // Term = List => ActionFn(23);
let __sym0 = __pop_NtList(__symbols);
let __start = __sym0.0.clone();
let __end = __sym0.2.clone();
- let __nt = super::__action22::<>(input, __sym0);
+ let __nt = super::__action23::<>(input, __sym0);
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::NtTerm(__nt), __end));
- 16
+ 20
}
- 33 => {
- // Term = Var => ActionFn(23);
+ 40 => {
+ // Term = Var => ActionFn(24);
let __sym0 = __pop_NtVar(__symbols);
let __start = __sym0.0.clone();
let __end = __sym0.2.clone();
- let __nt = super::__action23::<>(input, __sym0);
+ let __nt = super::__action24::<>(input, __sym0);
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::NtTerm(__nt), __end));
- 16
+ 20
}
- 34 => {
- // Term = "_" => ActionFn(24);
+ 41 => {
+ // Term = "_" => ActionFn(25);
let __sym0 = __pop_Term_22___22(__symbols);
let __start = __sym0.0.clone();
let __end = __sym0.2.clone();
- let __nt = super::__action24::<>(input, __sym0);
+ let __nt = super::__action25::<>(input, __sym0);
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::NtTerm(__nt), __end));
- 16
+ 20
}
- 35 => {
- // TermOrCut = "!" => ActionFn(18);
+ 42 => {
+ // TermOrCut = "!" => ActionFn(19);
let __sym0 = __pop_Term_22_21_22(__symbols);
let __start = __sym0.0.clone();
let __end = __sym0.2.clone();
- let __nt = super::__action18::<>(input, __sym0);
+ let __nt = super::__action19::<>(input, __sym0);
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::NtTermOrCut(__nt), __end));
- 17
+ 21
}
- 36 => {
- // TermOrCut = Term => ActionFn(19);
+ 43 => {
+ // TermOrCut = Term => ActionFn(20);
let __sym0 = __pop_NtTerm(__symbols);
let __start = __sym0.0.clone();
let __end = __sym0.2.clone();
- let __nt = super::__action19::<>(input, __sym0);
+ let __nt = super::__action20::<>(input, __sym0);
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::NtTermOrCut(__nt), __end));
- 17
+ 21
}
- 37 => {
- // TopLevel = "?-", Term, "." => ActionFn(1);
+ 44 => {
+ // TopLevel = "?-", Query, "." => ActionFn(1);
let __sym2 = __pop_Term_22_2e_22(__symbols);
- let __sym1 = __pop_NtTerm(__symbols);
+ let __sym1 = __pop_NtQuery(__symbols);
let __sym0 = __pop_Term_22_3f_2d_22(__symbols);
let __start = __sym0.0.clone();
let __end = __sym2.2.clone();
let __states_len = __states.len();
__states.truncate(__states_len - 3);
__symbols.push((__start, __Symbol::NtTopLevel(__nt), __end));
- 18
+ 22
}
- 38 => {
+ 45 => {
// TopLevel = Predicate => ActionFn(2);
let __sym0 = __pop_NtPredicate(__symbols);
let __start = __sym0.0.clone();
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::NtTopLevel(__nt), __end));
- 18
+ 22
}
- 39 => {
+ 46 => {
// TopLevel = Rule, "." => ActionFn(3);
let __sym1 = __pop_Term_22_2e_22(__symbols);
let __sym0 = __pop_NtRule(__symbols);
let __states_len = __states.len();
__states.truncate(__states_len - 2);
__symbols.push((__start, __Symbol::NtTopLevel(__nt), __end));
- 18
+ 22
}
- 40 => {
+ 47 => {
// TopLevel = Term, "." => ActionFn(4);
let __sym1 = __pop_Term_22_2e_22(__symbols);
let __sym0 = __pop_NtTerm(__symbols);
let __states_len = __states.len();
__states.truncate(__states_len - 2);
__symbols.push((__start, __Symbol::NtTopLevel(__nt), __end));
- 18
+ 22
}
- 41 => {
- // Var = r#"[A-Z][A-Za-z0-9_]*"# => ActionFn(25);
+ 48 => {
+ // Var = r#"[A-Z][A-Za-z0-9_]*"# => ActionFn(26);
let __sym0 = __pop_Termr_23_22_5bA_2dZ_5d_5bA_2dZa_2dz0_2d9___5d_2a_22_23(__symbols);
let __start = __sym0.0.clone();
let __end = __sym0.2.clone();
- let __nt = super::__action25::<>(input, __sym0);
+ let __nt = super::__action26::<>(input, __sym0);
let __states_len = __states.len();
__states.truncate(__states_len - 1);
__symbols.push((__start, __Symbol::NtVar(__nt), __end));
- 19
+ 23
}
- 42 => {
+ 49 => {
// __TopLevel = TopLevel => ActionFn(0);
let __sym0 = __pop_NtTopLevel(__symbols);
let __start = __sym0.0.clone();
_ => panic!("invalid action code {}", __action)
};
let __state = *__states.last().unwrap() as usize;
- let __next_state = __GOTO[__state * 21 + __nonterminal] - 1;
+ let __next_state = __GOTO[__state * 25 + __nonterminal] - 1;
__states.push(__next_state);
None
}
_ => panic!("symbol type mismatch")
}
}
+ fn __pop_Nt_28_3cTermOrCut_3e_20_22_2c_22_29<
+ 'input,
+ >(
+ __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
+ ) -> (usize, TermOrCut, usize) {
+ match __symbols.pop().unwrap() {
+ (__l, __Symbol::Nt_28_3cTermOrCut_3e_20_22_2c_22_29(__v), __r) => (__l, __v, __r),
+ _ => panic!("symbol type mismatch")
+ }
+ }
+ fn __pop_Nt_28_3cTermOrCut_3e_20_22_2c_22_29_2a<
+ 'input,
+ >(
+ __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
+ ) -> (usize, ::std::vec::Vec<TermOrCut>, usize) {
+ match __symbols.pop().unwrap() {
+ (__l, __Symbol::Nt_28_3cTermOrCut_3e_20_22_2c_22_29_2a(__v), __r) => (__l, __v, __r),
+ _ => panic!("symbol type mismatch")
+ }
+ }
+ fn __pop_Nt_28_3cTermOrCut_3e_20_22_2c_22_29_2b<
+ 'input,
+ >(
+ __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
+ ) -> (usize, ::std::vec::Vec<TermOrCut>, usize) {
+ match __symbols.pop().unwrap() {
+ (__l, __Symbol::Nt_28_3cTermOrCut_3e_20_22_2c_22_29_2b(__v), __r) => (__l, __v, __r),
+ _ => panic!("symbol type mismatch")
+ }
+ }
fn __pop_NtAtom<
'input,
>(
_ => panic!("symbol type mismatch")
}
}
+ fn __pop_NtQuery<
+ 'input,
+ >(
+ __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
+ ) -> (usize, Vec<TermOrCut>, usize) {
+ match __symbols.pop().unwrap() {
+ (__l, __Symbol::NtQuery(__v), __r) => (__l, __v, __r),
+ _ => panic!("symbol type mismatch")
+ }
+ }
fn __pop_NtRule<
'input,
>(
>(
input: &'input str,
(_, _, _): (usize, &'input str, usize),
- (_, t, _): (usize, Term, usize),
+ (_, q, _): (usize, Vec<TermOrCut>, usize),
(_, _, _): (usize, &'input str, usize),
) -> TopLevel
{
- TopLevel::Query(t)
+ TopLevel::Query(q)
}
#[allow(unused_variables)]
#[allow(unused_variables)]
pub fn __action16<
'input,
+>(
+ input: &'input str,
+ (_, tcs, _): (usize, ::std::vec::Vec<TermOrCut>, usize),
+ (_, tc, _): (usize, TermOrCut, usize),
+) -> Vec<TermOrCut>
+{
+ {
+ let mut tcs = tcs;
+ tcs.push(tc);
+ tcs
+ }
+}
+
+#[allow(unused_variables)]
+pub fn __action17<
+ 'input,
>(
input: &'input str,
(_, c, _): (usize, Term, usize),
}
#[allow(unused_variables)]
-pub fn __action17<
+pub fn __action18<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action18<
+pub fn __action19<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action19<
+pub fn __action20<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action20<
+pub fn __action21<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action21<
+pub fn __action22<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action22<
+pub fn __action23<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action23<
+pub fn __action24<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action24<
+pub fn __action25<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action25<
+pub fn __action26<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action26<
+pub fn __action27<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action27<
+pub fn __action28<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action28<
+pub fn __action29<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action29<
+pub fn __action30<
+ 'input,
+>(
+ input: &'input str,
+ __lookbehind: &usize,
+ __lookahead: &usize,
+) -> ::std::vec::Vec<TermOrCut>
+{
+ vec![]
+}
+
+#[allow(unused_variables)]
+pub fn __action31<
+ 'input,
+>(
+ input: &'input str,
+ (_, v, _): (usize, ::std::vec::Vec<TermOrCut>, usize),
+) -> ::std::vec::Vec<TermOrCut>
+{
+ v
+}
+
+#[allow(unused_variables)]
+pub fn __action32<
+ 'input,
+>(
+ input: &'input str,
+ (_, __0, _): (usize, TermOrCut, usize),
+ (_, _, _): (usize, &'input str, usize),
+) -> TermOrCut
+{
+ (__0)
+}
+
+#[allow(unused_variables)]
+pub fn __action33<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action30<
+pub fn __action34<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action31<
+pub fn __action35<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action32<
+pub fn __action36<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action33<
+pub fn __action37<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action34<
+pub fn __action38<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action35<
+pub fn __action39<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action36<
+pub fn __action40<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action37<
+pub fn __action41<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action38<
+pub fn __action42<
'input,
>(
input: &'input str,
}
#[allow(unused_variables)]
-pub fn __action39<
+pub fn __action43<
+ 'input,
+>(
+ input: &'input str,
+ (_, __0, _): (usize, TermOrCut, usize),
+) -> ::std::vec::Vec<TermOrCut>
+{
+ vec![__0]
+}
+
+#[allow(unused_variables)]
+pub fn __action44<
+ 'input,
+>(
+ input: &'input str,
+ (_, v, _): (usize, ::std::vec::Vec<TermOrCut>, usize),
+ (_, e, _): (usize, TermOrCut, usize),
+) -> ::std::vec::Vec<TermOrCut>
+{
+ { let mut v = v; v.push(e); v }
+}
+
+#[allow(unused_variables)]
+pub fn __action45<
'input,
>(
input: &'input str,
{
let __start0 = __0.0.clone();
let __end0 = __1.2.clone();
- let __temp0 = __action28(
+ let __temp0 = __action29(
input,
__0,
__1,
);
let __temp0 = (__start0, __temp0, __end0);
- __action37(
+ __action43(
input,
__temp0,
)
}
#[allow(unused_variables)]
-pub fn __action40<
+pub fn __action46<
'input,
>(
input: &'input str,
{
let __start0 = __1.0.clone();
let __end0 = __2.2.clone();
- let __temp0 = __action28(
+ let __temp0 = __action29(
input,
__1,
__2,
);
let __temp0 = (__start0, __temp0, __end0);
- __action38(
+ __action44(
input,
__0,
__temp0,
}
#[allow(unused_variables)]
-pub fn __action41<
+pub fn __action47<
'input,
>(
input: &'input str,
{
let __start0 = __2.2.clone();
let __end0 = __2.2.clone();
- let __temp0 = __action26(
+ let __temp0 = __action27(
input,
&__start0,
&__end0,
);
let __temp0 = (__start0, __temp0, __end0);
- __action16(
+ __action17(
input,
__0,
__1,
}
#[allow(unused_variables)]
-pub fn __action42<
+pub fn __action48<
'input,
>(
input: &'input str,
{
let __start0 = __3.0.clone();
let __end0 = __3.2.clone();
- let __temp0 = __action27(
+ let __temp0 = __action28(
input,
__3,
);
let __temp0 = (__start0, __temp0, __end0);
- __action16(
+ __action17(
input,
__0,
__1,
}
#[allow(unused_variables)]
-pub fn __action43<
+pub fn __action49<
'input,
>(
input: &'input str,
{
let __start0 = __2.2.clone();
let __end0 = __2.2.clone();
- let __temp0 = __action26(
+ let __temp0 = __action27(
input,
&__start0,
&__end0,
);
let __temp0 = (__start0, __temp0, __end0);
- __action17(
+ __action18(
input,
__0,
__1,
}
#[allow(unused_variables)]
-pub fn __action44<
+pub fn __action50<
'input,
>(
input: &'input str,
{
let __start0 = __3.0.clone();
let __end0 = __3.2.clone();
- let __temp0 = __action27(
+ let __temp0 = __action28(
input,
__3,
);
let __temp0 = (__start0, __temp0, __end0);
- __action17(
+ __action18(
input,
__0,
__1,
}
#[allow(unused_variables)]
-pub fn __action45<
+pub fn __action51<
'input,
>(
input: &'input str,
{
let __start0 = __0.0.clone();
let __end0 = __1.2.clone();
- let __temp0 = __action34(
+ let __temp0 = __action38(
input,
__0,
__1,
);
let __temp0 = (__start0, __temp0, __end0);
- __action35(
+ __action39(
input,
__temp0,
)
}
#[allow(unused_variables)]
-pub fn __action46<
+pub fn __action52<
'input,
>(
input: &'input str,
{
let __start0 = __1.0.clone();
let __end0 = __2.2.clone();
- let __temp0 = __action34(
+ let __temp0 = __action38(
input,
__1,
__2,
);
let __temp0 = (__start0, __temp0, __end0);
- __action36(
+ __action40(
input,
__0,
__temp0,
}
#[allow(unused_variables)]
-pub fn __action47<
+pub fn __action53<
'input,
>(
input: &'input str,
{
let __start0 = __1.2.clone();
let __end0 = __2.0.clone();
- let __temp0 = __action32(
+ let __temp0 = __action36(
input,
&__start0,
&__end0,
}
#[allow(unused_variables)]
-pub fn __action48<
+pub fn __action54<
'input,
>(
input: &'input str,
{
let __start0 = __2.0.clone();
let __end0 = __2.2.clone();
- let __temp0 = __action33(
+ let __temp0 = __action37(
input,
__2,
);
}
#[allow(unused_variables)]
-pub fn __action49<
+pub fn __action55<
'input,
>(
input: &'input str,
{
let __start0 = __0.0.clone();
let __end0 = __0.2.clone();
- let __temp0 = __action31(
+ let __temp0 = __action35(
input,
__0,
);
let __temp0 = (__start0, __temp0, __end0);
- __action29(
+ __action33(
input,
__temp0,
)
}
#[allow(unused_variables)]
-pub fn __action50<
+pub fn __action56<
'input,
>(
input: &'input str,
{
let __start0 = __1.0.clone();
let __end0 = __1.2.clone();
- let __temp0 = __action31(
+ let __temp0 = __action35(
input,
__1,
);
let __temp0 = (__start0, __temp0, __end0);
- __action30(
+ __action34(
+ input,
+ __0,
+ __temp0,
+ )
+}
+
+#[allow(unused_variables)]
+pub fn __action57<
+ 'input,
+>(
+ input: &'input str,
+ __0: (usize, TermOrCut, usize),
+ __1: (usize, &'input str, usize),
+) -> ::std::vec::Vec<TermOrCut>
+{
+ let __start0 = __0.0.clone();
+ let __end0 = __1.2.clone();
+ let __temp0 = __action32(
input,
__0,
+ __1,
+ );
+ let __temp0 = (__start0, __temp0, __end0);
+ __action41(
+ input,
__temp0,
)
}
+#[allow(unused_variables)]
+pub fn __action58<
+ 'input,
+>(
+ input: &'input str,
+ __0: (usize, ::std::vec::Vec<TermOrCut>, usize),
+ __1: (usize, TermOrCut, usize),
+ __2: (usize, &'input str, usize),
+) -> ::std::vec::Vec<TermOrCut>
+{
+ let __start0 = __1.0.clone();
+ let __end0 = __2.2.clone();
+ let __temp0 = __action32(
+ input,
+ __1,
+ __2,
+ );
+ let __temp0 = (__start0, __temp0, __end0);
+ __action42(
+ input,
+ __0,
+ __temp0,
+ )
+}
+
+#[allow(unused_variables)]
+pub fn __action59<
+ 'input,
+>(
+ input: &'input str,
+ __0: (usize, TermOrCut, usize),
+) -> Vec<TermOrCut>
+{
+ let __start0 = __0.0.clone();
+ let __end0 = __0.0.clone();
+ let __temp0 = __action30(
+ input,
+ &__start0,
+ &__end0,
+ );
+ let __temp0 = (__start0, __temp0, __end0);
+ __action16(
+ input,
+ __temp0,
+ __0,
+ )
+}
+
+#[allow(unused_variables)]
+pub fn __action60<
+ 'input,
+>(
+ input: &'input str,
+ __0: (usize, ::std::vec::Vec<TermOrCut>, usize),
+ __1: (usize, TermOrCut, usize),
+) -> Vec<TermOrCut>
+{
+ let __start0 = __0.0.clone();
+ let __end0 = __0.2.clone();
+ let __temp0 = __action31(
+ input,
+ __0,
+ );
+ let __temp0 = (__start0, __temp0, __end0);
+ __action16(
+ input,
+ __temp0,
+ __1,
+ )
+}
+
pub trait __ToTriple<'input, > {
type Error;
fn to_triple(value: Self) -> Result<(usize,(usize, &'input str),usize),Self::Error>;