一门融合 Python 简洁与 Java 严谨的编程语言

Jaon 从零实现了完整的编译器工具链:词法分析、语法分析、语义分析、 Bytecode 编译器以及栈式虚拟机。使用自定义后缀 .jaon

bash
$ python -m jaon run examples/hello.jaon Hello, Jaon!

核心特性

📝

静态类型 + 类型推断

参数与返回值需显式声明,局部变量可省略类型,兼顾安全与简洁。

🏗️

类与继承

支持构造器、字段、方法、访问控制(public / private)以及静态方法。

🎯

简洁语法

Python 风格的关键字配合 Java 风格的 {} 块结构,易于上手。

📦

内建集合

List、Dict、String 及常用方法,满足日常开发需求。

🛡️

异常处理

完整的 try / catch / finally / throw 异常机制。

⚙️

自定义编译器

完整的前端与后端实现,可生成 Bytecode 并由栈式虚拟机执行。

代码示例

hello.jaon
// Jaon: Hello World
println("Hello, Jaon!");
classes.jaon
class Animal {
    public var name: String = "";

    constructor(n: String) {
        this.name = n;
    }

    public fun speak(): String {
        return "Some sound";
    }
}

class Dog extends Animal {
    constructor(n: String) {
        this.name = n;
    }

    public fun speak(): String {
        return "Woof!";
    }
}

var dog = new Dog("Buddy");
println(dog.name);
println(dog.speak());
control_flow.jaon
var x = 10;

if (x > 0) {
    println("positive");
} elif (x < 0) {
    println("negative");
} else {
    println("zero");
}

var i = 0;
while (i < 3) {
    println(i);
    i = i + 1;
}

for (n in [1, 2, 3]) {
    println(n);
}
exceptions.jaon
fun divide(a: Int, b: Int): Int {
    if (b == 0) {
        throw "Division by zero";
    }
    return a / b;
}

try {
    divide(10, 0);
} catch (e) {
    println("Error: " + e);
}

快速安装

从源码安装

git clone https://github.com/ExploreMaths/Jaon.git
cd Jaon
pip install -e .

Windows 安装程序

下载 Jaon-Setup.exe 并运行,安装后双击 .jaon 文件即可执行。

下载最新版

运行你的第一个 Jaon 程序

bash
python -m jaon run examples/hello.jaon
python -m jaon repl
python -m jaon dis examples/hello.jaon