对不起,如果这是一个新手问题 - 我想解析定义的东西
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
}
Run Code Online (Sandbox Code Playgroud)
如果存在可选部分,我想获得str0/str1,否则str0/str1将是"".但是(1)和(2)将不起作用,因为optional()不允许从其参数中提取结果,在本例中为parserOptionalPart0/parserOptionalPart1.
现在做什么是正确的方法?
非常感谢!
比利河