def new_unary(self, ast, op, param): opu = Node() opu.set(op) p = Node() p.set(param) ast.set(knodes.KUnary(opu, [p])) return True
def new_binary(self, ast, op, param): left = Node() if hasattr(param, 'brack'): param = param.brack if hasattr(ast, "brack"): left = ast.brack else: left.set(ast) if isinstance(param, nodes.Binary) and param.params and isinstance(param.params[0], nodes.Array) and hasattr( param.params[0].call_expr, 'brack'): param = param.params[0].call_expr.brack ast.set(nodes.Binary(op, [left, param])) return True
def new_range(self, ast, expr): begin = Node() begin.set(ast) ast.set(nodes.Range(nodes.Raw('...'), [begin, expr])) return True
def new_binary(self, ast, op, param): left = Node() left.set(ast) ast.set(knodes.KBinary(op, [left, param])) return True
def new_ternary(self, ast, then_expr, else_expr): cond = Node() cond.set(ast) ast.set(knodes.KTernary([], [cond, then_expr, else_expr])) return True
def to_cast(self, ast, typename): expr = Node() expr.set(ast) ast.set(knodes.KCast(knodes.KRaw('()'), [typename.ctype, expr])) return True