[发明专利]弹性的源代码语法树解析系统及方法在审
| 申请号: | 201510070573.6 | 申请日: | 2015-02-10 |
| 公开(公告)号: | CN104657267A | 公开(公告)日: | 2015-05-27 |
| 发明(设计)人: | 杨波波;秦炜;徐曙清 | 申请(专利权)人: | 上海创景计算机系统有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 上海汉声知识产权代理有限公司 31236 | 代理人: | 郭国中;樊昕 |
| 地址: | 201203 上海市浦东新区张江高科技园*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 弹性 源代码 语法 解析 系统 方法 | ||
技术领域
本发明涉及一种计算机测试技术,更具体的说,涉及一种有弹性的源代码解析系统及方法。
背景技术
在IT测试领域,白盒测试是一个非常重要的测试方法,它可以提供测试用例的编写,可以进行测试完整性的评判,在这样的需求下,出现了很多自动化的测试工具,而这些工具能够完成自动化的一个重要方面是实现源代码的语法树分析。
还有很多领域需要将源代码的语法树分析作为基础工作,才能进行后续的过程处理,例如通过源代码生成流程图,或者通过源代码进行项目逆向。
目前,业界有很多源代码解析的方案,有些是手动方式,有些是通过正则表达式进行解析,有些是借助编译器的分析结果进行解析。这些方案各有优缺。例如,手动方式虽然灵活但工作量具体,只能适用于比较简单的语法规则。正则表达式具有表达简洁的优势,但对于某些错误却非常难处理。借助编译器的方式最大的优势是解析结果非常精确,也非常丰富,但要求设置却也相对较多,不适用于轻量级应用。
发明内容
本发明针对上述现有技术中存在的技术问题,提供一种弹性的源代码语法树分析系统及方法,满足不同精细程度的源代码解析需求,它能够根据调用时给出信息的丰富程度,自动对解析结果进行精细粒度调节,对于能够精细的部分采用细粒度表达,对于信息不充分部分采用粗粒度表达。
为达到上述目的,本发明所采用的技术方案如下:
一种弹性的源代码语法树解析系统,包括源代码预处理模块、编译器解析模块、编译器解析结果分析模块、二次手动解析模块,所述源代码预处理模块,根据用户的输入对源代码进行预处理;所述编译器解析模块,通过编译器对经过预处理的源代码进行分析,生成编译器支持的分析结果;所述编译器解析结果分析模块,通过对编译器解析的结果进行分析,确定源代码中被精细表达的部分、不能被编译器识别的部分以及被解析不完整的部分;所述二次手动解析模块,对编译器识别不完整的部分进行解析修正,对编译器不能解析的部分进行手动解析。
所述编译器解析结果分析模块包括源代码字元化模块和解析结果分析对比模块。
一种弹性的源代码语法树解析方法,采用上述的系统来完成,包括步骤如下:
第一步,通过源代码预处理模块对源代码进行预处理;
第二步,通过编译器解析模块对源代码进行解析;
第三步,通过编译器解析结果分析模块对解析结果进行分析定位;
第四步,通过二次手动解析模块将源代码进行完整解析。
所述第二步对源代码进行解析的方法是:对编译器进行流程更改,让其对经过预处理的源代码进行分析,生成统一形式的源代码语法树结构信息。
所述第三步对解析结果进行分析定位的方法是:按照源代码的语法规范,将源代码进行字元化,然后通过与生成的语法树结构信息进行对比,找出其中没有被编译器识别出的代码部分,进行标记。
所述第四步将源代码进行完整解析的方法是:根据源代码的语法规范,首先将源代码进行字元化,然后根据字元信息进行语句级别的解析,再生成编译器支持的分析结果。
本发明技术方案的有益效果如下:
有些场景需要对源代码的结构了解到非常细节,有些场景对源代码结构并不需要太细节,例如通过源代码生成流程图的应用,只需要语句级别的解析就可以了,并且这类应用往往输入是一个片段代码,本身输入就决定了不可能做到非常细节的语法树结构解析。本发明因为在解析结果上有非常好的弹性,可以应用在对解析细节要求很好的场景,例如源代码插桩等,也可以应用到类似源代码转换为流程图的应用中,源代码逆向工程等项目中。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明一实施例的系统组成框图;
图2是本发明的方法流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
图1所示,本发明所提供的系统,包括源代码预处理、编译器解析、编译器解析结果分析、二次手动解析四个模块。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海创景计算机系统有限公司;,未经上海创景计算机系统有限公司;许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510070573.6/2.html,转载请声明来源钻瓜专利网。





