自下而上的语法分析和算符优先分析法

2013-05-06 18:36:51|  分类: 编译器 |  标签:编译器  算符优先分析法   |字号 订阅

自下而上的语法分析:(规约)

由叶节点到根节点,构造树

规范规约:最左规约(对应于最右推导)

例:

对于文法:

S→aABe

A→Ab|b

B→d

串abbde的规约过程:

对应的最右推导:

S→aABe→aAde→aAbde→abbde

存在的问题:遇到Ab的时候,有两种可能A→Ab和A→b

解决:

短语的概念:

如果S=> αAw=>αβw,则称β为相对于A的、句型αβw 的短语

直接短语

若A→ β为一产生式,则称β为相对于A的、句型αβw 的直接短语

例:

句型aAbde所包含的直接短语:

Ab、d、

句柄:

最左直接短语是句柄

例:句型aAbde所包含的句柄:Ab

素短语

①它首先是一个短语②至少含有一个终结符③除自身外,不再含有其它的素短语

最左素短语LPP ( leftmost Prime Phrase)

算符优先分析过程中归约的是最左素短语

例:关于文法E→E+T|T

T→T*F|F

F→(E)|id

对于句型F+F*id3

语法树是:

短语:F1,  F2,  id3,  F2*id3,

F1+F2*id3

直接短语: F1,  F2,  id3

句柄: F1

最左素短语: id3

用栈实现移进归约分析

关于文法:

E→E+T|T

T→T*F|F

F→(E)|id

对于串 id1*id2+id3 的分析

方法:对于符号栈中的非终结符,能规约就规约,不能规约就从输入串中移入符号

算符优先分析法:

  表示a和b的优先级相等

  表示a的优先级不如b

  表示a的优先级比b高

注:

算术关系“”与优先关系具有十分不同的性质。例如,a<·b并不一定意味着b·>a

例如:+ +不一定存在。 具体如:2+(3+5)

算符优先关系矩阵:

关于文法

的优先关系矩阵:

FIRSTVT和LASTVT集:

