mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 08:08:12 +00:00
AK: Add GenericLexer::retreat()
This allows going back one character at a time, and then re-consume previously consumed chars. The code I need this for looks something like this: ASSERT(lexer.consume_specific('\\')); if (lexer.next_is("foo")) ... lexer.retreat(); lexer.consume_escaped_character(); // This expects lexer.peek() == '\\'
This commit is contained in:
parent
ffd1e4831e
commit
1daa5158eb
2 changed files with 9 additions and 0 deletions
|
@ -76,6 +76,13 @@ bool GenericLexer::next_is(const char* expected) const
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Go back to the previous character
|
||||||
|
void GenericLexer::retreat()
|
||||||
|
{
|
||||||
|
ASSERT(m_index > 0);
|
||||||
|
m_index--;
|
||||||
|
}
|
||||||
|
|
||||||
// Consume a character and advance the parser index
|
// Consume a character and advance the parser index
|
||||||
char GenericLexer::consume()
|
char GenericLexer::consume()
|
||||||
{
|
{
|
||||||
|
|
|
@ -48,6 +48,8 @@ public:
|
||||||
bool next_is(StringView) const;
|
bool next_is(StringView) const;
|
||||||
bool next_is(const char*) const;
|
bool next_is(const char*) const;
|
||||||
|
|
||||||
|
void retreat();
|
||||||
|
|
||||||
char consume();
|
char consume();
|
||||||
bool consume_specific(char);
|
bool consume_specific(char);
|
||||||
bool consume_specific(StringView);
|
bool consume_specific(StringView);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue