6
FParsecでs式の言語からlispスタイルのコメントを解析しようとしています。この前のスレッドで1行のコメントを解析するのに少し助けがありました - How to convert an FParsec parser to parse whitespaceFParsecでコメントを解析する方法
これは解決されましたが、複数行のコメントを解析する必要があります。現在のコードは次のとおりです。
/// Read whitespace character as a string.
let spaceAsStr = anyOf whitespaceChars |>> fun chr -> string chr
/// Read a line comment.
let lineComment = pchar lineCommentChar >>. restOfLine true
/// Read a multiline comment.
/// TODO: make multiline comments nest.
let multilineComment =
between
(pstring openMultilineCommentStr)
(pstring closeMultilineCommentStr)
(charsTillString closeMultilineCommentStr true System.Int32.MaxValue)
/// Read whitespace text.
let whitespace =
lineComment <|>
multilineComment <|>
spaceAsStr
/// Skip any white space characters.
let skipWhitespace = skipMany whitespace
/// Skip at least one white space character.
let skipWhitespace1 = skipMany1 whitespace
残念ながら、multilineCommentの解析は成功しません。これはコンビネータであるため、ブレークポイントを設定したり、動作しない理由を分析することはできません。
なぜそれがうまくいかないのでしょうか?
ああ、素晴らしいで動作するように!私はそれが深い根底にあるパーサの問題であると思うことによって気を散らしましたが、それは私が無意識に指定したブール値でした!ありがとうございました! –
アップデートを参照してください。 – Gustavo
難しそうなホーリー・モリ!私は頼んだことがうれしいです!私はそれを得ることができるまで私はgrokしようとしている:)再びありがとう! –