基于上下文无关文法地可逆变换模型.PDFVIP

基于上下文无关文法地可逆变换模型.PDF

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于上下文无关文法地可逆变换模型

1 基于上下文无关文法的可逆变换模型 1,2 1,2 1,2+ 吴阳怿 , 吴逸鸣 , 熊英飞 1(北京大学 信息科学技术学院软件研究所,北京 100871) 2(北京大学 高可信软件技术教育部重点实验室,北京 100871) +通讯作者,邮件:xiongyf@pku.edu.cn 摘 要: 可逆变换和双向变换等数据转换问题一直是近年来的研究热点,研究人员针对该问题提出了大量相 关的语言和模型.通过使用这些语言,程序员可以只写一个程序而产生正向和逆向两个变换,不仅提高了程序的 健壮性, 同时也降低了编写程序的工作量.但是,这些实现往往是建立在一种新的计算模型之上,从而导致需要花 费较大的学习成本去了解其计算模型.另一方面,上下文无关文法被广泛使用于编译技术,且有着等价于下推自 动机的可计算性.作为语法解析的基本工具,上下文无关文法对于绝大多数程序员来说都是不陌生的.本文提出 了一种基于上下文无关文法的计算模型,用来构造字符串上的可逆变换,并对其性质和表达能力进行了探讨. 关键词: 可逆变换;上下文无关文法 1 引言 数据变换是计算机应用的一个常见内容,很多软件的开发都涉及到了数据变换. 比如汇编程序把汇编代码 变换成机器码,压缩算法把原始数据转换成压缩后的数据,加密算法把明文数据变成密文,程序维护时把 ini 配 置文件转成 XML 配置文件等等.在很多场景下,我们不仅需要一个单向的数据变换,也需要该变换的逆变换.换 句话说,如果我们把数据变换看成是从输入映射到输出的一个函数 f ,我们同时也需要这个函数的反函数 f - 1. 比 如,给定一个汇编程序,我们同时会需要一个反汇编,他们互为逆变换. 同样的,我们也可能需要压缩的逆变换解 压缩,加密的逆变换解密程序, 以及把XML 配置文件转换回ini 配置文件的工具. 对于这类互逆的变换程序,现有的主流开发方法需要写两个程序,一个做正向变换,另一个做逆向变换.互 为反函数的一对变换往往含有大量的重复部分,写两个变换不仅存在很多重复劳动,还会增加出现低级错误的 可能性,从而导致更多的调试时间和精力的浪费. 为了解决这个问题,近年来研究人员提出了采用领域特定的语言来构造一对相关的数据变换,其中代表性 的工作包括可逆语言(Reversible Languages)[1]和能力更强一点的双向语言(Bidirectional Language) 1[2].通过使用 这些语言,程序员只需写一段程序,就可以同时得到正向和逆向两个变换.一方面避免了重复劳动,另一方面保 证了所生成的两个变换互逆,避免了出现低级错误的可能. 为了实现这个目标,现有的可逆语言和双向语言往往需要提出新的计算模型. 比如,Foster 等人设计的双向 [3] [1] 变换语言 Boomerang 提出了一套基于组合子的计算模型,Glück 等人设计的可逆语言 采用了基于可逆图灵 机的计算模型. 由于这些计算模型和传统模型往往差别较大,程序员使用这些新型语言需要较大的学习成本.虽 然可逆语言和双向语言有良好的性质,但目前在实践中的运用还比较少. 在本文中我们提出一种使用上下文无关文法来构造字符串上的可逆变换的方法,我们的方法主要基于如 下观察:很多变换的核心内容是数据格式的变换, 比如,在配置文件的转换中,是在XML 的保存格式和ini 的保存 格式之间转换,而数据的内容没有变化.在现有技术中,适合描述数据格式的工具就是上下文无关文法.上下文 无关文法是绝大部分程序员所熟知的一种表示方式,采用上下文无关文法来描述可逆变换可以使得学习成本 大大降低. 本文的主要贡献如下: 1 双向变换和可逆变换的主要区别是,双向变换不要求转换的两个数据域包含的信息是对等的,一个数据域可以包含不和另 一侧共享的信息。但可逆变换要求两个数据域包含的信息是严格对等的。 2  本文提出了一种新的计算模型来描述字符串上的可逆变换.使用该计算模型,程序员定义一个抽象 数据结构并且使用上下文无关文法描述该数据结构和具体的字符串格式之间的对应关系.然后我们

文档评论(0)

shaofang00 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档