Python解释器是如何解决“悬挂else”二义性问题的?

magiclove 2004-08-10 08:08:21
Python 编译器(解释器)中如何解决悬挂else二义性问题
C语言中可由分析树解决(else与最近的一个if配对),而Python中是按缩进来解决配对的。

请求大牛解释一下Python解释器是如何做到这一点的。

例 1)

if x == 0:
a = 100
if b == 100
a = 200
else:
c = 1000


例 2)

if x == 0:
a = 100
if b == 100
a = 200
else:
c = 1000

这两个例子完全不同,一般的编译原理书中,只叙述了类似C语言的情况
...全文
267 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wolf0403 2004-08-17
  • 打赏
  • 举报
回复
呵呵,TAB 语法,很不错的^_^
jiangwen365 2004-08-16
  • 打赏
  • 举报
回复
首先申明,我对Python还处于不求甚解状态,随便说说啊,大家不要太serious。
我觉得早期python的很多语法设计,包括结构控制语法以及类的私有变量申明,之所以与其它语言不同,其很大因素其实是因为使用这些语法规定来实现一种语言更容易。
比如,编译器属一下几个TAB就知道是第几层。而私有变量之所以无法访问只是Python编译器在变量名上加了__,其实你知道后,自己加上下划线还是能访问到私有变量的。
snaill 2004-08-13
  • 打赏
  • 举报
回复
空格也是语法

在这点上python做的很有意思,不过有时候因为这个出现无法对应的语法错误也是很头疼的事
mahongxi 2004-08-11
  • 打赏
  • 举报
回复
TAB也是PYTHON语法的一部分啦.所以ELSE和哪个IF对齐,它们即是一组的.
xiaonian_3654 2004-08-11
  • 打赏
  • 举报
回复
我认为python的做法是
将制表符也算一个符号,在符号扫描的时候
iBear 2004-08-11
  • 打赏
  • 举报
回复
缩进的不同,决定了else的归属

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