def test_with_name(self): grammar = '\n'.join([ 'import base.bnf', '', 'Grammar: MySpecialGrammar', '', '<A> ::= "SPECIAL"' ]) tree = Parser().parse(grammar) name = next(tree.filter(Node.is_name)) self.assertEqual( name.value, 'MySpecialGrammar', ) py_repr = tree.to_python() self.assertTrue('class MySpecialGrammar' in py_repr)
def test_removes_unreachable_symbols(self): grammar = r''' start: <head> <head> ::= <a> <b> <a> ::= "-" | ε <b> ::= <a> <d> <d> ::= "1" <c> ::= "Q" ''' tree = Parser().parse(grammar) Translator().translate(tree) for node in tree.filter(lambda x: x.value == 'c'): self.fail('Expected unused expressions to be removed.')