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