diff options
| author | Rafael H. Schloming <rhs@apache.org> | 2009-12-17 04:56:17 +0000 |
|---|---|---|
| committer | Rafael H. Schloming <rhs@apache.org> | 2009-12-17 04:56:17 +0000 |
| commit | 6f485818cbf237cdcd6fd3bfc7215b61f3656e14 (patch) | |
| tree | ae4f927d2da1659abe8327dad63f8eb867ceb462 /python/qpid/address.py | |
| parent | c71bc44601cf19be29be9565f52e512a1e3cb158 (diff) | |
| download | qpid-python-6f485818cbf237cdcd6fd3bfc7215b61f3656e14.tar.gz | |
QPID-2286: added list support to address parser
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@891536 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/qpid/address.py')
| -rw-r--r-- | python/qpid/address.py | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/python/qpid/address.py b/python/qpid/address.py index 5c675b8782..6228ac757b 100644 --- a/python/qpid/address.py +++ b/python/qpid/address.py @@ -24,6 +24,8 @@ l = Lexicon() LBRACE = l.define("LBRACE", r"\{") RBRACE = l.define("RBRACE", r"\}") +LBRACK = l.define("LBRACK", r"\[") +RBRACK = l.define("RBRACK", r"\]") COLON = l.define("COLON", r":") SEMI = l.define("SEMI", r";") SLASH = l.define("SLASH", r"/") @@ -128,8 +130,30 @@ class AddressParser(Parser): return tok2obj(self.eat()) elif self.matches(LBRACE): return self.map() + elif self.matches(LBRACK): + return self.list() else: - raise ParseError(self.next(), NUMBER, STRING, ID, LBRACE) + raise ParseError(self.next(), NUMBER, STRING, ID, LBRACE, LBRACK) + + def list(self): + self.eat(LBRACK) + + result = [] + + while True: + if self.matches(RBRACK): + break + else: + result.append(self.value()) + if self.matches(COMMA): + self.eat(COMMA) + elif self.matches(RBRACK): + break + else: + raise ParseError(self.next(), COMMA, RBRACK) + + self.eat(RBRACK) + return result def parse(addr): return AddressParser(lex(addr)).parse() |
