JimLang

基于 JVM 的轻量脚本语言,适合脚本开发与语言实现学习。

REPL/CLI · Web · JSON/YAML · Env/LLM(流式)· JDBC/DB

核心特性

🔁

控制流与表达式

if/else,while,for,break/continue;算术/比较,短路 &&/||。

📦

数组与对象

字面量;索引/属性访问;length{} 对象。

📚

标准库

字符串/数学/文件;三引号多行字符串 '''...'''

🕸️

内置 Web

route/start_webserver;send_text/html/json、cookie、下载、静态文件。

🔗

JSON / YAML / Env

json_encode/decode,yml_*,load_env/env_get 覆盖层。

🧠

LLM 集成

ask_llm(流式 SSE/LC4J),on_token 回调,LLM_DEBUG 调试。

🗄️

数据库 JDBC

db_open/query/exec/tx/with_conn,命名参数 :name,JimSQL。

🖥️

跨平台 CLI

--cli/-i、--eval/-e、--trace、STDIN;/ext 外部 JAR。

快速开始

启动与执行

# REPL
bin/jimlang.sh --cli
# 一行执行
bin/jimlang.sh --eval "println(\"hi\")"
# 从 STDIN
cat code.jim | bin/jimlang.sh -

运行脚本

# Windows
bin\\jimlang.cmd examples\\test.jim
# Unix
bin/jimlang.sh examples/test.jim

语法速览

控制流

for (var i = 0; i < 5; i = i + 1) {
  if (i == 2) { continue }
  if (i == 4) { break }
  println(i)
}

数组/对象

var a = [1,2,3]; var o = { name: "Jim", age: 26 }
println(a[0]); println(o.name)

多行字符串

var s = '''
line1
line2
'''
println(s)

示例

Fibonacci

function fib(n){ var a=0;
        var b=1;
        for (var i=0;i<n;i=i+1){
            var t=a;
            a=b;
            b=t+b
        }
        return a }

println(fib(10))

Env + Web

load_env(".env", true)
function port(req){ return send_text("port=" + env_get("PORT", 8080)) }
start_webserver(8080, route("/port","GET", port))

LLM(流式)

ask_llm("用一句话描述春天", { stream: true })

示例(JimSQL)

db_open("main", { url: "jdbc:jimsql://localhost:8821/test", driver: "com.dafei1288.jimsql.jdbc.JqDriver" })
println(json_encode(db_query("main","select 1 as x", [])))

命令行

常用选项

--cli / -i           启动交互 REPL
--eval / -e CODE     执行一段代码
--trace              打印调用栈(或设置 JIM_TRACE=1)
-                    从标准输入读取脚本

/ext 外部依赖

# 将第三方 JAR 放入项目根 ext/
# 启动器使用 -cp 方式,会自动拼接 ext/**/*.jar
# 例如:放入 JimSQL/Hikari/SnakeYAML/LC4J 等依赖

构建

路线图(摘)

近期完成

  • 三引号字符串、短路 &&/||
  • 错误信息带 caret/调用栈、--trace
  • LLM ask_llm(流式 SSE/LC4J),on_token 回调
  • Web 服务器与响应工具集、Cookie/下载/静态文件
  • JSON/YAML、load_env/env_get
  • JDBC:db_open/query/exec/tx/with_conn(JimSQL)
  • 启动器 /ext 类路径

计划中

  • 类型系统拓展与注解
  • 事务保存点、流式查询增强
  • 示例库与文档持续完善

版本:dev snapshot · GitHub:dafei1288/jimlang