Skip to content

API 参考 ​

核心接口 ​

Exp ​

表达式基础接口。

java
public interface Exp {
    /**
     * 执行表达式并返回原始值
     * 可能被包装在 ReturnExpObject 中
     */
    Object evalValue(ExpEvaluator ee);

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

    /**
     * 获取返回类型
     */
    Class getReturnType(ExpEvaluator ee);
}

ExpEvaluator ​

运行时执行器接口。

java
public interface ExpEvaluator {
    Object getVar(String name);
    Object setVar(String name, Object value);
    Object getExportObject(String name);
    ExpEvaluator clone();
}

Fsscript ​

加载的脚本接口。

java
public interface Fsscript {
    void eval(ExpEvaluator ee);
    Object evalResult(ExpEvaluator ee);
    ExpEvaluator newInstance(ApplicationContext appCtx);
    boolean hasImport();
}

实现类 ​

ExpParser ​

java
public class ExpParser {
    public ExpParser();
    public ExpParser(ExpFactory factory);
    public Exp compileEl(String str) throws CompileException;
    public Exp compile(String str) throws CompileException;
}

DefaultExpEvaluator ​

java
public class DefaultExpEvaluator implements ExpEvaluator {
    public static DefaultExpEvaluator newInstance();
    public static DefaultExpEvaluator newInstance(ApplicationContext appCtx);
    public Object getVar(String name);
    public Object setVar(String name, Object value);
    public FsscriptClosure getCurrentFsscriptClosure();
    public ApplicationContext getApplicationContext();
}

FileFsscriptLoader ​

java
public class FileFsscriptLoader {
    public static FileFsscriptLoader getInstance();
    public Fsscript findLoadFsscript(String path);
}

异常类 ​

异常说明
CompileException编译错误
FoggyParseException语法解析错误

编译流程 ​

FSScript 字符串
       ↓
  ExpScanner (词法分析)
       ↓
  ExpParser (语法分析 - CUP 生成)
       ↓
  Exp 对象树 (AST)
       ↓
  DefaultExpEvaluator (执行)
       ↓
  结果值 (Object)