问题
I have a grammar token specified as:
list_value = Suppress(oneOf("[ (")) + Group(
delimitedList(string_value | int_value))("list") + Suppress(oneOf("] )"))
However, this obviously allows (foo, bar]
How do I enforce that the lists opening and closing characters must match?
回答1:
You make a list a choice between two rules: one for parentheses and one for square brackets. Thanks for bringing up pyparsing. I like it. My answer for your question is:
delim_value = Group(delimitedList(string_value | int_value))("list")
list_value = Or( (Suppress("[") + delim_value + Suppress("]"),
Suppress("(") + delim_value + Suppress(")")) )
来源:https://stackoverflow.com/questions/11965009/how-to-match-parentheses-brackets-in-pyparsing