是否有一些隐藏的文档介绍了clang的代码自动补全功能是如何实现的?目前我所了解的是,一个特殊的词元(tok::code_completion)会被注入到词法分析器中,并在语法分析器中进行处理。在观察到这样的词元后,语法分析器可以填入可能的自动补全字符串。
我的疑问是:
如果所调用的功能决定我们可以插入当前环境中可用的变量,那么这种情况是如何处理的呢?
struct FooBar {
void foo() {
ba<<code completion here>>
}
void bar() {
}
};
解析器没有看到bar,但调用它是有效的。