VBF.Compilers.Scanners.Scanner.AddHistory C# (CSharp) Method

AddHistory() private method

private AddHistory ( Lexeme lexeme, bool setTrivia = true ) : void
lexeme Lexeme
setTrivia bool
return void
        private void AddHistory(Lexeme lexeme, bool setTrivia = true)
        {
            Debug.Assert(m_valuableCursor == m_valuableHistory.Count);

            m_fullHistory.Add(lexeme);
            int fullCursor = m_fullHistory.Count();

            if (setTrivia)
            {
                int lastTriviaStartIndex = m_lastNotSkippedLexemeIndex + 1;
                int lastTriviaLength = fullCursor - 1 - lastTriviaStartIndex;

                if (lastTriviaLength < 0)
                {
                    lastTriviaLength = 0;
                }

                lexeme.SetTrivia(new LexemeRange(m_fullHistory, lastTriviaStartIndex, lastTriviaLength));
                m_lastNotSkippedLexemeIndex = fullCursor - 1;

                m_valuableHistory.Add(fullCursor - 1);
                m_valuableCursor = m_valuableHistory.Count;
            }
        }