[Pyparsing] use of Dict
Brought to you by:
ptmcg
From: June K. <jun...@gm...> - 2008-02-15 16:47:08
|
Hi. The following code doesn't work: >>> p=Dict(Keyword("hello")+'abc')+Dict(Keyword("world")+Word(nums)) >>> p.parseString("hello abc world 2134") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\python25\lib\site-packages\pyparsing-1.4.11-py2.5-win32.egg\pyparsing .py", line 980, in parseString loc, tokens = self._parse( instring.expandtabs(), 0 ) File "c:\python25\lib\site-packages\pyparsing-1.4.11-py2.5-win32.egg\pyparsing .py", line 860, in _parseNoCache loc,tokens = self.parseImpl( instring, preloc, doActions ) File "c:\python25\lib\site-packages\pyparsing-1.4.11-py2.5-win32.egg\pyparsing .py", line 2174, in parseImpl loc, resultlist = self.exprs[0]._parse( instring, loc, doActions, callPrePar se=False ) File "c:\python25\lib\site-packages\pyparsing-1.4.11-py2.5-win32.egg\pyparsing .py", line 866, in _parseNoCache tokens = self.postParse( instring, loc, tokens ) File "c:\python25\lib\site-packages\pyparsing-1.4.11-py2.5-win32.egg\pyparsing .py", line 2831, in postParse dictvalue = tok.copy() #ParseResults(i) AttributeError: 'str' object has no attribute 'copy' If I enclose the expression inside Dict with something like Group, it works okay. That is, >>> p=Dict(Group(Keyword("hello")+'abc'))+Dict(Group(Keyword("world")+Word(nums))) >>> p.parseString("hello abc world 2134") ([(['hello', 'abc'], {}), (['world', '2134'], {})], {'world': [('2134', 1)], 'he llo': [('abc', 0)]}) Is this intended? I thought Dict should always implicitly mean Group. |