Arcee:又一個Parser Generator的輪子
09-05
Arcee:又一個Parser Generator的輪子
推薦閱讀:
10 人贊了文章
項目地址:tdkihrr/arcee
為什麼要做這樣一個東西呢?不是有Antlr嗎,Python下不是也有相應的bind嗎?人類為什麼又要再做一遍已經成熟了的東西呢?
答案是不爽!
之前刷 EOPL ,想用 Python 改寫其中的玩具語言,重寫了三四個後,感覺很彆扭。教材里自帶了一個parser,所以不用考慮解釋器前端的東西,但我用Python改寫時,由於沒有可口的前端,寫起來很不爽,每次寫完後端,都只能自己用 Python 手敲一遍AST,真的很麻煩,所以我就萌生了自己寫一個 parser generator 的想法。
所以,就有 Arcee 。
學到了什麼:
- 編譯原理,這個不用說
- 如何寫函數式風格的Python。目前就是使用了_ror_魔方方法實現了一套還算可用的 Map, Filer, FlatMap, ToTuple, ToSet 等基礎設施。
- TDD。這個太重要了,如果沒有採用這種開發方式,估計我的項目全是Bug。這次的實踐教育了我,寫好測試用例是多麼的重要,不僅保證了代碼的質量,更重要的是,當你隔了很久再碰這個項目,好的測試用例會幫你快速地理解代碼的結構與功能。
- CI。使用 Travis CI 作為 CI 系統,對當前這樣的小項目還算湊合,上Jenkins什麼的有些殺雞焉用牛刀的感覺。
- kanban。使用 Trello 管理。每一個commit,除了重構,都對應一張卡。這樣即使很久沒有碰這個項目,也能很輕鬆地了解進度。
這個輪子目前還有一點小問題,不過自己用的話還是沒問題。由於工作緣故,估計是要去學 JavaScript 了,這個東西估計不會再更新了(也許哪天還會的。。。),到時估計就是重寫一個 npm 包吧,這個再說。
最後,感謝 @NightyNight 的幫助。
推薦閱讀: