我爲自己寫了一個Mac開源文本編輯器,並最終達到了我想添加語法高亮的地步。過去幾天我一直在回顧各種解決方案,最後我決定向更廣泛的受衆開放這個問題。什麼是爲文本編輯器定義文法的最佳方式?
下面是我看到的選項:
- 定義語言基本匹配(類似於TextMate中如何定義它的語言)
- 定義語言與形式文法像一系列正則表達式模式BNF或PEG
使用正則表達式模式匹配似乎不太理想,因爲它不能正式表示一種語言幾乎和af一樣形式語法;然而,一些不太正式的語言將難以適應BNF(即減價 - 雖然我知道有很好的PEG implementation)。
現場語法突出顯示的性能權衡是什麼?對於各種語言的靈活性如何?
如果我去BNF路線,託德Ditchendorf創建了很棒的ParseKit框架,可以很好地開箱即用。任何人都知道任何類似的PEG的?
謝謝。理性思維盛行... – Lytol 2010-11-13 17:41:00