diff --git a/include/tree_sitter/runtime.h b/include/tree_sitter/runtime.h index 3ff70820..f0442477 100644 --- a/include/tree_sitter/runtime.h +++ b/include/tree_sitter/runtime.h @@ -87,6 +87,7 @@ void ts_parser_print_dot_graphs(TSParser *, FILE *); void ts_parser_halt_on_error(TSParser *, bool); TSTree *ts_parser_parse(TSParser *, const TSTree *, TSInput); TSTree *ts_parser_parse_string(TSParser *, const TSTree *, const char *, uint32_t); +TSTree *ts_parser_parse_string_encoding(TSParser *, const TSTree *, const char *, uint32_t, TSInputEncoding); bool ts_parser_enabled(const TSParser *); void ts_parser_set_enabled(TSParser *, bool); size_t ts_parser_operation_limit(const TSParser *); diff --git a/src/runtime/parser.c b/src/runtime/parser.c index d64e8b6e..c7050ce5 100644 --- a/src/runtime/parser.c +++ b/src/runtime/parser.c @@ -1688,11 +1688,16 @@ TSTree *ts_parser_parse(TSParser *self, const TSTree *old_tree, TSInput input) { TSTree *ts_parser_parse_string(TSParser *self, const TSTree *old_tree, const char *string, uint32_t length) { + return ts_parser_parse_string_encoding(self, old_tree, string, length, TSInputEncodingUTF8); +} + +TSTree *ts_parser_parse_string_encoding(TSParser *self, const TSTree *old_tree, + const char *string, uint32_t length, TSInputEncoding encoding) { TSStringInput input = {string, length}; return ts_parser_parse(self, old_tree, (TSInput) { &input, ts_string_input_read, - TSInputEncodingUTF8, + encoding, }); }