私はマゾヒスティックに Mac 用のオープンソースのテキスト エディターを作成しており、最終的にシンタックス ハイライトを追加したいところまで来ました。私は過去数日間、さまざまな解決策を行ったり来たりしてきましたが、最終的に、この質問をより多くの聴衆に公開することにしました。
ここに私が見るオプションがあります:
- 基本的に一連の正規表現パターン マッチングを使用して言語を定義します (TextMate が言語を定義する方法と同様)。
- BNF や PEG などの正式な文法で言語を定義する
正規表現パターン マッチングを使用することは、正式な文法とほぼ同じくらい言語を正式に表すことができないため、理想的とは言えません。ただし、形式的でない言語の中には、BNF に適合するのに苦労するものもあります (つまり、Markdown - ただし、優れたPEG 実装があることは知っています)。
ライブ構文強調表示のパフォーマンスのトレードオフは何ですか? 幅広い言語に対する柔軟性はどうですか?
私が BNF ルートに行くとすれば、Todd Ditchendorf が素晴らしいParseKitフレームワークを作成しました。PEGに似たものを知っている人はいますか?