最新文章

OpenRewrite 学习笔记(二):无损语义树 LST

OpenRewrite 学习笔记(二):无损语义树 LST

在上一篇文章中我们提到,LST 是 OpenRewrite 实现精准、可控代码修改的关键支柱。本篇将更深入地探讨 OpenRewrite 在代码解析过程中,究竟是如何保留代码原有的精确语义结构的。 什么是 LST LST 是 Lossless Semantic Trees,无损语义树的缩写。 先上总结,说说我对这三个单词的理解: Lossless 无损:代码解析和结构化过程中不丢失源代码中的任何信息(包括空格、注释、格式等),最终的属性结构中可以保留代码的原始细节。 Semantic(语义):该树不仅仅是语法分析的产物,还能体现代码片段之间的语义关系。 Trees(树):以树形结构组织代码元素,使得对代码片段的遍历、查询和变换更为直观且层次清晰。 说起语义树,就不得不提一下 AST。 抽象语法树 AST AST(Abstract Sytax Tree,抽象语法树),又常被称为语法树(Sytax Tree),是以树状的形式来表示编程语言的语法结构。AST 是编译器中广泛使用的的数据结构,用于表示程序代码的结构。 像下面的 AST 图是这段代码(欧几里得算法)的抽象语法树结构展示,树上的每个节点都表示源码中的一种结构。 while b ≠ 0: if a > b: a := a - b else: b := b - a return a 无损语义树 LST OpenRewrite 的 LST(无损语义树)具备一系列独特特性,使得在跨存储库的场景中依然能实现精确的代码搜索和转换:

About Me

张晓辉

英文名 Addo。 资深程序员,LF APAC 开源布道师,CNCF Ambassador,云原生社区管委会成员,公众号“云原生指北”作者,微软 Azure MVP。 曾任职于汇丰软件、唯品会、数人云、小鹏汽车,有多年的微服务和基础架构实践经验,主要工作涉及微服务、容 …

进一步了解