def parse_tri_register(self): register3 = self.parse_register() if register3: precomma2 = self.pop() comma2 = self.pop() if tokentype.is_comma(comma2): register2 = self.parse_register() if register2: precomma1 = self.pop() comma1 = self.pop() if tokentype.is_comma(comma1): register1 = self.parse_register() if register1: self.pop() operation_token = tokens.Token.fromChildren(tokentype.TriRegister, register1, register2, register3) self.add_token(operation_token) return operation_token if comma1 and comma1.token_type != tokentype.NullType: self.add_token(comma1) self.add_token(register2) if comma2 and comma2.token_type != tokentype.NullType: self.add_token(comma2) self.add_token(register3)
def parse_bi_register_imm(self): uni_register_imm = self.parse_uni_register_imm() if uni_register_imm: self.pop() comma = self.pop() if tokentype.is_comma(comma): register = self.parse_register() if register: self.pop() operation_token = tokens.Token.fromChildren(tokentype.BiRegisterImm, register, uni_register_imm) self.add_token(operation_token) return operation_token else: self.add_token(comma) self.add_token(uni_register_imm)
def parse_bi_register(self): register2 = self.parse_register() if register2: precomma = self.pop() comma = self.pop() if tokentype.is_comma(comma): register1 = self.parse_register() if register1: self.pop() operation_token = tokens.Token.fromChildren(tokentype.BiRegister, register1, register2) self.add_token(operation_token) return operation_token if comma and comma.token_type != tokentype.NullType: self.add_token(comma) self.add_token(register2)
def parse_uni_register_imm(self): hex = self.pop() if tokentype.is_hex(hex): comma = self.pop() if tokentype.is_comma(comma): register = self.parse_register() if register: self.pop() operation_token = tokens.Token.fromChildren(tokentype.UniRegisterImm, register, hex) self.add_token(operation_token) return operation_token else: self.add_token(comma) self.add_token(hex) if hex and hex.token_type != tokentype.NullType: self.add_token(hex)