第6章 自底向上优先分析法 自底向上优先分析概述 简单优先分析 算符优先分析 返回目录.

Slides:



Advertisements
Similar presentations
专题复习 --- 走进名著 亲近经典 读完《鲁滨孙漂流记》这本精彩的小说 后,一个高大的形象时时浮现在我的眼 前,他就是勇敢的探险家、航海家鲁滨 孙。他凭着顽强的毅力,永不放弃的精 神,实现了自己航海的梦想。 我仿佛看到轮船甲板上站着这样的一 个人:他放弃了富裕而又舒适的生活, 厌恶那庸庸碌碌的人生,从而开始了一.
Advertisements

林園高中適性入學 高雄區免試入學 及 特色招生介紹 1. 國中學生 國中教育會考 1 ( 每年五月 ) 特色招生 術科考試 五專 免試入學 ( 每年六月 ) 特色招生 甄選入學 高中高職 免試入學 擇一報到 林園高中適性入學  入學管道流程 2.
实数与代数式是初中数学中重要的基础知识, 是中考的必考内容.这部分知识散布于多个章节之中, 知识点琐碎,但概念性强,在中考试卷中多以填空题、 选择题、化简、探索或求值的形式出现.在复习中, 一定要加强对各个概念、性质和公式的辨析和理 解.注重让学生在实际背景中理解基本的数量关系和 变化规律,注重使学生经历从实际问题中建立数学模.
認識食品標示 東吳大學衛生保健組製作.
第10讲 中共领导的民主革命与国共关系 中国共产党领导的民主革命斗争,就是中共领导的新民主主义革命的历程。1921年到1949年,中国共产党领导全国人民,把马克思主义普遍真理同中国革命的具体实践及国情相结合,制定民主革命纲领,建立革命统一战线,走农村包围城市的道路。经过工农武装割据、抗日战争和人民解放战争,推翻了帝国主义、封建主义和官僚资本主义的反动统治,取得了新民主主义革命的伟大胜利。复习时注意中共在各个时期重大会议及国共关系的复习。
說 劍 《莊子‧雜篇》─ 第 一 組 賴泊錞 謝孟儒 張維真 羅苡芸
人力资源管理资格考证(四级) 总体情况说明.
控制方长投下的子公司,需要编制合并报表的演示思路
第八章 互换的运用.
第六课 遗传与变异 第六课时 性别决定和伴性遗传.
第一课 爱在屋檐下 第一节 我知我.
7.4 用矩阵初等行变换 解线性方程组 主要内容: 一.矩阵的行初等变换 二.用行初等变换求逆矩阵 三.用矩阵法求线性方程组.
颞下颌关节常见病.
第一部分 微专题强化练.
判断推理,必须学会这些 主讲老师:小胡胡 2016年3月25日20:00 YY频道:
致理科技大學保險金融管理系 實習月開幕暨頒獎典禮
欧洲西部 要点·疑点·考点 欧洲西部 1. 自然环境 位置:欧洲西半部,北临北冰洋,西临大西洋,南临地中海
第二单元 生产、劳动与经营.
100年學測題目分析.
結腸直腸腫瘤的認知.
2014年初中生物学业水平抽测分析.
第二章 文法和语言 2.1 文法的基本概念 符号和符号串 2.2 句型的分析 文法和语言的形式定义 推导与递归 文法的分类 语法树
第一课 生活在人民当家作主的国家 人民民主专政: 本质是人民当家作主.
现代企业高级职业经理人系列课程 管人理事与理人管事 —企业高效人力资源管理 主讲人:李青刚 副教授.
郭詩韻老師 (浸信會呂明才小學音樂科科主任)
巧用叠词,妙趣横生.
2016届高三期初调研 分析 徐国民
高考新改革与过渡 怀化市铁路第一中学 向重新.
第一单元 人在社会中生活 综合探究一 从地图上获取信息 第1课时 带着地图定向越野间.
忠孝國小自立午餐老師的叮嚀 教師指導手冊.
第二部分 人文地理 第一单元 人口与城市 第5课 城市化过程和特点. 第二部分 人文地理 第一单元 人口与城市 第5课 城市化过程和特点.
104年振聲國中 志願選填個別序位 說明會 104年06月08日 輔導室關心您.
华东师范大学 软件工程硕士答辩名单 时间:2016年5月14日、15日.
第一课 神奇的货币 第二框 信用工具和外汇 1-2 信用工具和外汇.
第2章 LR分 析 法 LR分析法是一种自下而上进行规范归约的语法分析方法,LR指“自左向右扫描和自下而上进行归约”。LR分析法比递归下降分析法、LL(1)分析法和算符优先分析法对文法的限制要少得多,对大多数用无二义的上下文无关文法描述的语言都可以用LR分析器予以识别,而且速度快,并能准确、及时地指出输入串的任何语法错误及出错位置。LR分析法的一个主要缺点是,若用手工构造分析器则工作量相当大,因此必须求助于自动产生LR分析器的产生器。
第三节 词类(下) 虚词概说 一、什么是虚词 二、虚词的共同特点: 三、学习和研究方法: 虚词是不能单独充当句子成分,只有语法意义的词。
了解太平天国运动的主要史实,认识农民起义在民主革命时期的作用与局限性。
2. 戰後的經濟重建與復興 A. 經濟重建的步驟與措施 1.
第16课 抗日战争.
“08高考化学学业水平(必修科目)测试的命题和教学对策研究”
第1节 光的干涉 (第2课时).
课标教材下教研工作的 实践与思考 山东临沂市教育科学研究中心 郭允远.
第 十一 课  寻觅社会的真谛.
复习: 诚实内涵 诚实二个表现 诚实意义 1、对自己要诚实2、对他人诚恳实在.
文化生活第三单元 中华文化和民族精神.
Part5语法分析 授课:胡静.
你一定要認識的數學家.
如何寫工程計畫書 臺北市童軍會考驗委員會 高級考驗營 版.
語法與修辭 骨&肉 老師:歐秀慧.
数字电子技术 Digital Electronics Technology
Part5语法分析 授课:胡静.
第五章 语法分析——自下而上分析 自上而下分析法(Top-down) 自下而上分析法(Bottom-up) 国防科技大学计算机系602教研室.
第三课时 匀变速直线运动的位移与时 间的关系
语法分析 本章内容 语法分析器:把词法分析生成的词法单元流翻译成语法分析树(parse tree)
病例对照研究设计 选两组对象,一组是患病者(条件组),另一组是非患病者(对照组),与条件组有着大体相同的身体状况
《2015考试说明》新增考点:“江苏省地级市名称”简析
第五章 自底向上分析方法 LR(0)分析法 1 LR(K)分析法 第一个L表示:相应的语法分析将按自左至右的顺序扫描输入符号串;
第四章 自顶向下语法分析方法 语法分析的主要工作:是识别由词法分析给出的单词 序列是否是给定的正确句子(程序)。
第二部分 集合论 第六章 集合代数 主要内容 集合的基本概念 属于、包含 幂集、空集 文氏图等 集合的基本运算 并、交、补、差等 集合恒等式
107上五年級〈社會科〉學校日簡報 教師個人檔案 ★民國77年8月開始任職本校 ★在本校擔任自然科任1年、導師8年、
第六章 静定桁架的内力分析.
第五章 自底向上分析方法 LR(0)分析法 1 LR(K)分析法 第一个L表示:相应的语法分析将按自左至右的顺序扫描输入符号串;
百萬塔冷通 教友年 百萬塔冷通問答遊戲.
分配律 ~ 觀念 15 × 15 × + 15 × 乘法公式 蘇德宙 老師 台灣數位學習科技股份有限公司
3 平抛运动 四川省绵阳第一中学 杨绅文.
序偶及直角坐標系統.
國立政治大學 96學年度學雜費調整 第二次公聽會
编译原理 第一章 编译程序概述 第二章 PL/0编译程序的实现 第三章 文法和语言 第四章 词法分析 第五章 自顶向下语法分析方法
第二章 柯西不等式与排序不等式及其应用.
活氧精萃晶顏露.
Presentation transcript:

