Skip to content

快速开始

本文档介绍如何在 Java 中使用 FSScript,包括编译字符串为 Exp 表达式对象并执行。

Maven 依赖

xml
<dependency>
    <groupId>com.foggyframework</groupId>
    <artifactId>foggy-fsscript</artifactId>
    <version>${foggy.version}</version>
</dependency>

最小示例

java
import com.foggyframework.fsscript.DefaultExpEvaluator;
import com.foggyframework.fsscript.parser.ExpParser;
import com.foggyframework.fsscript.parser.spi.Exp;

public class QuickStart {
    public static void main(String[] args) {
        // 1. 创建解析器
        ExpParser parser = new ExpParser();

        // 2. 编译脚本字符串为 Exp 对象
        Exp exp = parser.compileEl("let x = 10; return x * 2;");

        // 3. 创建执行器
        DefaultExpEvaluator evaluator = DefaultExpEvaluator.newInstance();

        // 4. 执行并获取结果
        Object result = exp.evalResult(evaluator);

        System.out.println(result);  // 输出: 20
    }
}

核心类

ExpParser - 表达式解析器

java
public class ExpParser {
    // 编译表达式语言脚本(推荐)
    public Exp compileEl(String str) throws CompileException;

    // 编译脚本(包含模板字符串解析)
    public Exp compile(String str) throws CompileException;
}

Exp - 表达式接口

java
public interface Exp {
    // 执行表达式并返回原始值
    Object evalValue(ExpEvaluator ee);

    // 执行表达式并返回解包后的结果(推荐)
    default Object evalResult(ExpEvaluator ee);
}

DefaultExpEvaluator - 默认执行器

java
public class DefaultExpEvaluator implements ExpEvaluator {
    // 创建新实例
    public static DefaultExpEvaluator newInstance();

    // 创建带 Spring 上下文的实例
    public static DefaultExpEvaluator newInstance(ApplicationContext appCtx);

    // 获取变量值
    public Object getVar(String name);

    // 设置变量值
    public Object setVar(String name, Object value);
}