使用parsec

时间:2017-05-20 06:48:54

标签: haskell parsec

我正在尝试使用parsec库,我不知道如何处理这个基本任务。

假设我有以下内容:

data Foo = A | AB

我希望字符串“a”被解析为A和“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 b”解析为A,因为parseA并不关心在消费'a'后仍然留下非空格。如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您需要将语法更改为<!DOCTYPE html> {% load static %} {% load i18n %} // <-- import for trans tags {% load compress %} 并使用parsec中的AB | A,这为您的解析器提供了前瞻功能。

这应该有效

try