绑定解析器;重新解析消耗的数据

时间:2018-11-16 15:52:38

标签: f# fparsec

我有一个用于URI查询的解析器。该查询是十六进制/ URI编码的。

我还有一个解码字符串的解析器;一种从查询参数中生成键-值-选项对。

我想进行两阶段通过;一个用于检测查询字符串,另一个用于解析查询字符串的内容;并将它们组合到一个FParsec解析器中。

或者简而言之;

let private Predicate i =
        isPchar i
     || i = 0x2f // /
     || i = 0x3f // ?

let contentP =
    PercentEncoding.makeParser Predicate

let paramsP =
    contentP >>= fun q ->
    run QueryParams.queryParamsP q

但是,contentP推进CharStream的状态,而run ...产生ParseResult,而不是解析器。我真的想做类似contentP |> Parser.bindSuccess queryParamsP的事情,同时返回预期的解析器状态。

如何用FParsec来表达这一点?

0 个答案:

没有答案