Exemple #1
0
    def compile(self, grammar):
        """
        Produce an object capable of parsing via this grammar.

        @param grammar: A string containing an OMeta grammar.
        """
        g = self.classTested(dedent(grammar))
        tree = g.parseGrammar('TestGrammar', TreeBuilder)
        result = moduleFromGrammar(tree, 'TestGrammar', OMetaBase, {})
        return HandyWrapper(result)
Exemple #2
0
    def compile(self, grammar):
        """
        Produce an object capable of parsing via this grammar.

        @param grammar: A string containing an OMeta grammar.
        """
        g = self.classTested(dedent(grammar))
        tree = g.parseGrammar('TestGrammar', TreeBuilder)
        result = moduleFromGrammar(tree, 'TestGrammar', OMetaBase, {})
        return HandyWrapper(result)
Exemple #3
0
    def compile(self, grammar):
        """
        Produce an object capable of parsing via this grammar.

        @param grammar: A string containing an OMeta grammar.
        """
        from pymeta3.grammar import OMetaGrammar, NullOptimizer
        g = OMetaGrammar(dedent(grammar))
        tree = g.parseGrammar('TestGrammar', TreeBuilder)
        opt = NullOptimizer([tree])
        opt.builder = TreeBuilder("TestGrammar", opt)
        tree, err = opt.apply("grammar")
        grammarClass = moduleFromGrammar(tree, 'TestGrammar', OMetaBase, {})
        return HandyWrapper(grammarClass)
Exemple #4
0
    def compile(self, grammar):
        """
        Produce an object capable of parsing via this grammar.

        @param grammar: A string containing an OMeta grammar.
        """
        from pymeta3.grammar import OMetaGrammar, NullOptimizer
        g = OMetaGrammar(dedent(grammar))
        tree = g.parseGrammar('TestGrammar', TreeBuilder)
        opt = NullOptimizer([tree])
        opt.builder = TreeBuilder("TestGrammar", opt)
        tree, err = opt.apply("grammar")
        grammarClass = moduleFromGrammar(tree, 'TestGrammar', OMetaBase, {})
        return HandyWrapper(grammarClass)
Exemple #5
0
 def test_bindingAccess(self):
     """
     Bound names in a rule can be accessed on the grammar's "locals" dict.
     """
     gg = self.classTested("stuff = '1':a ('2':b | '3':c)")
     t = gg.parseGrammar('TestGrammar', TreeBuilder)
     G = moduleFromGrammar(t, 'TestGrammar', OMetaBase, {})
     g = G("12")
     self.assertEqual(g.apply("stuff")[0], '2')
     self.assertEqual(g.locals['stuff']['a'], '1')
     self.assertEqual(g.locals['stuff']['b'], '2')
     g = G("13")
     self.assertEqual(g.apply("stuff")[0], '3')
     self.assertEqual(g.locals['stuff']['a'], '1')
     self.assertEqual(g.locals['stuff']['c'], '3')
Exemple #6
0
 def test_bindingAccess(self):
     """
     Bound names in a rule can be accessed on the grammar's "locals" dict.
     """
     gg = self.classTested("stuff = '1':a ('2':b | '3':c)")
     t = gg.parseGrammar('TestGrammar', TreeBuilder)
     G = moduleFromGrammar(t, 'TestGrammar', OMetaBase, {})
     g = G("12")
     self.assertEqual(g.apply("stuff")[0], '2')
     self.assertEqual(g.locals['stuff']['a'], '1')
     self.assertEqual(g.locals['stuff']['b'], '2')
     g = G("13")
     self.assertEqual(g.apply("stuff")[0], '3')
     self.assertEqual(g.locals['stuff']['a'], '1')
     self.assertEqual(g.locals['stuff']['c'], '3')