示例#1
0
 def readTypes(self):
     types = list(self.prologInterface.simpleQuery('base(X).'))
     for t in types:
         t = t['X']
         predicate = None
         typ = []
         predicateName = ''
         predicateType = ''
         addPredicateName = True
         addPredicateType = False
         for st in t:
             if(st == ' ' or st == ''):
                 continue
             else:
                 if(st == '('):
                     predicate = Predicate()
                     predicate.setName(predicateName)
                     addPredicateType = True
                     addPredicateName = False
                     continue
                 elif(st == ',' or st == ')'):
                     typ.append(predicateType)
                     predicateType = ''
                     addPredicateType = True
                     continue
                 else:
                     pass
                 if(addPredicateName):
                     predicateName += st
                 elif(addPredicateType):
                     predicateType += st
                 else:
                     pass
         predicate.addTypes(typ)
         predicate.addArity(len(typ))
         self.dictOfPredicates[predicateName] = predicate
示例#2
0
 def readModes(self):
     modes = list(self.prologInterface.simpleQuery('mode(Z,X,Y).'))
     for m in modes:
         m1 = m
         m = m['Y']
         if m[0] == ',':
             m = m[2:len(m)-1]
         elif m[0] == '(':
             m = m[1:len(m)-1]
         else:
             pass
         predicate = None
         conditionalPredicates = []
         mod = []
         predicateName = ''
         predicateType = ''
         addPredicateName = True
         addPredicateType = False
         insideBracket = False
         for st in m:
             if(st == ' ' or st == ''):
                 continue
             else:
                 if(st == '('):
                     predicate = Predicate()
                     predicate.setName(predicateName)
                     p = self.dictOfPredicates[predicateName]
                     predicate.addTypes(p.getTypes())
                     addPredicateType = True
                     insideBracket = True
                     addPredicateName = False
                     continue
                 elif(st == ',' and insideBracket):
                     mod.append(predicateType)
                     predicateType = ''
                     addPredicateType = True
                     continue
                 elif(st == ')' and insideBracket):
                     mod.append(predicateType)
                     predicateType = ''
                     addPredicateType = True
                     insideBracket = False
                     continue
                 elif(st == ',' and not insideBracket):
                     predicate.addModes(m1['Z'], 'none', mod, [])
                     predicate.addArity(len(mod))
                     conditionalPredicates.append(predicate)
                     mod = []
                     predicateName = ''
                     predicateType = ''
                     addPredicateName = True
                     continue
                 else:
                     pass
                 if(addPredicateName):
                     predicateName += st
                 elif(addPredicateType):
                     predicateType += st
                 else:
                     pass
         predicate.addModes(m1['Z'], m1['X'], mod, conditionalPredicates)
         predicate.addArity(len(mod))
         if(self.dictOfPredicates.has_key(predicateName)):
             predicate1 = self.dictOfPredicates[predicateName]
             predicate1.addModes(m1['Z'], m1['X'], mod, conditionalPredicates)
             predicate1.appendAggregators(m1['Z'], m1['X'])
         else:
             predicate.appendAggregators(m1['Z'], m1['X'])
             self.dictOfPredicates[predicateName] = predicate