astra.statement.TRStart Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of astra-interpreter Show documentation
Show all versions of astra-interpreter Show documentation
Core interpreter artifact for the ASTRA Language
package astra.statement;
import astra.core.Intention;
import astra.formula.Predicate;
import astra.reasoner.util.ContextEvaluateVisitor;
public class TRStart extends AbstractStatement {
Predicate function;
public TRStart(String clazz, int[] data, Predicate function) {
setLocation(clazz, data[0], data[1], data[2], data[3]);
this.function = function;
}
@Override
public StatementHandler getStatementHandler() {
return new AbstractStatementHandler() {
@Override
public boolean execute(Intention context) {
ContextEvaluateVisitor visitor = new ContextEvaluateVisitor(context);
if (!context.startFunction((Predicate) function.accept(visitor))) {
context.failed("A TR Function is already Active");
return true;
}
return false;
}
@Override
public boolean onFail(Intention context) {
return false;
}
@Override
public Statement statement() {
return TRStart.this;
}
};
}
}