getKeywordParsers(); $keywordValidators = $this->getKeywordValidatorParsers(); $pragmas = $this->getPragmaParsers(); if ($extraVocabulary) { $keywords = array_merge($keywords, $extraVocabulary->keywords()); $keywordValidators = array_merge($keywordValidators, $extraVocabulary->keywordValidators()); $pragmas = array_merge($pragmas, $extraVocabulary->pragmas()); } array_unshift($keywords, $this->getRefKeywordParser()); parent::__construct($keywords, $keywordValidators, $pragmas); } /** * @return string */ abstract public function version(): string; /** * @return bool */ abstract public function allowKeywordsAlongsideRef(): bool; /** * @return bool */ abstract public function supportsAnchorId(): bool; /** * @return KeywordParser */ abstract protected function getRefKeywordParser(): KeywordParser; /** * @return KeywordParser[] */ abstract protected function getKeywordParsers(): array; /** * @return KeywordValidatorParser[] */ protected function getKeywordValidatorParsers(): array { return []; } /** * @return PragmaParser[] */ protected function getPragmaParsers(): array { return []; } }