-
Notifications
You must be signed in to change notification settings - Fork 166
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
構文解析に外部ライブラリを使うように変更したい #1804
Comments
テキストエディタの構文解析で最近使われてるのは Tree-sitter とかみたいです。 要件的にはある程度大きい文書の解析をやってもUIが固まらない事が求められそうですね。 追記:ちゃんと説明文読んでなかったんですが、テキストエディタ部分ではなくてそれ以外の部分の解析処理なんですね。 |
外部ライブラリの適用先としては 2Kbytes未満 の小さいテキストの解析を想定していましたが、 ■エディタ本体への適用が難しい理由
色々課題はあるにしろ「解決できなくはない課題」だと思うので「不可能ではない」になります。 |
C++11の前までは自分もboostを使っていたんですが、最近は使っておらず良く分かりません。 |
導入イメージを持ちやすくするために、検証中ブランチをpushしてみました。 自分も最近はあまり触っていないので、実はそれほど詳しくないです。 |
ちなみに、
|
字句解析に限定するなら ライブラリの依存関係をたくさん追加するとビルドのお手軽さが減ってしまう点に抵抗感があります。 |
VS CodeのようにTextMateの仕組みに乗っかるのが手っ取り早いと思いますが、C/C++からどうやって利用するのかという疑問は解決できませんでした。 |
(必須) やりたいこと(=実現したいこと)
構文解析に外部ライブラリを採用することにより、
コード中の構文解析のルールが分かるようにしたいです。
背景事情
サクラエディタには、入力されたテキストを解析してプログラムで利用できるカタチに変換する処理(以下、構文解析)がいくつか存在します。文字配列のインデックス操作と文字列操作のCランタイムルーチンによる自前実装なので、何をしているか読み取りづらくなっています。
主要な構文解析
他にもあります。。。
Grepのファイル名指定やバックアップファイル名なんかも、実質的に構文解析してるかと思います。
(省略可) 解決手段の提案
構文解析ライブラリ
Boost::Spirit
の採用を提案します。ライブラリを使えば、先に構文規則を決めてルールベースで入力を処理するスタイルに転換できると思います。
構文解析をライブラリに任せることにより「構文に従わない入力」をどうするか、マジメに考えられるようになります。
現状は「構文に従わない入力」を読み捨てていて、読み捨てたことを教えてくれない実装になっています。
読めなかったら教えてくれたほうが嬉しい。
と個人的には思うので、是非外部ライブラリを採用したいです。
The text was updated successfully, but these errors were encountered: