以前都只知道缩排想用几个空白都可以,保持一致就好
无聊跑去看文档之后,发现其实比我想像中的更自由
https://docs.python.org/3/reference/lexical_analysis.html#indentation
缩排是用 stack 来维护的,首先会将 0 压进去
接着若这一行比当前的缩进要深
则会产生 INDENT token 并把当前的深度 push 进去
如果比较浅,则会不断 pop 直到找到符合的深度
每 pop 一次就产生一个 DEDENT token
如果这个深度原本不在 stack 中就会报错
所以下面这个程式也是合法的