lr(0)文法的判断与分析 python_LR(0)文法项目集规范族、DFA和分析表的构建实例

本文介绍了LR(0)文法的概念,包括活前缀、LR(0)项目等,并通过一个具体文法展示了如何使用Python构建项目集规范族、DFA以及LR(0)分析表的过程,强调了理论与实践结合的重要性。
摘要由CSDN通过智能技术生成

最近在复习编译原理,考试之前以为自己懂了,眼高手低就没去实践。结果一考试出问题了。。。。

学习就要脚踏实地,容不得半点模糊。凭着侥幸心理很危险的。以后要引以为戒啊。

特别写出这篇文章 :一来总结一下这几天的收获。二来与君共勉。

一、概念

1.概念解释

1、活前缀:不包含句柄右侧任一符号的规范句型的前缀称为该句型的活前缀。

例如:Bab是下面那个文法的一个句型,其中b是句柄。

那么针对这个句型的活前缀有:ε、B、Ba 和Bab

(其实,LR分析器的工作过程实际上就是逐步产生规范句型的活前缀。

如果能构造出一个识别文法所有规范句型活前缀的确定有穷自动机即DFA,就能很方便的构造出LR分析表)

2、LR(0)项目:右部某位置上标有圆点的产生式称为相应文法的一个LR(0)项目

注意:A --> ε 只对应一个项目 A --> .

(LR(0)项目描述了活前缀和句柄的不同识别状态)

3、ε-可达:从 S' --> .S 出发,不必再识别任何符号就可以到达 S --> .BB,就称 S --> .BB是从

S' --> .S 出发 ε-可达的。

4、项目集闭包:用Item0表示DFA的初始状态,对应分析的开始,并期待着逐步将输入符号串

归约为开始符号S‘。因此将S' --> .S 放到 Item0 中,意即等待归约出S,且目前尚未

得到S的任何符号。

Item0 = CLOSURE({S' --> .S}) = {S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值