Oraset3 编程语言

Oraset3 是一种现代化的通用编程语言,结合了 Go 的简洁性和 C++ 的性能。

特性

  • 简洁的语法,易于学习
  • 高性能的编译型语言(编译为 C++
  • 跨平台支持(Windows/Linux
  • 支持函数、变量声明、控制流等

快速开始

Windows

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

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

使用

直接运行(推荐)

# 直接编译并运行 Oraset3 代码
./oraset3 input.ora

编译到 C++ 文件

# 编译 Oraset3 源代码到 C++
./oraset3 input.ora output.cpp

# 编译生成的 C++ 代码
g++ -o output output.cpp

# 运行
./output

示例

Hello World

func main() {
    var message string = "Hello, Oraset3!"
    printString(message)
}

func printString(value string) {
    std::cout << value << std::endl;
}

阶乘与斐波那契

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

S
Description
Full-line version, uses a brief cpp go syntax, runs fast
Readme 74 KiB
Languages
C++ 95%
Go 3.2%
Makefile 0.9%
CMake 0.5%
Batchfile 0.4%