《编译原理》课程教学资源(PPT课件讲稿)第五章 语法分析——自下而上分析

第五章语法分析-自下而上分析 51自下而上分析的基本问题 Figure5.5LR演示自下而上分析i+(i+i)*i 原理:自左向右扫描,自下而上分析 从输入符号串入手,通过反复查找当前句型的可归约串, 并使用文法的产生式把它归约成相应的非终结符来一步步地 进行分析的。 最终把输入串归约成文法的开始符号,表明分析成功。 任何自下而上分析方法的关键就是要找出当前句型的 可归约串,然后根据产生式判别将它归约成什么样的非终 结符
第五章 语法分析-自下而上分析 5.1 自下而上分析的基本问题 Figure5.5LR演示自下而上分析 i+(i+i)*i 原理:自左向右扫描,自下而上分析 从输入符号串入手,通过反复查找当前句型的可归约串, 并使用文法的产生式把它归约成相应的非终结符来一步步地 进行分析的。 最终把输入串归约成文法的开始符号,表明分析成功。 任何自下而上分析方法的关键就是要找出当前句型的 可归约串,然后根据产生式判别将它归约成什么样的非终 结符

规范归约基本概念 G为文法,S为开始符号,假定αβδ是G的一个句型,如果 SaA'且AB 则称β是句型aβ8相对于非终结符A的短语。 如果A=>β,则称β是句型aβ8相对于非终结符A的直接短语 最左直接短语称为句柄。 表达式文法的例子i+i*i,找出所有短语,直接短语和句柄 从句子到开始符号的归约序列,如果每一步都是把句柄替换为 相应产生式的左部符号而得到的,则称为规范归约。规范归约 是最右推导(规范推导)的逆过程
规范归约基本概念 如果A=> β,则称β是句型 αβδ相对于非终结符A的直接短语。 G为文法,S为开始符号,假定αβδ是G的一个句型,如果 则称β是句型 αβδ相对于非终结符A的短语。 + S A 且A * 表达式文法的例子 i+i*i,找出所有短语,直接短语和句柄 最左直接短语称为句柄。 从句子到开始符号的归约序列,如果每一步都是把句柄替换为 相应产生式的左部符号而得到的,则称为规范归约。规范归约 是最右推导(规范推导)的逆过程

例:考虑文法G(E):E→E+TT T→T*F|F F→i(E) 并假定输入串为(i+i)*,考察自下而上的分析过程
例:考虑文法G(E):E→E +T |T T→T*F | F F→i| (E) 并假定输入串为(i+i)*i,考察自下而上的分析过程

分析过程图表: 步骤分析栈输入串动作 步骤分析栈输入串动作 (i+i)*i#移进 10#(E+T)*i#归约 #(i+i)*i#移进 11#(E)*i#移进 123456789 #(i i)*i#归约 12#(E) i#归约 #(F+i)*#归约 #F i#归约 #(T+i)*i#归约 45 #T i#移进 #(E+i)*i#移进 #Tk i#移进 #(E+i)*i#移进 16 #1*i #归约 #(E+i)*i#归约 17#T*F #归约 #(E+F)*#归约 18 #T #归约 #E #接受 栈上的候选式不一定是句柄。例如,在第14步对栈顶为T,它是E的一候选式,但 它不是句柄,不能归约成E。判定候选式是极为简单的事情,但判定句柄就不那么 容易。而不同的自底向上方法给出不同的判定方法。 自下而上方法包括四个动作: 移进:把输入流的头符读到分析栈中。 归约:把分析栈顶的句柄归约为一非终极符。 接受:分析成功。 报错:处理错误
分析过程图表: 步骤 分析栈 输入串 动作 1 # (i+i)*i# 移进 2 #( i+i)*i# 移进 3 #(i +i)*i# 归约 4 #(F +i)*i# 归约 5 #(T +i)*i# 归约 6 #(E +i)*i# 移进 7 #(E+ i)*i# 移进 8 #(E+i )*i# 归约 9 #(E+F )*i# 归约 步骤 分析栈 输入串 动作 10 #(E+T )*i# 归约 11 #(E )*i# 移进 12 #(E) *i# 归约 13 #F *i# 归约 14 #T *i# 移进 15 #T* i# 移进 16 #T*i # 归约 17 #T*F # 归约 18 #T # 归约 19 #E # 接受 栈上的候选式不一定是句柄。例如,在第14步对栈顶为T,它是E的一候选式,但 它不是句柄,不能归约成E。判定候选式是极为简单的事情,但判定句柄就不那么 容易。而不同的自底向上方法给出不同的判定方法。 自下而上方法包括四个动作: 移进:把输入流的头符读到分析栈中。 归约:把分析栈顶的句柄归约为一非终极符。 接受:分析成功。 报错:处理错误

