diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/lexer/TokenSets.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/lexer/TokenSets.java index b69e99d0bf0b..ea46ccadfdee 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/lexer/TokenSets.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/lexer/TokenSets.java @@ -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 + ); } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/expressions/arithmetic/PostfixExpression.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/expressions/arithmetic/PostfixExpression.java index 32dc51a6f575..e8edbafc9d0b 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/expressions/arithmetic/PostfixExpression.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/expressions/arithmetic/PostfixExpression.java @@ -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(); } } - - } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/expressions/arithmetic/UnaryExpression.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/expressions/arithmetic/UnaryExpression.java index 2f4df3dd4d6d..64d4a3c3c515 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/expressions/arithmetic/UnaryExpression.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/expressions/arithmetic/UnaryExpression.java @@ -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; } } - }