我正在尝试使用attoparsec从3个字符中解析两个整数。示例输入可能如下所示:
341
我想要将其解析为:
Constructor 34 1
我有两个解决方案,它们都能够工作,但有些繁琐:
stdK :: P.Parser Packet
stdK = do
P.char '1'
qstr <- P.take 2
let q = rExt $ P.parseOnly P.decimal qstr
n <- P.decimal
return $ Std q n
stdK2 :: P.Parser Packet
stdK2 = do
P.char '1'
qn <- P.decimal
let q = div qn 10
let n = rem qn 10
return $ Std q n
实现这么简单的事情一定有更好的方法,我是不是漏掉了什么?
char '1'
?这样无法解析输入样例"341"
。 - Dogbert