[发明专利]一种避免行为层组合时行为变体重复编织的处理方法有效
申请号: | 201510197953.6 | 申请日: | 2015-04-23 |
公开(公告)号: | CN104820588B | 公开(公告)日: | 2018-06-05 |
发明(设计)人: | 吕建;徐锋;蒋建亮 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 李玉平 |
地址: | 210046 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种面向上下文编程中避免行为层组合时行为变体重复编织的处理方法。例如,JCOP声明式行为层组合,虽然支持对程序中多个方法编织行为层激活语句,但现有的编织方法通常采用向每个指定的方法调用处插入激活语句来实现此能力。如果两个方法在运行时刻存在调用关系,则会造成激活语句的重复编织,从而有可能导致程序不能正常运行,甚至发生不可预期的错误。本发明首先基于抽象语法树构造源程序的调用关系图,并在此基础上提供了一个调用关系检测方法,用于判断两个行为变体对应的方法之间是否存在调用关系,通过在有调用关系的行为变体相应语句中插入监控语句,来有效地避免行为变体重复编织的问题。 | ||
搜索关键词: | 变体 语句 编织 调用关系 行为层 重复 激活 抽象语法树 调用关系图 插入监控 方法调用 运行时刻 有效地 预期的 源程序 编程 检测 声明 | ||
【主权项】:
一种面向上下文编程中的避免行为层组合时行为变体重复编织的处理方法,其特征在于,包括:在源程序的抽象语法树上构造静态调用关系图,基于此静态调用关系图检测行为变体对应的方法之间是否存在调用关系,借助面向剖面编程的监控运行时刻控制流功能,避免了行为变体重复编织的问题;基于抽象语法树结构的静态调用关系图构造:基于类结构分析的结果,借助JastAdd框架的属性文法实现;基于静态调用关系图的调用关系检测:按照广度优先方式遍历静态调用关系图,逐步建立节点的传递闭包,判断方法之间是否存在调用关系;在源程序的抽象语法树上构造整个程序的静态调用关系图,进而检测方法之间的调用关系;面向剖面编程支持监控运行时刻控制流的关注点(pointcut),借助面向剖面编程的这个功能,根据是否存在调用关系决定是否插入监控语句,通过对有调用关系的行为变体相应语句中插入监控语句,避免激活语句的重复编织引起的行为层重复激活的问题;静态调用关系图建立在程序的抽象语法树中,是抽象语法树的一部分,可通过抽象语法树的根节点进行访问;静态调用关系图基于类结构分析的结果,借助JastAdd框架的属性文法实现:利用综合属性收集静态调用关系图的入口信息,利用非终结属性构建静态调用关系图中的节点,利用非终结属性以及JastAddJ编译器现有的名字分析建立表示方法调用关系的有向边。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510197953.6/,转载请声明来源钻瓜专利网。
- 上一篇:一种仿真方法及系统
- 下一篇:用于计算机生成的内容的多用户编辑的设备以及方法