C++代码转换和名称查找

C++ code translation and name lookup

本文关键字:查找 代码 转换 C++      更新时间:2023-10-16

我的问题是:编译器在哪个阶段执行名称lookup。我认为可能是在它执行语义分析时,但我只是想确保,因为当我搜索编译器分析时,他们没有提到任何阶段的名称查找(词汇、语法、语义)。

在C++中,名称查找通常需要作为语法分析(解析)的一部分来完成,因为当名称是类型名称或模板名称时,会影响语法。 在某种程度上,可以独立解析类型名称或模板名称的内容,名称查找可能会推迟到以后,但这通常是一个实现细节。

一般来说是语义分析,但在C++中,各个阶段都是交织在一起的,所以如果有人说别的话是可以理解的。

在 C/C++ 中,有时您无法确定句法元素的语义含义,而不知道它的种类(类型、变量等)。大多数C++编译器使用生成的语法(yacc,bison)来构建语法树,因此名称查找必须在此之后。

请考虑以下事项:

A * B;

这要么是类型 A * 的变量 B 的声明,要么是在其参数 A 和 B 上调用运算符 * 的语句。