LL分析法 LL分析法的分析器由一张预测分析表(LL(1)分析表),一个控制程序(表驱动程序)及一分析栈组成 输入

Slides:



Advertisements
Similar presentations
九族文化村兩天一夜遊 組員 : 傅淳鈺 9A0E0019 黃湘蓉 4A 陳誌龍 9A0K0026 潘韋舜 9A0B0951 何奇龍 4A
Advertisements

组长:倪运超 小组成员:徐悦、曹吕卿、孙浩、徐圣尧.  上海的历史 上海的历史  上海的历史 上海的历史  上海的文化 —— 建筑 上海的文化 —— 建筑  上海的文化 —— 美食 上海的文化 —— 美食  香港的历史 香港的历史  香港的历史 香港的历史  香港的文化 —— 建筑 香港的文化.
何仕仁 主任. 國立彰化高中數理資優班 柯承翰、柯宗賢、曾品祥 國立彰化高中數理實驗班 柯宗逸、辛百弘 國立彰化女中數理資優班 姚彤錦 國立彰化女中語文資優班 陳思穎 國立彰化女中數理實驗班 姚曉蓉.
一、 突出解析几何复习中的重点问题的通法通解 解析几何中的重点问题 一、 突出解析几何复习中的重点问题的通法通解 直线与圆锥曲线的位置关系 重点一.
說 劍 《莊子‧雜篇》─ 第 一 組 賴泊錞 謝孟儒 張維真 羅苡芸
第四章:长期股权投资 长期股权投资效果 1、控制:50%以上 有权决定对方财务和经营.
竹苗區100學年度擴大高中職 免試入學宣導說明會
報告書名:父母會傷人 班級:二技幼四甲 姓名:吳婉如 學號:1A2I0034 指導老師:高家斌
第十三章 中国的传统科学技术 中国古代的科技曾经长期处于世界领先地位,对人类文明的进步作出过重要贡献,并形成了富有特色的科技文化。在今天,源自中国古代科技文化的中医学仍然在现实生活中发挥着积极的作用。
選擇性逐字紀錄 臺北市立教育大學 張 德 銳.
判断推理,必须学会这些 主讲老师:小胡胡 2016年3月25日20:00 YY频道:
2011年10月31日是一个令人警醒的日子,世界在10月31日迎来第70亿人口。当日凌晨,成为象征性的全球第70亿名成员之一的婴儿在菲律宾降生。 ?
媽,我們真的不一樣 青少年期與中年期 老師: 趙品淳老師 組員: 胡珮玟4A1I0006 馬菀謙4A1I0040
电路和电流 考点知识梳理 中考典例精析 课堂达标训练 专题训练.
什么是工业? 采取自然物质资源,制造生产资料 、生活资料,或对农产品、半成品进行加工的生产事业。
第7课 一元二次方程 同德中学羊恒兵.
“淡雅浓香 中国风尚” 山东低度浓香白酒整合传播侧记
初级会计实务 第八章 产品成本核算 主讲人:杨菠.
第二章 文法和语言 2.1 文法的基本概念 符号和符号串 2.2 句型的分析 文法和语言的形式定义 推导与递归 文法的分类 语法树
情緒與壓力管理─背部舒緩 指導老師:彭易璟 第六組組員:會資三乙 499A0047 謝宛霖 會資三乙 499A0019 吳汶諭
雄伟的金字塔.
班級:二幼三甲 姓名:郭小瑄 、 詹淑評 學號:1A2I0029 、1A2I0025
中考阅读 复习备考交流 西安铁一中分校 向连吾.
第一单元 人在社会中生活 综合探究一 从地图上获取信息 第1课时 带着地图定向越野间.
必修Ⅰ 地球上的水 第三章.
指導老師:陳韻如 姓名:吳宜珊 學號:4A0I0911 班級:幼保二乙
岳阳市教学竞赛课件 勾股定理 授课者 赵真金.
第二部分 人文地理 第一单元 人口与城市 第5课 城市化过程和特点. 第二部分 人文地理 第一单元 人口与城市 第5课 城市化过程和特点.
中央广播电视大学开放教育 成本会计(补修)期末复习
二综防火设计分析.
人教版义务教育课程标准实验教科书 小学数学四年级上册第七单元《数学广角》 合理安排时间 248.
常用逻辑用语复习.
第2章 LR分 析 法 LR分析法是一种自下而上进行规范归约的语法分析方法,LR指“自左向右扫描和自下而上进行归约”。LR分析法比递归下降分析法、LL(1)分析法和算符优先分析法对文法的限制要少得多,对大多数用无二义的上下文无关文法描述的语言都可以用LR分析器予以识别,而且速度快,并能准确、及时地指出输入串的任何语法错误及出错位置。LR分析法的一个主要缺点是,若用手工构造分析器则工作量相当大,因此必须求助于自动产生LR分析器的产生器。
欢迎再次走进 思想政治的课堂.
傳統童玩遊戲創新 組別:第八組 班級:幼保二甲 組員: 4A0I0005柯舒涵 4A0I0011謝孟真
行為改變技術 班級:幼保二甲 組員: 4A10H081 蘇靖婷 4A1I0014 陳佳瑩 4A1I0023 尤秀惠 4A1I0074 邱乃晏 指導老師: 楊淑娥 老師.
第四章 时间序列的分析 本章教学目的:①了解从数量方面研究社会经济现象发展变化过程和发展趋势是统计分析的一种重要方法;②掌握时间数列编制的基本要求;③理解和掌握水平速度两方面指标的计算及运用④理解和掌握长期趋势分析和预测的方法。 本章教学重点:现象发展的水平指标和速度指标。 本章教学难点:现象变动的趋势分析。
“08高考化学学业水平(必修科目)测试的命题和教学对策研究”
中考语文积累 永宁县教研室 步正军 2015.9.
一、液压与气压传动的控制元件分类 1、按用途分类 根据控制元件在系统中的作用,可分为下几类: 方向控制阀 压力控制阀 3) 流量控制阀
第1节 光的干涉 (第2课时).
小学数学知识讲座 应用题.
第4章 种群和群落 第3节 群落的结构 自主学习案   合作探究案 课后练习案. 第4章 种群和群落 第3节 群落的结构 自主学习案   合作探究案 课后练习案.
苏教版小学数学六年级(下册) 认识正比例的量 执教者:朱勤.
倒装句之其他句式.
开 学 第 一 课 六年级3班.
编译原理与技术 课程总结.
第十三章 收入和利润.
Part5语法分析 授课:胡静.
第 22 课 孙中山的民主追求 1 .近代变法救国主张的失败教训: “师夷之长技以制 夷”“中体西用”、兴办洋务、变法维新等的失败,使孙中山
自上而下分析 4.4.
自上而下分析 4.4.
第四章 语法分析.
Part5语法分析 授课:胡静.
第五章 语法分析——自下而上分析 自上而下分析法(Top-down) 自下而上分析法(Bottom-up) 国防科技大学计算机系602教研室.
第三章 文法和语言 本章目的为语言的语法描述寻求工具,以便: 对源程序给出精确无二义的语法描述。(严谨、简洁、易读)
编译原理 第四章 语法分析—自上而下分析 编译原理.
第四章 自顶向下语法分析方法 语法分析的主要工作:是识别由词法分析给出的单词 序列是否是给定的正确句子(程序)。
大綱:整數的加法 整數的減法 蘇奕君 台灣數位學習科技股份有限公司
SLR(1)分析方法.
職業學校群科課程綱要規劃原理及修訂重點 報告人:鄭慶民
第四章 语法分析 南京大学计算机系 戴新宇
递归下降法 1 递归下降法语法分析原理 递归子程序方法/递归下降法 对每个非终极符按其产生式结构产生相应语法分析子程序。
美丽的旋转.
知识点5---向量组的最大无关组 1. 最大线性无关组的定义 2. 向量组秩的定义及求法 向量组的秩和对应矩阵秩的关系 3.
國立政治大學 96學年度學雜費調整 第二次公聽會
畢氏定理(百牛大祭)的故事 張美玲 製作 資料來源:探索數學的故事(凡異出版社).
幂的乘方.
编译原理 第一章 编译程序概述 第二章 PL/0编译程序的实现 第三章 文法和语言 第四章 词法分析 第五章 自顶向下语法分析方法
102年人事預算編列說明 邁向頂尖大學辦公室製作.
Presentation transcript:

