java抽象语法树(ast)_前端码农之蜕变 — AST(抽象语法树)

原标题:前端码农之蜕变 — 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这个巨人的肩膀上。

90cb5845f8c7f8273ad87fa3a368f61f.png

所有的上述工具,不管怎样,都建立在了AST这个巨人的肩膀上。

我们定一个小目标,从解释什么是AST开始,然后到怎么从一般代码开始去构建它。我们将简单地接触在AST处理基础上,一些最流行的使用例子和工具。并且,我计划谈下我的js2flowchart项目,它是一个不错的利用AST的demo。OK,让我们开始吧。

522cf3e87fe5e4aef87e0596b60905fa.png

什么是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.

fe26182afd4f9dba85a5d40f62e01283.png

估计很多同学会和图中的喵一样,看完这段官方的定义一脸懵逼。OK,我们来看例子:

969bc9ff031e4999a59970e0cb5a92bf.png

这很简化。

实际上,正真AST每个节点会有更多的信息。但是,这

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值