':type chunk_struct: Tree
:param chunk_struct: the chunk structure to be (further) chunked
:type trace: int
:param trace: The level of tracing that should be used when
parsing a text.  ``0`` will generate no tracing output;
``1`` will generate normal tracing output; and ``2`` or
highter will generate verbose tracing output.  This value
overrides the trace level value that was given to the
constructor.
:rtype: Tree
:return: a chunk structure that encodes the chunks in a given
tagged sentence.  A chunk is a non-overlapping linguistic
group, such as a noun phrase.  The set of chunks
identified in the chunk structure depends on the rules
used to define this ``RegexpChunkParser``.'

def parse(self, chunk_struct, trace=None):

    if (len(chunk_struct) == 0):
        print(u'Warning:    parsing    empty    text')
        return Tree(self._root_label, [])
    try:
        chunk_struct.label()
    except AttributeError:
        chunk_struct = Tree(self._root_label, chunk_struct)
    if (trace is None):
        trace = self._trace
    chunkstr = ChunkString(chunk_struct)
    if trace:
        verbose = (trace > 1)
        self._trace_apply(chunkstr, verbose)
    else:
        self._notrace_apply(chunkstr)
    return chunkstr.to_chunkstruct(self._chunk_label)
