我想解析一个大句子,它可以包含fsharp中的名字。 我认为名字的形式是名字+姓氏。 如果没有名字列表(找不到,稍后会做),我说第一个名字是一个长度为4或更长的字符串,对于姓氏来说是相同的。
当我尝试使用非常智能的解析器时
let firstorlastname x = (parray 4 letter) x
firstorlastname "JEAN"
firstorlastname "CHRISTOPHE"
因此,它适用于两者,但问题是它只消耗4个字符,这不是Christophe所希望的行为。我希望消费整个词。
如何指示FParsec使用整个单词,但如果单词少于4个字符则会失败?
答案 0 :(得分:2)
没有测试过,但我认为应该这样做:
let firstOrLastName = manyMinMaxSatisfy 4 Int32.MaxValue isLetter