2012-02-08 16 views
1

FParsecを使用して文字列リテラルを解析したいと思います。FParsecで文字列リテラルを解析するには?

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

しかし、これは後に停止:

'Please, switch off your mobile phone' 

私が現在やっていることは次のようである: - (単一引用符私の場合)、「文字列リテラル」と私が開閉引用符の間に何かを意味します消費された最初の手紙。それを貪欲にする方法はありますか?

+1

FParsecチュートリアルでは、http://www.quanttec.com/fparsec/tutorial.html#parsing-string-dataで文字列リテラルを解析する方法について説明しています。 –

答えて

7

これはすでに貪欲です。 manySatisfy isLetterは、入力ストリームから一連の文字を解析します。

問題は、パーザが,またはスペースで失敗していることです。文字がないためです。

明示的
manyChars (noneOf "'") 

以上を使用して::代わりに

manySatisfy ((<>) '\'') 

をそれは使用して固定することができます。

+0

'manySatisfy'のような文字列パーサーを使用すると、 'manyChars'と' satisf'の組み合わせです。 – pad

+0

あなたは正しいです、 'manySatisfy'が' string'を返すのを忘れました。 – Guvante

関連する問題