grammar presented in the Python documentation(用于生成Python解析器)以扩展BNF的形式编写,其中包括“运算符”,例如可选性([a])和Kleene闭包((a b c)*).但是,LL(1)是仅适用于不具有此类运算符的简单无上下文语法的类别.因此,询问该特定语法是否为LL(1)是一个类别错误.

为了使问题有意义,必须将语法转换为简单的无上下文语法.当然,这是可能的,但是没有规范的转换,Python文档也没有解释所使用的精确转换.某些转换可能会产生LL(1)语法,而其他转换可能不会. (实际上,对Kleene星的幼稚翻译很容易导致模棱两可,根据定义,这对任何k都不是LL(k).)

实际上,Python解析设备将语法转换为可执行的解析器,而不是上下文无关的语法.出于Python的务实目的,仅需提前一个令牌即可构建预测分析器就足够了.由于预测解析器可以使用条件语句和循环之类的控制结构,因此无需完全转换为无上下文语法.因此,有可能使用EBNF生成-就像所记录的语法一样-并不是完全左分解的,甚至可以使用向LL(1)转换不平凡的EBNF生成:

simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE

在上面的生产中,(";’small_stmt)*的重复后面可能跟有一个’;’,这意味着简单的while循环将无法正确表示生产.我不知道Python解析器生成器如何处理此生成,但是可以在扩展重复之后通过左分解将其转换为CFG:

simple_stmt: small_stmt rest_A

rest_A : ';' ret_B

| NEWLINE

rest_B : small_stmt rest_A

| NEWLINE

同样,可以将整个EBNF转换为LL(1)语法.之所以没有这样做,是因为该练习对于解析或解释语法都没有用.这将很难阅读,并且EBNF可以直接转换为解析器.

这一点与Python是否为LL(1)的问题无关,因为如果该语言存在LL(1)语法,则该语言就是LL(1).一种语言可能始终存在无限的语法,包括对于任何k而言不是LL(k)的语法,甚至不是与上下文无关的语法,但这与该语言是否为LL(1)无关. ):如果甚至存在一个LL(1)语法,则语言为LL(1). (我知道这不是最初的问题,因此我将不再进一步探讨这个问题.)

python能做什么游戏ll-是Python的语法LL(1)吗?相关推荐

  1. python能做什么游戏好-用Python可以做哪些有意思的小游戏呢?

    print(' *******************************************************************') print(' * *') print(' ...

  2. python可以干什么-Python可以用来做什么 为你揭开python神秘面纱

    Python可以用来做什么 为你揭开python神秘面纱 时间:2018-01-24     来源:解读Python 最近,编程界又一语言可谓是着实又火了一把,什么语言呢?python,python为 ...

  3. python可以给你干什么-Python可以用来做什么 为你揭开python神秘面纱

    Python可以用来做什么 为你揭开python神秘面纱 时间:2018-01-24     来源:解读Python 最近,编程界又一语言可谓是着实又火了一把,什么语言呢?python,python为 ...

  4. python能做游戏吗-没有Python不能做的游戏,这些游戏都可以做

    简介:Python编程语言的强大,几乎是众所周知的!那么,下面我给大家介绍一下几个用Python实现的各种游戏吧.不仅能用来做web.爬虫.数据分析等,没想到还能用做这么多的游戏,实在令人惊讶不已.注 ...

  5. 编程游戏python我的世界_乐学Python编程-做个游戏很简单

    1.进入Python 编程世界/ 2 1.1 启动Python 编程环境/ 5 1.2 Python 之禅/ 9 1.3 送你几朵玫瑰花--运行Python 程序/ 16 1.4 Python 的由来 ...

  6. python能制作游戏吗_没有Python不能做的游戏,这些游戏都可以做

    简介:Python编程语言的强大,几乎是众所周知的!那么,下面我给大家介绍一下几个用Python实现的各种游戏吧.不仅能用来做web.爬虫.数据分析等,没想到还能用做这么多的游戏,实在令人惊讶不已.注 ...

  7. python能做什么游戏-你也可以用Python开发出一款火遍全球的游戏!

    还记得这款火遍全球的像素小鸟游戏吗? 没有精细的动画,极简的游戏机制.却成为苹果商店下载量最多的免费 app,并为游戏制作人带来了数百万美元的收益. 当姜文说"站着把钱挣了"的时候 ...

  8. python一般做什么游戏好玩_只需要9步100行Python代码就可以实现一个简单又好玩的弹球游戏...

    今天给大家分享一个有趣又好玩的弹球的游戏,一来可以把类的知识融会一下,二来加深对Python的兴趣.你会发现哎呀Python写小游戏还是蛮方便的,蛮有意思的~~ 需要本文源码:私信回复[源码]即可获取 ...

  9. 乐学python编程做个游戏很简单_乐学Python编程-做个游戏很简单

    Python简单易学又功能强大,而且免费开源,在国内外的很多公司得到了广泛的应用.在科学计算.游戏.图像.人工智能.机器人.教育教学和航天飞机控制等很多领域,Python也是非常重要的编程工具. 本书 ...

  10. python能做什么游戏-12岁的少年教你用Python做小游戏

    你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂! 在这个教程里,你要学做一个叫<兔子和獾>的塔防游戏,兔子作为英雄,需要在城堡里抵御獾的进攻. 为了写这个游戏的代码,你将 ...

最新文章

  1. 中小型研发团队架构实践:微服务架构
  2. 十年积累,5.4万GitHub Star一朝清零:开源史上最大意外损失
  3. 产品经理学技术之数据结构
  4. C语言之文件读写探究(七):随机读写文件
  5. vue app准备学习工作
  6. Atitit 数据记录存储方式 索引组织表 堆组织表 储方式 InnoDB 引擎把数据放在主键索引上,其他索引上保存的是主键 id。这种方式,我们称之为索引组织表(Index Organizi
  7. 计算机集成技术的研究和应用,信息系统集成技术研究
  8. Maker工作室_激光雕刻机使用方法
  9. layDate时间控件
  10. 如何从Java官网下载 Java API 文档
  11. 红宝书新日本语能力考试N1~N5全套资料PDF分享 ​​
  12. 这一次,话筒给你:向自由软件之父 Richard M. Stallman 提问啦!
  13. 电路自学2-储能元件(电容+电感+储能元件的串并联)
  14. 2020年阴历二月二十九 投资理财~业余投资者如果不深入研究财报该怎么办?
  15. 更改文件夹目录、硬盘、U盘的图标
  16. docker的/var/run/docker.sock参数
  17. 2014网络红人彭伟个人资料及照片
  18. ffmpeg的安装以及transform360插件的安装
  19. 【新年返程离不开Python】最新12306抢票源程序Python版就此分享给大家啦!
  20. 机器人 大战 android,机器人未来大战

热门文章

  1. HDU 1058(打表)
  2. python---基础知识回顾(五)(python2.7和python3.5中的编码)
  3. mysql和SQLYog工具使用
  4. UVa 729 The Hamming Distance Problem【枚举排列】
  5. 、PHP只能访问mysql_php中 mysql函数不能调用,只有mysql_query()可以用
  6. python爬取图片-Python爬取网页中的图片(搜狗图片)详解
  7. python人工智能-Python之人工智能(一)
  8. python是软件吗-python运行环境是什么
  9. python装饰器作用-如何理解Python装饰器?
  10. python简单代码hello-PySide教程:一个简单的点击按钮示例