5

フォローアップとして: fparsec で正確に 2 文字をテストするにはどうすればよいですか?

識別子のペアとそれに続く自由形式のテキストで構成される文字列を解析する必要があります。改行の後にちょうど 2 つの大文字とスペースが続く形式の識別子を見つけるパーサーを簡単に作成できます。前の識別子に関連付けられている自由形式のテキストは、識別子に続くすべてのものですが、次の識別子は含まれません。

たとえば、次のようになります。

AB Now is the
time for all good
men.
CD Four score and seven years ago EF our.

2 つの識別子ABCD2 つのフリーフォーム テキストを 含む

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

私の問題は、自由形式のテキストには一致するが識別子には一致しないパーサーを作成する方法がわからないことです。これは、バックトラックを行う必要がある場合ですか?

これを行うことができますか?

4

2 に答える 2

3

notFollowedByはあなたが探しているものだと思います。これでうまくいくはずです:

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

let freeform = manyChars (notFollowedBy identifier >>. anyChar)
于 2013-05-14T09:28:46.763 に答える