Esempio n. 1
0
    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))
Esempio n. 2
0
 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}')
Esempio n. 3
0
 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}')
Esempio n. 4
0
 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}',
     )