5.2算符优先分析 首先规定文法符号之间的优先关系和结合性质,然后再利用 这种关系,通过比较两个相邻的符号之间的优先顺序来确定可 归约串。 算符文法:任何产生式的右部都不含两个相继的非终结符 例:考虑文法G(E):E→E+TT T→T*FF F→i(E) 是否是算符文法?
首先规定文法符号之间的优先关系和结合性质,然后再利用 这种关系,通过比较两个相邻的符号之间的优先顺序来确定可 归约串。 算符文法:任何产生式的右部都不含两个相继的非终结符 5.2 算符优先分析 例:考虑文法G(E):E→E +T |T T→T*F | F F→i| (E) 是否是算符文法?

优先关系: 终结符ab的三种优先关系: a=b当且仅当存在形如下面的产生式U→..ab.或 U→….aQb a≤b当且仅当存在形如下面的产生式U→.laW..的生产式, 且有W鸷b a>b当且仅当存在形如U->.Vb.的产生式 且有V乡.a或V参.aQ
优先关系: 终结符ab的三种优先关系: 当且仅当存在形如下面的产生式U→ … ab…或 U→ … aQb… 当且仅当存在形如下面的产生式U→…aW…的生产式, 且有 W b… 当且仅当存在形如U→…V b…的产生式 且有 V …a 或V … aQ a b a b a b

如果一个算符文法的任何终结符对至多只满足三种关系之一, 称为算符优先文法。 例:考虑文法G(E):E→E+TT T→T*FF F→i(E) 是否是算符优先文法? 验证终结符对之间的优先关系(p90优先表)
如果一个算符文法的任何终结符对至多只满足三种关系之一, 称为算符优先文法。 验证终结符对之间的优先关系(p90优先表) 例:考虑文法G(E):E→E +T |T T→T*F | F F→i| (E) 是否是算符优先文法?

如何从文法构造优先关系表? 检查文法产生式的每个候选,可找出所有满足=的终结符对。 如何找出满足终结符对? 对每个非终结符P构造两个集合 FIRSTⅥT(P和 LASTVT (P) 十 FIRSTⅥTP)=4Pa.或PQn…,a∈VQ∈VN LASTVT(P)=alp 戈P +/a∈n,Q∈N 检查每个产生式候选,若形为.aP..,则对任何b∈ FIRSTVT(P), 我们有ab。 对表达式文法的非终结符构造 FIRSTVT和LASTⅥ并建立优先关系毒
如何从文法构造优先关系表? 检查文法产生式的每个候选,可找出所有满足 的终结符对。 如何找出满足 和 终结符对? 对每个非终结符P构造两个集合FIRSTVT(P)和LASTVT(P) FIRSTVT(P)= + + a P a P Qa a VT Q VN | ...或 ..., , LASTVT(P) = + + a P a P aQ a VT Q VN | ... 或 ... , , 检查每个产生式候选,若形为...aP...,则对任何b∈FIRSTVT(P), 我们有a b。 若形为...Pb...,则对任何a∈LASTVT(P), 我们有a b。 对表达式文法的非终结符构造FIRSTVT和LASTVT并建立优先关系表

算符优先分析算法 素短语:这样的一个短语,它至少含一个终结符,不含比自身 更小的素短语。 最左素短语:句型最左边的素短语。 定理:算符优先文法的句型N1a1N2a2,, N-an+1#的最左素短语 是满足如下条件的最左子串Na1NaN a;=a;+1 a
算符优先分析算法 素短语:这样的一个短语,它至少含一个终结符,不含比自身 更小的素短语。 最左素短语:句型最左边的素短语。 定理:算符优先文法的句型#N1a1N2a2...NnanNn+1#的最左素短语 是满足如下条件的最左子串Njaj...NiaiNi+1 aj-1 aj aj aj+1 ... ai ai ai+1

