Skip to content

Repository files navigation

Reflaxe.Ada

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 的编译时类型系统
  • ❌ 直接修改生成代码 - 生成的代码是只读的

安装

  1. 确保已安装 Haxe 4.3+
  2. 安装 Reflaxe 库:
    haxelib install reflaxe
  3. 将 reflaxe.Ada 添加为 haxelib:
    haxelib dev reflaxe.Ada /path/to/reflaxe.Ada

使用方法

基本配置文件 (build.hxml)

-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

生成的 Ada 代码结构

每个 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 特性映射

贡献

欢迎贡献代码!请遵循以下准则:

  1. 保持代码简洁清晰
  2. 遵循 Ada 和 Haxe 的命名约定
  3. 添加适当的测试用例
  4. 更新相关文档

许可证

MIT License

参考

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages