String和CharStream<'a>在FParsec

时间:2012-05-02 15:22:47

标签: f# fparsec

我想解析一个大句子,它可以包含fsharp中的名字。 我认为名字的形式是名字+姓氏。 如果没有名字列表(找不到,稍后会做),我说第一个名字是一个长度为4或更长的字符串,对于姓氏来说是相同的。

当我尝试使用非常智能的解析器时

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

因此,它适用于两者,但问题是它只消耗4个字符,这不是Christophe所希望的行为。我希望消费整个词。

如何指示FParsec使用整个单词,但如果单词少于4个字符则会失败?

1 个答案:

答案 0 :(得分:2)

没有测试过,但我认为应该这样做:

let firstOrLastName = manyMinMaxSatisfy 4 Int32.MaxValue isLetter