一种基于文本的人机命令输出格式检查方法

文档序号:6466121阅读:147来源:国知局
专利名称:一种基于文本的人机命令输出格式检查方法
技术领域
本发明涉及计算机程序开发和维护方法领域,尤其涉及一种基于文本 的人机命令输出格式检查方法。
背景技术
随着计算机的不断普及,程序不仅仅只用来进行数值计算,还更广泛
地用于处理非数值的数据,例如性别、月份、星期几、颜色、单位名、 学历和职业等,都不是数值数据;而在其它程序设计语言中, 一般用一个 数值来代表某一状态,但是这种处理方法很不直观,易读性差,如果能在 程序里尽量用自然语言中有相应含义的单词来代表某一状态,那么程序就 变得容易阅读和理解;也就是说,事先如果就考虑到某一变量可能的取值, 然后尽量用自然语言中含义清楚的单词来表示它的每一个取值,这种方法 称为枚举方法,用这种方法定义的类型称枚举类型。 '
在许多类型的程序设计中,数据结构的选择是一个基本的设计考虑因 素,许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质 量都严重的依赖于是否选择了最优的数据结构;很多时候,确定了数据结 构后,算法就容易得到了,有些时候事情也会反过来,需要根据特定算法 来选择数据结构与之适应;不论哪种情况,选择合适的数据结构都是非常 重要的,对每一个数据结构而言,必定存在与它密切相关的一组操作;若 操作的种类和数目不同,即使逻辑结构相同,数据结构能起的作用也不同, 不同的数据结构其操作集不同,即便如此,遍历的操作必不可缺,所谓遍 历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做
一次访问;访问结点所做的操作依赖于具体的应用问题,例如
列表,是一种有序的可变的数据类型,可以通过序号来访问列表中某 一成员的值,还可以对列表进行排序、添加、删除等操作。
字典,是一种无序的可变的数据类型,字典中的成员以"一建值"的形 式来声明,每个值又通过键来引用。比如在存储有电话号码的字典中,就 可以才艮据姓名来引用电话号码。
正则表达式(RegularExpression),是一种文本模式,是用某种模式去匹 配一类具有共同特征的字符串,正则表达式主要用于处理文本。能够使文 本处理变得简单起来,尤其对于复杂的查找、替换等工作。使用正则表达 式可以既快又好的完成任务。
人机命令的输出格式由输出分区定义和输出参数定义组成,输出分区 包含不同的输出参数和可能的辅助信息,输出参数包括不同的参数类型, 不同的参数类型又可细分为不同的子类型;在打印命令输出的时候,输出 分区按照预定义进行打印,输出分区中与参数无关的辅助信息可直接打印 到输出设备,输出分区中的参数根据程序所赋予的数值和参数预定义的类 型、长度等信息进行格式化打印。
输出参数的类型比较丰富,有整型、字符型、枚举型、曰期型等,每 种类型又细分成不同子类型,例如整型可以细分为BYTE、 WORD、 DWORD 和LONG等,导致了不同的输出参数的最小显示长度不同,如整型的BYTE 显示长度至少应为3个字符长,WORD至少应为5个字符长,DWORD至 少应为IO个字符长。
对于整型数据类型,参数长度有其内在相对固定的对应关系;而对于 可变长度类型处理就更为复杂,例如枚举型,是一种数值和字符串对应的 预定义类型,程序运行时处理的是数值,但显示时打印的是数值所对应的 字符串;由于程序有可能输出任何一个数值,也就是可能打印任何一个字 符串,所以参数输出最小长度应该是该枚举最长字符串的长度。
所以在实践中,程序员对于上述数据类型的复杂性,人为因素所定义 的输出参数格式往往不能够满足预定要求的问题,特别是在程序的维护阶
段,如果调整了枚举型等参数内容后,就很容易引入输出显示非法的问题; 所以完全依靠人工来保证输出格式的正确性,肯定是件繁瑣而容易出错的 工作,也增加了程序开发和维护的难度,尤其是维护阶段中的改动,更容 易引入新的问题。
因此,现有技术有待于改善和发展。

