<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def _get_mapping(self, line, parser=None, previous=None):
        '''mapping will take the command from a Dockerfile and return a map
           function to add it to the appropriate place. Any lines that don't
           cleanly map are assumed to be comments.

           Parameters
           ==========
           line: the list that has been parsed into parts with _split_line
           parser: the previously used parser, for context    

           Returns
           =======
           function: to map a line to its command group

        '''

        # Split the command into cleanly the command and rest
        if not isinstance(line, list):
            line = self._split_line(line)

        # No line we will give function to handle empty line
        if len(line) == 0:
            return None

        cmd = line[0].upper()

        mapping = {"ADD": self._add,
                   "ARG": self._arg,
                   "COPY": self._copy,
                   "CMD": self._cmd,
                   "ENTRYPOINT": self._entry,
                   "ENV": self._env,
                   "EXPOSE": self._expose,
                   "FROM": self._from,
                   "HEALTHCHECK": self._test,
                   "RUN": self._run,
                   "WORKDIR": self._workdir,
                   "MAINTAINER": self._label,
                   "VOLUME": self._volume,
                   "LABEL": self._label}

        # If it's a command line, return correct function
        if cmd in mapping:
            return mapping[cmd]

        # If it's a continued line, return previous
        cleaned = self._clean_line(line[-1])
        previous = self._clean_line(previous)

        # if we are continuing from last
        if cleaned.endswith('\\') and parser or previous.endswith('\\'):
            return parser

        return self._default