def var(self, ast): if isinstance(ast.idn, list): bind = pi.Bind(ast.idn[0], pi.Ref(ast.e[0])) for i in range(1, len(ast.idn)): bind = pi.DSeq(bind, pi.Bind(ast.idn[i], pi.Ref(ast.e[i]))) return bind else: return pi.Bind(ast.idn, pi.Ref(ast.e))
def decSeq(self, ast): if ast: if isinstance(ast.d, list): bind = ast.d[0] for e in ast.d[1:]: bind = pi.DSeq(bind, e) return bind else: return ast.d