Ejemplo n.º 1
0
        internal static ParseResult MakeParseResult(List <Token> tokens, ArgumentModel model)
        {
            var result = new ParseResult();

            var queue = new Queue <Token>(tokens);

            while (queue.Count > 0)
            {
                var token = queue.Peek();

                if (token.IsOption)
                {
                    queue.Dequeue();

                    bool  takesParameter = model.FindOptionByToken(token).TakesParameter;
                    Token argument       = null;
                    if (takesParameter)
                    {
                        AssertParameterExists(token, queue);
                        argument = queue.Dequeue();
                    }

                    result.TokenGroups.Add(new TokenGroup()
                    {
                        Option         = token,
                        TakesParameter = takesParameter,
                        Parameter      = argument
                    });
                }
                else
                {
                    // If we hit a non-option, it must be an operand
                    break;
                }
            }
            result.Operands.AddRange(queue);

            return(result);
        }