Yaccと構文木、パーサー。 – Information Teaching Service 雄飛

Yaccと構文木、パーサー。

朝五時、おはようございます。

今回は、久々に、プログラミングねたです。

さて、今何を作っているかと言うと、
エディタのコード補完機能を作りこもうとしています。

単に、何のルールもなしに補完リストを提示することなら、
既に出来てるのですが、

これを、構文木を用いて、パーサーを活用して補完リストを作る、
物凄く簡単に言うと、市販のIDEや凄い高性能なフリーのエディタとかに、
搭載されている、インテリジェンスな、考えてリストを提示するコード補完。

これを作ろうとしています。

最初は、パーサーの自作を考えたのですが、それはハードルが高すぎて挫折、

今は、Yacc等を用いた、パーサーを自動生成するツールを使って自作します。

PYaccなるツールを見つけ、Pascalコードを吐くYaccを見つけはしたのですが、
手持ちのDelphiでも、Lazrusでも、コンパイルエラーで動かない。

さぁ参ったぞ。

てことで、Pascalコードを吐くYaccを活用する事は諦めて、
CなりC++なりの、一般的なYaccを使用、
これをエディタに取り込み、複数言語での開発スタイルに、
切り替えようかと考えています。

しかし、Yacc対する理解がまだ不足しているので、
どう言うアルゴリズムと、どのような仕様で、
それが実現できるのか、まだ先行き不透明です。

因みに、Yaccとは、コンピュータ言語を作る時に欠かせないツールで、
例えば、東大での学習の1年次のカリキュラムでは、
Yacc等を用いて、オリジナル言語を作成すると言う、
有名な逸話があります。

まぁ、彼らが出来て自分に出来ないと言うのは、
さすがにすっきりしないので、
何とか実装して、その上をいきたいものですな。

基本的には、Yaccやパーサーを自作するのではなく、
利用するだけですので、動作原理や使い方さえコツつかめば、
結構いけそうな感じです。

何とか、マルチプラットフォームでのプログラミングエディタ、
完成させたいです。

今のところ、総行数1万2千行ちょっと。

そして、WinからMacに移植中。

さて、朝のこの時間帯を活用して、Yaccの勉強しますか。

自分にしか作れないエディタを作る!
必ず完成させまっせ^お^v

それでは。

コメントをどうぞ

メールアドレスが公開されることはありません。 が付いている欄は必須項目です