YAML: Extract the code that skips a comment into a separate method, NFC.

This commit extracts the code that skips over a YAML comment from 
the 'scanToNextToken' method into a separate 'skipComment' method.

This refactoring is motivated by a patch that implements parsing
of YAML block scalars (http://reviews.llvm.org/D9503), as the
method that parses a block scalar reuses the 'skipComment' method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236663 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alex Lorenz 2015-05-06 23:00:45 +00:00
parent cdedd99893
commit 0f04f3b213

View File

@ -417,6 +417,10 @@ private:
, Token::TokenKind Kind , Token::TokenKind Kind
, TokenQueueT::iterator InsertPoint); , TokenQueueT::iterator InsertPoint);
/// @brief Skip a single-line comment when the comment starts at the current
/// position of the scanner.
void skipComment();
/// @brief Skip whitespace and comments until the start of the next token. /// @brief Skip whitespace and comments until the start of the next token.
void scanToNextToken(); void scanToNextToken();
@ -962,24 +966,27 @@ bool Scanner::rollIndent( int ToColumn
return true; return true;
} }
void Scanner::skipComment() {
if (*Current != '#')
return;
while (true) {
// This may skip more than one byte, thus Column is only incremented
// for code points.
StringRef::iterator I = skip_nb_char(Current);
if (I == Current)
break;
Current = I;
++Column;
}
}
void Scanner::scanToNextToken() { void Scanner::scanToNextToken() {
while (true) { while (true) {
while (*Current == ' ' || *Current == '\t') { while (*Current == ' ' || *Current == '\t') {
skip(1); skip(1);
} }
// Skip comment. skipComment();
if (*Current == '#') {
while (true) {
// This may skip more than one byte, thus Column is only incremented
// for code points.
StringRef::iterator i = skip_nb_char(Current);
if (i == Current)
break;
Current = i;
++Column;
}
}
// Skip EOL. // Skip EOL.
StringRef::iterator i = skip_b_break(Current); StringRef::iterator i = skip_b_break(Current);