private int ReadChar()
{
int v = _has_peek ? _peek : _r.Read();
_has_peek = false;
if (_prev_lf)
{
_line++;
_column = 0;
_prev_lf = false;
}
if (v == '\n')
{
_prev_lf = true;
}
_column++;
return v;
}