第四章:语法分析----自上而下的分析

本文详细介绍了自上而下的语法分析方法,重点讲解了LL(1)分析法,包括消除左递归、提左因子、预测分析条件、递归下降分析程序的构建以及预测分析表的构造。此外,还提及了分析过程中遇到的问题和解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.本章重点

     预测分析的程序。

二. 

(1)如何判断一个输入串是否符合语法规则?

           1.从文法的起始符出发进行句子的推导,即自上而下的分析

           2.从句子本身出发,进行归约,看能否把句子规约为到起始符,即自下而上的规约

(2).基本思想

对任何一个输入串,试图用一切可能的办法,从文法的开始符号(根节点)出发,根据文法自上而下地为输入串建立一棵语法树,即为输入串寻找一个最左推导。

(3).自上而下分析面临的问题

1. 文法的左递归问题
2.回溯的不确定性,要求我们将已经完成工作推倒从来,
3.虚假匹配的问题
4.不能准确地确定输入串中出错的位置

5.效率低

三.LL(1)分析法

(1)消除直接左递归

设有产生式
P→Pα|β (1)
其中β不以P开头,α不为ε。那么,我们可以把P的规则改为如下的非直接左递归形式:
P→βP’
P'→αP'|ε (2)

(1)式和(2)式是等价的

(2)消除回溯,提左因子

1.消除回溯的要求

(1)若该候选式匹配成功,那么该匹配不是虚假匹配

(2)若该候选式无法完成最终的匹配任务,则其他任何候选式肯定也无法完成

2.消除回溯的条件

定义FIRST集
</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值