public static function parse(string $expression): array
    {
        \preg_match_all('/^\S*|(\[\s*(.*?)\]|[[:alnum:]_-]+\=\*|[[:alnum:]_-]+\?|[[:alnum:]_-]+|-+[[:alnum:]_\-=*]+)/', $expression, $matches);

        if (\trim($expression) === '') {
            throw new InvalidCommandExpression('The expression was empty.');
        }

        $tokens    = \array_values(\array_filter(\array_map('trim', $matches[0])));
        $name      = \array_shift($tokens);
        $arguments = [];
        $options   = [];

        foreach ($tokens as $token) {
            if (self::startsWith($token, '--')) {
                throw new InvalidCommandExpression('An option must be enclosed by brackets: [--option].');
            }

            if (self::isOption($token)) {
                $options[] = self::parseOption($token);
            } else {
                $arguments[] = self::parseArgument($token);
            }
        }

        return [
            'name'      => $name,
            'arguments' => $arguments,
            'options'   => $options,
        ];
    }
public static function parse(string $expression): array
    {
        \preg_match_all('/^\S*|(\[\s*(.*?)\]|[[:alnum:]_-]+\=\*|[[:alnum:]_-]+\?|[[:alnum:]_-]+|-+[[:alnum:]_\-=*]+)/', $expression, $matches);

        if (\trim($expression) === '') {
            throw new InvalidCommandExpression('The expression was empty.');
        }

        $tokens    = \array_values(\array_filter(\array_map('trim', $matches[0])));
        $name      = \array_shift($tokens);
        $arguments = [];
        $options   = [];

        foreach ($tokens as $token) {
            if (self::startsWith($token, '--')) {
                throw new InvalidCommandExpression('An option must be enclosed by brackets: [--option].');
            }

            if (self::isOption($token)) {
                $options[] = self::parseOption($token);
            } else {
                $arguments[] = self::parseArgument($token);
            }
        }

        return [
            'name'      => $name,
            'arguments' => $arguments,
            'options'   => $options,
        ];
    }
public static function parse ( string $ expression ) : array { \ preg_match_all ( '/^\S*|(\[\s*(.*?)\]|[[:alnum:]_-]+\=\*|[[:alnum:]_-]+\?|[[:alnum:]_-]+|-+[[:alnum:]_\-=*]+)/' , $ expression , $ matches ) ; if ( \ trim ( $ expression ) === '' ) { throw new InvalidCommandExpression ( 'The expression was empty.' ) ; } $ tokens = \ array_values ( \ array_filter ( \ array_map ( 'trim' , $ matches [ 0 ] ) ) ) ; $ name = \ array_shift ( $ tokens ) ; $ arguments = [ ] ; $ options = [ ] ; foreach ( $ tokens as $ token ) { if ( self :: startsWith ( $ token , '--' ) ) { throw new InvalidCommandExpression ( 'An option must be enclosed by brackets: [--option].' ) ; } if ( self :: isOption ( $ token ) ) { $ options [ ] = self :: parseOption ( $ token ) ; } else { $ arguments [ ] = self :: parseArgument ( $ token ) ; } } return [ 'name' => $ name , 'arguments' => $ arguments , 'options' => $ options , ] ; }
Parse given command string.

@param string $expression

@throws \Viserio\Component\Contract\Console\Exception\InvalidCommandExpression

@return array
Parse given command string .