StackStream.Lexer.ParseString C# (CSharp) Method

ParseString() private method

private ParseString ( ) : string
return string
        private string ParseString()
        {
            bool escape = false;
            StringBuilder builder = new StringBuilder();

            while (Pointer < Data.Length && Data[Pointer] != '"')
                if (Data[Pointer] == '\\')
                {
                    escape = true;
                    Pointer++;
                }
                else if (escape)
                    switch (Data[Pointer])
                    {
                        case 'n':
                            builder.Append('\n');
                            Pointer++;
                            break;
                        case 'r':
                            builder.Append('\r');
                            Pointer++;
                            break;
                        case 'x':
                            if (Pointer + 2 >= Data.Length)
                            {
                                throw new Exception("Not enough data to parse \\x!");
                            }
                            else
                            {
                                int value = Convert.ToInt32(Data.Substring(Pointer + 1, 2), 16);
                                builder.Append((char)value);
                                Pointer += 3;
                            }
                            break;
                        default:
                            builder.Append(Data[Pointer++]);
                            break;
                    }
                else
                    builder.Append(Data[Pointer++]);
            Pointer++;

            return builder.ToString();
        }