Search in sources :

Example 1 with Step

use of com.sri.ai.grinder.api.StepSolver.Step in project aic-expresso by aic-sri-international.

the class IfThenElseStepSolverTest method evaluateByRecursivelyTakingSteps.

// A method for tracing the steps (and results of the steps) the step solver takes
private String evaluateByRecursivelyTakingSteps(StepSolver stepSolver, Context context, AtomicInteger stepCount, int nestingOfStep) {
    String result;
    Step step = stepSolver.step(context);
    stepCount.incrementAndGet();
    if (step.itDepends()) {
        ContextSplitting splitting = step.getContextSplittingWhenSplitterIsLiteral();
        String nestingString = createNestingString(nestingOfStep);
        // println(nestingString + "[" + stepCount + "] split on: " + splitting.getLiteral());
        result = nestingString + "[" + stepCount + "] split on: " + splitting.getLiteral() + System.lineSeparator();
        Context trueContext = splitting.getContextAndLiteral();
        Context falseContext = splitting.getContextAndLiteralNegation();
        int nestingOfNextStep = nestingOfStep + 1;
        result += evaluateByRecursivelyTakingSteps(step.getStepSolverForWhenSplitterIs(true), trueContext, stepCount, nestingOfNextStep);
        result += evaluateByRecursivelyTakingSteps(step.getStepSolverForWhenSplitterIs(false), falseContext, stepCount, nestingOfNextStep);
    } else {
        String nestingString = createNestingString(nestingOfStep);
        // println(nestingString + "[" + stepCount + "] < " + step.getValue() + " >");
        result = nestingString + "[" + stepCount + "] < " + step.getValue() + " >" + System.lineSeparator();
    }
    return result;
}
Also used : TrueContext(com.sri.ai.grinder.core.TrueContext) Context(com.sri.ai.grinder.api.Context) Step(com.sri.ai.grinder.api.StepSolver.Step) ContextSplitting(com.sri.ai.grinder.core.constraint.ContextSplitting)

Aggregations

Context (com.sri.ai.grinder.api.Context)1 Step (com.sri.ai.grinder.api.StepSolver.Step)1 TrueContext (com.sri.ai.grinder.core.TrueContext)1 ContextSplitting (com.sri.ai.grinder.core.constraint.ContextSplitting)1