第6章 自底向上优先分析法 自底向上优先分析概述 简单优先分析 算符优先分析 返回目录

自底向上分析方法 自底向上分析方法,也称移进-归约分析法。 实现思想: 对输入符号串自左向右进行扫描,并将输入符逐个移入一个后进先出栈中,边移入边分析,一旦栈顶符号串形成某个句型的句柄时,(该句型对应某产生式的右部),就用该产生式的左部非终结符代替相应右部的文法符号串,这称为归约。 重复这一过程直到归约到栈中只剩文法的开始符号时则为分析成功,也就确认输入串是文法的句子。

A A S B a b b c d e S  aAcBe aAcde aAbcde abbcde 步骤 符号栈 输入符号串 动作 文法G[S]: (1) S → aAcBe (2) A → b (3) A → Ab (4) B → d 1) # abbcde# 移进 2) #a bbcde# 移进 A 3) #ab bcde# 归约(A→b) 4) #aA bcde# 移进 A 5) #aAb cde# 归约(A→Ab) 6) #aA cde# 移进 S 10) #aAcBe # 归约(S→aAcBe) 7) #aAc de# 移进 B 8) # aAcd e# 归约(B→d) 9) #aAcB e# 移进 11) #S # 接受 对输入串abbcde#的移进-规约分析过程 分析符号串abbcde是否为G[S]的句子? a b b c d e S  aAcBe aAcde aAbcde abbcde

