Ejemplo n.º 1
0
    public static bool IsEof(
        this ArgsTokenizer tokenizer)
    {
        if (tokenizer.GetLocation() == tokenizer.Scanner.Position)
        {
            return(tokenizer.Scanner.IsEof());
        }

        return(false);
    }
Ejemplo n.º 2
0
    ///

    public static int GetLocation(
        this ArgsTokenizer tokenizer)
    {
        if (tokenizer.Position + 1 <= tokenizer.Tokens.Count)
        {
            return(tokenizer.Tokens.ElementAt(tokenizer.Position).Position);
        }

        return(tokenizer.Scanner.Position);
    }
Ejemplo n.º 3
0
    public static bool MatchOptionToken(
        this ArgsTokenizer tokenizer)
    {
        if (tokenizer.Peek() is OptionName)
        {
            return(true);
        }

        return(false);
    }
Ejemplo n.º 4
0
    private static Argument NextArgument(
        this ArgsTokenizer tokenizer)
    {
        var position = tokenizer.Scanner.Position;

        ///

        return(new Argument(
                   source: tokenizer.Scanner.Next(),
                   position: position));
    }
Ejemplo n.º 5
0
    private static OptionName NextOptionToken(
        this ArgsTokenizer tokenizer)
    {
        var position = tokenizer.Scanner.Position;

        ///

        return(new OptionName(
                   source: tokenizer.Scanner.Next(),
                   position: position));
    }
Ejemplo n.º 6
0
    ///

    public static Argument?MaybeNext(
        this ArgsTokenizer tokenizer)
    {
        var next = tokenizer.Peek();

        if (next != null)
        {
            tokenizer.Position++;
        }

        return(next);
    }
Ejemplo n.º 7
0
    public static Argument?MaybeNextArgument(
        this ArgsTokenizer tokenizer)
    {
        var next = tokenizer.MaybeNext();

        ///

        if (next is Argument t)
        {
            return(t);
        }

        ///

        return(null);
    }
Ejemplo n.º 8
0
    ///

    public static OptionName?MaybeNextOptionToken(
        this ArgsTokenizer tokenizer)
    {
        var next = tokenizer.MaybeNext();

        ///

        if (next is OptionName t)
        {
            return(t);
        }

        ///

        return(null);
    }
Ejemplo n.º 9
0
    private static Argument Next(
        this ArgsTokenizer tokenizer)
    {
        switch (tokenizer.Scanner.Peek())
        {
        case String next when next.StartsWith("--"):
            return(tokenizer.NextOptionToken());

        case String next when next.StartsWith("/") || next.EndsWith(".dll") || next == "./":
            return(tokenizer.NextUnknownArgument());

        case String _:
            return(tokenizer.NextArgument());

        default:
            throw new Exception();
        }
    }
Ejemplo n.º 10
0
    public static Argument?Peek(
        this ArgsTokenizer tokenizer)
    {
        if (tokenizer.Position + 1 <= tokenizer.Tokens.Count)
        {
            return(tokenizer.Tokens.ElementAt(tokenizer.Position));
        }

        ///

        if (tokenizer.Scanner.IsEof())
        {
            return(null);
        }

        ///

        var next = tokenizer.Next();

        tokenizer.Tokens.Add(next);

        return(next);
    }