旖美信息技术前端开发经理陈国兴:抽象语法树与Javascript
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》
【51CTO.com原创稿件】2018年5月18-19日,由51CTO主办的全球软件与运维技术峰会在北京召开。此次峰会围绕人工智能、大数据、物联网、区块链等12大核心热点,汇聚海内外60位一线专家,是一场高端的技术盛宴,也是***IT技术人才学习和人脉拓展不容错过的平台。
在“前端工程实践”分会场,旖美信息技术前端开发经理陈国兴带来了《抽象语法树与JavaScript》的主题分享。会后,51CTO记者根据陈国兴在WOT2018全球软件与运维技术峰会的演讲内容进行了整理。
何为抽象语法树
抽象语法树是程序代码语法的抽象表示,以树状的形式表现编程语言的语法结构。这棵树从树根开始,然后一直往上延伸,树的每一个节点代表一个语法结构。在这棵树中,有很多种类型的节点,例如函数、加减表达式等。所以,开发者可以操作某个节点,以完成一些工作。
陈国兴表示,要操作抽象语法树,应该要具备以下两个基本要素:首先是工具。常用的工具包括Astexplorer、Recast、Jscodeshift、Acorn、Esprima、Escodegen、Estree spec等网站,开发者可以把代码贴到这些网站上,就会自动转换成为语法树。其次是规范。开发者要实现一个编程语言,就需要写一棵语法树。这棵树需要有一个规范,例如函数的类型、名称等,都会有一套完整的规范。
陈国兴以代码进行重构为例,跟大家详细介绍了抽象语法树的概念。他表示,将“Lucy”改成“Nancy”,重构的目标虽然只是改一个名字,但是,当我们进行搜索替换时会发现,在其它文件上还会有一些表达不同意义的变量,这时全局搜索替换的方式就会导致了在另外一个文件中有人“移情别恋”了,这显然是不正确的。当然,出现这种问题时可以用正则表达式进行解决,但在有多级不同类型的变量、数字或是各种对象类型时,就会变得非常复杂,用正则表达式也没有办法完全解决,且过程相当的复杂,而这种情况下用抽象语法树的方式,则能够很好的解决困难。
抽象语法树的应用场景
据陈国兴介绍,抽象语法树的应用场景主要包括:代码的升降级、格式化(美化)代码、生成代码结构图、代码压缩优化、代码转换、语言编译(解释)器等。
一是代码的升降级,是指将原有用es5写的系统全部转换成es6,或者把es6编译为es5代码,而这种转换就可以用操作抽象语法树来完成。
二是格式化或者是美化代码。抽象语法树之所以能够实现格式化或是美化代码,是因为在树上有明确的标明位置,这样在做格式化的时候,只要找到标明的位置,就能够准确的看到位置在哪一层。
三是生成代码结构图。抽象语法树是一棵类似于数据库关系图的大树,其天生就已经具备关系结构,很容易生成结构图。
四是代码压缩优化。JS里有一个库是专门用做代码压缩的,它也是基于抽象语法树的概念先将代码转换成大树,然后再把相应的名称缩减,并根据调用关系完成转换。
陈国兴表示,每一门编程语言,实际上就是一棵树。只要知道怎么写一棵树,就可以定义一套规则,然后再把它转成大树,***转换成目标语言。
【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】
点赞 0
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
区块链小知识:跨链协议的相关定义介绍
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 1、跨链技术/ Cross-Chain 跨链技术是实现区块链之间互联互通的技术,若对标互联网则可理解为“去中心化网络 的结合”,区块链技术的特性使得跨链技术的落地,以及对于链外信息的获取都非常困 难,早期跨链技术包括以 Interledger Protocal 和 BTC Relay 为代表,更多是关注资产 的转移;现有跨链技术以 Aion、Kyber Network、Bletchley、Polkadot、Cosmos 主要 着重的是跨链基础设施。“如果说共识机制是区块链的灵魂核心,那么对于区块链特别是联盟链及私链来看,跨链技术就是实现价值网络的关键,它是把联盟链从分散单独的 孤岛中拯救出来的良药,是区块链向外拓展和连接的桥梁。 2、原子互换/ Atomic Swap 原子互换是一种正在开发中的去中心化、无需第三方的新技术,允许在不同类型的数字 资产之间实现无需信任的点对点交易,任何一方在瞬间完成的点对点交易中都遵守协 议,且之后若有一方退出,资金会在规定的时间返回各方账户。 3、见证人机制/ Notary Sch...
- 下一篇
ThoughtWorks高级质量咨询师秦五一:持续集成之腐化与涅槃重生
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 【51CTO.com原创稿件】2018年5月18-19日,由51CTO主办的全球软件与运维技术峰会在北京召开。此次峰会围绕人工智能、大数据、物联网、区块链等12大核心热点,汇聚海内外60位一线专家,是一场高端的技术盛宴,也是***IT技术人才学习和人脉拓展不容错过的平台。 在“DevOps转型之路”分会场,ThoughtWorks高级质量咨询师秦五一带来了《持续集成腐化与涅��重生》的主题分享。会后,51CTO记者根据秦五一在WOT2018全球软件与运维技术峰会的演讲内容进行了整理。 持续集成就是每天都要集成 持续集成是1991年由IBM院士 Grady Booch在他的Booch方法中提出了Continuous Integration这个词之后,被极限编程XP采纳并广泛推广得来的。通常大家听到或提到的持续集成,也就是CI这个词,实际上指的是持续集成工具,例如CI Tools、Jenkins、 TeamCity、GoCD等,是相对狭义的概念。 ThoughtWorks***科学家Martin Fowler指出,持续...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS关闭SELinux安全模块
- Red5直播服务器,属于Java语言的直播服务器
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7设置SWAP分区,小内存服务器的救世主