是否有从 Ada (95, 2005) 到 C 的源到源转换器(翻译器)?他们有多满(他们可以将 Ada 的每个功能都转换为 gnu c99 + pthreads + POSIX)吗?
是否可以在关键应用程序中使用这种 ada-to-c 转换器?
PS:C++ 的翻译器(直到 2003 年,带有 gnu 扩展)也受到欢迎。
PPS:当说“gnu c99”时,仅表示支持C99+大多数gnu扩展,并不表示GCC。
是否有从 Ada (95, 2005) 到 C 的源到源转换器(翻译器)?他们有多满(他们可以将 Ada 的每个功能都转换为 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 的方式编写应用程序本身会更省力。
请参阅我对语言翻译做得不好和替代方法的警告。