是否有任何從Ada(95,2005)到C的源到源轉換器(轉換器)? 他們有多滿(他們可以將Ada的每個功能轉換爲gnu c99 + pthreads + POSIX)嗎?現代Ada到C/C++翻譯器
在關鍵應用程序中是否可以使用這種ada-to-c轉換器?
PS:我們也歡迎翻譯至C++(至2003年,GNU擴展)。
PPS:當表示「gnu c99」時,表示只支持C99 +大部分gnu擴展,但不代表GCC。
是否有任何從Ada(95,2005)到C的源到源轉換器(轉換器)? 他們有多滿(他們可以將Ada的每個功能轉換爲gnu c99 + pthreads + POSIX)嗎?現代Ada到C/C++翻譯器
在關鍵應用程序中是否可以使用這種ada-to-c轉換器?
PS:我們也歡迎翻譯至C++(至2003年,GNU擴展)。
PPS:當表示「gnu c99」時,表示只支持C99 +大部分gnu擴展,但不代表GCC。
我不知道任何開源 Ada-to-C轉換器。我唯一知道的就是SofCheck,據說這很好。
自從被AdaCore收購後,我做了一個非常簡短的翻譯AdaCore網站的搜索,並沒有跳出來。如果追求商業解決方案對您而言是可行的選擇,您可以通過[email protected]詢問他們。 (至少得到一個價格。)
謝謝。你能說什麼:http://adatoccpp.sourceforge.net(不完整?)和http://mapusoft.com/products/ada-changer/? – osgx
FWIW:http://www.adacore.com/press/adacore-sofcheck-merge –
請注意,該翻譯的作者也是由AdaCore聘請的,所以有人應該有答案。 –
除非在這個應用程序中使用Ada有非常強的理由(例如,客戶要求它,或者您已經有一個在Ada中編碼的大型應用程序)如果你只是咬緊牙關,按照你認爲合適的方式編寫精心設計的C99或C++代碼解決方案,可能會少一些痛苦。
如果你堅持,Sofcheck的翻譯可能是最好的;他們一直在努力。
如果不成功,您可能會(?)構建一個以Ada編譯器的ASIS輸出開始的翻譯器。這可能相當多,因爲Ada具有非常精確的語義,因此如果您只是在Ada中不小心編寫代碼,翻譯和運行,您最好保留這些語義。如果您希望輸出對於最終客戶來說是「美麗的」,那將會更加有效。 (長期維護應該是一個考慮因素)。我懷疑實現代碼來模擬Ada的會合可能相當棘手,同時在語義上是複雜和異步的。這種方法的真正缺陷在於它需要很多工作。也許只是繼續你的生活,並且將應用程序本身編碼在非Ada中會更省力。
看到我的警告language translation done poorly和替代方法。
這是正確答案的一半,但是當你不必非常愚蠢時重寫完美的代碼。我不在乎它寫的是什麼語言,以及新語言的假設好處是什麼。如果你不能得到一個編譯器,那是另一回事,但這裏還沒有提到。 –
... + +的一半是重寫通常比嘗試手動翻譯更好。儘管如此,你仍然會得到一些必須進行調試和測試的東西,與原來的產品一樣多。 –
我並不打算暗示他應該重寫應用程序。事實上,OP沒有說他是否擁有一個Ada程序,只是他想使用Ada編譯器;我(錯誤地?)認爲他會寫一個新的應用程序。如果他有一個Ada程序,那麼任何質量的自動翻譯可能比手寫更好(低成本,更快,更低風險),已達成一致。我修改了答案,使其更清晰。 –
爲什麼不直接使用ADA編譯器? – Mat
因爲某些硬件沒有ADA。 – osgx
哪個硬件? –