算法应考虑的问题 算法是否能够终止? 算法是否快速? 算法是否能够处理所有的情况? 在每一步中如何选择子串进行归约?

自下而上语法分析的策略:移进-规约分析。 移进就是将一个终结符推进栈。 归约就是将0个或多个符号从栈中弹出,根据产生式将一个非终结符压入栈。 移进-归约过程是自顶向下最右推导的逆过程(规范归约)。

优先分析法 简单优先分析法 对一个文法按一定原则求出该文法所有符号(终结符和非终结符)之间的优先关系,按照这种关系确定归约过程中的句柄,它的归约实际上是一种规范归约。 算符优先分析法 只规定算符(终结符)之间的优先关系。找到句柄就归约,不是规范归约。

简单优先分析法 按照文法符号(包括终结符和非终结符) 的优先关系确定句柄。

文法G[S]: (1) S → bAb (2) A → (B|a (3) B → Aa) 步骤 符号栈 输入符号串 动作 1) # b(aa)b# #<b,移进 2) #b (aa)b# b<(,移进 3) #b( aa)b# (<a,移进 4) #b(a a)b# a>a,归约A→a 5) #b(A a)b# A=a,移进 6) #b(Aa )b# a=),移进 7) #b(Aa) b# )>b,归约B→Aa) 8) #b(B b# B>b,归约A→(B 9) #bA b# A=b,移进 10) #bAb # b>#,归约S→bAb 11) #S # 接受 简单优先关系矩阵 对输入串b(aa)#的简单优先分析过程

优先关系 优先关系 X=Y  文法G中存在产生式A→...XY... X<Y 文法G中存在产生式A→...XB..., 且B Y... X>Y 文法G中存在产生式A→...BD..., 且B ...X,D Y... 如何确定两个文法符号之间的优先关系? 返回调用

简单优先文法的定义 满足以下条件的文法是简单优先文法 (1)在文法符号集V中,任意两个符号之间最多只有一种优先关系成立。 (2)在文法中任意两个产生式没有相同的右部。 (3)不含空产生式。

简单优先分析法 根据已知优先文法构造相应优先关系矩阵,并将文法的产生式保存,设置符号栈S,算法步骤如下: 将输入符号串a1a2a3...an#依次逐个存入符号栈S中,直到遇到栈顶符号ai的优先性>下一个待输入符号aj时为止。 栈顶当前符号ai为句柄尾,由此向左在栈中找句柄的头符号ak,即找到ak-1<ak为止。 由句柄ak...ai在文法的产生式中查找右部为ak...ai的产生式,若找到则用相应左部代替句柄,若找不到则为出错,这时可断定输入串不是该文法的句子。 重复上述三步,直到归约完输入符号串,栈中只剩文法的开始符号为止。

如何确定优先关系? 1.求=关系: 由(1):b=A A=b 由(2):(=B 由(3):A=a a=) 2.求<关系: 3.求>关系: 由(1):B>b a>b )>b 由(3):B>a a>a )>a 4.#<所有符号,所有符号># 文法G[S]: (1) S → bAb (2) A → (B|a (3) B → Aa) 查看关系定义

算符优先分析法 某些文法具有“算符”特性 表达式运算符(优先级、结合性) 人为地规定其算符的优先顺序,即给出优先级别和同一级别的结合性 只考虑算符之间的优先关系来确定句柄

文法G[E]:E→E+E|E-E|E*E|E/E|EE|(E)|i 步骤 符号栈 输入符号串 动作 1) # i+i*i# #<i,移进 2) #i +i*i# #<i>+,规约 3) #E +i*i# #<+,移进 4) #E+ i*i# +<i,移进 5) #E+i *i# +<i>*,规约 6) #E+E *i# +<*,移进 7) #E+E* i# *<i,移进 8) #E+E*i # *<i>#,规约 9) #E+E*E # +<*>#,规约 10) #E+E # #<+>#,规约 11) #E # 接受 算符优先关系表 对输入串i+i*i的算符优先分析过程

如何确定算符优先关系? 文法G[E]:E→E+E|E-E|E*E|E/E|EE|(E)|i i的优先级最高 优先级次于i,右结合 *和/优先级次之,左结合 +和-优先级最低,左结合 括号‘(’,‘)’的优先级大于括号外的运算符,小于括号内的运算符,内括号的优先性大于外括号 #的优先性低于与其相邻的算符 算符优先关系表

算符文法的定义 定义 如果不含空产生式的上下文无关文法 G 中没有形如 U…VW…的产生式,其中V,W∈VN则称G 为算符文法(OG)。 性质1:在算符文法中任何句型都不包含两个相邻的非终结符.(数学归纳法) 性质2:如 Vx 或 xV 出现在算符文法的句型  中,其中V∈VN,x∈VT, 则  中任何含 x 的短语必含有V.(反证法)

