gpt4 book ai didi

c++ - HSP 到 C++ : Language conversion of a large codebase

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:55:18 26 4
gpt4 key购买 nike

我有用 HSP 编写的大型代码库(wikipedia article - 认为是“BASIC”,但日语)。

“大”是指它有 151352 行代码,60 个源文件,总代码大小为 4.5 兆字节。此外,它有大量的意大利面条式代码,没有注释并且急需重构。好消息是它有很多文本消息,因此并非所有这些行都代表实际的程序逻辑。

我想将此代码库转换为 C++,同时保持理智。 “我愿意”表示我不是必须做这件事,但我强烈希望找到一种方法来做这件事。

有什么好的方法吗?显然,我不能用 C++ 全部重写(好吧,我可以在理论上做到这一点,但这需要长达 2 年的时间,而且我会在过程中引入很多错误),所以(我认为)一个合理的决定是实现代码重新编译器/预处理器,它允许我将源代码转换成困惑的 C++(HSP 比 C++ 简单得多,所以它应该是可能的)然后开始重构/记录结果。

不幸的是,我不完全确定如何有效地构建重新编译器。虽然我知道有 Lex/Yacc/Bison/Boost::spirit,但我个人并没有使用过它们。

那么您能推荐一种执行此类转换的好方法吗?允许在 Windows 平台上使用任何免费工具(“免费”如“免费啤酒”),只要它不影响原始源代码的许可即可。

最佳答案

Yacc它的目标是高效处理更复杂的任务,而且学习起来很复杂,我认为它是大材小用。

Spirit 应该是一个更好的选择,如果您已经了解它,我个人会使用 Prolog 来完成这项任务。

Prolog 具有内置的语法分析功能,即所谓的 DCG。对于像 Basic 这样简单的语言,我很确定在语法上没有实际问题,而且现代 Prologs(我认为对 SWI-Prolog 来说是有效的)可以很好地处理源代码中的复杂字符编码。

此外,在 Prolog 中,您可以尝试使用一些简单的方法来展开意大利面条代码。一般来说,这是一项复杂的任务,但如果您只有少量模式并重复多次,则可能很容易。

模式匹配是此类问题的关键...

关于c++ - HSP 到 C++ : Language conversion of a large codebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10665402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com