- 1、本文档共53页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
检查由扫描器输出的单词符号序列是否符合该语言的文法——句子
扫描器
分析器
语义处理
单词符号
分析树
源程序
分析器的输入:Token序列
分析器的输出
分析树
出错处理
分析方法
自顶向下(递归下降、预测分析)
自底向上(算符优先、LR分析器)
第四章 语法分析
4.1自顶向下的分析方法
基本思想
寻找输入符号串最左推导
试图根据当前输入单词判断使用哪个产生式
基本过程
从根开始,按与最左推导相对应的顺序,构造输入符号串(Token)的分析树
1、重要概念
推导: αAβ?αγβ (依据:A→γ)
最左(Left-most)推导——最左分析
左句型
最左推导对应最右归约
最右(Right-most)推导——最右分析
规范推导、规范句型(右句型)
最右推导对应最左归约(规范归约)
自顶向下语法分析要解决的问题是?
候选式的确定
给定文法S→cAd A→ab|a
?句子cad是该文法定义语言的句子
S S
c A d c A d
a b a
产生式(候选式)的选择:当要进行关于某个语法变量的推导时,希望能够根据当前符号确定候选式。
带回溯的自顶向下分析思想
给定文法G[S]和输入串W,从S出发自顶向下构
造语法树:
若存在某条推导路径,使得S=* W,则W语法正确;
若尝试所有推导路径,都无法得到S=* W,则W语法错误.
不确定的自顶向下分析需作回溯,效率很低.
2.确定的自顶向下分析思想
基本思想:每一步根据当前输入符号可唯一确定某条规则用于推导
.由根向下构造语法树
.构造最左推导
.推导出的终结符是否与当前输入符匹配
确定的自顶向下分析思想
例1: S – pA [1] | qB[2]
A – cAd[3] | a [4]
输入串:W=pccadd
分析结论:W语法正确且分析过程的每一步都唯一
原因:本文法的非终结符(S,A)的候选都以
终结符开头,且两两不同.
S: p≠q
A: c≠a
例2: S – Ap [1] | Bq [2]
A – a [3] | cA [4]
B – b [5] | dB [6]
输入串:W=ccap
分析结论:W语法正确且分析过程的每一步都唯一
原因:本文法的A和B的候选以终结符开头,且两两不同. A: a≠c B: b≠d ;并且对于
S: FIRST(Ap)∩FIRST(Bq)
= {a,c} ∩ {b,d}=?
定义:FIRST(?)={a|? =* a?,a∈VT, ?, ?∈V*}
若? =* ε则规定ε∈FRIST(?)
例3: S – aA [1] | d [2]
A – bAS [3] | ? [4]
输入串:W=abd
分析结论:W语法正确且分析过程的每一步都唯一
原因:S: a≠d
A: {b} ∩ FOLLOW(A) = {b} ∩ {a,d}=?
定义: FOLLOW(A)={a?S =* ? A ?且a ∈ FRIST(?),? ∈V*, ?∈V+ }
我们希望:从左到右扫描输入串——寻找它的一个最左推导
对于 G 的每个非终结符 A 的任何两个不同的候选式 A→α|β
1) FIRST(α)∩FIRST(β)=φ
2) 如果β?*ε,则 FISRT(α)∩FOLLOW(A)=φ
——文法G是 LL(1) 的充要条件
第一个L : 从左到右扫描输入串
第二个L: 生成的是最左推导
1: 向前看一个输入符号
3.LL(1)文法的判别
1.对于A∈Vn,计算First(A)
2.对于A∈Vn,计算Follow(A)
3.对于A–?|β ,计算 FIRST(?) ∩FIRST(β) FIRST(β ) ∩ follow(A)(若? =* ?成立)
1.若A=* ? ,则? ∈ First(A)
2.若 A–B…,则
FIRST(A)= FIRST(A)∪(FIRST(B)-{ε})
若 A–a…,则
FIRST(A)= FIRST(A)∪{a}
3.若 A– ? B…及 A– ? a…,且
? =* ?,则类似于步骤2处理
求FIRST( A ) 的算法
FIRST(F)={(,id}
FIRST(T)=FIRST(F)={(,id}
FIRST(E)=FIRST(T)={(,id}
FIRST(E)={+,ε}
FIRST(T)={*,ε}
FIRST(+)=
您可能关注的文档
- 第四章吊桥精确计算讲述.ppt
- 第四章可编程控制器程序设计讲述.pptx
- 第四章变频调速讲述.ppt
- 第四章固体制剂1讲述.doc
- 第四章制造型企业主要经济业务的核算讲述.ppt
- 第四章图层及特性讲述.ppt
- 第四章反应器中的混合对反应的影响20161103讲述.ppt
- 第四章图形输入与交互技术讲述.ppt
- 第四章区域产业布局-讲述.pptx
- 装饰预算课件基础篇详解.pptx
- 金海中学2023-2024学年九年级上学期丘成桐少年班选拔物理试卷(答案).docx
- 2024-2030年中国燃料电池行业市场发展趋势与前景展望战略分析报告.docx
- 【天津卷】天津市北辰区2024-2025学年高三上学期11月期中考试(11.4-11.6)物理试卷含答案及解析.docx
- 2024-2030年中国燃料电池行业竞争格局与投资效益预测报告.docx
- 2024-2030年中国燃料电池鼓风机行业市场发展趋势与前景展望战略分析报告.docx
- 2024-2030年中国燃料硫含量检测仪行业市场发展趋势与前景展望战略分析报告.docx
- 2024-2030年中国燃气临时功率行业市场发展趋势与前景展望战略分析报告.docx
- 2024-2030年中国燃气供销行业最新度研究报告(1).docx
- 2024-2030年中国燃气供应系统(FGSS)行业经营现状及未来前景展望报告.docx
- 2024-2030年中国燃气供应系统(FGSS)行业经营现状及未来前景展望研究报告.docx
文档评论(0)