'Parse the next complete expression from the stream and return it.'

def process_next_expression(self, context):

    try:
        tok = self.token()
    except ExpectedMoreTokensException:
        raise ExpectedMoreTokensException((self._currentIndex + 1), message=u'Expression    expected.')
    accum = self.handle(tok, context)
    if (not accum):
        raise UnexpectedTokenException(self._currentIndex, tok, message=u'Expression    expected.')
    return self.attempt_adjuncts(accum, context)
