给定自定义IDL如何编写代码生成器?

时间:2009-01-27 07:26:21

标签: c++ code-generation idl

如果你有一个简单的架构和基本的布尔字符串字段,那么如何在C ++中编写代码生成器。 如果你写过,你是怎么开始的。文章/推荐欢迎。

编辑:请注意,这不是标准的CORBA idl。

3 个答案:

答案 0 :(得分:1)

总结:

  1. 手工转换,
  2. 将该输出复制到字符串文字然后
  3. 使用循环和变量而不是固定名称进行概括。
  4. 这是解决TDD的一个特别好的问题 - 首先使用愚蠢的简单测试设置CPPUnit(或one of many alternatives)等框架,以确保您可以加载文件并通过写出来迭代它的内容。

    非常逐步地解决方案 - 获得简单和通用的输出,通过测试确认它是否有效,然后添加更复杂的变体。例如:首先处理单个参数函数。

    对于中等复杂度的代码,只需使用标准C ++ ostream类就可以使用一长串输出语句,这样就可以编写大量代码,将文字与任何变量混合在一起。

答案 1 :(得分:0)

Comet是实现COM的非常好的库。

答案 2 :(得分:0)

不幸的是,你的问题缺乏关于你究竟想要产生什么的细节。但是我会尝试一下,并建议您查看C ++ boost库精神(http://spirit.sourceforge.net)。使用Spirit,您可以创建解析器。因此,假设您已经为您的DSL编写了一个精神解析器(特定于域的语言 - 您的IDL),您将在解析您可以使用访问者模式行走的IDL文件并创建适当的访问者后获得AST(抽象语法树)你可以生成你需要的任何输出,例如生成代码。