diff options
Diffstat (limited to 'sd-plugin/src/main/java/org/intellij/sdk/language/parser/SdParserDefinition.java')
-rw-r--r-- | sd-plugin/src/main/java/org/intellij/sdk/language/parser/SdParserDefinition.java | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/parser/SdParserDefinition.java b/sd-plugin/src/main/java/org/intellij/sdk/language/parser/SdParserDefinition.java new file mode 100644 index 00000000000..9d888a89cbf --- /dev/null +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/parser/SdParserDefinition.java @@ -0,0 +1,87 @@ +package org.intellij.sdk.language.parser; + +import com.intellij.lang.ASTNode; +import com.intellij.lang.ParserDefinition; +import com.intellij.lang.PsiParser; +import com.intellij.lexer.Lexer; +import com.intellij.openapi.project.Project; +import com.intellij.psi.FileViewProvider; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; +import com.intellij.psi.TokenType; +import com.intellij.psi.tree.IFileElementType; +import com.intellij.psi.tree.TokenSet; +import org.intellij.sdk.language.SdLanguage; +import org.intellij.sdk.language.SdLexerAdapter; +import org.intellij.sdk.language.parser.SdParser; +import org.intellij.sdk.language.psi.SdFile; +import org.intellij.sdk.language.psi.SdTypes; +import org.jetbrains.annotations.NotNull; + +public class SdParserDefinition implements ParserDefinition { + public static final TokenSet WHITE_SPACES = TokenSet.create(TokenType.WHITE_SPACE); + public static final TokenSet COMMENTS = TokenSet.create(SdTypes.COMMENT); + public static final TokenSet STRINGS = TokenSet.create(SdTypes.STRING); + + public static final IFileElementType FILE = new IFileElementType(SdLanguage.INSTANCE); + + @NotNull + @Override + public Lexer createLexer(Project project) { + return new SdLexerAdapter(); + } + + @NotNull + @Override + public PsiParser createParser(final Project project) { + return new SdParser(); + } + + @NotNull + @Override + public TokenSet getWhitespaceTokens() { + return WHITE_SPACES; + } + + @NotNull + @Override + public TokenSet getCommentTokens() { + return COMMENTS; + } + + @NotNull + @Override + public TokenSet getStringLiteralElements() { + return STRINGS; + } + + @NotNull + @Override + public IFileElementType getFileNodeType() { + return FILE; + } + + @NotNull + @Override + public PsiFile createFile(@NotNull FileViewProvider viewProvider) { + return new SdFile(viewProvider); + } + + @NotNull + @Override + public SpaceRequirements spaceExistenceTypeBetweenTokens(ASTNode left, ASTNode right) { + return SpaceRequirements.MAY; + } + + @NotNull + @Override + public PsiElement createElement(ASTNode node) { + return SdTypes.Factory.createElement(node); + } + +} + + + + +
\ No newline at end of file |