Remove state argument to Lexer advance method

This commit is contained in:
Max Brunsfeld 2016-12-05 16:36:34 -08:00
parent c16b6b2059
commit c4fe8ded95
4 changed files with 15 additions and 15 deletions

View file

@ -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; \
}

View file

@ -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);
}
}

View file

@ -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)

View file

@ -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;