'Reads one paragraph at a time.'

def read_block(self, stream):

    block = []
    for para_str in read_regexp_block(stream, '.', '^EOS\\n'):
        para = []
        sent = []
        for line in para_str.splitlines():
            _eos = (line.strip() == 'EOS')
            _cells = line.split(' DCTB ')
            w = (_cells[0], ' DCTB '.join(_cells[1:]))
            if (not _eos):
                sent.append(w)
            if (_eos or (self._sent_splitter and self._sent_splitter(w))):
                if (not self._tagged):
                    sent = [w for (w, t) in sent]
                if self._group_by_sent:
                    para.append(sent)
                else:
                    para.extend(sent)
                sent = []
        if (len(sent) > 0):
            if (not self._tagged):
                sent = [w for (w, t) in sent]
            if self._group_by_sent:
                para.append(sent)
            else:
                para.extend(sent)
        if self._group_by_para:
            block.append(para)
        else:
            block.extend(para)
    return block
