我正在学习编译器,并想对 GCC 解析器和词法分析器进行自己的更改。是否有任何测试工具或其他可用方法可以让我更改 gcc 代码并相应地对其进行测试。
我尝试更改词法分析文件,但现在我被卡住了,因为我不知道如何编译这些文件。我尝试使用其他 GCC 编译器进行编译,但显示错误。我什至尝试过配置和制作,但每次更改都这样做似乎效率不高。
这些更改的目的只是为了学习,我必须只考虑 GCC,因为这是我的导师允许的唯一编译器。
我正在学习编译器,并想对 GCC 解析器和词法分析器进行自己的更改。是否有任何测试工具或其他可用方法可以让我更改 gcc 代码并相应地对其进行测试。
我尝试更改词法分析文件,但现在我被卡住了,因为我不知道如何编译这些文件。我尝试使用其他 GCC 编译器进行编译,但显示错误。我什至尝试过配置和制作,但每次更改都这样做似乎效率不高。
这些更改的目的只是为了学习,我必须只考虑 GCC,因为这是我的导师允许的唯一编译器。
我什至尝试过配置和制作,但每次更改都这样做并没有效率。
这正是你应该做的。(嗯,你不需要在每次更改后重新配置,只需make
再次运行。)然而,默认情况下,GCC 将自身配置为引导模式,这意味着不仅你的主机编译器编译 GCC,编译的 GCC 然后再次编译 GCC (然后再次)。--disable-bootstrap
对于您的目的而言,这太过分了,您可以通过添加配置选项来防止这种情况发生。
另一个可以帮助显着减少构建时间的选项是只启用您感兴趣的语言。由于您正在试验,如果您创建适用于 C 或 C++ 的东西,即使对于一些晦涩难懂的语言,您可能会非常高兴Java碰巧崩溃的原因。当您将更改提供给更多的受众时,测试其他语言变得相关,但目前还不是这样。涵盖此内容的配置选项是--enable-languages=c,c++
.
大多数配置选项都记录在安装 GCC:配置页面上。全面测试您的更改记录在Contributing to GCC页面上,但这可能是以后的事情:您应该知道如何通过简单地尝试使用您的新功能的代码来使您自己的更简单的测试通过。
您进行更改(通过保存您修改的文件使其成为“永久”)、编译代码并运行测试套件。
您通常会编写额外的测试或删除那些因您的更改而无效的测试,仅此而已。
如果您的更改对上游编译器没有任何“积极”贡献,则可能永远不会接受它们,并且您可以获得的唯一“永久性”是本地副本中的修改。