晴耕雨読

working in the fields on fine days and reading books on rainy days

[C#] 構文解析器Spracheでコメントを読み取る (CommentParser)

構文解析器のSpracheでコメントを読み取るメソッド一覧について説明します。

Comment()

CommentParser の引数でコメントの記載方法を指定します。 引数が3つのときは範囲コメントのみ読み取ることができます。 引数が4つのときは単行コメントと範囲コメントの両方を読み取ることができます。

  • CommentParser(string multiOpen, string multiClose, string newLine)
  • CommentParser(string single, string multiOpen, string multiClose, string newLine)

CommentParser クラスをインスタンス化すると、以下のメソッドが使用できるようになります。

  • Parser<string> AnyComment
  • Parser<string> MultiLineComment
  • Parser<string> SingleLineComment
var comment = new CommentParser("<!--", "-->", "\r\n");

Assert.Equal(" Commented text ", comment.AnyComment.Parse("<!-- Commented text -->"));

// 単行コメントが未設定のときに SingleLineComment を呼び出すとエラーになる
Assert.Throws<ParseException>(() => comment.SingleLineComment);

引数省略時は new CommentParser("//", "/", "/", "\n") と同じになります。

var comment = new CommentParser();

Assert.Equal("single-line comment", comment.SingleLineComment.Parse("//single-line comment"));
Assert.Equal("multi-line comment", comment.MultiLineComment.Parse("/*multi-line comment*/"));

以上です。

参考資料