mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Groovy TokenSets
This commit is contained in:
@@ -196,4 +196,14 @@ public abstract class TokenSets {
|
||||
);
|
||||
|
||||
public static final TokenSet SHIFT_SIGNS = TokenSet.create(COMPOSITE_LSHIFT_SIGN, COMPOSITE_RSHIFT_SIGN, COMPOSITE_TRIPLE_SHIFT_SIGN);
|
||||
|
||||
public static final TokenSet POSTFIXES = TokenSet.create(mINC,mDEC);
|
||||
public static final TokenSet PREFIXES = TokenSet.create(
|
||||
mPLUS,
|
||||
mMINUS,
|
||||
mINC,
|
||||
mDEC,
|
||||
mBNOT,
|
||||
mLNOT
|
||||
);
|
||||
}
|
||||
|
||||
+7
-16
@@ -17,7 +17,7 @@
|
||||
package org.jetbrains.plugins.groovy.lang.parser.parsing.statements.expressions.arithmetic;
|
||||
|
||||
import com.intellij.lang.PsiBuilder;
|
||||
import com.intellij.psi.tree.TokenSet;
|
||||
import org.jetbrains.plugins.groovy.lang.lexer.TokenSets;
|
||||
import org.jetbrains.plugins.groovy.lang.parser.GroovyElementTypes;
|
||||
import org.jetbrains.plugins.groovy.lang.parser.GroovyParser;
|
||||
import org.jetbrains.plugins.groovy.lang.parser.parsing.util.ParserUtils;
|
||||
@@ -27,35 +27,26 @@ import org.jetbrains.plugins.groovy.lang.parser.parsing.util.ParserUtils;
|
||||
*/
|
||||
public class PostfixExpression implements GroovyElementTypes {
|
||||
|
||||
|
||||
private static final TokenSet POSTFIXES = TokenSet.create(
|
||||
mINC,
|
||||
mDEC
|
||||
);
|
||||
|
||||
public static boolean parse(PsiBuilder builder, GroovyParser parser) {
|
||||
|
||||
PsiBuilder.Marker marker = builder.mark();
|
||||
if (PathExpression.parse(builder, parser)) {
|
||||
subParse(builder, marker);
|
||||
return true;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
marker.drop();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static void subParse(PsiBuilder builder,
|
||||
PsiBuilder.Marker marker
|
||||
) {
|
||||
if (ParserUtils.getToken(builder, POSTFIXES)) {
|
||||
private static void subParse(PsiBuilder builder, PsiBuilder.Marker marker) {
|
||||
if (ParserUtils.getToken(builder, TokenSets.POSTFIXES)) {
|
||||
PsiBuilder.Marker newMarker = marker.precede();
|
||||
marker.done(POSTFIX_EXPRESSION);
|
||||
subParse(builder, newMarker);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
marker.drop();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+7
-19
@@ -17,8 +17,8 @@
|
||||
package org.jetbrains.plugins.groovy.lang.parser.parsing.statements.expressions.arithmetic;
|
||||
|
||||
import com.intellij.lang.PsiBuilder;
|
||||
import com.intellij.psi.tree.TokenSet;
|
||||
import org.jetbrains.plugins.groovy.GroovyBundle;
|
||||
import org.jetbrains.plugins.groovy.lang.lexer.TokenSets;
|
||||
import org.jetbrains.plugins.groovy.lang.parser.GroovyElementTypes;
|
||||
import org.jetbrains.plugins.groovy.lang.parser.GroovyParser;
|
||||
import org.jetbrains.plugins.groovy.lang.parser.parsing.util.ParserUtils;
|
||||
@@ -28,31 +28,19 @@ import org.jetbrains.plugins.groovy.lang.parser.parsing.util.ParserUtils;
|
||||
*/
|
||||
public class UnaryExpression implements GroovyElementTypes {
|
||||
|
||||
private static final TokenSet PREFIXES = TokenSet.create(
|
||||
mPLUS,
|
||||
mMINUS,
|
||||
mINC,
|
||||
mDEC,
|
||||
mBNOT,
|
||||
mLNOT
|
||||
);
|
||||
|
||||
public static boolean parse(PsiBuilder builder, GroovyParser parser) {
|
||||
|
||||
PsiBuilder.Marker marker = builder.mark();
|
||||
if (ParserUtils.getToken(builder, PREFIXES)) {
|
||||
if (ParserUtils.getToken(builder, TokenSets.PREFIXES)) {
|
||||
ParserUtils.getToken(builder, mNLS);
|
||||
parse(builder, parser);
|
||||
marker.done(UNARY_EXPRESSION);
|
||||
return true;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
marker.drop();
|
||||
if (!UnaryExpressionNotPlusMinus.parse(builder, parser)) {
|
||||
builder.error(GroovyBundle.message("expression.expected"));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
if (UnaryExpressionNotPlusMinus.parse(builder, parser)) return true;
|
||||
builder.error(GroovyBundle.message("expression.expected"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user