ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:115.50KB ,
资源ID:6562952      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6562952.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(抽象语法树文献综述_V1.doc)为本站会员(gnk289057)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

抽象语法树文献综述_V1.doc

1、 抽象语法树姓名:刘乐学号:2101470日期:2011/10/16抽象语法树(AST)1. AST 的基本概念在计算机科学中,抽象语法树(abstract syntax tree 或者缩写为 AST) ,或者语法树(syntax tree) ,是源代码的抽象语法结构的树状表现形式 1,这里特指编程语言的源代码。 树上的每个节点都表示源代码中的一种结构,图一是一段源代码的语法书结构,代码见附录一。所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节。比如,嵌套括号被隐含在树 的结构中,并没有以节点的形式呈现;而类似于 if-condition-then 这样的条件跳转语

2、句,可以使用带有两个分支的节点来表示。.图一 源代码语法树和抽象语法树相对的是具体语法树(concrete syntax tree) ,通常称作分析树(parse tree) 。一般的,在源代码的翻译和编译过程中,语法分析器创建出分析树。一旦 AST 被创建出来,在后续的处理过程中,比如语义分析阶段,会添加一些信息。2. 语法分析和语法树语法分析指的是将代码扫描到一个容器中,然后对该容器中的字符在词法分析的基础上将字段组合成各类语法短语,在结构上分析判断源程序。使用语法分析可以解决词法分析中较难解决的字段的多重意义的问题。 4图二 词法分析 5语法树是在语法分析的基础上,将代码的结构转化成树的

3、形式,可以解决字段的上下文相关的问题。而语法树可以通过许多词法语法解析器自动生成,也解决了手工识别的效率问题。3. AST 的作用在现代编译器的构造过程中,前端主要实现从源程序到中间形式(Intermediate Representation)的转换,而编译器的后端用来完成从中间形式到具体目标机代码的转换,这是一种广泛采用的编译器构造模型。虽然源程序到目标程序的直接转换是可行的,但是使用独立于具体目标平台的中间形式有以下优点:(1)使用中间形式可以比较容易地构造面向不同目标平台和不同语言的编译器。在不改动已有编译器前端的情况下,为新的目标平台构造一个生成该平台目标程序的后端,就可以构造出新平台

4、的编译器。同样对于一个新的语言,在不改动已有编译器后端的情况下,为新语言构造一个识别该语言的前端,就可以构造出新语言的编译器。(2)针对中间形式,可以进行独立于目标平台的代码优化。这样可以生成较高质量的目标代码,在此基础上可以对目标代码进行平台相关的优化,进而生成更高质量的目标代码。使用中间形式的主要缺点是,产生中间代码的编译过程与不产生中间代码的编译过程相比在效率上会显得有些低。这是因为中间代码还要进行再一次的翻译才能生成目标代码。但是,增加一层中间形式可以使编译器更好地模块化,并且可以在中间形式上做很多优化,这些足以抵消两次翻译所带来的低效率。所以,很多现代的编译器都使用了中间形式,比较常

5、见的中间形式有逆波兰表示,N 元表示和树形表示三种。抽象语法树(AST)作为中间形式也是树形的一种。4. AST 工具: JAVACC,ANTLRJavaCC(Java Compiler Compiler)是一个用 JAVA 开发的最受欢迎的语法分析生成器。这个分析生成器工具可以读取上下文无关且有着特殊意义的语法并把它转换成可以识别且 匹配该语法的 JAVA 程序。 JavaCC 可以在 Java 虚拟机(JVM) V1.2 或更高的版本上使用,它是 100%的纯 Java 代码,可以在多种平台上运行。JavaCC 还提供 JJTree 工具来帮助我们建立语法树,JJDoc 工具为我们的源文件

6、生成 BNF 范式( 巴科斯-诺尔范式) 文档(Html) 。 1JJTree 是 JavaCC 的预处理器,它读取后缀名为 jjt 的文件,经它处理之后生成后缀名为 jj 的文件,而供 JavaCC 使用的这些 jj 文件就包含了生成分析树的能力。尽管 JavaCC 是一个自上而下的分析器,但是 JJTree 是使用栈从下而上构建 AST 的,当结点建立后就被压栈直到找到这个结点的父结点时再出栈并和父结点关联。在构建 AST 时,使用者可以根据自己的意愿直接操作该栈。 2图三是利用 javacc 建立的语法书(AST) 。图三 JJTree 生成的语法树ANTLR 是由 SanFraneis

7、eo 大学 TerenceParr 等人开发的一种分析器自动生成工具,它同时集成了词法分析器生成、语法分析器生成、抽象语法树生成和抽象语法树遍历框架生成功能,并且能够支持 Java、C+和 C#等多种目标语言。2生成的语法树如图四。代码见附录二 6。图四 ANTLR 生成的语法树5. AST 在本课题中的重要性我们自然科学基金的主要研究内容是网络知识互联,所以对源代码进行研究是十分有必要的,而 AST 是我们最好的研究对象,理由见 2。我们可以对源代码进行挖掘,对学生提交的代码进行整理分类。附录一while (b 0) if (a b)a = a b;else b = b a;return a

8、;附录二1+2-3*4/56参考文献1 baidubaike-javacc2 C_C_安全检查工具中抽象语法树的设计与实现.nh3 维基百科官方网站: http:/en.wikipedia.org/wiki/Knowledge_discovery4 http:/ 基于专家系统的程序代码知识点自动识别方法研究.nh6 Pete Chapman, Julian Clinton Randy Kerber, Thomas Khabaza, Thomas Reinartz, Colin Shearer and Rdiger Wirth,“CRISP-DM 1.0-Step-by-step data mi

9、ning guide”,2000 SPSS Inc. CRISPMWP-11047 Ronen Feldman, James Sanger, “The text mining handbook: advanced approaches in analyzing unstructured data”,Cambridge University Press, 20078R. Agrawal. ect. Database Mining: A performance perspective. IEEE Transactions on knowledge and data engineering. 19939百度百科官方网站:http:/ Harvey J. Miller,Geographic Data Mining and Knowledge Discovery,J. P. Wilson and A. S. Fotheringham (eds.) Handbook of Geographic Information Science, in press.11百度百科: http:/

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报