0
私はparsecライブラリを試していますが、この基本的なタスクをどのように処理するかはわかりません。残りの入力がparsecの空白であるかどうかを確認する
data Foo = A | AB
と私は文字列「」A
として解析すると、「B」AB
たい:
は、私は次があるとします。私はこれを行う場合:
parseA :: parser Foo
parseA = do
reserved "a"
return A
parseAB :: parser Foo
parseAB = do
reserved "a"
reserved "b"
return AB
parseFoo :: parser Foo
parseFoo = parseA
<|> parseAB
はその後
parseFoo
はまだ「A」を消費した後に残った非空白があることを気にしない
parseA
以来
A
として「b」を解析します。どのようにこれを修正することができますか?
申し訳ありませんが動作するはずです、私は私が 'parseAB'が正常に動作していることを明らかにしている必要があり、それは私が問題を抱えているparseFoo'は'です。 – user181407
ああ、持っています。あなたの文法はバックトラックが必要です –
あなたは文法をAB | Aと 'の試み'を使用してください私の目的のためには、parsec –