91 lines
1.3 KiB
Markdown
91 lines
1.3 KiB
Markdown
# 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 标准库。
|