/** * @return Parser */ protected function buildParser() { $expanderInitializer = new Parser\ExpanderInitializer(); $expanderInitializer->setExpanderDefinition('length', Length::class); $expanderInitializer->setExpanderDefinition('minLength', MinLength::class); $expanderInitializer->setExpanderDefinition('maxLength', MaxLength::class); return new Parser(new Lexer(), $expanderInitializer); }
/** * @param string $pattern * @throws UnknownExpanderException * @return Pattern\TypePattern */ public function parse($pattern) { $AST = $this->getAST($pattern); $pattern = new Pattern\TypePattern((string) $AST->getType()); foreach ($AST->getExpanders() as $expander) { $pattern->addExpander($this->expanderInitializer->initialize($expander)); } return $pattern; }