Initialize Aster project with basic structure, including Cargo configuration, lexer, parser, interpreter, and AST definitions. Add a sample script and README documentation. Implement basic error handling and environment management for variable storage.

This commit is contained in:
0264408
2026-02-04 16:42:51 +08:00
commit f86300f3ce
19 changed files with 1484 additions and 0 deletions

90
README.md Normal file
View File

@@ -0,0 +1,90 @@
# 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 标准库。