Oraset3 编程语言

GPL-3.0 License

Oraset3 是一种现代化的通用编程语言,结合了 Go 的简洁性和 C++ 的性能。编译为 C++ 代码,支持直接执行,语法简洁如 Python,性能接近 C++。

特性

核心特性

  • 语法简洁 - 比 Python 更简洁,比 Go 更灵活
  • 高性能编译 - 编译为优化的 C++ 代码
  • 跨平台支持 - Windows/Linux/macOS
  • 无需主函数 - 顶层代码直接执行

操作系统级特性

  • 指针操作 - & 取地址,* 解引用
  • 位操作符 - &, |, ^, ~, <<, >>
  • 联合体(union) - 内存重叠的数据结构
  • 枚举(enum) - 类型安全的常量组
  • 类型转换 - C 风格类型转换 (type)value

语法示例

// 变量声明(简洁语法)
name := "Oraset3"
age := 1

// 位操作
a := 10  // 0b1010
b := 12  // 0b1100
println(a & b)  // 8
println(a | b)  // 14
println(a ^ b)  // 6

// 枚举
enum Color { RED, GREEN, BLUE = 10 }

// 联合体
union Data { i: int; f: float }

// 指针操作
x := 100
ptr := &x
*ptr = 200  // 通过指针修改值

// 类型转换
num := 3.14
intNum := (int)num  // 3

快速开始

编译 Oraset3 编译器

# Windows (MinGW)
g++ -std=c++20 -Iinclude src/cpp/*.cpp src/cpp/lexer/*.cpp src/cpp/parser/*.cpp src/cpp/semantic/*.cpp src/cpp/codegen/*.cpp -o oraset3.exe -mconsole

# Linux/macOS
g++ -std=c++20 -Iinclude src/cpp/*.cpp src/cpp/lexer/*.cpp src/cpp/parser/*.cpp src/cpp/semantic/*.cpp src/cpp/codegen/*.cpp -o oraset3

运行 Oraset3 代码

# 直接运行(推荐)
./oraset3 input.ora

# 编译到 C++ 文件
./oraset3 input.ora output.cpp

# 编译生成的 C++ 代码
g++ -std=c++20 -o output output.cpp
./output

项目结构

Oraset3/
├── src/
│   ├── cpp/               # C++ 编译器核心
│   │   ├── lexer/         # 词法分析器
│   │   ├── parser/        # 语法分析器
│   │   ├── semantic/      # 语义分析器
│   │   └── codegen/       # C++ 代码生成器
│   └── go/                # Go 前端
├── include/               # 头文件和内置库
│   └── fdan.orh           # 内置函数库
├── tests/                 # 测试用例
│   ├── test_os_features.ora   # 操作系统特性测试
│   ├── test_bitops.ora        # 位操作测试
│   ├── test_enum.ora          # 枚举测试
│   └── test_union.ora         # 联合体测试
└── docs/                  # 文档

内置函数

函数 说明
println(x) 打印并换行
print(x) 打印不换行
input() 读取一行输入
int(x) 转换为整数
float(x) 转换为浮点数
string(x) 转换为字符串
len(x) 获取长度
sys(cmd) 执行系统命令

许可

本项目采用 GPL-3.0 许可证。

  • 编译器源码(词法分析器、语法分析器、语义分析器、代码生成器)受 GPL-3.0 约束
  • Oraset3 语言语法、运行时库、以及编译生成的代码不受此许可证约束
  • 您可以自由使用 Oraset3 编写任何程序,包括私有和商业软件

示例代码

Hello World

println("Hello, Oraset3!");

阶乘函数

func factorial(n int) int {
    if (n <= 1) {
        return 1;
    }
    return n * factorial(n - 1);
}

println(factorial(5));  // 120

结构体

struct Point { x: int; y: int; }

var p Point
p.x = 10
p.y = 20
println(p.x + p.y)
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%