【发布时间】:2021-12-22 00:24:01
【问题描述】:
在过去的几周里,我一直在试验 AST 和 Clang,尤其是 clang-tidy。
Clang 提供了一些类和与 AST 交互的方式,但我不明白的是,我经常使用的 clang::VarDecl 是由 Clang 的创建者命名和创建的,还是由语言。
谁决定将其称为 VarDecl?
我的意思是,AST(及其所有元素)是否来自语言发明者的思想,并且各种前端只是创建以他/她编写的文档命名的类,或者每个前端都可能创建其 AST给定的源代码,所以 Clang 和 GCC 是不同的?
【问题讨论】:
-
github.com/llvm/llvm-project/commit/…
by the creators of Clang, or by the creators of the language你指的是什么/哪种“语言”?你是说 C++ 编程语言? -
您正在查看特定编译器的内部结构。名称和含义不必与其他任何人协调。 gcc 的内部结构会非常不同。
-
语法(或文法)是语言的一部分。编译器在处理过程中是否使用树不是语言关心的。您也可以在自然语言(如英语)上定义 AST(至少其中大多数 - 有些语言没有非常分层的语法结构)。
-
@KamilCuk 对不起,你是对的,我指的是 C++。
-
而“前端”指的是编译器?
标签: c++ gcc compiler-construction clang clang-tidy