一种利用脚本及其编译器调用宿主软件函数的系统与方法技术方案

技术编号:2853974 阅读:207 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种利用脚本及其编译器调用宿主软件函数的系统与方法,包括宿主软件单元、脚本单元及内嵌于宿主软件单元的脚本编译器,脚本编译器通过对脚本单元的脚本源文件进行解释执行,调用宿主软件单元内部的宿主软件函数,实现用户期望的函数功能调用。本发明专利技术在宿主软件原有的图形界面操作之外,增加了一种文本调用宿主软件函数的途径,解决了使用平台软件的灵活性差及各种功能整合不够理想的问题。

【技术实现步骤摘要】

本专利技术涉及软件中的函数调用技术,尤其涉及。
技术介绍
大型软件因其功能强大、界面复杂,造成使用起来不免失于笨重,且和操作系统之间功能的整合也不方便。现有的软件在形成产品以后,其使用界面是固化在软件主体中的,操作形式单一;并且,各功能模块间的配合也由成型软件产品的现有结构完全决定,而不能随意拓展。而脚本具有语法类似于某种高级语言的形式,其主要由一些命令语句、声明语句和函数调用语句组成,其语法灵活、自由,符合程序员的使用习惯。如果能够使用脚本文件(Script)调用宿主软件内部的函数,脚本将在宿主软件原有的图形界面操作之外,增加一种文本调用的途径,将提高使用平台软件的灵活性。
技术实现思路
本专利技术所要解决的技术问题在于提供,用于在宿主软件原有的图形界面操作之外,增加一种文本调用的途径,以解决使用平台软件的灵活性差及各功能整合不够理想的问题。本专利技术提供一种利用脚本及其编译器调用宿主软件函数的系统,包括宿主软件单元,用于实现特定的应用功能,且包含有用以实现特定功能的宿主软件函数及对应的映射函数,并内嵌有脚本编译器;脚本单元,为根据用户目标采用脚本语言编写的脚本源文件,用于实现用户预定的目标功能,所述脚本单元包含一存放有脚本函数的脚本头文件;脚本编译器,用于解释执行脚本源文件中的脚本命令,其包含一个用以存放宿主软件函数与脚本函数的映射关系的全局变量,用以根据映射关系来调用宿主软件函数。其中,脚本编译器是同宿主软件单元整合在一起的。其中,所述脚本头文件中的脚本函数是可以根据用户需要进行增删的。本专利技术还提供一种基于上述系统利用脚本及其编译器调用宿主软件函数的方法,包括如下步骤建立宿主软件函数与脚本函数之间的映射关系;根据用户目标,确定脚本单元中待编译的脚本源文件;脚本编译器解释执行脚本源文件;脚本编译器调用并执行宿主软件函数。其中,所述建立宿主软件函数与脚本函数之间的映射关系步骤包括确定建立宿主软件函数与脚本函数之间映射关系的映射结构;根据映射结构,将所有被调用的宿主软件函数包装生成对应的映射函数;根据映射结构,在脚本头文件中生成对应于所述映射函数的脚本函数;脚本编译器将映射函数、脚本函数之间关系保存于一个全局变量中。其中,所述映射函数的参数数目为两个,所述宿主软件函数的参数数目是可变的。其中,所述脚本编译器对脚本源文件进行解释执行步骤包括脚本编译器解释脚本源文件并获取其中需调用的脚本函数;脚本编译器通过所述全局变量获取该脚本函数的映射关系;根据映射关系,脚本编译器获取与脚本函数对应的映射函数;脚本编译器通过该映射函数获取调用宿主软件函数的途径。其中,所述脚本编译器调用并执行宿主软件函数步骤中,脚本编译器以文本形式调用所述宿主软件函数,实现宿主软件相应函数的功能。本专利技术提出了一种创新的软件结构,利用脚本及其编译器以文本形式调用执行宿主软件内部的一些功能模块的函数,一方面大大提高了使用平台软件的灵活性,在宿主软件原有的图形界面操作之外,增加了一种文本调用的途径。另一方面,这种创新的软件结构也高度促进了软件各功能之间的整合,比如可以利用脚本连续调用一系列宿主软件功能,形成可以演示的演示文件(Demo)。附图说明图1是根据本专利技术实施例的系统软件结构框图;图2是根据本专利技术实施例的方法的流程图,其被用来说明利用脚本及其编译器调用宿主软件函数的方法。具体实施例方式本专利技术提出了一种创新的软件结构,利用脚本及其编译器,以文本形式调用执行宿主软件内部的一些功能模块。该结构有三个主体宿主软件,脚本及脚本编译器。如图1所示,在宿主软件之外,新增加了一个针对脚本的编译器,作为宿主软件的一个部分一起发行。脚本编译器通过对输入脚本文件的脚本命令的解释执行,调用宿主软件内部的函数,给出脚本编写者期望的结果。所述宿主软件包含有用以实现特定功能的函数。本专利技术所述脚本是我们自定义的,其语法由类似某种高级语言的形式给出(比如,C语言),主要由一些命令语句、声明语句和对宿主软件内部函数的调用语句组成,语法宜灵活、自由,符合程序员的使用习惯。此软件结构实现的关键在于脚本文件的语法结构。所述脚本语法主要由三部分组成1、变量声明语句和循环分支语句;类似C的#define,#include等预编译语句,这些语法结构形成了脚本语法的基本框架,并且可随具体需要作适当增删。2、宿主软件功能调用语句;脚本文件就是通过这些语句来调用宿主软件的函数的。这些语句以函数调用的形式给出,函数原型都定义在一个特殊的头文件host_func.h中。所以每个脚本文件都应该包含一行命令#include<host_func.h>。该头文件中,每个函数原型都对应着宿主软件软件内部的一个对等的函数组(一个或者多个函数的组合)。故我们也可以通过对该头文件的中脚本函数原型的增删来选择性地控制其内部功能的开放程度。3、操作系统命令调用语句;这部分的语句具有双刃性它们可以大大增强脚本的功能,使得宿主软件可以很好的和操作系统整合在一起;另一方面,也增加了脚本源文件的平台依赖性。但这个缺点,可以通过小心的选择操作系统间共有的功能来设计脚本语法,以对其进行避免。脚本编译器的功能是解释执行脚本文件。其不同于一般编译器的主要特点在于,它是同宿主软件整合在一起的,并可以映射脚本命令到宿主软件的函数组合,并直接调用宿主软件的函数。如图2所示为利用脚本及其编译器调用宿主软件函数的方法流程图,主要包括如下步骤步骤201建立宿主软件函数与脚本函数之间的映射关系。脚本编译器的这种映射功能是通过如下的一个结构体实现的(此处以C语言描述)typedef void cmdcall(int argc,char**argv);typedef struct tag_TCmdUnit{char*cmdstr;int minpara;int maxpara; char*helpstr;CmdCall*pcall;}TCmdUnit,*pTCmdUnit;在这里,我们使用TcmdUnit结构来保存宿主软件的函数原型同脚本头文件host_func.h中脚本函数的对应关系。其中“cmdstr”,用于保存host_func.h中脚本命令的字串;“CmdCall”用于表示被映射的宿主软件函数原型;“maxpara”,用于表示函数最大的参数数目;“minpara”,用于表示函数最小的参数数目;“helpstr”,用于保存对该函数调用的一些帮助信息,如功能,使用限制,参数说明等。cmdcall表示参数为(int argc,char**argv)的函数,故而宿主软件所有希望被脚本访问的函数都要包装成这种形式。这里给出一个示例,假设宿主软件中有个函数为f(int,float,char*),且参数数目可变,则需要另外写一个函数F(int,char**),如下void F(int argc,char**argv){If(argc>3){Print error message;Return;}If(argc==1)f(str2int(argv));if(argc==2) f(str2int(argv),str2float(argv[1]));if(argc==3)f(str2int(argv),str2float(a本文档来自技高网...

