public static bool IsEof( this ArgsTokenizer tokenizer) { if (tokenizer.GetLocation() == tokenizer.Scanner.Position) { return(tokenizer.Scanner.IsEof()); } return(false); }
/// 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); }
public static bool MatchOptionToken( this ArgsTokenizer tokenizer) { if (tokenizer.Peek() is OptionName) { return(true); } return(false); }
private static Argument NextArgument( this ArgsTokenizer tokenizer) { var position = tokenizer.Scanner.Position; /// return(new Argument( source: tokenizer.Scanner.Next(), position: position)); }
private static OptionName NextOptionToken( this ArgsTokenizer tokenizer) { var position = tokenizer.Scanner.Position; /// return(new OptionName( source: tokenizer.Scanner.Next(), position: position)); }
/// public static Argument?MaybeNext( this ArgsTokenizer tokenizer) { var next = tokenizer.Peek(); if (next != null) { tokenizer.Position++; } return(next); }
public static Argument?MaybeNextArgument( this ArgsTokenizer tokenizer) { var next = tokenizer.MaybeNext(); /// if (next is Argument t) { return(t); } /// return(null); }
/// public static OptionName?MaybeNextOptionToken( this ArgsTokenizer tokenizer) { var next = tokenizer.MaybeNext(); /// if (next is OptionName t) { return(t); } /// return(null); }
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(); } }
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); }