Search in sources :

Example 6 with Switch

use of com.sri.ai.grinder.rewriter.core.Switch in project aic-expresso by aic-sri-international.

the class TopRewriter method makeTopRewriterFromTopRewritersThatAreEitherFirstOfOrSwitches.

/**
 * Takes a list of {@link TopRewriter}s,
 * then determines a list of {@link Switch<T>} rewriters,
 * each of them the merge of all {@link Switch<T>} rewriters with the same key maker
 * (from {@link Switch.merge(List<Rewriter>)}.
 * If this list contains more than one {@link Switch<T>} rewriter,
 * returns a {@link CombiningTopRewriter} rewriter with them as base rewriters.
 * If this list contains only one {@link Switch<T>} rewriter, returns it.
 * @param topRewritersThatAreEitherFirstOfOrSwitches
 * @param <T> the type of keys in the switch rewriters.
 * @return
 */
public static <T> TopRewriter makeTopRewriterFromTopRewritersThatAreEitherFirstOfOrSwitches(List<? extends TopRewriter> topRewritersThatAreEitherFirstOfOrSwitches) {
    List<Switch<T>> mergedSwitches = makeMergedSwitchesFromTopRewritersThatAreEitherFirstOfOrSwitches(topRewritersThatAreEitherFirstOfOrSwitches);
    TopRewriter result = makeTopRewriterFromAlreadyMergedSwitches(mergedSwitches);
    return result;
}
Also used : Switch(com.sri.ai.grinder.rewriter.core.Switch) CombiningTopRewriter(com.sri.ai.grinder.rewriter.core.CombiningTopRewriter)

Aggregations

Switch (com.sri.ai.grinder.rewriter.core.Switch)6 CombiningTopRewriter (com.sri.ai.grinder.rewriter.core.CombiningTopRewriter)5 Test (org.junit.Test)4 Rewriter (com.sri.ai.grinder.rewriter.api.Rewriter)3 TopRewriter (com.sri.ai.grinder.rewriter.api.TopRewriter)3 FirstOf (com.sri.ai.grinder.rewriter.core.FirstOf)3 Function (com.google.common.base.Function)2 Expression (com.sri.ai.expresso.api.Expression)2 Symbol (com.sri.ai.expresso.api.Symbol)2 DefaultSymbol (com.sri.ai.expresso.core.DefaultSymbol)2 Context (com.sri.ai.grinder.api.Context)2 Solution (com.sri.ai.grinder.api.ExpressionLiteralSplitterStepSolver.Solution)2 TrueContext (com.sri.ai.grinder.core.TrueContext)2 RewriterFromStepMaker (com.sri.ai.grinder.rewriter.api.RewriterFromStepMaker)2 List (java.util.List)2 Expressions.parse (com.sri.ai.expresso.helper.Expressions.parse)1 ExpressionLiteralSplitterStepSolver (com.sri.ai.grinder.api.ExpressionLiteralSplitterStepSolver)1 ContextSplitting (com.sri.ai.grinder.core.constraint.ContextSplitting)1 Recursive (com.sri.ai.grinder.rewriter.core.Recursive)1 ConstantExpressionStepSolver (com.sri.ai.grinder.theory.base.ConstantExpressionStepSolver)1