
com.github.leeonky.dal.DAL Maven / Gradle / Ivy
package com.github.leeonky.dal;
import com.github.leeonky.dal.ast.node.DALNode;
import com.github.leeonky.dal.compiler.Compiler;
import com.github.leeonky.dal.compiler.Notations;
import com.github.leeonky.dal.runtime.Extension;
import com.github.leeonky.dal.runtime.RuntimeContextBuilder;
import com.github.leeonky.dal.runtime.RuntimeContextBuilder.DALRuntimeContext;
import com.github.leeonky.dal.type.InputCode;
import com.github.leeonky.dal.type.InputValue;
import com.github.leeonky.dal.util.TextUtil;
import com.github.leeonky.interpreter.SourceCode;
import com.github.leeonky.interpreter.SyntaxException;
import com.github.leeonky.util.Classes;
import java.util.*;
import java.util.stream.Collectors;
import static com.github.leeonky.util.Classes.subTypesOf;
import static com.github.leeonky.util.function.Extension.not;
import static java.util.Arrays.asList;
import static java.util.stream.Stream.concat;
public class DAL {
private final Compiler compiler = new Compiler();
private final RuntimeContextBuilder runtimeContextBuilder = new RuntimeContextBuilder();
private static final ThreadLocal instance = new ThreadLocal<>();
public static synchronized DAL getInstance() {
if (instance.get() == null)
instance.set(create());
return instance.get();
}
public static DAL create(Class>... exceptExtensions) {
Iterator iterator = ServiceLoader.load(DALFactory.class).iterator();
if (iterator.hasNext())
return iterator.next().newInstance();
return new DAL().extend(exceptExtensions);
}
public RuntimeContextBuilder getRuntimeContextBuilder() {
return runtimeContextBuilder;
}
public List evaluateAll(Object input, String expressions) {
return evaluateAll((InputValue
© 2015 - 2025 Weber Informatics LLC | Privacy Policy