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:
90
README.md
Normal file
90
README.md
Normal 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 标准库。
|
||||
Reference in New Issue
Block a user