1

如果您有一个包含基本布尔字符串字段的足够简单的模式,那么如何在 C++ 中编写代码生成器。如果你曾经写过,你是如何开始的。欢迎文章/推荐。

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

4

3 回答 3

1

总之:

  1. 手动转换一些东西,
  2. 将该输出复制到字符串文字中,然后
  3. 使用循环和变量而不是固定名称进行概括。

这是使用 TDD 解决的一个特别好的问题 - 首先设置一个框架,例如 CPPUnit(或许多替代方案之一),并使用愚蠢的简单测试来确保您可以加载文件并通过写出文件来迭代其内容。

非常渐进地接近解决方案 - 获得一些简单和通用的输出,通过测试确认它有效,然后添加更复杂的变体。eg:先处理单参数函数。

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

于 2009-01-27T08:38:15.957 回答
0

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

于 2009-04-03T17:41:49.447 回答
0

Comet是一个很好的实现 COM 的库。

于 2009-01-27T08:20:26.240 回答