lr 1 语法分析器c语言,LR语法分析器

1LR语法分析器本节介绍一个有效的自底向上的分析技术,可以用于一大类上下文无关文法的语法分析。这种技术叫做LR(k)分析法,其中L表示从左到右扫描输入串,R表示构造一个最右推导的逆过程,k指的是在决定语法分析动作时需要向前看的符号个数。(k)省略时,假设k是1。LR分析富有吸引力的原因有以下几点:vLR语法分析器能识别几乎所有能用上下文无关文法描述的程序设计语言的结构。vLR分析法是已知的最...
摘要由CSDN通过智能技术生成

1 LR语法分析器

本节介绍一个有效的自底向上的分析技术,可以用于一大类上下文无关文法的语法分析。这种技术叫做LR(k)分析法,其中L表示从左到右扫描输入串,R表示构造一个最右推导的逆过程,k指的是在决定语法分析动作时需要向前看的符号个数。(k)省略时,假设k是1。LR分析富有吸引力的原因有以下几点:

v LR语法分析器能识别几乎所有能用上下文无关文法描述的程序设计语言的结构。

v LR分析法是已知的最一般的无回溯移动归约语法分析法,而且可以和其它移动归约分析一样被有效地实现。

v LR分析法分析的文法类是预测分析法能分析的文法类的真超集。

v 在自左向右扫描输入符号串时,LR语法分析器能及时发现语法错误。

这种分析方法的主要缺点是,对典型的程序设计语言文法,手工构造LR语法分析器的工作量太大,需要专门的工具。

1.1 LR语法分析算法

规范归约(最左归约-最右推导的逆过程)的关键问题是寻找句柄。在一般的“移进-归约”过程中,当一串貌似句柄的符号串呈现于栈顶时,我们有什么方法可以确定他是否为相对于某一个产生式的句柄呢?LR分析的基本思想是,在规范归约过程中,一方面记住已移进和归约出的整个符号串,即记住“历史”,另一方面根据所用的产生式推测未来可能碰到的输入符号,即对未来进行“展望”。当一串貌似句柄的符号串呈现于分析栈的顶端时,我们希望能够根据所记载的“历史”和“展望”以及“现实”的输入符号等三方面的材料,来确定栈顶的符号串是否构成相对某一产生式的句柄。

从LR分析方法可以看出,其实现有一定的困难。作为归约过程的“历史”材料的积累虽不困难(实际上,这些材料都存在分析栈中),但是“展望”材料的汇集却是一件很不容易

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值