How to match parentheses / brackets in pyparsing

只谈情不闲聊 提交于 2019-12-31 02:00:06

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!