From fcff16cb8660469ae341c8230dca4330fbd7fb0d Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Tue, 19 Dec 2017 17:54:15 -0800 Subject: [PATCH] Add get_column method to lexer --- include/tree_sitter/parser.h | 1 + src/runtime/lexer.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/include/tree_sitter/parser.h b/include/tree_sitter/parser.h index cb83ce33..88322e03 100644 --- a/include/tree_sitter/parser.h +++ b/include/tree_sitter/parser.h @@ -24,6 +24,7 @@ typedef struct { typedef struct { void (*advance)(void *, bool); void (*mark_end)(void *); + uint32_t (*get_column)(void *); int32_t lookahead; TSSymbol result_symbol; } TSLexer; diff --git a/src/runtime/lexer.c b/src/runtime/lexer.c index a165b8a6..c15e6ab1 100644 --- a/src/runtime/lexer.c +++ b/src/runtime/lexer.c @@ -91,6 +91,11 @@ static void ts_lexer__mark_end(void *payload) { self->token_end_position = self->current_position; } +static uint32_t ts_lexer__get_column(void *payload) { + Lexer *self = (Lexer *)payload; + return self->current_position.extent.column; +} + /* * The lexer's advance method is stored as a struct field so that generated * parsers can call it without needing to be linked against this library. @@ -101,6 +106,7 @@ void ts_lexer_init(Lexer *self) { .data = { .advance = ts_lexer__advance, .mark_end = ts_lexer__mark_end, + .get_column = ts_lexer__get_column, .lookahead = 0, .result_symbol = 0, },