Exemplo n.º 1
0
    def makeGrammar(cls, grammar, name='Grammar'):
        """
        Define a new parser class with the rules in the given grammar.

        @param grammar: A string containing a PyMeta grammar.
        @param name: The name of the class to be generated.
        @param superclass: The class the generated class is a child of.
        """
        g = cls(grammar)
        if TIMING:
            start = time.time()
        tree = g.parseGrammar(name)
        if TIMING:
            print "Grammar %r parsed in %g secs" % (name, time.time() - start)
            def cnt(n):
                count = sum(cnt(a) for a in n.args) + 1
                return count
            print "%d nodes." % (cnt(tree))
            start = time.time()
        modname = "pymeta_grammar__" + name
        filename = "/pymeta_generated_code/" + modname + ".py"
        source = writePython(tree, grammar)
        if TIMING:
            print "Grammar %r generated in %g secs" % (name, time.time() - start)
        return moduleFromGrammar(source, name, modname, filename)
Exemplo n.º 2
0
    def makeGrammar(cls, grammar, name='Grammar'):
        """
        Define a new parser class with the rules in the given grammar.

        @param grammar: A string containing a PyMeta grammar.
        @param name: The name of the class to be generated.
        @param superclass: The class the generated class is a child of.
        """
        g = cls(grammar)
        if TIMING:
            start = time.time()
        tree = g.parseGrammar(name)
        if TIMING:
            print "Grammar %r parsed in %g secs" % (name, time.time() - start)

            def cnt(n):
                count = sum(cnt(a) for a in n.args) + 1
                return count

            print "%d nodes." % (cnt(tree))
            start = time.time()
        modname = "pymeta_grammar__" + name
        filename = "/pymeta_generated_code/" + modname + ".py"
        source = writePython(tree)
        if TIMING:
            print "Grammar %r generated in %g secs" % (name,
                                                       time.time() - start)
        return moduleFromGrammar(source, name, modname, filename)
Exemplo n.º 3
0
    def makeGrammar(cls, grammar, name):
        """
        Define a new parser class with the rules in the given grammar.

        @param grammar: A string containing a PyMeta grammar.
        @param globals: A dict of names that should be accessible by this
        grammar.
        @param name: The name of the class to be generated.
        @param superclass: The class the generated class is a child of.
        """
        g = cls(grammar)
        tree = g.parseGrammar(name)
        modname = "pymeta_grammar__" + name
        filename = "/pymeta_generated_code/" + modname + ".py"
        source = g.writeTerm(tree)
        return moduleFromGrammar(source, name, modname, filename)
Exemplo n.º 4
0
    def makeGrammar(cls, grammar, name):
        """
        Define a new parser class with the rules in the given grammar.

        @param grammar: A string containing a PyMeta grammar.
        @param globals: A dict of names that should be accessible by this
        grammar.
        @param name: The name of the class to be generated.
        @param superclass: The class the generated class is a child of.
        """
        g = cls(grammar)
        tree = g.parseGrammar(name)
        modname = "pymeta_grammar__" + name
        filename = "/pymeta_generated_code/" + modname + ".py"
        source = g.writeTerm(tree)
        return moduleFromGrammar(source, name, modname, filename)