2012-02-08 75 views
1

我想用FParsec解析字符串文字。通過「字符串文字」我的意思是打開和關閉的引號之間的事情(在我的情況 - 單引號):用FParsec解析字符串文字?

'Please, switch off your mobile phone' 

什麼我目前做的是以下幾點:

let string = between (pstring "'") (pstring "'") (manySatisfy isLetter) 

但經過此站消耗的第一個字母。有沒有辦法讓它變得貪婪?

+1

FParsec教程討論瞭如何解析http://www.quanttec.com/fparsec/tutorial.html#parsing-string-data中的字符串文字 – 2012-02-08 14:20:21

回答

7

它已經貪婪; manySatisfy isLetter解析輸入流中的一系列字母。

問題是解析器因,或空格失敗,因爲它們不是字母。它可以固定使用:

manyChars (noneOf "'") 

或者更明確地使用:

manySatisfy ((<>) '\'') 

代替。

+0

我相信使用像「manySatisfy」這樣的字符串解析器應該比'manyChars'和'satisfy'的組合。 – pad 2012-02-08 21:26:35

+0

你說得對,我忘了'manySatisfy'返回一個'string'。 – Guvante 2012-02-08 22:44:30