动态类型脚本语言 · 类 JavaScript 语法 · Lua 级简单性 · Wren 式面向对象
GitHub → 快速开始 ↓func greet(name) {
return "Hello, " + name + "!"
}
let names = ["World", "Vora", "你"]
for name in names {
print(greet(name))
}
一条命令构建,开箱即用。
Vora 的语法受到 Lua 和 Wren 的启发,追求简洁与可读性。
let n = 42 // Number (double)
let f = 3.14
let b = true // Boolean
let s = "hello" // String
let a = [1, 2, 3] // Array
let nothing = null
// 数字前缀
0xFF // 255(十六进制)
0o77 // 63(八进制)
0b101 // 5(二进制)
let name = "World"
print("Hello ${name}!")
// → Hello World!
// 属性访问
Obj Person(n) { this.name = n }
let p = Person("Alice")
print("Hi ${p.name}")
// → Hi Alice
// 算术:+ - * / % **
// 比较:< <= > >= == !=
// 逻辑:&& || !(短路求值)
// 自增/自减:++ --
// 复合赋值:+= -= *= /= %=
// 三元:? :
let x = 10
x += 5 // x = 15
let result = x > 10 ? "big" : "small"
// 短路求值
false && crash() // crash() 不会被调用
true || crash() // crash() 不会被调用
func add(a, b) {
return a + b
}
// 闭包 —— 捕获定义时环境
func makeCounter() {
let count = 0
return func() {
count = count + 1
return count
}
}
let c = makeCounter()
print(c()) // 1
print(c()) // 2
// if / else
if (x > 0) {
print("positive")
} else {
print("non-positive")
}
// while
while (n > 0) { n = n - 1 }
// for-in(数组 / 字符串 / range)
for item in [1, 2, 3] { print(item) }
for ch in "Vora" { print(ch) }
for i in range(5) { print(i) }
Obj Animal(name) {
this.name = name
func speak() { print("...") }
}
Obj Dog : Animal (name, breed) {
this.breed = breed
func speak() {
print("Woof! I'm " + this.name)
}
}
let d = Dog("Rex", "Husky")
d.speak() // Woof! I'm Rex
print(d.name) // Rex
try {
throw "something went wrong"
} catch (e) {
print("Caught: " + e)
} finally {
print("Cleanup")
}
// 抛出自定义错误对象
Obj ValidationError(msg) {
this.message = msg
}
throw ValidationError("Invalid input")
// 中文标识符
let 名字 = "小明"
let 年龄 = 20
func 打印信息(姓名, 岁数) {
print("${姓名} 今年 ${岁数} 岁")
}
打印信息(名字, 年龄)
// → 小明 今年 20 岁
// 日文 / 带重音标识符
let ユーザー名 = "tanaka"
let café = "espresso"
12 个内建函数 + 17 个数组/字符串内建方法。
| 函数 | 说明 |
|---|---|
print(...) |
变参输出,空格分隔,末尾换行 |
clock() |
返回 Unix 时间戳(秒,毫秒精度) |
input(prompt?) |
从 stdin 读取一行;可选 prompt 参数 |
int(value) |
转为 int64(截断小数);接受 number/string/bool |
float(value) |
转为 float64;接受 number/string/bool |
len(value) |
返回数组长度或字符串字符数(int64) |
type(value) |
返回类型名:"int" / "float" / "string" / "array" / "boolean" / "null" / "function" / "object" |
range(stop) |
生成 0..stop-1 的数字数组 |
range(start, stop, step?) |
生成指定范围的数字数组 |
assert(cond, msg?) |
断言条件为真,否则抛出 RuntimeError |
bin(num) |
数字 → 二进制字符串(如 "0b101") |
oct(num) |
数字 → 八进制字符串(如 "0o12") |
hex(num) |
数字 → 十六进制字符串(如 "0xFF") |
数组内建方法(7 个):
.add(item) .pop() .length .insert(idx, item) .remove(idx) .indexOf(item) .clear()
字符串内建方法(10 个):
.length .substring(start, end?) .include(sub) .startsWith(p) .endsWith(s) .upper() .lower() .trim() .replace(old, new) .replaceAll(old, new) .split(delim)
~9,400 行 C++17,零外部依赖,清晰的模块划分。支持 Windows / Linux / macOS 多架构构建与原生打包。
三阶段演进:AST 解释器(✅)→ 字节码 VM(Phase 1-4 ✅)→ JIT(规划中)。
| 版本 | 特性 | 状态 |
|---|---|---|
| v0.1 | 词法分析器(Lexer):Source → Token 流 | ✅ 已完成 |
| v0.2 | 语法分析器(Parser):Token → AST + Pratt 解析 | ✅ 已完成 |
| v0.3 | AST 改进、分号语句分隔符 | ✅ 已完成 |
| v0.4 | 树遍历解释器、字符串插值、数组、对象、方法绑定 | ✅ 已完成 |
| v0.5 | int()/float()、range()、++/--、break/continue、复合赋值、类型标注 | ✅ 已完成 |
| v0.6 | 字节码 VM Phase 1(表达式、全局变量、控制流)+ Visitor 模式重构 | ✅ 已完成 |
| v0.7 | VM Phase 2+3:局部变量、break/continue、for-in、函数、对象(Obj)、继承、try/catch/throw | ✅ 已完成 |
| v0.8 | VM Phase 3-4:闭包(upvalue)、字符串插值、运行时错误 catch 完善;VM 设为默认后端 | ✅ 已完成 |
| v0.9 | VM 性能优化:全局变量驻留、快速数值操作码、常量折叠、移动语义 | ✅ 已完成 |
| v0.10 | VM 异常处理完善(finally 路由、异常重抛、catch handler 清理) | ✅ 已完成 |
| v0.11 | 多架构构建系统 + 应用图标 + 原生打包(.msi/.deb/.rpm/.pkg.tar.xz)+ CI | ✅ 已完成 |
| v0.12 | int64/float64 双数值类型 + `len()`/`type()` + 数组方法(7) + 字符串方法(10) | ✅ 已完成 |
| v0.13 | 模块系统(import / export) | ⏳ 规划中 |
| v1.0 | 标准库、LSP、包管理器 vpm | 规划中 |
| 未来 | 优化 / JIT 编译(第三版) | 长期 |
10 篇开发文档(中文)+ 4 个用户文档页面(HTML)。
| 文档 | 内容 |
|---|---|
01-技术栈概览.md |
技术栈、架构、构建命令 |
02-项目结构.md |
项目结构与模块划分 |
03-词法分析器开发文档.md |
Lexer 设计(单遍扫描、错误恢复、Unicode) |
04-AST开发文档.md |
AST 节点设计与 Visitor 模式 |
05-语法分析器开发文档.md |
Pratt Parser 设计 |
06-解释器开发文档.md |
Interpreter 设计(树遍历执行) |
07-运行时系统开发文档.md |
Value / Environment / Callable 系统 |
08-已实现功能总结.md |
所有已实现功能的完整总结 + 版本历程 |
09-构建系统指南.md |
多架构构建、交叉编译、打包指南 |
10-程序员视角-深度分析与UX路线图.md |
~747 行深度分析 + UX 路线图(2026-06-10 修订) |
📚 用户文档 — 快速开始 · 语言参考 · 示例程序(HTML)