Browse Source

Saving _hash for symbols isn't necessary

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.8.0
Erez Shinan 5 years ago
parent
commit
de24fa055d
1 changed files with 4 additions and 6 deletions
  1. +4
    -6
      lark/grammar.py

+ 4
- 6
lark/grammar.py View File

@@ -3,13 +3,12 @@ from .utils import Serialize
###{standalone

class Symbol(Serialize):
__slots__ = ('name', '_hash')
__slots__ = ('name',)

is_term = NotImplemented

def __init__(self, name):
self.name = name
self._hash = hash(self.name)

def __eq__(self, other):
assert isinstance(other, Symbol), other
@@ -19,7 +18,7 @@ class Symbol(Serialize):
return not (self == other)

def __hash__(self):
return self._hash
return hash(self.name)

def __repr__(self):
return '%s(%r)' % (type(self).__name__, self.name)
@@ -28,13 +27,12 @@ class Symbol(Serialize):


class Terminal(Symbol):
__serialize_fields__ = 'name', 'filter_out', '_hash'
__serialize_fields__ = 'name', 'filter_out'

is_term = True

def __init__(self, name, filter_out=False):
self.name = name
self._hash = hash(self.name)
self.filter_out = filter_out

@property
@@ -44,7 +42,7 @@ class Terminal(Symbol):


class NonTerminal(Symbol):
__serialize_fields__ = 'name', '_hash'
__serialize_fields__ = 'name',

is_term = False



Loading…
Cancel
Save