From 559f0cfa83c543b2db24fafaf03762e69040563e Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Wed, 29 May 2013 23:04:45 +0400 Subject: [PATCH] sql regen: extends hooks & compact parseTokens --- .../lang/parser/GeneratedParserUtilBase.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/platform/lang-impl/src/com/intellij/lang/parser/GeneratedParserUtilBase.java b/platform/lang-impl/src/com/intellij/lang/parser/GeneratedParserUtilBase.java index 8726a40c6204..5cb0564af8fb 100644 --- a/platform/lang-impl/src/com/intellij/lang/parser/GeneratedParserUtilBase.java +++ b/platform/lang-impl/src/com/intellij/lang/parser/GeneratedParserUtilBase.java @@ -19,6 +19,7 @@ import com.intellij.psi.impl.source.resolve.FileContextUtil; import com.intellij.psi.impl.source.tree.CompositePsiElement; import com.intellij.psi.tree.ICompositeElementType; import com.intellij.psi.tree.IElementType; +import com.intellij.psi.tree.TokenSet; import com.intellij.util.Function; import com.intellij.util.containers.LimitedPool; import gnu.trove.THashSet; @@ -86,6 +87,17 @@ public class GeneratedParserUtilBase { return frame == null || frame.errorReportedAt <= builder_.getCurrentOffset(); } + public static TokenSet create_token_set_(IElementType... tokenTypes_) { + return TokenSet.create(tokenTypes_); + } + + public static boolean type_extends_impl_(TokenSet[] extendsSet_, IElementType child_, IElementType parent_) { + for (TokenSet set : extendsSet_) { + if (set.contains(child_) && set.contains(parent_)) return true; + } + return false; + } + public static boolean consumeTokens(PsiBuilder builder_, int pin_, IElementType... tokens_) { ErrorState state = ErrorState.get(builder_); if (state.completionState != null && state.predicateSign) { @@ -107,6 +119,18 @@ public class GeneratedParserUtilBase { return pinned_ || result_; } + public static boolean parseTokens(PsiBuilder builder_, int pin_, IElementType... tokens_) { + PsiBuilder.Marker marker_ = builder_.mark(); + boolean result_ = consumeTokens(builder_, pin_, tokens_); + if (!result_) { + marker_.rollbackTo(); + } + else { + marker_.drop(); + } + return result_; + } + public static boolean consumeToken(PsiBuilder builder_, IElementType token) { if (nextTokenIsInner(builder_, token, true)) { builder_.advanceLexer();