private Token String()
{
var openChar = (char)currentChar;
var buf = new StringBuilder();
while (true)
{
Next();
if (currentChar == openChar)
{
Match(openChar);
break;
}
if (currentChar == Eof)
throw Error("Unexpected end of token");
if (currentChar == '\\')
{
char escape = Escape();
buf.Append(escape);
}
else
buf.Append((char)currentChar);
}
return Token(TokenType.String, buf.ToString());
}