summaryrefslogtreecommitdiff
path: root/source/slang/slang-lexer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-lexer.cpp')
-rw-r--r--source/slang/slang-lexer.cpp450
1 files changed, 225 insertions, 225 deletions
diff --git a/source/slang/slang-lexer.cpp b/source/slang/slang-lexer.cpp
index 67ad53764..6d13a053d 100644
--- a/source/slang/slang-lexer.cpp
+++ b/source/slang/slang-lexer.cpp
@@ -31,44 +31,44 @@ namespace Slang
}
TokenSpan::TokenSpan()
- : mBegin(NULL)
- , mEnd (NULL)
+ : m_begin(nullptr)
+ , m_end (nullptr)
{}
TokenReader::TokenReader()
- : mCursor(NULL)
- , mEnd (NULL)
+ : m_cursor(nullptr)
+ , m_end (nullptr)
{}
- Token& TokenReader::PeekToken()
+ Token& TokenReader::peekToken()
{
- return nextToken;
+ return m_nextToken;
}
- TokenType TokenReader::PeekTokenType() const
+ TokenType TokenReader::peekTokenType() const
{
- return nextToken.type;
+ return m_nextToken.type;
}
- SourceLoc TokenReader::PeekLoc() const
+ SourceLoc TokenReader::peekLoc() const
{
- return nextToken.loc;
+ return m_nextToken.loc;
}
- Token TokenReader::AdvanceToken()
+ Token TokenReader::advanceToken()
{
- if (!mCursor)
+ if (!m_cursor)
return GetEndOfFileToken();
- Token token = nextToken;
- if (mCursor < mEnd)
+ Token token = m_nextToken;
+ if (m_cursor < m_end)
{
- mCursor++;
- nextToken = *mCursor;
+ m_cursor++;
+ m_nextToken = *m_cursor;
}
else
- nextToken.type = TokenType::EndOfFile;
+ m_nextToken.type = TokenType::EndOfFile;
return token;
}
@@ -80,22 +80,22 @@ namespace Slang
NamePool* inNamePool,
MemoryArena* inMemoryArena)
{
- sourceView = inSourceView;
- sink = inSink;
- namePool = inNamePool;
- memoryArena = inMemoryArena;
+ m_sourceView = inSourceView;
+ m_sink = inSink;
+ m_namePool = inNamePool;
+ m_memoryArena = inMemoryArena;
auto content = inSourceView->getContent();
- begin = content.begin();
- cursor = content.begin();
- end = content.end();
+ m_begin = content.begin();
+ m_cursor = content.begin();
+ m_end = content.end();
// Set the start location
- startLoc = inSourceView->getRange().begin;
+ m_startLoc = inSourceView->getRange().begin;
- tokenFlags = TokenFlag::AtStartOfLine | TokenFlag::AfterWhitespace;
- lexerFlags = 0;
+ m_tokenFlags = TokenFlag::AtStartOfLine | TokenFlag::AfterWhitespace;
+ m_lexerFlags = 0;
}
Lexer::~Lexer()
@@ -106,26 +106,26 @@ namespace Slang
// Get the next input byte, without any handling of
// escaped newlines, non-ASCII code points, source locations, etc.
- static int peekRaw(Lexer* lexer)
+ static int _peekRaw(Lexer* lexer)
{
// If we are at the end of the input, return a designated end-of-file value
- if(lexer->cursor == lexer->end)
+ if(lexer->m_cursor == lexer->m_end)
return kEOF;
// Otherwise, just look at the next byte
- return *lexer->cursor;
+ return *lexer->m_cursor;
}
// Read one input byte without any special handling (similar to `peekRaw`)
- static int advanceRaw(Lexer* lexer)
+ static int _advanceRaw(Lexer* lexer)
{
// The logic here is basically the same as for `peekRaw()`,
// escape we advance `cursor` if we aren't at the end.
- if (lexer->cursor == lexer->end)
+ if (lexer->m_cursor == lexer->m_end)
return kEOF;
- return *lexer->cursor++;
+ return *lexer->m_cursor++;
}
// When the cursor is already at the first byte of an end-of-line sequence,
@@ -140,23 +140,23 @@ namespace Slang
//
// We always look for the longest match possible.
//
- static void handleNewLineInner(Lexer* lexer, int c)
+ static void _handleNewLineInner(Lexer* lexer, int c)
{
SLANG_ASSERT(c == '\n' || c == '\r');
- int d = peekRaw(lexer);
+ int d = _peekRaw(lexer);
if( (c ^ d) == ('\n' ^ '\r') )
{
- advanceRaw(lexer);
+ _advanceRaw(lexer);
}
}
// Look ahead one code point, dealing with complications like
// escaped newlines.
- static int peek(Lexer* lexer)
+ static int _peek(Lexer* lexer)
{
// Look at the next raw byte, and decide what to do
- int c = peekRaw(lexer);
+ int c = _peekRaw(lexer);
if(c == '\\')
{
@@ -165,16 +165,16 @@ namespace Slang
//
// Note(tfoley): We are assuming a null-terminated input here,
// so that we can safely look at the next byte without issue.
- int d = lexer->cursor[1];
+ int d = lexer->m_cursor[1];
switch (d)
{
case '\r': case '\n':
{
// The newline was escaped, so return the code point after *that*
- int e = lexer->cursor[2];
+ int e = lexer->m_cursor[2];
if ((d ^ e) == ('\r' ^ '\n'))
- return lexer->cursor[3];
+ return lexer->m_cursor[3];
return e;
}
@@ -189,18 +189,18 @@ namespace Slang
}
// Get the next code point from the input, and advance the cursor.
- static int advance(Lexer* lexer)
+ static int _advance(Lexer* lexer)
{
// We are going to loop, but only as a way of handling
// escaped line endings.
for (;;)
{
// If we are at the end of the input, then the task is easy.
- if (lexer->cursor == lexer->end)
+ if (lexer->m_cursor == lexer->m_end)
return kEOF;
// Look at the next raw byte, and decide what to do
- int c = *lexer->cursor++;
+ int c = *lexer->m_cursor++;
if (c == '\\')
{
@@ -209,15 +209,15 @@ namespace Slang
//
// Note(tfoley): We are assuming a null-terminated input here,
// so that we can safely look at the next byte without issue.
- int d = *lexer->cursor;
+ int d = *lexer->m_cursor;
switch (d)
{
case '\r': case '\n':
// handle the end-of-line for our source location tracking
- lexer->cursor++;
- handleNewLineInner(lexer, d);
+ lexer->m_cursor++;
+ _handleNewLineInner(lexer, d);
- lexer->tokenFlags |= TokenFlag::ScrubbingNeeded;
+ lexer->m_tokenFlags |= TokenFlag::ScrubbingNeeded;
// Now try again, looking at the character after the
// escaped newline.
@@ -235,48 +235,48 @@ namespace Slang
}
}
- static void handleNewLine(Lexer* lexer)
+ static void _handleNewLine(Lexer* lexer)
{
- int c = advance(lexer);
- handleNewLineInner(lexer, c);
+ int c = _advance(lexer);
+ _handleNewLineInner(lexer, c);
}
- static void lexLineComment(Lexer* lexer)
+ static void _lexLineComment(Lexer* lexer)
{
for(;;)
{
- switch(peek(lexer))
+ switch(_peek(lexer))
{
case '\n': case '\r': case kEOF:
return;
default:
- advance(lexer);
+ _advance(lexer);
continue;
}
}
}
- static void lexBlockComment(Lexer* lexer)
+ static void _lexBlockComment(Lexer* lexer)
{
for(;;)
{
- switch(peek(lexer))
+ switch(_peek(lexer))
{
case kEOF:
// TODO(tfoley) diagnostic!
return;
case '\n': case '\r':
- handleNewLine(lexer);
+ _handleNewLine(lexer);
continue;
case '*':
- advance(lexer);
- switch( peek(lexer) )
+ _advance(lexer);
+ switch( _peek(lexer) )
{
case '/':
- advance(lexer);
+ _advance(lexer);
return;
default:
@@ -284,20 +284,20 @@ namespace Slang
}
default:
- advance(lexer);
+ _advance(lexer);
continue;
}
}
}
- static void lexHorizontalSpace(Lexer* lexer)
+ static void _lexHorizontalSpace(Lexer* lexer)
{
for(;;)
{
- switch(peek(lexer))
+ switch(_peek(lexer))
{
case ' ': case '\t':
- advance(lexer);
+ _advance(lexer);
continue;
default:
@@ -306,17 +306,17 @@ namespace Slang
}
}
- static void lexIdentifier(Lexer* lexer)
+ static void _lexIdentifier(Lexer* lexer)
{
for(;;)
{
- int c = peek(lexer);
+ int c = _peek(lexer);
if(('a' <= c ) && (c <= 'z')
|| ('A' <= c) && (c <= 'Z')
|| ('0' <= c) && (c <= '9')
|| (c == '_'))
{
- advance(lexer);
+ _advance(lexer);
continue;
}
@@ -324,16 +324,16 @@ namespace Slang
}
}
- static SourceLoc getSourceLoc(Lexer* lexer)
+ static SourceLoc _getSourceLoc(Lexer* lexer)
{
- return lexer->startLoc + (lexer->cursor - lexer->begin);
+ return lexer->m_startLoc + (lexer->m_cursor - lexer->m_begin);
}
- static void lexDigits(Lexer* lexer, int base)
+ static void _lexDigits(Lexer* lexer, int base)
{
for(;;)
{
- int c = peek(lexer);
+ int c = _peek(lexer);
int digitVal = 0;
switch(c)
@@ -361,14 +361,14 @@ namespace Slang
if(digitVal >= base)
{
char buffer[] = { (char) c, 0 };
- lexer->sink->diagnose(getSourceLoc(lexer), Diagnostics::invalidDigitForBase, buffer, base);
+ lexer->m_sink->diagnose(_getSourceLoc(lexer), Diagnostics::invalidDigitForBase, buffer, base);
}
- advance(lexer);
+ _advance(lexer);
}
}
- static TokenType maybeLexNumberSuffix(Lexer* lexer, TokenType tokenType)
+ static TokenType _maybeLexNumberSuffix(Lexer* lexer, TokenType tokenType)
{
// Be liberal in what we accept here, so that figuring out
// the semantics of a numeric suffix is left up to the parser
@@ -376,7 +376,7 @@ namespace Slang
//
for( ;;)
{
- int c = peek(lexer);
+ int c = _peek(lexer);
// Accept any alphanumeric character, plus underscores.
if(('a' <= c ) && (c <= 'z')
@@ -384,7 +384,7 @@ namespace Slang
|| ('0' <= c) && (c <= '9')
|| (c == '_'))
{
- advance(lexer);
+ _advance(lexer);
continue;
}
@@ -394,7 +394,7 @@ namespace Slang
}
}
- static bool isNumberExponent(int c, int base)
+ static bool _isNumberExponent(int c, int base)
{
switch( c )
{
@@ -413,64 +413,64 @@ namespace Slang
return true;
}
- static bool maybeLexNumberExponent(Lexer* lexer, int base)
+ static bool _maybeLexNumberExponent(Lexer* lexer, int base)
{
- if(!isNumberExponent(peek(lexer), base))
+ if(!_isNumberExponent(_peek(lexer), base))
return false;
// we saw an exponent marker
- advance(lexer);
+ _advance(lexer);
// Now start to read the exponent
- switch( peek(lexer) )
+ switch( _peek(lexer) )
{
case '+': case '-':
- advance(lexer);
+ _advance(lexer);
break;
}
// TODO(tfoley): it would be an error to not see digits here...
- lexDigits(lexer, 10);
+ _lexDigits(lexer, 10);
return true;
}
- static TokenType lexNumberAfterDecimalPoint(Lexer* lexer, int base)
+ static TokenType _lexNumberAfterDecimalPoint(Lexer* lexer, int base)
{
- lexDigits(lexer, base);
- maybeLexNumberExponent(lexer, base);
+ _lexDigits(lexer, base);
+ _maybeLexNumberExponent(lexer, base);
- return maybeLexNumberSuffix(lexer, TokenType::FloatingPointLiteral);
+ return _maybeLexNumberSuffix(lexer, TokenType::FloatingPointLiteral);
}
- static TokenType lexNumber(Lexer* lexer, int base)
+ static TokenType _lexNumber(Lexer* lexer, int base)
{
// TODO(tfoley): Need to consider whehter to allow any kind of digit separator character.
TokenType tokenType = TokenType::IntegerLiteral;
// At the start of things, we just concern ourselves with digits
- lexDigits(lexer, base);
+ _lexDigits(lexer, base);
- if( peek(lexer) == '.' )
+ if( _peek(lexer) == '.' )
{
tokenType = TokenType::FloatingPointLiteral;
- advance(lexer);
- lexDigits(lexer, base);
+ _advance(lexer);
+ _lexDigits(lexer, base);
}
- if( maybeLexNumberExponent(lexer, base))
+ if( _maybeLexNumberExponent(lexer, base))
{
tokenType = TokenType::FloatingPointLiteral;
}
- maybeLexNumberSuffix(lexer, tokenType);
+ _maybeLexNumberSuffix(lexer, tokenType);
return tokenType;
}
- static int maybeReadDigit(char const** ioCursor, int base)
+ static int _maybeReadDigit(char const** ioCursor, int base)
{
auto& cursor = *ioCursor;
@@ -511,7 +511,7 @@ namespace Slang
}
}
- static int readOptionalBase(char const** ioCursor)
+ static int _readOptionalBase(char const** ioCursor)
{
auto& cursor = *ioCursor;
if( *cursor == '0' )
@@ -548,11 +548,11 @@ namespace Slang
char const* cursor = token.Content.begin();
char const* end = token.Content.end();
- int base = readOptionalBase(&cursor);
+ int base = _readOptionalBase(&cursor);
for( ;;)
{
- int digit = maybeReadDigit(&cursor, base);
+ int digit = _maybeReadDigit(&cursor, base);
if(digit < 0)
break;
@@ -574,7 +574,7 @@ namespace Slang
char const* cursor = token.Content.begin();
char const* end = token.Content.end();
- int radix = readOptionalBase(&cursor);
+ int radix = _readOptionalBase(&cursor);
bool seenDot = false;
FloatingPointLiteralValue divisor = 1;
@@ -587,7 +587,7 @@ namespace Slang
continue;
}
- int digit = maybeReadDigit(&cursor, radix);
+ int digit = _maybeReadDigit(&cursor, radix);
if(digit < 0)
break;
@@ -600,7 +600,7 @@ namespace Slang
}
// Now read optional exponent
- if(isNumberExponent(*cursor, radix))
+ if(_isNumberExponent(*cursor, radix))
{
cursor++;
@@ -625,7 +625,7 @@ namespace Slang
for(;;)
{
- int digit = maybeReadDigit(&cursor, exponentRadix);
+ int digit = _maybeReadDigit(&cursor, exponentRadix);
if(digit < 0)
break;
@@ -660,31 +660,31 @@ namespace Slang
return value;
}
- static void lexStringLiteralBody(Lexer* lexer, char quote)
+ static void _lexStringLiteralBody(Lexer* lexer, char quote)
{
for(;;)
{
- int c = peek(lexer);
+ int c = _peek(lexer);
if(c == quote)
{
- advance(lexer);
+ _advance(lexer);
return;
}
switch(c)
{
case kEOF:
- lexer->sink->diagnose(getSourceLoc(lexer), Diagnostics::endOfFileInLiteral);
+ lexer->m_sink->diagnose(_getSourceLoc(lexer), Diagnostics::endOfFileInLiteral);
return;
case '\n': case '\r':
- lexer->sink->diagnose(getSourceLoc(lexer), Diagnostics::newlineInLiteral);
+ lexer->m_sink->diagnose(_getSourceLoc(lexer), Diagnostics::newlineInLiteral);
return;
case '\\':
// Need to handle various escape sequence cases
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
case '\'':
case '\"':
@@ -697,19 +697,19 @@ namespace Slang
case 'r':
case 't':
case 'v':
- advance(lexer);
+ _advance(lexer);
break;
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7':
// octal escape: up to 3 characters
- advance(lexer);
+ _advance(lexer);
for(int ii = 0; ii < 3; ++ii)
{
- int d = peek(lexer);
+ int d = _peek(lexer);
if(('0' <= d) && (d <= '7'))
{
- advance(lexer);
+ _advance(lexer);
continue;
}
else
@@ -721,15 +721,15 @@ namespace Slang
case 'x':
// hexadecimal escape: any number of characters
- advance(lexer);
+ _advance(lexer);
for(;;)
{
- int d = peek(lexer);
+ int d = _peek(lexer);
if(('0' <= d) && (d <= '9')
|| ('a' <= d) && (d <= 'f')
|| ('A' <= d) && (d <= 'F'))
{
- advance(lexer);
+ _advance(lexer);
continue;
}
else
@@ -745,7 +745,7 @@ namespace Slang
break;
default:
- advance(lexer);
+ _advance(lexer);
continue;
}
}
@@ -890,16 +890,16 @@ namespace Slang
- static TokenType lexTokenImpl(Lexer* lexer, LexerFlags effectiveFlags)
+ static TokenType _lexTokenImpl(Lexer* lexer, LexerFlags effectiveFlags)
{
if(effectiveFlags & kLexerFlag_ExpectDirectiveMessage)
{
for(;;)
{
- switch(peek(lexer))
+ switch(_peek(lexer))
{
default:
- advance(lexer);
+ _advance(lexer);
continue;
case kEOF: case '\r': case '\n':
@@ -910,7 +910,7 @@ namespace Slang
return TokenType::DirectiveMessage;
}
- switch(peek(lexer))
+ switch(_peek(lexer))
{
default:
break;
@@ -923,20 +923,20 @@ namespace Slang
case '\r': case '\n':
if((effectiveFlags & kLexerFlag_InDirective) != 0)
return TokenType::EndOfDirective;
- handleNewLine(lexer);
+ _handleNewLine(lexer);
return TokenType::NewLine;
case ' ': case '\t':
- lexHorizontalSpace(lexer);
+ _lexHorizontalSpace(lexer);
return TokenType::WhiteSpace;
case '.':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
- return lexNumberAfterDecimalPoint(lexer, 10);
+ return _lexNumberAfterDecimalPoint(lexer, 10);
// TODO(tfoley): handle ellipsis (`...`)
@@ -946,33 +946,33 @@ namespace Slang
case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
- return lexNumber(lexer, 10);
+ return _lexNumber(lexer, 10);
case '0':
{
- auto loc = getSourceLoc(lexer);
- advance(lexer);
- switch(peek(lexer))
+ auto loc = _getSourceLoc(lexer);
+ _advance(lexer);
+ switch(_peek(lexer))
{
default:
- return maybeLexNumberSuffix(lexer, TokenType::IntegerLiteral);
+ return _maybeLexNumberSuffix(lexer, TokenType::IntegerLiteral);
case '.':
- advance(lexer);
- return lexNumberAfterDecimalPoint(lexer, 10);
+ _advance(lexer);
+ return _lexNumberAfterDecimalPoint(lexer, 10);
case 'x': case 'X':
- advance(lexer);
- return lexNumber(lexer, 16);
+ _advance(lexer);
+ return _lexNumber(lexer, 16);
case 'b': case 'B':
- advance(lexer);
- return lexNumber(lexer, 2);
+ _advance(lexer);
+ return _lexNumber(lexer, 2);
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
- lexer->sink->diagnose(loc, Diagnostics::octalLiteral);
- return lexNumber(lexer, 8);
+ lexer->m_sink->diagnose(loc, Diagnostics::octalLiteral);
+ return _lexNumber(lexer, 8);
}
}
@@ -989,182 +989,182 @@ namespace Slang
case 'U': case 'V': case 'W': case 'X': case 'Y':
case 'Z':
case '_':
- lexIdentifier(lexer);
+ _lexIdentifier(lexer);
return TokenType::Identifier;
case '\"':
- advance(lexer);
- lexStringLiteralBody(lexer, '\"');
+ _advance(lexer);
+ _lexStringLiteralBody(lexer, '\"');
return TokenType::StringLiteral;
case '\'':
- advance(lexer);
- lexStringLiteralBody(lexer, '\'');
+ _advance(lexer);
+ _lexStringLiteralBody(lexer, '\'');
return TokenType::CharLiteral;
case '+':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
- case '+': advance(lexer); return TokenType::OpInc;
- case '=': advance(lexer); return TokenType::OpAddAssign;
+ case '+': _advance(lexer); return TokenType::OpInc;
+ case '=': _advance(lexer); return TokenType::OpAddAssign;
default:
return TokenType::OpAdd;
}
case '-':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
- case '-': advance(lexer); return TokenType::OpDec;
- case '=': advance(lexer); return TokenType::OpSubAssign;
- case '>': advance(lexer); return TokenType::RightArrow;
+ case '-': _advance(lexer); return TokenType::OpDec;
+ case '=': _advance(lexer); return TokenType::OpSubAssign;
+ case '>': _advance(lexer); return TokenType::RightArrow;
default:
return TokenType::OpSub;
}
case '*':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
- case '=': advance(lexer); return TokenType::OpMulAssign;
+ case '=': _advance(lexer); return TokenType::OpMulAssign;
default:
return TokenType::OpMul;
}
case '/':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
- case '=': advance(lexer); return TokenType::OpDivAssign;
- case '/': advance(lexer); lexLineComment(lexer); return TokenType::LineComment;
- case '*': advance(lexer); lexBlockComment(lexer); return TokenType::BlockComment;
+ case '=': _advance(lexer); return TokenType::OpDivAssign;
+ case '/': _advance(lexer); _lexLineComment(lexer); return TokenType::LineComment;
+ case '*': _advance(lexer); _lexBlockComment(lexer); return TokenType::BlockComment;
default:
return TokenType::OpDiv;
}
case '%':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
- case '=': advance(lexer); return TokenType::OpModAssign;
+ case '=': _advance(lexer); return TokenType::OpModAssign;
default:
return TokenType::OpMod;
}
case '|':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
- case '|': advance(lexer); return TokenType::OpOr;
- case '=': advance(lexer); return TokenType::OpOrAssign;
+ case '|': _advance(lexer); return TokenType::OpOr;
+ case '=': _advance(lexer); return TokenType::OpOrAssign;
default:
return TokenType::OpBitOr;
}
case '&':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
- case '&': advance(lexer); return TokenType::OpAnd;
- case '=': advance(lexer); return TokenType::OpAndAssign;
+ case '&': _advance(lexer); return TokenType::OpAnd;
+ case '=': _advance(lexer); return TokenType::OpAndAssign;
default:
return TokenType::OpBitAnd;
}
case '^':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
- case '=': advance(lexer); return TokenType::OpXorAssign;
+ case '=': _advance(lexer); return TokenType::OpXorAssign;
default:
return TokenType::OpBitXor;
}
case '>':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
case '>':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
- case '=': advance(lexer); return TokenType::OpShrAssign;
+ case '=': _advance(lexer); return TokenType::OpShrAssign;
default: return TokenType::OpRsh;
}
- case '=': advance(lexer); return TokenType::OpGeq;
+ case '=': _advance(lexer); return TokenType::OpGeq;
default:
return TokenType::OpGreater;
}
case '<':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
case '<':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
- case '=': advance(lexer); return TokenType::OpShlAssign;
+ case '=': _advance(lexer); return TokenType::OpShlAssign;
default: return TokenType::OpLsh;
}
- case '=': advance(lexer); return TokenType::OpLeq;
+ case '=': _advance(lexer); return TokenType::OpLeq;
default:
return TokenType::OpLess;
}
case '=':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
- case '=': advance(lexer); return TokenType::OpEql;
+ case '=': _advance(lexer); return TokenType::OpEql;
default:
return TokenType::OpAssign;
}
case '!':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
- case '=': advance(lexer); return TokenType::OpNeq;
+ case '=': _advance(lexer); return TokenType::OpNeq;
default:
return TokenType::OpNot;
}
case '#':
- advance(lexer);
- switch(peek(lexer))
+ _advance(lexer);
+ switch(_peek(lexer))
{
- case '#': advance(lexer); return TokenType::PoundPound;
+ case '#': _advance(lexer); return TokenType::PoundPound;
default:
return TokenType::Pound;
}
- case '~': advance(lexer); return TokenType::OpBitNot;
+ case '~': _advance(lexer); return TokenType::OpBitNot;
case ':':
{
- advance(lexer);
- if (peek(lexer) == ':')
+ _advance(lexer);
+ if (_peek(lexer) == ':')
{
- advance(lexer);
+ _advance(lexer);
return TokenType::Scope;
}
return TokenType::Colon;
}
- case ';': advance(lexer); return TokenType::Semicolon;
- case ',': advance(lexer); return TokenType::Comma;
+ case ';': _advance(lexer); return TokenType::Semicolon;
+ case ',': _advance(lexer); return TokenType::Comma;
- case '{': advance(lexer); return TokenType::LBrace;
- case '}': advance(lexer); return TokenType::RBrace;
- case '[': advance(lexer); return TokenType::LBracket;
- case ']': advance(lexer); return TokenType::RBracket;
- case '(': advance(lexer); return TokenType::LParent;
- case ')': advance(lexer); return TokenType::RParent;
+ case '{': _advance(lexer); return TokenType::LBrace;
+ case '}': _advance(lexer); return TokenType::RBrace;
+ case '[': _advance(lexer); return TokenType::LBracket;
+ case ']': _advance(lexer); return TokenType::RBracket;
+ case '(': _advance(lexer); return TokenType::LParent;
+ case ')': _advance(lexer); return TokenType::RParent;
- case '?': advance(lexer); return TokenType::QuestionMark;
- case '@': advance(lexer); return TokenType::At;
- case '$': advance(lexer); return TokenType::Dollar;
+ case '?': _advance(lexer); return TokenType::QuestionMark;
+ case '@': _advance(lexer); return TokenType::At;
+ case '$': _advance(lexer); return TokenType::Dollar;
}
@@ -1177,11 +1177,11 @@ namespace Slang
// If none of the above cases matched, then we have an
// unexpected/invalid character.
- auto loc = getSourceLoc(lexer);
- int c = advance(lexer);
+ auto loc = _getSourceLoc(lexer);
+ int c = _advance(lexer);
if(!(effectiveFlags & kLexerFlag_IgnoreInvalid))
{
- auto sink = lexer->sink;
+ auto sink = lexer->m_sink;
if(c >= 0x20 && c <= 0x7E)
{
char buffer[] = { (char) c, 0 };
@@ -1200,15 +1200,15 @@ namespace Slang
Token Lexer::lexToken(LexerFlags extraFlags)
{
- auto& flags = this->tokenFlags;
+ auto& flags = m_tokenFlags;
for(;;)
{
Token token;
- token.loc = getSourceLoc(this);
+ token.loc = _getSourceLoc(this);
- char const* textBegin = cursor;
+ char const* textBegin = m_cursor;
- auto tokenType = lexTokenImpl(this, this->lexerFlags | extraFlags);
+ auto tokenType = _lexTokenImpl(this, m_lexerFlags | extraFlags);
// The low-level lexer produces tokens for things we want
// to ignore, such as white space, so we skip them here.
@@ -1240,14 +1240,14 @@ namespace Slang
// preprocessor directive.
case TokenType::Pound:
if((flags & TokenFlag::AtStartOfLine) != 0)
- lexerFlags |= kLexerFlag_InDirective;
+ m_lexerFlags |= kLexerFlag_InDirective;
break;
//
// And if we saw an end-of-line during a directive, then we are
// now leaving that directive.
//
case TokenType::EndOfDirective:
- lexerFlags &= ~kLexerFlag_InDirective;
+ m_lexerFlags &= ~kLexerFlag_InDirective;
break;
default:
@@ -1256,7 +1256,7 @@ namespace Slang
token.type = tokenType;
- char const* textEnd = cursor;
+ char const* textEnd = m_cursor;
// Note(tfoley): `StringBuilder::Append()` seems to crash when appending zero bytes
if(textEnd != textBegin)
@@ -1266,10 +1266,10 @@ namespace Slang
// Only perform this work if we encountered an escaped newline
// while lexing this token (e.g., keep a flag on the lexer), or
// do it on-demand when the actual value of the token is needed.
- if (tokenFlags & TokenFlag::ScrubbingNeeded)
+ if (m_tokenFlags & TokenFlag::ScrubbingNeeded)
{
// Allocate space that will always be more than enough for stripped contents
- char* startDst = (char*)memoryArena->allocateUnaligned(textEnd - textBegin);
+ char* startDst = (char*)m_memoryArena->allocateUnaligned(textEnd - textBegin);
char* dst = startDst;
auto tt = textBegin;
@@ -1308,11 +1308,11 @@ namespace Slang
token.flags = flags;
- this->tokenFlags = 0;
+ m_tokenFlags = 0;
if (tokenType == TokenType::Identifier)
{
- token.ptrValue = this->namePool->getName(token.Content);
+ token.ptrValue = m_namePool->getName(token.Content);
}
return token;