Prefix globally visible TSquantifier values
This commit is contained in:
parent
36f2440369
commit
e338726cde
4 changed files with 121 additions and 121 deletions
|
|
@ -107,12 +107,12 @@ pub struct TSQueryCapture {
|
|||
pub node: TSNode,
|
||||
pub index: u32,
|
||||
}
|
||||
pub const TSQuantifier_Zero: TSQuantifier = 0;
|
||||
pub const TSQuantifier_ZeroOrOne: TSQuantifier = 1;
|
||||
pub const TSQuantifier_ZeroOrMore: TSQuantifier = 2;
|
||||
pub const TSQuantifier_One: TSQuantifier = 3;
|
||||
pub const TSQuantifier_OneOrMore: TSQuantifier = 4;
|
||||
pub type TSQuantifier = u32;
|
||||
pub const TSQuantifier_TSQuantifierZero: TSQuantifier = 0;
|
||||
pub const TSQuantifier_TSQuantifierZeroOrOne: TSQuantifier = 1;
|
||||
pub const TSQuantifier_TSQuantifierZeroOrMore: TSQuantifier = 2;
|
||||
pub const TSQuantifier_TSQuantifierOne: TSQuantifier = 3;
|
||||
pub const TSQuantifier_TSQuantifierOneOrMore: TSQuantifier = 4;
|
||||
pub type TSQuantifier = ::std::os::raw::c_uint;
|
||||
#[repr(C)]
|
||||
#[derive(Debug, Copy, Clone)]
|
||||
pub struct TSQueryMatch {
|
||||
|
|
|
|||
|
|
@ -118,11 +118,11 @@ pub enum CaptureQuantifier {
|
|||
impl From<ffi::TSQuantifier> for CaptureQuantifier {
|
||||
fn from(value: ffi::TSQuantifier) -> Self {
|
||||
match value {
|
||||
ffi::TSQuantifier_Zero => CaptureQuantifier::Zero,
|
||||
ffi::TSQuantifier_ZeroOrOne => CaptureQuantifier::ZeroOrOne,
|
||||
ffi::TSQuantifier_ZeroOrMore => CaptureQuantifier::ZeroOrMore,
|
||||
ffi::TSQuantifier_One => CaptureQuantifier::One,
|
||||
ffi::TSQuantifier_OneOrMore => CaptureQuantifier::OneOrMore,
|
||||
ffi::TSQuantifier_TSQuantifierZero => CaptureQuantifier::Zero,
|
||||
ffi::TSQuantifier_TSQuantifierZeroOrOne => CaptureQuantifier::ZeroOrOne,
|
||||
ffi::TSQuantifier_TSQuantifierZeroOrMore => CaptureQuantifier::ZeroOrMore,
|
||||
ffi::TSQuantifier_TSQuantifierOne => CaptureQuantifier::One,
|
||||
ffi::TSQuantifier_TSQuantifierOneOrMore => CaptureQuantifier::OneOrMore,
|
||||
_ => panic!("Unrecognized quantifier: {}", value),
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -107,11 +107,11 @@ typedef struct {
|
|||
} TSQueryCapture;
|
||||
|
||||
typedef enum {
|
||||
Zero = 0, // must match the array initialization value
|
||||
ZeroOrOne,
|
||||
ZeroOrMore,
|
||||
One,
|
||||
OneOrMore,
|
||||
TSQuantifierZero = 0, // must match the array initialization value
|
||||
TSQuantifierZeroOrOne,
|
||||
TSQuantifierZeroOrMore,
|
||||
TSQuantifierOne,
|
||||
TSQuantifierOneOrMore,
|
||||
} TSQuantifier;
|
||||
|
||||
typedef struct {
|
||||
|
|
|
|||
210
lib/src/query.c
210
lib/src/query.c
|
|
@ -467,55 +467,55 @@ static TSQuantifier quantifier_mul(
|
|||
TSQuantifier left,
|
||||
TSQuantifier right
|
||||
) {
|
||||
TSQuantifier result = Zero; // initialized to make compiler happy, but all cases should be covered below!
|
||||
TSQuantifier result = TSQuantifierZero; // initialized to make compiler happy, but all cases should be covered below!
|
||||
switch (left)
|
||||
{
|
||||
case Zero:
|
||||
result = Zero;
|
||||
case TSQuantifierZero:
|
||||
result = TSQuantifierZero;
|
||||
break;
|
||||
case ZeroOrOne:
|
||||
case TSQuantifierZeroOrOne:
|
||||
switch (right) {
|
||||
case Zero:
|
||||
result = Zero;
|
||||
case TSQuantifierZero:
|
||||
result = TSQuantifierZero;
|
||||
break;
|
||||
case ZeroOrOne:
|
||||
case One:
|
||||
result = ZeroOrOne;
|
||||
case TSQuantifierZeroOrOne:
|
||||
case TSQuantifierOne:
|
||||
result = TSQuantifierZeroOrOne;
|
||||
break;
|
||||
case ZeroOrMore:
|
||||
case OneOrMore:
|
||||
result = ZeroOrMore;
|
||||
case TSQuantifierZeroOrMore:
|
||||
case TSQuantifierOneOrMore:
|
||||
result = TSQuantifierZeroOrMore;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case ZeroOrMore:
|
||||
case TSQuantifierZeroOrMore:
|
||||
switch (right) {
|
||||
case Zero:
|
||||
result = Zero;
|
||||
case TSQuantifierZero:
|
||||
result = TSQuantifierZero;
|
||||
break;
|
||||
case ZeroOrOne:
|
||||
case ZeroOrMore:
|
||||
case One:
|
||||
case OneOrMore:
|
||||
result = ZeroOrMore;
|
||||
case TSQuantifierZeroOrOne:
|
||||
case TSQuantifierZeroOrMore:
|
||||
case TSQuantifierOne:
|
||||
case TSQuantifierOneOrMore:
|
||||
result = TSQuantifierZeroOrMore;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case One:
|
||||
case TSQuantifierOne:
|
||||
result = right;
|
||||
break;
|
||||
case OneOrMore:
|
||||
case TSQuantifierOneOrMore:
|
||||
switch (right) {
|
||||
case Zero:
|
||||
result = Zero;
|
||||
case TSQuantifierZero:
|
||||
result = TSQuantifierZero;
|
||||
break;
|
||||
case ZeroOrOne:
|
||||
case ZeroOrMore:
|
||||
result = ZeroOrMore;
|
||||
case TSQuantifierZeroOrOne:
|
||||
case TSQuantifierZeroOrMore:
|
||||
result = TSQuantifierZeroOrMore;
|
||||
break;
|
||||
case One:
|
||||
case OneOrMore:
|
||||
result = OneOrMore;
|
||||
case TSQuantifierOne:
|
||||
case TSQuantifierOneOrMore:
|
||||
result = TSQuantifierOneOrMore;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
|
|
@ -527,67 +527,67 @@ static TSQuantifier quantifier_join(
|
|||
TSQuantifier left,
|
||||
TSQuantifier right
|
||||
) {
|
||||
TSQuantifier result = Zero; // initialized to make compiler happy, but all cases should be covered below!
|
||||
TSQuantifier result = TSQuantifierZero; // initialized to make compiler happy, but all cases should be covered below!
|
||||
switch (left)
|
||||
{
|
||||
case Zero:
|
||||
case TSQuantifierZero:
|
||||
switch (right) {
|
||||
case Zero:
|
||||
result = Zero;
|
||||
case TSQuantifierZero:
|
||||
result = TSQuantifierZero;
|
||||
break;
|
||||
case ZeroOrOne:
|
||||
case One:
|
||||
result = ZeroOrOne;
|
||||
case TSQuantifierZeroOrOne:
|
||||
case TSQuantifierOne:
|
||||
result = TSQuantifierZeroOrOne;
|
||||
break;
|
||||
case ZeroOrMore:
|
||||
case OneOrMore:
|
||||
result = ZeroOrMore;
|
||||
case TSQuantifierZeroOrMore:
|
||||
case TSQuantifierOneOrMore:
|
||||
result = TSQuantifierZeroOrMore;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case ZeroOrOne:
|
||||
case TSQuantifierZeroOrOne:
|
||||
switch (right) {
|
||||
case Zero:
|
||||
case ZeroOrOne:
|
||||
case One:
|
||||
result = ZeroOrOne;
|
||||
case TSQuantifierZero:
|
||||
case TSQuantifierZeroOrOne:
|
||||
case TSQuantifierOne:
|
||||
result = TSQuantifierZeroOrOne;
|
||||
break;
|
||||
case ZeroOrMore:
|
||||
case OneOrMore:
|
||||
result = ZeroOrMore;
|
||||
case TSQuantifierZeroOrMore:
|
||||
case TSQuantifierOneOrMore:
|
||||
result = TSQuantifierZeroOrMore;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case ZeroOrMore:
|
||||
result = ZeroOrMore;
|
||||
case TSQuantifierZeroOrMore:
|
||||
result = TSQuantifierZeroOrMore;
|
||||
break;
|
||||
case One:
|
||||
case TSQuantifierOne:
|
||||
switch (right) {
|
||||
case Zero:
|
||||
case ZeroOrOne:
|
||||
result = ZeroOrOne;
|
||||
case TSQuantifierZero:
|
||||
case TSQuantifierZeroOrOne:
|
||||
result = TSQuantifierZeroOrOne;
|
||||
break;
|
||||
case ZeroOrMore:
|
||||
result = ZeroOrMore;
|
||||
case TSQuantifierZeroOrMore:
|
||||
result = TSQuantifierZeroOrMore;
|
||||
break;
|
||||
case One:
|
||||
result = One;
|
||||
case TSQuantifierOne:
|
||||
result = TSQuantifierOne;
|
||||
break;
|
||||
case OneOrMore:
|
||||
result = OneOrMore;
|
||||
case TSQuantifierOneOrMore:
|
||||
result = TSQuantifierOneOrMore;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case OneOrMore:
|
||||
case TSQuantifierOneOrMore:
|
||||
switch (right) {
|
||||
case Zero:
|
||||
case ZeroOrOne:
|
||||
case ZeroOrMore:
|
||||
result = ZeroOrMore;
|
||||
case TSQuantifierZero:
|
||||
case TSQuantifierZeroOrOne:
|
||||
case TSQuantifierZeroOrMore:
|
||||
result = TSQuantifierZeroOrMore;
|
||||
break;
|
||||
case One:
|
||||
case OneOrMore:
|
||||
result = OneOrMore;
|
||||
case TSQuantifierOne:
|
||||
case TSQuantifierOneOrMore:
|
||||
result = TSQuantifierOneOrMore;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
|
|
@ -599,57 +599,57 @@ static TSQuantifier quantifier_add(
|
|||
TSQuantifier left,
|
||||
TSQuantifier right
|
||||
) {
|
||||
TSQuantifier result = Zero; // initialized to make compiler happy, but all cases should be covered below!
|
||||
TSQuantifier result = TSQuantifierZero; // initialized to make compiler happy, but all cases should be covered below!
|
||||
switch (left)
|
||||
{
|
||||
case Zero:
|
||||
case TSQuantifierZero:
|
||||
result = right;
|
||||
break;
|
||||
case ZeroOrOne:
|
||||
case TSQuantifierZeroOrOne:
|
||||
switch (right) {
|
||||
case Zero:
|
||||
result = ZeroOrOne;
|
||||
case TSQuantifierZero:
|
||||
result = TSQuantifierZeroOrOne;
|
||||
break;
|
||||
case ZeroOrOne:
|
||||
case ZeroOrMore:
|
||||
result = ZeroOrMore;
|
||||
case TSQuantifierZeroOrOne:
|
||||
case TSQuantifierZeroOrMore:
|
||||
result = TSQuantifierZeroOrMore;
|
||||
break;
|
||||
case One:
|
||||
case OneOrMore:
|
||||
result = OneOrMore;
|
||||
case TSQuantifierOne:
|
||||
case TSQuantifierOneOrMore:
|
||||
result = TSQuantifierOneOrMore;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case ZeroOrMore:
|
||||
case TSQuantifierZeroOrMore:
|
||||
switch (right) {
|
||||
case Zero:
|
||||
result = ZeroOrMore;
|
||||
case TSQuantifierZero:
|
||||
result = TSQuantifierZeroOrMore;
|
||||
break;
|
||||
case ZeroOrOne:
|
||||
case ZeroOrMore:
|
||||
result = ZeroOrMore;
|
||||
case TSQuantifierZeroOrOne:
|
||||
case TSQuantifierZeroOrMore:
|
||||
result = TSQuantifierZeroOrMore;
|
||||
break;
|
||||
case One:
|
||||
case OneOrMore:
|
||||
result = OneOrMore;
|
||||
case TSQuantifierOne:
|
||||
case TSQuantifierOneOrMore:
|
||||
result = TSQuantifierOneOrMore;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case One:
|
||||
case TSQuantifierOne:
|
||||
switch (right) {
|
||||
case Zero:
|
||||
result = One;
|
||||
case TSQuantifierZero:
|
||||
result = TSQuantifierOne;
|
||||
break;
|
||||
case ZeroOrOne:
|
||||
case ZeroOrMore:
|
||||
case One:
|
||||
case OneOrMore:
|
||||
result = OneOrMore;
|
||||
case TSQuantifierZeroOrOne:
|
||||
case TSQuantifierZeroOrMore:
|
||||
case TSQuantifierOne:
|
||||
case TSQuantifierOneOrMore:
|
||||
result = TSQuantifierOneOrMore;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case OneOrMore:
|
||||
result = OneOrMore;
|
||||
case TSQuantifierOneOrMore:
|
||||
result = TSQuantifierOneOrMore;
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
|
|
@ -688,7 +688,7 @@ static TSQuantifier capture_quantifier_for_id(
|
|||
const CaptureQuantifiers *self,
|
||||
uint16_t id
|
||||
) {
|
||||
return (self->size <= id) ? Zero : *array_get(self, id);
|
||||
return (self->size <= id) ? TSQuantifierZero : *array_get(self, id);
|
||||
}
|
||||
|
||||
// Add the given quantifier to the current value for id
|
||||
|
|
@ -745,7 +745,7 @@ static void capture_quantifiers_join_all(
|
|||
}
|
||||
for (uint32_t id = quantifiers->size; id < self->size; id++) {
|
||||
TSQuantifier *own_quantifier = array_get(self, id);
|
||||
*own_quantifier = quantifier_join(*own_quantifier, Zero);
|
||||
*own_quantifier = quantifier_join(*own_quantifier, TSQuantifierZero);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2381,11 +2381,11 @@ static TSQueryError ts_query__parse_pattern(
|
|||
stream_skip_whitespace(stream);
|
||||
|
||||
// Parse suffixes modifiers for this pattern
|
||||
TSQuantifier quantifier = One;
|
||||
TSQuantifier quantifier = TSQuantifierOne;
|
||||
for (;;) {
|
||||
// Parse the one-or-more operator.
|
||||
if (stream->next == '+') {
|
||||
quantifier = quantifier_join(OneOrMore, quantifier);
|
||||
quantifier = quantifier_join(TSQuantifierOneOrMore, quantifier);
|
||||
|
||||
stream_advance(stream);
|
||||
stream_skip_whitespace(stream);
|
||||
|
|
@ -2399,7 +2399,7 @@ static TSQueryError ts_query__parse_pattern(
|
|||
|
||||
// Parse the zero-or-more repetition operator.
|
||||
else if (stream->next == '*') {
|
||||
quantifier = quantifier_join(ZeroOrMore, quantifier);
|
||||
quantifier = quantifier_join(TSQuantifierZeroOrMore, quantifier);
|
||||
|
||||
stream_advance(stream);
|
||||
stream_skip_whitespace(stream);
|
||||
|
|
@ -2419,7 +2419,7 @@ static TSQueryError ts_query__parse_pattern(
|
|||
|
||||
// Parse the optional operator.
|
||||
else if (stream->next == '?') {
|
||||
quantifier = quantifier_join(ZeroOrOne, quantifier);
|
||||
quantifier = quantifier_join(TSQuantifierZeroOrOne, quantifier);
|
||||
|
||||
stream_advance(stream);
|
||||
stream_skip_whitespace(stream);
|
||||
|
|
@ -2453,7 +2453,7 @@ static TSQueryError ts_query__parse_pattern(
|
|||
query_step__add_capture(step, capture_id);
|
||||
// Add only once, not for every branch, lest the quantifier will be '+' instead of '1'
|
||||
if (step_index == starting_step_index) {
|
||||
capture_quantifiers_add_for_id(capture_quantifiers, capture_id, One);
|
||||
capture_quantifiers_add_for_id(capture_quantifiers, capture_id, TSQuantifierOne);
|
||||
}
|
||||
if (
|
||||
step->alternative_index != NONE &&
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue