TINYC编译器的设计与实现语法分析器的设计与实现.docx
《TINYC编译器的设计与实现语法分析器的设计与实现.docx》由会员分享,可在线阅读,更多相关《TINYC编译器的设计与实现语法分析器的设计与实现.docx(43页珍藏版)》请在三一办公上搜索。
1、TINYC编译器的设计与实现语法分析器的设计与实现目 录 摘 要 . 3 1. 前 言 . 4 2. 语法分析器的设计原理 . 6 2.1 语法分析器的功能 . 6 2.2 语法分析的目标和作用 . 6 2.3 构造语法分析器的步骤 . 6 2.4 上下文无关文法及分析 . 7 2.5 常用的语法分析方法和几种算法的比较 . 9 2.5.1自上而下分析法 . 9 2.5.2自下而上分析法 . 11 3. 语法分析器的设计和实现 . 14 3.1 TINY语言的介绍 . 14 3.2 TINY的文法生成 . 14 3.3 TINY语法分析器算法的选择 . 17 3.4 TINY语言的递归下降分析
2、程序 . 20 3.5 TINY语法分析的输出 . 22 3.5.1 语法分析的输出结果 . 22 3.5.2 抽象语法树的节点声明 . 23 3.5.3 语法树结构 . 24 3.6 语法分析的主要函数与核心代码 . 28 3.6.1 语法分析器的主要文件和函数 . 28 3.6.2 语法分析模块 . 29 4. 测试分析 . 39 4.1 测试方法 . 39 4.2 测试计划 . 39 4.3 测试项目说明 . 39 4.4 测试结论 . 43 5. 结论与心得 . 44 参 考 文 献 . 45 致 谢 . 错误!未定义书签。 附 录 . 错误!未定义书签。 Contents Abstr
3、act . 4 1. Preface . 6 2. Syntax analyzer principle of design . 7 2.1 Function of parsing . 7 2.2 Purpose and function of parsing . 7 2.3 The of parsing analyzer structure . 7 2.4 Context-free grammar and analysis . 8 2.5Commonly syntax analysis method and several algorithms comparison . 10 2.5.1 Fr
4、om top to bottom analytic method . 10 2.5.2 From bottom to top analytic method . 12 3. Syntax analyzer design and realization . 15 3.1 Introduce of TINY language . 15 3.2 Production of TINY grammar . 15 3.3 Choice of TINY syntax analyzer algorithm . 18 3.4 Recursion decline analysis programe of TINY
5、 . 21 3.5 Output of TINY grammar analysis . 23 3.5.1 Result of parsing . 23 3.5.2 Statement of abstract syntax tree node . 24 3.5.3 The syntax tree struction . 25 3.6 Main function and core code of syntax analyzer . 29 3.6.1Master document and function of syntax analyze 29 3.6.2Parsing module . 30 4
6、. Testing parse . 40 4.1 Testing method . 40 4.2 Testing Propose . 40 4.3 Explanation of test item . 40 4.4 Conclusion of testing . 44 5. Conclusion and what one has learned . 45 Bibliography . 46 Thanks . 47 Appendix . 47 2 TINY-C编译器的设计与实现 -语法分析器的设计与实现 摘 要 编译器是将一种源语言翻译为目标语言的计算机程序。 本项目采用一种类C 的小型语言:T
7、INY 语言作为源语言,构造TINY语言的编译器。项目由三人共同完成,其中本人主要是完成了语法分析器的构造,主要工作如下: 研究语法分析器的设计原理,并对几种典型的语法分析算法进行分析。生成TINY文法,并证明该文法为LL文法,在此基础上,选择递归下降算法实现TINY语法分析。最终实现了一个TINY语法分析器,它以词法分析器所产生的记号为输入,采用递归下降分析程序进行语法分析,并输出语法树作为下阶段编译的输入。我们最后构造了一个Dephi接口程序,显式输出抽象语法树。 关键词 : 编译器 TINY 记号 语法分析 语法树 Tiny-C Complier design and realizati
8、on -Syntax analyzer design and realization Ren Jun 3 Abstract The compiler is a computer program which translates the source language into the target language. This project uses a language similar to (ANSI) C: Using the TINY language as the source language to construct the compiler of TINY. The whol
9、e process of the project is finished by the joint effort of three people, and I myself mainly completed the structure of syntax analyzer. The major work is as follows: Analyzing the designing principles of the syntax analyzer, and several kinds of typical parsing algorithm. Producing the TINY gramma
10、r, proving this grammar is LL (1) grammar, and in this foundation, choosing recursion drop algorithm to realize the TINY grammar analysis. A TINY grammar analyzer has thus been accomplished. It applies the symbols which are produced by the morphology analyzer as the input, and uses the recursion dro
11、p analysis program to carry on the grammar analysis, then output the syntax tree as the input for next compiling phases input. We structured a Dephi interface routine at last to display the abstract syntax tree. Keyword :Compiler , TINY ,Token ,Syntax analysis,Syntax tree 1. 前 言 系统概述 在计算机上执行一个高级语言程序
12、一般要分为两步:第一步,用一个编译程4 序把高级语言翻译成机器语言程序;第二步:运行所得的机器语言程序求得计算结果。通常所说的翻译程序是指这样的一个程序,它能够把某一种语言程序转换成另一种语言程序,而后者与前者在逻辑上是等价的。语法分析器,简称分析器,对单词符号串进行语法分析(根据语法规则进行推导或规约),识别除各类语法单位,最终判断输入串是否构成语法上的正确的”程序”。 源程序 表格管理 词法分析器 单词符号 语法分析器 语法单位 词义分析和中间代码产生器 中间代码 优化器 中间代码 目标代码生成器 目标代码 图1-1编译程序框 错误处理 TINY语言的概述 TINY的程序结构很简单,它在语
13、法上和Pascal的语法相似:仅是一个由分号分隔开的语句序列。另外,它既无过程也无声明。所有的变量都是整型变量,通过对其赋值可较轻易地声明变量。它只有两个控制语句: if语句和repeat语句,这两个控制语句本身也可包含语句序列。If语句有一个可选的else部分且必须由关键字end结束。除此之外,read语句和write语句完成输入/输出。在花括号中可以有注释,但注释不能嵌套。 5 2. 语法分析器的设计原理 2.1 语法分析器的功能 语法分析是编译过程的核心部分。它的任务是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则。语法分析器在编译程序中的地位如图1.1所示
14、。 取下一个单词符号 单词符号 语法分析树 词法分析 语法分析器 编译后续部分 图2.1 语法分析器在编译程序中的地位 2.2 语法分析的目标和作用 1)语法分析的目标是确定程序的语法,或称作结构,也正是这个原因,它又被称作语法分析。 2)分析过程 分析程序的任务是从由扫描程序产生的记号中确定程序的语法结构,以及或隐式或显式地构造出表示该结构的分析树或语法树。因此,可将分析程序看作一个函数,该函数把由扫描程序生成的记号序列作为输入,并生成语法树作为它的输出:记号序列语法树。 2.3 构造语法分析器的步骤 a写出文法 b根据文法选择合适的分析算法。 C实现算法 6 2.4 上下文无关文法及分析
15、实际上,几乎所有程序设计语言都是通过上下文无关文法来定义的。另一方面,上下文无关文法又足够简单,使得我们可以构造有效的分析算法来检验一个给定字串是否是由某个上下文无关文法产生的。 1)上下文无关文法定义 在计算机科学中,一个形式文法G = (N P S)称之为上下文无关的,如果它的产生式规则都取如下的形式:V - w ,这里 VN , w (N)* 。上下文无关文法取名为“上下文无关”的原因就是因为字符 V 总可以被字串 w 自由替换,而无需考虑字符 V出现的上下文。一个形式语言是上下文无关的,如果它是由上下文无关文法生成的条目上下文无关语言。上下文无关文法重要的原因在于它们拥有足够强的表达力
16、来表示大多数程序设计语言的语法; BNF 巴克斯-诺尔范式经常用来表达上下文无关文法。 2)上下文无关文法规则 上下文无关文法规则确定了为由规则定义的结构的记号符号符合语法的串集。文法规则通过推导确定记号符号的正规串。推导是在文法规则的右边进行选择的一个结构名字替换序列。推导以一个结构名字开始并以记号符号串结束。在推导的每一个步骤中,使用来自文法规则的选择每一次生成一个替换。 3)上下文无关文法的形式定义 定义上下文无关文法由以下各项组成: 集合T。 集合N。 或文法规则Aa的集合P,其中A是N的一个元素,a是*中的一个元素。 。 令G是一个如上所定义的文法,则G = (T, N, P, S)
17、。G上的推导步骤格式a Ag abg,其中a和g是(T N) *中的元素,且有Ab在P中,且(T N) *中的串a被称作句型)。将关系a *b定义为推导步骤关系 的传递闭包;也就是:假若有零个或更多个推导步骤,就有a *ba1 a2 an- 1 an其中a=a1,b=an 。在文法G上的推导形如S *w,且w T *),S是G的开始符号。 由G生成的语言写作L (G),它被定义为集合L (G) = w T * |存在G的一个推导S *w,也就是:L (G)是由S推导出的句子的集合。 最左推导S *w 是一个推导,在其中的每一个推导步骤aAg abg都有almT*,换言之,a 仅由终结符组成。类
18、似地,最右推导就是每一个推导步骤aAg abg 都有属性g T*。 文法G上的分析树是一个带有以下属性的作了标记的树: ,就有AX1 , X2 , . . . Xn P。每一个推导都引出一个分析树,这个分析树中的每一个步骤aAg abg 都在推导中,且b= X1 , X2 , . . . Xn 与带有标记X1 , X2 , . . . Xn 的n 个孩子的结构相对应,其中X1 , X2 , . . . Xn 带有标记A。许多推导可引出相同的分析树。但每个分析树只有唯一的一个最左推导和一个最右推导。 最左推导与分析树的前序编号相对应,而与之相反,最右推导与分析树的后序编号相对应。若上下文无关文法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TINYC 编译器 设计 实现 语法 分析器
链接地址:https://www.31ppt.com/p-3167123.html