1

fsharp に名前を含めることができる大きな文を解析したいと思います。名前は、名 + 姓の形式であると仮定します。名のリストがない場合 (見つけられない、後で実行します)、名は姓と同じ長さ 4 以上の文字列であると言います。

非常にスマートなパーサーを試してみると

let firstorlastname x = (parray 4 letter)  x
firstorlastname "JEAN"
firstorlastname "CHRISTOPHE"

したがって、両方で機能しますが、問題は 4 文字しか消費しないことです。これは Christophe にとって望ましい動作ではありません。私は言葉全体を消費したいと思います。

FParsec に単語全体を消費するように指示するにはどうすればよいですか? ただし、単語が 4 文字未満の場合は失敗します。

4

1 に答える 1

2

テストしていませんが、これでうまくいくはずです:

let firstOrLastName = manyMinMaxSatisfy 4 Int32.MaxValue isLetter
于 2012-05-02T16:05:51.360 に答える