Parsing 如何在Parsec中从可选解析器中检索值?
抱歉,如果这是一个新手问题-我想解析Parsing 如何在Parsec中从可选解析器中检索值?,parsing,haskell,optional,parsec,Parsing,Haskell,Optional,Parsec,抱歉,如果这是一个新手问题-我想解析 Exp ::= Mandatory_Part Optional_Part0 Optional_Part1 我想我可以做到这一点: proc::Parser String proc = do { ;str<-parserMandatoryPart ;str0<-optional(parserOptionalPart0) --(1) ;str1<-optional(parserOptionalPart1)
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
}
proc::解析器字符串
proc=do{
;str您要查找的函数是optionMaybe
。如果解析器失败,它将返回Nothing
,如果使用了输入,则返回中的内容。来自:
选项x p
尝试应用解析器p
。如果p
在不使用输入的情况下失败,则返回值x
,否则返回值p
所以你可以做:
proc :: Parser String
proc = do
str <- parserMandatoryPart
str0 <- option "" parserOptionalPart0
str1 <- option "" parserOptionalPart1
return (str++str0++str1)
proc::解析器字符串
proc=do
str Keegan,谢谢你的回答和修改我的代码。它基本上按照我想要的方式工作-在原始帖子中没有描述的案例中存在一些问题。我对Haskell和Parsec都是新手,我将阅读并尝试更多。谢谢。