我有两个用于不同类型术语的解析器。
a :: Parser A
b :: Parser B
我有一个表示这些术语序列的数据类型。
data C = C [A] [B]
如果我的输入是一系列混合术语,那么将s 与sc :: Parser C分开并保留它们的顺序的好方法是什么?例如,给定这些定义:AB
data A = A Char
data B = B Char
a = A <$> oneOf "Aa"
b = B <$> oneOf "Bb"
"abAbBBA"将解析为序列aAA和bbBB. 我有一种需要使用的感觉StateT,但不确定具体细节,只需要朝着正确的方向推进。