用于简化Java循环语句的一种程序变换方法

来源 :硅谷 | 被引量 : 0次 | 上传用户:InsideASPNET
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要 由于目前程序变换与分析算法的复杂程度越来越高,因此简化处理显得尤为必要。本文主要探讨了程序变换方法在简化Java循环语句中的应用情况,这种方法主要是通过简化JAVA语言的组成结构和语言现象,从而实现简化Java循环语句的目的。
  关键词 简化;Java循环语句;程序变换
  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2014)23-0036-01
  变幻与分析算法的复杂性问题存在于当前很多的程序分析和程序变换等软件中,为了简化程序中的语言,一般的方法就是在程序中使用变换预处理的技术,也就是将复杂的结构通过等价程序替换为简单的结构,从而实现降低程序变换与分析算法的复杂程度。本篇文章探讨了程序变换方法在简化JAVA循环语句中的应用情况,在将for和do-while语句转变为while语句的基础上,借用标准变量来清除retuen、continue以及break等语句,达到简化Java语句的目的。
  1 JAVA语言源程序的组成结构
  在Java语言编写中,源程序占有重要的地位。程序变换的输入与输出是源程序的主要组成部分,Java语言的源程序可以输出自己下一级的编写程序。其中控制语句在输出与输入中作用,可以采用语句结构的方法来描述,该语句结构同样也是Java语言源程序的组成结构,具体如下:
  除了源程序中的控制语句是上述结构,在Java语言中的其他控制语句,只要没有特殊要求的话也按照上述方法来处理自身的语句结构。
  2 等价变换程序的方法
  在Java语言中的循环语句中,如果语句中含有continue或者break的话,就不能直接进行等价变换,首先要通过使用控制变量达到对语句逻辑的控制。具体而言,Java循环语句的变化方式如表1所表示情况。
  根据JAVA循环语句的变换规律,该语言中不仅循环语句可以自己定义一个符号,复合语句也可以自定义符合。Java语言中循环语句和复合语句的定义规则,共同给予了continue和break语句使用标号的权力。其中由于break语句自身的复杂性,break语句使用标号情况可以分为以下三类:
  1)第一类 break; 可以进行内层之外的循环运算。
  2)第二类 break lab;可以进行lab标号之外语句的循环运算,等价变换程序会忽略break语句和标号下的循环语句,直接执行其他复合语句和循环语句的运算。
  3)第三类 break lab;lab;可以进行lab标号之外复合语句的循环预算,同时还可以运算剩下的连续语句。等价变换程序会直接忽略break语句以及标号下的复合语句,直接进行其他复合语句和循环语句的运算。
  另一方面,Java语言下continue语句只有两种标号情况,具体如下:
  1)第一类continue;可以结束一部分循环语句体,转而执行其他的循环语句体。
  2)第二类continue lab;可以结束lab标号之下的循环语句体,终止本轮执行并转到下一次的运算中。等价变换程序会忽略continue语句以及标号之下的语句,直接执行其他复合语句和循环语句的运算。
  根据以上两类语句的执行运算规则,结合等价变换程序对复合语句的控制转移作用,该等价变换程序的方法的关键就是对语句执行和跳出进行分别处理。具体来说,就是在Java语言的循环语句中输入endStmt和endLoop两个标号变量,通过这两个变量分别处理语句跳出执行和循环执行的运算,达到等价变换的循环语句的目的。另一方面,为了简化Java语言中的循环语句,必须要清楚程序中的continue和break语句,其中具体的变换步骤可以分为4步:
  1)首先就是将控制标志变量输入到Java循环语句中,当执行到循环语句的时候,先设定两个控制变量,将fales定义为开始值。其中endStmti是执行语句控制终止的,而endLoopi是执行循环语句控制跳出的。
  2)将endLoop设定为循环语句的条件变量,并进行变量赋值的执行:在运算到continue循环语句的时候,就对结束剩下的语句运算;如果是执行到break循环语句的时候,要引用标志变量endLoop来处理。
  3)无论是处理continue语句还是break语句,都要按照Java语言的规则构造相关的条件语句,并在重新开始执行endStmt变量后,附加条件运算剩下的连续语句。
  4)在以上程序步骤完成以后,要重新给endLoop赋予初始值,并且循环的执行下去。
  3 程序变换的运算方法
  由于Java语言中,复合语句和循环语句的前面都可以附件标号,所以为了方便运算,可以将任何一个语句视为一个程序层面。其中数据结构方面,LABEL标号组可以通行于各个程序层之中,FLAG数组是用来为转移控制语句做标识处理,以下简单举例:
  输入:s:设定成Java语句中的变换对象
  n:将0赋予为初始值
  输出:v:设定为Java语句组的变换结果
  ... ...
  辅助函数
  执行结束标号的消除
  以上面的循环语句程序变换为例,其他无标号的循环语句也可以引用上述的运算方法,最终实现Java语言中循环语句的简化目的。
  4 结束语
  目前随着程序变换技术的进步,该方法已经逐步在静态分析系统中推广应用,基本满足Java语言程序中简化循环语句的需要,取得了令人满意的效果。
  参考文献
  [1]王众,廖湖声.用于简化Java循环语句的一种程序变换方法[J].计算机科学技术,2011(6).
  [2]邱仲潘,等译.Java高级开发指南[M].电子工业出版社,2010(1).
  作者简介
  郝兆平(1969-),吉林伊通人,副教授,研究方向:计算机应用技术、会计电算化。
