protected function attrFilter()
    {
        $attrName = "";
        $op = "";
        $value = "";

        if (!$this->match("/^\[/")) {
            return false;
        }
        if (!list($attrName) = $this->is("identifier")) {
            throw new TextParserException("Invalid identifier", $this);
        }
        if (list($op) = $this->is("attrOperator")) {
            if (!list($value) = $this->is("value")) {
                throw new TextParserException("Invalid attribute operator", $this);
            }
        }
        if (!$this->eq("]")) {
            throw new TextParserException("Invalid expression", $this);
        }
        return new CssParserFilterAttr($attrName, $op, $value);
    }