def test_external_imports_transferred_verbatim(self): grammar = r''' from darglint.errors import ( ItemIndentationError, ) <start> ::= @ItemIndentationError <A> <A> ::= "A" ''' tree = Parser().parse(grammar) node = Translator().translate(tree) self.assertTrue(node.equals(tree))
def test_translate_retains_start_annotation(self): """Make sure that an annotation on start is saved.""" grammar = r''' @Q <start> ::= <A> <B> <B> ::= "b" <A> ::= "a" ''' tree = Parser().parse(grammar) node = Translator().translate(tree) expected = Parser().parse(r''' @Q <start> ::= <A> <B> <B> ::= "b" <A> ::= "a" ''') self.assertTrue(node.equals(expected), f'{node}\n\n{expected}')
def test_translate_retains_annotations(self): """Make sure that annotations are retained with the grammar.""" grammar = r''' <A> ::= <B> <C> <B> ::= <C> | @Q <D> <C> ::= "C" <D> ::= "D" ''' tree = Parser().parse(grammar) node = Translator().translate(tree) expected = Parser().parse(r''' <A> ::= <B> <C> <B> ::= "C" | @Q "D" <C> ::= "C" <D> ::= "D" ''') self.assertTrue(node.equals(expected), f'Expected:\n{expected}\n\nBut got:\n{node}')
def test_translate_retains_probability(self): """Make sure that probabilities are retained in the grammar.""" grammar = r''' start: <A> <A> ::= 70 <B> <B> <C> | 20 <B> <B> | 10 <B> <B> ::= "B" <C> ::= "C" ''' tree = Parser().parse(grammar) node = Translator().translate(tree) expected = Parser().parse(r''' start: <A> <A> ::= 70 <B> <A1> | 20 <B> <B> | 10 "B" <B> ::= "B" <C> ::= "C" <A1> ::= <B> <C> ''') self.assertTrue( node.equals(expected), f'Expected:\n{expected}\n\nBut got:\n{node}', )