我想为 Parsec 解析器编写一个测试。这是解析器和数据结构的示例:
data Event = Event { keyEvent :: String }
deriving Show
parseKey :: Parser Event
parseKey = do
char '<'
k <- many1 (letter <|> digit <|> oneOf "_")
char '>'
return $ Event k
我知道我需要检查parse = parse . pretty . parse
财产。但是我应该如何生成正确和不正确的测试用例呢?一般来说,我应该如何为给定的BNF生成测试用例?我知道instance Arbitrary
,但对此没有太大帮助。
如果您为这个简单的解析器提供一个注释良好的生成器示例,我将不胜感激。