什么是代码生成技术?

Ale*_*nor 4 c++ python code-generation

我正在生成C++代码,看起来它会变得非常混乱,即使我的简单生成类已经有很多特殊情况.以下是现在的代码:http://github.com/alex/alex-s-language/tree/local%2Fcpp-generation/alexs_lang/cpp.

Ned*_*der 9

我编写Cog部分是为了从XML数据模式生成C++代码.它允许您使用嵌入在C++源文件中的Python代码来生成C++源代码.


Gre*_*ill 7

我用于代码生成的一种技术是完全不用担心代码生成器中的格式化问题.然后,作为生成代码后的下一步,运行它indent以合理地格式化它,以便您可以读取(更重要的是,调试)它.


S.L*_*ott 5

请参阅构建测试用例的工具

不清楚你的问题是什么。

如果您的问题是“我如何处理生成类中的所有特殊情况?” 那么这里有一些建议。如果您的问题是其他问题,请更新您的问题。

  1. 使用模板生成器。 例如,Mako将使您的生活更简单。

    写一个你的结果的例子。用${thing}占位符替换零件。由于您从一些有用的东西开始,因此将其转换为模板很容易。

  2. 当用另一种语言生成代码时,您需要将所有其他语言的类定义都设计为灵活的汇编。您希望生成尽可能少的新鲜、新代码。您想稍微调整和自定义,但不想从头开始生成很多东西。

  3. 特殊情况最好用普通的多态来处理。公共超类的单独子类可以实现各种异常和特殊情况。策略设计模式可以很好地处理真正复杂的情况。

    本质上,您拥有代表现实世界对象的 Python 类。这些类具有可以放入 C++ 模板以生成这些对象的 C++ 版本的属性。