FIRSTVT(P)={a|P=>a…或P=>Qa…,

LASTVT(P)={a|P=> … a或P=>…aQ

上面文法的FIRSTVT和LASTVT集:

关于上面文法对于串id+id*id$的分析:

方法:如果 或者=就规约

2013-05-06 18:36:51|  分类: 编译器 |  标签:编译器  算符优先分析法   |字号 订阅

自下而上的语法分析:(规约)

由叶节点到根节点,构造树

规范规约:最左规约(对应于最右推导)

例:

对于文法:

S→aABe

A→Ab|b

B→d

串abbde的规约过程:

对应的最右推导:

S→aABe→aAde→aAbde→abbde

存在的问题:遇到Ab的时候,有两种可能A→Ab和A→b

解决:

短语的概念:

如果S=> αAw=>αβw,则称β为相对于A的、句型αβw 的短语

直接短语

若A→ β为一产生式,则称β为相对于A的、句型αβw 的直接短语

例:

句型aAbde所包含的直接短语:

Ab、d、

句柄:

最左直接短语是句柄

例:句型aAbde所包含的句柄:Ab

素短语

①它首先是一个短语②至少含有一个终结符③除自身外,不再含有其它的素短语

最左素短语LPP ( leftmost Prime Phrase)

算符优先分析过程中归约的是最左素短语

例:关于文法E→E+T|T

T→T*F|F

F→(E)|id

对于句型F+F*id3

语法树是:

短语:F1,  F2,  id3,  F2*id3,

F1+F2*id3

直接短语: F1,  F2,  id3

句柄: F1

最左素短语: id3

用栈实现移进归约分析

关于文法:

E→E+T|T

T→T*F|F

F→(E)|id

对于串 id1*id2+id3 的分析

方法:对于符号栈中的非终结符,能规约就规约,不能规约就从输入串中移入符号

算符优先分析法:

  表示a和b的优先级相等

  表示a的优先级不如b

  表示a的优先级比b高

注:

算术关系“”与优先关系具有十分不同的性质。例如,a<·b并不一定意味着b·>a

例如:+ +不一定存在。 具体如:2+(3+5)

算符优先关系矩阵:

关于文法

的优先关系矩阵:

FIRSTVT和LASTVT集:

FIRSTVT(P)={a|P=>a…或P=>Qa…,

LASTVT(P)={a|P=> … a或P=>…aQ

上面文法的FIRSTVT和LASTVT集:

关于上面文法对于串id+id*id$的分析:

方法:如果 或者=就规约


相关内容

  • 编译原理试题1
  • 课程测试试题(A卷) 一.填空 (30分) 1.将编译过程的各阶段划分为前端或后端和将编译程序分遍的主要参考因素都是( )和( )的特征. 2.( )是一种语法分析程序的自动构造工具,用它可以直接构造各种语言的语法分析器:而( )是一种词法分析程序的自动构造工具,用它可以直接构造各种语言的词法分析器 ...

  • 编译原理--教学大纲
  • <计算机编译原理>课程大纲 一.适用对象 本课程适用于计算机科学与技术以及相关专业的网络教育.成人教育学生. 二.课程性质 本课程是计算机科学与技术专业学生的专业基础课. 编译原理课程是计算机专业的一门主干课程.课程介绍程序设计语言编译程序构造的一般原理.基本设计方法.主要实现技术和一些 ...

  • 编译原理试题3
  • 课程测试试题(B卷) 一.判断(15分) 1.编译程序是一种语言翻译程序,它将源语言程序翻译成功能等价的目标语言程序. 2.所谓规则或产生式是指形如α→β或α::=β的(α,β)有序对,其中α是字母表V的正闭包元素,而β是字母表V的闭包元素. 3.设文法G =(VN,VT,P,S),若P中的每一个规 ...

  • 合肥工业大学编译原理课程设计
  • 关于<编译原理>课程设计的有关说明 <编译原理>是计算机专业的一门重要的专业课程,其中包含大量软件设计思想.大家通过课程设计,实现一些重要的算法,或设计一个完整的编译程序模型,能够进一步加深理解和掌握所学知识,对提高自己的软件设计水平具有十分重要的意义.大家在进行课程设计时, ...

  • 编译原理大作业(哈工大)
  • 编译原理大作业 论文 学号:1093710411 姓名:周国栋 哈尔滨工业大学软件学院 2012年1月 第一章 综述 第1章 综述 1.1 语法分析概述 语法分析是编译过程的一个逻辑阶段.语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语 1.2 分析方法 语法分析主要有两种:自顶向下的 ...

  • 张瑞编译原理实验报告
  • 黑龙江大学 "编译原理课程设计"读书报告 学院 年级 专业 学号 姓名 报告日期 成绩 软件学院 2012级 软件工程 20122515 张瑞 2014年6月28日 黑龙江大学计算机科学技术学院 黑龙江大学软件学院 概述 "编译原理"课程是计算机专业中一门重要 ...

  • 编译原理(选择.填空.简答)题
  • 一.是非题(下列各题,你认为正确的,请在题干的括号内打"√",错的打"×".每题1分, 共5分) 1.算符优先关系表不一定存在对应的优先函数. √ 2.数组元素的地址计算与数组的存储方式有关.√ 3.仅考虑一个基本块,不能确定一个赋值是否真是无用的.√ 4.每 ...

  • 编译原理论文
  • 编译原理心得体会 编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法,在计算机本科教学中占有十分重要的地位. 该课程理论性与实践性都很强,我们在学习 是普遍感到内容非常抽象,不易理解,内容多且繁琐,难以完整.全面地掌握编译原理的有关知识,更不用说灵活运用编译原理知识从事相 ...

  • 基于符号执行的软件静态测试研究
  • 第23卷第6期2013年6月 计算机技术与发展 COMPUTER TECHNOLOGY AND DEVELOPMENT Vol.23No.6June 2013 基于符号执行的软件静态测试研究 梁娟娟,刘久富,朱丹丹,陈 柯 (南京航空航天大学自动化学院,江苏南京210016) 摘 要:文中基于符号执 ...