编译原理笔记8 自上而下语法分析-…

本文介绍了自上而下语法分析的基本概念与方法,包括其定义、算法步骤及带回溯技术的特点。此外还讨论了该方法存在的问题,如无限循环、盲目选择候选式等。

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

1.自上而下分析法的一般问题。

1)自上而下语法分析定义:从文法的开始符号开始,反复使用不同产生式进行推导以谋求与输入符号串相匹配。注:此处的输入符号串是指词法分析结果的一串二元式。

2)一般方法:

a) 基本构成:设下推栈的初始状态包括两个符号:‘#S’,其中‘#’为栈底,‘S’为文法开始符号。整个分析过程在语法分析程序控制下进行。在语法分析中用到的文法产生的表,称为语法表。编译原理笔记8 <wbr>自上而下语法分析-带回溯的自顶向下分析技术

b) 算法

i. 若栈顶符号x是非终结符,查询语法表,找出一个以x为左部的产生式,x出栈,并将其右部反续入栈,且输出带上记下产生式编号——推导。

ii. 若栈顶符号x是终结符,且读头下的符号也是x,则x出栈,读头指向下一个符号——匹配。

iii. 若栈顶符号x是终结符,但读头下的符号不是x,则匹配失败。这说明可能前面推导时选错了候选式,退回到上次推导现场(包括栈顶符号、读头的指针和输出带上信息)——回溯。

iv. 回溯后选取另一候选式进行推导,若没有候选式可选,则进一步回溯。若回溯到开始符号又已无候选式可选,则识别失败。

v. 若栈内仅剩下“#”,且读头也指向“#”,则识别成功。

c) 带回溯的自上而下分析法的缺陷

i. 如果文法存在左递归,语法分析会无限循环下去。

ii. 若产生式存在多个候选式,选择哪个进行推导完全是盲目的。

iii. 回溯会引起时间和空间的大量耗费。

iv. 如果被识别的语句是错的,算法无法指出错误的确切位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值