一种用于生成二进制数据的程序设计语言的制作方法

文档序号:32252283发布日期:2022-11-19 02:02阅读:57来源:国知局

1.本发明涉及计算机软件开发与测试技术领域,更具体的说是涉及一种用于生成二进制数据的程序设计语言。


背景技术:

2.命令式语言(imperativelanguage),是相对于声明式语言(declarativelanguage)和函数式语言(functionallanguage)而言的,它按顺序向计算机下达指令,逐步完成计算任务。
3.数据生成(datageneration),是进行软件测试的必备手段,这一步骤通常被包含在测试用例设计过程中。生成的数据可以区分为结构化数据(如数据库)、格式化文本数据(如csv)、二进制数据和自然语言文本数据等。
4.测试是软件开发至关重要的环节,而用例设计是测试的核心工作。当用例设计规模增长到一定程度后,需要生成大量的数据作为测试的输入。
5.现有的数据生成工具,主要集中于结构化数据或格式化文本数据。市面上有一些指定规则生成数据库或格式化文本的软件包。包括一些专门的数学软件包,它们虽然具备强大的数据处理能力,但在输出时仍以格式化文本数据为主。之所以很少有工具生成二进制数据,是因为这种数据不便于与软件开发测试的工具链整合,比如,二进制数据很难进行版本控制,也很难进行差异化比对,当面向二进制数据接口进行测试时,通常需要测试工具将生成的格式化文本数据转换为二进制数据。这个转换往往通过编程来实现,本身就是需要调试、测试的,为测试工作引入了更多的人因失误风险。
6.因此,如何提供一种方便与软件开发测试工具整合以及无需调试、测试的即可转换的程序设计语言,而且的一种用于生成二进制数据的程序设计语言是本领域技术人员亟需解决的问题。


技术实现要素:

