【发布时间】:2017-04-09 12:59:28
【问题描述】:
问题说明:解析"ABCDFGABIJABGHA"中的字符串"AB"
约束:使用ReadP
预期解决方案:(["AB","AB","AB"],"whatever is left")
尝试:
getAll :: ReadP a -> ReadP [a]
getAll p = many loop
where
loop = p <|> (get >> loop)
readP_to_S (getAll $ string "AB") "ABCDFGABIJABGHA"
[([],"ABCDFGABIJABGHA"),(["AB"],"CDFGABIJABGHA"),(["AB","AB"],"IJABGHA"),(["AB"],"IJABGHA"),(["AB","AB","AB"],"GHA"),(["AB","AB"],"GHA"),(["AB","AB"],"GHA"),(["AB"],"GHA")]
我希望最后一个状态是(["AB","AB","AB"],"GHA")。是否可以使用ReadP 做同样的事情?
【问题讨论】:
标签: parsing haskell text-parsing string-parsing