[发明专利]一种基于时序逻辑语言MSVL的函数调用方法有效
| 申请号: | 201410531029.2 | 申请日: | 2014-10-10 |
| 公开(公告)号: | CN104281480B | 公开(公告)日: | 2017-06-06 |
| 发明(设计)人: | 段振华;张南;田聪;王小兵;赵亮 | 申请(专利权)人: | 西安电子科技大学 |
| 主分类号: | G06F9/45 | 分类号: | G06F9/45 |
| 代理公司: | 北京科亿知识产权代理事务所(普通合伙)11350 | 代理人: | 汤东凤 |
| 地址: | 710071 陕西省*** | 国省代码: | 陕西;61 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 时序 逻辑 语言 msvl 函数 调用 方法 | ||
技术领域
本发明属于计算机系统形式化建模与验证技术领域,主要涉及的是逻辑程序设计语言的实现,特别是一种基于时序逻辑语言MSVL的函数调用方法,可用于在MSVL程序中调用其它多种不同语言程序,有利于代码的复用和集成,简化程序设计。
背景技术
1977年,A.Pnueli将时序逻辑引入到计算机科学领域,主要用于对实时、并发系统进行建模和验证。经过近40年的研究,时序逻辑领域已经得到了很大的发展,形成了三大分支:线性时序逻辑(Linear Temporal Logic)、分支时序逻辑(Branching Temporal Logic)和区间时序逻辑(Interval Temporal Logic)。
投影时序逻辑(Projection Temporal Logic)是一种区间时序逻辑,区间的含义为有穷或无穷的状态序列,序列中的状态个数减1为区间长度,当为无穷状态序列时,区间长度被定义为无穷大,即ω。PTL以投影操作符(prj)为特色,可用于描述执行在不同粒度区间上的并发进程的并行执行。
逻辑程序设计语言(MSVL)是投影时序逻辑的一个可执行子集,可用于对并发、实时系统进行建模(Modeling)、仿真(Simulation)和验证(Verification)。MSVL包含了大多数命令式程序设计语言(如C语言)中的常用语句和编程结构,例如赋值语句(:=)、顺序结构(;)、分支结构(if-then-else)和循环结构(while),因此它可以实现一般命令式程序设计语言能够实现的大多数功能。MSVL中还包括一些并发类编程结构,如合取(and),并行(||)和投影(prj),其中合取结构P1 and P2表示进程P1和P2并行执行在同样长度的区间上,且共享区间上的所有状态;并行结构P1||P2表示进程P1和P2可自行规定各自执行的区间长度,且共享较短区间上的所有状态;投影结构(P1,...,Pm)prj Q表示进程Pi(i=1,...,m)顺序执行,由每个Pi执行区间的端点状态顺序排列构成的一个较粗粒度的投影区间,或该投影区间的某个前缀,或以该投影区间为前缀的某个区间被作为进程Q的执行区间。投影结构体现了多个进程之间的并发性和自治性。另外,由于在时序逻辑程序设计中,变量的值不能自动从当前状态传递到下一状态,因此MSVL中的框架结构(frame)用于变量值在相邻状态间的传递。除此,MSVL中还包括异步通信结构(await),可用于对分布式系统进行建模和验证。MSVL中的数据类型包括整数类型,浮点类型,字符类型,字符串类型,指针类型和结构类型。基于MSVL的类型系统,可以定义函数和谓词。函数是程序设计中一种十分有用的构建模块,函数可以对数据和操作进行有效封装,对外只提供一个简单的函数接口,当程序需要执行一个同样的功能时,可以直接调用写好的函数,而不用重新编写代码,从而提高代码复用率,简化程序设计,使程序更加简洁精炼,但MSVL中还没有给出函数定义及调用的实现方法,这一缺陷给MSVL程序设计带来不便,同时导致MSVL程序冗长,不易理解。
发明内容
针对现有技术的不足,本发明旨在提供一种基于时序逻辑语言MSVL的函数调用方法,通过该方法,可以在同一程序中以不同的方式对被调用函数进行解释;并且在MSVL程序中可以调用由C语言和Java语言编写的函数,有利于多种不同编程语言程序的集成,有效降低程序开发的难度,提高代码复用率。
为了实现上述目的,本发明采用如下技术方案:
一种基于时序逻辑语言MSVL的函数调用方法包含如下步骤:
步骤1,判断被调用函数是否为MSVL函数,如果是,定义该函数;如果不是,判断被调用函数是否为有返回值的外部函数,如果是,则执行步骤2,如果被调用函数为无返回值的外部函数,则执行步骤3;
当所述被调用函数为MSVL函数时,根据形式的不同,分四种情况对该函数进行定义:
1)有参数有返回值,则定义格式如下:
def ine f(in_type x1,...,in_type xn,out_type y1,...,out_type ym,return_type RV[]){MSVL程序};
2)有参数无返回值,则定义格式如下:
def ine f(in_type x1,...,in_type xn, out_type y1,...,out_type ym){MSVL程序};
3)无参数有返回值,则定义格式如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410531029.2/2.html,转载请声明来源钻瓜专利网。





