improved equality checking
Brought to you by:
ptmcg
I might be the first person to ever equality-test pyparsing grammars, but I need to for pyparsing_helper to work right, and it looks like ParserElement.__eq__ wasn't written to support that.
[[code]]
In [41]: Literal('a') == "a"
Out[41]: True
In [42]: Literal('a') == Literal('a')
Out[42]: False
A minor change to ParserElement.__eq__ will fix that.
patch for more powerful equality comparisons
Looks good overall. When I've implemented equality checks in the past, I usually put in a shortcut up front in case an object is being tested for equality with itself. This would change your patched in test to something like:
return self is other or self.__dict__ == other.__dict__
When I've proposed something like this in the past on c.l.py, I've gotten mixed responses ("Python is not Java" for instance) - since you have a *real* application that depends on this, could you try making this mod, and see if there is any benefit? If it turns out that you are often testing grammars against themselves, then this could avoid the needless and possibly expensive self.__dict__ equality comparison.
Let me know what you think, and I'll check in an updated pyparsing.py into SVN.
-- Paul