def replace(self, node): return Op('+', [node.clone(), Literal(int, self.offset)])
def bitwise_and(self, args): if len(args) == 1: return args[0] return Op('&', args)
def unary(self, args): if len(args) == 1: return args[0] return Op(args[0], [args[1]])
def bitwise_shift(self, args): if len(args) == 1: return args[0] return Op(args[1], [args[0], args[2]])
def bitwise_xor(self, args): if len(args) == 1: return args[0] return Op('^', args)
def additive(self, args): if len(args) == 1: return args[0] return Op(args[1], [args[0], args[2]])
def multiplicative(self, args): if len(args) == 1: return args[0] return Op(args[1], [args[0], args[2]])
def relational(self, args): if len(args) == 1: return args[0] return Op(args[1], [args[0], args[2]])
def equality(self, args): if len(args) == 1: return args[0] return Op(args[1], [args[0], args[2]])
def logical_and(self, args): if len(args) == 1: return args[0] return Op('&&', args)
def logical_or(self, args): if len(args) == 1: return args[0] return Op('||', args)
def conditional(self, args): if len(args) == 1: return args[0] return Op('?:', args)