JVM scripting language runtime: lexer/parser/runtime, interpreter, and bytecode compiler.
Fluxon 是一个运行在 JVM 上的轻量脚本语言实现(解析器 + 解释器 + 字节码编译器),支持表达式化控制流、扩展函数与 :: 上下文调用,可用于嵌入式脚本、REPL 与 JSR223。
core:语言核心(lexer/parser/runtime/interpreter/bytecode)core-console:CLI/REPL(脚本文件 +-e/--eval)core-jsr223:JSR223 ScriptEngine(fluxon)core-web-backend:最小化 HTTP 执行后端(可选)
./gradlew build
./gradlew test
# 过滤单个用例:
./gradlew test --tests 'org.tabooproject.fluxon.parser.ParserTest'Windows 可使用 gradlew.bat。
./gradlew :core-console:run./gradlew :core-console:run --args "<path/to/script.fs>"--args 的值以 - 开头时,建议使用 = 形式传参:
./gradlew :core-console:run --args="-e 1 + 2"
./gradlew :core-console:run --args="-e print('hello')"
./gradlew :core-console:run --args="-e x = 1; print(&x + 2)"脚本片段:
x = 1
print(&x + 2)
Windows PowerShell(推荐用绝对路径 + 将 Gradle 缓存放在工作区,避免默认 %USERPROFILE%\.gradle 的锁文件问题):
$script = (Resolve-Path "core-syntax.fs").Path
$env:GRADLE_USER_HOME = "$PWD/.gradle-local" # optional
./gradlew --no-daemon :core-console:run --args "$script"./gradlew :core:dumpFluxonCatalog输出:core/build/fluxon-functions.json
import org.tabooproject.fluxon.Fluxon;
import org.tabooproject.fluxon.compiler.CompilationContext;
import org.tabooproject.fluxon.runtime.Environment;
import org.tabooproject.fluxon.runtime.FluxonRuntime;
Environment env = FluxonRuntime.getInstance().newEnvironment();
CompilationContext ctx = new CompilationContext("x = 1; &x + 2");
ctx.setAllowReflectionAccess(false); // 需要 '.' 反射访问时再开启
Object result = Fluxon.eval(Fluxon.parse(env, ctx), env);
System.out.println(result); // 3- 反射成员访问
.与 Java 构造new都是可开关能力;对不可信脚本建议保持禁用。 import可通过编译上下文禁用,并支持黑名单(见core/src/main/java/org/tabooproject/fluxon/compiler/CompilationContext.java)。