LL分析法 LL分析法的分析器由一张预测分析表(LL(1)分析表),一个控制程序(表驱动程序)及一分析栈组成 输入 X Y Z # 分 析 栈 a1 a2 … ai … an # 输入 输入是待分析的符号串(单词流),以# 结尾。 分析表是一二维数组,M:VN(VT{#}) (P{ERR}), M[A,a]的值按下述规则确定:对于每个产生式A1|2|…|m (1)若aFIRST(i), 则置M[A,a]=“Ai”; (2)FIRST(i), aFOLLOW(A), 置M[A.a]=“Ai”, (3)除上述两种情况外,其它元素均填“ERR”. 分析表元素的含义:指明当前应用何产生式进行推导,或指明输入串出现错误

LL分析法实例 考虑如下(例如文法1) E T E’ E’ATE’ |  T FT ’ T’ MFT’ |  F (E) | i A + | - M * | /

-、构造FIRST集的算法 对于G中的每个文法符号X,为求FIRST(X),反复应用如下规则,直到集合不再增大: (1) if (XVT) { FIRST(X)={X};} (2)if (XVN) { if(XaP  aVT) aFIRST(X); if (XP) {FIRST(X);} } (3) if (XY1Y2…YkP) {if (Y1VN) {FIRST(Y1)-{} FIRST(X);} for(1 j k-1)if (YjVNFIRST(Yj)){FIRST(Yj)-{}FIRST(X);} if (for(1 j k):  FIRST(Yj)) {FIRST(X);} V*,=X1X2…Xn,求FIRST()类似于求XY1Y2…Yk,略.

构造FOLLOW集的算法 FOLLOW: VNVT{#},反复使用如下规则,直到不再增大: 1. # FOLLOW(S); 2. if (ABP) {FIRST()-{}FOLLOW(B);} 3. if ( (ABP)  ( AB  FIRST() ) ) {FOLLOW(A)FOLLOW(B);} 算法的证明: 对于1.,由定义直接得到; 对于2.,由于A是有用符号,则必存在含A的句型: S * A  B  Ba (a FIRST()); 对于3., 类似地, S * A  B[],显然, FIRST()FOLLOW(A),并且, FIRST()FOLLOW(B).证毕//

构造FIRST集和FOLLOW集的例子 我们以 (文法1)为例,计算相应的FIRST集和FOLLOW集. 1.求所有VN符的FIRST集.利用规则(2),有 FIRST(M)={*,/}, FIRST(A)={+,-} FIRST(F)={(,i}; 再利用规则(3),有FIRST(T’)=FIRST(M){}={*,/, }, FIRST(T)=FIRST(F)={(,i}, FIRST(E’)=FIRST(A) {}={+,-,} FIRST(E)=FIRST(T)={(,i} 2.求FOLLOW集 (1)由规则(1),#FOLLOW(E),再由产生式F(E), ) FOLLOW(E), 从而,FOLLOW(E)={),#} (2)由规则(3)及产生式ETE’可知FOLLOW(E)FOLLOW(E’),即有 FOLLOW(E’)={),#}

求FIRST,FOLLOW集例子(续) (3)由规则(2)及产生式E’ATE’有 FIRST(E’)-{}FOLLOW(T);再由规则(3)及ETE’和E’*有 FOLLOW(E)FOLLOW(T) 即FOLLOW(T)={+,-}{),#}={+,-,),#} (4)由规则(3)有TFT’有FOLLOW(T)FOLLOW(T’),即FOLLOW(T’)={+,-,),#} (5)由规则(2)及T’MFT’,有 FIRST(T’)-{} FOLLOW(F),再由规则(3)及T’MFT’和T’*,有FOLLOW(T’) FOLLOW(F),从而, FOLLOW(F)={*, /}{+,-,),#}={+,-,*,/,),#} (6)由规则(2)及E’ATE’,T’ MFT’ ,有 FIRST(T)FOLLOW(A), FIRST(F) FOLLOW(M),故有 FOLLOW(A)={(,i}, FOLLOW(M)={(,i}.

FIRST集和FOLLOW集

二、LL分析表的构造 造表的算法 在AVN所在行,aVT所在列, M[A,a]的填写方法如下: 对已给的LL(1)文法,在得到各文法符号的FIRST集和FOLLOW集之后,就可容易地构造出LL(1)分析表 (也称预测分析表). 在实际的表存储结构中,矩阵中每个元素并非真正存储的是产生式,而是其右部的逆序(也可以是产生式序号),这样便于分析时使用,并节省了内存空间. 造表的算法 在AVN所在行,aVT所在列, M[A,a]的填写方法如下: (1) if ( AP and aFIRST() )M[A,a] =‘A’; (2) if ( * ( FIRST()) and aFOLLOW(A) ) M[A,a]=‘A’; (3) Otherwise, M[A,a]=‘ERR’.

LL(1)分析表

三、分析器的工作原理 分析器对输入串的分析在控制程序的控制下进行,步骤如下: 1.初始化.首先将#及开始符S压入栈,各指针置初值.此时,格局为 # S a1 a2 … … an # # X1 X2 …Xm-1 Xm ai ai+1 … … an #c 2.设在分析的某时刻,的分析格局为 此时,根据当前栈顶符号Xm的不同情况,分别作如下处理: (1) XmVT,且Xm=ai,则匹配,将Xm 顶出栈,输入指针++;否则(Xmai),出错; (2) XmVN 查表M[Xm,ai],若M[Xm,ai]=“ERR”,则出错;若M[Xm,ai]= “Xm Y1Y2…Yk” ,则将Xm 出栈, Y1Y2…Yk 按逆序压入栈,得到格局 # X1 X2 …Xm-1YkYk-1...Y1 ai ai+1 … … an # (3)若Xm=ai=#,则表明输入串已完全得到匹配,分析成功,结束.

对i+i*i进行预测分析的过程

四 某些非LL(1)文法的改造 对于LL(1)文法而言,我们总能构造出相应的预测分析表,且表中决不会含有多重定义的元素. 然而对于非LL(1)文法,它们不满足LL(1)文法的条件,尽管仍可为其建立预测分析表,但表中必然会出现多重定义的元素(why?) 例如,文法G[S]: SabB ASC|BAA| BAbA CB| FIRST(S)={a} FIRST(A)={a,b, } FIRST(B)={a,b} FIRST(C)={a,b,c} FOLLOW(S)= FOLLOW(A)=FOLLOW(B)= FOLLOW(C)= {a,b,c,#}, 由造表规则,有 M[A,a]={ASC,A}, 同理, M[B,b]={ABAA, A }. 可见非LL(1)文法所造之表中,必有冲突元素.事实上, 是否有冲突元素也是判别一文法是否是LL(1)文法的方法之一. 对于某些非LL(1)文法而言,通过消除左递归,反复提取左因子等方法,有时是可以将其改造成LL(1)文法的.

某些非LL(1)文法的改造(续) 提取左因子 当文法中含有形如 A1|2|…|m 的产生式时,可将其改写为: AA’ A’1|2|…|m 若诸候选式1,2,…,m 中的一部分仍含有左因子 ,则再进行提取工作,如此等等.这样,就可能得到一个LL(1)文法. 例如, EE+T | T T(E) | a(E) | a 经改造后可得文法 ETE’ E’+TE’|  TaT’ | (E) T’ (E) |  这是一个LL(1)文法. 应当指出,并非所有的文法都能改造为LL(1)文法. 例如,文法G[S]: SAU | BR AaAU | b BaBR | b Uc Rd 文法中S的两个候选式AU及BR的FIRST集相交,G是非LL(1)的.为提取左因子,先将S产生式中的A,B用其右部替换,得: SaAUU|bU|aBRR|bR, 经提取左因子,得 S aS’|bS” S’AUU|BRR S” U|R A… 显然它仍不是LL(1)文法

关于LL(1)的一些结论 能由LL(1)文法产生的语言称为LL(1)语言.它们已被证明具有许多重要特性, 主要有: (5) CFL是否是LL(1)语言是不可判定的; (6) 非LL(1)语言是存在的. 若在分析过程中,每步向前扫描k个符号来确定选用的产生式,此分析方法称为是LL(k)分析.此法极少用,故从略.