您现在的位置:首页行业资讯

旖美信息技术前端开发经理陈国兴:抽象语法树与Javascript

2018年5月18-19日,由51CTO主办的全球软件与运维技术峰会在北京召开。此次峰会围绕人工智能、大数据、物联网、区块链等12大核心热点,汇聚海内外60位一线专家,是一场高端的技术盛宴,也是顶级IT技术人才学习和人脉拓展不容错过的平台。
在“前端工程实践”分会场,旖美信息技术前端开发经理陈国兴带来了《抽象语法树与JavaScript》的主题分享。会后,51CTO记者根据陈国兴在WOT2018全球软件与运维技术峰会的演讲内容进行了整理。
何为抽象语法树
抽象语法树是程序代码语法的抽象表示,以树状的形式表现编程语言的语法结构。这棵树从树根开始,然后一直往上延伸,树的每一个节点代表一个语法结构。在这棵树中,有很多种类型的节点,例如函数、加减表达式等。所以,开发者可以操作某个节点,以完成一些工作。
陈国兴表示,要操作抽象语法树,应该要具备以下两个基本要素:首先是工具。常用的工具包括Astexplorer、Recast、Jscodeshift、Acorn、Esprima、Escodegen、Estree spec等网站,开发者可以把代码贴到这些网站上,就会自动转换成为语法树。其次是规范。开发者要实现一个编程语言,就需要写一棵语法树。这棵树需要有一个规范,例如函数的类型、名称等,都会有一套完整的规范。

青岛HTML5培训--中享思途

陈国兴以代码进行重构为例,跟大家详细介绍了抽象语法树的概念。他表示,将“Lucy”改成“Nancy”,重构的目标虽然只是改一个名字,但是,当我们进行搜索替换时会发现,在其它文件上还会有一些表达不同意义的变量,这时全局搜索替换的方式就会导致了在另外一个文件中有人“移情别恋”了,这显然是不正确的。当然,出现这种问题时可以用正则表达式进行解决,但在有多级不同类型的变量、数字或是各种对象类型时,就会变得非常复杂,用正则表达式也没有办法完全解决,且过程相当的复杂,而这种情况下用抽象语法树的方式,则能够很好的解决困难。

青岛HTML5培训机构--中享思途

抽象语法树的应用场景
据陈国兴介绍,抽象语法树的应用场景主要包括:代码的升降级、格式化(美化)代码、生成代码结构图、代码压缩优化、代码转换、语言编译(解释)器等。

青岛HTML5培训机构--中享思途

一是代码的升降级,是指将原有用es5写的系统全部转换成es6,或者把es6编译为es5代码,而这种转换就可以用操作抽象语法树来完成。
二是格式化或者是美化代码。抽象语法树之所以能够实现格式化或是美化代码,是因为在树上有明确的标明位置,这样在做格式化的时候,只要找到标明的位置,就能够准确的看到位置在哪一层。
三是生成代码结构图。抽象语法树是一棵类似于数据库关系图的大树,其天生就已经具备关系结构,很容易生成结构图。
四是代码压缩优化。JS里有一个库是专门用做代码压缩的,它也是基于抽象语法树的概念先将代码转换成大树,然后再把相应的名称缩减,并根据调用关系完成转换。

青岛HTML5培训机构--中享思途

陈国兴表示,每一门编程语言,实际上就是一棵树。只要知道怎么写一棵树,就可以定义一套规则,然后再把它转成大树,最后转换成目标语言。

【关键词:青岛HTML5培训机构,青岛前端开发培训,HTML5培训价格,HTML5培训哪家好,中享思途】

 st_bottom
Copyright © 青岛思途共享科技信息服务有限公司 鲁ICP备14027489号
思途教育