faster initialization of some ParserDefinitions

This commit is contained in:
peter
2018-12-10 19:41:16 +01:00
parent 799d72cb55
commit f74c53eb18
3 changed files with 12 additions and 13 deletions
@@ -15,6 +15,8 @@
*/
package org.intellij.lang.regexp;
import java.util.EnumSet;
/**
* @author yole
*/
@@ -121,4 +123,9 @@ public enum RegExpCapability {
* MySQL character classes [=c=] [.class.] [:<:] [:>:]
*/
MYSQL_BRACKET_EXPRESSIONS,
;
static final EnumSet<RegExpCapability> DEFAULT_CAPABILITIES = EnumSet.of(NESTED_CHARACTER_CLASSES,
ALLOW_HORIZONTAL_WHITESPACE_CLASS,
UNICODE_CATEGORY_SHORTHAND,
EXTENDED_UNICODE_CHARACTER);
}
@@ -34,17 +34,10 @@ import org.jetbrains.annotations.NotNull;
import java.util.EnumSet;
public class RegExpParserDefinition implements ParserDefinition {
// whitespace to make handling char ranges simple, consider for example the following regex: [\Q[]\E-z]
private static final TokenSet WHITE_SPACE_TOKENS = TokenSet.create(RegExpTT.QUOTE_BEGIN, RegExpTT.QUOTE_END, TokenType.WHITE_SPACE);
private static final TokenSet COMMENT_TOKENS = TokenSet.create(RegExpTT.COMMENT);
private static final EnumSet<RegExpCapability> CAPABILITIES = EnumSet.of(RegExpCapability.NESTED_CHARACTER_CLASSES,
RegExpCapability.ALLOW_HORIZONTAL_WHITESPACE_CLASS,
RegExpCapability.UNICODE_CATEGORY_SHORTHAND,
RegExpCapability.EXTENDED_UNICODE_CHARACTER);
@NotNull
public EnumSet<RegExpCapability> getDefaultCapabilities() {
return CAPABILITIES;
return RegExpCapability.DEFAULT_CAPABILITIES;
}
@Override
@@ -76,7 +69,7 @@ public class RegExpParserDefinition implements ParserDefinition {
@Override
@NotNull
public TokenSet getWhitespaceTokens() {
return WHITE_SPACE_TOKENS;
return TokenSet.create(RegExpTT.QUOTE_BEGIN, RegExpTT.QUOTE_END, TokenType.WHITE_SPACE);
}
@Override
@@ -88,7 +81,7 @@ public class RegExpParserDefinition implements ParserDefinition {
@Override
@NotNull
public TokenSet getCommentTokens() {
return COMMENT_TOKENS;
return TokenSet.create(RegExpTT.COMMENT);
}
@Override
@@ -37,8 +37,7 @@ import org.intellij.plugins.relaxNG.compact.psi.impl.RncFileImpl;
import org.jetbrains.annotations.NotNull;
public class RncParserDefinition implements ParserDefinition {
public static final IFileElementType FILE_ELEMENT_TYPE = new IFileElementType(RngCompactLanguage.INSTANCE);
private static final TokenSet myCommentTypes = TokenSet.orSet(RncTokenTypes.COMMENTS, RncTokenTypes.DOC_TOKENS);
private static final IFileElementType FILE_ELEMENT_TYPE = new IFileElementType(RngCompactLanguage.INSTANCE);
@Override
@NotNull
@@ -65,7 +64,7 @@ public class RncParserDefinition implements ParserDefinition {
@Override
@NotNull
public TokenSet getCommentTokens() {
return myCommentTypes;
return TokenSet.orSet(RncTokenTypes.COMMENTS, RncTokenTypes.DOC_TOKENS);
}
@Override