static void EscapeChar(StringBuilder output, char c)
{
if(c == '\'')
output.Append("'\\''");
else if(c > 32)
output.AppendFormat("'{0}'", c);
else {
switch(c) {
case '\a':
output.Append("'\\a'");
break;
case '\b':
output.Append("'\\b'");
break;
case '\n':
output.Append("'\\n'");
break;
case '\v':
output.Append("'\\v'");
break;
case '\r':
output.Append("'\\r'");
break;
case '\f':
output.Append("'\\f'");
break;
case '\t':
output.Append("'\\t");
break;
default:
output.AppendFormat("'\\x{0:x}", (int)c);
break;
}
}
}