regIndirect :: Parser Expr
regIndirect = do
    regName <- parens $ choice [
                symbol "hl",
                symbol "de",
                symbol "bc",
                try $ symbol "ix",
                symbol "iy",
                symbol "sp",
                symbol "c"
            ]
    return $ case regName of
        "ix" -> RegIndex IX (Literal $ Num 0)
        "iy" -> RegIndex IY (Literal $ Num 0)
        "hl" -> Reg8 HL'
        _ -> RegIndir $ readReg regName
regIndirect :: Parser Expr
regIndirect = do
    regName <- parens $ choice [
                symbol "hl",
                symbol "de",
                symbol "bc",
                try $ symbol "ix",
                symbol "iy",
                symbol "sp",
                symbol "c"
            ]
    return $ case regName of
        "ix" -> RegIndex IX (Literal $ Num 0)
        "iy" -> RegIndex IY (Literal $ Num 0)
        "hl" -> Reg8 HL'
        _ -> RegIndir $ readReg regName
regIndirect = do
    regName <- parens $ choice [
                symbol "hl",
                symbol "de",
                symbol "bc",
                try $ symbol "ix",
                symbol "iy",
                symbol "sp",
                symbol "c"
            ]
    return $ case regName of
        "ix" -> RegIndex IX (Literal $ Num 0)
        "iy" -> RegIndex IY (Literal $ Num 0)
        "hl" -> Reg8 HL'
        _ -> RegIndir $ readReg regName