- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 语法分析 编译程序的功能和组织结构 § 4.1自顶向下分析 § 4.2自底向上分析 § 4.1 自顶向下分析 §4.1.1 自顶向下分析思想 §4.1.2 LL(1)文法 §4.1.3 递归下降分析法 4.1.1 自顶向下分析思想 1.自顶向下分析方法特点 2. 自顶向下分析存在的问题及解决方法 1) 左递归文法: 2) 回溯问题 文法G:S → cAd A → ab |a 识别输入串w=cad 4.1.2 LL(1)分析法 1、LL分析程序构造及分析过程 LL(1)分析方法 使用这种方法进行语法分析,可借助于一张分析表及一个语法分析栈,在一个总控程序控制下很方便地实现。 LL(1)分析器的逻辑结构和工作过程。 LL(1)分析器的构造方法。 LL(1)分析方法分析程序模型 预测分析表M可用一个矩阵(或二维数组)来表示,它概括了相应文法的全部信息。矩阵 的每一行与文法的一个非终结符号A相关联,而每一列则与文法的一个终结符号或#相关联。 LL(1)分析方法 第一步 分析开始时,首先将符号#及文法的开始符号S依次置于分析栈底部,并把各指示器调整至起始位置,即初始格局为: 第二步 设在分析的某一步,分析栈及余留的输入符号串处于如下的格局。 X1 X2…Xm-1 Xm为分析过程中所得的文法符号,此时,可视栈顶符号Xm的不同情况,分别做如下的动作: LL(1)分析方法 但若M[Xm,ai]=“ERROR”,则调用出错处理程序进行处理: 2、若Xm=ai≠#,则表明栈顶符号已与当前正扫视的输入符号得到匹配,此时应将Xm(即ai)从栈中退出,并将输入符号指示器向前推进一个位置: 3、若Xm=ai=#,则表明输入串已完全得到匹配,此时即可宣告分析成功而结束分析工作。 LL(1)文法及LL(1)语言的性质 任何LL(1)文法都是无二义性的: 若一文法中的非终结符含有左递归,则它必然是非LL(1)文法: 非LL(1)语言是存在的: 存在一种算法,它能判定任一文法是否为LL(1)文法: 不存在这样的算法,它能判定上下文无关语言能否由LL(1)文法产生。 LL(1)分析表构造方法 上述LL(1)分析算法对于不同的LL(1)文法都是相同的。也就是说,对不同的LL(1)分析器而言,它们的总控程序都是相同的,不同的仅仅是分析表。 总控程序十分简单,非常容易实现,所以我们只着重讨论构造分析表的问题。 LL(1)分析表构造算法 1、对文法G的每个产生式A→?执行第二步?和第三步: 2、对每个终结符a?FIRST(?)把A→?加至[A ,a]中, 3、若?? FIRST(?),则对任何 b?FOLLOW(A)把A→?加至?[A,b]中, 4、把所有无定义的?[A,a]标上“出错标志”。 G[E]: (1) E → TE (2) E′→ +TE′ (3) E′→ ? (4) T → FT′ (5) T′→ *FT′ (6) T′→ ? (7) F → (E) (8) F → i 步骤 分析栈 余留输入串 所用产生式 1 #E i+i*i# E→TE′ 2 #E′T i+i*i# T→FT′ 3 #E′T′F i+i*i# F→i 4 #E′T′I i+i*i# 5 #E′T′ +i*i# T′→ε 6 #E′ +i*i# E′→+TE′ 7 #E′T+ +i*i# 8 #E′T i*i# T′→FT′ 9 #E′T′F i*i# F→i 10 #E′T′i i*i# 步骤 分析栈 余留输入串 所用产生式 11 #E′T′ *i# T′→*FT′ 12 #E′T′F* *i# 13 #E′T′F i# F→i 14 #E′T′i i# 15 #E′T′ # T′→ε 16 #E′ # E′→ε 17 # # 成功 LL(1)文法 一个文法G,若它的分析表M不含多重元素,则称它是一个LL(1)文法。一个LL(1)文法是无二义的,它所定义的语言恰好就是它的分析表M所能识别的全部句子。 LL(1)文法的
您可能关注的文档
最近下载
- 儿童强迫症的早期识别和治疗.pptx VIP
- (2025秋新版)人教版三年级数学上册《观察物体》PPT课件.pptx VIP
- 电路分析基础教案.docx VIP
- 2025年污水处理工技能竞赛理论考试题库资料大全-下(多选、判断题汇总).pdf VIP
- 《电路分析基础》课程教案.docx VIP
- 机电一体化技术专业实验室建设和实训设施优化方案.docx VIP
- 部编版语文一年级上册期末复习:看图写话课件(18张)(共20张PPT).pptx VIP
- 2025年器官运输冷链物流设备市场潜力分析.docx VIP
- 基于PLC控制的四路智能抢答器-毕业设计.doc VIP
- 中职说课课件PPT课件.pptx VIP
文档评论(0)