aboutsummaryrefslogtreecommitdiffstats
path: root/sd-plugin/src/main/java/org/intellij/sdk/language/parser/SdParserDefinition.java
diff options
context:
space:
mode:
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.java87
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