[发明专利]基于Python代码重建抽象语法树的方法、电子设备有效
申请号: | 201811637116.0 | 申请日: | 2018-12-29 |
公开(公告)号: | CN109710307B | 公开(公告)日: | 2022-03-11 |
发明(设计)人: | 孙悦;李天驰;赵子亮 | 申请(专利权)人: | 深圳点猫科技有限公司 |
主分类号: | G06F8/75 | 分类号: | G06F8/75 |
代理公司: | 广东良马律师事务所 44395 | 代理人: | 李良 |
地址: | 518000 广东省深圳市粤海*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 python 代码 重建 抽象 语法 方法 电子设备 | ||
本发明公开基于Python代码重建抽象语法树的方法、电子设备,其中,方法包括:将Python代码转化为JavaScript的原始抽象语法树;获取原始抽象语法树的主体结构,根据所述主体结构的类型创建树对象;根据主体结构的层级对所述树对象进行重组拼接,获得简洁抽象语法树。这样,便解决了现有技术中无法对抽象语法树进行重建的难题,不仅如此,简洁抽象语法树不会存在语法错误的问题,以及重要数据均能直接显示于抽象语法树中,使得用户能够对简洁抽象语法树做进一步的处理。
技术领域
本发明涉及Python代码领域,尤其涉及基于Python代码重建抽象语法树的方法、电子设备。
背景技术
在Web开发中,抽象语法树的应用十分广泛。例如,按照预设的规则对抽象语法树进行解析,获取动态类语言(如JS代码)的函数信息,从而修改函数信息等等。以JavaScript(JS代码)为例,由于是动态类型语言没有编译器或解释器,因此无法直接改变其运行时的运行结果,在引入抽象语法树后,便可以获取即将运行代码的结构,进而获取其中一个函数或者多个函数的引用关系并对其进行修改,从而在当前代码运行的过程中修改下一行代码,进而修改下一行代码的运行结果。
但是抽象语法树生成的树对象并没有太多的源代码信息并且数据层级比较深。一般来说,100行左右JS代码生成的语法树就相当复杂了,这也大量有用数据被埋藏的原因之一。
换句话说,现有技术得到的抽象语法树并不能直接使用,必须对其进行精简或者修改,才能进一步使用。
然而,现有技术并没有较好的方法可以对抽象语法树进行修改或者重新建立抽象语法树。
因此,现有技术还有待于改进和发展。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供将Python代码转化为脚本语言的方法以及电子设备,旨在解决现有技术无法重建抽象语法树的问题。
本发明的技术方案如下:
一种基于Python代码重建抽象语法树的方法,其包括步骤:
将Python代码转化为JavaScript的原始抽象语法树;
获取原始抽象语法树的主体结构,根据所述主体结构的类型创建树对象;
根据主体结构的层级对所述树对象进行重组拼接,获得简洁抽象语法树。
优选的,所述将Python代码转化为JavaScript的原始抽象语法树的步骤具体包括:
按照语法作用域将Python代码分割成若干段Python子代码;
读取每段Python子代码的内容;
对Python子代码进行解析,生成各段Python子代码的抽象语法树。
优选的,所述对Python子代码进行解析,生成各段Python子代码的抽象语法树的步骤之后包括:
将生成的各段Python子代码的抽象语法树返回给递归的上层;
然后执行块作用域的循环;
最后按照语法作用域的从属关系拼接Python子代码的抽象语法树,得到原始抽象语法树。
优选的,所述获取原始抽象语法树的主体结构,根据所述主体结构的类型创建树对象的步骤具体包括:
获取原始抽象语法树的主体结构;
判断所述主体结构是否为数组;
若为数组,则获取所述主体结构的子主体结构,根据所述子主体结构的类型创建相应的树对象;若不为数组则根据主体结构的类型创建相应的树对象。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳点猫科技有限公司,未经深圳点猫科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811637116.0/2.html,转载请声明来源钻瓜专利网。