[发明专利]一种状态机等价变换的方法和装置有效
申请号: | 201410836231.6 | 申请日: | 2014-12-26 |
公开(公告)号: | CN104572028A | 公开(公告)日: | 2015-04-29 |
发明(设计)人: | 王磊;杨磊;谢少林 | 申请(专利权)人: | 中国科学院自动化研究所 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 宋焰琴 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种状态机等价变换的方法及装置。该方法包含变换类型判断步骤、顺序块状态提取步骤、循环块状态提取步骤、嵌套循环块状态提取步骤。该状态机等价变换装置是能够接收一个或多个符合等价变换规则的状态块输入,执行状态机等价变换方法中的所有步骤,输出符合可拼接规则的状态块的装置。本发明的方法作为状态机拼接方法中的重要子方法,能够极大提高状态机拼接的范围和正确性。同时,还可以应用于其他类似程序段和代码段的形式变换和分析。 | ||
搜索关键词: | 一种 状态机 等价 变换 方法 装置 | ||
【主权项】:
一种状态机等价变换的方法,包括以下步骤:步骤1,将状态机的状态块初始化成树形二维结构;步骤2,读取一个状态机和状态机的状态提取方式,根据状态提取方式对状态机选择输出或反向;如果提取方式是正向提取,则将输入状态机放入步骤3的输入中,跳转至步骤3;如果提取方式是反向提取,则将状态块放入步骤2.1的输入中,调用步骤2.1,将步骤2.1返回的状态块替换状态机中的原状态块,并将新状态机放入步骤3的输入,跳转至步骤3;步骤2.1,将输入状态机的尾区域标示为头区域,同时将原头区域标识为尾区域;其中,如果当前主区域为嵌套循环块,则将嵌套循环块中的状态块,颠倒序列,并对每个状态块调用步骤2.1,用返回的状态块替换嵌套循环块中的原状态块;如果当前主区域不是嵌套循环块,则将主区域中状态块里所有状态颠倒顺序;将调整后的状态块输出,返回到调用当前此步骤的前一个步骤中;步骤3,读取一个输入状态机的首个状态块,判断该状态块的类型,并跳转到相应状态块状态提取的步骤中;其中如果当前状态块为顺序块,则跳转至步骤4;如果当前状态块为循环块,则跳转至步骤5;如果当前状态块为嵌套循环块,则跳转至步骤6;步骤4,接收一个顺序状态块和待提取长度作为输入,从输入顺序块头部提取出指定数量个状态置于头区域中,并修改待提取长度;将提取后的状态机输出,跳转至步骤8;步骤5,接收一个循环块和待提取长度作为输入,判断待提取长度与循环块内部状态数量和尾区域状态数量,提取指定数量的状态;子步骤5.0,计算循环块尾区域的长度,并判断当前是否需要提取一次循环块;子步骤5.1,将循环体内部所有状态按顺序组成一个新的顺序块,将该顺序块放入尾区域的头部,将循环块的已循环次数加1,跳转至子步骤5.2;子步骤5.2,如果待提取长度大于等于循环块内部状态数量,则将尾区域中首个顺序块放到提取区域的尾部,并将待提取数量减去循环块内部状态数量,跳转到步骤8;如果待提取长度小于循环块内部状态数量,则将尾区域中的顺序块按顺序合并成一个顺序块,然后从合并的顺序块中提取出头部的待提取长度个状态,组成一个新的顺序块放入提取区域的尾部,清空尾区域,若提取后的顺序块内状态数不为0,则将提取后的顺序块放入尾区域中。跳转至子步骤5.3;子步骤5.3,将循环块内头部待提取长度个状态取出放到循环块内状态的尾部,形成一次循环滚动,并将待提取长度置为0,跳转至子步骤8;步骤6,接收嵌套循环块和待提取长度作为输入,从输入嵌套循环块头部提取出指定数量个状态,输出可用于状态机拼接的状态块的组合;子步骤6.0,如果尾区域为空,则跳至子步骤6.1;如果尾区域非空,则跳至子步骤6.2;子步骤6.1,提取嵌套循环块内的所有状态块,按顺序置于尾区域中,将嵌套循环块的已循环次数加1,跳转至子步骤6.2;子步骤6.2,将嵌套循环块的尾区域取出,组成一个新的状态机,将待提取长度和新的状态机作为输入,递归调用本方法,将返回的状态机的首个状态块的头区域内所有状态块取出,放入提取区域的尾部,跳转至子步骤6.3;子步骤6.3,将嵌套循环块内所有状态块取出,按顺序组成一个新的状态机,待提取长度和新的状态机作为输入,递归调用本方法,将返回的状态机的首个状态块的头区域内所有状态块取出放到返回的状态机的最后一个状态块后面,并用该状态机内的状态块替换嵌套循环块内的所有状态块,并将待提取长度置为0,跳转至步骤8;步骤8,如果当前待提取长度不为0,则将当前状态机和待提取长度作为步骤3的输入,跳转至步骤3,否则跳转至步骤9;步骤9,将提取区域,放置到首个状态块头区域的尾部;如果原提取方式是反向提取,将首个状态块放入步骤2.1的输入中,调用步骤2.1,将步骤2.1返回的状态块替换状态机中的原状态块,该方法结束;否则该方法结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院自动化研究所,未经中国科学院自动化研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410836231.6/,转载请声明来源钻瓜专利网。