建模语言中文本表面语法分析方法研究.docVIP

建模语言中文本表面语法分析方法研究.doc

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

建模语言中文本表面语法分析方法研究   摘要:通过分析三种常见文法的利弊,采用了扩展的BNF文法进行文本语法规则的描述,并通过准引用(quasiquote)和语法糖方法对该文法进行了改进和扩充,增强了文本语法的描述能力和易用性。通过准引用方法,已经被建立好的文本语法元素的抽象语法能够被重用来构造新的语法元素。通过使用语法糖,新的语法构件能被转换到存在的语法构件上。当元模型在实例上执行计算或编译时,可以通过脱糖(desugar)转换操作,建立一个新的语法类的实例。   关键词:建模语言;文本表面语法;扩展的巴科斯―诺尔范式;   准引用;语法糖   中图分类号:TP311文献标志码:A   文章编号:1001-3695(2008)03-0791-04      在语言工程中,需要一种语言以一种统一标准和丰富语义的方式来捕获、描述和操作语言的所有方面,这种语言就叫做元建模[1]语言。而在广义上,元模型[2]就是语言的模型,即表示语言工程的主要方式。它有两个主要的区别于其他模型的特点:a)它必须捕获被建模语言的主要特性和性质;b)一个元模型应能够描述一个语言的抽象语法、具体语法和语义。一个元建模语言经常是以三个主要的步骤来定义:a)定义语言的概念与概念之间形式良好的关系,如词汇表和分类法就是被抽象语法捕获的;b)语义应以用户清晰理解的方式来描述;c)精确的描述定义是很重要的,这是由表面语法捕获的。表面语法是提供给程序员或建模者的具体表达模型的方式,它们是抽象语法的不同视图。所以一个语言可以有多种表面语法或多个表面语法。抽象语法的定义已经被OMG的四层元模型体系结构标准化了,所以大多数语言规范都是以非正式的方式来描述语义和表面语法的。表面语法的定义被认为是元建模语言中最重要的一部分。表面语法的处理分为两个阶段:包含了解析语法和确保它是合法的;表面语法被用于构建抽象语法。表面语法可以多种方式被建模。模型语言的表面语法主要包括文本表面语法(如Java语言的具体语法)和图形表明语法(如UML[3]的图形符号),它们又被简称为文本语法和图语法。   图像语法经常被用户显示的实际情况所限制。元模型定义图形具体语法已经被OMG和许多作者提出。OMG采纳了一个标准来定义UML2.0 (UMLDI)的图形交互来克服基于XMI的模型交互的缺点。虽然图像语法用得多,也比较流行,但是文本语法是基础,必不可少。因此本文主要集中于文本表面语法部分,采用了扩展的BNF文法描述它的文本语法规则,尤其是它与抽象语法的联系。本文着重讲述了表面语法的文本语法解析过程。      1文法      语法的结构和形式规则由文法来描述。文法用于描述具体语法的合法构造规则。本章其余部分将介绍语法的描述方法―文法,以及如何根据文法规则解析一个语法和如何用具体语法构建抽象语法模型。   1.1文法定义   定义1[4]一个上下文无关文法(CFG)G= (VT,VN,S,P)由下列四部分组成:   a)VT是有限的终极符集。   b)VN是有限的非终极符集。   c)S是初始符,S∈VN。   d)P是产生式的有限集。其产生式具有下面形式:   A→X1X2…Xn   其中:A∈VN;Xi∈(VN∪VT),右部可空。   从定义中可以看出终极符只能出现在产生式的右部。一个正常的文法应满足这样的条件,即每个非终极符都至少有一个产生式,并且至少有一次出现在某个产生式中(初始符除外)。每个非终极符都能推导出终极符串(包括空串)。   1.2文法的分类   使用正式文法的一个最重要的方式是:一旦给定了一种语言的文法就应该完备地定义它。在语言中什么允许和什么不允许是一致的。这个非常有用,因为一个文中的语法描述非常模糊,就会有很多不同的解释。   另一个好处是正式的文法是由数学而来的,可以被计算机理解。有许多程序以给定的BNF及其扩展的方式为输入,然后自动地为给定的文法产生代码解析。事实上,这就是产生一个编译器的最常用的方法:通过使用所谓的compliercomplier输入文法,然后在一些程序语言中产生解析代码。   当然,编译器检查文法并且它们也产生代码。这些并不是用BNF文法来描述的。所以compilercompiler经常来连接代码的特殊语法。常见的文法有如下几种。   a)BNF[5]BNF表示法是日前最常用的文法表示方法。它主要是由Peter Naur为了描述Algol60程序语言的语法引入的。其可以严格地表示语法规则。现在几乎每一个编程语言都使用BNF来定义编程语言的语法规则。BNF包含的元语言符号为:   (a)〈〉语法成分被放在一对尖括号内;   (b)∷=或者→表示左边的语法成分由右边的语法成分组成(或者定义);  

文档评论(0)

151****1926 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档