protected function scanExpression()
    {

        foreach ($this->scanToken(
            'expression',
            "([?]?[!]?[=])[\t ]*(?<value>[^\n]*)"
        ) as $token) {

            $token['escaped'] = strstr($this->getMatch(1), '!') ? false : true;
            $token['unchecked'] = strstr($this->getMatch(1), '?') ? true : false;
            yield $token;
        }
    }