diff --git a/include/tree_sitter/parser.h b/include/tree_sitter/parser.h index 492784ef..e1fcff9a 100644 --- a/include/tree_sitter/parser.h +++ b/include/tree_sitter/parser.h @@ -36,23 +36,6 @@ typedef struct TSLexer { char debug_buffer[TS_DEBUG_BUFFER_SIZE]; } TSLexer; -static inline int32_t ts_lexer_lookahead_char(const TSLexer *lexer) { - return lexer->lookahead; -} - -static inline void ts_lexer_start_token(TSLexer *lexer) { - lexer->token_start_position = lexer->current_position; -} - -static inline int ts_lexer_advance(TSLexer *lexer) { - return lexer->advance_fn(lexer); -} - -static inline TSTree *ts_lexer_accept(TSLexer *lexer, TSSymbol symbol, - int is_hidden) { - return lexer->accept_fn(lexer, symbol, is_hidden); -} - typedef unsigned short TSStateId; typedef enum { @@ -94,33 +77,33 @@ struct TSLanguage { DEBUG_LEX("start state:%d", lex_state); \ int32_t lookahead; \ next_state: \ - lookahead = ts_lexer_lookahead_char(lexer); \ + lookahead = lexer->lookahead; \ DEBUG_LEX((0 < lookahead &&lookahead < 255 ? "lookahead char:'%c'" \ : "lookahead char:%d"), \ lookahead); #define START_TOKEN() \ DEBUG_LEX("start_token chars:%lu", lexer->current_position.chars); \ - ts_lexer_start_token(lexer); + lexer->token_start_position = lexer->current_position; #define ADVANCE(state_index) \ { \ DEBUG_LEX("advance state:%d", state_index); \ - ts_lexer_advance(lexer); \ + lexer->advance_fn(lexer); \ lex_state = state_index; \ goto next_state; \ } -#define ACCEPT_TOKEN(symbol) \ - { \ - DEBUG_LEX("accept_token sym:%s", ts_symbol_names[symbol]); \ - return ts_lexer_accept(lexer, symbol, ts_hidden_symbol_flags[symbol]); \ +#define ACCEPT_TOKEN(symbol) \ + { \ + DEBUG_LEX("accept_token sym:%s", ts_symbol_names[symbol]); \ + return lexer->accept_fn(lexer, symbol, ts_hidden_symbol_flags[symbol]); \ } -#define LEX_ERROR() \ - { \ - DEBUG_LEX("error"); \ - return ts_lexer_accept(lexer, ts_builtin_sym_error, 0); \ +#define LEX_ERROR() \ + { \ + DEBUG_LEX("error"); \ + return lexer->accept_fn(lexer, ts_builtin_sym_error, 0); \ } #define SHIFT(to_state_value) \ diff --git a/src/runtime/lexer.c b/src/runtime/lexer.c index 3d3cbb26..b3409615 100644 --- a/src/runtime/lexer.c +++ b/src/runtime/lexer.c @@ -59,7 +59,7 @@ static TSTree *accept(TSLexer *lexer, TSSymbol symbol, int is_hidden) { ts_length_sub(lexer->token_start_position, lexer->token_end_position); lexer->token_end_position = lexer->current_position; return (symbol == ts_builtin_sym_error) - ? ts_tree_make_error(size, padding, ts_lexer_lookahead_char(lexer)) + ? ts_tree_make_error(size, padding, lexer->lookahead) : ts_tree_make_leaf(symbol, size, padding, is_hidden); } @@ -91,5 +91,5 @@ void ts_lexer_reset(TSLexer *lexer, TSLength position) { lexer->current_position = position; ts_lexer_read_next_chunk(lexer); - ts_lexer_advance(lexer); + lexer->advance_fn(lexer); } diff --git a/src/runtime/parser.c b/src/runtime/parser.c index 7db9f262..17cbabac 100644 --- a/src/runtime/parser.c +++ b/src/runtime/parser.c @@ -253,7 +253,7 @@ static int handle_error(TSParser *parser) { * just skip it. If the end of input is reached, exit. */ if (ts_length_eq(parser->lexer.current_position, prev_position)) - if (!ts_lexer_advance(&parser->lexer)) { + if (!parser->lexer.advance_fn(&parser->lexer)) { DEBUG_PARSE("fail_to_recover"); resize_error(parser, error);