- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有用 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/
HFP 和 HSP 配置文件之间的区别是什么? 在我看来,两者都是提供耳机和手机之间的连接/通信的配置文件。 HFP 是 HSP 的超集吗?它是否像 HSP 但具有免提控制功能,如语音命令? 最佳答案
我需要设置一个服务器来托管 Haskell 生成的网站。如果我使用 PHP,我可以将它托管在 Apache 服务器上。同样,如果我创建一个 Haskell 东西,我可以使用哪些合适的网络服务器?我尝试
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我有用 HSP 编写的大型代码库(wikipedia article - 认为是“BASIC”,但日语)。 “大”是指它有 151352 行代码,60 个源文件,总代码大小为 4.5 兆字节。此外,它
我正在尝试开发一个使用 bluez stack 以及 pulseaudio 和 ofono 的应用程序,以便连接到手机并实现媒体播放 (A2DP)、媒体控制 (AVRCP) 和免提电话 (HFP) 等
This article描述了我对蓝牙的主要烦恼:它们非常适合使用 AptX(和新的 LC3)听音乐。 但到目前为止,还无法用蓝牙耳机替换“传统”耳机(无论是有线耳机还是专有 USB 加密狗),因为一
我是一名优秀的程序员,十分优秀!