以前都只知道縮排想用幾個空白都可以,保持一致就好
無聊跑去看文檔之後,發現其實比我想像中的更自由
https://docs.python.org/3/reference/lexical_analysis.html#indentation
縮排是用 stack 來維護的,首先會將 0 壓進去
接著若這一行比當前的縮進要深
則會產生 INDENT token 並把當前的深度 push 進去
如果比較淺,則會不斷 pop 直到找到符合的深度
每 pop 一次就產生一個 DEDENT token
如果這個深度原本不在 stack 中就會報錯
所以下面這個程式也是合法的