// Peek one char ahead private char32 PeekChar() { if (_preview1 == null) { var saved = _current; NextChar(); _preview1 = _current; _current = saved; } return(_preview1.Value.CurrentChar); }
private void Reset() { // Initialize the position at -1 when starting _preview1 = null; _current = new LexerInternalState { Position = new TextPosition(_reader.Start, 0, 0) }; // It is important to initialize this separately from the previous line _current.CurrentChar = NextCharFromReader(); _token = new SyntaxTokenValue(); _errors = null; }
private void NextChar() { // If we have a character in preview if (_preview1 != null) { _current = _preview1.Value; _preview1 = null; return; } // Else move to the next position _current.Position = _current.NextPosition; _current.PreviousChar = _current.CurrentChar; // save the previous character _current.CurrentChar = NextCharFromReader(); }