[发明专利]一种编译器的可视化语法树的生成方法和重构方法有效
申请号: | 201310629025.3 | 申请日: | 2013-11-29 |
公开(公告)号: | CN103645986A | 公开(公告)日: | 2014-03-19 |
发明(设计)人: | 刘陈虎;周涛;黄太新;刘红刚;冀建伟 | 申请(专利权)人: | 北京广利核系统工程有限公司;中国广核集团有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F9/45;G06F17/27 |
代理公司: | 北京元中知识产权代理有限责任公司 11223 | 代理人: | 王明霞 |
地址: | 100094 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 编译器 可视化 语法 生成 方法 | ||
技术领域
本发明涉及计算机领域,并且特别地,设计一种编译器的可视化语法树的生成方法和生成装置。
背景技术
在当前的计算机领域,应用高级语言编译器能够实现将程序语言转化为机器语言的操作,但是,如果编译器设计中存在错误,可能会造成原始程序转化成的计算机语言与程序设计者的初衷不一致,而这种错误在编译器发布后很难检测和纠正,因此,对编译器的测试显得至关重要。
在现有技术中,编译器的设计主要由词法语法分析、和语义分析等模块构成,其中词法语法分析部分多采用flex&bison工具来完成,已较为成熟,而语义分析部分是编译器设计的核心,所以,对语义分析的测试也是编译器测试的重点,但是,语义分析作为编译器实现过程中的一个中间模块,其实现过程、模块输入以及语法树结构往往具有一定的不透明性,这就为测试带来了困难。
语义分析测试的重点在于测试对语法树节点的分析过程,语义分析过程大致为:收集词法语法分析后产生的语法树节点信息,分析节点信息中属性信息的各项数据,检查语义的符合程度,如果有错误产生,报告相应的错误码和错误信息。语义分析模块的输入为语法树,而测试时,测试人员所编写的待测试源代码,是通过flex&bison工具来生成语法树的,测试人员实际上对所生成语法树的结构并不了解,也就无法真正了解语义分析模块的输入。
目前语义分析的测试方法主要有两种:
(方法一)采用类似于黑盒测试的方法,根据语言参考手册,错误码等进行测试,以及一定的随机测试。
(方法二)在第一种方法的基础上,采用类似白盒测试的方式在代码中对某些节点信息进行监视来辅助测试。
以同步数据流编程语言LUSTRE语言为例,LUSTRE语言总共有51种待分析的节点,一段简单的LUSTRE代码,节点数量都有数百个之多,如果采用类似黑盒测试的方式,按照错误码进行测试或随机编写代码测试,很难保证测到分析过程每个节点的分析情况,容易遗漏某些分支,而由于无法透明的了解分析过程,测试人员对这些遗漏的内容往往一无所知。另外,基于错误码的测试过程中,某些错误码可能对应多种类型的语义错误,测试人员有时可能只测试到了其中一两个,就认为某个错误码的测试通过了,而其中所覆盖的语义错误类型,可能并不全面,这种原因造成的测试不全面,测试人员同样无法了解和统计,这些都容易使测试产生风险,给产品质量带来隐患。
另外一种监视节点信息的测试方式中,采用对源代码进行单步调试的方式,通过使用指针一级一级的追踪,来得到某个节点的属性信息。这种方法虽然可以直接了解到语法树的属性信息,但每次只能观测一个节点,而语义分析过程中节点众多,如果了解更多节点需要设置多个监视器,人为地在监视器中构造复杂的多级指针来观测节点信息,费时费力,并且,所监视到的属性值为原始数据值,需要不断查阅设计文档和数据结构资料或者语言参考手册才能将其翻译成可供测试人员了解的属性含义,并且这种方式只能了解单个属性值,无法了解节点与节点之间的相对关系,无法明确得知节点在整个语法树中所处的位置,从而无法确定整体的树形结构,所以,使节点的信息透明化,仍然存在很大的局限性,因此采用这种方式,虽然能真实观测到节点的属性值信息,但由于存在多种局限,实际上很难实现。
鉴于此提出本发明。
发明内容
本发明的目的为克服现有技术的不足,提供一种编译器的可视化语法树的生成方法和重构方法。
为了实现该目的,本发明采用如下技术方案:
根据本发明的一个方面,提供了一种编译器的可视化语法树的生成方法,该生成方法包括:
步骤(1),解析编译器语义分析模块接收到的语法树,确定语法树的节点信息,节点信息至少包括:节点类型名、节点位置、以及节点属性值;
步骤(2),翻译节点属性值,得到相应的节点属性信息,并为语法树中每个节点的节点类型名添加头部标识,得到节点名称,其中,头部标识用于为每个节点提供唯一标识;
步骤(3),根据节点名称、以及节点位置,应用预定节点排列算法,对语法树的多个节点进行组织,得到语法树的语法树层级结构,并在语法树层级结构中,关联上节点属性信息;
步骤(4),整理树形层级结构,生成可视化语法树;
步骤(5),存储可视化语法树。
其中,节点位置的确定方式包括:
通过遍历算法,收集语法树中每个节点的父节点、子节点、或者兄弟节点的信息,并根据信息,推算出该节点在语法树中的相对位置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京广利核系统工程有限公司;中国广核集团有限公司,未经北京广利核系统工程有限公司;中国广核集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310629025.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:抽气机格栅
- 下一篇:一种甲基磺酸化石墨烯材料及其制备方法和光感应开关