Remove state argument to Lexer advance method
This commit is contained in:
parent
c16b6b2059
commit
c4fe8ded95
4 changed files with 15 additions and 15 deletions
|
|
@ -23,7 +23,7 @@ typedef struct {
|
|||
} TSSymbolMetadata;
|
||||
|
||||
typedef struct {
|
||||
void (*advance)(void *, TSStateId, bool);
|
||||
void (*advance)(void *, bool);
|
||||
int32_t lookahead;
|
||||
TSSymbol result_symbol;
|
||||
} TSLexer;
|
||||
|
|
@ -92,14 +92,14 @@ typedef struct TSLanguage {
|
|||
|
||||
#define ADVANCE(state_value) \
|
||||
{ \
|
||||
lexer->advance(lexer, state_value, false); \
|
||||
lexer->advance(lexer, false); \
|
||||
state = state_value; \
|
||||
goto next_state; \
|
||||
}
|
||||
|
||||
#define SKIP(state_value) \
|
||||
{ \
|
||||
lexer->advance(lexer, state_value, true); \
|
||||
lexer->advance(lexer, true); \
|
||||
state = state_value; \
|
||||
goto next_state; \
|
||||
}
|
||||
|
|
|
|||
16
spec/fixtures/external_scanners/external_scan.c
vendored
16
spec/fixtures/external_scanners/external_scan.c
vendored
|
|
@ -31,11 +31,11 @@ bool ts_language_external_scanner_example_external_scanner_scan(
|
|||
while (lexer->lookahead == ' ' ||
|
||||
lexer->lookahead == '\t' ||
|
||||
lexer->lookahead == '\n') {
|
||||
lexer->advance(lexer, 0, true);
|
||||
lexer->advance(lexer, true);
|
||||
}
|
||||
|
||||
if (lexer->lookahead != '%') return false;
|
||||
lexer->advance(lexer, 0, false);
|
||||
lexer->advance(lexer, false);
|
||||
|
||||
switch (lexer->lookahead) {
|
||||
case '(':
|
||||
|
|
@ -57,7 +57,7 @@ bool ts_language_external_scanner_example_external_scanner_scan(
|
|||
return false;
|
||||
}
|
||||
|
||||
lexer->advance(lexer, 0, false);
|
||||
lexer->advance(lexer, false);
|
||||
|
||||
for (;;) {
|
||||
if (scanner->depth == 0) {
|
||||
|
|
@ -70,19 +70,19 @@ bool ts_language_external_scanner_example_external_scanner_scan(
|
|||
} else if (lexer->lookahead == scanner->close_delimiter) {
|
||||
scanner->depth--;
|
||||
} else if (lexer->lookahead == '#') {
|
||||
lexer->advance(lexer, 0, false);
|
||||
lexer->advance(lexer, false);
|
||||
if (lexer->lookahead == '{') {
|
||||
lexer->advance(lexer, 0, false);
|
||||
lexer->advance(lexer, false);
|
||||
lexer->result_symbol = percent_string_start;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
lexer->advance(lexer, 0, false);
|
||||
lexer->advance(lexer, false);
|
||||
}
|
||||
} else if (whitelist[percent_string_end]) {
|
||||
if (lexer->lookahead != '}') return false;
|
||||
lexer->advance(lexer, 0, false);
|
||||
lexer->advance(lexer, false);
|
||||
|
||||
for (;;) {
|
||||
if (scanner->depth == 0) {
|
||||
|
|
@ -96,7 +96,7 @@ bool ts_language_external_scanner_example_external_scanner_scan(
|
|||
scanner->depth--;
|
||||
}
|
||||
|
||||
lexer->advance(lexer, 0, false);
|
||||
lexer->advance(lexer, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ static void ts_lexer__get_lookahead(Lexer *self) {
|
|||
LOG_LOOKAHEAD();
|
||||
}
|
||||
|
||||
static void ts_lexer__advance(void *payload, TSStateId state, bool skip) {
|
||||
static void ts_lexer__advance(void *payload, bool skip) {
|
||||
Lexer *self = (Lexer *)payload;
|
||||
if (self->chunk == empty_chunk)
|
||||
return;
|
||||
|
|
@ -63,10 +63,10 @@ static void ts_lexer__advance(void *payload, TSStateId state, bool skip) {
|
|||
}
|
||||
|
||||
if (skip) {
|
||||
LOG("skip_separator state:%d", state);
|
||||
LOG("skip_separator");
|
||||
self->token_start_position = self->current_position;
|
||||
} else {
|
||||
LOG("advance state:%d", state);
|
||||
LOG("advance");
|
||||
}
|
||||
|
||||
if (self->current_position.bytes >= self->chunk_start + self->chunk_size)
|
||||
|
|
|
|||
|
|
@ -269,7 +269,7 @@ static Tree *parser__lex(Parser *self, TSStateId parse_state) {
|
|||
self->lexer.data.result_symbol = ts_builtin_sym_error;
|
||||
break;
|
||||
}
|
||||
self->lexer.data.advance(&self->lexer, ERROR_STATE, false);
|
||||
self->lexer.data.advance(&self->lexer, false);
|
||||
}
|
||||
|
||||
skipped_error = true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue