Как получить значение из необязательного синтаксического анализатора в Parsec?

Извините, если это вопрос новичка - я хочу разобрать что-то, определенное в

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.

Теперь Каким будет правильный способ для этого?

Большое спасибо!

Билли Р.

6
задан Chris Stryczynski 21 November 2017 в 11:23
поделиться