/** * @param string $config * @return TokenIterator tokens * @throws ConfigException */ public function lex($config) { $normalized = Strings::normalize($config); // remove meaningless leading spacing to simplify T_KEYWORD $simplified = Strings::replace($normalized, '~^\\s+~m', ''); try { $tokens = $this->getTokenizer()->tokenize($simplified); return new TokenIterator($tokens); } catch (TokenizerException $e) { throw ConfigException::createFromLexerException($e); } }
/** * @param string|array $expected * @param string $type * @throws ConfigException */ private function assertState($expected, $type) { if (!is_array($expected)) { $expected = [$expected]; } if (!in_array($type, $expected, TRUE)) { $expectedFmt = implode(', ', $expected); throw ConfigException::createFromParser("Expected state {$expectedFmt} but is {$type}"); } }