【技术保护点】
一种利用脚本及其编译器调用宿主软件函数的系统,其特征在于,包括:宿主软件单元,用于实现特定的应用功能,且包含有用以实现特定功能的宿主软件函数及对应的映射函数,并内嵌有脚本编译器;脚本单元,为根据用户目标采用脚本语言编写的脚本 源文件,用于实现用户预定的目标功能,所述脚本单元包含一存放有脚本函数的脚本头文件;脚本编译器,用于解释执行脚本源文件中的脚本命令,其包含一个用以存放宿主软件函数与脚本函数的映射关系的全局变量,用以根据映射关系来调用宿主软件函数。

【技术特征摘要】
1.一种利用脚本及其编译器调用宿主软件函数的系统,其特征在于,包括宿主软件单元,用于实现特定的应用功能,且包含有用以实现特定功能的宿主软件函数及对应的映射函数,并内嵌有脚本编译器;脚本单元,为根据用户目标采用脚本语言编写的脚本源文件,用于实现用户预定的目标功能,所述脚本单元包含一存放有脚本函数的脚本头文件;脚本编译器,用于解释执行脚本源文件中的脚本命令,其包含一个用以存放宿主软件函数与脚本函数的映射关系的全局变量,用以根据映射关系来调用宿主软件函数。2.如权利要求1所述的系统,其特征在于,所述脚本编译器是同宿主软件单元整合在一起的。3.如权利要求1所述的系统,其特征在于,所述脚本头文件中的脚本函数是可以根据用户需要进行增删的。4.一种基于权利要求1所述系统利用脚本及其编译器调用宿主软件函数的方法,其特征在于,包括如下步骤建立宿主软件函数与脚本函数之间的映射关系;根据用户目标,确定脚本单元中待编译的脚本源文件;脚本编译器解释执行脚本源文件;脚本编译器调用并执行宿主软件函数。5...

【专利技术属性】
技术研发人员:夏华栋游明琦
申请(专利权)人:北京中星微电子有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1