发明内容
本发明要解决的问题是,提供一种基于文本的人机命令输出格式检查 方法,解决由于人机命令输出参数信息显示不合法的问题,以降低程序开 发和维护的难度。
本发明的技术方案如下
一种基于文本的人机命令输出格式检查方法,包括以下步骤
A、 将人机命令的输出参数类型添加到参数属性字典,以及将人机命令 枚举添加到枚举属性字典;
B、 遍历人机命令脚本文件,将脚本文件含有输出参数和输出分区的定 义分别添加到输出参数属性字典和输出分区属性字典;
C、 比较检查所述参数属性字典、枚举属性字典的内容与所述输出参数 属性字典、输出分区属性字典的内容,判断输出参数格式是否正确。
所述的检查方法,其中,所述步骤A还包括根据人机命令预定义的 输出参数类型及其子类型,填充到所述参数属性字典。 所述的检查方法,其中,所述步骤B具体包括
Bl、遍历所述人机命令目录和枚举目录,分别生成人机命令文件列表 和枚举文件列表;
B2、遍历所述枚举文件列表,解析相应枚举文件,生成枚举文件描述
串格式字典;
B4、定位到输出参数定义,解析出每个输出参数及其属性,填充到所 述输出参数属性字典;
B5、定位到输出分区定义,解析出每个输出分区及其属性,填充到所 述输出分区属性字典。
所述的4企查方法,其中,所述步骤B2和B4之间还包括
B31、判断待^r查文件是否为所述人机命令脚本文件,是则解析该文本 文件,否则直接退出;
B32、判断待检查文件是否存在输出分区和输出参数,是则进入步骤 B4,否则遍历人机命令列表。
所述的检查方法,其中,所述步骤C详细包括
Cl、分析所述输出参数属性字典中的每个成员的属性,参照所述参数 属性字典和枚举属性字典进行输出格式检查,有错误时记录错误曰志;
C3、分析所述输出分区属性字典中的每个成员的属性,参照所述参数 属性字典和枚举属性字典进行输出格式检查,有错误时记录错误日志。 所述的4企查方法,其中,所述步骤C1和C3之间还包挣 C21、判断是否打印表头,是则进入步骤C22,否则遍历人机命令列表; C22、检查输出参数的最小显示长度与表头长度的和值。 所述的^r查方法,其中,所述步骤C1还包括
Cll、若至少一成员变量输出参数的显示长度小于预定义变量的参数属 性字典所索引到的输出长度,记录错误曰志;
C12、若至少一成员变量格式化输出定义与预定义变量的枚举属性字典 输出类型不一致,记录错误日志。
所述的检查方法,其中,所述步骤C3还包括
C31、解析中文输出参数列表,若至少一成员变量键值的输出长度小于 预定义变量的参数属性字典所索引到的输出长度,记录错误曰志;
C32、解析英文输出参数列表,若至少一成员变量键值的输出长度小于 预定义变量的参数属性字典所索引到的输出长度,记录错误日志。 所述的检查方法,其中,所述步骤C后还包括 Dl、检查输出分区完成后,所述待检查文件解析结束; D2、继续遍历人机命令列表,进行下一循环,直至所有待检查文件解 析结束;
D3、打开所述错误日志,发现和根据需要改进所存在的问题。 所述的检查方法,其中,所述人机命令参数的输出格式为整型、布尔 型、浮点型、货币型、日期型、地址型、字符型或枚举型。
本发明所提供的一种基于文本的人机命令输出格式检查方法,由于釆 用了基于字典和正则表达式的参数格式检查方法,利用程序完成了参数格 式合法性的检验,解决了由于人机命令输出分区和输出参数定义比较灵活 和复杂所导致的输出参数信息显示不合法的问题;并且打开错误日志,还 可以清晰地看到并且有针对性的去改进所发现的问题,降低了程序开发和 维护的难度。


