左递归文法 不太懂

一个文法含有下列形式的产生式之一时:

1)A→Aβ,A∈VN,β∈V*

2)A→Bβ,B→Aα,A、B∈VN,α、β∈V*

则称该文法是左递归的。

然而,一个文法是左递归时,不能采取自顶向下分析法。

消除左递归方法有:

a)把直接左递归改写为右递归:

设有文法产生式:A→Aβ|γ。其中β非空,γ不以A打头。

可写为:A→γA'

A'→βA'|ε

一般情况下,假定关于A的产生式是:

A→Aα1| Aα2 | |Aαm12 |n

其中,αi(1≤i≤m)均不为空,βj(1≤j≤n)均不以A打头。

则消除直接左递归后改写为:

A→ β1A'| β2 A' || βnA'

A'→ α1A' | α2A' || αmA' |ε

例4.12:有文法G(E):

E→E +T |T

T→T*F | F

F→i| (E)

消除该文法的直接左递归。

解:按转换规则,可得:

E→TE'

E'→+TE'|ε

T→FT '

T'→*FT'|ε

F→i| (E)

b)消除间接左递归:

对于间接左递归的消除需要先将间接左递归变为直接左递归,然后再按a)清除左递归。

例4.13:以文法G6为例消除左递归:

(1)A→aB

(2)A→Bb

(3)B→Ac

(4)B→d

解:用产生式(1),(2)的右部代替产生式(3)中的非终结A得到左部为B的产生式:

(1)B→aBc

(2)B→Bbc

(3)B→d

消除左递归后得到:

B→aBcB' |dB'

B'→bcB' |ε

再把原来其余的产生式A→aB,A→Bb加入,最终得到等价文法为:

(1) A→aB

(2) A→Bb

(3) B→(aBc|d)B'

(4) B'→bcB'|ε

c)消除文法中一切左递归的算法

设非终结符按某种规则排序为A1,A2,An

For i﹕=1 to n do

begin

For j﹕=1 to i-1 do

begin

若Aj的所有产生式为:

Aj →δ1| δ2 | … | δn

替换形如Ai  Aj γ的产生式为:

Ai →δ1γ 2γ | … |δnγ

end

消除Ai中的一切直接左递归

end

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android应用源码45套安卓源码合集: android中文离线发音引擎FOCTTS使用源码.rar Android应用源码(精)LBS签到应用源码.rar Android应用源码(精)xUtils2.2.5.rar Android应用源码(精)仿博客园客户端源码.rar Android应用源码(精)手机控制电脑鼠标.rar Android应用源码(精)记事本小程序,加注释,适合阅读.rar Android应用源码Android平台下通过HTTP协议实现断点续传下载.rar Android应用源码Hibernate4Android.rar Android应用源码http、udp、tcp网络交互组件.rar Android应用源码ListView实现的目录树结构.rar Android应用源码SdCard读写文件实例.rar Android应用源码SlidingMenu使用例子.rar Android应用源码串口通信(JNI)例子.rar Android应用源码任务提醒源码.rar Android应用源码仿360手机助手首页浮动菜单.rar Android应用源码仿Iphone抖动效果Shake Icon.rar Android应用源码仿QQ分组列表修改版.rar Android应用源码使用listView实现的树状结构.rar Android应用源码俄罗斯方块注释超详细版.rar Android应用源码利用poi将内容填到word模板.rar Android应用源码动态列表布局.rar Android应用源码单Java文件实现的计算器.rar Android应用源码基于百度云推送的聊天工具源码.rar Android应用源码安卓多边形布局例子.rar Android应用源码安卓拍照上传实现代码附带php端.rar Android应用源码实现动态交叉布局.rar Android应用源码小说翻页效果源码.rar Android应用源码广告轮播效果源码.rar Android应用源码强大的统计图表库.rar Android应用源码微享,微信分享实例.rar Android应用源码有米广告SDK例子.rar Android应用源码模仿zaker风景页面滑动效果修改版.rar Android应用源码水波纹动画效果.rar Android应用源码泡泡效果bubble.rar Android应用源码猜猜红桃A.rar Android应用源码百度统计例子.rar Android应用源码简单的Android图片轮播.rar Android应用源码简单的仿微信实现了表情效果.rar Android应用源码结合数据库进行摇一摇的实例.rar Android应用源码花姑娘之部分UI源码.rar Android应用源码获取手机信息.rar Android应用源码讯飞语音测试源码.rar Android应用源码飞碟说欢迎界面.rar
由于这个项目需要使用公交线路的数据源,我无法提供完整的代码和运行结果。但是,我可以指导你如何开始这个项目,并提供一些有用的资源。 1. 确定数据源:你需要找到一种获取公交线路数据的方法,例如公开的 API 或者爬虫。你可以考虑以下数据源: - 公交公司的官方网站或者 APP:许多城市的公交公司都提供了线路查询功能,你可以通过爬虫来获取数据。 - 公开的 API:例如高德地图、百度地图等都提供了公交线路查询的 API。 - 开放数据集:例如 OpenStreetMap 等都有开放的公交线路数据集。 2. 设计 UI:你需要设计一个用户友好的界面,让用户可以输入起点和终点,选择公交线路。你可以使用 Android Studio 提供的 UI 设计工具来完成这个任务。 3. 编写代码:你需要编写代码来获取公交线路数据,解析数据,并将其显示在 UI 上。你可以使用一些第三方库来帮助你完成这个任务,例如 OkHttp、Gson 等。 4. 测试和优化:完成代码后,你需要测试它的正确性和性能,并进行必要的优化。 这里有一些有用的资源可以帮助你开始这个项目: - Google Maps Platform 提供了公交线路查询的 API,你可以参考这个文档:https://developers.google.com/maps/documentation/directions/start - 高德地图提供了公交路线规划的 API,你可以参考这个文档:https://lbs.amap.com/api/webservice/guide/api/direction - OpenStreetMap 提供了开放的公交数据集,你可以参考这个网站:https://wiki.openstreetmap.org/wiki/Public_transport 祝你成功完成这个项目!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值