| package jp.ac.kobe_u.cs.prolog.lang; |
| /** |
| * Initial continuation goal.<br> |
| * That is to say, this <code>Success</code> will be executed |
| * every time the Prolog Cafe system finds an answer. |
| * |
| * @author Mutsunori Banbara (banbara@kobe-u.ac.jp) |
| * @author Naoyuki Tamura (tamura@kobe-u.ac.jp) |
| * @version 1.0 |
| */ |
| public class Success extends Predicate { |
| /** Prolog thread that this <code>Success</code> belongs to. */ |
| public PrologControl c; |
| |
| /** Constructs a new initial continuation goal. */ |
| public Success(){} |
| |
| /** Constructs a new initial continuation goal with given Prolog thread. */ |
| public Success(PrologControl c) { |
| this.c = c; |
| } |
| |
| /** |
| * Backtracks and returns a next clause |
| * after invoking the <code>PrologControl.success()</code>. |
| * @param engine Prolog engine |
| * @see PrologControl#success |
| */ |
| public Predicate exec(Prolog engine) { |
| c.success(); |
| return engine.fail(); |
| } |
| |
| /** Returns a string representation of this <code>Success</code>. */ |
| public String toString(){ return "Success"; } |
| |
| /** Returns <code>0</code>. */ |
| public int arity() { return 0; } |
| } |
| |