int read_char()
{
int c;
if (have_unget) {
c = unget_value;
have_unget = false;
} else {
c = sr.Read ();
}
if (c == '\r' && sr.Peek () == '\n') {
c = sr.Read ();
position++;
}
if (c == '\n'){
col = -1;
line++;
}
if (c != -1) {
col++;
position++;
}
return c;
}