IronyのGrammarExplorerを使って文法をテストする。 | 妄想プログラマのらくがき帳

2012年10月13日土曜日

IronyのGrammarExplorerを使って文法をテストする。

IronyにはGrammarExplorerというツールがあります。
GrammarExplorerを使うことで定義した文法クラスを簡単にテストすることができます。

IronyとGrammarExplorerはこちらからダウンロードできます。
Irony - .NET Language Implementation Kit
Ironyのソリューションファイルの中にGrammarExplorerが含まれています。

GrammarExplorerを起動すると次の画面が表示されます。












画面左上のGrammarコンボボックスの右側にあるボタンでAdd grammarを選択すると、
文法クラスを含むアセンブリを選択するダイアログが表示されます。
初期表示ではDllファイルしか選択できないように見えますが、
ファイル名を直接入力すればexeファイルも選択できます。

アセンブリを選択するとアセンブリに含まれる文法の一覧が表示されるので、
テストしたい文法を選択します。













今回は以前のエントリーで定義したサンプル文法クラスをテストしてみます。

文法を選択すると、終端文字一覧や非終端文字一覧、パーサの状態一覧が各タブページに表示されます。
これらを見れば、ちゃんと意図した通りに定義できているのか確認することができます。

文法のテストで使用するのはTestタブです。
まず、Testタブページのテキストボックスにパース対象の文字列を記述します。
次にParseボタンを押すと、右側のParse Treeにパーシングによって生成されたTreeが表示されます。














Tree上でノードを選択すると、テキストボックスで該当する箇所が選択状態になります。
(ただし、選択状態になるのは該当箇所の先頭文字のみみたいです)
逆の機能もあります。Locate>>ボタンを押すとテキストボックス上のカーソル位置にあるノードが
Tree上で選択状態になります。

パース対象文字列に文法エラーがある場合、ParseTreeは表示されません。
代わりに画面下部のParser Outputにエラーとなった箇所とエラーメッセージが表示されます。
VSのエラー一覧のような感じに表示されます。

また、画面下部のParser TraceでEnable Traceにチェックを入れると、
パーサの動作をトレースするようになります。
チェックをいれてParseボタンを押すと、次のようなトレース情報が表示されます。














パーサの状態、スタックのトップ、入力トークン、パーサの動作が時系列に表示されるので、
パーサが文字列をパースする経過がよく分かります。

GrammarExplorerは複雑な文法を定義するときに欠かせないツールなので、
Ironyを使うなら使いこなせるようになっておきましょう!

0 件のコメント:

コメントを投稿