- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《抽象语法树文献综述V1
抽象语法树 姓名:刘乐 学号:2101470 日期:2011/10/16 抽象语法树(AST) AST的基本概念 在计算机科学中,抽象语法树(abstract syntax tree或者缩写为AST),或者语法树(syntax tree),是源代码的抽象语法结构的树状表现形式[1],这里特指编程语言的源代码。 树上的每个节点都表示源代码中的一种结构,图一是一段源代码的语法书结构,代码见附录一。所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节。比如,嵌套括号被隐含在树 的结构中,并没有以节点的形式呈现;而类似于if-condition-then这样的条件跳转语句,可以使用带有两个分支的节点来表示。. 图一 源代码语法树 和抽象语法树相对的是具体语法树(concrete syntax tree),通常称作分析树(parse tree)。一般的,在源代码的翻译和编译过程中,语法分析器创建出分析树。一旦AST被创建出来,在后续的处理过程中,比如语义分析阶段,会添加一些信息。 语法分析和语法树 语法分析指的是将代码扫描到一个容器中,然后对该容器中的字符在词法分析的基础上将字段组合成各类语法短语,在结构上分析判断源程序。使用语法分析可以解决词法分析中较难解决的字段的多重意义的问题。[4] 图二 词法分析[5] 语法树是在语法分析的基础上,将代码的结构转化成树的形式,可以解决字段的上下文相关的问题。而语法树可以通过许多词法语法解析器自动生成,也解决了手工识别的效率问题。 AST的作用 在现代编译器的构造过程中,前端主要实现从源程序到中间形式(Intermediate Representation)的转换,而编译器的后端用来完成从中间形式到具体目标机代码的转换,这是一种广泛采用的编译器构造模型。虽然源程序到目标程序的直接转换是可行的,但是使用独立于具体目标平台的中间形式有以下优点: (1)使用中间形式可以比较容易地构造面向不同目标平台和不同语言的编译器。在不改动已有编译器前端的情况下,为新的目标平台构造一个生成该平台目标程序的后端,就可以构造出新平台的编译器。同样对于一个新的语言,在不改动已有编译器后端的情况下,为新语言构造一个识别该语言的前端,就可以构造出新语言的编译器。 (2)针对中间形式,可以进行独立于目标平台的代码优化。这样可以生成较高质量的目标代码,在此基础上可以对目标代码进行平台相关的优化,进而生成更高质量的目标代码。 使用中间形式的主要缺点是,产生中间代码的编译过程与不产生中间代码的编译过程相比在效率上会显得有些低。这是因为中间代码还要进行再一次的翻译才能生成目标代码。但是,增加一层中间形式可以使编译器更好地模块化,并且可以在中间形式上做很多优化,这些足以抵消两次翻译所带来的低效率。所以,很多现代的编译器都使用了中间形式,比较常见的中间形式有逆波兰表示,N元表示和树形表示三种。抽象语法树(AST)作为中间形式也是树形的一种。 AST工具:JAVACC,ANTLR JavaCC(Java Compiler Compiler)是一个用JAVA开发的最受欢迎的语法分析生成器。这个分析生成器工具可以读取上下文无关且有着特殊意义的语法并把它转换成可以识别且 匹配该语法的JAVA程序。JavaCC可以在Java虚拟机(JVM) V1.2或更高的版本上使用,它是100%的纯Java代码,可以在多种平台上运行。JavaCC还提供JJTree工具来帮助我们建立语法树,JJDoc工具为我们的源文件生成BNF范式(巴科斯-诺尔范式) 文档(Html) 。[1] JJTree是JavaCC的预处理器,它读取后缀名为jjt的文件,经它处理之后生成后缀名为jj的文件,而供JavaCC使用的这些jj文件就包含了生成分析树的能力。尽管JavaCC是一个自上而下的分析器,但是JJTree是使用栈从下而上构建AST的,当结点建立后就被压栈直到找到这个结点的父结点时再出栈并和父结点关联。在构建AST时,使用者可以根据自己的意愿直接操作该栈。[2] 图三是利用javacc建立的语法书(AST)。 图三 JJTree生成的语法树 ANTLR是由 SanFraneiseo大学TerenceParr等人开发的一种分析器自动生成工具,它同时集成了词法分析器生成、语法分析器生成、抽象语法树生成和抽象语法树遍历框架生成功能,并且能够支持Java、C++和C#等多种目标语言。[2] 生成的语法树如图四。代码见附录二[6]。 图四 ANTLR生成的语法树 AST在本课题中的重要性 我们自然科学基金的主要研究内容是网络知识互联,所以对源代码进行研究是十分有必要的,而A
您可能关注的文档
最近下载
- 广安市2025年社会化选聘新兴领域党建工作专员考试备考题库及答案解析.docx VIP
- 办公区域消防隐患课件.pptx
- 2026中国农业银行广东省分行秋季校园招聘1235人笔试备考试题及答案解析.docx VIP
- 鲁东大学劳动法期末考试复习题及参考答案.docx
- SJ∕T 11622-2016 信息技术软件资产管理实施指南(可复制版).pdf
- 七年级4班班规约及奖惩办法.doc VIP
- 中秋国庆慰问品采购慰问品供货实施方案.doc VIP
- 17J008 挡土墙(重力式、衡重式、悬臂式)(必威体育精装版).pdf VIP
- 满堂脚手架施工方案.docx VIP
- 中储粮油脂有限公司2025年下半年招聘笔试参考题库附答案解析.docx VIP
文档评论(0)