diff --git a/build.gradle b/build.gradle
index c6fbe1a..1f97557 100644
--- a/build.gradle
+++ b/build.gradle
@@ -53,6 +53,8 @@ patchPluginXml {
"""
}
+sourceSets.main.java.srcDirs 'src/main/gen'
+
test {
useJUnitPlatform()
testLogging {
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/lexer/_M68kLexer.java b/src/main/gen/de/platon42/intellij/plugins/m68k/lexer/_M68kLexer.java
new file mode 100644
index 0000000..35bfad5
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/lexer/_M68kLexer.java
@@ -0,0 +1,1124 @@
+/* The following code was generated by JFlex 1.7.0 tweaked for IntelliJ platform */
+
+package de.platon42.intellij.plugins.m68k.lexer;
+
+import com.intellij.lexer.FlexLexer;
+import com.intellij.psi.tree.IElementType;
+
+import static com.intellij.psi.TokenType.BAD_CHARACTER;
+import static com.intellij.psi.TokenType.WHITE_SPACE;
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.*;
+
+
+/**
+ * This class is a scanner generated by
+ * JFlex 1.7.0
+ * from the specification file _M68kLexer.flex
+ */
+public class _M68kLexer implements FlexLexer {
+
+ /**
+ * This character denotes the end of file
+ */
+ public static final int YYEOF = -1;
+
+ /**
+ * initial size of the lookahead buffer
+ */
+ private static final int ZZ_BUFFERSIZE = 16384;
+
+ /**
+ * lexical states
+ */
+ public static final int YYINITIAL = 0;
+
+ /**
+ * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
+ * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
+ * at the beginning of a line
+ * l is of the form l = 2*k, k a non negative integer
+ */
+ private static final int ZZ_LEXSTATE[] = {
+ 0, 0
+ };
+
+ /**
+ * Translates characters to character classes
+ * Chosen bits are [11, 6, 4]
+ * Total runtime size is 14432 bytes
+ */
+ public static int ZZ_CMAP(int ch) {
+ return ZZ_CMAP_A[(ZZ_CMAP_Y[(ZZ_CMAP_Z[ch >> 10] << 6) | ((ch >> 4) & 0x3f)] << 4) | (ch & 0xf)];
+ }
+
+ /* The ZZ_CMAP_Z table has 1088 entries */
+ static final char ZZ_CMAP_Z[] = zzUnpackCMap(
+ "\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\2\11\1\12\1\13\6\14\1\15\23\14\1\16" +
+ "\1\14\1\17\1\20\12\14\1\21\10\11\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1" +
+ "\32\1\33\1\34\1\35\2\11\1\14\1\36\3\11\1\37\10\11\1\40\1\41\5\14\1\42\1\43" +
+ "\11\11\1\44\2\11\1\45\5\11\1\46\4\11\1\47\1\50\4\11\51\14\1\51\3\14\1\52\1" +
+ "\53\4\14\1\54\12\11\1\55\u0381\11");
+
+ /* The ZZ_CMAP_Y table has 2944 entries */
+ static final char ZZ_CMAP_Y[] = zzUnpackCMap(
+ "\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\1\1\11\1\12\1\13\1\14\1\13\1\14\34" +
+ "\13\1\15\1\16\1\17\10\1\1\20\1\21\1\13\1\22\4\13\1\23\10\13\1\24\12\13\1\25" +
+ "\1\13\1\26\1\25\1\13\1\27\4\1\1\13\1\30\1\31\2\1\2\13\1\30\1\1\1\32\1\25\5" +
+ "\13\1\33\1\34\1\35\1\1\1\36\1\13\1\1\1\37\5\13\1\40\1\41\1\42\1\13\1\30\1" +
+ "\43\1\13\1\44\1\45\1\1\1\13\1\46\4\1\1\13\1\47\4\1\1\50\2\13\1\51\1\1\1\52" +
+ "\1\53\1\25\1\54\1\55\1\56\1\57\1\60\1\61\1\53\1\16\1\62\1\55\1\56\1\63\1\1" +
+ "\1\64\1\65\1\66\1\67\1\22\1\56\1\70\1\1\1\71\1\53\1\72\1\73\1\55\1\56\1\70" +
+ "\1\1\1\61\1\53\1\41\1\74\1\75\1\76\1\77\1\1\1\71\1\65\1\1\1\100\1\36\1\56" +
+ "\1\51\1\1\1\101\1\53\1\1\1\102\1\36\1\56\1\103\1\1\1\60\1\53\1\104\1\100\1" +
+ "\36\1\13\1\105\1\60\1\106\1\53\1\107\1\110\1\111\1\13\1\112\1\113\1\1\1\65" +
+ "\1\1\1\25\2\13\1\114\1\113\1\115\2\1\1\116\1\117\1\120\1\121\1\122\1\123\2" +
+ "\1\1\71\1\1\1\115\1\1\1\124\1\13\1\125\1\1\1\126\7\1\2\13\1\30\1\127\1\115" +
+ "\1\130\1\131\1\132\1\133\1\115\2\13\1\134\2\13\1\135\24\13\1\136\1\137\2\13" +
+ "\1\136\2\13\1\140\1\141\1\14\3\13\1\141\3\13\1\30\2\1\1\13\1\1\5\13\1\142" +
+ "\1\25\45\13\1\143\1\13\1\144\1\30\4\13\1\30\1\145\1\146\1\16\1\13\1\16\1\13" +
+ "\1\16\1\146\1\71\3\13\1\147\1\1\1\150\1\115\2\1\1\115\5\13\1\27\1\151\1\13" +
+ "\1\152\4\13\1\40\1\13\1\153\2\1\1\65\1\13\1\154\1\155\2\13\1\156\1\13\1\77" +
+ "\1\115\2\1\1\13\1\113\3\13\1\155\2\1\2\115\1\157\5\1\1\110\2\13\1\147\1\160" +
+ "\1\115\2\1\1\161\1\13\1\162\1\42\2\13\1\40\1\1\2\13\1\147\1\1\1\163\1\42\1" +
+ "\13\1\154\1\46\5\1\1\164\1\165\14\13\4\1\21\13\1\142\2\13\1\142\1\166\1\13" +
+ "\1\154\3\13\1\167\1\170\1\171\1\125\1\170\1\172\1\1\1\173\2\1\1\174\1\1\1" +
+ "\175\1\1\1\125\6\1\1\176\1\177\1\200\1\201\1\202\3\1\1\203\147\1\2\13\1\153" +
+ "\2\13\1\153\10\13\1\204\1\205\2\13\1\134\3\13\1\206\1\1\1\13\1\113\4\207\4" +
+ "\1\1\127\35\1\1\210\2\1\1\211\1\25\4\13\1\212\1\25\4\13\1\135\1\110\1\13\1" +
+ "\154\1\25\4\13\1\153\1\1\1\13\1\30\3\1\1\13\40\1\133\13\1\40\4\1\135\13\1" +
+ "\40\2\1\10\13\1\125\4\1\2\13\1\154\20\13\1\125\1\13\1\213\1\1\2\13\1\153\1" +
+ "\127\1\13\1\154\4\13\1\40\2\1\1\214\1\215\5\13\1\216\1\13\1\153\1\27\3\1\1" +
+ "\214\1\217\1\13\1\31\1\1\3\13\1\147\1\215\2\13\1\147\1\1\1\115\1\1\1\220\1" +
+ "\42\1\13\1\40\1\13\1\113\1\1\1\13\1\125\1\50\2\13\1\31\1\127\1\115\1\221\1" +
+ "\222\2\13\1\46\1\1\1\223\1\115\1\13\1\224\3\13\1\225\1\226\1\227\1\30\1\66" +
+ "\1\230\1\231\1\207\2\13\1\135\1\40\7\13\1\31\1\115\72\13\1\147\1\13\1\232" +
+ "\2\13\1\156\20\1\26\13\1\154\6\13\1\77\2\1\1\113\1\233\1\56\1\234\1\235\6" +
+ "\13\1\16\1\1\1\161\25\13\1\154\1\1\4\13\1\215\2\13\1\27\2\1\1\156\7\1\1\221" +
+ "\7\13\1\125\1\1\1\115\1\25\1\30\1\25\1\30\1\236\4\13\1\153\1\237\1\240\2\1" +
+ "\1\241\1\13\1\14\1\242\2\154\2\1\7\13\1\30\30\1\1\13\1\125\3\13\1\71\2\1\2" +
+ "\13\1\1\1\13\1\243\2\13\1\40\1\13\1\154\2\13\1\244\3\1\11\13\1\154\1\115\2" +
+ "\13\1\244\1\13\1\156\2\13\1\27\3\13\1\147\11\1\23\13\1\113\1\13\1\40\1\27" +
+ "\11\1\1\245\2\13\1\246\1\13\1\40\1\13\1\113\1\13\1\153\4\1\1\13\1\247\1\13" +
+ "\1\40\1\13\1\77\4\1\3\13\1\250\4\1\1\71\1\251\1\13\1\147\2\1\1\13\1\125\1" +
+ "\13\1\125\2\1\1\124\1\13\1\155\1\1\3\13\1\40\1\13\1\40\1\13\1\31\1\13\1\16" +
+ "\6\1\4\13\1\46\3\1\3\13\1\31\3\13\1\31\60\1\1\161\2\13\1\27\2\1\1\65\1\1\1" +
+ "\161\2\13\2\1\1\13\1\46\1\115\1\161\1\13\1\113\1\65\1\1\2\13\1\252\1\161\2" +
+ "\13\1\31\1\253\1\254\2\1\1\13\1\22\1\156\5\1\1\255\1\256\1\46\2\13\1\153\1" +
+ "\1\1\115\1\73\1\55\1\56\1\70\1\1\1\257\1\16\11\1\3\13\1\155\1\260\1\115\2" +
+ "\1\3\13\1\1\1\261\1\115\12\1\2\13\1\153\2\1\1\262\2\1\3\13\1\1\1\263\1\115" +
+ "\2\1\2\13\1\30\1\1\1\115\3\1\1\13\1\77\1\1\1\115\26\1\4\13\1\115\1\127\34" +
+ "\1\3\13\1\46\20\1\1\56\1\13\1\153\1\1\1\71\1\115\1\1\1\215\1\13\67\1\71\13" +
+ "\1\77\16\1\14\13\1\147\53\1\2\13\1\153\75\1\44\13\1\113\33\1\43\13\1\46\1" +
+ "\13\1\153\1\115\6\1\1\13\1\154\1\1\3\13\1\1\1\147\1\115\1\161\1\264\1\13\67" +
+ "\1\4\13\1\155\1\71\3\1\1\161\4\1\1\71\1\1\76\13\1\125\1\1\57\13\1\31\20\1" +
+ "\1\16\77\1\6\13\1\30\1\125\1\46\1\77\66\1\5\13\1\221\3\13\1\146\1\265\1\266" +
+ "\1\267\3\13\1\270\1\271\1\13\1\272\1\273\1\36\24\13\1\274\1\13\1\36\1\135" +
+ "\1\13\1\135\1\13\1\221\1\13\1\221\1\153\1\13\1\153\1\13\1\56\1\13\1\56\1\13" +
+ "\1\275\3\276\14\13\1\155\3\1\4\13\1\147\1\115\112\1\1\267\1\13\1\277\1\300" +
+ "\1\301\1\302\1\303\1\304\1\305\1\156\1\306\1\156\24\1\55\13\1\113\2\1\103" +
+ "\13\1\155\15\13\1\154\150\13\1\16\25\1\41\13\1\154\36\1");
+
+ /* The ZZ_CMAP_A table has 3184 entries */
+ static final char ZZ_CMAP_A[] = zzUnpackCMap(
+ "\11\0\1\4\1\2\2\1\1\3\22\0\1\4\1\64\1\47\1\62\1\41\1\37\1\71\1\46\1\57\1\60" +
+ "\1\52\1\66\1\61\1\67\1\35\1\70\2\40\6\30\2\42\1\53\1\54\1\50\1\63\1\51\1\0" +
+ "\1\43\1\26\1\22\1\12\1\21\1\5\1\23\2\24\1\17\2\24\1\20\1\25\1\11\1\13\1\14" +
+ "\1\6\1\27\1\15\1\16\1\7\1\10\1\36\3\24\1\55\1\45\1\56\1\73\1\33\1\44\1\26" +
+ "\1\22\1\12\1\21\1\5\1\23\2\24\1\17\2\24\1\20\1\25\1\11\1\13\1\32\1\6\1\27" +
+ "\1\31\1\16\1\7\1\10\1\36\3\24\1\0\1\72\1\0\1\65\6\0\1\1\12\0\1\4\11\0\1\24" +
+ "\12\0\1\24\4\0\1\24\5\0\27\24\1\0\12\24\4\0\14\24\16\0\5\24\7\0\1\24\1\0\1" +
+ "\24\1\0\5\24\1\0\2\24\2\0\4\24\1\0\1\24\6\0\1\24\1\0\3\24\1\0\1\24\1\0\4\24" +
+ "\1\0\23\24\1\0\13\24\10\0\6\24\1\0\26\24\2\0\1\24\6\0\10\24\10\0\13\24\5\0" +
+ "\3\24\15\0\12\34\4\0\6\24\1\0\1\24\17\0\2\24\7\0\2\24\12\34\3\24\2\0\2\24" +
+ "\1\0\16\24\15\0\11\24\13\0\1\24\16\0\12\34\6\24\4\0\2\24\4\0\1\24\5\0\6\24" +
+ "\4\0\1\24\11\0\1\24\3\0\1\24\7\0\11\24\7\0\5\24\1\0\10\24\6\0\26\24\3\0\1" +
+ "\24\2\0\1\24\7\0\12\24\4\0\12\34\1\24\4\0\10\24\2\0\2\24\2\0\26\24\1\0\7\24" +
+ "\1\0\1\24\3\0\4\24\3\0\1\24\20\0\1\24\15\0\2\24\1\0\1\24\5\0\6\24\4\0\2\24" +
+ "\1\0\2\24\1\0\2\24\1\0\2\24\17\0\4\24\1\0\1\24\7\0\12\34\2\0\3\24\20\0\11" +
+ "\24\1\0\2\24\1\0\2\24\1\0\5\24\3\0\1\24\2\0\1\24\30\0\1\24\13\0\10\24\2\0" +
+ "\1\24\3\0\1\24\1\0\6\24\3\0\3\24\1\0\4\24\3\0\2\24\1\0\1\24\1\0\2\24\3\0\2" +
+ "\24\3\0\3\24\3\0\14\24\13\0\10\24\1\0\2\24\10\0\3\24\5\0\1\24\4\0\10\24\1" +
+ "\0\6\24\1\0\5\24\3\0\1\24\3\0\2\24\15\0\13\24\2\0\1\24\6\0\3\24\10\0\1\24" +
+ "\12\0\6\24\5\0\22\24\3\0\10\24\1\0\11\24\1\0\1\24\2\0\7\24\11\0\1\24\1\0\2" +
+ "\24\14\0\12\34\7\0\2\24\1\0\1\24\2\0\2\24\1\0\1\24\2\0\1\24\6\0\4\24\1\0\7" +
+ "\24\1\0\3\24\1\0\1\24\1\0\1\24\2\0\2\24\1\0\4\24\1\0\2\24\11\0\1\24\2\0\5" +
+ "\24\1\0\1\24\11\0\12\34\2\0\14\24\1\0\24\24\13\0\5\24\22\0\7\24\4\0\4\24\3" +
+ "\0\1\24\3\0\2\24\7\0\3\24\4\0\15\24\14\0\1\24\1\0\6\24\1\0\1\24\5\0\1\24\2" +
+ "\0\13\24\1\0\15\24\1\0\4\24\2\0\7\24\1\0\1\24\1\0\4\24\2\0\1\24\1\0\4\24\2" +
+ "\0\7\24\1\0\1\24\1\0\4\24\2\0\16\24\2\0\6\24\2\0\15\24\2\0\1\24\1\4\17\24" +
+ "\1\0\10\24\7\0\15\24\1\0\6\24\23\0\1\24\4\0\1\24\3\0\5\24\2\0\22\24\1\0\1" +
+ "\24\5\0\17\24\1\0\16\24\2\0\5\24\13\0\14\24\13\0\1\24\15\0\7\24\7\0\16\24" +
+ "\15\0\2\24\12\34\3\0\3\24\11\0\4\24\1\0\4\24\3\0\2\24\11\0\10\24\1\0\1\24" +
+ "\1\0\1\24\1\0\1\24\1\0\6\24\1\0\7\24\1\0\1\24\3\0\3\24\1\0\7\24\3\0\4\24\2" +
+ "\0\6\24\4\0\13\4\15\0\2\1\5\0\1\4\17\0\1\4\1\0\1\24\15\0\1\24\2\0\1\24\4\0" +
+ "\1\24\2\0\12\24\1\0\1\24\3\0\5\24\6\0\1\24\1\0\1\24\1\0\1\24\1\0\4\24\1\0" +
+ "\13\24\2\0\4\24\5\0\5\24\4\0\1\24\4\0\2\24\13\0\5\24\6\0\4\24\3\0\2\24\14" +
+ "\0\10\24\7\0\10\24\1\0\7\24\1\0\1\4\4\0\2\24\12\0\5\24\5\0\2\24\3\0\7\24\6" +
+ "\0\3\24\12\34\2\24\13\0\11\24\2\0\27\24\2\0\7\24\1\0\3\24\1\0\4\24\1\0\4\24" +
+ "\2\0\6\24\3\0\1\24\1\0\1\24\2\0\5\24\1\0\12\24\12\34\5\24\1\0\3\24\1\0\10" +
+ "\24\4\0\7\24\3\0\1\24\3\0\2\24\1\0\1\24\3\0\2\24\2\0\5\24\2\0\1\24\1\0\1\24" +
+ "\30\0\3\24\3\0\6\24\2\0\6\24\2\0\6\24\11\0\7\24\4\0\5\24\3\0\5\24\5\0\1\24" +
+ "\1\0\10\24\1\0\5\24\1\0\1\24\1\0\2\24\1\0\2\24\1\0\12\24\6\0\12\24\2\0\6\24" +
+ "\2\0\6\24\2\0\6\24\2\0\3\24\3\0\14\24\1\0\16\24\1\0\2\24\1\0\2\24\1\0\10\24" +
+ "\6\0\4\24\4\0\16\24\2\0\1\24\1\0\14\24\1\0\2\24\3\0\1\24\2\0\4\24\1\0\2\24" +
+ "\12\0\10\24\6\0\6\24\1\0\3\24\1\0\12\24\3\0\1\24\12\0\4\24\13\0\12\34\1\24" +
+ "\1\0\1\24\3\0\7\24\1\0\1\24\1\0\4\24\1\0\17\24\1\0\2\24\14\0\3\24\7\0\4\24" +
+ "\11\0\2\24\1\0\1\24\20\0\4\24\10\0\1\24\13\0\10\24\5\0\3\24\2\0\1\24\2\0\2" +
+ "\24\2\0\4\24\1\0\14\24\1\0\1\24\1\0\7\24\1\0\21\24\1\0\4\24\2\0\10\24\1\0" +
+ "\7\24\1\0\14\24\1\0\4\24\1\0\5\24\1\0\1\24\3\0\14\24\2\0\13\24\1\0\10\24\2" +
+ "\0\22\34\1\0\2\24\1\0\1\24\2\0\1\24\1\0\12\24\1\0\4\24\1\0\1\24\1\0\1\24\6" +
+ "\0\1\24\4\0\1\24\1\0\1\24\1\0\1\24\1\0\3\24\1\0\2\24\1\0\1\24\2\0\1\24\1\0" +
+ "\1\24\1\0\1\24\1\0\1\24\1\0\1\24\1\0\2\24\1\0\1\24\2\0\4\24\1\0\7\24\1\0\4" +
+ "\24\1\0\4\24\1\0\1\24\1\0\12\24\1\0\5\24\1\0\3\24\1\0\5\24\1\0\5\24");
+
+ /**
+ * Translates DFA states to action switch labels.
+ */
+ private static final int[] ZZ_ACTION = zzUnpackAction();
+
+ private static final String ZZ_ACTION_PACKED_0 =
+ "\1\0\1\1\2\2\1\3\15\4\1\5\1\4\1\6" +
+ "\1\7\1\10\4\1\1\11\1\12\1\13\1\14\1\15" +
+ "\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25" +
+ "\1\26\1\27\1\30\1\31\1\32\1\33\1\34\7\0" +
+ "\1\35\10\4\1\36\1\4\1\37\1\40\1\4\1\41" +
+ "\1\42\3\4\1\43\1\44\1\45\1\46\1\47\1\0" +
+ "\1\50\7\0\1\51\1\52\1\53\1\54\1\55\1\56" +
+ "\1\57\1\60\1\61\6\0\1\41\3\0\1\62\1\4" +
+ "\1\63\1\4\1\64\1\65\1\4\1\66\5\4\1\50" +
+ "\10\0\1\67\1\63\1\70\1\71\1\72\1\73\1\74" +
+ "\3\4\1\75\1\4\1\76\1\67\1\73\1\74\3\0" +
+ "\1\75\1\0\1\76\3\4\1\77\3\0\1\77\2\4" +
+ "\1\100\2\0\1\100\1\101\1\102\1\101\1\102";
+
+ private static int[] zzUnpackAction() {
+ int[] result = new int[168];
+ int offset = 0;
+ offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackAction(String packed, int offset, int[] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /**
+ * Translates a state to a row index in the transition table
+ */
+ private static final int[] ZZ_ROWMAP = zzUnpackRowMap();
+
+ private static final String ZZ_ROWMAP_PACKED_0 =
+ "\0\0\0\74\0\74\0\170\0\264\0\360\0\u012c\0\u0168" +
+ "\0\u01a4\0\u01e0\0\u021c\0\u0258\0\u0294\0\u02d0\0\u030c\0\u0348" +
+ "\0\u0384\0\u03c0\0\u03fc\0\u0438\0\u0474\0\u04b0\0\u04ec\0\u0528" +
+ "\0\u0564\0\u05a0\0\u05dc\0\u0618\0\u0654\0\u0690\0\74\0\u0690" +
+ "\0\74\0\74\0\74\0\74\0\74\0\74\0\u06cc\0\u0708" +
+ "\0\74\0\74\0\74\0\74\0\u0744\0\u0780\0\74\0\u07bc" +
+ "\0\u07f8\0\u0834\0\u0870\0\u08ac\0\u08e8\0\u0924\0\u0690\0\u0960" +
+ "\0\u099c\0\u09d8\0\u0a14\0\u0a50\0\u0a8c\0\u0ac8\0\u0b04\0\u012c" +
+ "\0\u0b40\0\u012c\0\u012c\0\u0b7c\0\u0bb8\0\u012c\0\u0bf4\0\u0c30" +
+ "\0\u0c6c\0\74\0\74\0\u04b0\0\u04ec\0\u0528\0\u0564\0\74" +
+ "\0\u0ca8\0\u05a0\0\u0ce4\0\u05dc\0\u0d20\0\u0d5c\0\u0d98\0\u0d5c" +
+ "\0\u0d5c\0\u0d5c\0\74\0\74\0\74\0\74\0\74\0\74" +
+ "\0\u0dd4\0\u0e10\0\u0e4c\0\u0e88\0\u0ec4\0\u0f00\0\u0f3c\0\u0f78" +
+ "\0\u0fb4\0\u0ff0\0\u012c\0\u102c\0\u1068\0\u10a4\0\u012c\0\u012c" +
+ "\0\u10e0\0\u012c\0\u111c\0\u1158\0\u1194\0\u11d0\0\u120c\0\u0d5c" +
+ "\0\u1248\0\u1284\0\u12c0\0\u12fc\0\u1338\0\u1374\0\u13b0\0\u13ec" +
+ "\0\u012c\0\u1428\0\u1428\0\u1428\0\u1428\0\u012c\0\u012c\0\u1464" +
+ "\0\u14a0\0\u14dc\0\u012c\0\u1518\0\u012c\0\74\0\74\0\74" +
+ "\0\u1554\0\u1590\0\u15cc\0\74\0\u1608\0\74\0\u1644\0\u1680" +
+ "\0\u16bc\0\u012c\0\u16f8\0\u1734\0\u1770\0\74\0\u17ac\0\u17e8" +
+ "\0\u012c\0\u1824\0\u1860\0\74\0\u012c\0\u012c\0\74\0\74";
+
+ private static int[] zzUnpackRowMap() {
+ int[] result = new int[168];
+ int offset = 0;
+ offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackRowMap(String packed, int offset, int[] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int high = packed.charAt(i++) << 16;
+ result[j++] = high | packed.charAt(i++);
+ }
+ return j;
+ }
+
+ /**
+ * The transition table of the DFA
+ */
+ private static final int[] ZZ_TRANS = zzUnpackTrans();
+
+ private static final String ZZ_TRANS_PACKED_0 =
+ "\1\2\2\3\1\4\1\5\1\6\1\7\1\10\1\11" +
+ "\1\7\1\12\1\7\1\13\1\14\1\7\1\15\1\7" +
+ "\1\16\1\7\1\17\1\7\1\20\1\21\1\22\1\23" +
+ "\1\24\1\13\1\7\1\2\1\25\1\7\1\26\1\23" +
+ "\1\27\1\23\1\30\1\31\1\2\1\32\1\33\1\34" +
+ "\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44" +
+ "\1\45\1\46\1\47\1\50\1\51\1\52\1\53\1\54" +
+ "\1\55\1\56\1\57\76\0\1\3\75\0\1\5\1\60" +
+ "\4\0\1\61\2\0\1\62\1\0\1\63\3\0\1\64" +
+ "\1\0\1\65\1\0\1\66\1\0\1\62\20\0\1\67" +
+ "\1\0\1\67\24\0\1\7\1\70\1\7\1\71\1\72" +
+ "\6\7\1\73\14\7\1\0\1\7\1\0\1\7\1\0" +
+ "\1\7\36\0\30\7\1\0\1\7\1\0\1\7\1\0" +
+ "\1\7\36\0\10\7\1\74\13\7\1\74\3\7\1\0" +
+ "\1\7\1\0\1\7\1\0\1\7\36\0\15\7\1\75" +
+ "\12\7\1\0\1\7\1\0\1\7\1\0\1\7\36\0" +
+ "\4\7\1\76\1\77\22\7\1\0\1\7\1\0\1\7" +
+ "\1\0\1\7\36\0\5\7\1\100\22\7\1\0\1\7" +
+ "\1\0\1\7\1\0\1\7\36\0\1\101\6\7\1\102" +
+ "\12\7\1\103\5\7\1\0\1\7\1\0\1\7\1\0" +
+ "\1\7\36\0\4\7\1\104\11\7\1\105\11\7\1\0" +
+ "\1\7\1\0\1\7\1\0\1\7\36\0\23\7\1\106" +
+ "\4\7\1\0\1\7\1\0\1\106\1\0\1\7\36\0" +
+ "\21\7\1\107\6\7\1\0\1\7\1\0\1\7\1\0" +
+ "\1\7\36\0\21\7\1\110\6\7\1\0\1\7\1\0" +
+ "\1\7\1\0\1\7\36\0\23\7\1\102\4\7\1\0" +
+ "\1\7\1\0\1\102\1\0\1\7\36\0\1\111\27\7" +
+ "\1\0\1\7\1\0\1\7\1\0\1\7\61\0\1\23" +
+ "\7\0\1\23\1\0\1\23\36\0\1\101\21\7\1\103" +
+ "\2\7\1\102\2\7\1\0\1\7\1\0\1\7\1\0" +
+ "\1\7\46\0\1\112\2\0\1\113\1\0\1\112\6\0" +
+ "\1\112\4\0\1\113\75\0\1\114\40\0\1\115\4\0" +
+ "\1\115\6\0\3\115\2\0\1\115\1\0\1\115\7\0" +
+ "\1\115\1\0\1\115\61\0\1\116\7\0\1\116\33\0" +
+ "\44\117\1\120\1\121\26\117\45\122\1\123\1\120\25\122" +
+ "\45\124\1\125\1\124\1\120\24\124\44\126\1\0\1\127" +
+ "\2\126\1\130\1\131\11\126\1\132\10\126\51\0\1\133" +
+ "\11\0\1\134\10\0\1\67\3\0\70\67\63\0\1\135" +
+ "\73\0\1\136\101\0\1\137\74\0\1\140\11\0\1\141" +
+ "\1\142\6\0\1\143\64\0\1\144\67\0\1\145\77\0" +
+ "\1\146\11\0\1\147\76\0\1\150\73\0\1\151\52\0" +
+ "\1\152\73\0\2\7\1\153\25\7\1\0\1\7\1\0" +
+ "\1\7\1\0\1\7\36\0\1\154\27\7\1\0\1\7" +
+ "\1\0\1\7\1\0\1\7\36\0\14\7\1\155\13\7" +
+ "\1\0\1\7\1\0\1\7\1\0\1\7\36\0\10\7" +
+ "\1\156\13\7\1\156\3\7\1\0\1\7\1\0\1\7" +
+ "\1\0\1\7\36\0\7\7\1\157\15\7\1\157\2\7" +
+ "\1\0\1\7\1\0\1\7\1\0\1\7\36\0\22\7" +
+ "\1\160\5\7\1\0\1\7\1\0\1\7\1\0\1\7" +
+ "\36\0\6\7\1\161\21\7\1\0\1\7\1\0\1\7" +
+ "\1\0\1\7\36\0\22\7\1\162\5\7\1\0\1\7" +
+ "\1\0\1\7\1\0\1\7\36\0\5\7\1\163\22\7" +
+ "\1\0\1\7\1\0\1\7\1\0\1\7\36\0\5\7" +
+ "\1\164\22\7\1\0\1\7\1\0\1\7\1\0\1\7" +
+ "\36\0\23\105\1\7\2\105\2\7\1\0\1\105\1\0" +
+ "\1\7\1\0\1\7\36\0\12\7\1\165\15\7\1\0" +
+ "\1\7\1\0\1\7\1\0\1\7\36\0\5\7\1\166" +
+ "\22\7\1\0\1\7\1\0\1\7\1\0\1\7\36\0" +
+ "\7\7\1\167\15\7\1\167\2\7\1\0\1\7\1\0" +
+ "\1\7\1\0\1\7\31\0\1\117\3\0\70\117\1\122" +
+ "\3\0\70\122\1\124\3\0\70\124\44\126\1\0\1\127" +
+ "\3\126\1\170\23\126\3\0\70\126\5\0\1\171\107\0" +
+ "\1\155\67\0\1\172\13\0\1\172\55\0\1\173\72\0" +
+ "\1\174\73\0\1\175\66\0\23\147\1\0\2\147\3\0" +
+ "\1\147\54\0\1\176\66\0\1\177\75\0\1\200\15\0" +
+ "\1\200\46\0\4\7\1\201\23\7\1\0\1\7\1\0" +
+ "\1\7\1\0\1\7\31\0\1\202\3\0\6\202\1\203" +
+ "\12\202\1\204\1\202\1\205\44\202\5\0\1\206\27\7" +
+ "\1\0\1\7\1\0\1\7\1\0\1\7\36\0\7\7" +
+ "\1\207\15\7\1\207\2\7\1\0\1\7\1\0\1\7" +
+ "\1\0\1\7\36\0\11\7\1\210\16\7\1\0\1\7" +
+ "\1\0\1\7\1\0\1\7\36\0\13\7\1\211\1\7" +
+ "\1\212\12\7\1\0\1\7\1\0\1\7\1\0\1\7" +
+ "\36\0\13\7\1\213\14\7\1\0\1\7\1\0\1\7" +
+ "\1\0\1\7\36\0\22\7\1\214\5\7\1\0\1\7" +
+ "\1\0\1\7\1\0\1\7\36\0\11\7\1\215\16\7" +
+ "\1\0\1\7\1\0\1\7\1\0\1\7\42\0\1\216" +
+ "\67\0\1\217\102\0\1\220\15\0\1\220\57\0\1\221" +
+ "\75\0\1\222\1\0\1\223\71\0\1\224\102\0\1\225" +
+ "\62\0\1\226\55\0\1\202\3\0\70\202\5\0\12\7" +
+ "\1\227\15\7\1\0\1\7\1\0\1\7\1\0\1\7" +
+ "\36\0\2\7\1\230\25\7\1\0\1\7\1\0\1\7" +
+ "\1\0\1\7\36\0\12\7\1\231\15\7\1\0\1\7" +
+ "\1\0\1\7\1\0\1\7\36\0\6\7\1\232\21\7" +
+ "\1\0\1\7\1\0\1\7\1\0\1\7\50\0\1\233" +
+ "\63\0\1\234\103\0\1\235\67\0\1\236\65\0\6\7" +
+ "\1\237\21\7\1\0\1\7\1\0\1\7\1\0\1\7" +
+ "\36\0\14\7\1\240\13\7\1\0\1\7\1\0\1\7" +
+ "\1\0\1\7\36\0\4\7\1\241\23\7\1\0\1\7" +
+ "\1\0\1\7\1\0\1\7\44\0\1\242\101\0\1\243" +
+ "\63\0\1\244\67\0\4\7\1\245\23\7\1\0\1\7" +
+ "\1\0\1\7\1\0\1\7\36\0\1\246\27\7\1\0" +
+ "\1\7\1\0\1\7\1\0\1\7\42\0\1\247\67\0" +
+ "\1\250\66\0";
+
+ private static int[] zzUnpackTrans() {
+ int[] result = new int[6300];
+ int offset = 0;
+ offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackTrans(String packed, int offset, int[] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ value--;
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /* error codes */
+ private static final int ZZ_UNKNOWN_ERROR = 0;
+ private static final int ZZ_NO_MATCH = 1;
+ private static final int ZZ_PUSHBACK_2BIG = 2;
+
+ /* error messages for the codes above */
+ private static final String[] ZZ_ERROR_MSG = {
+ "Unknown internal scanner error",
+ "Error: could not match input",
+ "Error: pushback value was too large"
+ };
+
+ /**
+ * ZZ_ATTRIBUTE[aState] contains the attributes of state aState
+ */
+ private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute();
+
+ private static final String ZZ_ATTRIBUTE_PACKED_0 =
+ "\1\0\2\11\33\1\1\11\1\1\6\11\2\1\4\11" +
+ "\2\1\1\11\7\0\23\1\2\11\3\1\1\0\1\11" +
+ "\7\0\3\1\6\11\6\0\1\1\3\0\16\1\10\0" +
+ "\15\1\3\11\3\0\1\11\1\0\1\11\4\1\3\0" +
+ "\1\11\3\1\2\0\1\11\2\1\2\11";
+
+ private static int[] zzUnpackAttribute() {
+ int[] result = new int[168];
+ int offset = 0;
+ offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackAttribute(String packed, int offset, int[] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+ /**
+ * the input device
+ */
+ private java.io.Reader zzReader;
+
+ /**
+ * the current state of the DFA
+ */
+ private int zzState;
+
+ /**
+ * the current lexical state
+ */
+ private int zzLexicalState = YYINITIAL;
+
+ /**
+ * this buffer contains the current text to be matched and is
+ * the source of the yytext() string
+ */
+ private CharSequence zzBuffer = "";
+
+ /**
+ * the textposition at the last accepting state
+ */
+ private int zzMarkedPos;
+
+ /**
+ * the current text position in the buffer
+ */
+ private int zzCurrentPos;
+
+ /**
+ * startRead marks the beginning of the yytext() string in the buffer
+ */
+ private int zzStartRead;
+
+ /**
+ * endRead marks the last character in the buffer, that has been read
+ * from input
+ */
+ private int zzEndRead;
+
+ /**
+ * zzAtBOL == true <=> the scanner is currently at the beginning of a line
+ */
+ private boolean zzAtBOL = true;
+
+ /**
+ * zzAtEOF == true <=> the scanner is at the EOF
+ */
+ private boolean zzAtEOF;
+
+ /**
+ * denotes if the user-EOF-code has already been executed
+ */
+ private boolean zzEOFDone;
+
+ /* user code: */
+ public _M68kLexer() {
+ this((java.io.Reader) null);
+ }
+
+
+ /**
+ * Creates a new scanner
+ *
+ * @param in the java.io.Reader to read input from.
+ */
+ public _M68kLexer(java.io.Reader in) {
+ zzReader = in;
+ }
+
+
+ /**
+ * Unpacks the compressed character translation table.
+ *
+ * @param packed the packed character translation table
+ * @return the unpacked character translation table
+ */
+ private static char[] zzUnpackCMap(String packed) {
+ int size = 0;
+ for (int i = 0, length = packed.length(); i < length; i += 2) size += packed.charAt(i);
+ char[] map = new char[size];
+ int i = 0; /* index in packed string */
+ int j = 0; /* index in unpacked array */
+ while (i < packed.length()) {
+ int count = packed.charAt(i++);
+ char value = packed.charAt(i++);
+ do map[j++] = value; while (--count > 0);
+ }
+ return map;
+ }
+
+ public final int getTokenStart() {
+ return zzStartRead;
+ }
+
+ public final int getTokenEnd() {
+ return getTokenStart() + yylength();
+ }
+
+ public void reset(CharSequence buffer, int start, int end, int initialState) {
+ zzBuffer = buffer;
+ zzCurrentPos = zzMarkedPos = zzStartRead = start;
+ zzAtEOF = false;
+ zzAtBOL = true;
+ zzEndRead = end;
+ yybegin(initialState);
+ }
+
+ /**
+ * Refills the input buffer.
+ *
+ * @return {@code false}, iff there was new input.
+ * @throws java.io.IOException if any I/O-Error occurs
+ */
+ private boolean zzRefill() throws java.io.IOException {
+ return true;
+ }
+
+
+ /**
+ * Returns the current lexical state.
+ */
+ public final int yystate() {
+ return zzLexicalState;
+ }
+
+
+ /**
+ * Enters a new lexical state
+ *
+ * @param newState the new lexical state
+ */
+ public final void yybegin(int newState) {
+ zzLexicalState = newState;
+ }
+
+
+ /**
+ * Returns the text matched by the current regular expression.
+ */
+ public final CharSequence yytext() {
+ return zzBuffer.subSequence(zzStartRead, zzMarkedPos);
+ }
+
+
+ /**
+ * Returns the character at position {@code pos} from the
+ * matched text.
+ *
+ * It is equivalent to yytext().charAt(pos), but faster
+ *
+ * @param pos the position of the character to fetch.
+ * A value from 0 to yylength()-1.
+ * @return the character at position pos
+ */
+ public final char yycharat(int pos) {
+ return zzBuffer.charAt(zzStartRead + pos);
+ }
+
+
+ /**
+ * Returns the length of the matched text region.
+ */
+ public final int yylength() {
+ return zzMarkedPos - zzStartRead;
+ }
+
+
+ /**
+ * Reports an error that occurred while scanning.
+ *
+ * In a wellformed scanner (no or only correct usage of
+ * yypushback(int) and a match-all fallback rule) this method
+ * will only be called with things that "Can't Possibly Happen".
+ * If this method is called, something is seriously wrong
+ * (e.g. a JFlex bug producing a faulty scanner etc.).
+ *
+ * Usual syntax/scanner level error handling should be done
+ * in error fallback rules.
+ *
+ * @param errorCode the code of the errormessage to display
+ */
+ private void zzScanError(int errorCode) {
+ String message;
+ try {
+ message = ZZ_ERROR_MSG[errorCode];
+ } catch (ArrayIndexOutOfBoundsException e) {
+ message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
+ }
+
+ throw new Error(message);
+ }
+
+
+ /**
+ * Pushes the specified amount of characters back into the input stream.
+ *
+ * They will be read again by then next call of the scanning method
+ *
+ * @param number the number of characters to be read again.
+ * This number must not be greater than yylength()!
+ */
+ public void yypushback(int number) {
+ if (number > yylength())
+ zzScanError(ZZ_PUSHBACK_2BIG);
+
+ zzMarkedPos -= number;
+ }
+
+
+ /**
+ * Resumes scanning until the next regular expression is matched,
+ * the end of input is encountered or an I/O-Error occurs.
+ *
+ * @return the next token
+ * @throws java.io.IOException if any I/O-Error occurs
+ */
+ public IElementType advance() throws java.io.IOException {
+ int zzInput;
+ int zzAction;
+
+ // cached fields:
+ int zzCurrentPosL;
+ int zzMarkedPosL;
+ int zzEndReadL = zzEndRead;
+ CharSequence zzBufferL = zzBuffer;
+
+ int[] zzTransL = ZZ_TRANS;
+ int[] zzRowMapL = ZZ_ROWMAP;
+ int[] zzAttrL = ZZ_ATTRIBUTE;
+
+ while (true) {
+ zzMarkedPosL = zzMarkedPos;
+
+ zzAction = -1;
+
+ zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+
+ zzState = ZZ_LEXSTATE[zzLexicalState];
+
+ // set up zzAction for empty match case:
+ int zzAttributes = zzAttrL[zzState];
+ if ((zzAttributes & 1) == 1) zzAction = zzState;
+
+
+ zzForAction:
+ {
+ while (true) {
+
+ if (zzCurrentPosL < zzEndReadL) {
+ zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/);
+ zzCurrentPosL += Character.charCount(zzInput);
+ } else if (zzAtEOF) {
+ zzInput = YYEOF;
+ break zzForAction;
+ } else {
+ // store back cached positions
+ zzCurrentPos = zzCurrentPosL;
+ zzMarkedPos = zzMarkedPosL;
+ boolean eof = zzRefill();
+ // get translated positions and possibly new buffer
+ zzCurrentPosL = zzCurrentPos;
+ zzMarkedPosL = zzMarkedPos;
+ zzBufferL = zzBuffer;
+ zzEndReadL = zzEndRead;
+ if (eof) {
+ zzInput = YYEOF;
+ break zzForAction;
+ } else {
+ zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/);
+ zzCurrentPosL += Character.charCount(zzInput);
+ }
+ }
+ int zzNext = zzTransL[zzRowMapL[zzState] + ZZ_CMAP(zzInput)];
+ if (zzNext == -1) break zzForAction;
+ zzState = zzNext;
+
+ zzAttributes = zzAttrL[zzState];
+ if ((zzAttributes & 1) == 1) {
+ zzAction = zzState;
+ zzMarkedPosL = zzCurrentPosL;
+ if ((zzAttributes & 8) == 8) break zzForAction;
+ }
+
+ }
+ }
+
+ // store back cached position
+ zzMarkedPos = zzMarkedPosL;
+
+ if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+ zzAtEOF = true;
+ return null;
+ } else switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+ case 1: {
+ return BAD_CHARACTER;
+ }
+ // fall through
+ case 67:
+ break;
+ case 2: {
+ return EOL;
+ }
+ // fall through
+ case 68:
+ break;
+ case 3: {
+ return WHITE_SPACE;
+ }
+ // fall through
+ case 69:
+ break;
+ case 4: {
+ return SYMBOL;
+ }
+ // fall through
+ case 70:
+ break;
+ case 5: {
+ return DECIMAL;
+ }
+ // fall through
+ case 71:
+ break;
+ case 6: {
+ return DOT;
+ }
+ // fall through
+ case 72:
+ break;
+ case 7: {
+ return OP_AR_MOD;
+ }
+ // fall through
+ case 73:
+ break;
+ case 8: {
+ return DOLLAR;
+ }
+ // fall through
+ case 74:
+ break;
+ case 9: {
+ return OP_CMP_LT;
+ }
+ // fall through
+ case 75:
+ break;
+ case 10: {
+ return OP_CMP_GT;
+ }
+ // fall through
+ case 76:
+ break;
+ case 11: {
+ return OP_AR_MUL;
+ }
+ // fall through
+ case 77:
+ break;
+ case 12: {
+ return COLON;
+ }
+ // fall through
+ case 78:
+ break;
+ case 13: {
+ return SEMICOLON;
+ }
+ // fall through
+ case 79:
+ break;
+ case 14: {
+ return SQUARE_L;
+ }
+ // fall through
+ case 80:
+ break;
+ case 15: {
+ return SQUARE_R;
+ }
+ // fall through
+ case 81:
+ break;
+ case 16: {
+ return ROUND_L;
+ }
+ // fall through
+ case 82:
+ break;
+ case 17: {
+ return ROUND_R;
+ }
+ // fall through
+ case 83:
+ break;
+ case 18: {
+ return SEPARATOR;
+ }
+ // fall through
+ case 84:
+ break;
+ case 19: {
+ return HASH;
+ }
+ // fall through
+ case 85:
+ break;
+ case 20: {
+ return OP_ASSIGN;
+ }
+ // fall through
+ case 86:
+ break;
+ case 21: {
+ return OP_UNARY_NOT;
+ }
+ // fall through
+ case 87:
+ break;
+ case 22: {
+ return OP_UNARY_COMPL;
+ }
+ // fall through
+ case 88:
+ break;
+ case 23: {
+ return OP_PLUS;
+ }
+ // fall through
+ case 89:
+ break;
+ case 24: {
+ return OP_MINUS;
+ }
+ // fall through
+ case 90:
+ break;
+ case 25: {
+ return OP_AR_DIV;
+ }
+ // fall through
+ case 91:
+ break;
+ case 26: {
+ return OP_BITWISE_AND;
+ }
+ // fall through
+ case 92:
+ break;
+ case 27: {
+ return OP_BITWISE_OR;
+ }
+ // fall through
+ case 93:
+ break;
+ case 28: {
+ return OP_BITWISE_XOR;
+ }
+ // fall through
+ case 94:
+ break;
+ case 29: {
+ return COMMENT;
+ }
+ // fall through
+ case 95:
+ break;
+ case 30: {
+ return PC;
+ }
+ // fall through
+ case 96:
+ break;
+ case 31: {
+ return AREG;
+ }
+ // fall through
+ case 97:
+ break;
+ case 32: {
+ return REG_SR;
+ }
+ // fall through
+ case 98:
+ break;
+ case 33: {
+ return IF_TAG;
+ }
+ // fall through
+ case 99:
+ break;
+ case 34: {
+ return DREG;
+ }
+ // fall through
+ case 100:
+ break;
+ case 35: {
+ return OPSIZE_BS;
+ }
+ // fall through
+ case 101:
+ break;
+ case 36: {
+ return OPSIZE_WL;
+ }
+ // fall through
+ case 102:
+ break;
+ case 37: {
+ return BINARY;
+ }
+ // fall through
+ case 103:
+ break;
+ case 38: {
+ return HEXADECIMAL;
+ }
+ // fall through
+ case 104:
+ break;
+ case 39: {
+ return OCTAL;
+ }
+ // fall through
+ case 105:
+ break;
+ case 40: {
+ return STRINGLIT;
+ }
+ // fall through
+ case 106:
+ break;
+ case 41: {
+ return OP_AR_SHIFT_L;
+ }
+ // fall through
+ case 107:
+ break;
+ case 42: {
+ return OP_CMP_NOT_EQ2;
+ }
+ // fall through
+ case 108:
+ break;
+ case 43: {
+ return OP_CMP_LT_EQ;
+ }
+ // fall through
+ case 109:
+ break;
+ case 44: {
+ return OP_AR_SHIFT_R;
+ }
+ // fall through
+ case 110:
+ break;
+ case 45: {
+ return OP_CMP_GT_EQ;
+ }
+ // fall through
+ case 111:
+ break;
+ case 46: {
+ return OP_CMP_EQ;
+ }
+ // fall through
+ case 112:
+ break;
+ case 47: {
+ return OP_CMP_NOT_EQ;
+ }
+ // fall through
+ case 113:
+ break;
+ case 48: {
+ return OP_LOGICAL_AND;
+ }
+ // fall through
+ case 114:
+ break;
+ case 49: {
+ return OP_LOGICAL_OR;
+ }
+ // fall through
+ case 115:
+ break;
+ case 50: {
+ return EQU;
+ }
+ // fall through
+ case 116:
+ break;
+ case 51: {
+ return END_TAG;
+ }
+ // fall through
+ case 117:
+ break;
+ case 52: {
+ return REG_USP;
+ }
+ // fall through
+ case 118:
+ break;
+ case 53: {
+ return REG_VBR;
+ }
+ // fall through
+ case 119:
+ break;
+ case 54: {
+ return REG_CCR;
+ }
+ // fall through
+ case 120:
+ break;
+ case 55: {
+ return EVEN_TAG;
+ }
+ // fall through
+ case 121:
+ break;
+ case 56: {
+ return ENDC_TAG;
+ }
+ // fall through
+ case 122:
+ break;
+ case 57: {
+ return MACRO_END_TAG;
+ }
+ // fall through
+ case 123:
+ break;
+ case 58: {
+ return REPT_END_TAG;
+ }
+ // fall through
+ case 124:
+ break;
+ case 59: {
+ return ELSE_TAG;
+ }
+ // fall through
+ case 125:
+ break;
+ case 60: {
+ return CNOP_TAG;
+ }
+ // fall through
+ case 126:
+ break;
+ case 61: {
+ return FAIL_TAG;
+ }
+ // fall through
+ case 127:
+ break;
+ case 62: {
+ return REPT_TAG;
+ }
+ // fall through
+ case 128:
+ break;
+ case 63: {
+ return MACRO_TAG;
+ }
+ // fall through
+ case 129:
+ break;
+ case 64: {
+ return INCBIN_TAG;
+ }
+ // fall through
+ case 130:
+ break;
+ case 65: {
+ return SECTION_TAG;
+ }
+ // fall through
+ case 131:
+ break;
+ case 66: {
+ return INCLUDE_TAG;
+ }
+ // fall through
+ case 132:
+ break;
+ default:
+ zzScanError(ZZ_NO_MATCH);
+ }
+ }
+ }
+
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/parser/M68kParser.java b/src/main/gen/de/platon42/intellij/plugins/m68k/parser/M68kParser.java
new file mode 100644
index 0000000..141dfb9
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/parser/M68kParser.java
@@ -0,0 +1,1330 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.parser;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.lang.LightPsiParser;
+import com.intellij.lang.PsiBuilder;
+import com.intellij.lang.PsiBuilder.Marker;
+import com.intellij.lang.PsiParser;
+import com.intellij.psi.tree.IElementType;
+import com.intellij.psi.tree.TokenSet;
+
+import static de.platon42.intellij.plugins.m68k.parser.M68kParserUtilBase.*;
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.*;
+
+@SuppressWarnings({"SimplifiableIfStatement", "UnusedAssignment"})
+public class M68kParser implements PsiParser, LightPsiParser {
+
+ public ASTNode parse(IElementType t, PsiBuilder b) {
+ parseLight(t, b);
+ return b.getTreeBuilt();
+ }
+
+ public void parseLight(IElementType t, PsiBuilder b) {
+ boolean r;
+ b = adapt_builder_(t, b, this, EXTENDS_SETS_);
+ Marker m = enter_section_(b, 0, _COLLAPSE_, null);
+ r = parse_root_(t, b);
+ exit_section_(b, 0, m, t, r, true, TRUE_CONDITION);
+ }
+
+ protected boolean parse_root_(IElementType t, PsiBuilder b) {
+ return parse_root_(t, b, 0);
+ }
+
+ static boolean parse_root_(IElementType t, PsiBuilder b, int l) {
+ return M68kFile(b, l + 1);
+ }
+
+ public static final TokenSet[] EXTENDS_SETS_ = new TokenSet[]{
+ create_token_set_(ADDRESS_REGISTER, DATA_REGISTER, REGISTER, SPECIAL_REGISTER),
+ create_token_set_(ABSOLUTE_ADDRESS_ADDRESSING_MODE, ADDRESSING_MODE, ADDRESS_REGISTER_DIRECT_ADDRESSING_MODE, ADDRESS_REGISTER_INDIRECT_ADDRESSING_MODE,
+ ADDRESS_REGISTER_INDIRECT_POST_INC_ADDRESSING_MODE, ADDRESS_REGISTER_INDIRECT_PRE_DEC_ADDRESSING_MODE, ADDRESS_REGISTER_INDIRECT_WITH_DISPLACEMENT_NEW_ADDRESSING_MODE, ADDRESS_REGISTER_INDIRECT_WITH_DISPLACEMENT_OLD_ADDRESSING_MODE,
+ ADDRESS_REGISTER_INDIRECT_WITH_INDEX_NEW_ADDRESSING_MODE, ADDRESS_REGISTER_INDIRECT_WITH_INDEX_OLD_ADDRESSING_MODE, DATA_REGISTER_DIRECT_ADDRESSING_MODE, IMMEDIATE_DATA,
+ PROGRAM_COUNTER_INDIRECT_WITH_DISPLACEMENT_NEW_ADDRESSING_MODE, PROGRAM_COUNTER_INDIRECT_WITH_DISPLACEMENT_OLD_ADDRESSING_MODE, PROGRAM_COUNTER_INDIRECT_WITH_INDEX_NEW_ADDRESSING_MODE, PROGRAM_COUNTER_INDIRECT_WITH_INDEX_OLD_ADDRESSING_MODE,
+ SPECIAL_REGISTER_DIRECT_ADDRESSING_MODE),
+ create_token_set_(BINARY_ADD_EXPR, BINARY_BITWISE_AND_EXPR, BINARY_BITWISE_OR_EXPR, BINARY_BITWISE_XOR_EXPR,
+ BINARY_CMP_EQ_EXPR, BINARY_CMP_GE_EXPR, BINARY_CMP_GT_EXPR, BINARY_CMP_LE_EXPR,
+ BINARY_CMP_LT_EXPR, BINARY_CMP_NE_EXPR, BINARY_DIV_EXPR, BINARY_LOGICAL_AND_EXPR,
+ BINARY_LOGICAL_OR_EXPR, BINARY_MOD_EXPR, BINARY_MUL_EXPR, BINARY_SHIFT_L_EXPR,
+ BINARY_SHIFT_R_EXPR, BINARY_SUB_EXPR, EXPR, LITERAL_EXPR,
+ PAREN_EXPR, REF_EXPR, UNARY_COMPL_EXPR, UNARY_MINUS_EXPR,
+ UNARY_NOT_EXPR, UNARY_PLUS_EXPR),
+ };
+
+ /* ********************************************************** */
+ // expr AddressSize? !ROUND_L
+ public static boolean AbsoluteAddressAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AbsoluteAddressAddressingMode")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, ABSOLUTE_ADDRESS_ADDRESSING_MODE, "");
+ r = expr(b, l + 1, -1);
+ r = r && AbsoluteAddressAddressingMode_1(b, l + 1);
+ r = r && AbsoluteAddressAddressingMode_2(b, l + 1);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ // AddressSize?
+ private static boolean AbsoluteAddressAddressingMode_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AbsoluteAddressAddressingMode_1")) return false;
+ AddressSize(b, l + 1);
+ return true;
+ }
+
+ // !ROUND_L
+ private static boolean AbsoluteAddressAddressingMode_2(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AbsoluteAddressAddressingMode_2")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NOT_);
+ r = !consumeTokenFast(b, ROUND_L);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // AREG
+ public static boolean AddressRegister(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AddressRegister")) return false;
+ if (!nextTokenIs(b, "", AREG)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, ADDRESS_REGISTER, "");
+ r = consumeToken(b, AREG);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // AddressRegister
+ public static boolean AddressRegisterDirectAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AddressRegisterDirectAddressingMode")) return false;
+ if (!nextTokenIsFast(b, AREG)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, ADDRESS_REGISTER_DIRECT_ADDRESSING_MODE, "");
+ r = AddressRegister(b, l + 1);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // ROUND_L AddressRegister ROUND_R !OP_PLUS
+ public static boolean AddressRegisterIndirectAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AddressRegisterIndirectAddressingMode")) return false;
+ if (!nextTokenIsFast(b, ROUND_L)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, ADDRESS_REGISTER_INDIRECT_ADDRESSING_MODE, "");
+ r = consumeTokenFast(b, ROUND_L);
+ r = r && AddressRegister(b, l + 1);
+ r = r && consumeToken(b, ROUND_R);
+ r = r && AddressRegisterIndirectAddressingMode_3(b, l + 1);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ // !OP_PLUS
+ private static boolean AddressRegisterIndirectAddressingMode_3(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AddressRegisterIndirectAddressingMode_3")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NOT_);
+ r = !consumeTokenFast(b, OP_PLUS);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // ROUND_L AddressRegister ROUND_R OP_PLUS
+ public static boolean AddressRegisterIndirectPostIncAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AddressRegisterIndirectPostIncAddressingMode")) return false;
+ if (!nextTokenIsFast(b, ROUND_L)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, ADDRESS_REGISTER_INDIRECT_POST_INC_ADDRESSING_MODE, "");
+ r = consumeTokenFast(b, ROUND_L);
+ r = r && AddressRegister(b, l + 1);
+ r = r && consumeTokens(b, 0, ROUND_R, OP_PLUS);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // OP_MINUS ROUND_L AddressRegister ROUND_R
+ public static boolean AddressRegisterIndirectPreDecAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AddressRegisterIndirectPreDecAddressingMode")) return false;
+ if (!nextTokenIsFast(b, OP_MINUS)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, ADDRESS_REGISTER_INDIRECT_PRE_DEC_ADDRESSING_MODE, "");
+ r = consumeTokens(b, 0, OP_MINUS, ROUND_L);
+ r = r && AddressRegister(b, l + 1);
+ r = r && consumeToken(b, ROUND_R);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // ROUND_L expr SEPARATOR AddressRegister ROUND_R
+ public static boolean AddressRegisterIndirectWithDisplacementNewAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AddressRegisterIndirectWithDisplacementNewAddressingMode")) return false;
+ if (!nextTokenIsFast(b, ROUND_L)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, ADDRESS_REGISTER_INDIRECT_WITH_DISPLACEMENT_NEW_ADDRESSING_MODE, "");
+ r = consumeTokenFast(b, ROUND_L);
+ r = r && expr(b, l + 1, -1);
+ r = r && consumeToken(b, SEPARATOR);
+ r = r && AddressRegister(b, l + 1);
+ r = r && consumeToken(b, ROUND_R);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // expr ROUND_L AddressRegister ROUND_R
+ public static boolean AddressRegisterIndirectWithDisplacementOldAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AddressRegisterIndirectWithDisplacementOldAddressingMode")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, ADDRESS_REGISTER_INDIRECT_WITH_DISPLACEMENT_OLD_ADDRESSING_MODE, "");
+ r = expr(b, l + 1, -1);
+ r = r && consumeToken(b, ROUND_L);
+ r = r && AddressRegister(b, l + 1);
+ r = r && consumeToken(b, ROUND_R);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // ROUND_L expr SEPARATOR AddressRegister SEPARATOR DataOrAddressRegister DataWidth? ROUND_R
+ public static boolean AddressRegisterIndirectWithIndexNewAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AddressRegisterIndirectWithIndexNewAddressingMode")) return false;
+ if (!nextTokenIsFast(b, ROUND_L)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, ADDRESS_REGISTER_INDIRECT_WITH_INDEX_NEW_ADDRESSING_MODE, "");
+ r = consumeTokenFast(b, ROUND_L);
+ r = r && expr(b, l + 1, -1);
+ r = r && consumeToken(b, SEPARATOR);
+ r = r && AddressRegister(b, l + 1);
+ r = r && consumeToken(b, SEPARATOR);
+ r = r && DataOrAddressRegister(b, l + 1);
+ r = r && AddressRegisterIndirectWithIndexNewAddressingMode_6(b, l + 1);
+ r = r && consumeToken(b, ROUND_R);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ // DataWidth?
+ private static boolean AddressRegisterIndirectWithIndexNewAddressingMode_6(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AddressRegisterIndirectWithIndexNewAddressingMode_6")) return false;
+ DataWidth(b, l + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // expr ROUND_L AddressRegister SEPARATOR DataOrAddressRegister DataWidth? ROUND_R
+ public static boolean AddressRegisterIndirectWithIndexOldAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AddressRegisterIndirectWithIndexOldAddressingMode")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, ADDRESS_REGISTER_INDIRECT_WITH_INDEX_OLD_ADDRESSING_MODE, "");
+ r = expr(b, l + 1, -1);
+ r = r && consumeToken(b, ROUND_L);
+ r = r && AddressRegister(b, l + 1);
+ r = r && consumeToken(b, SEPARATOR);
+ r = r && DataOrAddressRegister(b, l + 1);
+ r = r && AddressRegisterIndirectWithIndexOldAddressingMode_5(b, l + 1);
+ r = r && consumeToken(b, ROUND_R);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ // DataWidth?
+ private static boolean AddressRegisterIndirectWithIndexOldAddressingMode_5(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AddressRegisterIndirectWithIndexOldAddressingMode_5")) return false;
+ DataWidth(b, l + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // OPSIZE_WL
+ public static boolean AddressSize(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AddressSize")) return false;
+ if (!nextTokenIs(b, OPSIZE_WL)) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeToken(b, OPSIZE_WL);
+ exit_section_(b, m, ADDRESS_SIZE, r);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // AbsoluteAddressAddressingMode
+ // | SpecialRegisterDirectAddressingMode
+ // | DataRegisterDirectAddressingMode
+ // | AddressRegisterDirectAddressingMode
+ // | AddressRegisterIndirectAddressingMode
+ // | AddressRegisterIndirectWithDisplacementOldAddressingMode
+ // | ProgramCounterIndirectWithDisplacementOldAddressingMode
+ // | AddressRegisterIndirectWithIndexOldAddressingMode
+ // | ProgramCounterIndirectWithIndexOldAddressingMode
+ // | AddressRegisterIndirectWithDisplacementNewAddressingMode
+ // | ProgramCounterIndirectWithDisplacementNewAddressingMode
+ // | AddressRegisterIndirectWithIndexNewAddressingMode
+ // | ProgramCounterIndirectWithIndexNewAddressingMode
+ // | AddressRegisterIndirectPreDecAddressingMode
+ // | AddressRegisterIndirectPostIncAddressingMode
+ // | ImmediateData
+ public static boolean AddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AddressingMode")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _COLLAPSE_, ADDRESSING_MODE, "");
+ r = AbsoluteAddressAddressingMode(b, l + 1);
+ if (!r) r = SpecialRegisterDirectAddressingMode(b, l + 1);
+ if (!r) r = DataRegisterDirectAddressingMode(b, l + 1);
+ if (!r) r = AddressRegisterDirectAddressingMode(b, l + 1);
+ if (!r) r = AddressRegisterIndirectAddressingMode(b, l + 1);
+ if (!r) r = AddressRegisterIndirectWithDisplacementOldAddressingMode(b, l + 1);
+ if (!r) r = ProgramCounterIndirectWithDisplacementOldAddressingMode(b, l + 1);
+ if (!r) r = AddressRegisterIndirectWithIndexOldAddressingMode(b, l + 1);
+ if (!r) r = ProgramCounterIndirectWithIndexOldAddressingMode(b, l + 1);
+ if (!r) r = AddressRegisterIndirectWithDisplacementNewAddressingMode(b, l + 1);
+ if (!r) r = ProgramCounterIndirectWithDisplacementNewAddressingMode(b, l + 1);
+ if (!r) r = AddressRegisterIndirectWithIndexNewAddressingMode(b, l + 1);
+ if (!r) r = ProgramCounterIndirectWithIndexNewAddressingMode(b, l + 1);
+ if (!r) r = AddressRegisterIndirectPreDecAddressingMode(b, l + 1);
+ if (!r) r = AddressRegisterIndirectPostIncAddressingMode(b, l + 1);
+ if (!r) r = ImmediateData(b, l + 1);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // AsmOp (WHITE_SPACE AsmOperands)?
+ public static boolean AsmInstruction(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AsmInstruction")) return false;
+ if (!nextTokenIs(b, SYMBOL)) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = AsmOp(b, l + 1);
+ r = r && AsmInstruction_1(b, l + 1);
+ exit_section_(b, m, ASM_INSTRUCTION, r);
+ return r;
+ }
+
+ // (WHITE_SPACE AsmOperands)?
+ private static boolean AsmInstruction_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AsmInstruction_1")) return false;
+ AsmInstruction_1_0(b, l + 1);
+ return true;
+ }
+
+ // WHITE_SPACE AsmOperands
+ private static boolean AsmInstruction_1_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AsmInstruction_1_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeToken(b, WHITE_SPACE);
+ r = r && AsmOperands(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // SYMBOL OperandSize?
+ public static boolean AsmOp(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AsmOp")) return false;
+ if (!nextTokenIs(b, SYMBOL)) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeToken(b, SYMBOL);
+ r = r && AsmOp_1(b, l + 1);
+ exit_section_(b, m, ASM_OP, r);
+ return r;
+ }
+
+ // OperandSize?
+ private static boolean AsmOp_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AsmOp_1")) return false;
+ OperandSize(b, l + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // FirstAsmOperand (SEPARATOR NextAsmOperand)*
+ public static boolean AsmOperands(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AsmOperands")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, ASM_OPERANDS, "");
+ r = FirstAsmOperand(b, l + 1);
+ r = r && AsmOperands_1(b, l + 1);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ // (SEPARATOR NextAsmOperand)*
+ private static boolean AsmOperands_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AsmOperands_1")) return false;
+ while (true) {
+ int c = current_position_(b);
+ if (!AsmOperands_1_0(b, l + 1)) break;
+ if (!empty_element_parsed_guard_(b, "AsmOperands_1", c)) break;
+ }
+ return true;
+ }
+
+ // SEPARATOR NextAsmOperand
+ private static boolean AsmOperands_1_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "AsmOperands_1_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeToken(b, SEPARATOR);
+ r = r && NextAsmOperand(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // SYMBOL ((WHITE_SPACE? OP_ASSIGN WHITE_SPACE?)|(WHITE_SPACE EQU WHITE_SPACE)) expr
+ public static boolean Assignment(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "Assignment")) return false;
+ if (!nextTokenIs(b, SYMBOL)) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeToken(b, SYMBOL);
+ r = r && Assignment_1(b, l + 1);
+ r = r && expr(b, l + 1, -1);
+ exit_section_(b, m, ASSIGNMENT, r);
+ return r;
+ }
+
+ // (WHITE_SPACE? OP_ASSIGN WHITE_SPACE?)|(WHITE_SPACE EQU WHITE_SPACE)
+ private static boolean Assignment_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "Assignment_1")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = Assignment_1_0(b, l + 1);
+ if (!r) r = Assignment_1_1(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // WHITE_SPACE? OP_ASSIGN WHITE_SPACE?
+ private static boolean Assignment_1_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "Assignment_1_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = Assignment_1_0_0(b, l + 1);
+ r = r && consumeToken(b, OP_ASSIGN);
+ r = r && Assignment_1_0_2(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // WHITE_SPACE?
+ private static boolean Assignment_1_0_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "Assignment_1_0_0")) return false;
+ consumeToken(b, WHITE_SPACE);
+ return true;
+ }
+
+ // WHITE_SPACE?
+ private static boolean Assignment_1_0_2(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "Assignment_1_0_2")) return false;
+ consumeToken(b, WHITE_SPACE);
+ return true;
+ }
+
+ // WHITE_SPACE EQU WHITE_SPACE
+ private static boolean Assignment_1_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "Assignment_1_1")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeTokens(b, 0, WHITE_SPACE, EQU, WHITE_SPACE);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // WHITE_SPACE?
+ static boolean BlankLine(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "BlankLine")) return false;
+ consumeToken(b, WHITE_SPACE);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // DataRegister | AddressRegister
+ static boolean DataOrAddressRegister(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "DataOrAddressRegister")) return false;
+ if (!nextTokenIs(b, "", AREG, DREG)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, null, "");
+ r = DataRegister(b, l + 1);
+ if (!r) r = AddressRegister(b, l + 1);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // DREG
+ public static boolean DataRegister(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "DataRegister")) return false;
+ if (!nextTokenIs(b, "", DREG)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, DATA_REGISTER, "");
+ r = consumeToken(b, DREG);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // DataRegister
+ public static boolean DataRegisterDirectAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "DataRegisterDirectAddressingMode")) return false;
+ if (!nextTokenIsFast(b, DREG)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, DATA_REGISTER_DIRECT_ADDRESSING_MODE, "");
+ r = DataRegister(b, l + 1);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // OPSIZE_WL
+ public static boolean DataWidth(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "DataWidth")) return false;
+ if (!nextTokenIs(b, OPSIZE_WL)) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeToken(b, OPSIZE_WL);
+ exit_section_(b, m, DATA_WIDTH, r);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // AddressingMode
+ static boolean FirstAsmOperand(PsiBuilder b, int l) {
+ return AddressingMode(b, l + 1);
+ }
+
+ /* ********************************************************** */
+ // (!WHITE_SPACE SYMBOL (COLON? COLON?)?)|(WHITE_SPACE? SYMBOL COLON COLON?)
+ public static boolean GlobalLabel(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "GlobalLabel")) return false;
+ if (!nextTokenIs(b, "", SYMBOL, WHITE_SPACE)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, GLOBAL_LABEL, "");
+ r = GlobalLabel_0(b, l + 1);
+ if (!r) r = GlobalLabel_1(b, l + 1);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ // !WHITE_SPACE SYMBOL (COLON? COLON?)?
+ private static boolean GlobalLabel_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "GlobalLabel_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = GlobalLabel_0_0(b, l + 1);
+ r = r && consumeToken(b, SYMBOL);
+ r = r && GlobalLabel_0_2(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // !WHITE_SPACE
+ private static boolean GlobalLabel_0_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "GlobalLabel_0_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NOT_);
+ r = !consumeToken(b, WHITE_SPACE);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ // (COLON? COLON?)?
+ private static boolean GlobalLabel_0_2(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "GlobalLabel_0_2")) return false;
+ GlobalLabel_0_2_0(b, l + 1);
+ return true;
+ }
+
+ // COLON? COLON?
+ private static boolean GlobalLabel_0_2_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "GlobalLabel_0_2_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = GlobalLabel_0_2_0_0(b, l + 1);
+ r = r && GlobalLabel_0_2_0_1(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // COLON?
+ private static boolean GlobalLabel_0_2_0_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "GlobalLabel_0_2_0_0")) return false;
+ consumeToken(b, COLON);
+ return true;
+ }
+
+ // COLON?
+ private static boolean GlobalLabel_0_2_0_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "GlobalLabel_0_2_0_1")) return false;
+ consumeToken(b, COLON);
+ return true;
+ }
+
+ // WHITE_SPACE? SYMBOL COLON COLON?
+ private static boolean GlobalLabel_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "GlobalLabel_1")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = GlobalLabel_1_0(b, l + 1);
+ r = r && consumeTokens(b, 0, SYMBOL, COLON);
+ r = r && GlobalLabel_1_3(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // WHITE_SPACE?
+ private static boolean GlobalLabel_1_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "GlobalLabel_1_0")) return false;
+ consumeToken(b, WHITE_SPACE);
+ return true;
+ }
+
+ // COLON?
+ private static boolean GlobalLabel_1_3(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "GlobalLabel_1_3")) return false;
+ consumeToken(b, COLON);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // HASH expr
+ public static boolean ImmediateData(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "ImmediateData")) return false;
+ if (!nextTokenIs(b, HASH)) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeToken(b, HASH);
+ r = r && expr(b, l + 1, -1);
+ exit_section_(b, m, IMMEDIATE_DATA, r);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // WHITE_SPACE Instruction
+ static boolean InstructionOnly(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "InstructionOnly")) return false;
+ if (!nextTokenIs(b, WHITE_SPACE)) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeToken(b, WHITE_SPACE);
+ r = r && parseMacroCallOrAsmInstruction(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // LocalLabel | GlobalLabel
+ public static boolean Label(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "Label")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, LABEL, "");
+ r = LocalLabel(b, l + 1);
+ if (!r) r = GlobalLabel(b, l + 1);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // LabelOnly|LabelWithInstruction|InstructionOnly
+ static boolean LabelInsts(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "LabelInsts")) return false;
+ boolean r;
+ r = LabelOnly(b, l + 1);
+ if (!r) r = LabelWithInstruction(b, l + 1);
+ if (!r) r = InstructionOnly(b, l + 1);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // Label
+ static boolean LabelOnly(PsiBuilder b, int l) {
+ return Label(b, l + 1);
+ }
+
+ /* ********************************************************** */
+ // Label WHITE_SPACE Instruction
+ static boolean LabelWithInstruction(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "LabelWithInstruction")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = Label(b, l + 1);
+ r = r && consumeToken(b, WHITE_SPACE);
+ r = r && parseMacroCallOrAsmInstruction(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // (!WHITE_SPACE ((DOT SYMBOL)|(SYMBOL DOLLAR)) COLON?)|(WHITE_SPACE? ((DOT SYMBOL)|(SYMBOL DOLLAR)) COLON)
+ public static boolean LocalLabel(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "LocalLabel")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, LOCAL_LABEL, "");
+ r = LocalLabel_0(b, l + 1);
+ if (!r) r = LocalLabel_1(b, l + 1);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ // !WHITE_SPACE ((DOT SYMBOL)|(SYMBOL DOLLAR)) COLON?
+ private static boolean LocalLabel_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "LocalLabel_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = LocalLabel_0_0(b, l + 1);
+ r = r && LocalLabel_0_1(b, l + 1);
+ r = r && LocalLabel_0_2(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // !WHITE_SPACE
+ private static boolean LocalLabel_0_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "LocalLabel_0_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NOT_);
+ r = !consumeToken(b, WHITE_SPACE);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ // (DOT SYMBOL)|(SYMBOL DOLLAR)
+ private static boolean LocalLabel_0_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "LocalLabel_0_1")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = LocalLabel_0_1_0(b, l + 1);
+ if (!r) r = LocalLabel_0_1_1(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // DOT SYMBOL
+ private static boolean LocalLabel_0_1_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "LocalLabel_0_1_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeTokens(b, 0, DOT, SYMBOL);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // SYMBOL DOLLAR
+ private static boolean LocalLabel_0_1_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "LocalLabel_0_1_1")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeTokens(b, 0, SYMBOL, DOLLAR);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // COLON?
+ private static boolean LocalLabel_0_2(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "LocalLabel_0_2")) return false;
+ consumeToken(b, COLON);
+ return true;
+ }
+
+ // WHITE_SPACE? ((DOT SYMBOL)|(SYMBOL DOLLAR)) COLON
+ private static boolean LocalLabel_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "LocalLabel_1")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = LocalLabel_1_0(b, l + 1);
+ r = r && LocalLabel_1_1(b, l + 1);
+ r = r && consumeToken(b, COLON);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // WHITE_SPACE?
+ private static boolean LocalLabel_1_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "LocalLabel_1_0")) return false;
+ consumeToken(b, WHITE_SPACE);
+ return true;
+ }
+
+ // (DOT SYMBOL)|(SYMBOL DOLLAR)
+ private static boolean LocalLabel_1_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "LocalLabel_1_1")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = LocalLabel_1_1_0(b, l + 1);
+ if (!r) r = LocalLabel_1_1_1(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // DOT SYMBOL
+ private static boolean LocalLabel_1_1_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "LocalLabel_1_1_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeTokens(b, 0, DOT, SYMBOL);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // SYMBOL DOLLAR
+ private static boolean LocalLabel_1_1_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "LocalLabel_1_1_1")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeTokens(b, 0, SYMBOL, DOLLAR);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // line*
+ static boolean M68kFile(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "M68kFile")) return false;
+ while (true) {
+ int c = current_position_(b);
+ if (!line(b, l + 1)) break;
+ if (!empty_element_parsed_guard_(b, "M68kFile", c)) break;
+ }
+ return true;
+ }
+
+ /* ********************************************************** */
+ // SYMBOL PreprocessorOperands?
+ public static boolean MacroCall(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "MacroCall")) return false;
+ if (!nextTokenIs(b, SYMBOL)) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeToken(b, SYMBOL);
+ r = r && MacroCall_1(b, l + 1);
+ exit_section_(b, m, MACRO_CALL, r);
+ return r;
+ }
+
+ // PreprocessorOperands?
+ private static boolean MacroCall_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "MacroCall_1")) return false;
+ PreprocessorOperands(b, l + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // AddressingMode
+ static boolean NextAsmOperand(PsiBuilder b, int l) {
+ return AddressingMode(b, l + 1);
+ }
+
+ /* ********************************************************** */
+ // OPSIZE_BS|OPSIZE_WL
+ public static boolean OperandSize(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "OperandSize")) return false;
+ if (!nextTokenIs(b, "", OPSIZE_BS, OPSIZE_WL)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, OPERAND_SIZE, "");
+ r = consumeToken(b, OPSIZE_BS);
+ if (!r) r = consumeToken(b, OPSIZE_WL);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // SYMBOL?
+ // (END_TAG
+ // | EVEN_TAG
+ // | CNOP_TAG
+ // | SECTION_TAG
+ // | INCLUDE_TAG
+ // | INCBIN_TAG
+ // | IF_TAG
+ // | ELSE_TAG
+ // | ENDC_TAG
+ // | MACRO_TAG
+ // | MACRO_END_TAG
+ // | REPT_TAG
+ // | REPT_END_TAG
+ // | FAIL_TAG)
+ // (WHITE_SPACE PreprocessorOperands)?
+ public static boolean PreprocessorDirective(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "PreprocessorDirective")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, PREPROCESSOR_DIRECTIVE, "");
+ r = PreprocessorDirective_0(b, l + 1);
+ r = r && PreprocessorDirective_1(b, l + 1);
+ r = r && PreprocessorDirective_2(b, l + 1);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ // SYMBOL?
+ private static boolean PreprocessorDirective_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "PreprocessorDirective_0")) return false;
+ consumeToken(b, SYMBOL);
+ return true;
+ }
+
+ // END_TAG
+ // | EVEN_TAG
+ // | CNOP_TAG
+ // | SECTION_TAG
+ // | INCLUDE_TAG
+ // | INCBIN_TAG
+ // | IF_TAG
+ // | ELSE_TAG
+ // | ENDC_TAG
+ // | MACRO_TAG
+ // | MACRO_END_TAG
+ // | REPT_TAG
+ // | REPT_END_TAG
+ // | FAIL_TAG
+ private static boolean PreprocessorDirective_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "PreprocessorDirective_1")) return false;
+ boolean r;
+ r = consumeToken(b, END_TAG);
+ if (!r) r = consumeToken(b, EVEN_TAG);
+ if (!r) r = consumeToken(b, CNOP_TAG);
+ if (!r) r = consumeToken(b, SECTION_TAG);
+ if (!r) r = consumeToken(b, INCLUDE_TAG);
+ if (!r) r = consumeToken(b, INCBIN_TAG);
+ if (!r) r = consumeToken(b, IF_TAG);
+ if (!r) r = consumeToken(b, ELSE_TAG);
+ if (!r) r = consumeToken(b, ENDC_TAG);
+ if (!r) r = consumeToken(b, MACRO_TAG);
+ if (!r) r = consumeToken(b, MACRO_END_TAG);
+ if (!r) r = consumeToken(b, REPT_TAG);
+ if (!r) r = consumeToken(b, REPT_END_TAG);
+ if (!r) r = consumeToken(b, FAIL_TAG);
+ return r;
+ }
+
+ // (WHITE_SPACE PreprocessorOperands)?
+ private static boolean PreprocessorDirective_2(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "PreprocessorDirective_2")) return false;
+ PreprocessorDirective_2_0(b, l + 1);
+ return true;
+ }
+
+ // WHITE_SPACE PreprocessorOperands
+ private static boolean PreprocessorDirective_2_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "PreprocessorDirective_2_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeToken(b, WHITE_SPACE);
+ r = r && PreprocessorOperands(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // expr
+ static boolean PreprocessorOperand(PsiBuilder b, int l) {
+ return expr(b, l + 1, -1);
+ }
+
+ /* ********************************************************** */
+ // PreprocessorOperand (SEPARATOR PreprocessorOperand)*
+ static boolean PreprocessorOperands(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "PreprocessorOperands")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = PreprocessorOperand(b, l + 1);
+ r = r && PreprocessorOperands_1(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // (SEPARATOR PreprocessorOperand)*
+ private static boolean PreprocessorOperands_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "PreprocessorOperands_1")) return false;
+ while (true) {
+ int c = current_position_(b);
+ if (!PreprocessorOperands_1_0(b, l + 1)) break;
+ if (!empty_element_parsed_guard_(b, "PreprocessorOperands_1", c)) break;
+ }
+ return true;
+ }
+
+ // SEPARATOR PreprocessorOperand
+ private static boolean PreprocessorOperands_1_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "PreprocessorOperands_1_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeToken(b, SEPARATOR);
+ r = r && PreprocessorOperand(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // ROUND_L expr SEPARATOR PC ROUND_R
+ public static boolean ProgramCounterIndirectWithDisplacementNewAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "ProgramCounterIndirectWithDisplacementNewAddressingMode")) return false;
+ if (!nextTokenIsFast(b, ROUND_L)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, PROGRAM_COUNTER_INDIRECT_WITH_DISPLACEMENT_NEW_ADDRESSING_MODE, "");
+ r = consumeTokenFast(b, ROUND_L);
+ r = r && expr(b, l + 1, -1);
+ r = r && consumeTokens(b, 0, SEPARATOR, PC, ROUND_R);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // expr ROUND_L PC ROUND_R
+ public static boolean ProgramCounterIndirectWithDisplacementOldAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "ProgramCounterIndirectWithDisplacementOldAddressingMode")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, PROGRAM_COUNTER_INDIRECT_WITH_DISPLACEMENT_OLD_ADDRESSING_MODE, "");
+ r = expr(b, l + 1, -1);
+ r = r && consumeTokens(b, 0, ROUND_L, PC, ROUND_R);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // ROUND_L expr SEPARATOR PC SEPARATOR DataOrAddressRegister DataWidth? ROUND_R
+ public static boolean ProgramCounterIndirectWithIndexNewAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "ProgramCounterIndirectWithIndexNewAddressingMode")) return false;
+ if (!nextTokenIsFast(b, ROUND_L)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, PROGRAM_COUNTER_INDIRECT_WITH_INDEX_NEW_ADDRESSING_MODE, "");
+ r = consumeTokenFast(b, ROUND_L);
+ r = r && expr(b, l + 1, -1);
+ r = r && consumeTokens(b, 0, SEPARATOR, PC, SEPARATOR);
+ r = r && DataOrAddressRegister(b, l + 1);
+ r = r && ProgramCounterIndirectWithIndexNewAddressingMode_6(b, l + 1);
+ r = r && consumeToken(b, ROUND_R);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ // DataWidth?
+ private static boolean ProgramCounterIndirectWithIndexNewAddressingMode_6(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "ProgramCounterIndirectWithIndexNewAddressingMode_6")) return false;
+ DataWidth(b, l + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // expr ROUND_L PC SEPARATOR DataOrAddressRegister DataWidth? ROUND_R
+ public static boolean ProgramCounterIndirectWithIndexOldAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "ProgramCounterIndirectWithIndexOldAddressingMode")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, PROGRAM_COUNTER_INDIRECT_WITH_INDEX_OLD_ADDRESSING_MODE, "");
+ r = expr(b, l + 1, -1);
+ r = r && consumeTokens(b, 0, ROUND_L, PC, SEPARATOR);
+ r = r && DataOrAddressRegister(b, l + 1);
+ r = r && ProgramCounterIndirectWithIndexOldAddressingMode_5(b, l + 1);
+ r = r && consumeToken(b, ROUND_R);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ // DataWidth?
+ private static boolean ProgramCounterIndirectWithIndexOldAddressingMode_5(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "ProgramCounterIndirectWithIndexOldAddressingMode_5")) return false;
+ DataWidth(b, l + 1);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // DataRegister | AddressRegister | SpecialRegister
+ public static boolean Register(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "Register")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _COLLAPSE_, REGISTER, "");
+ r = DataRegister(b, l + 1);
+ if (!r) r = AddressRegister(b, l + 1);
+ if (!r) r = SpecialRegister(b, l + 1);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // REG_CCR | REG_SR | REG_USP | REG_VBR
+ public static boolean SpecialRegister(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "SpecialRegister")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, SPECIAL_REGISTER, "");
+ r = consumeToken(b, REG_CCR);
+ if (!r) r = consumeToken(b, REG_SR);
+ if (!r) r = consumeToken(b, REG_USP);
+ if (!r) r = consumeToken(b, REG_VBR);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // SpecialRegister
+ public static boolean SpecialRegisterDirectAddressingMode(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "SpecialRegisterDirectAddressingMode")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, SPECIAL_REGISTER_DIRECT_ADDRESSING_MODE, "");
+ r = SpecialRegister(b, l + 1);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // !<> statement EOL
+ static boolean line(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "line")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = line_0(b, l + 1);
+ r = r && statement(b, l + 1);
+ r = r && consumeToken(b, EOL);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // !<>
+ private static boolean line_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "line_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NOT_);
+ r = !eof(b, l + 1);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // Assignment
+ // | PreprocessorDirective
+ // | LabelInsts
+ // | BlankLine
+ public static boolean statement(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "statement")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, STATEMENT, "");
+ r = Assignment(b, l + 1);
+ if (!r) r = PreprocessorDirective(b, l + 1);
+ if (!r) r = LabelInsts(b, l + 1);
+ if (!r) r = BlankLine(b, l + 1);
+ exit_section_(b, l, m, r, false, M68kParser::statement_recover);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // !(EOL)
+ static boolean statement_recover(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "statement_recover")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NOT_);
+ r = !consumeToken(b, EOL);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // Expression root: expr
+ // Operator priority table:
+ // 0: BINARY(binary_logical_or_expr)
+ // 1: BINARY(binary_logical_and_expr)
+ // 2: BINARY(binary_cmp_eq_expr) BINARY(binary_cmp_ne_expr)
+ // 3: BINARY(binary_cmp_lt_expr) BINARY(binary_cmp_le_expr) BINARY(binary_cmp_gt_expr) BINARY(binary_cmp_ge_expr)
+ // 4: BINARY(binary_add_expr) BINARY(binary_sub_expr)
+ // 5: BINARY(binary_mul_expr) BINARY(binary_div_expr) BINARY(binary_mod_expr)
+ // 6: BINARY(binary_bitwise_or_expr)
+ // 7: BINARY(binary_bitwise_xor_expr)
+ // 8: BINARY(binary_bitwise_and_expr)
+ // 9: BINARY(binary_shift_l_expr) BINARY(binary_shift_r_expr)
+ // 10: PREFIX(unary_plus_expr) PREFIX(unary_minus_expr) PREFIX(unary_not_expr) PREFIX(unary_compl_expr)
+ // 11: ATOM(ref_expr) ATOM(literal_expr) PREFIX(paren_expr)
+ public static boolean expr(PsiBuilder b, int l, int g) {
+ if (!recursion_guard_(b, l, "expr")) return false;
+ addVariant(b, "");
+ boolean r, p;
+ Marker m = enter_section_(b, l, _NONE_, "");
+ r = unary_plus_expr(b, l + 1);
+ if (!r) r = unary_minus_expr(b, l + 1);
+ if (!r) r = unary_not_expr(b, l + 1);
+ if (!r) r = unary_compl_expr(b, l + 1);
+ if (!r) r = ref_expr(b, l + 1);
+ if (!r) r = literal_expr(b, l + 1);
+ if (!r) r = paren_expr(b, l + 1);
+ p = r;
+ r = r && expr_0(b, l + 1, g);
+ exit_section_(b, l, m, null, r, p, null);
+ return r || p;
+ }
+
+ public static boolean expr_0(PsiBuilder b, int l, int g) {
+ if (!recursion_guard_(b, l, "expr_0")) return false;
+ boolean r = true;
+ while (true) {
+ Marker m = enter_section_(b, l, _LEFT_, null);
+ if (g < 0 && consumeTokenSmart(b, OP_LOGICAL_OR)) {
+ r = expr(b, l, 0);
+ exit_section_(b, l, m, BINARY_LOGICAL_OR_EXPR, r, true, null);
+ } else if (g < 1 && consumeTokenSmart(b, OP_LOGICAL_AND)) {
+ r = expr(b, l, 1);
+ exit_section_(b, l, m, BINARY_LOGICAL_AND_EXPR, r, true, null);
+ } else if (g < 2 && consumeTokenSmart(b, OP_CMP_EQ)) {
+ r = expr(b, l, 2);
+ exit_section_(b, l, m, BINARY_CMP_EQ_EXPR, r, true, null);
+ } else if (g < 2 && binary_cmp_ne_expr_0(b, l + 1)) {
+ r = expr(b, l, 2);
+ exit_section_(b, l, m, BINARY_CMP_NE_EXPR, r, true, null);
+ } else if (g < 3 && consumeTokenSmart(b, OP_CMP_LT)) {
+ r = expr(b, l, 3);
+ exit_section_(b, l, m, BINARY_CMP_LT_EXPR, r, true, null);
+ } else if (g < 3 && consumeTokenSmart(b, OP_CMP_LT_EQ)) {
+ r = expr(b, l, 3);
+ exit_section_(b, l, m, BINARY_CMP_LE_EXPR, r, true, null);
+ } else if (g < 3 && consumeTokenSmart(b, OP_CMP_GT)) {
+ r = expr(b, l, 3);
+ exit_section_(b, l, m, BINARY_CMP_GT_EXPR, r, true, null);
+ } else if (g < 3 && consumeTokenSmart(b, OP_CMP_GT_EQ)) {
+ r = expr(b, l, 3);
+ exit_section_(b, l, m, BINARY_CMP_GE_EXPR, r, true, null);
+ } else if (g < 4 && consumeTokenSmart(b, OP_PLUS)) {
+ r = expr(b, l, 4);
+ exit_section_(b, l, m, BINARY_ADD_EXPR, r, true, null);
+ } else if (g < 4 && consumeTokenSmart(b, OP_MINUS)) {
+ r = expr(b, l, 4);
+ exit_section_(b, l, m, BINARY_SUB_EXPR, r, true, null);
+ } else if (g < 5 && consumeTokenSmart(b, OP_AR_MUL)) {
+ r = expr(b, l, 5);
+ exit_section_(b, l, m, BINARY_MUL_EXPR, r, true, null);
+ } else if (g < 5 && consumeTokenSmart(b, OP_AR_DIV)) {
+ r = expr(b, l, 5);
+ exit_section_(b, l, m, BINARY_DIV_EXPR, r, true, null);
+ } else if (g < 5 && consumeTokenSmart(b, OP_AR_MOD)) {
+ r = expr(b, l, 5);
+ exit_section_(b, l, m, BINARY_MOD_EXPR, r, true, null);
+ } else if (g < 6 && binary_bitwise_or_expr_0(b, l + 1)) {
+ r = expr(b, l, 6);
+ exit_section_(b, l, m, BINARY_BITWISE_OR_EXPR, r, true, null);
+ } else if (g < 7 && consumeTokenSmart(b, OP_BITWISE_XOR)) {
+ r = expr(b, l, 7);
+ exit_section_(b, l, m, BINARY_BITWISE_XOR_EXPR, r, true, null);
+ } else if (g < 8 && consumeTokenSmart(b, OP_BITWISE_AND)) {
+ r = expr(b, l, 8);
+ exit_section_(b, l, m, BINARY_BITWISE_AND_EXPR, r, true, null);
+ } else if (g < 9 && consumeTokenSmart(b, OP_AR_SHIFT_L)) {
+ r = expr(b, l, 9);
+ exit_section_(b, l, m, BINARY_SHIFT_L_EXPR, r, true, null);
+ } else if (g < 9 && consumeTokenSmart(b, OP_AR_SHIFT_R)) {
+ r = expr(b, l, 9);
+ exit_section_(b, l, m, BINARY_SHIFT_R_EXPR, r, true, null);
+ } else {
+ exit_section_(b, l, m, null, false, false, null);
+ break;
+ }
+ }
+ return r;
+ }
+
+ // OP_CMP_NOT_EQ|OP_CMP_NOT_EQ2
+ private static boolean binary_cmp_ne_expr_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "binary_cmp_ne_expr_0")) return false;
+ boolean r;
+ r = consumeTokenSmart(b, OP_CMP_NOT_EQ);
+ if (!r) r = consumeTokenSmart(b, OP_CMP_NOT_EQ2);
+ return r;
+ }
+
+ public static boolean unary_plus_expr(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "unary_plus_expr")) return false;
+ if (!nextTokenIsSmart(b, OP_PLUS)) return false;
+ boolean r, p;
+ Marker m = enter_section_(b, l, _NONE_, null);
+ r = consumeTokenSmart(b, OP_PLUS);
+ p = r;
+ r = p && expr(b, l, 10);
+ exit_section_(b, l, m, UNARY_PLUS_EXPR, r, p, null);
+ return r || p;
+ }
+
+ public static boolean unary_minus_expr(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "unary_minus_expr")) return false;
+ if (!nextTokenIsSmart(b, OP_MINUS)) return false;
+ boolean r, p;
+ Marker m = enter_section_(b, l, _NONE_, null);
+ r = consumeTokenSmart(b, OP_MINUS);
+ p = r;
+ r = p && expr(b, l, 10);
+ exit_section_(b, l, m, UNARY_MINUS_EXPR, r, p, null);
+ return r || p;
+ }
+
+ // OP_BITWISE_OR|OP_UNARY_NOT
+ private static boolean binary_bitwise_or_expr_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "binary_bitwise_or_expr_0")) return false;
+ boolean r;
+ r = consumeTokenSmart(b, OP_BITWISE_OR);
+ if (!r) r = consumeTokenSmart(b, OP_UNARY_NOT);
+ return r;
+ }
+
+ public static boolean unary_not_expr(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "unary_not_expr")) return false;
+ if (!nextTokenIsSmart(b, OP_UNARY_NOT)) return false;
+ boolean r, p;
+ Marker m = enter_section_(b, l, _NONE_, null);
+ r = consumeTokenSmart(b, OP_UNARY_NOT);
+ p = r;
+ r = p && expr(b, l, 10);
+ exit_section_(b, l, m, UNARY_NOT_EXPR, r, p, null);
+ return r || p;
+ }
+
+ public static boolean unary_compl_expr(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "unary_compl_expr")) return false;
+ if (!nextTokenIsSmart(b, OP_UNARY_COMPL)) return false;
+ boolean r, p;
+ Marker m = enter_section_(b, l, _NONE_, null);
+ r = consumeTokenSmart(b, OP_UNARY_COMPL);
+ p = r;
+ r = p && expr(b, l, 10);
+ exit_section_(b, l, m, UNARY_COMPL_EXPR, r, p, null);
+ return r || p;
+ }
+
+ // SYMBOL
+ public static boolean ref_expr(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "ref_expr")) return false;
+ if (!nextTokenIsSmart(b, SYMBOL)) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, REF_EXPR, "");
+ r = consumeTokenSmart(b, SYMBOL);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ // BINARY|DECIMAL|HEXADECIMAL|OCTAL|STRINGLIT
+ public static boolean literal_expr(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "literal_expr")) return false;
+ boolean r;
+ Marker m = enter_section_(b, l, _NONE_, LITERAL_EXPR, "");
+ r = consumeTokenSmart(b, BINARY);
+ if (!r) r = consumeTokenSmart(b, DECIMAL);
+ if (!r) r = consumeTokenSmart(b, HEXADECIMAL);
+ if (!r) r = consumeTokenSmart(b, OCTAL);
+ if (!r) r = consumeTokenSmart(b, STRINGLIT);
+ exit_section_(b, l, m, r, false, null);
+ return r;
+ }
+
+ public static boolean paren_expr(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "paren_expr")) return false;
+ if (!nextTokenIsSmart(b, ROUND_L)) return false;
+ boolean r, p;
+ Marker m = enter_section_(b, l, _NONE_, null);
+ r = consumeTokenSmart(b, ROUND_L);
+ p = r;
+ r = p && expr(b, l, -1);
+ r = p && report_error_(b, consumeToken(b, ROUND_R)) && r;
+ exit_section_(b, l, m, PAREN_EXPR, r, p, null);
+ return r || p;
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAbsoluteAddressAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAbsoluteAddressAddressingMode.java
new file mode 100644
index 0000000..eb753ec
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAbsoluteAddressAddressingMode.java
@@ -0,0 +1,15 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kAbsoluteAddressAddressingMode extends M68kAddressingMode {
+
+ @Nullable
+ M68kAddressSize getAddressSize();
+
+ @NotNull
+ M68kExpr getExpr();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegister.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegister.java
new file mode 100644
index 0000000..c92ea11
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegister.java
@@ -0,0 +1,12 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kAddressRegister extends M68kRegister {
+
+ @NotNull
+ PsiElement getAreg();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterDirectAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterDirectAddressingMode.java
new file mode 100644
index 0000000..5a6aaee
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterDirectAddressingMode.java
@@ -0,0 +1,11 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kAddressRegisterDirectAddressingMode extends M68kAddressingMode {
+
+ @NotNull
+ M68kAddressRegister getAddressRegister();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectAddressingMode.java
new file mode 100644
index 0000000..47538b3
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectAddressingMode.java
@@ -0,0 +1,11 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kAddressRegisterIndirectAddressingMode extends M68kAddressingMode {
+
+ @NotNull
+ M68kAddressRegister getAddressRegister();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectPostIncAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectPostIncAddressingMode.java
new file mode 100644
index 0000000..99d67af
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectPostIncAddressingMode.java
@@ -0,0 +1,11 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kAddressRegisterIndirectPostIncAddressingMode extends M68kAddressingMode {
+
+ @NotNull
+ M68kAddressRegister getAddressRegister();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectPreDecAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectPreDecAddressingMode.java
new file mode 100644
index 0000000..c132b8d
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectPreDecAddressingMode.java
@@ -0,0 +1,11 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kAddressRegisterIndirectPreDecAddressingMode extends M68kAddressingMode {
+
+ @NotNull
+ M68kAddressRegister getAddressRegister();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectWithDisplacementNewAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectWithDisplacementNewAddressingMode.java
new file mode 100644
index 0000000..d7b1629
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectWithDisplacementNewAddressingMode.java
@@ -0,0 +1,14 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kAddressRegisterIndirectWithDisplacementNewAddressingMode extends M68kAddressingMode {
+
+ @NotNull
+ M68kAddressRegister getAddressRegister();
+
+ @NotNull
+ M68kExpr getExpr();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectWithDisplacementOldAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectWithDisplacementOldAddressingMode.java
new file mode 100644
index 0000000..c9cf315
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectWithDisplacementOldAddressingMode.java
@@ -0,0 +1,14 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kAddressRegisterIndirectWithDisplacementOldAddressingMode extends M68kAddressingMode {
+
+ @NotNull
+ M68kAddressRegister getAddressRegister();
+
+ @NotNull
+ M68kExpr getExpr();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectWithIndexNewAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectWithIndexNewAddressingMode.java
new file mode 100644
index 0000000..82f13cf
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectWithIndexNewAddressingMode.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kAddressRegisterIndirectWithIndexNewAddressingMode extends M68kAddressingMode {
+
+ @NotNull
+ M68kAddressRegister getAddressRegister();
+
+ @Nullable
+ M68kDataWidth getDataWidth();
+
+ @NotNull
+ M68kRegister getRegister();
+
+ @NotNull
+ M68kExpr getExpr();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectWithIndexOldAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectWithIndexOldAddressingMode.java
new file mode 100644
index 0000000..4d3190f
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressRegisterIndirectWithIndexOldAddressingMode.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kAddressRegisterIndirectWithIndexOldAddressingMode extends M68kAddressingMode {
+
+ @NotNull
+ M68kAddressRegister getAddressRegister();
+
+ @Nullable
+ M68kDataWidth getDataWidth();
+
+ @NotNull
+ M68kRegister getRegister();
+
+ @NotNull
+ M68kExpr getExpr();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressSize.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressSize.java
new file mode 100644
index 0000000..f248d68
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressSize.java
@@ -0,0 +1,12 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kAddressSize extends PsiElement {
+
+ @NotNull
+ PsiElement getOpsizeWl();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressingMode.java
new file mode 100644
index 0000000..792ded4
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAddressingMode.java
@@ -0,0 +1,8 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+
+public interface M68kAddressingMode extends PsiElement {
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAsmInstruction.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAsmInstruction.java
new file mode 100644
index 0000000..2952ee0
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAsmInstruction.java
@@ -0,0 +1,19 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kAsmInstruction extends PsiElement {
+
+ @NotNull
+ M68kAsmOp getAsmOp();
+
+ @Nullable
+ M68kAsmOperands getAsmOperands();
+
+ @Nullable
+ PsiElement getWhiteSpace();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAsmOp.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAsmOp.java
new file mode 100644
index 0000000..beba145
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAsmOp.java
@@ -0,0 +1,16 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kAsmOp extends PsiElement {
+
+ @Nullable
+ M68kOperandSize getOperandSize();
+
+ @NotNull
+ PsiElement getSymbol();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAsmOperands.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAsmOperands.java
new file mode 100644
index 0000000..10bd442
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAsmOperands.java
@@ -0,0 +1,14 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kAsmOperands extends PsiElement {
+
+ @NotNull
+ List getAddressingModeList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAssignment.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAssignment.java
new file mode 100644
index 0000000..485f01a
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kAssignment.java
@@ -0,0 +1,19 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kAssignment extends PsiElement {
+
+ @NotNull
+ M68kExpr getExpr();
+
+ @Nullable
+ PsiElement getEqu();
+
+ @NotNull
+ PsiElement getSymbol();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryAddExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryAddExpr.java
new file mode 100644
index 0000000..70e653e
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryAddExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryAddExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryBitwiseAndExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryBitwiseAndExpr.java
new file mode 100644
index 0000000..83c3d86
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryBitwiseAndExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryBitwiseAndExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryBitwiseOrExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryBitwiseOrExpr.java
new file mode 100644
index 0000000..baabf20
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryBitwiseOrExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryBitwiseOrExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryBitwiseXorExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryBitwiseXorExpr.java
new file mode 100644
index 0000000..4ba2bd8
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryBitwiseXorExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryBitwiseXorExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpEqExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpEqExpr.java
new file mode 100644
index 0000000..86be8ea
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpEqExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryCmpEqExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpGeExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpGeExpr.java
new file mode 100644
index 0000000..5e930b3
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpGeExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryCmpGeExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpGtExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpGtExpr.java
new file mode 100644
index 0000000..4d07668
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpGtExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryCmpGtExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpLeExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpLeExpr.java
new file mode 100644
index 0000000..527ff74
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpLeExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryCmpLeExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpLtExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpLtExpr.java
new file mode 100644
index 0000000..4b2a739
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpLtExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryCmpLtExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpNeExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpNeExpr.java
new file mode 100644
index 0000000..ddb8b64
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryCmpNeExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryCmpNeExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryDivExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryDivExpr.java
new file mode 100644
index 0000000..9641eff
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryDivExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryDivExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryLogicalAndExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryLogicalAndExpr.java
new file mode 100644
index 0000000..0a2e94b
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryLogicalAndExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryLogicalAndExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryLogicalOrExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryLogicalOrExpr.java
new file mode 100644
index 0000000..c25c754
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryLogicalOrExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryLogicalOrExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryModExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryModExpr.java
new file mode 100644
index 0000000..491860b
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryModExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryModExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryMulExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryMulExpr.java
new file mode 100644
index 0000000..e4fbb0a
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryMulExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryMulExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryShiftLExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryShiftLExpr.java
new file mode 100644
index 0000000..1412afb
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryShiftLExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryShiftLExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryShiftRExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryShiftRExpr.java
new file mode 100644
index 0000000..0941c6a
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinaryShiftRExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinaryShiftRExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinarySubExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinarySubExpr.java
new file mode 100644
index 0000000..2a14cbc
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kBinarySubExpr.java
@@ -0,0 +1,13 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kBinarySubExpr extends M68kExpr {
+
+ @NotNull
+ List getExprList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kDataRegister.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kDataRegister.java
new file mode 100644
index 0000000..9b8e389
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kDataRegister.java
@@ -0,0 +1,12 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kDataRegister extends M68kRegister {
+
+ @NotNull
+ PsiElement getDreg();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kDataRegisterDirectAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kDataRegisterDirectAddressingMode.java
new file mode 100644
index 0000000..81b64d7
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kDataRegisterDirectAddressingMode.java
@@ -0,0 +1,11 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kDataRegisterDirectAddressingMode extends M68kAddressingMode {
+
+ @NotNull
+ M68kDataRegister getDataRegister();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kDataWidth.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kDataWidth.java
new file mode 100644
index 0000000..bf16740
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kDataWidth.java
@@ -0,0 +1,12 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kDataWidth extends PsiElement {
+
+ @NotNull
+ PsiElement getOpsizeWl();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kExpr.java
new file mode 100644
index 0000000..99b8a9a
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kExpr.java
@@ -0,0 +1,8 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+
+public interface M68kExpr extends PsiElement {
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kGlobalLabel.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kGlobalLabel.java
new file mode 100644
index 0000000..242ff37
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kGlobalLabel.java
@@ -0,0 +1,16 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kGlobalLabel extends PsiElement {
+
+ @NotNull
+ PsiElement getSymbol();
+
+ @Nullable
+ PsiElement getWhiteSpace();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kImmediateData.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kImmediateData.java
new file mode 100644
index 0000000..14b3e82
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kImmediateData.java
@@ -0,0 +1,11 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kImmediateData extends M68kAddressingMode {
+
+ @NotNull
+ M68kExpr getExpr();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kLabel.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kLabel.java
new file mode 100644
index 0000000..77adb29
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kLabel.java
@@ -0,0 +1,15 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kLabel extends PsiElement {
+
+ @Nullable
+ M68kGlobalLabel getGlobalLabel();
+
+ @Nullable
+ M68kLocalLabel getLocalLabel();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kLiteralExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kLiteralExpr.java
new file mode 100644
index 0000000..f72f0a6
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kLiteralExpr.java
@@ -0,0 +1,24 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kLiteralExpr extends M68kExpr {
+
+ @Nullable
+ PsiElement getBinary();
+
+ @Nullable
+ PsiElement getDecimal();
+
+ @Nullable
+ PsiElement getHexadecimal();
+
+ @Nullable
+ PsiElement getOctal();
+
+ @Nullable
+ PsiElement getStringlit();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kLocalLabel.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kLocalLabel.java
new file mode 100644
index 0000000..ad3652a
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kLocalLabel.java
@@ -0,0 +1,16 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kLocalLabel extends PsiElement {
+
+ @NotNull
+ PsiElement getSymbol();
+
+ @Nullable
+ PsiElement getWhiteSpace();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kMacroCall.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kMacroCall.java
new file mode 100644
index 0000000..87129ec
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kMacroCall.java
@@ -0,0 +1,17 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public interface M68kMacroCall extends PsiElement {
+
+ @NotNull
+ List getExprList();
+
+ @NotNull
+ PsiElement getSymbol();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kOperandSize.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kOperandSize.java
new file mode 100644
index 0000000..5978b29
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kOperandSize.java
@@ -0,0 +1,15 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kOperandSize extends PsiElement {
+
+ @Nullable
+ PsiElement getOpsizeBs();
+
+ @Nullable
+ PsiElement getOpsizeWl();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kParenExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kParenExpr.java
new file mode 100644
index 0000000..059599b
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kParenExpr.java
@@ -0,0 +1,11 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kParenExpr extends M68kExpr {
+
+ @Nullable
+ M68kExpr getExpr();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kPreprocessorDirective.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kPreprocessorDirective.java
new file mode 100644
index 0000000..eb30179
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kPreprocessorDirective.java
@@ -0,0 +1,63 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public interface M68kPreprocessorDirective extends PsiElement {
+
+ @NotNull
+ List getExprList();
+
+ @Nullable
+ PsiElement getCnopTag();
+
+ @Nullable
+ PsiElement getElseTag();
+
+ @Nullable
+ PsiElement getEndcTag();
+
+ @Nullable
+ PsiElement getEndTag();
+
+ @Nullable
+ PsiElement getEvenTag();
+
+ @Nullable
+ PsiElement getFailTag();
+
+ @Nullable
+ PsiElement getIfTag();
+
+ @Nullable
+ PsiElement getIncbinTag();
+
+ @Nullable
+ PsiElement getIncludeTag();
+
+ @Nullable
+ PsiElement getMacroEndTag();
+
+ @Nullable
+ PsiElement getMacroTag();
+
+ @Nullable
+ PsiElement getReptEndTag();
+
+ @Nullable
+ PsiElement getReptTag();
+
+ @Nullable
+ PsiElement getSectionTag();
+
+ @Nullable
+ PsiElement getSymbol();
+
+ @Nullable
+ PsiElement getWhiteSpace();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kProgramCounterIndirectWithDisplacementNewAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kProgramCounterIndirectWithDisplacementNewAddressingMode.java
new file mode 100644
index 0000000..45db102
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kProgramCounterIndirectWithDisplacementNewAddressingMode.java
@@ -0,0 +1,15 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kProgramCounterIndirectWithDisplacementNewAddressingMode extends M68kAddressingMode {
+
+ @NotNull
+ M68kExpr getExpr();
+
+ @NotNull
+ PsiElement getPc();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kProgramCounterIndirectWithDisplacementOldAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kProgramCounterIndirectWithDisplacementOldAddressingMode.java
new file mode 100644
index 0000000..0825349
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kProgramCounterIndirectWithDisplacementOldAddressingMode.java
@@ -0,0 +1,15 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kProgramCounterIndirectWithDisplacementOldAddressingMode extends M68kAddressingMode {
+
+ @NotNull
+ M68kExpr getExpr();
+
+ @NotNull
+ PsiElement getPc();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kProgramCounterIndirectWithIndexNewAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kProgramCounterIndirectWithIndexNewAddressingMode.java
new file mode 100644
index 0000000..599b7c1
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kProgramCounterIndirectWithIndexNewAddressingMode.java
@@ -0,0 +1,22 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kProgramCounterIndirectWithIndexNewAddressingMode extends M68kAddressingMode {
+
+ @Nullable
+ M68kDataWidth getDataWidth();
+
+ @NotNull
+ M68kRegister getRegister();
+
+ @NotNull
+ M68kExpr getExpr();
+
+ @NotNull
+ PsiElement getPc();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kProgramCounterIndirectWithIndexOldAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kProgramCounterIndirectWithIndexOldAddressingMode.java
new file mode 100644
index 0000000..61cc965
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kProgramCounterIndirectWithIndexOldAddressingMode.java
@@ -0,0 +1,22 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kProgramCounterIndirectWithIndexOldAddressingMode extends M68kAddressingMode {
+
+ @Nullable
+ M68kDataWidth getDataWidth();
+
+ @NotNull
+ M68kRegister getRegister();
+
+ @NotNull
+ M68kExpr getExpr();
+
+ @NotNull
+ PsiElement getPc();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kRefExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kRefExpr.java
new file mode 100644
index 0000000..d8e32e9
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kRefExpr.java
@@ -0,0 +1,12 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kRefExpr extends M68kExpr {
+
+ @NotNull
+ PsiElement getSymbol();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kRegister.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kRegister.java
new file mode 100644
index 0000000..778d82b
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kRegister.java
@@ -0,0 +1,8 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+
+public interface M68kRegister extends PsiElement {
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kSpecialRegister.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kSpecialRegister.java
new file mode 100644
index 0000000..31bb5e0
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kSpecialRegister.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kSpecialRegister extends M68kRegister {
+
+ @Nullable
+ PsiElement getRegCcr();
+
+ @Nullable
+ PsiElement getRegSr();
+
+ @Nullable
+ PsiElement getRegUsp();
+
+ @Nullable
+ PsiElement getRegVbr();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kSpecialRegisterDirectAddressingMode.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kSpecialRegisterDirectAddressingMode.java
new file mode 100644
index 0000000..69806bb
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kSpecialRegisterDirectAddressingMode.java
@@ -0,0 +1,11 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.NotNull;
+
+public interface M68kSpecialRegisterDirectAddressingMode extends M68kAddressingMode {
+
+ @NotNull
+ M68kSpecialRegister getSpecialRegister();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kStatement.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kStatement.java
new file mode 100644
index 0000000..0d6ff32
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kStatement.java
@@ -0,0 +1,21 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kStatement extends PsiElement {
+
+ @Nullable
+ M68kAssignment getAssignment();
+
+ @Nullable
+ M68kLabel getLabel();
+
+ @Nullable
+ M68kPreprocessorDirective getPreprocessorDirective();
+
+ @Nullable
+ PsiElement getWhiteSpace();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kTypes.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kTypes.java
new file mode 100644
index 0000000..3b972c6
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kTypes.java
@@ -0,0 +1,215 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.tree.IElementType;
+import de.platon42.intellij.plugins.m68k.psi.impl.*;
+
+public interface M68kTypes {
+
+ IElementType ABSOLUTE_ADDRESS_ADDRESSING_MODE = new M68kElementType("ABSOLUTE_ADDRESS_ADDRESSING_MODE");
+ IElementType ADDRESSING_MODE = new M68kElementType("ADDRESSING_MODE");
+ IElementType ADDRESS_REGISTER = new M68kElementType("ADDRESS_REGISTER");
+ IElementType ADDRESS_REGISTER_DIRECT_ADDRESSING_MODE = new M68kElementType("ADDRESS_REGISTER_DIRECT_ADDRESSING_MODE");
+ IElementType ADDRESS_REGISTER_INDIRECT_ADDRESSING_MODE = new M68kElementType("ADDRESS_REGISTER_INDIRECT_ADDRESSING_MODE");
+ IElementType ADDRESS_REGISTER_INDIRECT_POST_INC_ADDRESSING_MODE = new M68kElementType("ADDRESS_REGISTER_INDIRECT_POST_INC_ADDRESSING_MODE");
+ IElementType ADDRESS_REGISTER_INDIRECT_PRE_DEC_ADDRESSING_MODE = new M68kElementType("ADDRESS_REGISTER_INDIRECT_PRE_DEC_ADDRESSING_MODE");
+ IElementType ADDRESS_REGISTER_INDIRECT_WITH_DISPLACEMENT_NEW_ADDRESSING_MODE = new M68kElementType("ADDRESS_REGISTER_INDIRECT_WITH_DISPLACEMENT_NEW_ADDRESSING_MODE");
+ IElementType ADDRESS_REGISTER_INDIRECT_WITH_DISPLACEMENT_OLD_ADDRESSING_MODE = new M68kElementType("ADDRESS_REGISTER_INDIRECT_WITH_DISPLACEMENT_OLD_ADDRESSING_MODE");
+ IElementType ADDRESS_REGISTER_INDIRECT_WITH_INDEX_NEW_ADDRESSING_MODE = new M68kElementType("ADDRESS_REGISTER_INDIRECT_WITH_INDEX_NEW_ADDRESSING_MODE");
+ IElementType ADDRESS_REGISTER_INDIRECT_WITH_INDEX_OLD_ADDRESSING_MODE = new M68kElementType("ADDRESS_REGISTER_INDIRECT_WITH_INDEX_OLD_ADDRESSING_MODE");
+ IElementType ADDRESS_SIZE = new M68kElementType("ADDRESS_SIZE");
+ IElementType ASM_INSTRUCTION = new M68kElementType("ASM_INSTRUCTION");
+ IElementType ASM_OP = new M68kElementType("ASM_OP");
+ IElementType ASM_OPERANDS = new M68kElementType("ASM_OPERANDS");
+ IElementType ASSIGNMENT = new M68kElementType("ASSIGNMENT");
+ IElementType BINARY_ADD_EXPR = new M68kElementType("BINARY_ADD_EXPR");
+ IElementType BINARY_BITWISE_AND_EXPR = new M68kElementType("BINARY_BITWISE_AND_EXPR");
+ IElementType BINARY_BITWISE_OR_EXPR = new M68kElementType("BINARY_BITWISE_OR_EXPR");
+ IElementType BINARY_BITWISE_XOR_EXPR = new M68kElementType("BINARY_BITWISE_XOR_EXPR");
+ IElementType BINARY_CMP_EQ_EXPR = new M68kElementType("BINARY_CMP_EQ_EXPR");
+ IElementType BINARY_CMP_GE_EXPR = new M68kElementType("BINARY_CMP_GE_EXPR");
+ IElementType BINARY_CMP_GT_EXPR = new M68kElementType("BINARY_CMP_GT_EXPR");
+ IElementType BINARY_CMP_LE_EXPR = new M68kElementType("BINARY_CMP_LE_EXPR");
+ IElementType BINARY_CMP_LT_EXPR = new M68kElementType("BINARY_CMP_LT_EXPR");
+ IElementType BINARY_CMP_NE_EXPR = new M68kElementType("BINARY_CMP_NE_EXPR");
+ IElementType BINARY_DIV_EXPR = new M68kElementType("BINARY_DIV_EXPR");
+ IElementType BINARY_LOGICAL_AND_EXPR = new M68kElementType("BINARY_LOGICAL_AND_EXPR");
+ IElementType BINARY_LOGICAL_OR_EXPR = new M68kElementType("BINARY_LOGICAL_OR_EXPR");
+ IElementType BINARY_MOD_EXPR = new M68kElementType("BINARY_MOD_EXPR");
+ IElementType BINARY_MUL_EXPR = new M68kElementType("BINARY_MUL_EXPR");
+ IElementType BINARY_SHIFT_L_EXPR = new M68kElementType("BINARY_SHIFT_L_EXPR");
+ IElementType BINARY_SHIFT_R_EXPR = new M68kElementType("BINARY_SHIFT_R_EXPR");
+ IElementType BINARY_SUB_EXPR = new M68kElementType("BINARY_SUB_EXPR");
+ IElementType DATA_REGISTER = new M68kElementType("DATA_REGISTER");
+ IElementType DATA_REGISTER_DIRECT_ADDRESSING_MODE = new M68kElementType("DATA_REGISTER_DIRECT_ADDRESSING_MODE");
+ IElementType DATA_WIDTH = new M68kElementType("DATA_WIDTH");
+ IElementType EXPR = new M68kElementType("EXPR");
+ IElementType GLOBAL_LABEL = new M68kElementType("GLOBAL_LABEL");
+ IElementType IMMEDIATE_DATA = new M68kElementType("IMMEDIATE_DATA");
+ IElementType LABEL = new M68kElementType("LABEL");
+ IElementType LITERAL_EXPR = new M68kElementType("LITERAL_EXPR");
+ IElementType LOCAL_LABEL = new M68kElementType("LOCAL_LABEL");
+ IElementType MACRO_CALL = new M68kElementType("MACRO_CALL");
+ IElementType OPERAND_SIZE = new M68kElementType("OPERAND_SIZE");
+ IElementType PAREN_EXPR = new M68kElementType("PAREN_EXPR");
+ IElementType PREPROCESSOR_DIRECTIVE = new M68kElementType("PREPROCESSOR_DIRECTIVE");
+ IElementType PROGRAM_COUNTER_INDIRECT_WITH_DISPLACEMENT_NEW_ADDRESSING_MODE = new M68kElementType("PROGRAM_COUNTER_INDIRECT_WITH_DISPLACEMENT_NEW_ADDRESSING_MODE");
+ IElementType PROGRAM_COUNTER_INDIRECT_WITH_DISPLACEMENT_OLD_ADDRESSING_MODE = new M68kElementType("PROGRAM_COUNTER_INDIRECT_WITH_DISPLACEMENT_OLD_ADDRESSING_MODE");
+ IElementType PROGRAM_COUNTER_INDIRECT_WITH_INDEX_NEW_ADDRESSING_MODE = new M68kElementType("PROGRAM_COUNTER_INDIRECT_WITH_INDEX_NEW_ADDRESSING_MODE");
+ IElementType PROGRAM_COUNTER_INDIRECT_WITH_INDEX_OLD_ADDRESSING_MODE = new M68kElementType("PROGRAM_COUNTER_INDIRECT_WITH_INDEX_OLD_ADDRESSING_MODE");
+ IElementType REF_EXPR = new M68kElementType("REF_EXPR");
+ IElementType REGISTER = new M68kElementType("REGISTER");
+ IElementType SPECIAL_REGISTER = new M68kElementType("SPECIAL_REGISTER");
+ IElementType SPECIAL_REGISTER_DIRECT_ADDRESSING_MODE = new M68kElementType("SPECIAL_REGISTER_DIRECT_ADDRESSING_MODE");
+ IElementType STATEMENT = new M68kElementType("STATEMENT");
+ IElementType UNARY_COMPL_EXPR = new M68kElementType("UNARY_COMPL_EXPR");
+ IElementType UNARY_MINUS_EXPR = new M68kElementType("UNARY_MINUS_EXPR");
+ IElementType UNARY_NOT_EXPR = new M68kElementType("UNARY_NOT_EXPR");
+ IElementType UNARY_PLUS_EXPR = new M68kElementType("UNARY_PLUS_EXPR");
+
+ IElementType AREG = new M68kTokenType("AREG");
+ IElementType BINARY = new M68kTokenType("BINARY");
+ IElementType CNOP_TAG = new M68kTokenType("CNOP_TAG");
+ IElementType COLON = new M68kTokenType(":");
+ IElementType COMMENT = new M68kTokenType("COMMENT");
+ IElementType DECIMAL = new M68kTokenType("DECIMAL");
+ IElementType DOLLAR = new M68kTokenType("$");
+ IElementType DOT = new M68kTokenType(".");
+ IElementType DREG = new M68kTokenType("DREG");
+ IElementType ELSE_TAG = new M68kTokenType("ELSE_TAG");
+ IElementType ENDC_TAG = new M68kTokenType("ENDC_TAG");
+ IElementType END_TAG = new M68kTokenType("END_TAG");
+ IElementType EOL = new M68kTokenType("EOL");
+ IElementType EQU = new M68kTokenType("EQU");
+ IElementType EVEN_TAG = new M68kTokenType("EVEN_TAG");
+ IElementType FAIL_TAG = new M68kTokenType("FAIL_TAG");
+ IElementType HASH = new M68kTokenType("#");
+ IElementType HEXADECIMAL = new M68kTokenType("HEXADECIMAL");
+ IElementType IF_TAG = new M68kTokenType("IF_TAG");
+ IElementType INCBIN_TAG = new M68kTokenType("INCBIN_TAG");
+ IElementType INCLUDE_TAG = new M68kTokenType("INCLUDE_TAG");
+ IElementType MACRO_END_TAG = new M68kTokenType("MACRO_END_TAG");
+ IElementType MACRO_TAG = new M68kTokenType("MACRO_TAG");
+ IElementType OCTAL = new M68kTokenType("OCTAL");
+ IElementType OPSIZE_BS = new M68kTokenType("OPSIZE_BS");
+ IElementType OPSIZE_WL = new M68kTokenType("OPSIZE_WL");
+ IElementType OP_AR_DIV = new M68kTokenType("/");
+ IElementType OP_AR_MOD = new M68kTokenType("%");
+ IElementType OP_AR_MUL = new M68kTokenType("*");
+ IElementType OP_AR_SHIFT_L = new M68kTokenType("<<");
+ IElementType OP_AR_SHIFT_R = new M68kTokenType(">>");
+ IElementType OP_ASSIGN = new M68kTokenType("=");
+ IElementType OP_BITWISE_AND = new M68kTokenType("&");
+ IElementType OP_BITWISE_OR = new M68kTokenType("|");
+ IElementType OP_BITWISE_XOR = new M68kTokenType("^");
+ IElementType OP_CMP_EQ = new M68kTokenType("==");
+ IElementType OP_CMP_GT = new M68kTokenType(">");
+ IElementType OP_CMP_GT_EQ = new M68kTokenType(">=");
+ IElementType OP_CMP_LT = new M68kTokenType("<");
+ IElementType OP_CMP_LT_EQ = new M68kTokenType("<=");
+ IElementType OP_CMP_NOT_EQ = new M68kTokenType("!=");
+ IElementType OP_CMP_NOT_EQ2 = new M68kTokenType("<>");
+ IElementType OP_LOGICAL_AND = new M68kTokenType("&&");
+ IElementType OP_LOGICAL_OR = new M68kTokenType("||");
+ IElementType OP_MINUS = new M68kTokenType("-");
+ IElementType OP_PLUS = new M68kTokenType("+");
+ IElementType OP_UNARY_COMPL = new M68kTokenType("~");
+ IElementType OP_UNARY_NOT = new M68kTokenType("!");
+ IElementType PC = new M68kTokenType("PC");
+ IElementType REG_CCR = new M68kTokenType("REG_CCR");
+ IElementType REG_SR = new M68kTokenType("REG_SR");
+ IElementType REG_USP = new M68kTokenType("REG_USP");
+ IElementType REG_VBR = new M68kTokenType("REG_VBR");
+ IElementType REPT_END_TAG = new M68kTokenType("REPT_END_TAG");
+ IElementType REPT_TAG = new M68kTokenType("REPT_TAG");
+ IElementType ROUND_L = new M68kTokenType("(");
+ IElementType ROUND_R = new M68kTokenType(")");
+ IElementType SECTION_TAG = new M68kTokenType("SECTION_TAG");
+ IElementType SEMICOLON = new M68kTokenType(";");
+ IElementType SEPARATOR = new M68kTokenType(",");
+ IElementType SQUARE_L = new M68kTokenType("[");
+ IElementType SQUARE_R = new M68kTokenType("]");
+ IElementType STRINGLIT = new M68kTokenType("STRINGLIT");
+ IElementType SYMBOL = new M68kTokenType("SYMBOL");
+ IElementType WHITE_SPACE = new M68kTokenType("WHITE_SPACE");
+
+ class Factory {
+ public static PsiElement createElement(ASTNode node) {
+ IElementType type = node.getElementType();
+ if (type == ABSOLUTE_ADDRESS_ADDRESSING_MODE) return new M68kAbsoluteAddressAddressingModeImpl(node);
+ else if (type == ADDRESS_REGISTER) return new M68kAddressRegisterImpl(node);
+ else if (type == ADDRESS_REGISTER_DIRECT_ADDRESSING_MODE)
+ return new M68kAddressRegisterDirectAddressingModeImpl(node);
+ else if (type == ADDRESS_REGISTER_INDIRECT_ADDRESSING_MODE)
+ return new M68kAddressRegisterIndirectAddressingModeImpl(node);
+ else if (type == ADDRESS_REGISTER_INDIRECT_POST_INC_ADDRESSING_MODE)
+ return new M68kAddressRegisterIndirectPostIncAddressingModeImpl(node);
+ else if (type == ADDRESS_REGISTER_INDIRECT_PRE_DEC_ADDRESSING_MODE)
+ return new M68kAddressRegisterIndirectPreDecAddressingModeImpl(node);
+ else if (type == ADDRESS_REGISTER_INDIRECT_WITH_DISPLACEMENT_NEW_ADDRESSING_MODE)
+ return new M68kAddressRegisterIndirectWithDisplacementNewAddressingModeImpl(node);
+ else if (type == ADDRESS_REGISTER_INDIRECT_WITH_DISPLACEMENT_OLD_ADDRESSING_MODE)
+ return new M68kAddressRegisterIndirectWithDisplacementOldAddressingModeImpl(node);
+ else if (type == ADDRESS_REGISTER_INDIRECT_WITH_INDEX_NEW_ADDRESSING_MODE)
+ return new M68kAddressRegisterIndirectWithIndexNewAddressingModeImpl(node);
+ else if (type == ADDRESS_REGISTER_INDIRECT_WITH_INDEX_OLD_ADDRESSING_MODE)
+ return new M68kAddressRegisterIndirectWithIndexOldAddressingModeImpl(node);
+ else if (type == ADDRESS_SIZE) return new M68kAddressSizeImpl(node);
+ else if (type == ASM_INSTRUCTION) return new M68kAsmInstructionImpl(node);
+ else if (type == ASM_OP) return new M68kAsmOpImpl(node);
+ else if (type == ASM_OPERANDS) return new M68kAsmOperandsImpl(node);
+ else if (type == ASSIGNMENT) return new M68kAssignmentImpl(node);
+ else if (type == BINARY_ADD_EXPR) return new M68kBinaryAddExprImpl(node);
+ else if (type == BINARY_BITWISE_AND_EXPR) return new M68kBinaryBitwiseAndExprImpl(node);
+ else if (type == BINARY_BITWISE_OR_EXPR) return new M68kBinaryBitwiseOrExprImpl(node);
+ else if (type == BINARY_BITWISE_XOR_EXPR) return new M68kBinaryBitwiseXorExprImpl(node);
+ else if (type == BINARY_CMP_EQ_EXPR) return new M68kBinaryCmpEqExprImpl(node);
+ else if (type == BINARY_CMP_GE_EXPR) return new M68kBinaryCmpGeExprImpl(node);
+ else if (type == BINARY_CMP_GT_EXPR) return new M68kBinaryCmpGtExprImpl(node);
+ else if (type == BINARY_CMP_LE_EXPR) return new M68kBinaryCmpLeExprImpl(node);
+ else if (type == BINARY_CMP_LT_EXPR) return new M68kBinaryCmpLtExprImpl(node);
+ else if (type == BINARY_CMP_NE_EXPR) return new M68kBinaryCmpNeExprImpl(node);
+ else if (type == BINARY_DIV_EXPR) return new M68kBinaryDivExprImpl(node);
+ else if (type == BINARY_LOGICAL_AND_EXPR) return new M68kBinaryLogicalAndExprImpl(node);
+ else if (type == BINARY_LOGICAL_OR_EXPR) return new M68kBinaryLogicalOrExprImpl(node);
+ else if (type == BINARY_MOD_EXPR) return new M68kBinaryModExprImpl(node);
+ else if (type == BINARY_MUL_EXPR) return new M68kBinaryMulExprImpl(node);
+ else if (type == BINARY_SHIFT_L_EXPR) return new M68kBinaryShiftLExprImpl(node);
+ else if (type == BINARY_SHIFT_R_EXPR) return new M68kBinaryShiftRExprImpl(node);
+ else if (type == BINARY_SUB_EXPR) return new M68kBinarySubExprImpl(node);
+ else if (type == DATA_REGISTER) return new M68kDataRegisterImpl(node);
+ else if (type == DATA_REGISTER_DIRECT_ADDRESSING_MODE)
+ return new M68kDataRegisterDirectAddressingModeImpl(node);
+ else if (type == DATA_WIDTH) return new M68kDataWidthImpl(node);
+ else if (type == GLOBAL_LABEL) return new M68kGlobalLabelImpl(node);
+ else if (type == IMMEDIATE_DATA) return new M68kImmediateDataImpl(node);
+ else if (type == LABEL) return new M68kLabelImpl(node);
+ else if (type == LITERAL_EXPR) return new M68kLiteralExprImpl(node);
+ else if (type == LOCAL_LABEL) return new M68kLocalLabelImpl(node);
+ else if (type == MACRO_CALL) return new M68kMacroCallImpl(node);
+ else if (type == OPERAND_SIZE) return new M68kOperandSizeImpl(node);
+ else if (type == PAREN_EXPR) return new M68kParenExprImpl(node);
+ else if (type == PREPROCESSOR_DIRECTIVE) return new M68kPreprocessorDirectiveImpl(node);
+ else if (type == PROGRAM_COUNTER_INDIRECT_WITH_DISPLACEMENT_NEW_ADDRESSING_MODE)
+ return new M68kProgramCounterIndirectWithDisplacementNewAddressingModeImpl(node);
+ else if (type == PROGRAM_COUNTER_INDIRECT_WITH_DISPLACEMENT_OLD_ADDRESSING_MODE)
+ return new M68kProgramCounterIndirectWithDisplacementOldAddressingModeImpl(node);
+ else if (type == PROGRAM_COUNTER_INDIRECT_WITH_INDEX_NEW_ADDRESSING_MODE)
+ return new M68kProgramCounterIndirectWithIndexNewAddressingModeImpl(node);
+ else if (type == PROGRAM_COUNTER_INDIRECT_WITH_INDEX_OLD_ADDRESSING_MODE)
+ return new M68kProgramCounterIndirectWithIndexOldAddressingModeImpl(node);
+ else if (type == REF_EXPR) return new M68kRefExprImpl(node);
+ else if (type == SPECIAL_REGISTER) return new M68kSpecialRegisterImpl(node);
+ else if (type == SPECIAL_REGISTER_DIRECT_ADDRESSING_MODE)
+ return new M68kSpecialRegisterDirectAddressingModeImpl(node);
+ else if (type == STATEMENT) return new M68kStatementImpl(node);
+ else if (type == UNARY_COMPL_EXPR) return new M68kUnaryComplExprImpl(node);
+ else if (type == UNARY_MINUS_EXPR) return new M68kUnaryMinusExprImpl(node);
+ else if (type == UNARY_NOT_EXPR) return new M68kUnaryNotExprImpl(node);
+ else if (type == UNARY_PLUS_EXPR) return new M68kUnaryPlusExprImpl(node);
+ throw new AssertionError("Unknown element type: " + type);
+ }
+ }
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kUnaryComplExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kUnaryComplExpr.java
new file mode 100644
index 0000000..cde760d
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kUnaryComplExpr.java
@@ -0,0 +1,11 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kUnaryComplExpr extends M68kExpr {
+
+ @Nullable
+ M68kExpr getExpr();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kUnaryMinusExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kUnaryMinusExpr.java
new file mode 100644
index 0000000..8c8baef
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kUnaryMinusExpr.java
@@ -0,0 +1,11 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kUnaryMinusExpr extends M68kExpr {
+
+ @Nullable
+ M68kExpr getExpr();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kUnaryNotExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kUnaryNotExpr.java
new file mode 100644
index 0000000..67db31d
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kUnaryNotExpr.java
@@ -0,0 +1,11 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kUnaryNotExpr extends M68kExpr {
+
+ @Nullable
+ M68kExpr getExpr();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kUnaryPlusExpr.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kUnaryPlusExpr.java
new file mode 100644
index 0000000..0f318ad
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kUnaryPlusExpr.java
@@ -0,0 +1,11 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import org.jetbrains.annotations.Nullable;
+
+public interface M68kUnaryPlusExpr extends M68kExpr {
+
+ @Nullable
+ M68kExpr getExpr();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kVisitor.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kVisitor.java
new file mode 100644
index 0000000..f30a285
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kVisitor.java
@@ -0,0 +1,254 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class M68kVisitor extends PsiElementVisitor {
+
+ public void visitAbsoluteAddressAddressingMode(@NotNull M68kAbsoluteAddressAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitAddressRegister(@NotNull M68kAddressRegister o) {
+ visitRegister(o);
+ }
+
+ public void visitAddressRegisterDirectAddressingMode(@NotNull M68kAddressRegisterDirectAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitAddressRegisterIndirectAddressingMode(@NotNull M68kAddressRegisterIndirectAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitAddressRegisterIndirectPostIncAddressingMode(@NotNull M68kAddressRegisterIndirectPostIncAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitAddressRegisterIndirectPreDecAddressingMode(@NotNull M68kAddressRegisterIndirectPreDecAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitAddressRegisterIndirectWithDisplacementNewAddressingMode(@NotNull M68kAddressRegisterIndirectWithDisplacementNewAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitAddressRegisterIndirectWithDisplacementOldAddressingMode(@NotNull M68kAddressRegisterIndirectWithDisplacementOldAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitAddressRegisterIndirectWithIndexNewAddressingMode(@NotNull M68kAddressRegisterIndirectWithIndexNewAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitAddressRegisterIndirectWithIndexOldAddressingMode(@NotNull M68kAddressRegisterIndirectWithIndexOldAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitAddressSize(@NotNull M68kAddressSize o) {
+ visitPsiElement(o);
+ }
+
+ public void visitAddressingMode(@NotNull M68kAddressingMode o) {
+ visitPsiElement(o);
+ }
+
+ public void visitAsmInstruction(@NotNull M68kAsmInstruction o) {
+ visitPsiElement(o);
+ }
+
+ public void visitAsmOp(@NotNull M68kAsmOp o) {
+ visitPsiElement(o);
+ }
+
+ public void visitAsmOperands(@NotNull M68kAsmOperands o) {
+ visitPsiElement(o);
+ }
+
+ public void visitAssignment(@NotNull M68kAssignment o) {
+ visitPsiElement(o);
+ }
+
+ public void visitDataRegister(@NotNull M68kDataRegister o) {
+ visitRegister(o);
+ }
+
+ public void visitDataRegisterDirectAddressingMode(@NotNull M68kDataRegisterDirectAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitDataWidth(@NotNull M68kDataWidth o) {
+ visitPsiElement(o);
+ }
+
+ public void visitGlobalLabel(@NotNull M68kGlobalLabel o) {
+ visitPsiElement(o);
+ }
+
+ public void visitImmediateData(@NotNull M68kImmediateData o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitLabel(@NotNull M68kLabel o) {
+ visitPsiElement(o);
+ }
+
+ public void visitLocalLabel(@NotNull M68kLocalLabel o) {
+ visitPsiElement(o);
+ }
+
+ public void visitMacroCall(@NotNull M68kMacroCall o) {
+ visitPsiElement(o);
+ }
+
+ public void visitOperandSize(@NotNull M68kOperandSize o) {
+ visitPsiElement(o);
+ }
+
+ public void visitPreprocessorDirective(@NotNull M68kPreprocessorDirective o) {
+ visitPsiElement(o);
+ }
+
+ public void visitProgramCounterIndirectWithDisplacementNewAddressingMode(@NotNull M68kProgramCounterIndirectWithDisplacementNewAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitProgramCounterIndirectWithDisplacementOldAddressingMode(@NotNull M68kProgramCounterIndirectWithDisplacementOldAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitProgramCounterIndirectWithIndexNewAddressingMode(@NotNull M68kProgramCounterIndirectWithIndexNewAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitProgramCounterIndirectWithIndexOldAddressingMode(@NotNull M68kProgramCounterIndirectWithIndexOldAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitRegister(@NotNull M68kRegister o) {
+ visitPsiElement(o);
+ }
+
+ public void visitSpecialRegister(@NotNull M68kSpecialRegister o) {
+ visitRegister(o);
+ }
+
+ public void visitSpecialRegisterDirectAddressingMode(@NotNull M68kSpecialRegisterDirectAddressingMode o) {
+ visitAddressingMode(o);
+ }
+
+ public void visitBinaryAddExpr(@NotNull M68kBinaryAddExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryBitwiseAndExpr(@NotNull M68kBinaryBitwiseAndExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryBitwiseOrExpr(@NotNull M68kBinaryBitwiseOrExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryBitwiseXorExpr(@NotNull M68kBinaryBitwiseXorExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryCmpEqExpr(@NotNull M68kBinaryCmpEqExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryCmpGeExpr(@NotNull M68kBinaryCmpGeExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryCmpGtExpr(@NotNull M68kBinaryCmpGtExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryCmpLeExpr(@NotNull M68kBinaryCmpLeExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryCmpLtExpr(@NotNull M68kBinaryCmpLtExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryCmpNeExpr(@NotNull M68kBinaryCmpNeExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryDivExpr(@NotNull M68kBinaryDivExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryLogicalAndExpr(@NotNull M68kBinaryLogicalAndExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryLogicalOrExpr(@NotNull M68kBinaryLogicalOrExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryModExpr(@NotNull M68kBinaryModExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryMulExpr(@NotNull M68kBinaryMulExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryShiftLExpr(@NotNull M68kBinaryShiftLExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinaryShiftRExpr(@NotNull M68kBinaryShiftRExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitBinarySubExpr(@NotNull M68kBinarySubExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitExpr(@NotNull M68kExpr o) {
+ visitPsiElement(o);
+ }
+
+ public void visitLiteralExpr(@NotNull M68kLiteralExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitParenExpr(@NotNull M68kParenExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitRefExpr(@NotNull M68kRefExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitStatement(@NotNull M68kStatement o) {
+ visitPsiElement(o);
+ }
+
+ public void visitUnaryComplExpr(@NotNull M68kUnaryComplExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitUnaryMinusExpr(@NotNull M68kUnaryMinusExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitUnaryNotExpr(@NotNull M68kUnaryNotExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitUnaryPlusExpr(@NotNull M68kUnaryPlusExpr o) {
+ visitExpr(o);
+ }
+
+ public void visitPsiElement(@NotNull PsiElement o) {
+ visitElement(o);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAbsoluteAddressAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAbsoluteAddressAddressingModeImpl.java
new file mode 100644
index 0000000..15fd252
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAbsoluteAddressAddressingModeImpl.java
@@ -0,0 +1,42 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kAbsoluteAddressAddressingMode;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressSize;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class M68kAbsoluteAddressAddressingModeImpl extends M68kAddressingModeImpl implements M68kAbsoluteAddressAddressingMode {
+
+ public M68kAbsoluteAddressAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAbsoluteAddressAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public M68kAddressSize getAddressSize() {
+ return findChildByClass(M68kAddressSize.class);
+ }
+
+ @Override
+ @NotNull
+ public M68kExpr getExpr() {
+ return findNotNullChildByClass(M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterDirectAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterDirectAddressingModeImpl.java
new file mode 100644
index 0000000..fc23a66
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterDirectAddressingModeImpl.java
@@ -0,0 +1,34 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressRegister;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressRegisterDirectAddressingMode;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class M68kAddressRegisterDirectAddressingModeImpl extends M68kAddressingModeImpl implements M68kAddressRegisterDirectAddressingMode {
+
+ public M68kAddressRegisterDirectAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAddressRegisterDirectAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kAddressRegister getAddressRegister() {
+ return findNotNullChildByClass(M68kAddressRegister.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterImpl.java
new file mode 100644
index 0000000..e438cec
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterImpl.java
@@ -0,0 +1,36 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressRegister;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.AREG;
+
+public class M68kAddressRegisterImpl extends M68kRegisterImpl implements M68kAddressRegister {
+
+ public M68kAddressRegisterImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAddressRegister(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getAreg() {
+ return findNotNullChildByType(AREG);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectAddressingModeImpl.java
new file mode 100644
index 0000000..660c5a6
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectAddressingModeImpl.java
@@ -0,0 +1,34 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressRegister;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressRegisterIndirectAddressingMode;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class M68kAddressRegisterIndirectAddressingModeImpl extends M68kAddressingModeImpl implements M68kAddressRegisterIndirectAddressingMode {
+
+ public M68kAddressRegisterIndirectAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAddressRegisterIndirectAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kAddressRegister getAddressRegister() {
+ return findNotNullChildByClass(M68kAddressRegister.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectPostIncAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectPostIncAddressingModeImpl.java
new file mode 100644
index 0000000..6ef45a9
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectPostIncAddressingModeImpl.java
@@ -0,0 +1,34 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressRegister;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressRegisterIndirectPostIncAddressingMode;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class M68kAddressRegisterIndirectPostIncAddressingModeImpl extends M68kAddressingModeImpl implements M68kAddressRegisterIndirectPostIncAddressingMode {
+
+ public M68kAddressRegisterIndirectPostIncAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAddressRegisterIndirectPostIncAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kAddressRegister getAddressRegister() {
+ return findNotNullChildByClass(M68kAddressRegister.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectPreDecAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectPreDecAddressingModeImpl.java
new file mode 100644
index 0000000..506a01f
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectPreDecAddressingModeImpl.java
@@ -0,0 +1,34 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressRegister;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressRegisterIndirectPreDecAddressingMode;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class M68kAddressRegisterIndirectPreDecAddressingModeImpl extends M68kAddressingModeImpl implements M68kAddressRegisterIndirectPreDecAddressingMode {
+
+ public M68kAddressRegisterIndirectPreDecAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAddressRegisterIndirectPreDecAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kAddressRegister getAddressRegister() {
+ return findNotNullChildByClass(M68kAddressRegister.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectWithDisplacementNewAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectWithDisplacementNewAddressingModeImpl.java
new file mode 100644
index 0000000..9591c42
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectWithDisplacementNewAddressingModeImpl.java
@@ -0,0 +1,41 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressRegister;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressRegisterIndirectWithDisplacementNewAddressingMode;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class M68kAddressRegisterIndirectWithDisplacementNewAddressingModeImpl extends M68kAddressingModeImpl implements M68kAddressRegisterIndirectWithDisplacementNewAddressingMode {
+
+ public M68kAddressRegisterIndirectWithDisplacementNewAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAddressRegisterIndirectWithDisplacementNewAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kAddressRegister getAddressRegister() {
+ return findNotNullChildByClass(M68kAddressRegister.class);
+ }
+
+ @Override
+ @NotNull
+ public M68kExpr getExpr() {
+ return findNotNullChildByClass(M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectWithDisplacementOldAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectWithDisplacementOldAddressingModeImpl.java
new file mode 100644
index 0000000..6d0669e
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectWithDisplacementOldAddressingModeImpl.java
@@ -0,0 +1,41 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressRegister;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressRegisterIndirectWithDisplacementOldAddressingMode;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class M68kAddressRegisterIndirectWithDisplacementOldAddressingModeImpl extends M68kAddressingModeImpl implements M68kAddressRegisterIndirectWithDisplacementOldAddressingMode {
+
+ public M68kAddressRegisterIndirectWithDisplacementOldAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAddressRegisterIndirectWithDisplacementOldAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kAddressRegister getAddressRegister() {
+ return findNotNullChildByClass(M68kAddressRegister.class);
+ }
+
+ @Override
+ @NotNull
+ public M68kExpr getExpr() {
+ return findNotNullChildByClass(M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectWithIndexNewAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectWithIndexNewAddressingModeImpl.java
new file mode 100644
index 0000000..9a88b92
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectWithIndexNewAddressingModeImpl.java
@@ -0,0 +1,51 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.*;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class M68kAddressRegisterIndirectWithIndexNewAddressingModeImpl extends M68kAddressingModeImpl implements M68kAddressRegisterIndirectWithIndexNewAddressingMode {
+
+ public M68kAddressRegisterIndirectWithIndexNewAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAddressRegisterIndirectWithIndexNewAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kAddressRegister getAddressRegister() {
+ return findNotNullChildByClass(M68kAddressRegister.class);
+ }
+
+ @Override
+ @Nullable
+ public M68kDataWidth getDataWidth() {
+ return findChildByClass(M68kDataWidth.class);
+ }
+
+ @Override
+ @NotNull
+ public M68kRegister getRegister() {
+ return findNotNullChildByClass(M68kRegister.class);
+ }
+
+ @Override
+ @NotNull
+ public M68kExpr getExpr() {
+ return findNotNullChildByClass(M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectWithIndexOldAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectWithIndexOldAddressingModeImpl.java
new file mode 100644
index 0000000..e6ac4c8
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressRegisterIndirectWithIndexOldAddressingModeImpl.java
@@ -0,0 +1,51 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.*;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class M68kAddressRegisterIndirectWithIndexOldAddressingModeImpl extends M68kAddressingModeImpl implements M68kAddressRegisterIndirectWithIndexOldAddressingMode {
+
+ public M68kAddressRegisterIndirectWithIndexOldAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAddressRegisterIndirectWithIndexOldAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kAddressRegister getAddressRegister() {
+ return findNotNullChildByClass(M68kAddressRegister.class);
+ }
+
+ @Override
+ @Nullable
+ public M68kDataWidth getDataWidth() {
+ return findChildByClass(M68kDataWidth.class);
+ }
+
+ @Override
+ @NotNull
+ public M68kRegister getRegister() {
+ return findNotNullChildByClass(M68kRegister.class);
+ }
+
+ @Override
+ @NotNull
+ public M68kExpr getExpr() {
+ return findNotNullChildByClass(M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressSizeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressSizeImpl.java
new file mode 100644
index 0000000..752bd4b
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressSizeImpl.java
@@ -0,0 +1,36 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressSize;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.OPSIZE_WL;
+
+public class M68kAddressSizeImpl extends ASTWrapperPsiElement implements M68kAddressSize {
+
+ public M68kAddressSizeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAddressSize(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getOpsizeWl() {
+ return findNotNullChildByType(OPSIZE_WL);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressingModeImpl.java
new file mode 100644
index 0000000..814526d
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAddressingModeImpl.java
@@ -0,0 +1,27 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressingMode;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public abstract class M68kAddressingModeImpl extends ASTWrapperPsiElement implements M68kAddressingMode {
+
+ public M68kAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAsmInstructionImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAsmInstructionImpl.java
new file mode 100644
index 0000000..896409c
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAsmInstructionImpl.java
@@ -0,0 +1,51 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kAsmInstruction;
+import de.platon42.intellij.plugins.m68k.psi.M68kAsmOp;
+import de.platon42.intellij.plugins.m68k.psi.M68kAsmOperands;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.WHITE_SPACE;
+
+public class M68kAsmInstructionImpl extends ASTWrapperPsiElement implements M68kAsmInstruction {
+
+ public M68kAsmInstructionImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAsmInstruction(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kAsmOp getAsmOp() {
+ return findNotNullChildByClass(M68kAsmOp.class);
+ }
+
+ @Override
+ @Nullable
+ public M68kAsmOperands getAsmOperands() {
+ return findChildByClass(M68kAsmOperands.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getWhiteSpace() {
+ return findChildByType(WHITE_SPACE);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAsmOpImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAsmOpImpl.java
new file mode 100644
index 0000000..8b2bee1
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAsmOpImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kAsmOp;
+import de.platon42.intellij.plugins.m68k.psi.M68kOperandSize;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.SYMBOL;
+
+public class M68kAsmOpImpl extends ASTWrapperPsiElement implements M68kAsmOp {
+
+ public M68kAsmOpImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAsmOp(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public M68kOperandSize getOperandSize() {
+ return findChildByClass(M68kOperandSize.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getSymbol() {
+ return findNotNullChildByType(SYMBOL);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAsmOperandsImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAsmOperandsImpl.java
new file mode 100644
index 0000000..031d76f
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAsmOperandsImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kAddressingMode;
+import de.platon42.intellij.plugins.m68k.psi.M68kAsmOperands;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kAsmOperandsImpl extends ASTWrapperPsiElement implements M68kAsmOperands {
+
+ public M68kAsmOperandsImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAsmOperands(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getAddressingModeList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kAddressingMode.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAssignmentImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAssignmentImpl.java
new file mode 100644
index 0000000..3d9328b
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kAssignmentImpl.java
@@ -0,0 +1,51 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kAssignment;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.EQU;
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.SYMBOL;
+
+public class M68kAssignmentImpl extends ASTWrapperPsiElement implements M68kAssignment {
+
+ public M68kAssignmentImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitAssignment(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kExpr getExpr() {
+ return findNotNullChildByClass(M68kExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getEqu() {
+ return findChildByType(EQU);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getSymbol() {
+ return findNotNullChildByType(SYMBOL);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryAddExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryAddExprImpl.java
new file mode 100644
index 0000000..5fbdbde
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryAddExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryAddExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryAddExprImpl extends M68kExprImpl implements M68kBinaryAddExpr {
+
+ public M68kBinaryAddExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryAddExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryBitwiseAndExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryBitwiseAndExprImpl.java
new file mode 100644
index 0000000..9af51c0
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryBitwiseAndExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryBitwiseAndExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryBitwiseAndExprImpl extends M68kExprImpl implements M68kBinaryBitwiseAndExpr {
+
+ public M68kBinaryBitwiseAndExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryBitwiseAndExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryBitwiseOrExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryBitwiseOrExprImpl.java
new file mode 100644
index 0000000..7100dc4
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryBitwiseOrExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryBitwiseOrExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryBitwiseOrExprImpl extends M68kExprImpl implements M68kBinaryBitwiseOrExpr {
+
+ public M68kBinaryBitwiseOrExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryBitwiseOrExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryBitwiseXorExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryBitwiseXorExprImpl.java
new file mode 100644
index 0000000..1d41475
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryBitwiseXorExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryBitwiseXorExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryBitwiseXorExprImpl extends M68kExprImpl implements M68kBinaryBitwiseXorExpr {
+
+ public M68kBinaryBitwiseXorExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryBitwiseXorExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpEqExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpEqExprImpl.java
new file mode 100644
index 0000000..a826096
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpEqExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryCmpEqExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryCmpEqExprImpl extends M68kExprImpl implements M68kBinaryCmpEqExpr {
+
+ public M68kBinaryCmpEqExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryCmpEqExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpGeExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpGeExprImpl.java
new file mode 100644
index 0000000..2fb4695
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpGeExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryCmpGeExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryCmpGeExprImpl extends M68kExprImpl implements M68kBinaryCmpGeExpr {
+
+ public M68kBinaryCmpGeExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryCmpGeExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpGtExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpGtExprImpl.java
new file mode 100644
index 0000000..b8daa37
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpGtExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryCmpGtExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryCmpGtExprImpl extends M68kExprImpl implements M68kBinaryCmpGtExpr {
+
+ public M68kBinaryCmpGtExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryCmpGtExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpLeExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpLeExprImpl.java
new file mode 100644
index 0000000..4c09b39
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpLeExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryCmpLeExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryCmpLeExprImpl extends M68kExprImpl implements M68kBinaryCmpLeExpr {
+
+ public M68kBinaryCmpLeExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryCmpLeExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpLtExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpLtExprImpl.java
new file mode 100644
index 0000000..305c51c
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpLtExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryCmpLtExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryCmpLtExprImpl extends M68kExprImpl implements M68kBinaryCmpLtExpr {
+
+ public M68kBinaryCmpLtExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryCmpLtExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpNeExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpNeExprImpl.java
new file mode 100644
index 0000000..831f0d2
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryCmpNeExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryCmpNeExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryCmpNeExprImpl extends M68kExprImpl implements M68kBinaryCmpNeExpr {
+
+ public M68kBinaryCmpNeExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryCmpNeExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryDivExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryDivExprImpl.java
new file mode 100644
index 0000000..1251cc3
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryDivExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryDivExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryDivExprImpl extends M68kExprImpl implements M68kBinaryDivExpr {
+
+ public M68kBinaryDivExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryDivExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryLogicalAndExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryLogicalAndExprImpl.java
new file mode 100644
index 0000000..93e8fad
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryLogicalAndExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryLogicalAndExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryLogicalAndExprImpl extends M68kExprImpl implements M68kBinaryLogicalAndExpr {
+
+ public M68kBinaryLogicalAndExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryLogicalAndExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryLogicalOrExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryLogicalOrExprImpl.java
new file mode 100644
index 0000000..9427366
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryLogicalOrExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryLogicalOrExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryLogicalOrExprImpl extends M68kExprImpl implements M68kBinaryLogicalOrExpr {
+
+ public M68kBinaryLogicalOrExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryLogicalOrExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryModExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryModExprImpl.java
new file mode 100644
index 0000000..4ade531
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryModExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryModExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryModExprImpl extends M68kExprImpl implements M68kBinaryModExpr {
+
+ public M68kBinaryModExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryModExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryMulExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryMulExprImpl.java
new file mode 100644
index 0000000..e5a3c16
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryMulExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryMulExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryMulExprImpl extends M68kExprImpl implements M68kBinaryMulExpr {
+
+ public M68kBinaryMulExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryMulExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryShiftLExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryShiftLExprImpl.java
new file mode 100644
index 0000000..8c2f74f
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryShiftLExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryShiftLExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryShiftLExprImpl extends M68kExprImpl implements M68kBinaryShiftLExpr {
+
+ public M68kBinaryShiftLExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryShiftLExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryShiftRExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryShiftRExprImpl.java
new file mode 100644
index 0000000..5f1cb73
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinaryShiftRExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinaryShiftRExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinaryShiftRExprImpl extends M68kExprImpl implements M68kBinaryShiftRExpr {
+
+ public M68kBinaryShiftRExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinaryShiftRExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinarySubExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinarySubExprImpl.java
new file mode 100644
index 0000000..053d370
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kBinarySubExprImpl.java
@@ -0,0 +1,37 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kBinarySubExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kBinarySubExprImpl extends M68kExprImpl implements M68kBinarySubExpr {
+
+ public M68kBinarySubExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitBinarySubExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kDataRegisterDirectAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kDataRegisterDirectAddressingModeImpl.java
new file mode 100644
index 0000000..e40d318
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kDataRegisterDirectAddressingModeImpl.java
@@ -0,0 +1,34 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kDataRegister;
+import de.platon42.intellij.plugins.m68k.psi.M68kDataRegisterDirectAddressingMode;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class M68kDataRegisterDirectAddressingModeImpl extends M68kAddressingModeImpl implements M68kDataRegisterDirectAddressingMode {
+
+ public M68kDataRegisterDirectAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitDataRegisterDirectAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kDataRegister getDataRegister() {
+ return findNotNullChildByClass(M68kDataRegister.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kDataRegisterImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kDataRegisterImpl.java
new file mode 100644
index 0000000..2799a30
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kDataRegisterImpl.java
@@ -0,0 +1,36 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kDataRegister;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.DREG;
+
+public class M68kDataRegisterImpl extends M68kRegisterImpl implements M68kDataRegister {
+
+ public M68kDataRegisterImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitDataRegister(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getDreg() {
+ return findNotNullChildByType(DREG);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kDataWidthImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kDataWidthImpl.java
new file mode 100644
index 0000000..667d934
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kDataWidthImpl.java
@@ -0,0 +1,36 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kDataWidth;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.OPSIZE_WL;
+
+public class M68kDataWidthImpl extends ASTWrapperPsiElement implements M68kDataWidth {
+
+ public M68kDataWidthImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitDataWidth(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getOpsizeWl() {
+ return findNotNullChildByType(OPSIZE_WL);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kExprImpl.java
new file mode 100644
index 0000000..3d663fc
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kExprImpl.java
@@ -0,0 +1,27 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public abstract class M68kExprImpl extends ASTWrapperPsiElement implements M68kExpr {
+
+ public M68kExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kGlobalLabelImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kGlobalLabelImpl.java
new file mode 100644
index 0000000..45ffb8a
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kGlobalLabelImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kGlobalLabel;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.SYMBOL;
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.WHITE_SPACE;
+
+public class M68kGlobalLabelImpl extends ASTWrapperPsiElement implements M68kGlobalLabel {
+
+ public M68kGlobalLabelImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitGlobalLabel(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getSymbol() {
+ return findNotNullChildByType(SYMBOL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getWhiteSpace() {
+ return findChildByType(WHITE_SPACE);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kImmediateDataImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kImmediateDataImpl.java
new file mode 100644
index 0000000..41e97f3
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kImmediateDataImpl.java
@@ -0,0 +1,34 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kImmediateData;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class M68kImmediateDataImpl extends M68kAddressingModeImpl implements M68kImmediateData {
+
+ public M68kImmediateDataImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitImmediateData(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kExpr getExpr() {
+ return findNotNullChildByClass(M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kLabelImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kLabelImpl.java
new file mode 100644
index 0000000..0ee4b60
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kLabelImpl.java
@@ -0,0 +1,42 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kGlobalLabel;
+import de.platon42.intellij.plugins.m68k.psi.M68kLabel;
+import de.platon42.intellij.plugins.m68k.psi.M68kLocalLabel;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class M68kLabelImpl extends ASTWrapperPsiElement implements M68kLabel {
+
+ public M68kLabelImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitLabel(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public M68kGlobalLabel getGlobalLabel() {
+ return findChildByClass(M68kGlobalLabel.class);
+ }
+
+ @Override
+ @Nullable
+ public M68kLocalLabel getLocalLabel() {
+ return findChildByClass(M68kLocalLabel.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kLiteralExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kLiteralExprImpl.java
new file mode 100644
index 0000000..0bf6bc8
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kLiteralExprImpl.java
@@ -0,0 +1,61 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kLiteralExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.*;
+
+public class M68kLiteralExprImpl extends M68kExprImpl implements M68kLiteralExpr {
+
+ public M68kLiteralExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitLiteralExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getBinary() {
+ return findChildByType(BINARY);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getDecimal() {
+ return findChildByType(DECIMAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getHexadecimal() {
+ return findChildByType(HEXADECIMAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getOctal() {
+ return findChildByType(OCTAL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getStringlit() {
+ return findChildByType(STRINGLIT);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kLocalLabelImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kLocalLabelImpl.java
new file mode 100644
index 0000000..4c9ed60
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kLocalLabelImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kLocalLabel;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.SYMBOL;
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.WHITE_SPACE;
+
+public class M68kLocalLabelImpl extends ASTWrapperPsiElement implements M68kLocalLabel {
+
+ public M68kLocalLabelImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitLocalLabel(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getSymbol() {
+ return findNotNullChildByType(SYMBOL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getWhiteSpace() {
+ return findChildByType(WHITE_SPACE);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kMacroCallImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kMacroCallImpl.java
new file mode 100644
index 0000000..f6f4b28
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kMacroCallImpl.java
@@ -0,0 +1,46 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kMacroCall;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.SYMBOL;
+
+public class M68kMacroCallImpl extends ASTWrapperPsiElement implements M68kMacroCall {
+
+ public M68kMacroCallImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitMacroCall(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getSymbol() {
+ return findNotNullChildByType(SYMBOL);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kOperandSizeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kOperandSizeImpl.java
new file mode 100644
index 0000000..1bbcfd9
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kOperandSizeImpl.java
@@ -0,0 +1,44 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kOperandSize;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.OPSIZE_BS;
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.OPSIZE_WL;
+
+public class M68kOperandSizeImpl extends ASTWrapperPsiElement implements M68kOperandSize {
+
+ public M68kOperandSizeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitOperandSize(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getOpsizeBs() {
+ return findChildByType(OPSIZE_BS);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getOpsizeWl() {
+ return findChildByType(OPSIZE_WL);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kParenExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kParenExprImpl.java
new file mode 100644
index 0000000..5b33c4f
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kParenExprImpl.java
@@ -0,0 +1,35 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kParenExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class M68kParenExprImpl extends M68kExprImpl implements M68kParenExpr {
+
+ public M68kParenExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitParenExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public M68kExpr getExpr() {
+ return findChildByClass(M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kPreprocessorDirectiveImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kPreprocessorDirectiveImpl.java
new file mode 100644
index 0000000..9a7648c
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kPreprocessorDirectiveImpl.java
@@ -0,0 +1,137 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kPreprocessorDirective;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.*;
+
+public class M68kPreprocessorDirectiveImpl extends ASTWrapperPsiElement implements M68kPreprocessorDirective {
+
+ public M68kPreprocessorDirectiveImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitPreprocessorDirective(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public List getExprList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kExpr.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getCnopTag() {
+ return findChildByType(CNOP_TAG);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getElseTag() {
+ return findChildByType(ELSE_TAG);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getEndcTag() {
+ return findChildByType(ENDC_TAG);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getEndTag() {
+ return findChildByType(END_TAG);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getEvenTag() {
+ return findChildByType(EVEN_TAG);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getFailTag() {
+ return findChildByType(FAIL_TAG);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getIfTag() {
+ return findChildByType(IF_TAG);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getIncbinTag() {
+ return findChildByType(INCBIN_TAG);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getIncludeTag() {
+ return findChildByType(INCLUDE_TAG);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getMacroEndTag() {
+ return findChildByType(MACRO_END_TAG);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getMacroTag() {
+ return findChildByType(MACRO_TAG);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getReptEndTag() {
+ return findChildByType(REPT_END_TAG);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getReptTag() {
+ return findChildByType(REPT_TAG);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getSectionTag() {
+ return findChildByType(SECTION_TAG);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getSymbol() {
+ return findChildByType(SYMBOL);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getWhiteSpace() {
+ return findChildByType(WHITE_SPACE);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kProgramCounterIndirectWithDisplacementNewAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kProgramCounterIndirectWithDisplacementNewAddressingModeImpl.java
new file mode 100644
index 0000000..766e81d
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kProgramCounterIndirectWithDisplacementNewAddressingModeImpl.java
@@ -0,0 +1,43 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kProgramCounterIndirectWithDisplacementNewAddressingMode;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.PC;
+
+public class M68kProgramCounterIndirectWithDisplacementNewAddressingModeImpl extends M68kAddressingModeImpl implements M68kProgramCounterIndirectWithDisplacementNewAddressingMode {
+
+ public M68kProgramCounterIndirectWithDisplacementNewAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitProgramCounterIndirectWithDisplacementNewAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kExpr getExpr() {
+ return findNotNullChildByClass(M68kExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getPc() {
+ return findNotNullChildByType(PC);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kProgramCounterIndirectWithDisplacementOldAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kProgramCounterIndirectWithDisplacementOldAddressingModeImpl.java
new file mode 100644
index 0000000..78f8f14
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kProgramCounterIndirectWithDisplacementOldAddressingModeImpl.java
@@ -0,0 +1,43 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kProgramCounterIndirectWithDisplacementOldAddressingMode;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.PC;
+
+public class M68kProgramCounterIndirectWithDisplacementOldAddressingModeImpl extends M68kAddressingModeImpl implements M68kProgramCounterIndirectWithDisplacementOldAddressingMode {
+
+ public M68kProgramCounterIndirectWithDisplacementOldAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitProgramCounterIndirectWithDisplacementOldAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kExpr getExpr() {
+ return findNotNullChildByClass(M68kExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getPc() {
+ return findNotNullChildByType(PC);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kProgramCounterIndirectWithIndexNewAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kProgramCounterIndirectWithIndexNewAddressingModeImpl.java
new file mode 100644
index 0000000..38a22ca
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kProgramCounterIndirectWithIndexNewAddressingModeImpl.java
@@ -0,0 +1,54 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.*;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.PC;
+
+public class M68kProgramCounterIndirectWithIndexNewAddressingModeImpl extends M68kAddressingModeImpl implements M68kProgramCounterIndirectWithIndexNewAddressingMode {
+
+ public M68kProgramCounterIndirectWithIndexNewAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitProgramCounterIndirectWithIndexNewAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public M68kDataWidth getDataWidth() {
+ return findChildByClass(M68kDataWidth.class);
+ }
+
+ @Override
+ @NotNull
+ public M68kRegister getRegister() {
+ return findNotNullChildByClass(M68kRegister.class);
+ }
+
+ @Override
+ @NotNull
+ public M68kExpr getExpr() {
+ return findNotNullChildByClass(M68kExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getPc() {
+ return findNotNullChildByType(PC);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kProgramCounterIndirectWithIndexOldAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kProgramCounterIndirectWithIndexOldAddressingModeImpl.java
new file mode 100644
index 0000000..1d19813
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kProgramCounterIndirectWithIndexOldAddressingModeImpl.java
@@ -0,0 +1,54 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.*;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.PC;
+
+public class M68kProgramCounterIndirectWithIndexOldAddressingModeImpl extends M68kAddressingModeImpl implements M68kProgramCounterIndirectWithIndexOldAddressingMode {
+
+ public M68kProgramCounterIndirectWithIndexOldAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitProgramCounterIndirectWithIndexOldAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public M68kDataWidth getDataWidth() {
+ return findChildByClass(M68kDataWidth.class);
+ }
+
+ @Override
+ @NotNull
+ public M68kRegister getRegister() {
+ return findNotNullChildByClass(M68kRegister.class);
+ }
+
+ @Override
+ @NotNull
+ public M68kExpr getExpr() {
+ return findNotNullChildByClass(M68kExpr.class);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getPc() {
+ return findNotNullChildByType(PC);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kRefExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kRefExprImpl.java
new file mode 100644
index 0000000..10c6d96
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kRefExprImpl.java
@@ -0,0 +1,36 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kRefExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.SYMBOL;
+
+public class M68kRefExprImpl extends M68kExprImpl implements M68kRefExpr {
+
+ public M68kRefExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitRefExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public PsiElement getSymbol() {
+ return findNotNullChildByType(SYMBOL);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kRegisterImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kRegisterImpl.java
new file mode 100644
index 0000000..b8e40dd
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kRegisterImpl.java
@@ -0,0 +1,27 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kRegister;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public abstract class M68kRegisterImpl extends ASTWrapperPsiElement implements M68kRegister {
+
+ public M68kRegisterImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitRegister(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kSpecialRegisterDirectAddressingModeImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kSpecialRegisterDirectAddressingModeImpl.java
new file mode 100644
index 0000000..8f749be
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kSpecialRegisterDirectAddressingModeImpl.java
@@ -0,0 +1,34 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kSpecialRegister;
+import de.platon42.intellij.plugins.m68k.psi.M68kSpecialRegisterDirectAddressingMode;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class M68kSpecialRegisterDirectAddressingModeImpl extends M68kAddressingModeImpl implements M68kSpecialRegisterDirectAddressingMode {
+
+ public M68kSpecialRegisterDirectAddressingModeImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitSpecialRegisterDirectAddressingMode(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kSpecialRegister getSpecialRegister() {
+ return findNotNullChildByClass(M68kSpecialRegister.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kSpecialRegisterImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kSpecialRegisterImpl.java
new file mode 100644
index 0000000..52fef99
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kSpecialRegisterImpl.java
@@ -0,0 +1,55 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kSpecialRegister;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.*;
+
+public class M68kSpecialRegisterImpl extends M68kRegisterImpl implements M68kSpecialRegister {
+
+ public M68kSpecialRegisterImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitSpecialRegister(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRegCcr() {
+ return findChildByType(REG_CCR);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRegSr() {
+ return findChildByType(REG_SR);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRegUsp() {
+ return findChildByType(REG_USP);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getRegVbr() {
+ return findChildByType(REG_VBR);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kStatementImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kStatementImpl.java
new file mode 100644
index 0000000..81480b5
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kStatementImpl.java
@@ -0,0 +1,54 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.extapi.psi.ASTWrapperPsiElement;
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.*;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.WHITE_SPACE;
+
+public class M68kStatementImpl extends ASTWrapperPsiElement implements M68kStatement {
+
+ public M68kStatementImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitStatement(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public M68kAssignment getAssignment() {
+ return findChildByClass(M68kAssignment.class);
+ }
+
+ @Override
+ @Nullable
+ public M68kLabel getLabel() {
+ return findChildByClass(M68kLabel.class);
+ }
+
+ @Override
+ @Nullable
+ public M68kPreprocessorDirective getPreprocessorDirective() {
+ return findChildByClass(M68kPreprocessorDirective.class);
+ }
+
+ @Override
+ @Nullable
+ public PsiElement getWhiteSpace() {
+ return findChildByType(WHITE_SPACE);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kUnaryComplExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kUnaryComplExprImpl.java
new file mode 100644
index 0000000..27f49e3
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kUnaryComplExprImpl.java
@@ -0,0 +1,35 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kUnaryComplExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class M68kUnaryComplExprImpl extends M68kExprImpl implements M68kUnaryComplExpr {
+
+ public M68kUnaryComplExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitUnaryComplExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public M68kExpr getExpr() {
+ return findChildByClass(M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kUnaryMinusExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kUnaryMinusExprImpl.java
new file mode 100644
index 0000000..ad2a682
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kUnaryMinusExprImpl.java
@@ -0,0 +1,35 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kUnaryMinusExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class M68kUnaryMinusExprImpl extends M68kExprImpl implements M68kUnaryMinusExpr {
+
+ public M68kUnaryMinusExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitUnaryMinusExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public M68kExpr getExpr() {
+ return findChildByClass(M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kUnaryNotExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kUnaryNotExprImpl.java
new file mode 100644
index 0000000..2586cae
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kUnaryNotExprImpl.java
@@ -0,0 +1,35 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kUnaryNotExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class M68kUnaryNotExprImpl extends M68kExprImpl implements M68kUnaryNotExpr {
+
+ public M68kUnaryNotExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitUnaryNotExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public M68kExpr getExpr() {
+ return findChildByClass(M68kExpr.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kUnaryPlusExprImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kUnaryPlusExprImpl.java
new file mode 100644
index 0000000..ca3e56c
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kUnaryPlusExprImpl.java
@@ -0,0 +1,35 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi.impl;
+
+import com.intellij.lang.ASTNode;
+import com.intellij.psi.PsiElementVisitor;
+import de.platon42.intellij.plugins.m68k.psi.M68kExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kUnaryPlusExpr;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class M68kUnaryPlusExprImpl extends M68kExprImpl implements M68kUnaryPlusExpr {
+
+ public M68kUnaryPlusExprImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitUnaryPlusExpr(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @Nullable
+ public M68kExpr getExpr() {
+ return findChildByClass(M68kExpr.class);
+ }
+
+}
diff --git a/src/main/java/de/platon42/intellij/plugins/m68k/M68kFileElementType.java b/src/main/java/de/platon42/intellij/plugins/m68k/M68kFileElementType.java
new file mode 100644
index 0000000..154543d
--- /dev/null
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/M68kFileElementType.java
@@ -0,0 +1,36 @@
+package de.platon42.intellij.plugins.m68k;
+
+import com.intellij.psi.PsiFile;
+import com.intellij.psi.StubBuilder;
+import com.intellij.psi.stubs.DefaultStubBuilder;
+import com.intellij.psi.stubs.StubElement;
+import com.intellij.psi.tree.IStubFileElementType;
+import de.platon42.intellij.plugins.m68k.psi.M68kFile;
+import de.platon42.intellij.plugins.m68k.stubs.M68kFileStub;
+import org.jetbrains.annotations.NotNull;
+
+public class M68kFileElementType extends IStubFileElementType {
+ public static final IStubFileElementType INSTANCE = new M68kFileElementType();
+ public static final int VERSION = 1;
+
+ private M68kFileElementType() {
+ super("M68K_FILE", M68kLanguage.Companion.getINSTANCE());
+ }
+
+ @Override
+ public int getStubVersion() {
+ return VERSION;
+ }
+
+ @Override
+ public StubBuilder getBuilder() {
+ return new DefaultStubBuilder() {
+
+ @Override
+ protected @NotNull StubElement createStubForFile(@NotNull PsiFile file) {
+ if (file instanceof M68kFile) return new M68kFileStub((M68kFile) file);
+ return super.createStubForFile(file);
+ }
+ };
+ }
+}
diff --git a/src/main/java/de/platon42/intellij/plugins/m68k/M68kFileType.kt b/src/main/java/de/platon42/intellij/plugins/m68k/M68kFileType.kt
index 84bc371..d153b41 100644
--- a/src/main/java/de/platon42/intellij/plugins/m68k/M68kFileType.kt
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/M68kFileType.kt
@@ -9,7 +9,7 @@ import javax.swing.Icon
class M68kFileType private constructor() : LanguageFileType(M68kLanguage.INSTANCE, true) {
@NonNls
override fun getName(): String {
- return "M68k ASM File"
+ return "M68k"
}
override fun getDescription(): String {
diff --git a/src/main/java/de/platon42/intellij/plugins/m68k/M68kMnemonics.kt b/src/main/java/de/platon42/intellij/plugins/m68k/M68kMnemonics.kt
new file mode 100644
index 0000000..6408f85
--- /dev/null
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/M68kMnemonics.kt
@@ -0,0 +1,6 @@
+package de.platon42.intellij.plugins.m68k
+
+object M68kMnemonics {
+ val mnemonics =
+ setOf("move", "moveq", "add", "addi", "adda", "addq", "sub", "sub", "subi", "suba", "subq", "rts", "jsr")
+}
\ No newline at end of file
diff --git a/src/main/java/de/platon42/intellij/plugins/m68k/lexer/M68kLexer.kt b/src/main/java/de/platon42/intellij/plugins/m68k/lexer/M68kLexer.kt
new file mode 100644
index 0000000..27ce3ec
--- /dev/null
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/lexer/M68kLexer.kt
@@ -0,0 +1,5 @@
+package de.platon42.intellij.plugins.m68k.lexer
+
+import com.intellij.lexer.FlexAdapter
+
+class M68kLexer : FlexAdapter(_M68kLexer())
\ No newline at end of file
diff --git a/src/main/java/de/platon42/intellij/plugins/m68k/lexer/_M68kLexer.flex b/src/main/java/de/platon42/intellij/plugins/m68k/lexer/_M68kLexer.flex
new file mode 100644
index 0000000..b0bf242
--- /dev/null
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/lexer/_M68kLexer.flex
@@ -0,0 +1,135 @@
+package de.platon42.intellij.plugins.m68k.lexer;
+
+import com.intellij.lexer.FlexLexer;
+import com.intellij.psi.tree.IElementType;
+
+import static com.intellij.psi.TokenType.BAD_CHARACTER;
+import static com.intellij.psi.TokenType.WHITE_SPACE;
+import static de.platon42.intellij.plugins.m68k.psi.M68kTypes.*;
+
+%%
+
+%{
+ public _M68kLexer() {
+ this((java.io.Reader)null);
+ }
+%}
+
+%public
+%class _M68kLexer
+%implements FlexLexer
+%function advance
+%type IElementType
+%unicode
+
+EOL=\R
+WHITE_SPACE=\s+
+
+EOL=\R
+WHITE_SPACE=\p{Blank}+
+EQU=([eE][qQ][uU])
+EVEN_TAG=((\p{Blank}+)?[eE][vV][eE][nN])
+CNOP_TAG=((\p{Blank}+)?[cC][nN][oO][pP])
+SECTION_TAG=((\p{Blank}+)?[sS][eE][cC][tT][iI][oO][nN])
+INCLUDE_TAG=((\p{Blank}+)?[iI][nN][cC][lL][uU][dD][eE])
+INCBIN_TAG=((\p{Blank}+)?[iI][nN][cC][bB][iI][nN])
+IF_TAG=((\p{Blank}+)?[iI][fF][:letter:]*)
+ELSE_TAG=((\p{Blank}+)?[eE][lL][sS][eE])
+ENDC_TAG=((\p{Blank}+)?[eE][nN][dD][cC])
+MACRO_TAG=((\p{Blank}+)?[mM][aA][cC][rR][oO])
+MACRO_END_TAG=((\p{Blank}+)?[eE][nN][dD][mM])
+REPT_TAG=((\p{Blank}+)?[rR][eE][pP][tT])
+REPT_END_TAG=((\p{Blank}+)?[eE][nN][dD][rR])
+FAIL_TAG=((\p{Blank}+)?[fF][aA][iI][lL])
+END_TAG=((\p{Blank}+)?[eE][nN][dD]).*
+AREG=(([aA][0-7])|sp|SP)
+DREG=([dD][0-7])
+PC=([pP][cC])
+REG_CCR=([cC][cC][rR])
+REG_SR=([sS][rR])
+REG_USP=([uU][sS][pP])
+REG_VBR=([vV][bB][rR])
+SYMBOL=(([:letter:]|_)(([:letter:]|[:digit:])|_)*)
+OPSIZE_BS=(\.([bB]|[sS]))
+OPSIZE_WL=(\.([wW]|[lL]))
+BINARY=(%[01]+)
+HEXADECIMAL=(\$[0-9a-fA-F]+)
+OCTAL=(@[0-7]+)
+DECIMAL=([0-9]+)
+STRINGLIT=(`([^`\\]|\\.)*`|'([^'\\]|\\.)*'|\"([^\"\\]|\\.)*\")|<([^`\\]|\\.)*>
+COMMENT=(\p{Blank}*?[;*].*+)
+
+%%
+ {
+ {WHITE_SPACE} { return WHITE_SPACE; }
+
+ ":" { return COLON; }
+ ";" { return SEMICOLON; }
+ "[" { return SQUARE_L; }
+ "]" { return SQUARE_R; }
+ "(" { return ROUND_L; }
+ ")" { return ROUND_R; }
+ "," { return SEPARATOR; }
+ "." { return DOT; }
+ "#" { return HASH; }
+ "$" { return DOLLAR; }
+ "=" { return OP_ASSIGN; }
+ "!" { return OP_UNARY_NOT; }
+ "~" { return OP_UNARY_COMPL; }
+ "+" { return OP_PLUS; }
+ "-" { return OP_MINUS; }
+ "*" { return OP_AR_MUL; }
+ "/" { return OP_AR_DIV; }
+ "%" { return OP_AR_MOD; }
+ "<<" { return OP_AR_SHIFT_L; }
+ ">>" { return OP_AR_SHIFT_R; }
+ "&" { return OP_BITWISE_AND; }
+ "|" { return OP_BITWISE_OR; }
+ "^" { return OP_BITWISE_XOR; }
+ "&&" { return OP_LOGICAL_AND; }
+ "||" { return OP_LOGICAL_OR; }
+ "==" { return OP_CMP_EQ; }
+ "<" { return OP_CMP_LT; }
+ ">" { return OP_CMP_GT; }
+ ">=" { return OP_CMP_GT_EQ; }
+ "<=" { return OP_CMP_LT_EQ; }
+ "!=" { return OP_CMP_NOT_EQ; }
+ "<>" { return OP_CMP_NOT_EQ2; }
+
+ {EOL} { return EOL; }
+ {WHITE_SPACE} { return WHITE_SPACE; }
+ {EQU} { return EQU; }
+ {EVEN_TAG} { return EVEN_TAG; }
+ {CNOP_TAG} { return CNOP_TAG; }
+ {SECTION_TAG} { return SECTION_TAG; }
+ {INCLUDE_TAG} { return INCLUDE_TAG; }
+ {INCBIN_TAG} { return INCBIN_TAG; }
+ {IF_TAG} { return IF_TAG; }
+ {ELSE_TAG} { return ELSE_TAG; }
+ {ENDC_TAG} { return ENDC_TAG; }
+ {MACRO_TAG} { return MACRO_TAG; }
+ {MACRO_END_TAG} { return MACRO_END_TAG; }
+ {REPT_TAG} { return REPT_TAG; }
+ {REPT_END_TAG} { return REPT_END_TAG; }
+ {FAIL_TAG} { return FAIL_TAG; }
+ {END_TAG} { return END_TAG; }
+ {AREG} { return AREG; }
+ {DREG} { return DREG; }
+ {PC} { return PC; }
+ {REG_CCR} { return REG_CCR; }
+ {REG_SR} { return REG_SR; }
+ {REG_USP} { return REG_USP; }
+ {REG_VBR} { return REG_VBR; }
+ {SYMBOL} { return SYMBOL; }
+ {OPSIZE_BS} { return OPSIZE_BS; }
+ {OPSIZE_WL} { return OPSIZE_WL; }
+ {BINARY} { return BINARY; }
+ {HEXADECIMAL} { return HEXADECIMAL; }
+ {OCTAL} { return OCTAL; }
+ {DECIMAL} { return DECIMAL; }
+ {STRINGLIT} { return STRINGLIT; }
+ {COMMENT} { return COMMENT; }
+
+}
+
+[^] { return BAD_CHARACTER; }
diff --git a/src/main/java/de/platon42/intellij/plugins/m68k/m68k.bnf b/src/main/java/de/platon42/intellij/plugins/m68k/m68k.bnf
new file mode 100644
index 0000000..8fc06b9
--- /dev/null
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/m68k.bnf
@@ -0,0 +1,278 @@
+{
+ parserClass="de.platon42.intellij.plugins.m68k.parser.M68kParser"
+ parserUtilClass="de.platon42.intellij.plugins.m68k.parser.M68kParserUtilBase"
+
+ extends="com.intellij.extapi.psi.ASTWrapperPsiElement"
+
+ psiClassPrefix="M68k"
+ psiImplClassSuffix="Impl"
+ psiPackage="de.platon42.intellij.plugins.m68k.psi"
+ psiImplPackage="de.platon42.intellij.plugins.m68k.psi.impl"
+
+// elementTypeFactory="de.platon42.intellij.plugins.m68k.parser.M68kParserDefinition.createType"
+// tokenTypeFactory="de.platon42.intellij.plugins.m68k.parser.M68kParserDefinition.createTokenType"
+
+ elementTypeHolderClass="de.platon42.intellij.plugins.m68k.psi.M68kTypes"
+ elementTypeClass="de.platon42.intellij.plugins.m68k.psi.M68kElementType"
+ tokenTypeClass="de.platon42.intellij.plugins.m68k.psi.M68kTokenType"
+
+ name(".*_expr")='expression'
+ extends(".*_expr")=expr
+
+ name(".*AddressingMode")='AddressingMode'
+ extends(".*AddressingMode")=AddressingMode
+
+ name(".*Register")='Register'
+
+ consumeTokenMethod(".*_expr|expr|.*AddressingMode")="consumeTokenFast"
+
+ tokens = [
+ EOL = 'regexp:\R'
+ WHITE_SPACE = 'regexp:\p{Blank}+'
+
+ EQU = 'regexp:([eE][qQ][uU])'
+
+ EVEN_TAG = 'regexp:((\p{Blank}+)?[eE][vV][eE][nN])'
+ CNOP_TAG = 'regexp:((\p{Blank}+)?[cC][nN][oO][pP])'
+ SECTION_TAG = 'regexp:((\p{Blank}+)?[sS][eE][cC][tT][iI][oO][nN])'
+
+ INCLUDE_TAG = 'regexp:((\p{Blank}+)?[iI][nN][cC][lL][uU][dD][eE])'
+ INCBIN_TAG = 'regexp:((\p{Blank}+)?[iI][nN][cC][bB][iI][nN])'
+
+ IF_TAG = 'regexp:((\p{Blank}+)?[iI][fF]\p{Alpha}*)'
+ ELSE_TAG = 'regexp:((\p{Blank}+)?[eE][lL][sS][eE])'
+ ENDC_TAG = 'regexp:((\p{Blank}+)?[eE][nN][dD][cC])'
+ MACRO_TAG = 'regexp:((\p{Blank}+)?[mM][aA][cC][rR][oO])'
+ MACRO_END_TAG = 'regexp:((\p{Blank}+)?[eE][nN][dD][mM])'
+ REPT_TAG = 'regexp:((\p{Blank}+)?[rR][eE][pP][tT])'
+ REPT_END_TAG = 'regexp:((\p{Blank}+)?[eE][nN][dD][rR])'
+ FAIL_TAG = 'regexp:((\p{Blank}+)?[fF][aA][iI][lL])'
+ END_TAG = 'regexp:((\p{Blank}+)?[eE][nN][dD]).*'
+
+ AREG = 'regexp:(([aA][0-7])|sp|SP)'
+ DREG = 'regexp:([dD][0-7])'
+ PC = 'regexp:([pP][cC])'
+ REG_CCR = 'regexp:([cC][cC][rR])'
+ REG_SR = 'regexp:([sS][rR])'
+ REG_USP = 'regexp:([uU][sS][pP])'
+ REG_VBR = 'regexp:([vV][bB][rR])'
+
+// LOCAL_LABEL = 'regexp:(!(\p{Blank}+)\.(\p{Alpha}|_)(\p{Alnum}|_)*:?)|(!(\p{Blank}+)(\p{Alpha}|_)(\p{Alnum}|_)*\$:?)|((\p{Blank}*)?\.(\p{Alpha}|_)(\p{Alnum}|_)*:)|((\p{Blank}*)?(\p{Alpha}|_)(\p{Alnum}|_)*\$:)|(\.(\p{Alpha}|_)(\p{Alnum}|_)*:)|((\p{Alpha}|_)(\p{Alnum}|_)*\$:)'
+// GLOBAL_LABEL = 'regexp:(!(\p{Blank}+)(\p{Alpha}|_)(\p{Alnum}|_)*:?:?)|((\p{Blank}*)?(\p{Alpha}|_)(\p{Alnum}|_)*::?)'
+
+// MNEMONIC = 'regexp:((\p{Alpha})+)'
+ SYMBOL = 'regexp:((\p{Alpha}|_)(\p{Alnum}|_)*)'
+ OPSIZE_BS = 'regexp:(\.([bB]|[sS]))'
+ OPSIZE_WL = 'regexp:(\.([wW]|[lL]))'
+
+ BINARY = 'regexp:(%[01]+)'
+ HEXADECIMAL = 'regexp:(\$[0-9a-fA-F]+)'
+ OCTAL = 'regexp:(@[0-7]+)'
+ DECIMAL = 'regexp:([0-9]+)'
+
+ STRINGLIT = "regexp:(`([^`\\]|\\.)*`|'([^'\\]|\\.)*'|\"([^\"\\]|\\.)*\")|<([^`\\]|\\.)*>"
+
+ COLON = ':'
+ SEMICOLON = ';'
+ SQUARE_L = '['
+ SQUARE_R = ']'
+ ROUND_L = '('
+ ROUND_R = ')'
+ SEPARATOR = ','
+ DOT = '.'
+ HASH = '#'
+ DOLLAR = '$'
+
+ OP_ASSIGN = '='
+
+ OP_UNARY_NOT = '!'
+ OP_UNARY_COMPL = '~'
+
+ OP_PLUS = '+'
+ OP_MINUS = '-'
+ OP_AR_MUL = '*'
+ OP_AR_DIV = '/'
+ OP_AR_MOD = '%'
+ OP_AR_SHIFT_L = '<<'
+ OP_AR_SHIFT_R = '>>'
+ OP_BITWISE_AND = '&'
+ OP_BITWISE_OR = '|'
+ OP_BITWISE_XOR = '^'
+ OP_LOGICAL_AND = '&&'
+ OP_LOGICAL_OR = '||'
+
+ OP_CMP_EQ = '=='
+ OP_CMP_LT = '<'
+ OP_CMP_GT = '>'
+ OP_CMP_GT_EQ = '>='
+ OP_CMP_LT_EQ = '<='
+ OP_CMP_NOT_EQ = '!='
+ OP_CMP_NOT_EQ2 = '<>'
+
+ COMMENT = 'regexp:(\p{Blank}*?[;*].*+)'//|(!\s#+.*+)'
+// EOL_COMMENT = 'regexp:((\p{Blank}+;.*?)|(\p{Blank}+\.*+))'
+ ]
+}
+
+M68kFile ::= line*
+
+private BlankLine ::= WHITE_SPACE?
+
+private line ::= !<> statement EOL
+
+statement ::= (Assignment
+ | PreprocessorDirective
+ | LabelInsts
+ | BlankLine)
+ {pin=1 recoverWhile=statement_recover};
+
+private statement_recover ::= !(EOL)
+
+Assignment ::= SYMBOL ((WHITE_SPACE? OP_ASSIGN WHITE_SPACE?)|(WHITE_SPACE EQU WHITE_SPACE)) expr
+
+private LabelInsts ::= LabelOnly|LabelWithInstruction|InstructionOnly
+
+private LabelOnly ::= Label
+private LabelWithInstruction ::= Label WHITE_SPACE Instruction
+private InstructionOnly ::= WHITE_SPACE Instruction
+
+LocalLabel ::= (!WHITE_SPACE ((DOT SYMBOL)|(SYMBOL DOLLAR)) COLON?)|(WHITE_SPACE? ((DOT SYMBOL)|(SYMBOL DOLLAR)) COLON)
+GlobalLabel ::= (!WHITE_SPACE SYMBOL (COLON? COLON?)?)|(WHITE_SPACE? SYMBOL COLON COLON?)
+//private Label ::= LocalLabel | GlobalLabel
+
+//private LabelInsts ::= Label|(Label? WHITE_SPACE Instruction)
+//
+//LocalLabel ::= LOCAL_LABEL {extends=Label}
+//GlobalLabel ::= GLOBAL_LABEL {extends=Label}
+Label ::= LocalLabel | GlobalLabel
+
+OperandSize ::= (OPSIZE_BS|OPSIZE_WL)
+AddressSize ::= OPSIZE_WL
+DataWidth ::= OPSIZE_WL
+
+AsmOp ::= SYMBOL OperandSize?
+
+PreprocessorDirective ::= SYMBOL?
+ (END_TAG
+ | EVEN_TAG
+ | CNOP_TAG
+ | SECTION_TAG
+ | INCLUDE_TAG
+ | INCBIN_TAG
+ | IF_TAG
+ | ELSE_TAG
+ | ENDC_TAG
+ | MACRO_TAG
+ | MACRO_END_TAG
+ | REPT_TAG
+ | REPT_END_TAG
+ | FAIL_TAG)
+ (WHITE_SPACE PreprocessorOperands)?
+
+MacroCall ::= SYMBOL PreprocessorOperands?
+AsmInstruction ::= AsmOp (WHITE_SPACE AsmOperands)?
+//Instruction ::= AsmInstruction | MacroCall
+external Instruction ::= parseMacroCallOrAsmInstruction
+
+AsmOperands ::= FirstAsmOperand (SEPARATOR NextAsmOperand)*
+
+private FirstAsmOperand ::= AddressingMode
+
+private NextAsmOperand ::= AddressingMode
+
+private PreprocessorOperands ::= PreprocessorOperand (SEPARATOR PreprocessorOperand)*
+
+private PreprocessorOperand ::= expr
+
+DataRegister ::= DREG {extends=Register}
+AddressRegister ::= AREG {extends=Register}
+SpecialRegister ::= REG_CCR | REG_SR | REG_USP | REG_VBR {extends=Register}
+
+Register ::= DataRegister | AddressRegister | SpecialRegister
+
+private DataOrAddressRegister ::= DataRegister | AddressRegister
+
+AddressingMode ::= AbsoluteAddressAddressingMode
+ | SpecialRegisterDirectAddressingMode
+ | DataRegisterDirectAddressingMode
+ | AddressRegisterDirectAddressingMode
+ | AddressRegisterIndirectAddressingMode
+ | AddressRegisterIndirectWithDisplacementOldAddressingMode
+ | ProgramCounterIndirectWithDisplacementOldAddressingMode
+ | AddressRegisterIndirectWithIndexOldAddressingMode
+ | ProgramCounterIndirectWithIndexOldAddressingMode
+ | AddressRegisterIndirectWithDisplacementNewAddressingMode
+ | ProgramCounterIndirectWithDisplacementNewAddressingMode
+ | AddressRegisterIndirectWithIndexNewAddressingMode
+ | ProgramCounterIndirectWithIndexNewAddressingMode
+ | AddressRegisterIndirectPreDecAddressingMode
+ | AddressRegisterIndirectPostIncAddressingMode
+ | ImmediateData
+
+SpecialRegisterDirectAddressingMode ::= SpecialRegister
+DataRegisterDirectAddressingMode ::= DataRegister
+AddressRegisterDirectAddressingMode ::= AddressRegister
+AddressRegisterIndirectAddressingMode ::= ROUND_L AddressRegister ROUND_R !OP_PLUS
+AddressRegisterIndirectPostIncAddressingMode ::= ROUND_L AddressRegister ROUND_R OP_PLUS
+AddressRegisterIndirectPreDecAddressingMode ::= OP_MINUS ROUND_L AddressRegister ROUND_R
+AddressRegisterIndirectWithDisplacementOldAddressingMode ::= expr ROUND_L AddressRegister ROUND_R
+AddressRegisterIndirectWithDisplacementNewAddressingMode ::= ROUND_L expr SEPARATOR AddressRegister ROUND_R
+AddressRegisterIndirectWithIndexOldAddressingMode ::= expr ROUND_L AddressRegister SEPARATOR DataOrAddressRegister DataWidth? ROUND_R
+AddressRegisterIndirectWithIndexNewAddressingMode ::= ROUND_L expr SEPARATOR AddressRegister SEPARATOR DataOrAddressRegister DataWidth? ROUND_R
+ProgramCounterIndirectWithDisplacementOldAddressingMode ::= expr ROUND_L PC ROUND_R
+ProgramCounterIndirectWithDisplacementNewAddressingMode ::= ROUND_L expr SEPARATOR PC ROUND_R
+ProgramCounterIndirectWithIndexOldAddressingMode ::= expr ROUND_L PC SEPARATOR DataOrAddressRegister DataWidth? ROUND_R
+ProgramCounterIndirectWithIndexNewAddressingMode ::= ROUND_L expr SEPARATOR PC SEPARATOR DataOrAddressRegister DataWidth? ROUND_R
+AbsoluteAddressAddressingMode ::= expr AddressSize? !ROUND_L
+ImmediateData ::= HASH expr {extends=AddressingMode}
+
+expr ::= binary_logical_or_expr
+ | binary_logical_and_expr
+ | binary_cmp_eq_ne_group
+ | binary_cmp_diff_group
+ | binary_addsub_group
+ | binary_muldiv_group
+ | binary_bitwise_or_expr
+ | binary_bitwise_xor_expr
+ | binary_bitwise_and_expr
+ | binary_shift_group
+ | unary_group
+ | primary_group
+// | macrobrace_expr
+
+// private rules to define operators with the same priority
+private unary_group ::= unary_plus_expr|unary_minus_expr|unary_not_expr|unary_compl_expr
+private binary_shift_group ::= binary_shift_l_expr|binary_shift_r_expr
+private binary_muldiv_group ::= binary_mul_expr|binary_div_expr|binary_mod_expr
+private binary_addsub_group ::= binary_add_expr|binary_sub_expr
+private binary_cmp_diff_group ::= binary_cmp_lt_expr|binary_cmp_le_expr|binary_cmp_gt_expr|binary_cmp_ge_expr
+private binary_cmp_eq_ne_group ::= binary_cmp_eq_expr|binary_cmp_ne_expr
+private primary_group ::= ref_expr|literal_expr|paren_expr
+
+unary_plus_expr ::= OP_PLUS expr
+unary_minus_expr ::= OP_MINUS expr
+unary_not_expr ::= OP_UNARY_NOT expr
+unary_compl_expr ::= OP_UNARY_COMPL expr
+binary_shift_l_expr ::= expr OP_AR_SHIFT_L expr
+binary_shift_r_expr ::= expr OP_AR_SHIFT_R expr
+binary_bitwise_and_expr ::= expr OP_BITWISE_AND expr
+binary_bitwise_xor_expr ::= expr OP_BITWISE_XOR expr
+binary_bitwise_or_expr ::= expr (OP_BITWISE_OR|OP_UNARY_NOT) expr
+binary_mul_expr ::= expr OP_AR_MUL expr
+binary_div_expr ::= expr OP_AR_DIV expr
+binary_mod_expr ::= expr OP_AR_MOD expr
+binary_add_expr ::= expr OP_PLUS expr
+binary_sub_expr ::= expr OP_MINUS expr
+binary_cmp_lt_expr ::= expr OP_CMP_LT expr
+binary_cmp_le_expr ::= expr OP_CMP_LT_EQ expr
+binary_cmp_gt_expr ::= expr OP_CMP_GT expr
+binary_cmp_ge_expr ::= expr OP_CMP_GT_EQ expr
+binary_cmp_eq_expr ::= expr OP_CMP_EQ expr
+binary_cmp_ne_expr ::= expr (OP_CMP_NOT_EQ|OP_CMP_NOT_EQ2) expr
+binary_logical_and_expr ::= expr OP_LOGICAL_AND expr
+binary_logical_or_expr ::= expr OP_LOGICAL_OR expr
+
+//macrobrace_expr ::= OP_CMP_LT expr OP_CMP_GT
+paren_expr ::= ROUND_L expr ROUND_R //{pin=1 recoverWhile=statement_recover}
+ref_expr ::= SYMBOL
+literal_expr ::= BINARY|DECIMAL|HEXADECIMAL|OCTAL|STRINGLIT
diff --git a/src/main/java/de/platon42/intellij/plugins/m68k/parser/M68kParserDefinition.java b/src/main/java/de/platon42/intellij/plugins/m68k/parser/M68kParserDefinition.java
new file mode 100644
index 0000000..6d9c894
--- /dev/null
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/parser/M68kParserDefinition.java
@@ -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);
+ }
+}
diff --git a/src/main/java/de/platon42/intellij/plugins/m68k/parser/M68kParserUtilBase.java b/src/main/java/de/platon42/intellij/plugins/m68k/parser/M68kParserUtilBase.java
new file mode 100644
index 0000000..be2f01a
--- /dev/null
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/parser/M68kParserUtilBase.java
@@ -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;
+ }
+}
diff --git a/src/main/java/de/platon42/intellij/plugins/m68k/psi/M68kFile.kt b/src/main/java/de/platon42/intellij/plugins/m68k/psi/M68kFile.kt
new file mode 100644
index 0000000..7ae3d3c
--- /dev/null
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/psi/M68kFile.kt
@@ -0,0 +1,15 @@
+package de.platon42.intellij.plugins.m68k.psi
+
+import com.intellij.extapi.psi.PsiFileBase
+import com.intellij.psi.FileViewProvider
+import de.platon42.intellij.plugins.m68k.M68kFileType
+import de.platon42.intellij.plugins.m68k.M68kLanguage
+
+class M68kFile(private val fileViewProvider: FileViewProvider) : PsiFileBase(fileViewProvider, M68kLanguage.INSTANCE) {
+ override fun toString(): String {
+ val virtualFile = if (fileViewProvider.isEventSystemEnabled) fileViewProvider.virtualFile else null
+ return "Assembly File: " + (virtualFile?.name ?: "")
+ }
+
+ override fun getFileType() = M68kFileType.INSTANCE
+}
\ No newline at end of file
diff --git a/src/main/java/de/platon42/intellij/plugins/m68k/stubs/M68kFileStub.kt b/src/main/java/de/platon42/intellij/plugins/m68k/stubs/M68kFileStub.kt
new file mode 100644
index 0000000..9e56581
--- /dev/null
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/stubs/M68kFileStub.kt
@@ -0,0 +1,6 @@
+package de.platon42.intellij.plugins.m68k.stubs
+
+import com.intellij.psi.stubs.PsiFileStubImpl
+import de.platon42.intellij.plugins.m68k.psi.M68kFile
+
+class M68kFileStub(file: M68kFile?) : PsiFileStubImpl(file)
\ No newline at end of file
diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml
index 08f327f..b971211 100644
--- a/src/main/resources/META-INF/plugin.xml
+++ b/src/main/resources/META-INF/plugin.xml
@@ -14,8 +14,10 @@
com.intellij.modules.lang
-
+