mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
introduce multi-token nextTokenIs()
This commit is contained in:
@@ -173,6 +173,33 @@ public class GeneratedParserUtilBase {
|
||||
return builder_.getTokenType() == token;
|
||||
}
|
||||
|
||||
public static boolean nextTokenIsFast(PsiBuilder builder_, IElementType... tokens) {
|
||||
IElementType tokenType = builder_.getTokenType();
|
||||
for (IElementType token : tokens) {
|
||||
if (token == tokenType) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean nextTokenIs(PsiBuilder builder_, String frameName, IElementType... tokens) {
|
||||
ErrorState state = ErrorState.get(builder_);
|
||||
if (state.completionState != null) return true;
|
||||
boolean track = !state.suppressErrors && state.predicateCount < 2 && state.predicateSign;
|
||||
if (!track) return nextTokenIsFast(builder_, tokens);
|
||||
boolean useFrameName = StringUtil.isNotEmpty(frameName);
|
||||
IElementType tokenType = builder_.getTokenType();
|
||||
if (tokenType == null) return false;
|
||||
boolean result = false;
|
||||
for (IElementType token : tokens) {
|
||||
if (!useFrameName) addVariant(builder_, state, token);
|
||||
result |= tokenType == token;
|
||||
}
|
||||
if (useFrameName) {
|
||||
addVariantInner(state, builder_.getCurrentOffset(), frameName);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static boolean nextTokenIs(PsiBuilder builder_, IElementType token) {
|
||||
return nextTokenIsInner(builder_, token, false);
|
||||
}
|
||||
@@ -187,6 +214,7 @@ public class GeneratedParserUtilBase {
|
||||
return token == tokenType;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static boolean replaceVariants(PsiBuilder builder_, int variantCount, String frameName) {
|
||||
ErrorState state = ErrorState.get(builder_);
|
||||
if (!state.suppressErrors && state.predicateCount < 2 && state.predicateSign) {
|
||||
|
||||
Reference in New Issue
Block a user