Add function exposing in-progress symbols for each state

This commit is contained in:
Max Brunsfeld 2016-02-25 17:36:09 -08:00
parent c8d7c16f87
commit 501e426d29
2 changed files with 16 additions and 0 deletions

View file

@ -29,3 +29,17 @@ size_t ts_language_symbol_count(const TSLanguage *language) {
const char *ts_language_symbol_name(const TSLanguage *language, TSSymbol symbol) {
return language->symbol_names[symbol];
}
bool ts_language_symbol_is_in_progress(const TSLanguage *self, TSStateId state,
TSSymbol symbol) {
if (state == ts_parse_state_error)
return false;
unsigned index = self->in_progress_symbol_table[state];
size_t count = self->in_progress_symbols[index].count;
const TSSymbol *symbols = (TSSymbol *)(self->in_progress_symbols + index + 1);
for (size_t i = 0; i < count; i++) {
if (symbols[i] == symbol)
return true;
}
return false;
}

View file

@ -7,6 +7,8 @@ extern "C" {
#include "tree_sitter/parser.h"
bool ts_language_symbol_is_in_progress(const TSLanguage *, TSStateId, TSSymbol);
const TSParseAction *ts_language_actions(const TSLanguage *, TSStateId,
TSSymbol, size_t *);
TSParseAction ts_language_last_action(const TSLanguage *, TSStateId, TSSymbol);