Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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.')