use of suite.lp.Configuration.ProverConfig in project suite by stupidsing.
the class CommandDispatcher method dispatchCommand_.
private boolean dispatchCommand_(String input, Writer writer) throws IOException {
PrintWriter pw = new PrintWriter(writer);
boolean code = true;
Pair<InputType, String> pair = new CommandUtil<>(InputType.values()).recognize(input);
InputType type = pair.t0;
input = pair.t1.trim();
if (input.endsWith("#"))
input = String_.range(input, 0, -1);
Node node = Suite.parse(input.trim());
switch(type) {
case EVALUATE:
pw.println(Formatter.dump(evaluateFunctional(node)));
break;
case EVALUATEDO:
node = Suite.applyPerform(node, Atom.of("any"));
pw.println(Formatter.dump(evaluateFunctional(node)));
break;
case EVALUATEDOCHARS:
node = Suite.applyPerform(node, Suite.parse("[n^Chars]"));
printEvaluated(writer, node);
break;
case EVALUATEDOSTR:
node = Suite.applyPerform(node, Atom.of("string"));
printEvaluated(writer, Suite.applyWriter(node));
break;
case EVALUATEEFI:
InterpretFunEager efi = new InterpretFunEager();
efi.setLazyify(opt.isLazy());
pw.println(efi.eager(node));
break;
case EVALUATELFI0:
pw.println(new InterpretFunLazy0().lazy(node).get());
break;
case EVALUATELFI:
pw.println(new InterpretFunLazy().lazy(node).get());
break;
case EVALUATESTR:
node = Suite.substitute("string of .0", node);
printEvaluated(writer, Suite.applyWriter(node));
break;
case EVALUATETYPE:
pw.println(Formatter.dump(Suite.evaluateFunType(opt.fcc(node))));
break;
case FACT:
ruleSet.addRule(Rule.of(node));
break;
case OPTION:
Source<String> source = To.source(("-" + input).split(" "));
String option;
while ((option = source.source()) != null) opt.processOption(option, source);
break;
case PRETTYPRINT:
pw.println(new PrettyPrinter().prettyPrint(node));
break;
case QUERY:
code = query(new InterpretedProverBuilder(opt.pc(ruleSet)), ruleSet, node);
break;
case QUERYCOMPILED:
code = query(CompiledProverBuilder.level1(opt.pc(ruleSet)), ruleSet, node);
break;
case QUERYCOMPILED2:
if (builderLevel2 == null)
builderLevel2 = CompiledProverBuilder.level2(opt.pc(ruleSet));
code = query(builderLevel2, ruleSet, node);
break;
case QUERYELABORATE:
elaborate(node, new Prover(opt.pc(ruleSet))::prove);
break;
case QUERYSEWING:
code = query(new SewingProverBuilder(opt.pc(ruleSet)), ruleSet, node);
break;
case QUERYSEWINGELAB:
elaborate(node, n -> new SewingProverImpl(ruleSet).prover(n).test(new ProverConfig(ruleSet)));
break;
case RESET:
ruleSet = Suite.newRuleSet();
importFiles(List.of());
}
pw.flush();
return code;
}
use of suite.lp.Configuration.ProverConfig in project suite by stupidsing.
the class CommandOptions method fcc.
public FunCompilerConfig fcc(Node node) {
ProverConfig pc = pc(Suite.newRuleSet());
FunCompilerConfig fcc = new FunCompilerConfig(pc, libraries);
fcc.setLazy(isLazy);
fcc.setNode(node);
return fcc;
}
use of suite.lp.Configuration.ProverConfig in project suite by stupidsing.
the class CommandOptions method pc.
public ProverConfig pc(RuleSet ruleSet) {
ProverConfig pc = new ProverConfig(ruleSet);
pc.setTrace(isTrace);
return pc;
}
use of suite.lp.Configuration.ProverConfig in project suite by stupidsing.
the class EvaluateUtil method doFcc.
private Node doFcc(Node compileNode, FunCompilerConfig fcc) {
return LogUtil.duration("Code compiled", () -> {
ProverConfig pc = fcc.getProverConfig();
Finder finder = fccFinderFun.apply(Pair.of(pc, compileNode));
return FindUtil.collectSingle(finder, appendLibraries(fcc));
});
}
use of suite.lp.Configuration.ProverConfig in project suite by stupidsing.
the class SewingProverBuilder method build.
@Override
public Fun<Node, Finder> build(RuleSet ruleSet) {
ProverFactory sewingProver = new SewingProverImpl(ruleSet);
return goal -> {
Node goal1 = SewingGeneralizerImpl.generalize(goal);
Prove_ pred = sewingProver.prover(goal1);
return (source, sink) -> {
ProverConfig proverConfig1 = new ProverConfig(ruleSet, proverConfig);
proverConfig1.setSource(source);
proverConfig1.setSink(sink);
pred.test(proverConfig1);
};
};
}
Aggregations