朝五時、おはようございます。
今回は、久々に、プログラミングねたです。
さて、今何を作っているかと言うと、
エディタのコード補完機能を作りこもうとしています。
単に、何のルールもなしに補完リストを提示することなら、
既に出来てるのですが、
これを、構文木を用いて、パーサーを活用して補完リストを作る、
物凄く簡単に言うと、市販のIDEや凄い高性能なフリーのエディタとかに、
搭載されている、インテリジェンスな、考えてリストを提示するコード補完。
これを作ろうとしています。
最初は、パーサーの自作を考えたのですが、それはハードルが高すぎて挫折、
今は、Yacc等を用いた、パーサーを自動生成するツールを使って自作します。
PYaccなるツールを見つけ、Pascalコードを吐くYaccを見つけはしたのですが、
手持ちのDelphiでも、Lazrusでも、コンパイルエラーで動かない。
さぁ参ったぞ。
てことで、Pascalコードを吐くYaccを活用する事は諦めて、
CなりC++なりの、一般的なYaccを使用、
これをエディタに取り込み、複数言語での開発スタイルに、
切り替えようかと考えています。
しかし、Yacc対する理解がまだ不足しているので、
どう言うアルゴリズムと、どのような仕様で、
それが実現できるのか、まだ先行き不透明です。
因みに、Yaccとは、コンピュータ言語を作る時に欠かせないツールで、
例えば、東大での学習の1年次のカリキュラムでは、
Yacc等を用いて、オリジナル言語を作成すると言う、
有名な逸話があります。
まぁ、彼らが出来て自分に出来ないと言うのは、
さすがにすっきりしないので、
何とか実装して、その上をいきたいものですな。
基本的には、Yaccやパーサーを自作するのではなく、
利用するだけですので、動作原理や使い方さえコツつかめば、
結構いけそうな感じです。
何とか、マルチプラットフォームでのプログラミングエディタ、
完成させたいです。
今のところ、総行数1万2千行ちょっと。
そして、WinからMacに移植中。
さて、朝のこの時間帯を活用して、Yaccの勉強しますか。
自分にしか作れないエディタを作る!
必ず完成させまっせ^お^v
それでは。