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

感谢您的建议。请发帖作为答案,我可以给你信用。 –