算符优先关系的定义 在OG中 定义 (算符优先关系) x = y G中有形如.U…xy…或U …xVy..的产生式。 x < y G中有形如.U  …xW…的产生式,而 W y….或W Vy… x>y G中有形如.U  …Wy…的产生式,而 W …x或W … xV 规定 若 S x…或S Vx… 则 # < x 若S …x或S …xV 则 x > #

算符优先文法的定义 在 OG文法 G 中,若任意两个终结符间至多有一种算符优先关系存在,则称G 为算符优先文法(OPG)。 注意:允许b>c,c>b;不允许b>c,b<c,b=c 结论: 算符优先文法是无二义的。

算符优先关系表的构造 由定义直接构造 由关系图法构造算符优先关系表

首先引入两个概念 FIRSTVT(B)={b|B b…或B Cb...}对于非终结符B,其往下推导所可能出现的首个算符。 LASTVT(B)={a|B … a或B ... aC}对于非终结符B,其往下推导所可能出现的最后一个算符。

如何计算算符优先关系 1) ‘=‘关系 直接看产生式的右部,若出现了 A →…ab…或A →…aBb,则a=b。 2)’<‘关系 求出每个非终结符B的FIRSTVT(B), 若A→…aB…,则b∈FIRSTVT(B),则a<b。 3)’>’关系 求出每个非终结符B的LASTVT(B), 若A→…Bb…,则a∈LASTVT(B),则a>b。

FIRSTVT(E’)={#} FIRSTVT(E)={+,. ,,(,i} FIRSTVT(T)={ FIRSTVT(E’)={#} FIRSTVT(E)={+,*,,(,i} FIRSTVT(T)={*,,(,i} FIRSTVT(F)={,(,i} FIRSTVT(P)={(,i} LASTVT(E’)={#} LASTVT(E)={+,*,,),i} LASTVT(T)={*,,),i} LASTVT(F)={,),i} LASTVT(P)={),i} 1)‘=’关系 由产生式(0)和(6),得 #=#,(=) 2)‘<’关系 找形如:A→…aB…的产生式 #E:则#<FIRSTVT(E) +T: 则+<FIRSTVT(T) *F: 则*<FIRSTVT(F) F:则 <FIRSTVT(F) (E: 则 (<FIRSTVT(E) 文法G[E]: (0) E’→#E# (1) E→E+T (2) E→T (3) T→T*F (4) T→F (5) F→PF|P (6) P→(E) (7) P→i 3)‘>’关系 找形如:A→…Bb…的产生式 E# ,则 LASTVT(E)># E+ ,则 LASTVT(E)>+ T* ,则 LASTVT(T)>* P ,则 LASTVT(P)> E) ,则 LASTVT(E)>)

算符优先分析算法 归约过程中,只考虑终结符之间的优先关系来确定句柄,而与非终结符无关。这样去掉了单非终结符的归约,所以用算符优先分析法的规约过程与规范归约是不同的,P110. 为解决在算符优先分析过程中如何寻找句柄,引进最左素短语的概念。

最左素短语 算符文法的任一句型有如下形式: #N1a1N2a2......NnanNn+1#,若Niai......NjajNj+1为句柄,则有 ai-1<ai=ai=...= aj-1 = aj> ai+1 对于算符优先文法,如果aNb(或ab)出现在句型r中 若a<b,则在r中必含有b而不含a的短语存在。 若a>b,则在r中必含有a而不含b的短语存在。 若a=b,则在r中含有a的短语必含有b,反之亦然。 定义 cfg G 的句型的素短语是一个短语,它至少包含一个终结符,且除自身外不再包含其他素短语。处于句型最左边的素短语为最左素短语。

句型#T+T*F+i# 其短语有: T+T*F+i T+T*F T T*F i E 文法G[E]: (1) E→E+T (2) E→T (3) T→T*F (4) T→F (5) F→PF|P (6) P→(E) (7) P→i 句型#T+T*F+i# 其短语有: T+T*F+i T+T*F T T*F i E E + T E + T F T T * F i 最左素短语为:T*F N 句型#N+N*N+i#的归约过程 N + N N + N i N * N

优先函数 优先函数比优先矩阵节省空间 当发生错误时不能准确指出出错位置 如:i+ii*i#,两个相邻i不存在优先关系,但优先函数存在,会归约成N+NN...而发现错误。 优先函数的构造 由定义直接构造 用关系图构造优先函数

算符优先分析法的局限性 一般语言的方法很难满足算符优先文法的条件。 很难避免把错误的句子得到正确的归约。