| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package fuchsia.developer.plugin.fidl; |
| |
| 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 fuchsia.developer.plugin.fidl.parser.Parser; |
| import fuchsia.developer.plugin.fidl.psi.File; |
| import fuchsia.developer.plugin.fidl.psi.Types; |
| import org.jetbrains.annotations.NotNull; |
| |
| public class FidlParserDefinition implements ParserDefinition { |
| public static final TokenSet WHITE_SPACES = TokenSet.create(TokenType.WHITE_SPACE); |
| public static final TokenSet COMMENTS = TokenSet.create(Types.LINE_COMMENT); |
| public static final IFileElementType FILE = new IFileElementType(Language.INSTANCE); |
| |
| @NotNull |
| @Override |
| public Lexer createLexer(Project project) { |
| return new LexerAdapter(); |
| } |
| |
| @NotNull |
| public TokenSet getWhitespaceTokens() { |
| return WHITE_SPACES; |
| } |
| |
| @NotNull |
| public TokenSet getCommentTokens() { |
| return COMMENTS; |
| } |
| |
| @NotNull |
| public TokenSet getStringLiteralElements() { |
| return TokenSet.EMPTY; |
| } |
| |
| @NotNull |
| public PsiParser createParser(final Project project) { |
| return new Parser(); |
| } |
| |
| @Override |
| public IFileElementType getFileNodeType() { |
| return FILE; |
| } |
| |
| public PsiFile createFile(FileViewProvider viewProvider) { |
| return new File(viewProvider); |
| } |
| |
| public SpaceRequirements spaceExistanceTypeBetweenTokens(ASTNode left, ASTNode right) { |
| return SpaceRequirements.MAY; |
| } |
| |
| @NotNull |
| public PsiElement createElement(ASTNode node) { |
| return Types.Factory.createElement(node); |
| } |
| } |