我正在寻找一种方法来编写和维护某个算法(实际上是我的代码的一个图形渲染子模块),只有一次。我需要C++,PHP和Javascript中的算法。理论上我可以用C++编写它,并将其包装到PHP扩展中;但是它本身有很多问题,并没有解决Javascript链接。元编程到几种输出语言
我在找什么,我认为是一种从语言(无论哪一个)转换成三个(或两个,如果源语言是三种语言之一)输出语言的工具目标。我发现MetaL(http://www.meta-language.net/)似乎做我想做的,但也看起来死了(自2007年以来没有更新),只针对我需要的三种语言之一。它需要非常灵活,并允许我更新结果 - 例如,我在C++和PHP渲染中使用Cairo,在Javascript端使用HTML Canvas。所以我需要为API定制特定的效果。
或者,我会解决一个PHP解析器和词法分析器,它会给我一个带足够信息的AST,以便为C++和Javascript编写生成器作为替代后端。
任何想法?谢谢。
你的问题让我想起了旧的引用:_有些人在遇到问题时想“我知道,我会用正则表达式。“现在,他们有两个问题。我明白你的意愿来集中维护,但听起来像你正在采取一个有点烦人但合理的问题,并把它变成一个非常复杂的问题。 (我正在考虑自动构建,翻译引擎问题以及您即将进入的调试问题) 想想那些在您移动之后必须维护此解决方案的可怜家伙。 – NightDweller 2011-04-18 13:07:11
如果你最多只谈论几千行代码,你最好仔细设计API并简单地重新编码它们。在语言中发现的所有奇怪事物(例如,C++:类,多重继承,命名空间,单独声明/定义,宏,模板,重载等)的自动代码生成是一项艰巨的任务,不是值得几千行的努力。如果你想产生100K SLOC,那么这将是非常值得的,或者你用任意方式编写代码片段。但3个固定算法的副本?不要以为它值得麻烦。 – 2011-04-19 04:02:09
我可以将自己限制在一个语言的小部分中来编写它。我显然不需要将C++的所有细微差别翻译成多种语言。渲染是90%'计算像素,矩形或圆的位置,计算它的颜色,调用绘制API函数'。它不一定是通用的。无论如何,它看起来像haXe会做我所需要的。 – Roel 2011-04-21 16:26:55