其他文献
摘要:,保持生态环境文明已经得到了全体社会人民的广泛共识,我们今后的社会主义道路建设必须在方方面面贯彻科学发展观,实现人与人、人与自然的和谐发展。这种要求体现在公路建设之中,就是我们要实现生态公路的理念,把生态文明全面贯彻于公路建设之中。本文将通过概述生态公路的概念,进而了解生态公路的作用及实现形式,从而使大家对生态公路形成更为深刻的认识与了解。  关键词:生态公路;设计理念;生态建设;实现形式 
期刊
摘要:国家现行标准对住宅间距有明确规定,一些城市对住宅间距也做出了地方规定,而一些开发商为多出房,房屋的日照间距连最低标准都不能满足,使1~3层住房基本不能得到日照。还有的住宅日照遮挡严重,使整个单元竖向用户不能得到日照。   关键词:住宅建筑;设计  中图分类号:S611文献标识码: A  一、场地设计的常见问题  1 建筑物及附属设施  建筑物及附属设施不得突出道路红线和用地红线建造,不得突出
期刊
本文报告造影超声心动图右心功能测定723例的经验总结。仪器和病例选择应用Aloka SSD 800型及720型心动图仪。本组病例中门诊患者634例,住院患者89例。其中男346,女377例。
摘 要 IEC61850标准的应用就是使变电站系统网络化和数字化的过程。当前变电站智能化、数字化、一体化需要测试技术的支撑。不仅要结合IEC61850标准对硬软件进行测试,还需要对系统中设备单元的配置数据和信息测试验证。本文从夷陵变电站现场调试发现的代表问题入手,进行故障分析。  关键词 IEC61850;智能变电站;现场测试  中图分类号:TM73 文献标识码:A 文章编号:1671-7597(
这篇文章最突出的特点有两个:一是层次分明,开篇语句干净、利落、主体的展开非常有序;二是过渡词句如as well as,What’s more,mean-while等运用贴切得体,使文章的上下衔接非
2007年7月,教育部办公厅正式印发了《大学英语课程教学要求》,“大学英语课程的设计应充分考虑听说能力培养的要求,应大量使用先进的信息技术,开发和建设各种基于计算机和网
本文通过对荣华二采区10
期刊
期刊
一、现状分析一是学校数量多,多数学校办学不成规模,办学效益低下。据有关部门统计,无论是发达地区还是欠发达地区,中等职业学校的数量与普通高中的数量均相当。就我县来说,有高级