package com.innovatian.idea.powershell.lang.parser; import com.innovatian.idea.powershell.PsFileType; import com.innovatian.idea.powershell.lang.lexer.PsLexer; import com.innovatian.idea.powershell.lang.lexer.PsTokenSets; import com.innovatian.idea.powershell.lang.psi.PsFile; 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.IStubFileElementType; import com.intellij.psi.tree.TokenSet; import org.jetbrains.annotations.NotNull; public class PsParserDefinition implements ParserDefinition { public static final IStubFileElementType PS_FILE = new PsStubFileElementType(PsFileType.PS_FILE_TYPE.getLanguage()); @NotNull public Lexer createLexer(Project project) { return new PsLexer(); } public PsiParser createParser(Project project) { return new PsParser(); } public IFileElementType getFileNodeType() { return PS_FILE; } @NotNull public TokenSet getWhitespaceTokens() { return PsTokenSets.WHITE_SPACES_SET; } @NotNull public TokenSet getCommentTokens() { return PsTokenSets.COMMENT_SET; } @NotNull public TokenSet getStringLiteralElements() { return PsTokenSets.LITERALS_SET; } @NotNull public PsiElement createElement(ASTNode node) { return PsPsiCreator.createElement(node); } public PsiFile createFile(FileViewProvider viewProvider) { return new PsFile(viewProvider); } public SpaceRequirements spaceExistanceTypeBetweenTokens(ASTNode left, ASTNode right) { return SpaceRequirements.MAY; } }