/** * Parses the given token. If the value returned is a ListValue, its values will be merged to the list of parsed * tokens instead of adding the value itself. Another check is done to ensure that successive string tokens are * merged. * * @param array $parsedTokens * @param TokenParserInterface $parser * @param Token $token * * @return ValueInterface[]|string[] Parsed tokens */ private function parseToken(array $parsedTokens, TokenParserInterface $parser, Token $token) : array { $parsedToken = $parser->parse($token); $parsedToken = $parsedToken instanceof NestedValue ? $parsedToken->getValue() : [$parsedToken]; foreach ($parsedToken as $value) { $parsedTokens[] = $value; } return $parsedTokens; }