private void ScanDocCommentXmlString(LineProgress p) { while (!p.EndOfLine) { if (p.Char() == '"') { p.Advance(1); p.State = State.DocCommentXml; return; // Done with string in doc comment xml. } else { p.Advance(); } } // End of line. Never found the '"' to close the string, but whatever. We revert to default state. p.State = State.Default; }
private void ScanCharacter(LineProgress p) { if (!p.EndOfLine && p.Char() == '\\') // escaped character. Eat it. { p.Advance(2); } else if (!p.EndOfLine && p.Char() != '\'') // non-escaped character. Eat it. { p.Advance(1); } if (!p.EndOfLine && p.Char() == '\'') // closing ' for character, as expected. { p.Advance(1); p.State = State.Default; return; } // Didn't find closing ' for character. Oh well. p.State = State.Default; }
private void ScanMultiLineComment(LineProgress p) { p.StartNaturalText(); while (!p.EndOfLine) { if (p.Char() == '*' && p.NextChar() == '/') // close comment { p.EndNaturalText(); p.Advance(2); p.State = State.Default; return; // done with multi-line comment. } else { p.Advance(); } } // End of line. Emit as human readable, but remain in MultiLineComment state. p.EndNaturalText(); Debug.Assert(p.State == State.MultiLineComment); }