diff --git a/lark/grammar.py b/lark/grammar.py index 1d226d9e..016496bd 100644 --- a/lark/grammar.py +++ b/lark/grammar.py @@ -16,7 +16,8 @@ def __init__(self, name: str) -> None: self.name = name def __eq__(self, other): - assert isinstance(other, Symbol), other + if not isinstance(other, Symbol): + return NotImplemented return self.is_term == other.is_term and self.name == other.name def __ne__(self, other): diff --git a/tests/test_grammar.py b/tests/test_grammar.py index 624b0799..52425db5 100644 --- a/tests/test_grammar.py +++ b/tests/test_grammar.py @@ -6,7 +6,7 @@ from lark import Lark, Token, Tree, ParseError, UnexpectedInput from lark.load_grammar import GrammarError, GRAMMAR_ERRORS, find_grammar_errors, list_grammar_imports from lark.load_grammar import FromPackageLoader - +from lark.grammar import Symbol class TestGrammar(TestCase): def setUp(self): @@ -296,8 +296,11 @@ def test_line_breaks(self): p.parse('ab') + def test_symbol_eq(self): + a = None + b = Symbol("abc") - + self.assertNotEqual(a, b) if __name__ == '__main__':