feat(lib): add the language name

This commit is contained in:
ObserverOfTime 2024-03-17 10:53:06 +02:00 committed by Amaan Qureshi
parent 42dd32d184
commit c5ee0ac070
5 changed files with 17 additions and 0 deletions

View file

@ -20,6 +20,7 @@ const SMALL_STATE_THRESHOLD: usize = 64;
const ABI_VERSION_MIN: usize = 14;
const ABI_VERSION_MAX: usize = tree_sitter::LANGUAGE_VERSION;
const BUILD_VERSION: &str = env!("CARGO_PKG_VERSION");
const ABI_VERSION_WITH_METADATA: usize = 15;
macro_rules! add {
($this: tt, $($arg: tt)*) => {{
@ -1436,6 +1437,11 @@ impl Generator {
}
add_line!(self, ".primary_state_ids = ts_primary_state_ids,");
if self.abi_version >= ABI_VERSION_WITH_METADATA {
add_line!(self, ".name = \"{}\",", self.language_name);
}
dedent!(self);
add_line!(self, "}};");
add_line!(self, "return &language;");

View file

@ -1142,6 +1142,11 @@ uint32_t ts_language_version(const TSLanguage *self);
*/
TSStateId ts_language_next_state(const TSLanguage *self, TSStateId state, TSSymbol symbol);
/**
* Get the name of this language. This returns `NULL` in older parsers.
*/
const char *ts_language_name(const TSLanguage *self);
/********************************/
/* Section - Lookahead Iterator */
/********************************/

View file

@ -28,6 +28,10 @@ uint32_t ts_language_version(const TSLanguage *self) {
return self->version;
}
const char *ts_language_name(const TSLanguage *self) {
return self->version >= LANGUAGE_VERSION_WITH_METADATA ? self->name : NULL;
}
uint32_t ts_language_field_count(const TSLanguage *self) {
return self->field_count;
}

View file

@ -10,6 +10,7 @@ extern "C" {
#define ts_builtin_sym_error_repeat (ts_builtin_sym_error - 1)
#define LANGUAGE_VERSION_WITH_METADATA 15
#define LANGUAGE_VERSION_WITH_PRIMARY_STATES 14
typedef struct {

View file

@ -129,6 +129,7 @@ struct TSLanguage {
void (*deserialize)(void *, const char *, unsigned);
} external_scanner;
const TSStateId *primary_state_ids;
const char *name;
};
static inline bool set_contains(TSCharacterRange *ranges, uint32_t len, int32_t lookahead) {