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)