如何匹配pyparsing中的括号/括号

时间:2012-08-15 06:33:35

标签: python grammar pyparsing

我将语法标记指定为:

list_value = Suppress(oneOf("[ (")) + Group(
    delimitedList(string_value | int_value))("list") + Suppress(oneOf("] )"))

但是,这显然允许(foo, bar]

如何强制列表开始和结束字符必须匹配?

1 个答案:

答案 0 :(得分:3)

您可以在两个规则之间选择一个列表:一个用于括号,一个用于方括号。谢谢你提出了pyparsing。我喜欢。我对你的问题的回答是:

delim_value = Group(delimitedList(string_value | int_value))("list")
list_value = Or( (Suppress("[") + delim_value + Suppress("]"),
                  Suppress("(") + delim_value + Suppress(")")) )