7.有鉴于此,本发明提供了一种用于生成二进制数据的程序设计语言。
8.为实现上述目的,本发明提供如下技术方案,主要包括:一套语法规则、一套语义定义,以及一个作为参考实现的解释器。
9.优选的,在上述一种用于生成二进制数据的程序设计语言中,所述语法规则与语义定义具体为:
10.01const数量=15;
11.02const圆周率=3.14159;
12.03var幅值集=[float];
[0013]
04for(var序号:uint4=0;序号《数量;序号+=1){
[0014]
05@序号;
[0015]
06@($1*序号)%数量:int4as相位;
[0016]
07@sin(相位*2.0*圆周率):floatas幅值;
[0017]
08幅值集.pushback(幅值);
[0018]
09}
[0019]
优选的,在上述一种用于生成二进制数据的程序设计语言中,所述具体为:具体为:所述01、02行分别定义了名为“数量”和“圆周率”的常量。
[0020]
优选的,在上述一种用于生成二进制数据的程序设计语言中,其特征在于,03行具体为:定义了一个名为“幅值集”的浮点数组变量。
[0021]
优选的,在上述一种用于生成二进制数据的程序设计语言中,其特征在于,04行具体为:指定了一个循环,以“序号”从0到“数量”进行迭代;并且名为“序号”的变量后面用“:”加类型名指定了具体的类型,具体为一个4位的无符号整数。
[0022]
优选的,在上述一种用于生成二进制数据的程序设计语言中,其特征在于,05具体为:“@”符号是语言内置的输出运算符,与后面的表达式计算结果,并以二进制输出到标准输出流。
[0023]
优选的,在上述一种用于生成二进制数据的程序设计语言中,其特征在于,06行具体为:“@”后面是一个表达式,并且表达式中所有运算符与c语言同义;冒号后面指定了输出的二进制格式,并且要求它是一个4bits的有符号整数;类型之后,还用“as”关键字将这次输出的值命名为“相位”作为一个变量保存;还使用了特殊变量$1,表示了启动脚本时给出的第1个命令行参数。
[0024]
优选的,在上述一种用于生成二进制数据的程序设计语言中,其特征在于,07行具体为:用“@”输出,并且调用了“sin”函数计算正弦值。优选的,在上述一种用于生成二进制数据的程序设计语言中,其特征在于,08行具体为:没有输出,通过调用数组的方法“pushback”将06行的输出“幅值”添加到数组“幅值集”的末尾。
[0025]
优选的,在上述一种用于生成二进制数据的程序设计语言中,其特征在于,09行具体为:与04行末尾的“{”相呼应,表示循环体的结束。
[0026]
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种用于生成二进制数据的程序设计语言,本发明通过引入专用的程序设计语言,解决了以上两个问题:一是,写成的数据生成脚本本身是可读的文本,可以方便的与现有工具链整合;二是,它是一个经充分测试验证的独立工具,本身不需要额外的调试、测试。
具体实施方式
[0027]
下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0028]
本发明,主要包括:一套语法规则、一套语义定义,以及一个作为参考实现的解释器。
[0029]
为了进一步优化上述技术方案,所述语法规则与语义定义具体为:
[0030]
01const数量=15;
[0031]
02const圆周率=3.14159;
[0032]
03var幅值集=[float];
[0033]
04for(var序号:uint4=0;序号《数量;序号+=1){
[0034]
05@序号;
[0035]
06@($1*序号)%数量:int4as相位;
[0036]
07@sin(相位*2.0*圆周率):floatas幅值;
[0037]
08幅值集.pushback(幅值);
[0038]
09}
[0039]
为了进一步优化上述技术方案,其特征在于,具体为:所述01、02行分别定义了名为“数量”和“圆周率”的常量。
[0040]
为了进一步优化上述技术方案,其特征在于,03行具体为:定义了一个名为“幅值集”的浮点数组变量。
[0041]
为了进一步优化上述技术方案,其特征在于,04行具体为:指定了一个循环,以“序号”从0到“数量”进行迭代;并且名为“序号”的变量后面用“:”加类型名指定了具体的类型,具体为一个4位的无符号整数。
[0042]
为了进一步优化上述技术方案,其特征在于,05具体为:“@”符号是语言内置的输出运算符,与后面的表达式计算结果,并以二进制输出到标准输出流。
[0043]
为了进一步优化上述技术方案,其特征在于,06行具体为:“@”后面是一个表达式,并且表达式中所有运算符与c语言同义;冒号后面指定了输出的二进制格式,并且要求它是一个4bits的有符号整数;类型之后,还用“as”关键字将这次输出的值命名为“相位”作为一个变量保存;还使用了特殊变量$1,表示了启动脚本时给出的第1个命令行参数。
[0044]
为了进一步优化上述技术方案,其特征在于,其特征在于,07行具体为:用“@”输出,并且调用了“sin”函数计算正弦值。
[0045]
为了进一步优化上述技术方案,其特征在于,08行具体为:没有输出,通过调用数组的方法“pushback”将06行的输出“幅值”添加到数组“幅值集”的末尾。
[0046]
为了进一步优化上述技术方案,其特征在于,09行具体为:与04行末尾的“{”相呼应,表示循环体的结束。
[0047]
实施例:
[0048]
作为参考实现的解释器,用来执行代码脚本,实际完成数据生成任务。解释器的形态是一个可执行程序,文件名“ky-dg”,其调用示例如下:示例1:
[0049]
ky-dg示例脚本1.dgs|zip-o数据结果1.zip
[0050]
通过调用“示例脚本1.dgs”,生成的数据通过管道传递给zip程序压缩为“数据结果1.zip”文件。
[0051]
示例2:
[0052]
ky-dg-o数据结果2.bin示例脚本2.dgs
[0053]
通过调用“示例脚本2.dgs”,生成的数据输出到文件“数据结果2.bin”。示例3:
[0054]
ky-dg-o数据结果3.bin示例脚本3.dgs2468
[0055]
通过调用“示例脚本3.dgs”,并给出了“2468”共4个命令行参数,可在脚本中以“$1$2$3$4”分别调用。生成的数据输出到文件“数据结果3.bin”中。
[0056]
示例4:
[0057]
ky-dg示例脚本4.dgs》/dev/ttyusb0
[0058]
通过调用“示例脚本4.dgs”,生成的数据直接发送给0号usb设备。
[0059]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0060]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1