编译器:解析或语义分析中是否考虑隐式类型转换?

Lee*_*hai 4 compiler-construction parsing compilation clang semantic-analysis

根据我的理解,隐式转换是在语义分析中完成的,但是 clang AST 命令clang -Xclang -ast-dump -fsyntax-only file.cpp会在 AST 中生成类型转换信息,如下两个:

...
`- ImplicitCastExpr 0x7fdc27050558 <col:14> 'int' <LValueToRValue>
...

...
ImplicitCastExpr 0x7f878884c2d0 <col:19> '无符号整数' <IntegralCast>
...

因此这个问题。

Gar*_*ord 5

隐式类型转换通常发生在编译器的语义分析(更具体地说是类型检查)中,但有些可能发生在解析中以生成更简单的 AST(直接将文字转换为其值等)。

如果您专门查看您使用的命令选项,我们会发现这意味着

-fsyntax-only 运行预处理器、解析器和类型检查阶段。

https://clang.llvm.org/docs/CommandGuide/clang.html

所以我们看到我们期望输出类型信息(需要隐式转换)。

注意:我可能不清楚,但类型检查只是语义分析的一个阶段。