cleaning up the external interface of Scanner::next(). No special cases

This commit is contained in:
Lefteris Karapetsas 2014-11-20 23:56:24 +01:00
parent a93916b5f9
commit cda2532de6
2 changed files with 9 additions and 7 deletions

View File

@ -109,7 +109,11 @@ void Scanner::reset(CharStream const& _source)
m_char = m_source.get();
skipWhitespace();
foundDocComment = scanToken();
next(foundDocComment);
// special version of Scanner:next() taking the previous scanToken() result into account
m_current_token = m_next_token;
if (scanToken() || foundDocComment)
m_skipped_comment = m_next_skipped_comment;
}
@ -135,10 +139,10 @@ bool Scanner::scanHexByte(char& o_scannedByte)
// Ensure that tokens can be stored in a byte.
BOOST_STATIC_ASSERT(Token::NUM_TOKENS <= 0x100);
Token::Value Scanner::next(bool _changeSkippedComment)
Token::Value Scanner::next()
{
m_current_token = m_next_token;
if (scanToken() || _changeSkippedComment)
if (scanToken())
m_skipped_comment = m_next_skipped_comment;
return m_current_token.token;
}

View File

@ -116,10 +116,8 @@ public:
/// Resets the scanner as if newly constructed with _input as input.
void reset(CharStream const& _source);
/// Returns the next token and advances input. If called from reset()
/// and ScanToken() found a documentation token then next should be called
/// with _changeSkippedComment=true
Token::Value next(bool _changeSkippedComment = false);
/// Returns the next token and advances input
Token::Value next();
///@{
///@name Information about the current token