private string ReadString(int index, char quot, MiniBuffer buff) { do { if (Current == '\\')//是否是转义符 { if ((_WordChars[Current] & 16) == 0) { ThrowException(); } buff.AddString(_p, index, _position - index); MoveNext(); switch (Current) { case 't': buff.AddChar('\t'); index = _position + 1; break; case 'n': buff.AddChar('\n'); index = _position + 1; break; case 'r': buff.AddChar('\r'); index = _position + 1; break; case '0': buff.AddChar('\0'); index = _position + 1; break; case 'f': buff.AddChar('\f'); index = _position + 1; break; case 'u': index = _position + ReadUnicode(buff); break; default: index = _position; break; } } MoveNext(); } while (Current != quot);//是否是结束字符 string str; buff.AddString(_p, index, _position - index); str = buff.ToString(); buff.Dispose(); MoveNext(); return(str); }
private int ReadUnicode(MiniBuffer buff) { MoveNext(); var c1 = Current; var n1 = UnicodeNumber(Current); if (n1 == -1) { buff.AddChar('\\'); buff.AddChar('u'); buff.AddChar(c1); return 2; } MoveNext(); var c2 = Current; var n2 = UnicodeNumber(Current); if (n2 == -1) { buff.AddChar('\\'); buff.AddChar('u'); buff.AddChar(c1); buff.AddChar(c2); return 3; } MoveNext(); var c3 = Current; var n3 = UnicodeNumber(Current); if (n3 == -1) { buff.AddChar('\\'); buff.AddChar('u'); buff.AddChar(c1); buff.AddChar(c2); buff.AddChar(c3); return 4; } MoveNext(); var c4 = Current; var n4 = UnicodeNumber(Current); if (n4 == -1) { buff.AddChar('\\'); buff.AddChar('u'); buff.AddChar(c1); buff.AddChar(c2); buff.AddChar(c3); buff.AddChar(c4); return 5; } buff.AddChar((char)(n1 * 0x1000 + n2 * 0x100 + n3 * 0x10 + n4)); return 5; }
private string ReadString(int index, char quot, MiniBuffer buff) { do { if (Current == '\\')//是否是转义符 { if ((_WordChars[Current] & 16) == 0) { ThrowException(); } buff.AddString(_p, index, _position - index); MoveNext(); switch (Current) { case 't': buff.AddChar('\t'); index = _position + 1; break; case 'n': buff.AddChar('\n'); index = _position + 1; break; case 'r': buff.AddChar('\r'); index = _position + 1; break; case '0': buff.AddChar('\0'); index = _position + 1; break; case 'f': buff.AddChar('\f'); index = _position + 1; break; case 'u': index = _position + ReadUnicode(buff); break; default: index = _position; break; } } MoveNext(); } while (Current != quot);//是否是结束字符 string str; buff.AddString(_p, index, _position - index); str = buff.ToString(); buff.Dispose(); MoveNext(); return str; }
private int ReadUnicode(MiniBuffer buff) { MoveNext(); var c1 = Current; var n1 = UnicodeNumber(Current); if (n1 == -1) { buff.AddChar('\\'); buff.AddChar('u'); buff.AddChar(c1); return(2); } MoveNext(); var c2 = Current; var n2 = UnicodeNumber(Current); if (n2 == -1) { buff.AddChar('\\'); buff.AddChar('u'); buff.AddChar(c1); buff.AddChar(c2); return(3); } MoveNext(); var c3 = Current; var n3 = UnicodeNumber(Current); if (n3 == -1) { buff.AddChar('\\'); buff.AddChar('u'); buff.AddChar(c1); buff.AddChar(c2); buff.AddChar(c3); return(4); } MoveNext(); var c4 = Current; var n4 = UnicodeNumber(Current); if (n4 == -1) { buff.AddChar('\\'); buff.AddChar('u'); buff.AddChar(c1); buff.AddChar(c2); buff.AddChar(c3); buff.AddChar(c4); return(5); } buff.AddChar((char)(n1 * 0x1000 + n2 * 0x100 + n3 * 0x10 + n4)); return(5); }