原标题:前端码农之蜕变 — AST(抽象语法树)
英文:Bohdan Liashenko 译文:岁月是把杀猪刀
segmentfault.com/a/1190000017152442
前言
首先,先说明下该文章是译文,原文出自《AST for Java developers》(https://itnext.io/ast-for-java-developers-3e79aeb08343)。很少花时间特地翻译一篇文章,咬文嚼字是件很累的事情,实在是这篇写的太棒了,所以忍不住想和大家一起分享。
该译文出自我的博客:https://github.com/CodeLittlePrince/blog/issues/19,我的博客会不定时更新各种类型文章,希望大家支持。
OK,我们直接进入正题。
为什么要谈AST(抽象语法树)?
如果你查看目前任何主流的项目中的 devDependencies,会发现前些年的不计其数的插件诞生。我们归纳一下有:java转译、代码压缩、css预处理器、elint、pretiier,等。有很多js模块我们不会在生产环境用到,但是它们在我们的开发过程中充当着重要的角色。所有的上述工具,不管怎样,都建立在了AST这个巨人的肩膀上。
所有的上述工具,不管怎样,都建立在了AST这个巨人的肩膀上。
我们定一个小目标,从解释什么是AST开始,然后到怎么从一般代码开始去构建它。我们将简单地接触在AST处理基础上,一些最流行的使用例子和工具。并且,我计划谈下我的js2flowchart项目,它是一个不错的利用AST的demo。OK,让我们开始吧。
什么是AST(抽象语法树)?
It is a hierarchical program representation that presents source code structure according to the grammar of a programming language, each AST node corresponds to an item of a source code.
估计很多同学会和图中的喵一样,看完这段官方的定义一脸懵逼。OK,我们来看例子:
这很简化。
实际上,正真AST每个节点会有更多的信息。但是,这