Files
openide/json/src/com/intellij/jsonpath/psi/JsonPathParserDefinition.java
Yuriy Artamonov 2abe15ffda [jsonpath] IDEA-295978 Do not load JsonPathTypes class eagerly on parser definition load
GitOrigin-RevId: bb3479db8368ba4c8df19e1a26e7cf5aa3ff66c8
2022-07-05 16:16:02 +00:00

59 lines
1.7 KiB
Java

// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.jsonpath.psi;
import com.intellij.jsonpath.JsonPathLanguage;
import com.intellij.jsonpath.lexer.JsonPathLexer;
import com.intellij.jsonpath.parser.JsonPathParser;
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.tree.IFileElementType;
import com.intellij.psi.tree.TokenSet;
import org.jetbrains.annotations.NotNull;
import static com.intellij.jsonpath.psi.JsonPathTokenSets.JSONPATH_STRINGS_SET;
public final class JsonPathParserDefinition implements ParserDefinition {
public static final IFileElementType FILE = new IFileElementType(JsonPathLanguage.INSTANCE);
@Override
public @NotNull Lexer createLexer(Project project) {
return new JsonPathLexer();
}
@Override
public @NotNull PsiParser createParser(Project project) {
return new JsonPathParser();
}
@Override
public @NotNull PsiFile createFile(@NotNull FileViewProvider viewProvider) {
return new JsonPathFile(viewProvider);
}
@Override
public @NotNull IFileElementType getFileNodeType() {
return FILE;
}
@Override
public @NotNull TokenSet getCommentTokens() {
return TokenSet.EMPTY;
}
@Override
public @NotNull TokenSet getStringLiteralElements() {
return JSONPATH_STRINGS_SET;
}
@Override
public @NotNull PsiElement createElement(ASTNode node) {
return JsonPathTypes.Factory.createElement(node);
}
}