版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章:语法分析
LL(1)语法分析1.LL(1)语法分析原理基本思想从左到右扫描,按最左推导的方式推出输入流定义:
对于文法G中任一非终极符A,其任意两个产生式A和A,都要满足下面条件:
Predict(A)Predict(A)=满足这一条件的文法称为LL(1)文法。S
*lm
(1)不确定的方法(2)确定的方法LL(1)是LL(k)的特例,其中的k则表示向前看k个符号.LL(1)方法和递归下降法属于同一级别的自顶向下分析法.用“LL(1)”命名该分析方法的原因:第一个L表示:相应的语法分析将按自左至右的顺序扫描输入符号串;第二个L表示:在分析过程中产生一个句子的最左推导;括号中的“1”,则表示在分析过程中,每进行一步推导,只要查看一个输入符号便能确定当前所应选用的产生式.1.LL(1)语法分析原理1.LL(1)语法分析原理语法分析的动作替换当分析栈的第一个符号是VN时,就要用规则进行推导,用规则右部将其替换匹配分析栈第一个符号是VT时,与输入流中的第一个符号进行匹配成功出错、失败
ace#匹配
aBe#
Be#
ce#成功
ce#
e#e#
#
#对给定的终极符串ace,分析过程:Z#
ace#替换匹配
Ke#
e#替换匹配例G[z]: [1]Z
aBe
[2]ZBd
[3]BbB [4]BcK [5]Dd
[6]Kε
{b,c}{b}{d}{c}{d,e}{a}cKe#替换
acb#匹配
aBe#
Be#
cb#替换
cb#对给定的终极符串acb,分析过程:Z#
acb#替换匹配
Ke#b#出错例G[z]: [1]Z
aBe
[2]ZBd
[3]BbB [4]BcK [5]Dd
[6]Kε
{b,c}{b}{d}{c}{d,e}{a}cKe#之前知识:DFA接受的串abdc……输入带读头有限状态控制器之前知识:自动机的实现直接转换法每个状态对应一个带标号的switch语句转向边对应goto语句状态转换矩阵自动机存储在矩阵中,状态比较多,每次都去查表,跳转。在逻辑上,一个LL(1)分析器由输入流、LL(1)分析表、符号栈和驱动程序组成:输入流:待分析的符号串.符号栈:存放分析过程中的文法符号串.LL(1)分析表:用来表示相应文法的全部信息的一个矩阵(或二维数组).驱动程序:语法分析程序.1.LL(1)语法分析原理1.LL(1)语法分析原理StackInput#cba驱动程序栈为空情形的处理X
VT情形的处理X
VN情形的处理X1X2...Xn#LL[1]分析表语法无关~不用改变!比自动机多了一个部分,因此二型文法比三型文法表达能力更强!语法相关~需要更新!LL(1)分析表的定义:T:VN
VT→P
{Error} T(A,t)=A→
若t
Predict(A→
) T(A,t)=Error否则
其中P表示所有产生式的集合.2.1LL(1)分析表的构造LL(1)分析表的构造方法:对文法的每一个产生式求其predict集;对文法的每一个产生式A→
进行如下处理:若:Predict(A→
)=(a1,a2,….,an);
则令:
T(A,ai)=A→
其中:i=1,2,3…,n
LL(1)分析表的其它元素为error.2.1LL(1)分析表的构造2.2求LL(1)分析表的实例文法G:
ETE’[1]E’+TE’[2]|[3]TFT’[4]T’*FT’[5]|[6]Fi[7]|(E)[8]例:文法G:
ETE’[1]E’+TE’[2]|
[3]TFT’[4]T’*FT’[5]|[6]Fi[7]|(E)[8]EE+E|E*E|(E)|i去二义性EE+T|TTT+F|FF(E)|i消除左递归2.2求LL(1)分析表的实例Predict([1])=first(TE’)={i,(}Predict([2])=first(+TE’)={+}Predict([3])=follow(E’)={),#}Predict([4])=first(FT’)={i,(}Predict([5])=first(*FT’)={*}Predict([6])=follow(T’)={+,),#}Predict([7])=first(i)={i}Predict([8])=first((E))={(}i+*()#E11E’233T44T’6566F78分析示例1Predict([1])={i,(}Predict([2])={+}Predict([3])={),#}Predict([4])={i,(}
ETE’[1]E’+TE’[2]
|[3]TFT’[4]T’
*FT’[5]
|[6]Fi[7]
|(E)[8]Predict([5])={*}Predict([6]={+,),#}Predict([7])={i}Predict([8])={(}分析示例23.1驱动程序的设计分析的初始格局(S#,a1...an#)一般格局(X1...Xm#,ai...an#)设存在格局为(X1...Xm#,a1...an#)若X1
VT&X1=a1则有(X2...Xm#,a2...an#)若X1
VN则查表,若T(X1,a1)=X1
,格局为(
X2...Xm#,a1...an#),若T(X1,a1)=error,则报错。若格局为(#,#),则分析成功其他情况报错[1]初始化:Stack:=empty;Push(#);Push(S);即由符号栈和输入流构成的初始格局为:(#S, a1a2...an#) [2] 读第一个输入符:Read(a); [3]若当前格局是(#,#),则成功结束;否则转下一步; [4]设当前格局为(.....X,a.....),则:
若X
VT&X=a,则:{Pop(1);Read(a);goto[3]}
若X
VT&X
a,则Error;
若X
VN,则:
ifT(X,a)=X→Y1Y2........Yn
then{Pop(1);Push(Yn,.....,Y1);goto[3]}elseError
3.2驱动程序的实现逆序压栈!!!3.2驱动程序的实现StackInput#eca驱动程序栈为空情形的处理X
VT情形的处理X
VN情形的处理例G[z]:[1]Z
aBe
[2]ZBd
[3]BbB[4]BcK[5]Dd
[6]Kε
ZeBa替换匹配替换Kc替换#成功文法G:
ETE’[1]E’+TE’[2]|[3]TFT’[4]T’*FT’[5]|[6]Fi[7]|(E)[8]符号串i+i*i#的LL[1]分析过程:分析栈
输入流
矩阵元素#Ei+i*i#
LL[E,i]=[1]#E’Ti+i*i#
LL[T,i]=[4]#E’T’Fi+i*i#LL[F,i]=[7]#E’T’ii+i*i#Match#E’T’+i*i#LL[T’,+]=[6]#E’+i*i#LL[E’,+]=[2]#E’T++i*i#Match#E’Ti*i#LL[T,i]=[4]#E’T’Fi*i#LL[F,i]=[7]#E’T’ii*i#Match#E’T’*i#LL[T’,*]=[5]#E’T’F**i#Match#E’T’Fi#
LL[F,i]=[7]#E’T’ii#
Match#E’T’#LL[T’,#]=[6]#E’#LL[E’,#]=[3]##ok分析表
ETE’[1]E’+TE’[2]
|[3]TFT’[4]T’
*FT’[5]
|[6]Fi[7]
|(E)[8]分析栈
输入流
矩阵元素#Ei+i*+i#LL[E,i]=[1]#E’Ti+i*+i#LL[T,i]=[4]#E’T’Fi+i*+i#LL[F,i]=[7]#E’T’ii+i*+i#Match#E’T’+i*+i#LL[T’,+]=[6]#E’+i*+i#LL[E’,+]=[2]#E’T++i*+i#Match#E’Ti*+i#LL[T,i]=[4]#E’T’Fi*+i#
LL[F,i]=[7]#E’T’ii*+i#Match#E’T’*+i#LL[T’,*]=[5]#
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年输血技术中级备考高频试题解析
- 2026年口腔入门基础知识
- 2026年企业级区块链应用测试题库
- 2026年常见问题解决方案
- 2026年药店入门基础知识
- 2026年企业安全运营风险防范知识
- Hoagland-Nutrient-Solution-Phosphorus-Free-Calcium-nitrate-Free-生命科学试剂-MCE
- 初中历史教学中AI历史事件时间轴动态构建与关联分析课题报告教学研究课题报告
- 2026年课堂教学问题解决方法
- 2026年会计电算化基础测试题集
- TCQAE信息化项目造价及服务清单指南(-2024)
- 2026年企业破产重整法律实务培训课件与债务化解方案
- ACRAAAAI共识解读:造影剂超敏反应管理指南课件
- 2025年新疆时事政治题库及答案
- 硫酸卸货安全协议书
- 人工智能辅助下的高血压个体化治疗方案
- 移动式脚手架培训课件
- 核废液高级氧化技术-洞察与解读
- 2026年一级建造师一建机电案例分析考前重点知识必背十页纸
- 十年(2016-2025)高考数学真题分类汇编16三角函数与解三角形解答题综合(六大考点65题)(解析版)
- 建设项目竣工验收汇报
评论
0/150
提交评论