package org.fandev.lang.fan; import com.intellij.lang.ASTNode; import com.intellij.lang.ParserDefinition; import static com.intellij.lang.ParserDefinition.SpaceRequirements.MAY; 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.fandev.lang.fan.parser.FanPsiCreator; import org.fandev.lang.fan.parsing.FanParser; import org.fandev.lang.fan.psi.impl.FanFileImpl; import org.jetbrains.annotations.NotNull; /** * @author Dror * @date Dec 11, 2008 11:50:55 PM */ public class FanParserDefinition implements ParserDefinition { @NotNull public Lexer createLexer(final Project project) { return new FanParsingLexer(); } public PsiParser createParser(final Project project) { return new FanParser(); } public IFileElementType getFileNodeType() { return FanElementTypes.FILE; } @NotNull public TokenSet getWhitespaceTokens() { return TokenSet.create(FanTokenTypes.WHITE_SPACE); } @NotNull public TokenSet getCommentTokens() { return FanTokenTypes.COMMENTS; } @NotNull public TokenSet getStringLiteralElements() { return FanTokenTypes.STRING_LITERALS; } @NotNull public PsiElement createElement(final ASTNode astNode) { return FanPsiCreator.createElement(astNode); } public PsiFile createFile(final FileViewProvider fileViewProvider) { return new FanFileImpl(fileViewProvider); } public SpaceRequirements spaceExistanceTypeBetweenTokens(final ASTNode astNode, final ASTNode astNode1) { return MAY; } }