mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-01 11:20:44 +07:00
Java: Pratt expression parser cleanup (IDEA-305898)
GitOrigin-RevId: 97465caee1ec49b759290fef92e48d7231bf4681
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c8215f8fbc
commit
5fe32f5f14
+10
-18
@@ -29,7 +29,6 @@ import static com.intellij.psi.impl.source.BasicElementTypes.*;
|
||||
@SuppressWarnings("UnnecessarilyQualifiedStaticUsage")
|
||||
@ApiStatus.Experimental
|
||||
public class BasicPrattExpressionParser {
|
||||
static final int FORBID_LAMBDA_MASK = 0x1;
|
||||
private final Map<IElementType, ParserData> ourInfixParsers;
|
||||
private static final TokenSet THIS_OR_SUPER = TokenSet.create(JavaTokenType.THIS_KEYWORD, JavaTokenType.SUPER_KEYWORD);
|
||||
private static final TokenSet ID_OR_SUPER = TokenSet.create(JavaTokenType.IDENTIFIER, JavaTokenType.SUPER_KEYWORD);
|
||||
@@ -42,7 +41,6 @@ public class BasicPrattExpressionParser {
|
||||
private static final TokenSet PREF_ARITHMETIC_OPS = TokenSet.orSet(POSTFIX_OPS, TokenSet.create(JavaTokenType.PLUS, JavaTokenType.MINUS));
|
||||
private static final TokenSet PREFIX_OPS = TokenSet.orSet(PREF_ARITHMETIC_OPS, TokenSet.create(JavaTokenType.TILDE, JavaTokenType.EXCL));
|
||||
|
||||
|
||||
private static final int MULTIPLICATION_PRECEDENCE = 2;
|
||||
private static final int ADDITIVE_PRECEDENCE = 3;
|
||||
private static final int SHIFT_PRECEDENCE = 4;
|
||||
@@ -418,7 +416,7 @@ public class BasicPrattExpressionParser {
|
||||
}
|
||||
|
||||
if (tokenType == JavaTokenType.LPARENTH) {
|
||||
if (!BitUtil.isSet(mode, FORBID_LAMBDA_MASK)) {
|
||||
if (!BitUtil.isSet(mode, BasicExpressionParser.FORBID_LAMBDA_MASK)) {
|
||||
final PsiBuilder.Marker lambda = parseLambdaAfterParenth(builder);
|
||||
if (lambda != null) {
|
||||
return lambda;
|
||||
@@ -433,10 +431,8 @@ public class BasicPrattExpressionParser {
|
||||
error(builder, JavaPsiBundle.message("expected.expression"));
|
||||
}
|
||||
|
||||
if (!expect(builder, JavaTokenType.RPARENTH)) {
|
||||
if (inner != null) {
|
||||
error(builder, JavaPsiBundle.message("expected.rparen"));
|
||||
}
|
||||
if (!expect(builder, JavaTokenType.RPARENTH) && inner != null) {
|
||||
error(builder, JavaPsiBundle.message("expected.rparen"));
|
||||
}
|
||||
|
||||
parenth.done(myJavaElementTypeContainer.PARENTH_EXPRESSION);
|
||||
@@ -470,7 +466,7 @@ public class BasicPrattExpressionParser {
|
||||
builder.remapCurrentToken(tokenType = JavaTokenType.IDENTIFIER);
|
||||
}
|
||||
if (tokenType == JavaTokenType.IDENTIFIER) {
|
||||
if (!BitUtil.isSet(mode, FORBID_LAMBDA_MASK) && builder.lookAhead(1) == JavaTokenType.ARROW) {
|
||||
if (!BitUtil.isSet(mode, BasicExpressionParser.FORBID_LAMBDA_MASK) && builder.lookAhead(1) == JavaTokenType.ARROW) {
|
||||
return parseLambdaExpression(builder, false);
|
||||
}
|
||||
|
||||
@@ -882,21 +878,17 @@ public class BasicPrattExpressionParser {
|
||||
if (builder.rawLookup(1) == JavaTokenType.GT) {
|
||||
if (builder.rawLookup(2) == JavaTokenType.GT) {
|
||||
if (builder.rawLookup(3) == JavaTokenType.EQ) {
|
||||
tokenType = JavaTokenType.GTGTGTEQ;
|
||||
}
|
||||
else {
|
||||
tokenType = JavaTokenType.GTGTGT;
|
||||
return JavaTokenType.GTGTGTEQ;
|
||||
}
|
||||
return JavaTokenType.GTGTGT;
|
||||
}
|
||||
else if (builder.rawLookup(2) == JavaTokenType.EQ) {
|
||||
tokenType = JavaTokenType.GTGTEQ;
|
||||
}
|
||||
else {
|
||||
tokenType = JavaTokenType.GTGT;
|
||||
if (builder.rawLookup(2) == JavaTokenType.EQ) {
|
||||
return JavaTokenType.GTGTEQ;
|
||||
}
|
||||
return JavaTokenType.GTGT;
|
||||
}
|
||||
else if (builder.rawLookup(1) == JavaTokenType.EQ) {
|
||||
tokenType = JavaTokenType.GE;
|
||||
return JavaTokenType.GE;
|
||||
}
|
||||
|
||||
return tokenType;
|
||||
|
||||
Reference in New Issue
Block a user