【发布时间】:2012-05-26 18:45:58
【问题描述】:
我有大量的代码库,用HSP(wikipedia article - 认为是“BASIC”,但是日语)。
“大”是指它有 151352 行代码,60 个源文件,总代码大小为 4.5 兆字节。此外,它有大量意大利面条式代码,没有 cmets 并且急需重构。好在它有很多文本消息,所以并不是所有这些行都代表实际的程序逻辑。
我想将此代码库转换为 C++,同时保持我的理智。 “我愿意”表示我不是必须去做,但我强烈希望找到一种方法来做。
有什么好的方法吗?显然,我不能只用 C++ 重写它(嗯,我可以在理论上做到这一点,但最多需要 2 年,而且我会在过程中引入许多错误),所以(我认为)一个合理的决定是实现代码重新编译器/预处理器,这将允许我将源代码转换为杂乱无章的 C++(HSP 比 C++ 简单得多,所以它应该是可能的)然后开始重构/记录结果。
不幸的是,我不完全确定如何有效地构建重新编译器。虽然我知道有 Lex/Yacc/Bison/Boost::spirit,但我没有亲自使用过它们。
那么您能推荐一种执行此类转换的好方法吗? 允许任何在 windows 平台上可用的免费工具(“免费”,如“免费啤酒”),只要不影响原始源代码的许可。
【问题讨论】:
-
如果你没有时间重写,为什么还要重写?如果它现在是意大利面,那么转换会给你更多的意大利面。
-
将意大利面条代码自动转换成另一种语言有什么意义?结果代码只会更糟。另外,它不会接近惯用的 C++,所以在这种情况下重构 == 重写。
-
你能创建一个虚拟机来保留 HSP 的环境并保留在那里吗?
-
@OliCharlesworth:“将意大利面条代码自动转换成另一种语言有什么意义?”与 HSP 相比,我在 C++ 方面的技能很多,并且用我熟悉的语言添加某些缺失的功能会更容易。 HSP 也有一些严重的限制(比如“所有变量都是全局的”),这会妨碍正确的清理。
-
@MitchWheat:见第二段。我不需要这样做,但我正在寻找解决问题的好方法。