'For Less and SCSS, blocks can nest.  So parse either a property-name
or full-blown selector here.
# Key method for Less/SCSS linting.  At this point we can have
# either a declaration or a nested rule-set.'

def _parse_declaration_or_nested_block(self):

    self._saw_selector = False
    self._inserted_mixin = False
    if (self.language == 'SCSS'):
        if self._parse_scss_mixin_use():
            return
    tok = self._tokenizer.get_next_token()
    if ((self.language == 'Less') and self._classifier.is_operator_choose(tok, ('+', '>'))):
        self._parse_ruleset()
        return
    self._tokenizer.put_back(tok)
    if (self._classifier.is_identifier(tok) and ((tok['text'] in raw_word_lists[0]) or (tok['text'] in raw_word_lists[2]))):
        self._parse_declaration()
    else:
        self._parse_selector(resolve_selector_property_ambiguity=True)
        tok = self._tokenizer.get_next_token()
        if self._classifier.is_operator(tok, ','):
            self._parse_ruleset()
            return
        if self._classifier.is_operator(tok, '{'):
            return self._parse_declarations(tok)
        if self._inserted_mixin:
            if self._classifier.is_operator(tok, ';'):
                return
            elif self._classifier.is_operator(tok, '}'):
                self._tokenizer.put_back(tok)
                return
        if self._saw_selector:
            self._add_result("expecting    '{'", tok)
        if self._classifier.is_operator(tok, ':'):
            self._parse_remaining_declaration()
        else:
            self._add_result("expecting    ':'    or    '{'", tok)
            self._parser_putback_recover(tok)
