コメントを文法に追加する方法として次の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 件のコメント:
コメントを投稿