Intermediate commit for BNF and generated Parser and Lexer.

This commit is contained in:
2021-07-14 13:07:54 +02:00
parent 6d6e411532
commit 9047c53a0e
136 changed files with 6853 additions and 2 deletions
@@ -0,0 +1,66 @@
package de.platon42.intellij.plugins.m68k.parser;
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 de.platon42.intellij.plugins.m68k.M68kFileElementType;
import de.platon42.intellij.plugins.m68k.lexer.M68kLexer;
import de.platon42.intellij.plugins.m68k.psi.M68kFile;
import de.platon42.intellij.plugins.m68k.psi.M68kTypes;
import org.jetbrains.annotations.NotNull;
public class M68kParserDefinition implements ParserDefinition {
public static final TokenSet STRING_LITERALS = TokenSet.create(M68kTypes.STRINGLIT);
public static final TokenSet COMMENTS = TokenSet.create(M68kTypes.COMMENT);
public static final TokenSet WHITE_SPACE = TokenSet.create(M68kTypes.WHITE_SPACE);
public M68kParserDefinition() {
}
@Override
public @NotNull Lexer createLexer(Project project) {
return new M68kLexer();
}
@Override
public @NotNull PsiParser createParser(Project project) {
return new M68kParser();
}
@Override
public @NotNull IFileElementType getFileNodeType() {
return M68kFileElementType.INSTANCE;
}
// @Override
// public @NotNull TokenSet getWhitespaceTokens() {
// return WHITE_SPACE;
// }
@Override
public @NotNull TokenSet getCommentTokens() {
return COMMENTS;
}
@Override
public @NotNull TokenSet getStringLiteralElements() {
return STRING_LITERALS;
}
@Override
public @NotNull PsiElement createElement(ASTNode node) {
return M68kTypes.Factory.createElement(node);
}
@Override
public @NotNull PsiFile createFile(@NotNull FileViewProvider viewProvider) {
return new M68kFile(viewProvider);
}
}
@@ -0,0 +1,22 @@
package de.platon42.intellij.plugins.m68k.parser;
import com.intellij.lang.PsiBuilder;
import com.intellij.lang.parser.GeneratedParserUtilBase;
import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.SYMBOL;
public class M68kParserUtilBase extends GeneratedParserUtilBase {
public static boolean parseMacroCallOrAsmInstruction(PsiBuilder b, int level) {
boolean r = false;
if (!nextTokenIs(b, SYMBOL)) return M68kParser.MacroCall(b, level);
PsiBuilder.Marker m = enter_section_(b);
//M68kMnemonics.INSTANCE.getMnemonics().stream().findFirst() nextTokenIs(, )
r = M68kParser.AsmInstruction(b, level);
exit_section_(b, m, null, r);
return r;
}
}