Beispiel #1
0
    def expand_call(node):

        if is_name(node):
            return collect_functor(unit(node)())

        elif is_call(node):
            return collect_functor(unit(copy.deepcopy(node)))

        else:
            raise TypeError('Name or Call node expected, not {}'.format(node))
Beispiel #2
0
 def visit_Call(self, node):
     if not is_name(node.func):
         raise TypeError('{} is not a valid functor name.'
                         .format(node.func))
     if node.keywords:
         raise TypeError('Keyword arguments are not allowed: {}'
                         .format(node))
     if node.starargs:
         raise TypeError('Starred arguments are not allowed: {}'
                         .format(node))
     if node.kwargs:
         raise TypeError('Starred keyword arguments are not allowed: {}'
                         .format(node))
     self.push()
     for each in node.args:
         self.visit(each)
     args = self.pop()
     assert len(args) == len(node.args)
     self.append(Relation(env=self.env, name=node.func.id, params=args))
Beispiel #3
0
 def visit_Call(self, node):
     if not is_name(node.func):
         raise TypeError('{} is not a valid functor name.'
                         .format(node.func))
     if node.keywords:
         raise TypeError('Keyword arguments are not allowed: {}'
                         .format(node))
     if node.starargs:
         raise TypeError('Starred arguments are not allowed: {}'
                         .format(node))
     if node.kwargs:
         raise TypeError('Starred keyword arguments are not allowed: {}'
                         .format(node))
     self.append(
         ast.Call(
             func=node.func,
             args=[_rearrange(arg) for arg in node.args],
             keywords=[],
             starargs=None,
             kwargs=None))