ROSE 編譯器框架/如何建立跨語言翻譯器
外觀
在本 HOW-TO 中,將介紹生成跨語言翻譯器的步驟。我們將使用 Fortran 到 C 的翻譯器作為示例。
- 更改輸出檔名。字尾名需要使用以下函式更改。
void SgFile::set_unparse_output_filename (std::string unparse_output_filename )
- 更改輸出語言型別。
void SgFile::set_outputLanguage(SgFile::outputLanguageOption_enum outputLanguage)
- 將輸出設定為僅目標語言。
We use set_C_only for the Fortran to C translation. This process might be optional.
void SgFile::set_C_only(bool C_only)
- 例如,ROSE AST 使用不同的 AST 節點來表示 C 和 Fortran 中的迴圈。下圖顯示了不同語言中的相同迴圈。
- 使用 wholeAST 作為參考來實現翻譯函式。
- 從原始 AST 節點複製所需資訊,生成新的 AST 節點。
- 刪除原始節點,並確保 AST 中的父/子關係設定正確。
- 如果編譯器可用以測試輸出程式碼,則執行後端使用後端編譯器生成物件。
- 如果目標語言的編譯器不可用,則確保可以從測試用例生成輸出程式碼。建議對所有測試輸出執行編譯測試。

