public function parse() {
        /* @var $scope_resource AbstractResourceFile */
        $scope_resource = $this->getScope();
        if (!$scope_resource instanceof AbstractResourceFile) {
            throw new InvalidConfigException("INVALID scope resource file to parse.");
        }
        $contents = str_replace("\r", "\n", $this->contents);
        $annotation_lines = explode("\n", $contents);
        foreach ($annotation_lines as $annotation_line) {
            $annotation_line = trim($annotation_line);
            $matches = array();
            if ('@' !== substr($annotation_line, 0, 1)) {
                continue;
            }
            $this->say($annotation_line . '[' . $this->scope->getRealPath() . ']');
            if (preg_match('#^@([a-zA-Z]+)\s(.+)$#', $annotation_line, $matches)) {
                $command_name = $matches[1];
                $params = $matches[2];
            } elseif (preg_match('#^@([0-9a-zA-Z\/\\\]+)\((.*)\)$#', $annotation_line, $matches)) {
                $command_name = $matches[1];
                $params = $matches[2];
            } else {
                continue;
            }
            // Get the instance
            if ('require' === strtolower($command_name)) {
                $command_annotation = new RequireAnnotation($this);
            } elseif ('use' === strtolower($command_name)) {
                $command_annotation = new UseAnnotation($this);
            } elseif (class_exists($command_name)) {
                $command_annotation = new $command_name($this);
            } else {
                continue;
            }
            if ($command_annotation instanceof AbstractAnnotation) {
                $command_annotation->parse($params);
                StaticsManager::registAnnotation($command_annotation);
            }
        }
    }