Esempio n. 1
0
 def testUptodateProd(self):
     "check that a rule is not run for a current production"
     er = ExRun(verbFlags=verbFlags)
     prod = CurrentProd("neverRunProd")
     er.addProd(prod)
     rule = NeverRunRule("neverRunRule", produces=prod)
     er.obtainDefaultTarget(prod)
     er.addRule(rule)
     er.run()
     self.checkGraphStates(er)
Esempio n. 2
0
 def testUptodateProd(self):
     "check that a rule is not run for a current production"
     er = ExRun(verbFlags=verbFlags)
     prod = CurrentProd("neverRunProd")
     er.addProd(prod)
     rule = NeverRunRule("neverRunRule", produces=prod)
     er.obtainDefaultTarget(prod)
     er.addRule(rule)
     er.run()
     self.checkGraphStates(er)
Esempio n. 3
0
class ExprBuilder(object):
    """Build artificial experiments.  The graph is defined by a list of
    rule definition objects.  Productions are defined by lists
    of names. There is no other definition of the productions.
    """
    def __init__(self, ruleDefs, verbFlags=None, keepGoing=False):
        self.er = ExRun(verbFlags=verbFlags, keepGoing=keepGoing)
        self.graph = self.er.graph
        for rdef in ruleDefs:
            self.__addRuleDef(rdef)
        # set times leaf productions
        for p in self.graph.productions:
            if p.producedBy is None:
                p.time = time.time()

    def __addRuleDef(self, rdef):
        if rdef.name in self.graph.rulesByName:
            raise Exception("duplicate rule def: " + rdef.name)
        rule = self.er.addRule(MemRule(rdef.name))
        for pName in rdef.produces:
            self.__addProduces(rule, pName)
        for rName in rdef.requires:
            self.__addRequires(rule, rName)

    def __addProduces(self, rule, pName):
        prod = self.__obtainProd(pName)
        if prod.producedBy is not None:
            raise Exception("duplicate production def: " + pName)
        rule.linkProduces(prod)

    def __addRequires(self, rule, rName):
        prod = self.__obtainProd(rName)
        rule.linkRequires(prod)

    def __obtainProd(self, pName):
        prod = self.graph.productionsByName.get(pName)
        if prod is None:
            prod = self.er.addProd(MemProd(pName))
        return prod
Esempio n. 4
0
class ExprBuilder(object):
    """Build artificial experiments.  The graph is defined by a list of
    rule definition objects.  Productions are defined by lists
    of names. There is no other definition of the productions.
    """
    def __init__(self, ruleDefs, verbFlags=None, keepGoing=False):
        self.er = ExRun(verbFlags=verbFlags, keepGoing=keepGoing)
        self.graph = self.er.graph
        for rdef in ruleDefs:
            self.__addRuleDef(rdef)
        # set times leaf productions
        for p in self.graph.productions:
            if p.producedBy == None:
                p.time = time.time()

    def __addRuleDef(self, rdef):
        if rdef.name in self.graph.rulesByName:
            raise Exception("duplicate rule def: " + rdef.name)
        rule = self.er.addRule(MemRule(rdef.name))
        for pName in rdef.produces:
            self.__addProduces(rule, pName)
        for rName in rdef.requires:
            self.__addRequires(rule, rName)

    def __addProduces(self, rule, pName):
        prod = self.__obtainProd(pName)
        if prod.producedBy != None:
            raise Exception("duplicate production def: " + pName)
        rule.linkProduces(prod)

    def __addRequires(self, rule, rName):
        prod = self.__obtainProd(rName)
        rule.linkRequires(prod)

    def __obtainProd(self, pName):
        prod = self.graph.productionsByName.get(pName)
        if prod == None:
            prod = self.er.addProd(MemProd(pName))
        return prod