Start work toward maintaining external scanner's state during incremental parses

This commit is contained in:
Max Brunsfeld 2016-12-20 17:06:20 -08:00
parent 2b3da512a4
commit e6c82ead2c
9 changed files with 131 additions and 70 deletions

View file

@ -19,6 +19,10 @@ void ts_language_table_entry(const TSLanguage *, TSStateId, TSSymbol, TableEntry
TSSymbolMetadata ts_language_symbol_metadata(const TSLanguage *, TSSymbol);
static inline bool ts_language_is_symbol_external(const TSLanguage *self, TSSymbol symbol) {
return 0 < symbol && symbol < self->external_token_count + 1;
}
static inline const TSParseAction *ts_language_actions(const TSLanguage *self,
TSStateId state,
TSSymbol symbol,
@ -52,7 +56,11 @@ static inline TSStateId ts_language_next_state(const TSLanguage *self,
static inline const bool *
ts_language_enabled_external_tokens(const TSLanguage *self,
unsigned external_scanner_state) {
return self->external_token_lists + self->external_token_count * external_scanner_state;
if (external_scanner_state == 0) {
return NULL;
} else {
return self->external_token_lists + self->external_token_count * external_scanner_state;
}
}
#ifdef __cplusplus