public override Predicate exec(Prolog engine) { Term a1, a2, a3, a4; Predicate p1, p2, p3; a1 = engine.aregs[1].Dereference(); a2 = engine.aregs[2].Dereference(); Predicate cont = engine.cont; if (a1.IsList()) { a3 = ((ListTerm)a1).car; if (!s1.Unify(((ListTerm)a1).cdr, engine.trail)) { return(engine.fail()); } } else if (a1.IsVariable()) { a3 = engine.makeVariable(); if (!a1.Unify(new ListTerm(a3, s1), engine.trail)) { return(engine.fail()); } } else { return(engine.fail()); } a4 = engine.makeVariable(); p1 = new Predicates.dollar_cut_1(a4, cont); p2 = new Predicates.dollar_unify_2(a3, a2, p1); p3 = new Predicates.dollar_dummy__189511930__25_1(a3, p2); return(new Predicates.dollar_getLevel_1(a4, p3)); }
public override Predicate exec(Prolog engine) { Term a1, a2, a3, a4; Predicate p1; a1 = engine.aregs[1].Dereference(); a2 = engine.aregs[2].Dereference(); a3 = engine.aregs[3].Dereference(); a4 = engine.aregs[4].Dereference(); Predicate cont = engine.cont; p1 = new Predicates.dollar_unify_2(a4, a3, cont); return(new Predicates.dollar_plus_3(a1, a2, a4, p1)); }
public override Predicate exec(Prolog engine) { Term a1, a2, a3, a4; Predicate p1, p2; a1 = engine.aregs[1].Dereference(); a2 = engine.aregs[2].Dereference(); a3 = engine.aregs[3].Dereference(); Predicate cont = engine.cont; a4 = engine.makeVariable(); p1 = new Predicates.dollar_cut_1(a4, cont); p2 = new Predicates.dollar_unify_2(a1, a3, p1); return(new Predicates.dollar_getLevel_1(a4, p2)); }
public override Predicate exec(Prolog engine) { Term a1, a2, a3, a4, a5, a6, a7, a8, a9; Predicate p1, p2, p3, p4; a1 = engine.aregs[1].Dereference(); a2 = engine.aregs[2].Dereference(); a3 = engine.aregs[3].Dereference(); a4 = engine.aregs[4].Dereference(); a5 = engine.aregs[5].Dereference(); a6 = engine.aregs[6].Dereference(); a7 = engine.aregs[7].Dereference(); Predicate cont = engine.cont; a8 = engine.makeVariable(); a9 = engine.makeVariable(); p1 = new Predicates.dollar_cut_1(a8, cont); p2 = new Predicates.dollar_unify_2(a1, a6, p1); p3 = new Predicates.dollar_plus_3(a9, s1, a6, p2); p4 = new Predicates.dollar_multi_3(a2, a4, a9, p3); return(new Predicates.dollar_getLevel_1(a8, p4)); }