Exemplo n.º 1
0
            private static Token ContinueReadingStringToken(StringCodeReader charStream, bool forgive)
            {
                var escaping    = false;
                var openedQuote = false;
                var sb          = new StringBuilder();

                while (true)
                {
                    var chVal = charStream.Read();
                    if (chVal < 0)
                    {
                        var e = new UnexpectedCharacterException(
                            charStream.LineNo, charStream.Col, "continuation of string literal", (char)0);
                        PardonOrDeath(e, forgive);
                        return(FailureToken);
                    }
                    var ch = (char)chVal;
                    if (escaping)
                    {
                        ReadEscapedChar(ch, sb);
                        escaping = false;
                    }
                    else if (ch == '"')
                    {
                        if (openedQuote)
                        {
                            sb.Append('"');
                            openedQuote = false;
                        }
                        else
                        {
                            var chPeek = (char)charStream.Peek();
                            if (char.IsWhiteSpace(chPeek))
                            {
                                return(new Token(TokenType.StringType, sb.ToString()));
                            }
                            else
                            {
                                openedQuote = true;
                                sb.Append('"');
                            }
                        }
                    }
                    else if (ch == '\\')
                    {
                        escaping = true;
                    }
                    else
                    {
                        sb.Append(ch);
                    }
                }
            }
 public void TestMethod5()
 {
     using (var reader = new StringCodeReader("123\n\n 456")) {
         while (true)
         {
             int ch  = reader.Peek();
             int chr = reader.Read();
             Console.Write((ch == chr) ? "1" : String.Format("||{0}|{1}||", ch, chr));
             Assert.IsTrue(ch == chr);
             if (ch < 0 || chr < 0)
             {
                 break;
             }
         }
         // Getting output?
         // https://www.codeproject.com/Articles/501610/Getting-Console-Output-Within-A-Unit-Test
         // No, this.
         // https://stackoverflow.com/questions/4786884/how-to-write-output-from-a-unit-test#comment100863043_13532856
         Console.WriteLine("");
     }
 }