首页 > 解决方案 > Haskell - 用另一个解析器散布解析器

问题描述

我有两个解析器parser1 :: Parser aparser2 :: Parser a.

我现在想解析一个a穿插它们的 s列表parser2

所需的签名类似于

interspersedParser :: Parser b -> Parser a -> Parser [a]

例如,如果Parser a解析'a'字符并Parser b解析'b'字符,那么interspersedParser应该解析

""
"a"
"aba"
"ababa"
...

我正在使用megaparsec。是否已经有一些行为像这样的组合器,我目前无法找到?

标签: parsinghaskellmegaparsec

解决方案


在 parsec 中有一个sepBy解析器可以做到这一点。相同的解析器似乎也可以在 megaparsec 中使用:https ://hackage.haskell.org/package/megaparsec-4.4.0/docs/Text-Megaparsec-Combinator.html


推荐阅读