历史创伤的反思传统艺术的创新??《天云山传
宫缩应激试验对胎儿预后的评价附482例报
C++中用指针调用类成员函数的问题及解决
我的爱对你说……
她已断定他有一个十总暖柔、恨他代表游戏的
玩家们皆值失新世纪传世一试
SF内固定系统治疗胸腰椎骨折22例体会
一种颜色你会发现阵列匹配的服装,也心情
电子纸市场与技术连载一
我是法师我怕谁
合作游戏培养幼儿合作能力倒返实验个案研究
二十四点益智游戏的设计与开发
玩家又是个子孩子
一个欧盟财政预算案概况 - 期望与重点
《科学与文化》里的传奇
这才回过神的铉宇
就是因为他们的嫩小会在侧试静手前
不要陷入宿命论的泥潭为《梨花情》编剧进一
我的区道士走“攻”路线的探讨
用VB构建动态规划中生产与存储问题的算法
一种Java平台上契约式语言的设计与实现·81·一种Java平台上契约式语言的设计与实现刘振安,王文涛(中国科学技术大学自动化系,安徽合肥230027)摘要:针对游戏机器人开发平台在图形编程过程中可能出现的错误,提出了一种基于契约式设计思想的程序设计语言扩展方式。它为Java语言提供了契约式设计的支持,能帮助本平台的用户发现程序中存在的逻辑上或者设计上的错误,提供改正错误的手段。关键词:契约式设计;编译器;语法分析woool;逻辑错误中图分类号:TP311文献标识码:A文章编号:1000—8829(2008)01-0081一04DesignandImplementationofaContractLanguageforaSpecialJavaPlatformLIUZhen—a/l,WANGWen—tao(DepartmentofAutomation,UniversityofScienceandTechnologyofChina,Hefei230027,China)Abstract:AnexpansionmethodforprogramminglanguagebasedORdesignbycontractisproposedwhilesomeelTorsm8,behappenduringthegamerobotdesigningwithgraphicaleditor。ThismethodprovidesdesignbycontractsupportforJavaprogramminglan-guage,andhelpsplatformusertodetectandcorrecterrorsinlogicanddesigning.Keywords:designbycontract;compiler;syntacticanalysis;logicalelTor本研究为游戏者提供一个通过设计游戏机器人来玩游戏的编程环境”J,并称其为游戏机器人开发平台。这种玩法的目的是想让那些沉迷于游戏的青少年转变游戏的方式,摆脱纯粹的玩游戏,而转向通过设计游戏机器人来玩游戏,进而在游戏中锻炼自己的逻辑思维能力。
本平台采用图形化的编辑方式,构建可以直接与游戏进行交互的软件机器人。如图1所示,它主要分为图形编辑器、编译及运行时反馈部分和游戏接口3个部分。
嚣编译及错误反馈部分图1游戏机器人开发平台总体框图开发游戏机器人主要是通过设计其控制部分,从而完成游戏机器人的行为逻辑。用户通过按照功能要求设计实现预定义的接口(interface)和回调方法(call—backmethod)以实现游戏机器人的功能。虽然游戏平台提供了图像编程方式,但也会产生很多意想不到的错误。常见的错误主要是语法错误、运行时错误和逻辑错误。
运行时错误一般都可以归结为逻辑错误。语法错误可以通过编译器的分析给出,但编译器并不能解决运行时错误和逻收稿日期:2007一04~12作者简介:刘振安(1947一),男,教授,主要研究方向是图像处理与通信。辑错误。由于本平台主要是要求用户实现游戏机器人的逻辑功能,锻炼用户的逻辑思维能力,所以很有必要对用户所实现的逻辑功能进行检查,以便判断用户是否完成了所需要的功能设计,从而提高训练效果。因此,在分析错误产生原因的基础上,根据本平台的特点,提出一种基于契约式的语言来解决运行时错误和逻辑错误的方法。这种契约式语言由接口提供并在用户进行图形编程时自动添加到图形信息中,即自动嵌入到Java语言中。因为它仅由系统自动实现并负责为用户提供逻辑错误信息,所以没有增加用户负担。
为此,需要设计这种契约式语言的语法规则,契约式语言的编译器和改造后Java语言编译器。1契约式语言的设计针对用户可能出现的运行时错误和逻辑错误,通过引入断言来验证所采用方法的前置条件、后置条件以及类不变式,对程序的功能性进行检查,从而保证程序的正确性。在本平台中,因为游戏机器人引入的契约是先于用户代码产生的,所以这种契约式的语言本身并不需要具有完整的程序设计功能,就可以为Java语言增加对契约式设计思想的支持。这种设计思想可以描述如下:最终语言=Java语言+契约式语言本契约式语言的解析过程是通过调用词法分析器获得相应的单词符号,对所识别的语法结构进行分析并使用相应的语法规则进行处理,最后调用Java代码生成器,将识别到的语法结构转换为Java语言的对应语句。
本契约式语言的文法可以用一个四元式(坼,‰,_s,P)来表示,其中%nK=西。
因为本开发平台并不要求契约式语言必须是一个完全、独立的程序设计语言,所以可以使用上下文无关·82·《测控技术》2008年第27卷第1期文法进行语法分析,这既能满足需要,又能简化设计。设计中所用的终结符号集合坼,非终结符号集合¨的定义如表1所示。表1契约式设计语言的文法组成本文法的产生式集合规则主要有以下几条:①契约规则。
contract—+field?precondition?postcondition?invariant7.其中contract表示本文法的开始符号。这条产生式对应的语法规则是:针对一个方法的契约由4个部分组成,分别是域标签,前置契约,后置契约和不变式契约,并且任何一部分最多出现一次。
②前置条件规则。precondition_+’#require’contracthem+其中precondition表示前置契约语法范畴。这条产生式对应的语法规则是:前置条件契约由字符串”#require”引导,后边由一个或多个契约项构成。
③后置条件规则。postcondition_+’#ensure’contractItcm+其中postcondition表示后置契约语法范畴。这条产生式对应的语法规则是:后置条件契约由字符串”#ensure”引导,后边是由一个或多个契约项构成。④不变式规则。invariant—+’#invariant’conn丑cthem+其中invariant表示不变式契约语法范畴。这条产生式对应的语法规则是:不变式契约字符串”#invariant”引导。
语法分析器在识别出不变式后,则调用invariant()方法来处理这个不变式。⑤契约项规则。
contractltem---’_contractDescription’:’condition其中contractItem表示单条契约项语法范畴。这条产生式对应的语法规则是:一个契约项由两部分组成,分别是契约描述(contractDescription)和条件语句(condition)组成,两者中间由分号(;)隔开。2契约式语言编译器的实现在本游戏机器人开发平台中,图形编辑器需要接收从接口模块获得的契约,并自动地添加到用户编辑的图形中。由于在对契约进行解析时需要使用到被检查部分的相应代码,因此图形编辑器将本契约和用户的图形编辑结果一起转换为文本方式游戏文章,交给本平台的编译器,进行契约转换。本契约式语言编译器由3个部分组成:词法分析器、语法分析器和宿主代码生成器¨J。如图2所示,通过接收从图形编辑器产生的编辑代码作为输入,将契约转换成Java语言,再将输出交给Java语言编译器。2.1词法分析器的设计词法分析器设计的主要规则是字符识别规则、数字识别规则、标识符识别规则、空白符识别规则、结束符识别规则等来识别基本字、标识符、常数、运算符和界符¨J。语法分析器t上词法分析器Java代码生成器▲●l输入Il输出I图2契约式编译器结构一般的识别规则如下:①字符识别规则。Letter_÷(AlBlIZIaIb|¨·lz)②数字识别规则。
Digjt一(01112I.··19)③空白符识别规则。WS_+(”f’、r’ht’l’、n’)④标识符规则。Identifier_+Letter(LetterDigit)}WS⑤结束符识别规则。END—+’木/’基本字的识别是将基本字作为一类特殊的标识符来处理的。将基本字的编码保存在基本字表中,通过规则①~④识别出一个标识符后,再查基本字表来确定这个标识符是否是一个基本字。2.2语法分析器的设计语法分析器通过调用词法分析器获得相应的单词符号,对所识别的语法结构进行分析并使用相应的语法规则进行处理,最后调用Java代码生成器,将识别到的语法结构转换为Java语言的对应语句。语法分析器通过上面提到的契约式语言的文法进行构造,通过对应的语法规则来识别相应的语法结构,达到对代码中的契约式语言解析的目的。2.3Java代码生成器的设计Java代码生成器负责将契约翻译成Java语言代码。
在实现上主要是一种替换的方法,将本语言支持的数据结构向Java语言的数据结构进行转换,如果Java语言不支持某种数据结构,比如容器类型,则需要在代码生成器中通过使用Java语言进行模拟,并对语法分析器提供统一的访问接口,进而完成相应的功能。3契约式语言使用实例假设已经事先设计了一个直接插入排序方法InsertSort(L)的函数图形框,在使用图形编辑器实现一个游戏机器人时,需要用到直接插入排序方法InsertSort(L)。当用户将这个Insert.Sort方法流程的图形框拖入编程框中后,本平台也将契约式语言的代码加入其中。下面是加入契约式语言后的完整代码,它是被自动嵌入在Java语言的注释中的。/木}#$辐eld}一一”index”:木inti=0:+#require+一”排序数组不能为空”:一种Java平台上契约式语言的设计与实现·83·$sortArray!=null&&sortArray.1ength>=1}#ensuret一一”数组中的元素按照升序排列”:{#forall(i-0:sortArray.1ength一2;sortArray[i]<=sortArray[i+1];);}/publicstaticvoidInsertSort(int[]sortArray){inti=0;imj=0;intwatch;for(i=2;i
传统的方法采用二进制或ASCII格式对数据进行存储,数据查询和检索很不方便,对数据的分析也需要特定的应用程序。一种有效的大型试验数据管理方法就是采用SQLServer关系数据库对数据进行管理,通过ADO(activeXdataobjects)及OLEDB或TestStand与数据库接口,便于系统维护和使用。6结束语本研究在我国新支线飞机ARJ21试验系统以及机载测试系统实践的基础上提出了能够满足大型飞机综合试验需要的测试系统,该系统同样适合大型飞机试飞测试应用。采用基于以太网的分布式结构便于系统地集成、扩展和维护,能够提高试验测试效率,缩短大型飞机的研制周期。参考文献:[1]白效贤.试飞测试技术现状与发展[J].测控技术。
2004,23(10):1—2.[2]王宏伟.飞行试验数据管理探讨[J].测控技术,2001,20(7):41—45.[3]王燕山.以太网时间同步技术的研究进展及其应用[J].测控技术,2007,26(4):4—6.[4]殷志良.基于IEEEl588实现变电站过程总线采样值同步新技术[J].电力系统自动化,2005,29(13):60—63.[5]张晓斌.基于虚拟仪器的远程测试系统的设计与实现[J].计算机测量与控制,2007,15(4):449—451.口·84·《测控技术)2008年第27卷第1期用户使用游戏机器人和游戏进行交互。图4展示了还有32个地雷时,挖雷失败的情况。用户通过分析图4的结果,修改自己的算法,然后再通过运行结果检验自己的设计。图5展示挖雷成功的情况,即将所有地雷都标记出来。通过采用不同的控制算法就会产生不同的结果。这是针对固定雷区的实验方法,可以再通过改变布雷方式(增加地雷数目或者改变雷区大小)提高游戏难度,当然也要考虑不同算法对雷区的大小是敏感的,即当雷区大小改变时算法可能失效或效率变低。
例如图6展示了在一个小雷区中游戏机器人扫雷失败后的情况。用户根据这些提示完善自己的设计,从而提高自己解决问题的能力。图4游戏机器人挖雷失败地进行功能描述。
此外,本契约式语言也进行了进一步的扩展,例如增加日志功能、记录用户实现程序的具体流程并反馈给用户,使用户对所实现的程序流程有直观的认识。图6小雷区中游戏机器人扫雷失败实例本契约式语言集成到游戏机器人开发平台中,可以对使用此平台的用户提供了很好的开发控制机制,对用户可能出现的错误进行检查,提高了开发效率故事,锻炼了逻辑思维并收到了良好的效果。参考文献:[1]MeyerB.Applying“DesignbyContract”[J].Computer,1992,25(10).[2]RichardMitchell,JimMckim.DesignbyContract原则与实践[M].孟岩,译.北京:人民邮电出版社,2003.【3]Eiffel.http://www.eiffel,corn/.[4]陈火旺,钱家骅,孙永强.程序设计语言编译原理[M].北京:国防工业出版社,2001.[5]刘振安,周军.一种图形编程工具的设计与实现[J].测控技术,2007,(11).口泰克推出新的DisplayPort测试解决方案和实现方法2007年10月22日,全球领先的测试、测量和监测仪器供应商——泰克公司宣布,为DisplayPort1.1标准推出一种新的测试解决方案。这一解决方案为希望优化和验证DisplayPort设计性能的工程师提供了完整的测试解决方案。泰克还向视频电子标准协会(VESA)提交了新的发送机、电缆和接收机测试实现方法(MOI)体验,协助工程师和测试实验室执行DisplayPoIt1.1一致性测试。此外,世界领先的高速串行数据标准一致性测试实验室之一——AJlion已经选择泰克DisplayPort测试解决方案,进行DisplayPort一致性测试。DisplayPort允许使用与数字视频信号相同的电缆,把高清数字音频传送到显示设备上。
DisplayPort标准是由VESA任务小组开发,该小组由显示芯片、连接器、计算机监视器、电视显示器、投影机和Pc行业中的图5游戏机器人挖雷成功领导公司组成,其目标是提供一个新~代数字接口,代替LVDS,DVI,最终代替VGA。4结束语DisplayPon测试解决方案由DSAT08048GHz实时示波器及新的DPOJETAdvanced软件组成。此外,工程师可以采用RT—Eye和Jrl3软针对专用的游戏机器人开发平台,设计实现了一种基于契件及现有的JI’Ds或DP0系列示波器。其他组件包括:AwG7102任意波约式的描述语言,并讨论实现这种语言的方法。
通过本契约式形发生器;带有ICon。。。t软件及80E0380E04模块的DSA8200采样示语言可以使一种面向对象的语言增加对契约式设计方法的支波器;P7380SMA探头;以及EtticereTechnol晒es研制的DisplayPon夹持。
本契约式语言也可以用于软件开发的详细设计阶段,更好具。MOI和设置文件可以从Tektronix.corn中下载。口一种Java平台上契约式语言的设计与实现作者:刘振安,王文涛,LIUZhen-an,WANGWen-tao作者单位:中国科学技术大学,自动化系,安徽,合肥,230027刊名:测控技术英文刊名:MEASUREMENT&CONTROLTECHNOLOGY年,卷(期):2008,27(1)参考文献(5条)1.刘振安;周军一种图形编程工具的设计与实现[期刊论文]-测控技术2007(11)2.陈火旺;钱家骅;孙永强程序设计语言编译原理20013.Eiffel4.RichardMitchell;JimMckim;孟岩DesignbyContract原则与实践20035.MeyerBApplying"DesignbyContract"1992(10)。