优先函数 利用两个函数f和g,对每个终结符θ,映射为两个数f(0)和 g(0),使得: 若0102则f(1)>g(62) 有的关系表不存在优先函数! 对于存在优先函数的关系表,如何构造优先函数? 请自学p9495优先函数的构造方法
优先函数 利用两个函数f和g,对每个终结符θ,映射为两个数f(θ)和 g(θ),使得: 若θ1 θ2则f(θ1) g(θ2) 有的关系表不存在优先函数! 对于存在优先函数的关系表,如何构造优先函数? 请自学p94~95优先函数的构造方法
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 香港城市大学:Introduction to Real-Time Systems(Design and Analysis of Algorithms).pptx
- 《网站设计与建设 Website design and developments》课程教学资源(PPT课件讲稿)第一部分 Web基础知识 第3章 图形与Web设计.ppt
- 《汇编语言》课程PPT教学课件:第三章 80x86寻址方式和指令系统.ppt
- 清华大学:高校信息门户建设(PPT讲稿).ppt
- 《计算机辅助设计 Computer Aided Design》课程PPT教学课件:第一篇 CAD技术 第一章 几何造型方法介绍和分类.ppt
- 西安电子科技大学:《操作系统 Operating Systems》课程教学资源(PPT课件讲稿)Chapter 02 进程和线程 Processes and Threads.ppt
- 《数字图像处理 Digital Image Processing》课程教学资源(PPT课件讲稿)第2章 图像的基本知识及运算.ppt
- 江苏海洋大学(淮海工学院):《Java面向对象程序设计》课程教学资源(PPT课件讲稿)第3章 Java 面向对象编程 3.1 面向对象软件开发概述.pptx
- 利用NetRiver实验系统实现IP协议交互和TCP协议交互.ppt
- 《软件工程简介》课程PPT教学课件(可行性研究、需求分析、总体设计、详细设计).ppt
- ARM Tachnology:Chapter 3 STM32 Clock and Configuration.ppt
- 《汇编语言程序设计》课程教学资源(PPT课件讲稿)循环与分支程序设计.ppt
- 香港科技大学:Latent Tree Models.pptx
- Network and System Security Risk Assessment(PPT讲稿)Introduction.ppt
- 复旦大学:Trapping in scale-free networks with hierarchical organization of modularity.pptx
- 电子工业出版社:《计算机网络》课程教学资源(第五版,PPT课件讲稿)第十章 下一代因特网.ppt
- 卷积码的概率译码(PPT讲稿).ppt
- 《ASP动态网页设计实用教程》教学资源(PPT课件讲稿)第8章 Web数据库基础.ppt
- Lower bound for sorting, radix sort.ppt
- 数据传送类指令(PPT讲稿).ppt
- 香港科技大学:Advanced Topics in NextGeneration Wireless Networks.ppt
- 复旦大学:《数据库基础与应用》课程PPT教学课件(Access案例教程)第1章 数据库基础知识.pptx
- Transport Layer Identification of P2P Traffic.ppt
- 上海交通大学:Basic Raster Graphics Algorithms for Drawing 2D Primitives.ppt
- 《编译原理》课程教学资源(PPT课件讲稿)第七章 中间代码生成.ppt
- 《MATLAB应用基础》课程教学资源(PPT课件讲稿)第4章 MATLAB的数值计算.ppt
- 安徽广播影视职业技术学院:《ASP动态网页设计实用教程》课程教学资源(PPT讲稿)第1章 ASP基础(贾海陶).ppt
- 白城师范学院:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第六章 关系数据理论.pptx
- 中国科学技术大学:《数据结构及其算法》课程电子教案(PPT课件讲稿)第三章 栈和队列.pps
- 北京大学SAS俱乐部:SAS软件会员培训(PPT讲稿)SAS编程语言入门.ppt
- 泛型编程 Generic Programming(PPT讲稿)Templates.ppt
- 西安电子科技大学:《Mobile Programming》课程PPT教学课件(Android Programming)Lecture 9 Service and Broadcast Receiver.pptx
- 计算机问题求解(PPT讲稿)算法在计算机科学中的地位(算法的效率).pptx
- 《计算机组装与维修》课程教学资源(PPT讲稿)第7章 显示器.ppt
- 《Java语言程序设计》课程教学资源(PPT课件讲稿)第四章 Applet及其应用.ppt
- 《编译原理实践》课程教学资源(PPT讲稿)词法分析程序的自动生成器LEX.ppt
- 华中科技大学:《面向对象程序设计》课程PPT教学课件(Visual C++ 编程)第2讲 Visual C++ 6.0开发环境.ppt
- 东南大学:《泛型编程 Generic Programming》课程教学资源(PPT课件讲稿)Chapter 14 Templates.ppt
- Coded Caching under Arbitrary Popularity Distributions.pptx
- Distributed Systems and Networking Programmin(SOAP – Introduction).ppt