2013年10月7日月曜日

PEGパーサいつ使うの?

私の勝手な解釈ですが、「Parsing Expression Grammarは正規表現のような規則を文法
規則に微分的に適用して、制御可能にして文規則を解析する解析器」と考えたのですが、
これは間違いでしょうか?

確かにWikiに書かれているようにPEGが解釈されるのは一般的にはこれでいいのですが、
折角ANTLRの使いずらい部分を解決してくれるPEGで有るのならば、もう少し柔軟性が
ある解釈でもいいのではないのか?

これが現在の私の考え方です。
なんでこんなことを考えているのかと説明すると、
各プログラム言語はコンパイラやインタープリタがもちろん備わっているのですが、
昔のC言語やアセンブラの解析器のように、プログラムのマップ情報を詳細に提供を
なかなか標準でしてくれるものがありません。

また例えこれができても、現在Javascriptで起きている、言語のDSL化には対応が困難な
状況にあります。これはJQueryやCoffeeScriptを利用すると明らかになります。

現実的にBackbone.jsを使うとGUIのプログラムは魔法のように簡単に綺麗にコード化
できるので、これらの技術を採用しないことは、現実的に不可能になりつつあると考えて
います。
この現象は、Javaが進めてきた路線とは違い、
「非常に自由なアイデアで考えてられた、思考の結晶」のような気がしています。

話をPEGに戻しますが、今の開発状況ではPEGが一番役立つパーサであると
考えています。
逆に従来のPEG以外の文法解析だけで現実現場で使えるツールを作成することは、
時間的に不可能な気がしています。技術の進歩に着いていけないと考えています。

PEG解析するのはこれでいいのですが、プログラム合成の方はPEGをこのままの定義に
してしまうのは非常にもったいない気がしています。
そもそもなぜコードを文法解析しているのか?の疑問に立つと、せいぜいコード管理や
テストのスクリプトに役立てるぐらいでしょうか。

「ならばPEGをプログラム合成でも利用できる解釈のツールにすれば良いのでは?」
こんな自由な考え方をしてみました。
これが冒頭で私なりのPEGの定義をした理由です。

現在このアイデアでPrologを使いツールを作成中です、完成すれば公開したいと考えて
います。

最後に、「PEGパーサ使うのは今でしょう。」


追伸:
以前から気になっていた、OMetaについて、アイデアが同じことに気が付いたので調査しました。
OMetaとは、プログラム言語を定義したり、作ることができる言語でPEGパーサの仕組みで
動作しています。ということで本件は既に証明されていることでした。
OMetaの検索件数が17200件は少なすぎる気がしています。2007年ごろから巷を騒がして
来た技術なので、もう少し盛んに利用されていると考えましたが、ほとんど利用技術が出ていない
ようです。
何故か不思議に思い推測してみました。
結局、言語を変換や作成できても進歩したことは言語を作成したことであり、新しく何かを
自動で作成した訳ではないからだと思います。
新しくアルゴリズムを作成した訳ではなく、APIを作成した訳ではなく、変換を証明してくれた
ことが成果だと考えます。(でも何か相当役に立つことがあるような気がします???)




0 件のコメント:

コメントを投稿