Irony コメントを文法に追加する。 | 妄想プログラマのらくがき帳

2012年10月21日日曜日

Irony コメントを文法に追加する。

今回もIronyネタ。

コメントを文法に追加する方法として次の2通りの方法があります。

1.GrammarクラスのNonGrammarTerminals変数に、コメントを表すTerminalクラスを追加する。

GrammarクラスのNonGrammarTerminalsに追加したTerminalは、
文字列をパースする際に無視されるようになります。ParseTreeにも追加されなくなります。
以下が自作GrammarクラスのコンストラクタでコメントをNonGrammarTerminalsに追加する例です。
//コメントを定義
var comment = new CommentTerminal("comment", "//", "\n", "\r");
//コメントを非文法終端記号として追加
this.NonGrammarTerminals.Add(comment);

2.コメントを表すTerminalを文法の1部として扱う

ParseTreeでコメントを扱いたい場合があります。
コメントからドキュメント生成したい!といった場合などです。
そのような場合、1の方法だとParseTreeにコメントが追加されないので不都合です。
こんな時はコメントを文法の中に組み込む方法を使います。
//コメントを定義
var comment = new CommentTerminal("comment", "//", "\n", "\r");
//コメントを文法の一部として追加
ProgramLine.Rule = Statement + ToTerm(";") | comment;
Program.Rule = MakeStarRule(Program, ProgramLine);
こっちの方法だとParseTreeにコメントが追加されます。

0 件のコメント:

コメントを投稿