现代Ada转C / C ++翻译

从Ada(95,2005)到C,是否有任何源到源转换器(转换器)? 他们有多满(他们可以将Ada的每个function转换为gnu c99 + pthreads + POSIX)吗?

是否可以在关键应用程序中使用这种ada-to-c转换器?

PS:也欢迎译者到C ++(最多2003年,扩展名为gnu)。

PPS:当说“gnu c99”时,它仅表示支持C99 +大多数gnu扩展,但不代表GCC。

我不知道任何开源的 Ada-to-C翻译器。 我唯一知道的就是SofCheck,据报道它非常好。

SofCheck后来被AdaCore收购,我对AdaCore网站进行了非常简短的翻译搜索,没有任何内容跳出来。 如果追求商业解决方案对您来说是一个可行的选择,您可以在sales@adacore.com上询问他们。 (至少得到一个价格。)

除非有非常强大的理由在这个应用程序中使用Ada(例如,客户要求它,或者你已经在Ada中编写了一个你想要使用的大型应用程序),如果你只是咬一口,它可能会少得多痛苦根据您的需要,使用精心设计的C99或C ++编写解决方案并编写解决方案。

如果你坚持,Sofcheck的翻译可能是最好的; 他们长期以来一直在努力。

如果做不到这一点,你可以(?)从Ada编译器的ASIS输出开始构建一个翻译器。 这可能是相当多的不必要的工作,因为Ada具有相当精确的语义,如果你想在Ada中粗心地编码,翻译和运行,你最好保留它。 如果您希望输出对最终客户来说“非常”,那将会更加有效。 (长期维护应该是一个考虑因素)。 我怀疑实现代码来模拟Ada的会合可能相当棘手,同时在语义上复杂和异步。 这种方法的真正缺陷在于它需要做很多工作; 也许只是继续你的生活并将应用程序本身编写为非Ada的东西会减少工作量。

请参阅我关于语言翻译的警告和替代方法。