# Aster 用 Rust 实现的脚本语言解释器。 ## 项目结构 ``` aster/ ├── src/ │ ├── lexer/ # 词法分析器 │ ├── ast/ # 抽象语法树 │ ├── parser/ # 语法分析器 │ ├── interpreter/# 解释器 │ ├── error/ # 错误处理 │ └── main.rs ├── script.ast # 示例脚本 └── Cargo.toml ``` ## 运行方式 ```bash # 运行脚本文件 cargo run -- script.ast # 从标准输入读取 cargo run ``` ## 语言特性 ### 数据类型 - 数字(`Number`) - 字符串(`String`) - 布尔值(`true` / `false`) - 空值(`nil`) ### 变量与赋值 ```rust let x = 42; let name = "aster"; ``` ### 控制流 - **条件分支**:`if` / `else` - **循环**:`while` ### 函数 ```rust fn fib(n) { if (n <= 1) { return n } return fib(n - 1) + fib(n - 2) } print(fib(10)) ``` ### 运算符 - 算术:`+` `-` `*` `/` - 比较:`<` `<=` `>` `>=` `==` `!=` - 逻辑:`&&` `||` - 一元:`!` `-` ### 内置函数 - `print(value)`:打印值 - `clock()`:返回当前时间戳(秒) ## 构建 ```bash cargo build --release ``` 构建产物位于 `target/release/aster`,可直接执行: ```bash ./target/release/aster script.ast ``` ## 依赖 无外部依赖,仅使用 Rust 标准库。