Aster

用 Rust 实现的脚本语言解释器。

项目结构

aster/
├── src/
│   ├── lexer/      # 词法分析器
│   ├── ast/        # 抽象语法树
│   ├── parser/     # 语法分析器
│   ├── interpreter/# 解释器
│   ├── error/      # 错误处理
│   └── main.rs
├── script.ast      # 示例脚本
└── Cargo.toml

运行方式

# 运行脚本文件
cargo run -- script.ast

# 从标准输入读取
cargo run

语言特性

数据类型

  • 数字(Number
  • 字符串(String
  • 布尔值(true / false
  • 空值(nil

变量与赋值

let x = 42;
let name = "aster";

控制流

  • 条件分支if / else
  • 循环while

函数

fn fib(n) {
    if (n <= 1) {
        return n
    }
    return fib(n - 1) + fib(n - 2)
}

print(fib(10))

运算符

  • 算术:+ - * /
  • 比较:< <= > >= == !=
  • 逻辑:&& ||
  • 一元:! -

内置函数

  • print(value):打印值
  • clock():返回当前时间戳(秒)

构建

cargo build --release

构建产物位于 target/release/aster,可直接执行:

./target/release/aster script.ast

依赖

无外部依赖,仅使用 Rust 标准库。

Description
一门使用Rust编写的,学习性的解释性编程语言
Readme 65 KiB
Languages
Rust 100%