2013年11月2日土曜日

TinyPG(a Tiny Parser Generator)

やっと一発目。TinyPGを。

TinyPG(a Tiny Parser Generator)とは、Herre Kuijpers氏が作成したC#(またはVB)パーサージェネレーターです。
LL(1)に基づく構文解析を行うソースを生成します。
※LL(1)とか構文解析とかの意味は各自ググってください。

実行ファイル入手


tinyPGの公開サイトからファイルをダウンロードします。
とりあえず動かすだけならサイトの「Download TinyPG v1.3 binaries - 88.9 KB」をクリックしてダウンロード&任意のフォルダに解凍しましょう。
※ダウンロードするにはCODEPROJECTのアカウントが必要です。

実行


解凍したフォルダの中のTinyPG.exeを実行します。

画面が表示されるので、メニューのView - Outputを選択します。同様に、View - Expression evaluatorを選択します。
画面が三分割されます。それぞれ、
左上 :構文解析定義
左下 :解析したい構文
右半分:解析結果
を表示します。

構文解析してみる


実際に構文解析してみます。手っ取り早くサンプルを使ってみます。
メニューのHelp - Examplesを選択すると構文解析定義のサンプルがいくつかあります。今回はSimple Expression calculator(簡単な計算式の構文解析)を選択します。

選択すると構文解析定義がメモ帳(とか)で表示されるので、TinyPGの画面左上にコピペします。
ついでに、画面左下に
(1-2)+(3*4)
と入力しておきます。

ここまでできたらF5キーを押下するか、メニューのBuild - Generate & Runを選択します。途中、構文解析定義を保存するためのダイアログが表示されますが、適当なパスに保存して問題なしです。

構文解析結果


上記を行うとOutputに解析結果が出力されます。


一番下の行に
Evaluating...
Result: 11
と表示されますが、これが(1-2)+(3*4)の構文解析した結果になります。
また、Parse Treeには字句をどうやって分解したか、構文木を表示します。

構文解析定義をどうやって記述するかとかは後ほど。。。
ソレデハ。