Browse Source

Fix a performance regression on Rules related to empties

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.6.6
night199uk 6 years ago
parent
commit
64992aa49c
1 changed files with 5 additions and 1 deletions
  1. +5
    -1
      lark/grammar.py

+ 5
- 1
lark/grammar.py View File

@@ -39,11 +39,14 @@ class Rule(object):
origin : a symbol
expansion : a list of symbols
"""
__slots__ = ('origin', 'expansion', 'alias', 'options', '_hash')
def __init__(self, origin, expansion, alias=None, options=None):
self.origin = origin
self.expansion = expansion
self.alias = alias
self.options = options
self._hash = hash((self.origin, tuple(self.expansion)))


def __str__(self):
return '<%s : %s>' % (self.origin.name, ' '.join(x.name for x in self.expansion))
@@ -52,7 +55,8 @@ class Rule(object):
return 'Rule(%r, %r, %r, %r)' % (self.origin, self.expansion, self.alias, self.options)

def __hash__(self):
return hash((self.origin, tuple(self.expansion)))
return self._hash

def __eq__(self, other):
if not isinstance(other, Rule):
return False


Loading…
Cancel
Save