Files
Oraset3/README.md
T

127 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Oraset3 编程语言
Oraset3 是一种现代化的通用编程语言,结合了 Go 的简洁性和 C++ 的性能。
## 特性
- ✅ 简洁的语法,易于学习
- ✅ 高性能的编译型语言(编译为 C++)
- ✅ 跨平台支持(Windows/Linux
- ✅ 支持函数、变量声明、控制流等
## 快速开始
### Windows
```bash
g++ -std=c++17 -Wall -Iinclude src/cpp/lexer/lexer.cpp src/cpp/parser/parser.cpp src/cpp/semantic/semantic.cpp src/cpp/codegen/codegen.cpp src/cpp/compiler.cpp -o oraset3.exe
```
### Linux/Mac
```bash
g++ -std=c++17 -Wall -Iinclude src/cpp/lexer/lexer.cpp src/cpp/parser/parser.cpp src/cpp/semantic/semantic.cpp src/cpp/codegen/codegen.cpp src/cpp/compiler.cpp -o oraset3
```
## 使用
### 直接运行(推荐)
```bash
# 直接编译并运行 Oraset3 代码
./oraset3 input.ora
```
### 编译到 C++ 文件
```bash
# 编译 Oraset3 源代码到 C++
./oraset3 input.ora output.cpp
# 编译生成的 C++ 代码
g++ -o output output.cpp
# 运行
./output
```
## 示例
### Hello World
```oraset
func main() {
var message string = "Hello, Oraset3!"
printString(message)
}
func printString(value string) {
std::cout << value << std::endl;
}
```
### 阶乘与斐波那契
```oraset
func factorial(n int) int {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
func printFibonacci(n int) {
var a int = 0;
var b int = 1;
var i int = 0;
var temp int = 0;
while (i < n) {
printInt(a);
temp = b;
b = a + b;
a = temp;
i = i + 1;
}
}
```
## 项目结构
```
Oraset3/
├── src/
│ ├── cpp/ # C++ 编译器核心
│ │ ├── lexer/ # 词法分析器
│ │ ├── parser/ # 语法分析器
│ │ ├── semantic/ # 语义分析器
│ │ └── codegen/ # C++ 代码生成器
│ ├── go/ # Go 前端(Windows
│ └── clang/ # Clang 后端(Linux
├── include/ # 头文件
├── tests/ # 测试用例
├── examples/ # 示例代码
└── docs/ # 文档
```
## 编译器架构
Oraset3 编译器分为几个阶段:
1. **词法分析(Lexer** - 将源代码分解为 token
2. **语法分析(Parser** - 根据语法规则构建抽象语法树(AST)
3. **语义分析(Semantic Analyzer** - 检查类型和变量声明
4. **代码生成(Code Generator** - 将 AST 转换为 C++ 代码
## 语言特性
- ✅ 变量声明 (`var x int = 42`)
- ✅ 函数定义和调用
- ✅ if/else 条件语句
- ✅ while 循环
- ✅ 基本表达式(+、-、*、/、<=、>= 等)
- ✅ 结构体和接口定义
- ✅ 嵌套调用
- ✅ 递归函数
## 语言规范
参见 `docs/LANGUAGE_SPEC.md`
## 许可证
MIT License