下雨天在家沒事作,整理書架時,翻了一下之前介紹過的 系統程式 一書,突然想到自己好一陣子沒機會寫 Python ,就試著用 Python 改寫書中所實作的 C0 語言 scanner 以及 parser。C0 是一個類似 C 的語言,但經過大幅簡化,所以很適合當作一個下午的娛樂。:-) scanner 的部份基本只用了基本的字串處理,輸出 token list 後,餵給 parser 。parser 則用簡單的 recursive descent 完成。可以從 github 上抓下來玩玩,運行結果如下: [mars@dream compiler]$ cat sample0.c0 reto = 9; reto = reto + 1; return reto; [mars@dream compiler]$ python parser.py sample0.c0 :PROG :BASELIST :BASE :STATMENT :id reto := = :EXP :number 9 :; ; :BASE :STATMENT :id reto := = :EXP :id reto :+ + :number 1 :; ; :BASE :STATMENT :return return :id reto :; ;