结构化的代码自动配置方法及装置的制作方法

文档序号:6572817阅读:196来源:国知局

专利名称::结构化的代码自动配置方法及装置的制作方法
技术领域
:本发明涉及一种计算机
技术领域
的方法及装置,具体是一种用于生成任意数据结构的配置代码文件的通用的结构化的代码自动配置方法及装置。
背景技术
:当今,很多软件和硬件都采用一种可配置的代码设计方法,这种方法允许系统中的某些模块可以自由的替换,或者根据配置文件重新生成某些模块,这样使得系统表现出极大的灵活性,可允许开发者介入某些特定层次进行拓展和维护,从而形成强大的可定制性和可拓展性。实现可配置设计思想的方法有很多,实现的复杂程度和难度也不一样,有些软件只需要修改几个参数就可以完成配置工作,而有些软件的配置需要新生成几个代码文件。最为普遍的做法是根据配置文件生成一段或几段代码,然后将这些代码加入到源码文件中的需要配置的位置。在采用根据配置文件生成代码的方法来进行配置的时候,往往需要专门的配置装置来完成配置工作。这些配置从配置文件中读取信息,并生成所需要的代码。对于不同的软件系统,由于配置文件的类型,结构的不同,以及最后生成的代码和数据结构的不同,使得采用的配置装置也是不一样的。这样,当需要进行配置的时候,往往要重新开发与之相适应的配置装置。如果使用一种通用的结构化的代码自动配置装置,使得开发人员能够方便的根据规范化的配置文件生成所需要的代码。这样的配置装置就可以方便的移植到各个软件或硬件系统中,以减少软件或硬件代码的开发的工作量和开发时间。经对现有技术的文献检索发现,刘然等人在北京理工大学学报2002年4月第22卷第2期上发表的“基于UML的CASE平台的代码自动生成”,对面向对象的通用代码生成机制进行了探讨,并设计了一种目标语言为C++的代码生成结构。该结构能够生成通用化的C++代码,并能够拓展到其他面向对象的目标语言,可以一定程度上的在代码配置工作中应用,但存在如下缺点1、该结构是基于UML可视化建模平台的基础上的,用户在使用时必先建立UML模型,以对配置信息和目标代码进行描述,这需要较大的难度和工作量;2、用户对配置信息的描述采用UML模型的方式,方法单一且使用难度较高3、这种结构主要针对面向对象的目标语言的代码,对于非并且将面向对象的目标语言的代码则缺乏有效性;4、该结构基于UML可视化建模平台,需要占用大量的存储空间,和其他运行环境的资源,不利于在软件和硬件配置工作中的移植。
发明内容本发明的目的在于针对现有技术的不足,提供一种通用的用于生成配置代码文件的结构化的代码自动配置方法及装置。使用者在使用本发明的时候,只需要根据用户输入的配置信息,用简单的语法编写一个描写目标代码数据结构的模块,就可以跟据用户对需要配置的信息的描述生成复杂数据结构的代码,并形成代码文件来完成代码的配置工作,使其能够方便的应用到各个软件或硬件系统的代码配置中,以减少软件或硬件代码的开发的工作量和开发时间。本发明是通过以下技术方案实现的本发明所述的结构化的代码自动配置方法,包括以下步骤第一步根据用户对配置的描述情况,用简单的语法编写一个描写目标代码数据结构的可替换模块;第二步接收第一步中用户对配置的描述;第三步将第二步接受的用户对配置的描述转变为一种规范化的配置文件;第四步使用第一步所述的可替换模块,从第三步得到的规范化配置文件中提取出需要的信息,并按照目标代码的数据结构组织起来,形成结构化的代码信息;第五步根据结构化的代码信息,使用其指定的目标语言生成相应的目标代码;第六步将生成的代码组织成最后的配置代码文件。第一步所述的可替换模块,可以根据不同的配置任务,随时进行更新或重写,以满足不同的目标代码文件的配置需要。第三步所述的规范化的配置文件,用于规范化用户对配置信息的描述。所有的用户对配置的描述都被转变为遵守一定规范的配置文件。该规范化的配置文件含有三个基本的描述结构规范,分别为用于描述单个数据的‘单词’,用于描述组织为一维结构的数据组的‘链表’,以及用于描述组织为二维结构的数据组的‘表’。其中链表和表中的数据组中的元素可以为单词,链表或者是表结构。单词、链表和表结构除本身所携带的数据之外还包括自己的名称、和标识不同的具有相同名称的上述结构的属主两个属性。该规范仅面向数据,用户使用该规范可以对任意事务进行广泛而全面的描述。第四步所述的从规范化配置文件中提取需要的信息,将使用一组工具完成,主要包括查找‘表’,‘链表’和‘单词’结构;得到表,链表,或单词结构的名称;得到‘表’,‘链表’,或‘单词’结构的属主;提取‘表’结构的数据;查找‘表’结构的维数;提取‘链表’结构的数据;提取‘单词’结构的数据;提取‘表’结构中某一特定属性的数据;提取‘链表’结构中某一特定属性的数据;提取特定属性的‘表’结构等功能。第四步所述的结构化的代码信息,为一个通用的结构的数组,数组中的每一个结构对应一个生成文件,该结构包括生成文件名,使用目标代码语言,使用的模版名称,以及一组用于存放具有生成目标文件相同的数据结构的名为‘实体’的结构。‘实体’结构包括‘实体’属性,‘实体’数据,正文前注释,正文内注释。其中‘实体’属性包括‘实体’种类,‘实体’名称,‘实体’前缀,‘实体’后缀;‘实体’数据是实体具体的值,可以是单个元素,也可是一维或者二维结构,其元素也可以是一个‘实体’的结构,通过递归,就能组织成复杂的树状数据结构。第五步所述的生成相应的目标代码,其方法为将‘实体’结构中的信息按照目标语言的语法方式,以该‘实体’结构的数据结构组织排列成目标代码。第六步所述的将生成的代码组织成最后的配置代码文件,其方法为按照结构化的代码信息数组中每个结构的文件信息,调用指定的模版或不使用模版,使用指定的文件名和第五步生成的目标代码,生成相应的代码配置文件。本发明还提供一种结构化的代码自动配置装置,包括配置文件规范化模块,目标代码结构解释模块,代码生成器,和生成代码文件管理模块。所述配置文件规范化模块读入用户对需要配置的信息的描述,将多种用户对配置的描述转化为一种规范化的配置文件以便对配置信息的读取和处理,并将规范化的配置文件输出给目标代码结构解释模块;所述的目标代码解释模块将规范化的配置文件中的配置信息提取出来,并且将这些信息按照目标代码的数据结构组织成结构化的代码信息,并将结构化的代码信息输出至代码生成器;所述的代码生成器根据由结构化的代码信息指定的目标语言,按照结构化的代码信息的数据结构,生成相应的代码,并将生成的代码和结构化的代码信息中的代码文件信息一并送入生成代码文件管理模块;所述的生成代码文件管理模块按照代码文件信息,将代码组织成相应的代码配置文件,并输出最后生成的代码配置文件。所述的目标代码解释模块,包括配置信息接口工具库和代码解释子模块。所述的配置信息接口工具库用于提供一组工具给代码解释子模块使用,这组工具用于从规范化的配置文件中查找所需的信息以及将需要的信息提取出来,并输出给代码解释子模块。所述的代码解释子模块,使用配置信息接口工具库提供的工具从规范化的配置文件中提取出所需的信息,并将这些信息按照目标代码的数据结构组织成结构化的代码信息,并输出至代码生成器。该子模块对应为本发明上述方法中第一步所述的可替换模块,是本发明中唯一面向数据逻辑结构的部分,面对不同的目标代码的需求,只需要使用简单的语法编写描述目标代码的数据结构的代码解释子模块就可以生成相应的目标代码配置文件,来完成代码配置功能。所述的代码生成器,包含一组不同目标语言的代码生成工具,根据由结构化的代码信息指定的目标语言,调用相应语言的生成工具生成目标代码。所述的生成代码文件管理模块,按照代码文件信息中指定的生成文件名和模板信息,调用指定的模版或不使用模版,使用指定的文件名生成相应的代码配置文件。与现有技术相比,本发明具有以下有益的效果本发明提供了通用的结构化的代码配置方法,使得在完成代码配置工作,无需重新编写新的配置程序,而只需要根据用户输入的配置信息,用简单的语法编写一个描写目标代码数据结构的模块,就可以跟据用户对需要配置的信息的描述生成具有复杂数据结构的代码,并形成代码文件来完成代码的配置工作,同时允许用户使用多种方式对配置进行描述,并且支持生成包括面向对象和非面向对象在内的多种目标语言的代码。本发明只占有很小的磁盘空间,能够方便的应用到各个软件或硬件系统的代码配置中,以减少软件或硬件代码的开发的工作量和开发时间。图1是本发明方法流程图图2是本发明的处理装置的结构示意图图3是结构化的代码信息的结构示意图图4是‘实体’结构的结构示意图图5是‘实体’结构组织成复杂树状数据结构的示意图图6是实例中的结构化的代码信息示意图具体实现方式下面结合附图对本发明的实施例作详细说明本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。图1所示为本发明的方法流程图,即根据用户对配置的描述情况,用简单的语法编写一个描写目标代码数据结构的可替换模块;接收用户对配置的描述;将接受的用户对配置的描述转变为一种规范化的配置文件;使用所述的可替换模块,从规范化配置文件中提取出需要的信息,并按照目标代码的数据结构组织起来,形成结构化的代码信息;根据结构化的代码信息,使用其指定的目标语言生成相应的目标代码;将生成的代码组织成最后的配置代码文件。对于不同的配置任务,对可替换的代码解释子模块进行更新或重写,使其满足目标代码的数据要求,即可满足不同的目标代码文件的配置需要。本发明装置的结构如图2所示,包括配置文件规范化模块,目标代码结构解释模块,代码生成器,和生成代码文件管理模块。其中目标代码解释模块包括配置信息接口工具库和代码解释子模块。配置文件规范化模块读入用户对需要配置的信息的描述,并输出规范化的配置文件给目标代码结构解释模块;目标代码解释模块输出结构化的代码信息至代码生成器;代码生成器输出目标代码和代码文件信息至生成代码文件管理模块;生成代码文件管理模块输出最后生成的代码配置文件。在目标代码解释模块中,配置信息接口工具库提供一组用于从规范化的配置文件中提取配置信息的工具给代码解释子模块使用;代码解释子模块接受配置文件规范化模块输入的规范化的配置文件,输出结构化的代码信息至代码生成器。代码解释子模块为根据配置任务的不同而替换的模块。下面结合附图3~附图6,以本发明方法和装置在一个根据用户的描述生成相应配置文件的应用为例,对本发明的技术方案做进一步的详细描述。在该实例中,用户对配置的描述采用填空和填写表格的方式,用户对配置的描述如下所示使用函数库libX·h定义使用类型type1,type2,…,typeN配置信息表规范化的配置文件选用XML(可扩展标记语言)文件,目标代码使用C语言。本发明将上面所述的用户对配置的描述中使用斜体字标识的配置信息提取出来,经过一定的处理后,生成含有这些配置信息的代码文件,如下所示欲生成的代码文件file1.h#include“libX·h”typedefenum{type1,type2,…typeN}TYPE;欲生成的代码文件file2.c#include“file1.h”structEXAMPLEexample_array[]={{“name1”,type2,(int[]){val1,atrC1}},{“name2”,type3,(int[]){val2,atrC2}},…{“nameN”,type1,(int[]){val3,atrCN},};(其中,file2.c中的valn为用户对配置的描述中所示的atrAn和atrBn两组参数进行atrAn<<atrBn的移位运算所得。)处理过程简述如下首先,根据用户对配置的描述情况,用简单的语法编写一个描写目标代码数据结构的代码解释子模块。该子模块从规范化的配置文件中提取数据,并按照目标代码的数据结构组织成结构化的代码信息。该模块在本例中的开发方法将在后面的段落里叙述。配置文件规范化模块将用户对配置的描述转变为一种规范化配置文件。用户对配置的描述可以采用多种方式,包括填写表格,文本说明,特定的定义语言等方式,对应于不同的描述方式,配置文件规范化模块都应当将其转化为规范化配置文件,以便对配置信息的读取和处理。该规范化的配置文件含有三个基本的描述结构规范,分别为用于描述单个数据的‘单词’,用于描述组织为一维结构的数据组的‘链表’,以及用于描述组织为二维结构的数据组的‘表’。其中链表和表中的数据组中的元素可以为单词,链表或者是表结构。单词,链表和表结构除本省所携带的数据之外还包括自己的名称,和标识不同的具有相同名称的上述结构的属主两个属性。该规范仅面向数据,用户使用该规范可以对任意事务进行广泛而全面的描述。在本例中规范化的配置文件选用XML(可扩展标记语言)文件。由本实例中用户对配置转变成的遵守基本规范的规范化的配置文件如下所示<wordname=“使用函数库”sn=“”>libX·h</word><arrayname=“定义使用类型”sn=“”><a_item>type1</a_item><a_item>type2</a_item>…<a_item>typeN</a_item></array><tablename=“配置信息表”sn=“”><item><t_itemname=“名称”sn=“name1”>name1</t_item><t_itemname=“类型属性”sn=“name1”>type2</t_item><t_itemname=“属性A”sn=“name1”>atrA1</t_item><t_itemname=“属性B”sn=“name1”>atrB1</t_item><t_itemname=“属性C”sn=“name1”>atrC1</t_item></item><item><t_itemname=“名称”sn=“name2”>name2</t_item><t_itemname=“类型属性”sn=“name2”>type3</t_item><t_itemname=“属性A”sn=“name2”>atrA2</t_item><t_itemname=“属性B”sn=“name2”>atrB2</t_item><t_itemname=“属性C”sn=“name2”>atrC2</t_item></item>…<item><t_itemname=“名称”sn=“nameN”>nameN</t_item><t_itemname=“类型属性”sn=“nameN”>type1</t_item><t_itemname=“属性A”sn=“nameN”>atrAN</t_item><t_itemname=“属性B”sn=“nameN”>atrBN</t_item><t_itemname=“属性C”sn=“nameN”>atrCN</t_item></item></table>其中的斜体字为用户对配置的描述中的配置信息,word,array和table分别对应着单词,链表和表三个基本规范。目标代码解释模块的配置信息接口工具库提供一组工具给其代码解释子模块使用,这组工具用于从规范化的配置文件中查找所需的特定信息以及将需要的信息提取出来。主要包括查找‘表’,‘链表’和‘单词’结构;得到表,链表,或单词结构的名称;得到‘表’,‘链表’,或‘单词’结构的属主;提取‘表’结构的数据;查找‘表’结构的维数;提取‘链表’结构的数据;提取‘单词’结构的数据;提取‘表’结构中某一特定属性的数据;提取‘链表’结构中某一特定属性的数据;提取特定属性的‘表’结构等功能。代码解释子模块使用配置信息接口工具库提供的工具从规范化的配置文件中提取出所需的配置信息,在本实例中即规范化的配置文件所示的斜体字部分,并将这些信息按照目标代码的数据结构组织成结构化的代码信息。代码解释子模块为可替换模块,是本法明中唯一面向数据逻辑结构的部分,面对不同的目标代码的需求,只需要使用简单的语法编写描述目标代码的数据结构的代码解释子模块就可以生成相应的目标代码配置文件,来完成代码配置功能。如图3所示为由代码解释子模块生成的结构化的代码信息,为一个通用的结构的数组,数组中的每一个结构对应一个生成文件,该结构包括生成文件名,使用目标代码语言,使用的模版名称,以及一组用于存放具有生成目标文件相同的数据结构的名为‘实体’的结构数组。所谓模版是指存放代码文件中不需要配置的代码语段的文件。在一个代码文件中,可能只有个别代码语段需要通过配置生成,而不需要通过配置生成的代码语段就存放在模板中。如果整个文件的代码都需要通过配置生成,就不需要模版。在不需要模版的时候,调用模版的具体路径为空即可。如图4所示为‘实体’结构,其包括‘实体’属性,‘实体’数据,正文前注释,正文内注释。其中‘实体’属性包括‘实体’种类,‘实体’名称,‘实体’前缀,‘实体’后缀;‘实体’种类是指类似C语言中的变量类型,如int,char等,这种定义也广泛的应用于其他编程语言;‘实体’名称为变量名;‘实体’前缀为放置于编程语言语句之前的说明,如C语言中的const,struct等;‘实体’后缀为放置于编程语言语句中的说明。‘实体’数据是实体具体的值,可以是单个元素,也可是一维或者二维结构,其元素也可以是一个‘实体’的结构,通过递归,就能组织成复杂的树状数据结构,如图5所示。在开发新的代码解释子模块时,只需要从规范化的配置文件取出相关信息,并按生成目标代码的数据结构建立‘实体’结构,连同文件信息组织成结构化的代码信息即可。在本实例中,代码解释模块将建立如图6所示的结构化的信息代码。代码生成器根据由结构化的代码信息指定的目标语言,按照结构化的代码信息的数据结构,生成相应的代码。代码生成器从目标语言的代码生成工具中调用C语言的生成工具,采用C语言的语法将‘实体’结构的信息填放入适当的位置以组织成目标代码。代码文件管理模块顺序读取结构化的代码信息数组中关于生成文件的信息,提取出生成文件名,是否使用代码模版,以及在使用模版的情况下调用模版的具体路径,连同生成的代码生成各个目标文件。即本实例中欲生成的代码文件。本发明提出了一种用于生成任意数据结构的配置代码文件的通用的结构化的代码自动配置方法和装置,它采用一种面向数据的用户描述规范,用户使用该规范可以对任意事务进行广泛而全面的描述。使用现有简单的语法编写一个按照本发明制定的规范描述目标代码数据结构的模块即可以生成相应的可配置代码。并且能够生成支持生成包括面向对象和非面向对象在内的可配置代码文件。这样的配置装置就可以方便的移植到各个软件或硬件系统中,以减少软件或硬件代码的开发的工作量和开发时间。权利要求1.一种结构化的代码自动配置方法,其特征在于,包括以下步骤第一步根据用户对配置的描述情况,用语法编写一个描写目标代码数据结构的可替换模块;第二步接收第一步中用户对配置的描述;第三步将第二步接受的用户对配置的描述转变为规范化的配置文件;第四步使用第一步所述的可替换模块,从第三步得到的规范化配置文件中提取出需要的信息,并按照目标代码的数据结构组织起来,形成结构化的代码信息;第五步根据结构化的代码信息,使用其指定的目标语言生成相应的目标代码;第六步将生成的代码组织成最后的配置代码文件。2.根据权利要求1所述的结构化的代码自动配置方法,其特征是,第一步所述的可替换模块,能根据不同的配置任务,随时进行更新或重写,以满足不同的目标代码文件的配置需要。3.根据权利要求1所述的结构化的代码自动配置方法,其特征是,第三步所述的规范化的配置文件,用于规范化用户对配置信息的描述,所有的用户对配置的描述都被转变为遵守一定规范的配置文件,该规范化的配置文件含有三个基本的描述结构规范,分别为用于描述单个数据的‘单词’,用于描述组织为一维结构的数据组的‘链表’,以及用于描述组织为二维结构的数据组的‘表’,其中链表和表中的数据组中的元素为单词、链表或者是表结构,单词、链表和表结构除本身所携带的数据之外还包括自己的名称,和标识不同的具有相同名称的上述结构的属主两个属性,该规范仅面向数据,用户使用该规范能对任意事务进行广泛而全面的描述。4.根据权利要求1所述的结构化的代码自动配置方法,其特征是,第四步所述的从配置文件中提取需要的信息,将使用一组工具完成,包括查找‘表’,‘链表’和‘单词’结构;得到表,链表,或单词结构的名称;得到‘表’,‘链表’,或‘单词’结构的属主;提取‘表’结构的数据;查找‘表’结构的维数;提取‘链表’结构的数据;提取‘单词’结构的数据;提取‘表’结构中某一特定属性的数据;提取‘链表’结构中某一特定属性的数据;提取特定属性的‘表’结构功能函数。5.根据权利要求1所述的结构化的代码自动配置方法,其特征是,第四步所述的结构化的代码信息,为一个通用的结构的数组,数组中的每一个结构对应一个生成文件,该结构包括生成文件名、使用目标代码语言、使用的模版名称、以及一组用于存放具有生成目标文件相同的数据结构的名为‘实体’的结构,‘实体’结构包括‘实体’属性、‘实体’数据、正文前注释、正文内注释,其中‘实体’属性包括‘实体’种类、‘实体’名称、‘实体’前缀、‘实体’后缀;‘实体’数据是实体具体的值,是单个元素,或是一维或者二维结构,其元素也可是一个‘实体’的结构,通过递归,就能组织成复杂的树状数据结构。6.根据权利要求1所述的结构化的代码自动配置方法,其特征是,第五步所述的生成相应的目标代码,其方法为将‘实体’结构中的信息按照目标语言的语法方式,以该‘实体’结构的数据结构组织排列成目标代码。7.根据权利要求1所述的结构化的代码自动配置方法,其特征是,第六步所述的将生成的代码组织成最后的配置代码文件,其方法为按照结构化的代码信息数组中每个结构的文件信息,调用指定的模版或不使用模版,使用指定的文件名和生成的目标代码,生成相应的代码配置文件。8.一种结构化的代码自动配置装置,包括配置文件规范化模块、目标代码结构解释模块、代码生成器和生成代码文件管理模块,其特征在于所述配置文件规范化模块读入用户对需要配置的信息的描述,将多种用户对配置的描述转化为一种规范化的配置文件以便对配置信息的读取和处理,并将规范化的配置文件输出给目标代码结构解释模块;所述的目标代码解释模块将规范化的配置文件中的配置信息提取出来,并且将这些信息按照目标代码的数据结构组织成结构化的代码信息,并将结构化的代码信息输出至代码生成器;所述的代码生成器根据由结构化的代码信息指定的目标语言,按照结构化的代码信息的数据结构,生成相应的代码,并将生成的代码和结构化的代码信息中的代码文件信息一并送入生成代码文件管理模块;所述的生成代码文件管理模块按照代码文件信息,将代码组织成相应的代码配置文件,并输出最后生成的代码配置文件。9.根据权利要求8所述的结构化的代码自动配置装置,其特征是,所述的目标代码解释模块包括配置信息接口工具库和代码解释子模块,所述的配置信息接口工具库用于提供一组工具给代码解释子模块使用,这组工具用于从规范化的配置文件中查找所需的信息以及将需要的信息提取出来,并输出给代码解释子模块;所述的代码解释子模块,使用配置信息接口工具库提供的工具从规范化的配置文件中提取出所需的信息,并将这些信息按照目标代码的数据结构组织成结构化的代码信息,并输出至代码生成器,该模块是面向数据逻辑结构的部分,面对不同的目标代码的需求,只要使用简单的语法编写描述目标代码的数据结构的代码解释子模块就能生成相应的目标代码配置文件,来完成代码配置功能。10.根据权利要求8所述的结构化的代码自动配置装置,其特征是,所述的代码生成器中包含一组不同目标语言的代码生成工具,根据由结构化的代码信息指定的目标语言,调用相应语言的生成工具生成目标代码;所述的生成代码文件管理模块按照代码文件信息中指定的生成文件名和模板信息,调用指定的模版或不使用模版,使用指定的文件名生成相应的代码配置文件。全文摘要一种计算机
技术领域
的结构化的代码自动配置方法及装置,方法为根据用户对配置的描述情况,编写一个描写目标代码数据结构的可替换模块;接收用户对配置的描述;将接受的用户对配置的描述转变为一种规范化的配置文件;使用所述的可替换模块,从规范化配置文件中提取出需要的信息,并按照目标代码的数据结构组织起来,形成结构化的代码信息;根据结构化的代码信息,使用其指定的目标语言生成相应的目标代码;将生成的代码组织成最后的配置代码文件。本发明还提供一种装置,包括配置文件规范化模块、目标代码结构解释模块、代码生成器和生成代码文件管理模块。该装置可方便的移植到各个软硬件系统中,以减少软硬件代码的开发成本。文档编号G06F17/30GK101122854SQ200710045889公开日2008年2月13日申请日期2007年9月13日优先权日2007年9月13日发明者强马,耀邹,刘佩林申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1