根据Kotlin编译器,PSI或Program Struction界面,树是基于AST的顶部构建的,为操纵特定语言构造添加语义和方法。 AST节点具有直接映射到底层文档中的文本范围。 AST的最底部节点匹配Lexer返回的单个令牌,更高级别的节点匹配多个令牌片段。 对AST树的节点执行的操作,例如插入,删除,重新排序节点等,立即被反映为对底层文档的文本(实现解析器和PSI)的更改。 AST在语义分析期间密集使用,编译器检查是否正确使用程序和语言的元素。 它还描述了用户在Kotlin写的内容的抽象表达。 AST允许我们更改语言的表面语法,而无需更改编译器的其余部分(虽然很少发生),