编译器:在解析或语义分析中是否考虑隐式类型转换?
Compiler: is implicit type conversion considered in parsing or semantic analysis?
在我的理解中,隐式转换是在语义分析中完成的,但是 clang AST 命令 clang -Xclang -ast-dump -fsyntax-only file.cpp
在 AST 中产生类型转换信息,就像这两个:
...
`- ImplicitCastExpr 0x7fdc27050558 <col:14> 'int' <LValueToRValue>
...
...
ImplicitCastExpr 0x7f878884c2d0 <col:19> 'unsigned int' <IntegralCast>
...
因此问题。
隐式类型转换通常发生在编译器的语义分析(更具体地说是类型检查)中,但有些可能发生在解析中以生成更简单的 AST(将文字直接转换为其值等)。
如果您仔细查看您使用的命令选项,我们会发现它意味着
-fsyntax-only
Run the preprocessor, parser and type checking stages.
https://clang.llvm.org/docs/CommandGuide/clang.html
所以我们看到我们希望输出类型信息(需要隐式转换)。
注意:我可能不清楚,但类型检查只是语义分析的一个阶段。
在我的理解中,隐式转换是在语义分析中完成的,但是 clang AST 命令 clang -Xclang -ast-dump -fsyntax-only file.cpp
在 AST 中产生类型转换信息,就像这两个:
...
`- ImplicitCastExpr 0x7fdc27050558 <col:14> 'int' <LValueToRValue>
......
ImplicitCastExpr 0x7f878884c2d0 <col:19> 'unsigned int' <IntegralCast>
...
因此问题。
隐式类型转换通常发生在编译器的语义分析(更具体地说是类型检查)中,但有些可能发生在解析中以生成更简单的 AST(将文字直接转换为其值等)。
如果您仔细查看您使用的命令选项,我们会发现它意味着
-fsyntax-only Run the preprocessor, parser and type checking stages.
https://clang.llvm.org/docs/CommandGuide/clang.html
所以我们看到我们希望输出类型信息(需要隐式转换)。
注意:我可能不清楚,但类型检查只是语义分析的一个阶段。