图1为本发明参数格式检查过程的流程图。
具体实施例方式
以下结合所示附图,对本发明基于文本的人机命令输出格式检查方法 的具体实施方式
加以详细说明。
本发明基于文本的人机命令输出格式检查方法,主要核心点在于,基
者输出参数的一致性,至于枚举、遍历、字典和正则表达式等技术为现有 技术所熟知,在此不再赘述。
总体上讲,本发明检查方法的实施方式大概包括如下几个步骤
1) 将人机命令预定义的输出参数类型添加到参数属性字典,以及将人机 命令枚举添加到枚举属性字典。
2) 遍历人机命令脚本文件,如脚本文件含有输出参数和输出分区的定 义,就分别添加到输出参数属性字典和输出分区属性字典。
3) 根据所述输出参数属性字典、输出分区属性字典的内容,与所述参数 属性字典、枚举属性字典的内容进行比较检查,判断输出参数格式是否正 确。
具体分析,在指定操作目录后,该目录下即是人机命令和人机命令枚 举的源文件,本发明检查方法的实施方式流程如图l所示
步骤101:根据系统预定义的输出参数类型及其子类型,填充到参数属 性字典。字典成员的键值为字符串化的"参数类型+参数子类型",其值为 一列表,列表成员依次设计为LengthX, FormatX, SizeX,分别代表该 类型最小显示长度、打印类型如。/。d, 。/。s等和内存存储字节数长度;
以整型中的WORD型为例,假设整型对应的参数类型为3,参数子类型 为50,则对应的字典成员应该是{"3+50":[5, "%d", 2]};其含义是对于整型 (3)中的WORD (50)类型,输出参数至少应该为5个字符长度,否则可 能造成显示不完全;而输出类型应该为整型输出,对应输出内存緩存区应 该为2个字节;对于其他的固定长度参数类型,也可按照所述相同的方法向 参数属性字典中添加成员,用于后续检查的依据。
步骤102:遍历人机命令目录和枚举目录,分别生成人机命令文件列表 和枚举文件列表;将相应文件的存储路径作为列表成员的值,储存在相应 列表中,用于后续的遍历访问操作;
步骤103:遍历枚举文件列表,解析相应枚举文件,生成枚举文件描述 串格式字典;
需要说明的是,此处的枚举实际上是数值与字符串的映射关系,数值
为整型,又细分为子类型,枚举字典设计为(枚举编号:[枚举最大长度,枚举 子类型]};例如定义枚举标识的是否,编号IOOO,枚举取值分别为O-否,1-是,枚举索引类型为BYTE,对应的枚举元素应该定义为{1000:[2,49]},其 中,IOOO为枚举编号,枚举最大显示长度为一个汉字,即两个字符,子类 型为BYTE,对应为49;完成步骤103后,开始遍历人才几命令列表,如果找 不到未解析的人机命令就直接结束程序,否则进入步骤104;
步骤104:先判断文件是否为人机命令脚本文件,是则解析该文本文件, 不是则直接退出;再判断该文件是否存在输出分区和输出参数,如果不存 在,继续遍历人才几命令列表,如果存在,则进入步骤105;
步骤105:定位到输出参数定义,解析出每个输出参数及其属性,填充 到输出参数属性字典。输出参数属性字典设计为
<formula>formula see original document page 11</formula>
},
其中,'(ParamNoV为字符串化的输出参数编号,NameX为参数名称, TypeX为参数类型,TypeExtX为参数子类型,WidthX为预参数显示长度, HeadX为参数中文表头,HeadEX为参数英文表头;
这里仍以整型中的WORD型为例,文件中定义了 一个WORD型的输出 参数,参数编号为l,参数名称为year,显示长度为3,中英文表头分别为'年,, 'year',格式化类型为'%s',所生成相应的字典成员为<formula>formula see original document page 11</formula>
所述文件中还定义了一个枚举型输出参数,参数编号为2,对应类型 '1000-是否,,参数名称leapyear,显示长度为6,中英文表头分別为'是否 闰年,,'leapyear,,所生成相应的字典成员为{'{2},:[ leapyear, 9,1000, 6,'是 否闰年,'leapyear, , '%s,]},其中9为枚举类型对应的类型数值;
为了说明的方便,假设只有这两个输出参数,则相应的输出参数属性 字典中添加了上述两个成员变量;
步骤106:分析输出参数属性字典中的每个成员的属性,参照预定义参 数属性字典和枚举格式字典进行输出格式检查,有错误时记录错误日志
先定位到输出参数字典中的第一个成员变量{'{1}':[year, 3, 50,3,'年', 'year','%s']},进行输出格式的检查,由于TypeX=3为整型,所以应该到参 数属性字典中进行匹配,再由于参数属性字典的键值为'类型+子类型,, 所以又4并接出'3+50,,然后利用此4建值索引到对应的值为[5,"%d",2],与 从文件中解析出的输出参数属性[year, 3, 50, 3,'年','year' , '%s']进行比较, 就可以发现两个问题
a) 输出参数的显示长度为3,小于WORD型的最小打印长度5;
b) 格式化输出定义不一致,分别为整型和字符型; 从而可将发现的这两处问题记录于日志中;
再定位到输出参数字典中的另外一个成员变量{'{2}'[leapyear,9, 1000, 6,'是否闰年','leapyear','%s']},由于TypeX=9为枚举型,所以要到枚举字 典中去寻找相应变量,而索引键值为枚举子类型即枚举编号1OOO,则定位 到值为[2,49],然后和从文件中解析出的输出参数属性[leapyear,9, 1000,6, '是否闰年','leapyear','%s']进行比较,不难看出,无论是参疼显示长度,还 是格式化输出类型都合法,可以顺利跳过;
步骤107:定位到输出分区定义,解析出每个输出分区及其属性,填充 到输出分区属性字典,输出分区属性字典设计为
{BandNo:[ [OprmListCh],[OprmListEn]},其中,[OprmListCh]为中文 输出参数列表,[OprmListEn]为英文输出参数列表。
对于不打印表头的情况,若没有输出参数信息显示不合法的问题,则 不需要说明,下面要说明的是打印表头的情况,因为打印表头的时候,输 出参数的显示长度不仅包含了输出参数数值本身的显示,还包括了输出参 数表头的显示,相应的输出参数长度检查,就要检查参数最小显示长度和 表头长度的和值;假设本例的中英文输出分区定义为"bandl={l} {2}",生成的字典成员 变量为(l:[ [{1},{2}],[{1},{2}] ]},进入步骤108;
步骤108:分析输出分区属性字典中的每个成员的属性,参照输出参数 属性字典,参照所述参数属性字典和枚举属性字典进行输出格式检查,有 错误时记录错误日志;
从输出分区字典中取出成员变量{1[ [{1},{2}],[{1},{2}] ]}的值为列表, 列表中可有两个成员变量,分别为中文输出参数列表和英文输出参数列表; 先解析中文输出参数列表,取出第一个成员变量{1},以此为键值,到输出 参数字典中查找相应变量的值为[year,3,50,3,'年','year','%s,],可以看 到中文表头为'年',需要2个字符的输出长度,同时根据键值'3+50'到 参数属性字典中索引到需要至少5个字符的输出长度,由此推算2+5=7,得 出至少需要7个字符的显示长度,显然小于预定义的显示长度3,因此记录 错误日志;同理输出参数2的打印也是有问题的,因为中文表头长度推算需 要8个字符,而8+2>6,同样记录错误日志;再进行英文输出参数列表的检 查,按照上述的方法,可以发现英文输出参数也同样存在问题;
检查完输出分区后,该文件解析结束,继续遍历人机命令列表,进行 下一循环;直到所有文件解析完毕。
最后打开错误日志,即可清晰的看到存在的问题,并进行有针对性的 改进。
以上基于文本的人机命令输出格式检查方法根据实际应用还可以采用 现有各种可能的方案,为本领域技术人员所熟知,在此也不再赘述。
根据上述的检查方法,可检查整型、布尔型、浮点型、货币型、日期 型、地址型、字符型或枚举型参数的输出格式定义是否正确。
根据上述的检查方法,可检查不打印表头输出分区中的参数长度定义 是否正确。
本发明的具体实施方式
所提供的 一种基于文本的人机命令输出格式检
查方法,由于采用了基于字典和正则表达式的参数格式检查方法,利用程 序完成了参数格式合法性的检验,解决了由于人机命令输出分区和输出参
数定义比较灵活和复杂所导致的输出参数信息显示不合法的问题;并且打 开错误日志,还可以清晰地看到并且有针对性的去改进所发现的问题,降 低了程序开发和维护的难度。
应当理解的是,对本领域普通技术人员来说,可以根据上述方案的说 明加以改进或变换,例如除中英文外其它文字程序的应用等,而所有这些 改进和变换都本应属于本发明所附权利要求的保护范围。
权利要求
1、一种基于文本的人机命令输出格式检查方法,包括以下步骤A、将人机命令的输出参数类型添加到参数属性字典,以及将人机命令枚举添加到枚举属性字典;B、遍历人机命令脚本文件,将脚本文件含有输出参数和输出分区的定义分别添加到输出参数属性字典和输出分区属性字典;C、比较检查所述参数属性字典、枚举属性字典的内容与所述输出参数属性字典、输出分区属性字典的内容,判断输出参数格式是否正确。
2、 根据权利要求1所述的检查方法,其特征在于,所述步骤A还包括 根据人机命令预定义的输出参数类型及其子类型,填充到所述参数属性字 典。
3、 根据权利要求1所述的检查方法,其特征在于,所述步骤B具体包括Bl、遍历所述人机命令目录和枚举目录,分别生成人机命令文件列表 和枚举文件列表;B2、遍历所述枚举文件列表,解析相应枚举文件,生成枚举文件描述 串格式字典;B4、定位到输出参数定义,解析出每个输出参数及其属性,填充到所 述输出参数属性字典;B5、定位到输出分区定义,解析出每个输出分区及其属性,填充到所 述输出分区属性字典。
4、 根据权利要求3所述的检查方法,其特征在于,所述步骤B2和B4 之间还包括 B31、判断待检查文件是否为所述人机命令脚本文件,是则解析该文本 文件,否则直接退出;B32、判断待检查文件是否存在输出分区和输出参数,是则进入步骤 B4,否则遍历人机命令列表。
5、 根据权利要求1所述的检查方法,其特征在于,所述步骤C详细包括Cl、分析所述输出参数属性字典中的每个成员的属性,参照所述参数 属性字典和枚举属性字典进行输出格式检查,有错误时记录错误曰志;C3、分析所述输出分区属性字典中的每个成员的属性,参照所述参数 属性字典和枚举属性字典进行输出格式检查,有错误时记录错误日志。
6、 根据权利要求5所述的检查方法,其特征在于,所述步骤C1和C3 之间还包括C21、判断是否打印表头,是则进入步骤C22,否则遍历人机命令列表; C22、检查输出参数的最小显示长度与表头长度的和值。
7、 根据权利要求5所述的检查方法,其特征在于,所述步骤Cl还包括Cll、若至少一成员变量输出参数的显示长度小于预定义变量的参数属 性字典所索引到的输出长度,记录错误曰志;C12、若至少一成员变量格式化输出定义与预定义变量的枚举属性字典 输出类型不一致,记录错误日志。
8、 根据权利要求5所述的检查方法,其特征在于,所述步骤C3还包括C31、解析中文输出参数列表,若至少一成员变量键值的输出长度小于 预定义变量的参数属性字典所索引到的输出长度,记录错误日志; C32、解析英文输出参数列表,若至少一成员变量键值的输出长度小于 预定义变量的参数属性字典所索引到的输出长度,记录错误曰志。
9、 根据权利要求1所述的检查方法,其特征在于,所述步骤C后还包括Dl、检查输出分区完成后,所述待检查文件解析结束; D2、继续遍历人机命令列表,进行下一循环,直至所有待检查文件解 析结束;D3、打开所述错误日志,发现和根据需要改进所存在的问题。
10、 根据权利要求1所述的检查方法,其特征在于,所述人机命令参 数的输出格式为整型、布尔型、浮点型、货币型、日期型、地址型、字符 型或枚举型。
全文摘要
本发明公开了一种基于文本的人机命令输出格式检查方法,包括以下步骤将人机命令的输出参数类型添加到参数属性字典,以及将人机命令枚举添加到枚举属性字典;遍历人机命令脚本文件,将脚本文件含有输出参数和输出分区的定义分别添加到输出参数属性字典和输出分区属性字典;比较检查所述参数属性字典、枚举属性字典的内容与所述输出参数属性字典、输出分区属性字典的内容,判断输出参数格式是否正确。由于采用了基于字典和正则表达式的参数格式检查方法,利用程序完成了参数格式合法性的检验,解决了输出参数信息显示不合法的问题;并且打开错误日志,还可以清晰地看到并且有针对性的去改进所发现的问题,降低了程序开发和维护的难度。
文档编号G06F9/44GK101339504SQ200810142268
公开日2009年1月7日 申请日期2008年8月8日 优先权日2008年8月8日
发明者洋 刘, 朱红军 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1