'Consume the SELECT clause and everything that follows it.
Assumes SELECT * to start.
Transitions to a FROM clause.
Returns:
True if parsing completed okay.'

def __Select(self):

    self.__Expect('SELECT')
    if (('DISTINCT' in self.__active_reserved_words) and self.__Accept('DISTINCT')):
        self.__distinct = True
    if (not self.__Accept('*')):
        props = [self.__ExpectIdentifier()]
        while self.__Accept(','):
            props.append(self.__ExpectIdentifier())
        if (props == ['__key__']):
            self._keys_only = True
        else:
            self.__projection = tuple(props)
    return self.__From()
