com.github.dakusui.jcunit8.factorspace.regex.RegexDecomposer Maven / Gradle / Ivy
package com.github.dakusui.jcunit8.factorspace.regex;
import com.github.dakusui.jcunit.core.tuples.Tuple;
import com.github.dakusui.jcunit.regex.Expr;
import com.github.dakusui.jcunit.regex.Reference;
import com.github.dakusui.jcunit.regex.RegexTranslator;
import com.github.dakusui.jcunit.regex.Value;
import com.github.dakusui.jcunit8.factorspace.Constraint;
import com.github.dakusui.jcunit8.factorspace.Factor;
import com.github.dakusui.jcunit8.factorspace.FactorSpace;
import com.github.dakusui.jcunit8.pipeline.stages.Generator;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
import static com.github.dakusui.jcunit.core.utils.Utils.concatenate;
import static java.util.Objects.requireNonNull;
public class RegexDecomposer extends RegexTranslator {
public RegexDecomposer(String name, Expr topLevel) {
super(topLevel, name);
}
public FactorSpace decompose() {
List extends Factor> factors = buildFactors();
return FactorSpace.create(factors, buildConstraints(factors));
}
private List extends Factor> buildFactors() {
this.topLevelExpression.accept(this);
final List builder = new LinkedList<>();
for (String eachKey : this.terms.keySet()) {
List © 2015 - 2025 Weber Informatics LLC | Privacy Policy