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 回答