Como analisar comentários com o FParsec
Estou tentando analisar comentários no estilo lisp de uma linguagem de expressão s com o FParsec. Eu recebi ajuda para analisar comentários de linha única neste tópico anterior -Como converter um analisador FParsec para analisar o espaço em branco
Enquanto isso foi resolvido, ainda preciso analisar comentários de várias linhas. Aqui está o código atual -
/// 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
Infelizmente, a análise multilineComment nunca é bem-sucedida. Como esse é um combinador, não posso colocar pontos de interrupção nem analisar por que ele não funcionar
Alguma idéia por que não vai funcionar?