2015-07-20 73 views
1

我對ANTLR &語法有一定的理解。說ANTLR可以做源語言來將目標語言轉換爲目標語言,如ASP轉換爲JSP或將COBOL轉換爲JSP,這是否正確?如果是的話,你能幫我提供一些信息/教程/鏈接到探險家的可能性?ANTLR:源語言到目標語言的轉換

想法是使用ANTLR務實地將大量代碼從源代碼轉換爲目標代碼。

感謝

+0

在這[問題和答案](http://stackoverflow.com/questions/29201861/antlr4-language-translation-separating-template-logic-from-visitor-class)中提出的討論可能會有所幫助。 – GRosenberg

+0

是的,我早先看過這個,但幾乎沒有理解它甚至接近..!比方說,我有cobol代碼和語法。我想要將代碼轉換爲C#。我該怎麼辦? – user1480864

回答

1

的基本步驟建設Antlr4翻譯是:

  1. 從源語言的輸入文本
  2. 反覆走解析樹來分析產生解析樹解析樹的節點,添加和演化與單個解析樹節點相關聯的屬性(裝飾器模式) - 屬性將描述表示目標語言中節點內容所需的更改。
  3. 解析樹的最後一步是收集和輸出目標語言文本。

屬性的形式和內容以及創建和演化的過程完全取決於源語言和目標語言的性質以及架構師的轉換策略。

由於Antlr parse-tree散步可以在邏輯上彼此獨立,因此可以在單獨的散步中解決特定的轉換問題。例如,一次散步可以評估(可能除其他事項之外)個人perform until陳述是否將被轉換爲ifwhile陳述。另一個步驟可以致力於分析變量名稱,以確保它們在正確的範圍內創建/訪問,並確定任何目標語言所需的臨時變量的命名和範圍。等

鑑於轉換是一次性的事情,實施5,10甚至更​​多的散步沒有根本的懲罰。只是「無論你的情況是否合理」的實用性。

其他QA中提到的(相關)警告是如何處理兩種語言中語句之間沒有簡單或接近同一性的轉換。要轉換唯一的源語言語句,則需要創建目標語言運行時包以實現相應的功能。

GenPackage(我是作者)自動生成一個基本的轉換項目。生成的項目僅代表一種可能的架構方法,並且留下了大量工作來使其適合任何特定的最終用途。