/* | |
* Copyright (C) 2015 The Android Open Source Project | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
package com.android.tools.idea.lang.databinding; | |
import com.android.tools.idea.lang.databinding.parser.DbParser; | |
import com.android.tools.idea.lang.databinding.psi.DbTokenTypes; | |
import com.intellij.lang.ASTNode; | |
import com.intellij.lang.Language; | |
import com.intellij.lang.ParserDefinition; | |
import com.intellij.lang.PsiParser; | |
import com.intellij.lexer.FlexAdapter; | |
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.jetbrains.annotations.NotNull; | |
import java.io.Reader; | |
public class DbParserDefinition implements ParserDefinition { | |
private static final IFileElementType FILE_ELEMENT_TYPE = new IFileElementType(Language.findInstance(DbLanguage.class)); | |
private static final TokenSet WHITE_SPACES = TokenSet.create(TokenType.WHITE_SPACE); | |
@NotNull | |
@Override | |
public Lexer createLexer(Project project) { | |
return new FlexAdapter(new _DbLexer((Reader)null)); | |
} | |
@Override | |
public PsiParser createParser(Project project) { | |
return new DbParser(); | |
} | |
@Override | |
public IFileElementType getFileNodeType() { | |
return FILE_ELEMENT_TYPE; | |
} | |
@NotNull | |
@Override | |
public TokenSet getWhitespaceTokens() { | |
return WHITE_SPACES; | |
} | |
@NotNull | |
@Override | |
public TokenSet getCommentTokens() { | |
return TokenSet.EMPTY; | |
} | |
@NotNull | |
@Override | |
public TokenSet getStringLiteralElements() { | |
return TokenSet.create(DbTokenTypes.STRING_LITERAL); | |
} | |
@NotNull | |
@Override | |
public PsiElement createElement(ASTNode node) { | |
return DbTokenTypes.Factory.createElement(node); | |
} | |
@Override | |
public PsiFile createFile(FileViewProvider viewProvider) { | |
return new DbFile(viewProvider); | |
} | |
@Override | |
public SpaceRequirements spaceExistanceTypeBetweenTokens(ASTNode left, ASTNode right) { | |
return SpaceRequirements.MAY; | |
} | |
} |