Мне известны только два компилятора Ada to C, самый мощный из которых (AdaMagic) теперь известен как MapuSoft Ada-to-C / C ++ Changer.Вам понадобится среда выполнения Windows или Linux для запуска транслятора (Wine, Docker и т. Д. На macOS).Кроме того, вам нужно ограничиться Ада 95. Говорят, что AdaMagic поддерживает «подмножество Ады 2005», но я еще не наткнулся на это подмножество.Также вам нужно будет портировать среду выполнения или ее часть.Если вы отключите проверки времени выполнения, количество времени выполнения, требуемое для порта, станет меньше, поэтому вам решать, сколько времени вы готовы потратить на него.
Он имеет два режима работы, либо нацеленный на C,или C ++, я рекомендую C ++, потому что throw-catch лучше подходит для современной среды выполнения Objective C (с использованием C ++ ABI за кулисами), чем для C setjmp / longjmp.
С некоторыми усилиями вы получите что-то иработает.
Жаль, что разработчики Ada так не знают об этой опции.Может быть, кто-нибудь найдет время для переноса AdaMagic на EmScripten, iOS, Elbrus или любую другую необходимую для человечества цель, чтобы начать массовое принятие Ada.
Другие посоветовали создавать привязки Swift из мостовых заголовков, но IMO победной стратегией будетнаписать код клея в Objective-C ++ гибрид.Objective-C ++ будет иметь доступ как к коду Swift (который рассматривается как внешние классы Objective-C), так и к переведенному коду Ada-to-C ++.Например, он сможет отлавливать исключения C ++ из Ada и генерировать исключения Objective-C или наоборот.
Другой компилятор - GNAT CCG aka SPARK2C.Он предназначен для встраиваемых устройств, не имеющих другого компилятора Ada.Он поддерживает последние стандарты Ada, но очень ограничен в отношении функций, требующих времени выполнения.В основном, нет времени выполнения.Нет времени выполнения, нет проблем.Нечего портировать.В этом компиляторе можно вернуть ограниченную запись из функции (функция Ada 2005+), но не может иметь RAII, задачи и т. Д. Я предполагаю, что это гораздо более строгие требования, чем Ada 95. GNAT CCG еще не является общедоступным, но я ожидаюон должен появиться перед ежегодным Make с Ada, иначе это будет очень глупая ситуация.
Другие варианты - Ada-to-Java или Ada-to-.NET, возможно, они могут работать для вашего приложения лучше, чем другие..