在本博客中,我们将深入了解抽象语法树(AST)及其在日常工作中使用的工具和库中的应用。我们更感兴趣的是AST的实际使用和应用,而不是编译器、解析器等编程语言开发工具的晦涩学术理论。
这是一系列博客文章中的第一篇,该文罩了Freshworks的前端开发人员构建和使用的各种AST工具来执行大量活动,例如大规模代码迁移、重构等。

什么是AST?
您的AST基本上是源代码的树形表示。通过提出适当的类比,可以稍微改进这个定义。让我们将AST视为代码的文档对象模型(DOM)。通常,您操纵DOM来更新网页上的内容。您通常在DOM中添加节点并更新和删除节点,以便浏览器自动在网页上反映您的更改。同样,您可以更新AST节点,以一种简单有效的方式对代码进行修改。通常当我们最终得到这种定义时,我们似乎理解得更好、更清晰,尽管这是一种过度简化。
它被称为抽象语法树,因为它不会从您的代码中捕获所有信息。例如,它不存储有关分隔符、标点符号、空格等的信息。
AST是如何创建的?
这就是您的代码如何转换为AST的方式。正如您在此处看到的,在创建AST之前,我们有不同的处理阶段。我们有“词法分析”和“句法分析”;我们将看到他们实际做了什么。
这是一系列博客文章中的第一篇,该文罩了Freshworks的前端开发人员构建和使用的各种AST工具来执行大量活动,例如大规模代码迁移、重构等。
什么是AST?
您的AST基本上是源代码的树形表示。通过提出适当的类比,可以稍微改进这个定义。让我们将AST视为代码的文档对象模型(DOM)。通常,您操纵DOM来更新网页上的内容。您通常在DOM中添加节点并更新和删除节点,以便浏览器自动在网页上反映您的更改。同样,您可以更新AST节点,以一种简单有效的方式对代码进行修改。通常当我们最终得到这种定义时,我们似乎理解得更好、更清晰,尽管这是一种过度简化。
它被称为抽象语法树,因为它不会从您的代码中捕获所有信息。例如,它不存储有关分隔符、标点符号、空格等的信息。
AST是如何创建的?
这就是您的代码如何转换为AST的方式。正如您在此处看到的,在创建AST之前,我们有不同的处理阶段。我们有“词法分析”和“句法分析”;我们将看到他们实际做了什么。
