Groovy TokenSets

This commit is contained in:
Maxim Medvedev
2011-04-16 19:25:57 +04:00
parent 59ca65fc93
commit 147eaf708f
3 changed files with 24 additions and 35 deletions
@@ -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
);
}
@@ -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();
}
}
}
@@ -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;
}
}
}