- 1、本文档共99页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章语法分析_自上而下分析
本章在编译程序中的地位;上下文无关文法的定义:
一个上下文无关文法G是一个四元式
G=(VT,VN,S,P),其中
VT:终结符集合(非空)
VN:非终结符集合(非空),且VT ? VN=?
S:文法的开始符号,S?VN
P:产生式集合(有限),每个产生式形式为
P??, P?VN, ? ? (VT ? VN)*
开始符S至少必须在某个产生式的左部出现一次。;例 定义只含+,*的算术表达式的文法
G=({i,+,*,(,)},{E},E, P),
其中,P由下列产生式组成:
E ? i
E ? E+E
E ? E*E
E ? (E)
对句子(i+i)最左推导
E?(E)?(E+E)?(i+E)?(i+i)
;定义:假定G是一个文法,S 是它的开始符号。如果S ? ,则?称是一个句型。仅含终结符号的句型是一个句子。文法G所产生的句子的全体是一个语言,将它记为 L(G)。;第4章 自上而下语法分析;4.1 语法分析器的功能;4.1 语法分析器的功能;4.2 自上而下分析面临的问题;例4.1 文法???⑴ S→xAy
⑵ A→** ⑶ A→*
输入串 α=x*y,分析α是否该文法的句子?;序号 ip指向 语法树 最左推导 说明 ;序号 ip指向 语法树 最左推导 说明 ;自上而下分析; 自上而下分析;候选式的确定与回溯问题;左递归;4.2 自上而下分析面临的问题;4.2 自上而下分析面临的问题;4.3 不带回溯的自上而下分析法;4.3.1 左递归的消除;例4.2 文法G(E):
E→E+T | T
T→T*F | F
F→(E) | i
消去直接左递归后变成:
E→TE?
E?→+TE? | ?
T→FT?
T?→*FT? | ?
F→(E) | i ;消除下面文法的左递归 :
(1) G(H): H→ H;M|M
M→ d|aHb ;消除左递归 练习 2;消除直接左递归的一般方法;消除间接左递归;例4.4 有间接左递归文法:
(1)A→Bb (2)B→Ac (3)B→d
也可以先将(2)(3)代入(1)得: A→Acb|db再消直接左递归, 得到不含左递归的文法:
A →dbA’
A’ →cbA’|ε
B现在是无用符号, 把B及其产生式删除。
说明:代入方法不同,得到的不含左递归的文法可能是不一样的,但它们等价。消左以后,可能会出现无用符号,应把它们去掉。;消除左递归算法: P70
(1)文法的所有非终结符排序为P1,P2,…,Pn;
(2)将间接左递归改为直接左递归,消除之;
for (i=1; i=n; i++)
{ for (j=1; j=i?1; j++)
把Pi→Pjγ|? 及 Pj→δ1|…|δk
改写为Pi→δ1γ|…|δkγ| ? ;
消除Pi的直接左递归; }
(3)化简, 删去那些不可达的产生式。;对消除左递归算法的说明:
(1)消除左递归算法有两个限制条件:文法中不含回路(P-P)和ε-生成式。
(2) 对非终结符的不同排序会导致文法形式上的不同, 但它们等价。
(3)不要改变文法的开始符号。;例4.5 考虑文法G(S)
S→Qc|c
Q→Rb|b
R→Sa|a
令它的非终结符的排序为R、Q、S。
对于R,S的序号大于R的序号,不处理。
对于Q,R的序号小于Q的序号,把R代入到Q的 有关候选后,把Q的规则变为
Q→Sab|ab|b 此时S的序号大于Q的序号,不处理。
;例4.5 考虑文法G(S)
S→Qc|c
Q→Rb|b
R→Sa|a
令它的非终结符的排序为R、Q、S。
Q的规则变为
Q→Sab | ab | b
对于S, Q的序号小于S的序号,把Q代入到S的有关候选后,把S的规则变为 S→Sabc | abc | bc | c;例4.5 考虑文法G(S)
S→Qc|c
Q→Rb|b
R→Sa|a
S变成
S→Sabc | abc | bc | c
消除S的直接左递归后:
S→abcS? | bcS? | cS?
S?→abcS? | ?
Q→Sab |ab | b
R→Sa|a;上例若排序为S,Q,R, 则得文法G[S]:
S→Qc | c
Q→Rb | b
您可能关注的文档
最近下载
- (正式版)H-Y-T 0292-2020 近海预报海区划分(正式版).docx VIP
- DB12T 663-2016 生物质成型燃料.pdf VIP
- 北师大版《心理健康》三年级下册 第15课《真心原谅他人》教案.doc
- 三级老年人能力评估师复习资料.docx VIP
- 任职资格类考试(资产管理部门及从事不良资产清收)复习测试卷附答案.doc
- 政治经济学批判导言+序言.pdf
- 打造智慧运营管理体系,赋能银行业务高质量发展.pdf VIP
- 2025年医疗卫生事业单位招聘考试《卫生公共基础知识》模拟卷 .pdf VIP
- 超星网课《艺术哲学:美是如何诞生的》超星尔雅答案2023章节测验答案.docx
- 《失踪的森林王国》教学设计(五月25日).doc VIP
文档评论(0)