0

我已经开始阅读clangand的源代码了zig-lang。不幸的是,源代码很复杂,我无法找出这些编译器的前端在主函数中调用的位置。

clang中,我找到的更近的地方是这里,但它看起来不像处理编译前端。

zig-lang中,主要功能更加混乱,难以理解。我只是可以在这里找到事实上的主要功能(main0)。

虽然,解释这些编译器的阶段并指向他们的代码是值得赞赏的,但对我来说,仅仅调用前端计算的地方就足够了。

4

1 回答 1

0

主 zig 编译器从Compilation.performAllTheWork执行。该函数循环遍历所有编译项并编译它们。( main()buildOutputTypeupdateModuleCompilation.update → Compilation.performAllTheWork)

当从Compilation.updateStage1Module的工作队列中找到 stage1_module 项时,将调用 Stage1(zig 0.8.0 中的默认编译器,用 C++ 编写)。大部分编译发生在codegen_build_object(从zig_stage1_build_object调用)

Stage2(用 Zig 编写的工作中更快的编译器)更紧密地集成到工作队列中,因为它支持增量编译并在工作队列切换的这些分支中调用。


Clang 从某个地方开始,也许在clang.lib.frontend.CompilerInvocation

于 2021-03-17T02:11:42.560 回答