我将代码史密斯用于PLINQO模板,从DB对象构建我的DAL;它效果很好!

我相信这是代码生成器应用程序的主要用途,但是我很好奇...您还考虑使用代码生成器的其他代码?您是否有经常使用的代码史密斯模板(如果是,它做什么)?

有帮助吗?

解决方案

我没有使用过代码史密斯,但是我已经做了很多代码生成。我不知道我为WIMAX系统编写了大多数配置管理(CM)系统,其中为3个不同平台生成了CM代码。唯一的区别是每个平台的CM模型。

该模型是我们构建的特定自定义域语言(DSL)。该语言是一种基本的容器/元素样式,容器可以嵌套并具有标识符,并且元素是预定义的类型。文档是元素和容器的属性。您可以添加 卢阿 用于进行语义验证的元素和容器定义的摘要(例如,值在正确的范围内,如果是IP地址,则在其他地方定义的CIDR范围等)。

解析器生成了一个语法树,然后我们将其推到模板上。模板语言是部分c实施 StringTemplate. 。我们用它来生成:

  • 应用程序可以调用以获取配置值的模型特定的C API,
  • 收集的LUA代码用于验证模型并提供有用的错误消息,
  • API的两个“后端”,可以管理内存中的值(用于模型的临时操纵)以及数据库系统(用于在过程之间共享)中,
  • 配置文件解析器和作者,
  • HTML文档,以及
  • 命令行接口(CLI)实现用于交互式查看和更改配置的实现。

回想起来,我应该直接将LUA直接用作DSL。这本来是更多的详细信息,但是已经在那里拥有解析器,并且许多LUA模板选择可以节省很多开发工作。

对于具有重复结构和关于这些事情需要做什么的明确规则的事情,代码生成可能是一件很棒的事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top