2

FParsecを使用して文字列リテラルを解析したいと思います。「文字列リテラル」とは、引用符の開始と終了の間の何かを意味します(私の場合は一重引用符)。

'Please, switch off your mobile phone'

私が現在行っていることは次のとおりです。

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

しかし、これは最初の文字が消費された後に停止します。それを貪欲にする方法はありますか?

4

1 に答える 1

8

すでに貪欲です。manySatisfy isLetter入力ストリームからの文字のシーケンスを解析します。

問題は、パーサーが,文字ではないため、またはスペースで失敗することです。これは、次を使用して修正できます。

manyChars (noneOf "'")

またはより明示的に使用する:

manySatisfy ((<>) '\'')

代わりは。

于 2012-02-08T14:11:32.957 に答える