private void readChar()
{
if (!more())
throw fail("Unexpected end of input");
var next = (char) input.Read();
if(next == '\n')
{
++lineNumber;
previousLines.Add(LineSoFar);
if(previousLines.Count > 3)
previousLines.RemoveAt(0);
lineSoFar.Clear();
}
sb.Append(next);
lineSoFar.Append(next);
}