Add API for checking if a pattern in a query is non-local
This commit is contained in:
parent
40703f110c
commit
837899e456
5 changed files with 112 additions and 12 deletions
|
|
@ -750,15 +750,26 @@ const TSQueryPredicateStep *ts_query_predicates_for_pattern(
|
|||
uint32_t *length
|
||||
);
|
||||
|
||||
bool ts_query_is_pattern_rooted(
|
||||
const TSQuery *self,
|
||||
uint32_t pattern_index
|
||||
);
|
||||
/*
|
||||
* Check if the given pattern in the query has a single root node.
|
||||
*/
|
||||
bool ts_query_is_pattern_rooted(const TSQuery *self, uint32_t pattern_index);
|
||||
|
||||
bool ts_query_is_pattern_guaranteed_at_step(
|
||||
const TSQuery *self,
|
||||
uint32_t byte_offset
|
||||
);
|
||||
/*
|
||||
* Check if the given pattern in the query is 'non local'.
|
||||
*
|
||||
* A non-local pattern has multiple root nodes and can match within a
|
||||
* repeating sequence of nodes, as specified by the grammar. Non-local
|
||||
* patterns disable certain optimizations that would otherwise be possible
|
||||
* when executing a query on a specific range of a syntax tree.
|
||||
*/
|
||||
bool ts_query_is_pattern_non_local(const TSQuery *self, uint32_t pattern_index);
|
||||
|
||||
/*
|
||||
* Check if a given pattern is guaranteed to match once a given step is reached.
|
||||
* The step is specified by its byte offset in the query's source code.
|
||||
*/
|
||||
bool ts_query_is_pattern_guaranteed_at_step(const TSQuery *self, uint32_t byte_offset);
|
||||
|
||||
/**
|
||||
* Get the name and length of one of the query's captures, or one of the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue