自顶向下的语法分析LL(1)

自顶向下的语法分析即是将输入词素从树的根节点开始,按照先根顺序开始创建语法树的各个结点,也是寻找输入串的最左推导的过程。

常见的递归下降就是自顶向下语法分析机制的一种,lcc就是使用这种机制,但是这个机制需要回溯(或者使用预测分析表,向前看k个输入词素,即LL(k)文法)。

FIRST集合和FOLLOW集合:

鉴于递归下降的语法分析在处理有多产生式的非终结符号时,难以确定究竟应该使用哪个产生式,

而FIRST和FOLLOW集合可以使我们依据下一个输入词素确定究竟使用哪个产生式。

FIRST(a)被定义为可从任意文法符号串a推导得到的串的首符号的集合。

对于非终结符号A,FOLLOW(A)被定义为可能在某些句型中紧跟在A右边的终结符号的集合。

LL(1)文法:

第一个L表示从左向右扫描输入,第二个L表示产生最最左推导,而1则表示在每一步中只需要向前看一个输入符号就可以决定下一步语法分析动作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自顶向下语法分析程序是一种根据文法产生式和输入串来识别句子结构的程序。LL(1)语法分析程序则是指具有以下特点的自顶向下分析程序:采用最左推导、具有单符号向前看、只需一个向前符号的语法分析程序。 首先,我们需要构建一个LL(1)分析表,该表是一个维数组,行代表非终结符,列表示终结符和向前看符号。根据文法产生式和First、Follow集合来填充LL(1)分析表。在填充LL(1)分析表时,需要考虑产生式右部符号串的First集合和Follow集合,以及空串的情况。填充完成后,得到一个非终结符和终结符的组合对应的产生式编号。 接下来,编写LL(1)语法分析程序的分析器部分,该部分通过输入串和LL(1)分析表来进行句子结构的识别。具体而言,分析器根据LL(1)分析表的内容来选择适当的产生式进行推导,并根据对应的产生式推导出输入串的句子结构,直到推导出句子的最左句型。在推导的过程中,需要考虑空串情况,对应选择空串产生式和进行回溯。 最后,对于输入串,LL(1)语法分析程序可以输出句子结构的推导过程或者识别出句子是否符合文法。如果输入句子符合文法,那么LL(1)语法分析程序会给出对应的推导序列和语法分析树;如果输入句子不符合文法,LL(1)语法分析程序会报告语法错误的位置和错误类型。 因此,一个典型的LL(1)语法分析程序包括构建LL(1)分析表和编写LL(1)语法分析程序的分析器部分,通过这两部分来实现句子结构的识别和语法错误的检测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值