2009-01-27 145 views
1

如果您的基本布尔字符串字段具有足够简单的架构,那么该如何去编写C++中的代码生成器。 如果你曾经写过,你是如何开始的。文章/建议表示欢迎。如何编写自定义IDL的代码生成器?

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

+0

你想要生成什么?如果你说'IDL',我想'CORBA'。为什么不使用现有的发生器/ CORBA编译器? – 2009-01-27 07:52:52

回答

0

Comet是实现COM的不错的库。

1

总结:

  1. 转换的东西手,
  2. 复制到输出字符串文本,然后
  3. 与循环和变量,而不是固定的名字概括。

这是TDD解决一个特别好的问题 - 通过建立与太简单测试的框架,如CPPUnit的(或one of many alternatives)只是确保你可以加载一个文件,并写入重复的内容开始他们出去了。

非常增量地接近解决方案 - 获得一些简单和一般的输出,通过测试来确认它的工作原理,然后添加更复杂的变体。例如:首先处理单个参数功能。

对于复杂度适中的代码,只需使用标准C++ ostream类的一组输出语句,这将允许您编写大量代码混合文字与任何变量。

0

不幸的是,您的问题缺乏关于您究竟想要生成什么的细节。不过,我会采取刺探的方式,并建议您看看C++助推库精神(http://spirit.sourceforge.net)。借助Spirit,您可以创建解析器。因此,假设你已经为你的DSL(领域特定语言 - 你的IDL)编写了一个灵魂分析器,你将在解析你的IDL文件后得到一个AST(抽象语法树),你可以使用访问者模式并创建合适的访问者你可以生成你需要的任何输出,例如生成代码。