protected override void LoadMoreValues() { if (source.MoveNext()) { LoadedValues.Add(source.Current); } }
protected override void LoadMoreValues() { foreach (var lexer in lexers) { if (lexer.Lex(tokenBuilder) is Token token) { tokenBuilder.ForgetPreceding(); if (token is ISkippable) { LoadMoreValues(); return; } else { LoadedValues.Add(token); return; } } else { tokenBuilder.Reset(); } } if (tokenBuilder.MoveNext()) { throw new InvalidDataException("Failed to create token at character " + tokenBuilder.Current); } }
public void ForgetPreceding() { if (CurrentIndex < 0) { return; } LoadedValues.RemoveRange(0, CurrentIndex); CurrentIndex = -1; }
public string CollectPreceding() { var builder = new StringBuilder(CurrentIndex); foreach (char c in LoadedValues.Take(CurrentIndex)) { builder.Append(c); } ForgetPreceding(); return(builder.ToString()); }
public MockTokenStream(params Token[] tokens) { LoadedValues.AddRange(tokens); }