其他分享
首页 > 其他分享> > 语法分析

语法分析

作者:互联网

目录

1. 自顶向下分析(Top-Down Parsing)

最左推导(Left-most Derivation)

image-20211108081848973

自顶向下的语法分析采用最左推导方式.

kgzty-93jyp

最右推导(Right-most Derivation)

image-20211108082156857

最左推导和最右推导的唯一性

image-20211108082314852

自顶向下语法分析的通用形式

image-20211108085141535

预测分析(Predictive Parsing)

image-20211108085239604

1.1. 文法转换

问题1---回溯

image-20211108091851620

问题2---左递归导致无限循环

image-20211108092128945

消除直接左递归

image-20211108092356654

消除直接左递归的一般形式

image-20211108092934888

消除间接左递归

合并产生式, 将间接左递归变成直接左递归再消除

image-20211108093737818

image-20211108155445163

消除左递归算法

image-20211108094203538

image-20211108094427718

在每个终结符的循环内:

提取左公因子(Left Factoring)

image-20211108100238359

推迟进入候选式的选择, 减少回溯长度

提取左公因式算法

image-20211108100745382

1.2. LL(1)文法

S_文法

image-20211108143034121

如果S_文法包含ε产生式,那么它就成为了LL文法

image-20211108144838020

非终结符的后继符号集(FOLLOW)

image-20211108144947876

产生式的可选集(SELECT)

image-20211108145147059

串首终结符集(FIRST)

image-20211108145325535

LL(1)文法概念

image-20211108145626218

FIRST集计算

image-20211108155545080

算法:

image-20211108155643719

计算串X1X2…Xn的FIRST集合:

image-20211108160202793

FOLLOW集计算

image-20211108151155079

image-20211109125458550

SELECT集计算

image-20211109125522546

预测分析表

image-20211109125552165

1.3. LL(1)文法的分析方法

递归的预测分析法

image-20211108152107980

image-20211109125630686

image-20211108152536482

image-20211108153952952

image-20211108154246219

image-20211108154326000

image-20211108154353615

image-20211108154419176

image-20211108154455570

非递归的预测分析法(表驱动)

image-20211108154524114

image-20211109125132917

image-20211108154637463

递归的预测分析法vs.非递归的预测分析法

image-20211108154732459

预测分析法实现步骤

image-20211108154811906

预测分析法中的错误检测

image-20211108154837403

预测分析法中的错误恢复

image-20211108154901932

image-20211108155153425

image-20211108155110086

2. 自底向上分析: 移入规约分析(Shift-Reduce Parsing)

image-20211109081207970

image-20211109081916871

移入-归约分析的工作过程

image-20211109082027055

移入-归约分析器可采取的4中动作

image-20211109082131744

移入-归约分析中存在的问题

image-20211109082752115

句柄: 句型的最左直接短语


(句型的)短语

image-20211109082845357

2.1. LR分析法

image-20211109082956563

LR分析法的基本原理

image-20211109083544103

LR分析器(自动机)的总体结构

image-20211109083635820

LR分析表的结构 及 分析过程

image-20211109084048031

image-20211109084115861

LR分析器的工作过程

image-20211109084424249

LR分析算法

image-20211109084537375

如何构造给定文法的LR分析表

2.2. LR(0)分析

LR(0)项目

image-20211109084730514

image-20211109090338561

句柄? 含义? 直接短语?

增广文法(Augmented Grammar)

image-20211109090143006

image-20211109090507791

LR(0)分析表的构造算法

CLOSURE()函数

image-20211109090901858

GOTO()函数

image-20211109090926757

构造LR(0)自动机的状态集

image-20211109091008437

LR(0)分析表构造算法

image-20211109091241912

LR(0)自动机的形式化定义

image-20211109091434876

LR(0)分析过程中的冲突

image-20211109091721501

可能存在:

  • 如果LR(0)分析表中没有语法分析动作冲突,那么给定的文法就称为LR(0)文法
  • 不是所有CFG都能用LR(0)方法进行分析, 也就是说, CFG不总是LR(0)文法

2.3. SLR分析

S: simple
用FOLLOW集来判断是归约还是移入

LR分析的产生式满足LL分析产生式的条件吗??

image-20211109092218878

image-20211109092659701

image-20211109093224352

SLR分析表构造算法

image-20211109093250283

SLR分析中的冲突

image-20211109093428596

2.4. LR(1)分析

LR(1)的提出

image-20211109095321744

规范LR(1)项目

image-20211109095629858

等价LR(1)项目

image-20211109100144406

赋值语句文法的LR(1)分析表

image-20211109100527026

image-20211109100615210

image-20211109101035890

LR(1)项目集闭包

image-20211109101147958

GOTO函数

image-20211109101209716

为文法 G' 构造LR(1)项集族

image-20211109101329985

LR(1)自动机的形式化定义

image-20211109101439736

LR分析表构造算法

image-20211109101705653

2.5. LALR分析(lookahead-LR)

基本思想

image-20211109102539418

合并同心项集

image-20211109103349796

合并同心项集时产生 归约-归约冲突的例子

image-20211109110809370

合并同心项集后, 虽然不产生冲突, 但可能会推迟错误的发现

image-20211109110927187

LALR(1)的特点

image-20211109111228270

image-20211109111258905

2.6. 二义性文法的LR分析

二义性文法分析

image-20211109111718269

二义性算术表达式文法的LR(0)分析器

image-20211109111820889

二义性算术表达式文法的SLR分析表

image-20211109112329740

image-20211109112540525

二义性if语句文法的SLR分析表

image-20211109112644280

**应该保守地使用二义性文法, 并且必须在严格控制之下使用, 英文稍有不慎就会导致语法分析器所识别的语言出现偏差. **

2.7. LR分析中的错误处理

image-20211109113116100

恐慌模式错误恢复

image-20211109113149746

短语层次错误恢复

image-20211109113219717

image-20211109113247662

image-20211109113347111

标签:分析,文法,语法分析,递归,分析法,归约,LR
来源: https://www.cnblogs.com/batianhan/p/15529373.html