当前位置 : 主页 > 网络推广 > seo >

解析 – 如何从Parsec中的可选解析器中检索值?

来源:互联网 收集:自由互联 发布时间:2021-06-16
对不起,如果这是一个新手问题 – 我想解析定义的东西 Exp :: = Mandatory_Part Optional_Part0 Optional_Part1 我以为我能做到这一点: proc::Parser Stringproc = do { ;str-parserMandatoryPart ;str0-optional(parserOp
对不起,如果这是一个新手问题 – 我想解析定义的东西

Exp :: = Mandatory_Part Optional_Part0 Optional_Part1

我以为我能做到这一点:

proc::Parser String

proc = do {

    ;str<-parserMandatoryPart

    ;str0<-optional(parserOptionalPart0)  --(1)

    ;str1<-optional(parserOptionalPart1)  --(2)

    ;return str++str0++str1

}

如果存在可选部分,我想获得str0 / str1,否则str0 / str1将是“”.
但是(1)和(2)将不起作用,因为optional()不允许从其参数中提取结果,在本例中为parserOptionalPart0 / parserOptionalPart1.

现在做什么是正确的方法?

非常感谢!

比利河

您正在寻找的功能是optionMaybe.如果解析器失败,它返回Nothing,并返回Just中的内容,如果它消耗了输入.
网友评论