语法分析

语法分析在编译过程中至关重要,它分析程序的语法结构是否符合规则。通过自上而下或自下而上的方法判断输入串是否合法。本文讨论了消除回溯的LL(1)文法和递归下降分析器的构建,涉及FIRST集和FOLLOW集的计算。课后题的挑战促使进一步学习和练习。
摘要由CSDN通过智能技术生成

语法分析是编译过程的核心部分,它的任务是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则;

判断一个输入串是否符合语法规则的方法:1.从文法的起始符出发进行句子的推导,即自上而下的分析

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

消除回溯的要求:
对文法的任何非终结符,当要它去匹配输入串时,能够根据该非终结符所面临的输入符号准确地指派它的一个候选式去匹配,并且此候选式匹配后得到的工作结果应该是确信无疑的,即:
(1)若该候选式匹配成功,那么该匹配不是虚假匹配

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

当一个文法满足LL(1)条件时,我们就可以构造一个不带回溯的自上而下分析程序,这个分析程序由一组(可能的)递归程序组成,每个过程对应文法的一个非终结符。这样一个分析程序称为递归下降分析器;具体做法:
对文法的每一个非终结符都编一个分析程序

当根据文法和当时的输入符号预测到要用某个非终结符去匹配输入串时,就调用该非终结符的分析程序。

预测分析表的构造——FIRST(X):

1.若X终结符,则FIRST(X)={X}
2.若X为非终结符,且有X->a …的产生式,则把a加入到FIRST(X)中;
3.若X->

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值