自底向上语法分析LR(0)

方法描述
自作向右逐个扫描输入串,一边把输入符号 移进 分析栈 ,一边检查位于栈顶的一串符号是 否与某个产生式的右部相同,如果相同,就把 栈顶的这串符号 归约 为左部的非终结符;如果 不同,则继续移入输入符号,进行判断。上述 过程一直重复到 输入串结束 ,栈内 恰好为 S
LR(K)
L : 自左向右扫描输入串
R : 最右推导的逆过程 ( 规范归约,最左规约 )
K : 向右查看 输入串符号的个数 (K 省略时 , K 等于 1 K=1 时,能满足当前绝大多数 高级语言编译程序的需要 ) LR 分析过程是规范归约过程。
LR 分析法的特点
LR 分析器(程序)基本上 可以识别所有 上下 文无关文法写的编程设计语言的结构,分析能 力强且适用范围广
LR 分析法是当前 最一般 移进 - 归约 ”分析方
LR 分析法在 自左向右 扫描输入串时能収现其 中错误,并能 指出出错地点
LR 分析程序可以自动生成
LR 分析方法的基本思想
LR 分析器的每一步工作都是由 栈顶状态 行输入符号 所唯一决定的。
一个 LR 分析器实质上是一个 DFA

例题来进行举例如何使用:

G:
(1) E →   E+T
(2) E → T
(3) T → T*F
(4) T → F
(5) F → (E)
(6) F → i

 分析表

我们需要根据这个分析表进行判断如何进行LR(0)分析现在讲一下这个表里面内容是什么意思

(1) 移进 – s j            (2) 归约 – r j                (3) 接受 – acc             (4) 报错 – 空白 / ‘出错’ / ‘error’
(1) 移进  Action[s n , a i ] = s j 把现行输入符号 a i 和下一状态 j 分别移进状态栈和符号栈
(2) 归约 - Action[s n , a i ] = r j   用第 j 条产生式 A→ β 归约 . |β| =r  需要对产生式进行编号
(3) 接受  Action[s n , a i ] = acc, 宣布分析成功
(4) 报错 Action[s n , a i ] = 空白,出错标识,报错
i*i+i# 进行移进- 归约分析

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

用编程写诗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值