期末-大三上编译原理复习.pdfVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Lecture02:实验导引

词法分析简介、语法分析简介、语法分析树(具体语法树)、抽象语法树

LexYacc简介

Lecture03:词法分析

词法分析概述

词法分析程序的设计与实现(状态转换图、扩展巴克斯范式EBNF描述词则)

词法分析程序自动构造

PL/0代码

Lecture04:自顶向下语法分析

基本思想(按给定文法和符号串进行推导)

确定的自顶向下分析

消除第一类不确定(带回溯的自顶向下分析、最左推导)

消除第二类不确定(自顶向下预测分析)

LL(1)分析

第一个“L”代表从左向右扫描单词符号,第二个“L”代表产生的是最左推导,“1”代

表向前查看(lookahead)一个单词符号。

First集合:一个句型α若可以推导出另一个以符a开头的句型,那么a属于First(α);

若α可以推导出ε,那么ε属于First(α)

Follow集合:,若G中存在一个包含子串Xa的句型,那么a属于Follow(X);G中存在一

个以X结尾的句型,那么#属于Follow(X)。

预测集合PS(A-α)定义如下:

如果ε不属于First(α),那么PS(A-α)=First(α);

如果ε∈First(α),那么PS(A-α)=(First(α)–{ε})∪Follow(A)

LL(1)分析的实现

递归下降LL(1)分析程序

表驱动LL(1)分析程序

预测分析表:表的每一行对应一个非符,表的每一列对应某个符或输入结束符#,

表中的项是一个产生式集合。

对文法G的每个产生式,若它的预测集合PS(A-α)中包含a∈VT∪{#},那么将A-α加入

表项M[A,a]。当M(A,a)不含产生式时,就对应一个出错位置。

一个文法G的预测分析表中每个表项最多只包含一个产生式,当且仅当G是LL(1)文法。

对于LL(1)文法,预测分析表也称为LL(1)分析表。

表驱动LL(1)分析程序的工作原理为:

初始时,下推栈只包含#;首先将文法开始符号入栈;然后执行如下步骤:

(2)若栈顶为非符,则根据该非符和当前输入单词符号查LL(1)分析表,若相

应表项中是产生式(唯一的),则将此非符出栈,并把产生式右部符号从右至左入栈;

若表项为空,则进行错误处理。

(3)重复(1)和(2),直到栈顶为#同时输入也遇到结束符#时,分析结束。

文法变换:消除左递归、提取左公因子(构造出所期望的文法类型)

左递归的,直接左递归,间接左递归。

包含左递归或左公因子的文法一般不是LL(1)的。

如果对非符的不同排序方式,依上述步骤消除一般左递归后所得到的文法从形式上看可

能会有区别,但它们之间是相互等价的。

提取因子

LL(1)分析中的出错处理

一是报错,发现错误时应尽可能准确错误位置和错误属性;二是错误恢复,尽可能进行

校正,使编译工作可以继续下去,提高程序调试的效率。

对于表驱动LL(1)分析,在以下两种情况下需要报错:栈顶的符与当前输入符号不匹

配;非符A位于栈顶,的输入符号为a,但分析表M的表项M[A,a]为空。

短语层恢复

Lecture05:自底向上语法分析

基本思想(按给定文法和符号串进行归约)

两种不确定(在每一步归约中,选择哪个产生式,以及匹配哪个位置上的子串)

对于文法的某个句型或句子,如果一个子串根据某个产生式归约后,得到文法的另一个句型,

那么我们称这样的子串为可归约串;如果没有这样的产生式,那么它就是不可归约的串。总

是选择某个“可归

您可能关注的文档

文档评论(0)

158****9376 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档