分析器标识符和自由格式文本.这可以用FParsec完成吗?

Jon*_*ats 5 f# fparsec

作为后续内容:如何使用fparsec测试正好2个字符?

我需要解析一个字符串,其中包含一对标识符,后跟自由格式文本.我可以很容易地构造一个解析器,它找到了newline形式的标识符,后面跟着一个空格,后面跟着一个空格.与前面的标识符相关联的自由格式文本是标识符之后的所有内容,但不包括下一个标识符.

例如:

AB Now is the
time for all good
men.
CD Four score and seven years ago EF our.
Run Code Online (Sandbox Code Playgroud)

包含两个标识符ABCD两个自由格式文本

Now is the \ntime for all good men.
Four score and seven years ago EF our.

我的问题是我不知道如何构造一个与自由格式文本匹配但不匹配标识符的解析器.这是我需要做回溯的情况吗?

可以这样做,如果是这样的话怎么办?

Tar*_*mil 3

我想notFollowedBy这就是你要找的。这应该可以解决问题:

// adapted from the other question
let identifier = skipNewline >>. manyMinMaxSatisfy 2 2 CharParsers.isUpper

let freeform = manyChars (notFollowedBy identifier >>. anyChar)
Run Code Online (Sandbox Code Playgroud)