术语 - 一次性代码生成指令

时间:2016-11-07 21:53:03

标签: c-preprocessor code-generation terminology template-engine preprocessor

是否有一个预处理器这样的东西,它的语句一旦被处理,就完全消失并永久地被目标语言语法取代?

我想在网上研究它,但我不知道要搜索的术语。如果我搜索"代码生成器","模板语言","预处理器指令"," mixins","注释&#34 ;我得到了生成器,其输入成为事实的来源。

我能想到的最接近的是macro

我想做的事

我经常需要编写冗长且不必要的手工劳动的代码,并且正在寻找一种更智能的方法来输入至少大部分代码并让它自动转换并且只对输出进行源代码控制(如果需要,还可以手动编辑) 。例如:

  • Java代码 - 而不是编写getter / setter,javadoc(也许变换器可以是maven插件)
  • HTML - 我只是想添加网址,并让我的预处理器自动将它们转换为链接,图像,视频,音频等,具体取决于文件扩展名和一些正则表达式替换(目前我通过cron作业运行perl脚本)

我只想将它用作我自己的速记而不是在我的项目中强制执行它并使输出可编辑,以便其他人必须学习新的框架或语言(如Protobuf,Stringtemplate,GWT,C哈希定义,PHP ,JSP等)。

我不应该直接使用模板/预处理器来生成它。

2 个答案:

答案 0 :(得分:1)

你想要的是一个“程序转换系统”。见https://en.wikipedia.org/wiki/Program_transformation。 (这是“转发者”[丑陋的术语]的超集。)

一个好的源到源转换系统将允许您应用以下形式的重写规则:

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

然后,您可以获取源代码,并在该代码中运行一组重写规则以进行更改。

生成的代码被“转换”;重写规则不可见。

答案 1 :(得分:0)

似乎Transpiler是描述它的一种方式。