Reflaxe.Ada 是一个将 Haxe 代码编译为 Ada 2012 的编译器,基于 Reflaxe 框架构建。
- ✅ 基本类型映射 (Int → Integer, Bool → Boolean, String → String)
- ✅ 类编译为 Ada 包和标记类型(tagged types)
- ✅ 静态和实例方法
- ✅ 枚举类型
- ✅ 基本控制流(if/else, while, for)
- ✅ 异常处理(try/catch)
- ✅ 数组和集合
根据 Ada 语言特性和项目要求,以下功能被故意禁用:
- ❌ 动态类型 - Ada 是强静态类型语言
- ❌ 匿名结构 - Ada 需要明确的类型声明
- ❌ 反射 - 不适合 Ada 的编译时类型系统
- ❌ 直接修改生成代码 - 生成的代码是只读的
- 确保已安装 Haxe 4.3+
- 安装 Reflaxe 库:
haxelib install reflaxe
- 将 reflaxe.Ada 添加为 haxelib:
haxelib dev reflaxe.Ada /path/to/reflaxe.Ada
-cp src
-main Main
-lib reflaxe
-D ada
-D ada-output=out
--macro adacompiler.AdaCompilerInit.init()// HelloWorld.hx
class HelloWorld {
public static function main(): Void {
var x: Int = 10;
var y: Int = 20;
var result: Int = add(x, y);
}
static function add(a: Int, b: Int): Int {
return a + b;
}
}编译命令:
haxe build.hxml每个 Haxe 类会生成两个文件:
.ads- Ada 包规范文件(接口声明).adb- Ada 包体文件(实现)
| Haxe 类型 | Ada 类型 |
|---|---|
| Int | Integer |
| Float | Float |
| Bool | Boolean |
| String | String |
| Array | Array of T |
| Void | (procedure) |
| Dynamic | ❌ 不支持 |
| Any | ❌ 不支持 |
reflaxe.Ada/
├── src/
│ └── adacompiler/
│ ├── Compiler.hx # 主编译器类
│ ├── AdaCompilerInit.hx # 初始化宏
│ └── subcompilers/
│ ├── ClassCompiler.hx # 类编译器
│ ├── EnumCompiler.hx # 枚举编译器
│ ├── ExpressionCompiler.hx # 表达式编译器
│ └── TypeCompiler.hx # 类型系统编译器
├── test/ # 测试用例
├── haxelib.json # Haxelib 配置
└── README.md
🚧 Alpha 版本 - 这是一个早期原型,仅支持基本的 Haxe 功能子集。
- 基础架构和编译器框架
- 基本类型系统
- 类和方法编译
- 表达式编译
- 简单测试用例
- 标准库支持
- 泛型支持
- 接口实现
- 包管理
- 更多 Ada 特性映射
欢迎贡献代码!请遵循以下准则:
- 保持代码简洁清晰
- 遵循 Ada 和 Haxe 的命名约定
- 添加适当的测试用例
- 更新相关文档
MIT License
- Reflaxe 框架
- Ada 2012 参考手册
- 参考实现:reflaxe.CPP, reflaxe.CSharp, reflaxe.GDScript