package dev.hgh.jai.psi 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 dev.hgh.jai.JaiLanguage import dev.hgh.jai.lexer.JaiLexer import dev.hgh.jai.lexer.JaiTokenTypes import dev.hgh.jai.parser.JaiParser class JaiParserDefinition : ParserDefinition { override fun createLexer(project: Project?): Lexer = JaiLexer() override fun createParser(project: Project?): PsiParser = JaiParser() override fun getFileNodeType(): IFileElementType = FILE override fun getCommentTokens(): TokenSet = JaiTokenTypes.COMMENTS override fun getStringLiteralElements(): TokenSet = JaiTokenTypes.STRINGS override fun createElement(node: ASTNode?): PsiElement = JaiTypes.Factory.createElement(node) override fun createFile(viewProvider: FileViewProvider): PsiFile = JaiFile(viewProvider) companion object { val FILE = IFileElementType(JaiLanguage) } }