1

有沒有像預處理器那樣的事情,它的語句一經處理就會完全消失並被目標語言語法永久取代?術語 - 一次性代碼生成指令

我想在網絡上研究它,但我不知道要搜索什麼術語。如果我搜索「代碼生成器」,「模板語言」,「預處理器指令」,「mixins」,「註釋」,我會得到其輸入成爲真相源的生成器。

我能想到的最接近的是macro

我試圖做

我經常要編寫的代碼是冗長的和不必要的手工勞動,並正在尋找一種更聰明的方式來輸入至少它的大部分,並將它自動轉換隻有源代碼控制輸出(如果需要,還可以手動編輯)。例如:

  • Java代碼 - 而不是寫getter/setter方法,javadoc的(也許是變壓器可以是一個Maven插件)
  • HTML - 我只是想添加的網址,並有我的預處理器自動轉換爲鏈接,圖片,視頻,根據文件擴展名與一些正則表達式替換(目前我通過運行一個cron作業Perl腳本)

我只是想用它作爲我自己的速記,而不是強制執行音頻等在我的項目中,使輸出可編輯,以便其他人必須學習新的框架或語言(如Protobuf,Stringtemplate,GWT,C hash-defi nes,PHP,JSP等)。

應該沒有直接的線索,我使用模板/預處理器來生成它。

+0

也許腳手架? –

回答

1

你想要的是一個「程序轉換系統」。見https://en.wikipedia.org/wiki/Program_transformation。 (這是「transpilers」[醜陋術語]的超集)。

一個很好的源到源變換系統會讓你申請的形式重寫規則:

if you see *this*, replace it by *that* if *this_condition*. 

然後你可以把你的源代碼,並跨代碼運行一組重寫規則更改。

生成的代碼被「轉換」;重寫規則不可見。

+0

任何示例?這是一個maven插件將是理想的。可能是http://www.smooks.org/? –

+1

請參閱我公司DMS程序轉換系統的重寫規則http://www.semanticdesigns.com/Products/DMS/DMSRewriteRules.html。 (這個例子太長了,無法在這裏發表評論或答案)。 DMS可以用作Maven操作。 –

0

看起來好像Transpiler是一種描述它的方法。

+0

感謝您的建議。請發帖作爲答案,我可以給你信用。 –