【问题标题】:Terminology - one-time code generation directives术语 - 一次性代码生成指令
【发布时间】:2017-03-21 09:29:41
【问题描述】:

有没有一种预处理器,它的语句一旦处理完就会完全消失并被目标语言语法永久取代?

我想在网络上研究它,但我不知道要搜索什么字词。如果我搜索“代码生成器”、“模板语言”、“预处理器指令”、“mixins”、“注释”,我会得到输入成为事实来源的生成器。

我能想到的最接近的是macro

我要做什么

我经常不得不编写冗长且不必要的手工劳动的代码,我正在寻找一种更智能的方式来输入至少大部分代码并使其自动转换并仅对输出进行源代码控制(必要时手动编辑) .例如:

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

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

应该没有直接的线索表明我使用了模板/预处理器来生成它。

【问题讨论】:

  • 可能是脚手架?

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


【解决方案1】:

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

一个好的源到源转换系统可以让你应用以下形式的重写规则:

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

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

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

【讨论】:

【解决方案2】:

似乎Transpiler 是一种描述方式。

【讨论】:

  • 感谢您的建议。请张贴作为答案,以便我给你信用。
猜你喜欢
  • 1970-01-01
  • 2020-03-23
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
  • 1970-01-01
  • 2022-07-01
  • 2018-12-24
相关资源
最近更新 更多