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