diff --git a/README.md b/README.md
index 2e7e186..f3741c0 100644
--- a/README.md
+++ b/README.md
@@ -69,6 +69,10 @@ make it work with JUnit 5. Feel free to use the code (in package ```de.platon42.
## Changelog
+### V0.3 (unreleased)
+
+- Enhancement: Macros contents are no longer parsed, added syntax highlighting options for macros.
+
### V0.2 (27-Jul-21)
- Cosmetics: Added (same) icon for plugin as for file type.
diff --git a/build.gradle b/build.gradle
index e5b9b28..565b743 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,7 @@ plugins {
}
group = 'de.platon42'
-version = '0.2'
+version = '0.3'
sourceCompatibility = "1.8"
targetCompatibility = "1.8"
@@ -46,6 +46,10 @@ intellij {
patchPluginXml {
setChangeNotes("""
+
V0.3 (unreleased)
+
+ - Enhancement: Macros contents are no longer parsed, added syntax highlighting options for macros.
+
V0.2 (27-Jul-21)
- Cosmetics: Added (same) icon for plugin as for file type.
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
index d8fbbe7..c560435 100644
--- a/src/main/gen/de/platon42/intellij/plugins/m68k/lexer/_M68kLexer.java
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/lexer/_M68kLexer.java
@@ -42,6 +42,10 @@ public class _M68kLexer implements FlexLexer {
public static final int EXPR_OP = 16;
public static final int MACROCALL = 18;
public static final int WAITEOL = 20;
+ public static final int MACRODEF = 22;
+ public static final int MACROLINE = 24;
+ public static final int MACROTERMINATION = 26;
+ public static final int MACROWAITEOL = 28;
/**
* ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
@@ -51,7 +55,7 @@ public class _M68kLexer implements FlexLexer {
*/
private static final int ZZ_LEXSTATE[] = {
0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
- 8, 8, 9, 9, 10, 10
+ 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14
};
/**
@@ -133,56 +137,56 @@ public class _M68kLexer implements FlexLexer {
/* The ZZ_CMAP_A table has 3200 entries */
static final char ZZ_CMAP_A[] = zzUnpackCMap(
- "\11\0\1\4\1\2\2\1\1\3\22\0\1\4\1\55\1\44\1\51\1\24\1\32\1\62\1\43\1\53\1\54" +
- "\1\61\1\57\1\47\1\60\1\23\1\64\2\33\5\6\1\10\2\37\1\14\1\50\1\45\1\22\1\46" +
- "\1\0\1\41\1\5\1\72\1\66\1\7\1\15\6\11\1\31\3\11\1\65\1\16\1\70\1\20\1\21\1" +
- "\17\1\71\1\30\3\11\1\0\1\25\1\0\1\52\1\12\1\42\1\34\1\26\1\67\1\35\1\40\1" +
- "\36\5\11\1\31\3\11\1\65\1\16\1\70\1\27\1\21\1\17\1\71\1\30\3\11\1\0\1\63\1" +
- "\0\1\56\6\0\1\1\12\0\1\4\11\0\1\11\12\0\1\11\4\0\1\11\5\0\27\11\1\0\27\11" +
- "\1\20\2\11\4\0\14\11\16\0\5\11\7\0\1\11\1\0\1\11\1\0\5\11\1\0\2\11\2\0\4\11" +
- "\1\0\1\11\6\0\1\11\1\0\3\11\1\0\1\11\1\0\4\11\1\0\23\11\1\0\13\11\10\0\6\11" +
- "\1\0\26\11\2\0\1\11\6\0\10\11\10\0\13\11\5\0\3\11\15\0\12\13\4\0\6\11\1\0" +
- "\1\11\17\0\2\11\7\0\2\11\12\13\3\11\2\0\2\11\1\0\16\11\15\0\11\11\13\0\1\11" +
- "\16\0\12\13\6\11\4\0\2\11\4\0\1\11\5\0\6\11\4\0\1\11\11\0\1\11\3\0\1\11\7" +
- "\0\11\11\7\0\5\11\1\0\10\11\6\0\26\11\3\0\1\11\2\0\1\11\7\0\12\11\4\0\12\13" +
- "\1\11\4\0\10\11\2\0\2\11\2\0\26\11\1\0\7\11\1\0\1\11\3\0\4\11\3\0\1\11\20" +
- "\0\1\11\15\0\2\11\1\0\1\11\5\0\6\11\4\0\2\11\1\0\2\11\1\0\2\11\1\0\2\11\17" +
- "\0\4\11\1\0\1\11\7\0\12\13\2\0\3\11\20\0\11\11\1\0\2\11\1\0\2\11\1\0\5\11" +
- "\3\0\1\11\2\0\1\11\30\0\1\11\13\0\10\11\2\0\1\11\3\0\1\11\1\0\6\11\3\0\3\11" +
- "\1\0\4\11\3\0\2\11\1\0\1\11\1\0\2\11\3\0\2\11\3\0\3\11\3\0\14\11\13\0\10\11" +
- "\1\0\2\11\10\0\3\11\5\0\1\11\4\0\10\11\1\0\6\11\1\0\5\11\3\0\1\11\3\0\2\11" +
- "\15\0\13\11\2\0\1\11\6\0\3\11\10\0\1\11\12\0\6\11\5\0\22\11\3\0\10\11\1\0" +
- "\11\11\1\0\1\11\2\0\7\11\11\0\1\11\1\0\2\11\14\0\12\13\7\0\2\11\1\0\1\11\2" +
- "\0\2\11\1\0\1\11\2\0\1\11\6\0\4\11\1\0\7\11\1\0\3\11\1\0\1\11\1\0\1\11\2\0" +
- "\2\11\1\0\4\11\1\0\2\11\11\0\1\11\2\0\5\11\1\0\1\11\11\0\12\13\2\0\14\11\1" +
- "\0\24\11\13\0\5\11\22\0\7\11\4\0\4\11\3\0\1\11\3\0\2\11\7\0\3\11\4\0\15\11" +
- "\14\0\1\11\1\0\6\11\1\0\1\11\5\0\1\11\2\0\13\11\1\0\15\11\1\0\4\11\2\0\7\11" +
- "\1\0\1\11\1\0\4\11\2\0\1\11\1\0\4\11\2\0\7\11\1\0\1\11\1\0\4\11\2\0\16\11" +
- "\2\0\6\11\2\0\15\11\2\0\1\11\1\4\17\11\1\0\10\11\7\0\15\11\1\0\6\11\23\0\1" +
- "\11\4\0\1\11\3\0\5\11\2\0\22\11\1\0\1\11\5\0\17\11\1\0\16\11\2\0\5\11\13\0" +
- "\14\11\13\0\1\11\15\0\7\11\7\0\16\11\15\0\2\11\12\13\3\0\3\11\11\0\4\11\1" +
- "\0\4\11\3\0\2\11\11\0\10\11\1\0\1\11\1\0\1\11\1\0\1\11\1\0\6\11\1\0\7\11\1" +
- "\0\1\11\3\0\3\11\1\0\7\11\3\0\4\11\2\0\6\11\4\0\13\4\15\0\2\1\5\0\1\4\17\0" +
- "\1\4\1\0\1\11\15\0\1\11\2\0\1\11\4\0\1\11\2\0\12\11\1\0\1\11\3\0\5\11\6\0" +
- "\1\11\1\0\1\11\1\0\1\11\1\0\4\11\1\0\13\11\2\0\4\11\5\0\5\11\4\0\1\11\4\0" +
- "\2\11\13\0\5\11\6\0\4\11\3\0\2\11\14\0\10\11\7\0\10\11\1\0\7\11\1\0\1\4\4" +
- "\0\2\11\12\0\5\11\5\0\2\11\3\0\7\11\6\0\3\11\12\13\2\11\13\0\11\11\2\0\27" +
- "\11\2\0\7\11\1\0\3\11\1\0\4\11\1\0\4\11\2\0\6\11\3\0\1\11\1\0\1\11\2\0\5\11" +
- "\1\0\12\11\12\13\5\11\1\0\3\11\1\0\10\11\4\0\7\11\3\0\1\11\3\0\2\11\1\0\1" +
- "\11\3\0\2\11\2\0\5\11\2\0\1\11\1\0\1\11\30\0\3\11\3\0\6\11\2\0\6\11\2\0\6" +
- "\11\11\0\7\11\4\0\5\11\3\0\5\11\5\0\1\11\1\0\10\11\1\0\5\11\1\0\1\11\1\0\2" +
- "\11\1\0\2\11\1\0\12\11\6\0\12\11\2\0\6\11\2\0\6\11\2\0\6\11\2\0\3\11\3\0\14" +
- "\11\1\0\16\11\1\0\2\11\1\0\2\11\1\0\10\11\6\0\4\11\4\0\16\11\2\0\1\11\1\0" +
- "\14\11\1\0\2\11\3\0\1\11\2\0\4\11\1\0\2\11\12\0\10\11\6\0\6\11\1\0\3\11\1" +
- "\0\12\11\3\0\1\11\12\0\4\11\13\0\12\13\1\11\1\0\1\11\3\0\7\11\1\0\1\11\1\0" +
- "\4\11\1\0\17\11\1\0\2\11\14\0\3\11\7\0\4\11\11\0\2\11\1\0\1\11\20\0\4\11\10" +
- "\0\1\11\13\0\10\11\5\0\3\11\2\0\1\11\2\0\2\11\2\0\4\11\1\0\14\11\1\0\1\11" +
- "\1\0\7\11\1\0\21\11\1\0\4\11\2\0\10\11\1\0\7\11\1\0\14\11\1\0\4\11\1\0\5\11" +
- "\1\0\1\11\3\0\14\11\2\0\13\11\1\0\10\11\2\0\22\13\1\0\2\11\1\0\1\11\2\0\1" +
- "\11\1\0\12\11\1\0\4\11\1\0\1\11\1\0\1\11\6\0\1\11\4\0\1\11\1\0\1\11\1\0\1" +
- "\11\1\0\3\11\1\0\2\11\1\0\1\11\2\0\1\11\1\0\1\11\1\0\1\11\1\0\1\11\1\0\1\11" +
- "\1\0\2\11\1\0\1\11\2\0\4\11\1\0\7\11\1\0\4\11\1\0\4\11\1\0\1\11\1\0\12\11" +
- "\1\0\5\11\1\0\3\11\1\0\5\11\1\0\5\11");
+ "\11\0\1\4\1\2\2\1\1\3\22\0\1\4\1\63\1\53\1\57\1\24\1\40\1\70\1\52\1\61\1\62" +
+ "\1\67\1\65\1\56\1\66\1\23\1\72\2\41\5\6\1\10\2\45\1\14\1\32\1\54\1\22\1\55" +
+ "\1\0\1\50\1\5\1\75\1\26\1\7\1\15\6\11\1\37\1\25\1\31\1\30\1\73\1\16\1\27\1" +
+ "\20\1\21\1\17\1\74\1\36\3\11\1\0\1\33\1\0\1\60\1\12\1\51\1\42\1\34\1\47\1" +
+ "\43\1\46\1\44\5\11\1\37\1\25\1\31\1\30\1\73\1\16\1\27\1\35\1\21\1\17\1\74" +
+ "\1\36\3\11\1\0\1\71\1\0\1\64\6\0\1\1\12\0\1\4\11\0\1\11\12\0\1\11\4\0\1\11" +
+ "\5\0\27\11\1\0\27\11\1\20\2\11\4\0\14\11\16\0\5\11\7\0\1\11\1\0\1\11\1\0\5" +
+ "\11\1\0\2\11\2\0\4\11\1\0\1\11\6\0\1\11\1\0\3\11\1\0\1\11\1\0\4\11\1\0\23" +
+ "\11\1\0\13\11\10\0\6\11\1\0\26\11\2\0\1\11\6\0\10\11\10\0\13\11\5\0\3\11\15" +
+ "\0\12\13\4\0\6\11\1\0\1\11\17\0\2\11\7\0\2\11\12\13\3\11\2\0\2\11\1\0\16\11" +
+ "\15\0\11\11\13\0\1\11\16\0\12\13\6\11\4\0\2\11\4\0\1\11\5\0\6\11\4\0\1\11" +
+ "\11\0\1\11\3\0\1\11\7\0\11\11\7\0\5\11\1\0\10\11\6\0\26\11\3\0\1\11\2\0\1" +
+ "\11\7\0\12\11\4\0\12\13\1\11\4\0\10\11\2\0\2\11\2\0\26\11\1\0\7\11\1\0\1\11" +
+ "\3\0\4\11\3\0\1\11\20\0\1\11\15\0\2\11\1\0\1\11\5\0\6\11\4\0\2\11\1\0\2\11" +
+ "\1\0\2\11\1\0\2\11\17\0\4\11\1\0\1\11\7\0\12\13\2\0\3\11\20\0\11\11\1\0\2" +
+ "\11\1\0\2\11\1\0\5\11\3\0\1\11\2\0\1\11\30\0\1\11\13\0\10\11\2\0\1\11\3\0" +
+ "\1\11\1\0\6\11\3\0\3\11\1\0\4\11\3\0\2\11\1\0\1\11\1\0\2\11\3\0\2\11\3\0\3" +
+ "\11\3\0\14\11\13\0\10\11\1\0\2\11\10\0\3\11\5\0\1\11\4\0\10\11\1\0\6\11\1" +
+ "\0\5\11\3\0\1\11\3\0\2\11\15\0\13\11\2\0\1\11\6\0\3\11\10\0\1\11\12\0\6\11" +
+ "\5\0\22\11\3\0\10\11\1\0\11\11\1\0\1\11\2\0\7\11\11\0\1\11\1\0\2\11\14\0\12" +
+ "\13\7\0\2\11\1\0\1\11\2\0\2\11\1\0\1\11\2\0\1\11\6\0\4\11\1\0\7\11\1\0\3\11" +
+ "\1\0\1\11\1\0\1\11\2\0\2\11\1\0\4\11\1\0\2\11\11\0\1\11\2\0\5\11\1\0\1\11" +
+ "\11\0\12\13\2\0\14\11\1\0\24\11\13\0\5\11\22\0\7\11\4\0\4\11\3\0\1\11\3\0" +
+ "\2\11\7\0\3\11\4\0\15\11\14\0\1\11\1\0\6\11\1\0\1\11\5\0\1\11\2\0\13\11\1" +
+ "\0\15\11\1\0\4\11\2\0\7\11\1\0\1\11\1\0\4\11\2\0\1\11\1\0\4\11\2\0\7\11\1" +
+ "\0\1\11\1\0\4\11\2\0\16\11\2\0\6\11\2\0\15\11\2\0\1\11\1\4\17\11\1\0\10\11" +
+ "\7\0\15\11\1\0\6\11\23\0\1\11\4\0\1\11\3\0\5\11\2\0\22\11\1\0\1\11\5\0\17" +
+ "\11\1\0\16\11\2\0\5\11\13\0\14\11\13\0\1\11\15\0\7\11\7\0\16\11\15\0\2\11" +
+ "\12\13\3\0\3\11\11\0\4\11\1\0\4\11\3\0\2\11\11\0\10\11\1\0\1\11\1\0\1\11\1" +
+ "\0\1\11\1\0\6\11\1\0\7\11\1\0\1\11\3\0\3\11\1\0\7\11\3\0\4\11\2\0\6\11\4\0" +
+ "\13\4\15\0\2\1\5\0\1\4\17\0\1\4\1\0\1\11\15\0\1\11\2\0\1\11\4\0\1\11\2\0\12" +
+ "\11\1\0\1\11\3\0\5\11\6\0\1\11\1\0\1\11\1\0\1\11\1\0\4\11\1\0\13\11\2\0\4" +
+ "\11\5\0\5\11\4\0\1\11\4\0\2\11\13\0\5\11\6\0\4\11\3\0\2\11\14\0\10\11\7\0" +
+ "\10\11\1\0\7\11\1\0\1\4\4\0\2\11\12\0\5\11\5\0\2\11\3\0\7\11\6\0\3\11\12\13" +
+ "\2\11\13\0\11\11\2\0\27\11\2\0\7\11\1\0\3\11\1\0\4\11\1\0\4\11\2\0\6\11\3" +
+ "\0\1\11\1\0\1\11\2\0\5\11\1\0\12\11\12\13\5\11\1\0\3\11\1\0\10\11\4\0\7\11" +
+ "\3\0\1\11\3\0\2\11\1\0\1\11\3\0\2\11\2\0\5\11\2\0\1\11\1\0\1\11\30\0\3\11" +
+ "\3\0\6\11\2\0\6\11\2\0\6\11\11\0\7\11\4\0\5\11\3\0\5\11\5\0\1\11\1\0\10\11" +
+ "\1\0\5\11\1\0\1\11\1\0\2\11\1\0\2\11\1\0\12\11\6\0\12\11\2\0\6\11\2\0\6\11" +
+ "\2\0\6\11\2\0\3\11\3\0\14\11\1\0\16\11\1\0\2\11\1\0\2\11\1\0\10\11\6\0\4\11" +
+ "\4\0\16\11\2\0\1\11\1\0\14\11\1\0\2\11\3\0\1\11\2\0\4\11\1\0\2\11\12\0\10" +
+ "\11\6\0\6\11\1\0\3\11\1\0\12\11\3\0\1\11\12\0\4\11\13\0\12\13\1\11\1\0\1\11" +
+ "\3\0\7\11\1\0\1\11\1\0\4\11\1\0\17\11\1\0\2\11\14\0\3\11\7\0\4\11\11\0\2\11" +
+ "\1\0\1\11\20\0\4\11\10\0\1\11\13\0\10\11\5\0\3\11\2\0\1\11\2\0\2\11\2\0\4" +
+ "\11\1\0\14\11\1\0\1\11\1\0\7\11\1\0\21\11\1\0\4\11\2\0\10\11\1\0\7\11\1\0" +
+ "\14\11\1\0\4\11\1\0\5\11\1\0\1\11\3\0\14\11\2\0\13\11\1\0\10\11\2\0\22\13" +
+ "\1\0\2\11\1\0\1\11\2\0\1\11\1\0\12\11\1\0\4\11\1\0\1\11\1\0\1\11\6\0\1\11" +
+ "\4\0\1\11\1\0\1\11\1\0\1\11\1\0\3\11\1\0\2\11\1\0\1\11\2\0\1\11\1\0\1\11\1" +
+ "\0\1\11\1\0\1\11\1\0\1\11\1\0\2\11\1\0\1\11\2\0\4\11\1\0\7\11\1\0\4\11\1\0" +
+ "\4\11\1\0\1\11\1\0\12\11\1\0\5\11\1\0\3\11\1\0\5\11\1\0\5\11");
/**
* Translates DFA states to action switch labels.
@@ -190,28 +194,32 @@ public class _M68kLexer implements FlexLexer {
private static final int[] ZZ_ACTION = zzUnpackAction();
private static final String ZZ_ACTION_PACKED_0 =
- "\13\0\1\1\2\2\1\3\1\4\1\1\1\5\2\6" +
- "\1\2\1\7\1\10\1\1\1\11\2\12\1\7\1\10" +
- "\1\13\1\14\1\15\1\1\1\16\1\17\1\20\4\17" +
- "\6\1\1\21\1\22\1\23\1\24\1\25\1\26\1\27" +
- "\1\30\1\31\1\32\3\17\1\33\1\34\1\33\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\44\1\52\2\1\1\53" +
- "\1\54\1\55\6\1\1\56\1\57\1\60\1\61\1\62" +
- "\1\63\1\64\1\65\1\66\1\67\1\70\1\71\1\72" +
- "\1\73\1\74\1\67\1\75\1\76\1\12\4\76\1\5" +
- "\1\12\1\0\1\4\1\77\2\100\1\101\3\0\1\102" +
- "\1\103\1\104\1\105\1\106\1\107\1\17\1\110\1\111" +
- "\1\112\1\113\2\0\1\114\4\0\1\115\2\17\1\34" +
- "\1\102\1\103\1\104\1\116\1\117\1\120\1\121\1\122" +
- "\1\123\1\124\2\0\1\125\1\126\1\127\2\0\1\130" +
- "\4\0\1\60\1\131\1\132\1\133\1\134\1\135\1\136" +
- "\1\137\1\0\1\76\1\0\1\76\1\0\1\76\1\0" +
- "\1\76\2\0\1\4\1\100\1\101\1\7\1\140\1\141" +
- "\1\142\1\143\1\144\1\0\1\76\6\0";
+ "\17\0\1\1\2\2\1\3\1\4\1\1\1\5\2\6" +
+ "\1\2\1\7\1\10\1\1\1\7\1\11\2\12\1\7" +
+ "\1\10\1\13\1\14\1\15\1\1\1\16\1\17\1\20" +
+ "\4\17\1\1\1\17\5\1\1\21\1\22\1\23\1\24" +
+ "\1\25\1\26\1\27\1\30\1\31\1\32\2\17\1\33" +
+ "\1\34\1\33\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\44" +
+ "\1\52\2\1\1\53\1\54\1\55\6\1\1\56\1\57" +
+ "\1\60\1\61\1\62\1\63\1\64\1\65\1\66\1\67" +
+ "\1\70\1\71\1\72\1\73\1\74\1\67\1\75\1\76" +
+ "\1\12\4\76\1\5\1\12\2\77\2\100\1\101\1\102" +
+ "\3\103\1\102\1\103\1\0\1\4\1\104\2\105\1\106" +
+ "\3\0\1\7\1\107\1\110\1\111\1\112\1\113\1\114" +
+ "\1\17\1\115\1\116\1\17\1\117\1\120\2\0\1\121" +
+ "\4\0\1\122\1\17\1\34\1\107\1\110\1\111\1\123" +
+ "\1\124\1\125\1\126\1\127\1\130\1\131\2\0\1\132" +
+ "\1\133\1\134\2\0\1\135\4\0\1\60\1\136\1\137" +
+ "\1\140\1\141\1\142\1\143\1\144\1\0\1\76\1\0" +
+ "\1\76\1\0\1\76\1\0\1\76\1\100\1\102\4\0" +
+ "\1\4\1\105\1\106\1\7\1\145\1\7\1\146\1\147" +
+ "\1\150\1\151\1\0\1\76\3\0\1\100\1\102\3\0" +
+ "\1\7\1\100\1\102\2\0\1\152\1\153\1\154\1\0" +
+ "\1\155";
private static int[] zzUnpackAction() {
- int[] result = new int[201];
+ int[] result = new int[235];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -236,35 +244,39 @@ public class _M68kLexer implements FlexLexer {
private static final int[] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
- "\0\0\0\73\0\166\0\261\0\354\0\u0127\0\u0162\0\u019d" +
- "\0\u01d8\0\u0213\0\u024e\0\u0289\0\u0289\0\u02c4\0\u02ff\0\u033a" +
- "\0\u0375\0\u03b0\0\u0289\0\u03eb\0\u0426\0\u0461\0\u049c\0\u04d7" +
- "\0\u0512\0\u0289\0\u054d\0\u0588\0\u05c3\0\u0289\0\u05fe\0\u0639" +
- "\0\u0674\0\u06af\0\u06ea\0\u0725\0\u0760\0\u079b\0\u07d6\0\u0811" +
- "\0\u084c\0\u0887\0\u08c2\0\u08fd\0\u0938\0\u0973\0\u0289\0\u0289" +
- "\0\u0289\0\u0289\0\u0289\0\u0289\0\u0289\0\u0289\0\u0289\0\u0289" +
- "\0\u09ae\0\u09e9\0\u0a24\0\u0a5f\0\u0a9a\0\u0ad5\0\u0289\0\u0b10" +
- "\0\u0b4b\0\u0289\0\u0289\0\u0289\0\u0289\0\u0b86\0\u0289\0\u0289" +
- "\0\u0289\0\u0289\0\u0bc1\0\u0bfc\0\u0c37\0\u0c72\0\u0cad\0\u0289" +
- "\0\u0ce8\0\u0d23\0\u0d5e\0\u0d99\0\u0dd4\0\u0e0f\0\u0e4a\0\u0e85" +
- "\0\u0289\0\u0289\0\u0ec0\0\u0289\0\u0efb\0\u0f36\0\u0289\0\u0289" +
- "\0\u0289\0\u0f71\0\u0289\0\u0289\0\u0289\0\u0289\0\u0fac\0\u0fe7" +
- "\0\u1022\0\u105d\0\u105d\0\u1098\0\u10d3\0\u110e\0\u1149\0\u1184" +
- "\0\u1184\0\u11bf\0\u11fa\0\u1235\0\u1270\0\u12ab\0\u12e6\0\u1321" +
- "\0\u135c\0\u1397\0\u0289\0\u0289\0\u0289\0\u079b\0\u079b\0\u079b" +
- "\0\u13d2\0\u079b\0\u084c\0\u0887\0\u08c2\0\u08fd\0\u140d\0\u0289" +
- "\0\u0938\0\u1448\0\u0973\0\u1483\0\u079b\0\u14be\0\u14f9\0\u0289" +
- "\0\u0a5f\0\u0a5f\0\u0a5f\0\u0289\0\u0289\0\u0289\0\u0289\0\u0289" +
- "\0\u0289\0\u0289\0\u1534\0\u156f\0\u0d5e\0\u0d99\0\u0dd4\0\u0e0f" +
- "\0\u15aa\0\u0289\0\u0e4a\0\u15e5\0\u0e85\0\u1620\0\u0289\0\u0289" +
- "\0\u0289\0\u0289\0\u0289\0\u0289\0\u0289\0\u0289\0\u165b\0\u1696" +
- "\0\u16d1\0\u170c\0\u1747\0\u1782\0\u17bd\0\u17f8\0\u1833\0\u186e" +
- "\0\u0289\0\u0289\0\u0289\0\u0289\0\u0289\0\u079b\0\u079b\0\u079b" +
- "\0\u0289\0\u18a9\0\u0289\0\u18e4\0\u191f\0\u195a\0\u1995\0\u19d0" +
- "\0\u1235";
+ "\0\0\0\76\0\174\0\272\0\370\0\u0136\0\u0174\0\u01b2" +
+ "\0\u01f0\0\u022e\0\u026c\0\u02aa\0\u02e8\0\u0326\0\u0364\0\u03a2" +
+ "\0\u03a2\0\u03e0\0\u041e\0\u045c\0\u049a\0\u04d8\0\u03a2\0\u0516" +
+ "\0\u0554\0\u0592\0\u05d0\0\u060e\0\u064c\0\u068a\0\u03a2\0\u06c8" +
+ "\0\u0706\0\u0744\0\u03a2\0\u0782\0\u07c0\0\u07fe\0\u083c\0\u087a" +
+ "\0\u08b8\0\u08f6\0\u0934\0\u0972\0\u09b0\0\u09ee\0\u0a2c\0\u0a6a" +
+ "\0\u0aa8\0\u0ae6\0\u0b24\0\u0b62\0\u03a2\0\u03a2\0\u03a2\0\u03a2" +
+ "\0\u03a2\0\u03a2\0\u03a2\0\u03a2\0\u03a2\0\u03a2\0\u0ba0\0\u0bde" +
+ "\0\u0c1c\0\u0c5a\0\u0c98\0\u03a2\0\u0cd6\0\u0d14\0\u03a2\0\u03a2" +
+ "\0\u03a2\0\u03a2\0\u0d52\0\u03a2\0\u03a2\0\u03a2\0\u03a2\0\u0d90" +
+ "\0\u0dce\0\u0e0c\0\u0e4a\0\u0e88\0\u03a2\0\u0ec6\0\u0f04\0\u0f42" +
+ "\0\u0f80\0\u0fbe\0\u0ffc\0\u103a\0\u1078\0\u03a2\0\u03a2\0\u10b6" +
+ "\0\u03a2\0\u10f4\0\u1132\0\u03a2\0\u03a2\0\u03a2\0\u1170\0\u03a2" +
+ "\0\u03a2\0\u03a2\0\u03a2\0\u11ae\0\u11ec\0\u122a\0\u1268\0\u1268" +
+ "\0\u12a6\0\u12e4\0\u1322\0\u1360\0\u139e\0\u139e\0\u03a2\0\u13dc" +
+ "\0\u141a\0\u1458\0\u1496\0\u14d4\0\u14d4\0\u03a2\0\u1512\0\u1550" +
+ "\0\u139e\0\u158e\0\u15cc\0\u160a\0\u1648\0\u1686\0\u16c4\0\u1702" +
+ "\0\u1740\0\u177e\0\u17bc\0\u03a2\0\u03a2\0\u03a2\0\u0934\0\u0934" +
+ "\0\u0934\0\u17fa\0\u0934\0\u09ee\0\u1838\0\u0a6a\0\u0aa8\0\u0ae6" +
+ "\0\u1876\0\u03a2\0\u0b24\0\u18b4\0\u0b62\0\u18f2\0\u0934\0\u1930" +
+ "\0\u03a2\0\u0c1c\0\u0c1c\0\u0c1c\0\u03a2\0\u03a2\0\u03a2\0\u03a2" +
+ "\0\u03a2\0\u03a2\0\u03a2\0\u196e\0\u19ac\0\u0f42\0\u0f80\0\u0fbe" +
+ "\0\u0ffc\0\u19ea\0\u03a2\0\u103a\0\u1a28\0\u1078\0\u1a66\0\u03a2" +
+ "\0\u03a2\0\u03a2\0\u03a2\0\u03a2\0\u03a2\0\u03a2\0\u03a2\0\u1aa4" +
+ "\0\u1ae2\0\u1b20\0\u1b5e\0\u1b9c\0\u1bda\0\u1c18\0\u1c56\0\u1c94" +
+ "\0\u1cd2\0\u1d10\0\u1d4e\0\u1d8c\0\u1dca\0\u03a2\0\u03a2\0\u03a2" +
+ "\0\u03a2\0\u03a2\0\u1e08\0\u0934\0\u0934\0\u0934\0\u03a2\0\u1e46" +
+ "\0\u03a2\0\u1e84\0\u1ec2\0\u1f00\0\u1f3e\0\u1f7c\0\u1fba\0\u1ff8" +
+ "\0\u2036\0\u2074\0\u20b2\0\u20f0\0\u160a\0\u212e\0\u0592\0\u141a" +
+ "\0\u216c\0\u21aa\0\u21e8";
private static int[] zzUnpackRowMap() {
- int[] result = new int[201];
+ int[] result = new int[235];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -287,127 +299,169 @@ public class _M68kLexer implements FlexLexer {
private static final int[] ZZ_TRANS = zzUnpackTrans();
private static final String ZZ_TRANS_PACKED_0 =
- "\1\14\2\15\1\16\1\17\1\20\1\14\1\20\1\14" +
- "\2\20\2\14\5\20\1\14\1\21\2\14\4\20\2\14" +
- "\3\20\1\14\1\20\7\14\2\22\7\14\1\22\3\14" +
- "\6\20\1\14\2\23\1\24\1\25\1\26\1\14\1\26" +
- "\1\14\1\26\1\27\2\14\5\26\1\14\1\30\2\14" +
- "\4\26\2\14\3\26\1\14\1\26\7\14\2\31\7\14" +
- "\1\31\3\14\6\26\1\14\2\32\1\33\1\25\1\34" +
- "\1\14\1\34\1\14\1\34\1\35\1\14\1\36\5\34" +
- "\4\14\4\34\2\14\3\34\1\14\1\34\7\14\1\37" +
- "\14\14\6\34\1\14\2\32\1\33\1\40\16\14\1\41" +
- "\24\14\1\37\23\14\2\32\1\33\1\42\1\43\1\44" +
- "\1\45\1\44\2\46\2\14\2\46\1\47\1\50\1\46" +
- "\1\14\1\46\1\51\1\14\1\46\1\50\2\46\1\52" +
- "\1\44\1\43\1\45\1\46\1\44\1\46\1\53\1\54" +
- "\1\55\1\56\2\14\1\57\1\37\1\60\1\61\1\62" +
- "\1\63\1\64\1\65\1\66\1\67\1\70\3\14\1\71" +
- "\2\72\1\46\1\73\1\46\1\14\2\32\1\33\1\42" +
- "\1\74\1\14\1\74\1\14\2\74\2\14\5\74\1\75" +
- "\1\76\2\14\4\74\1\77\1\14\3\74\1\14\1\74" +
- "\4\14\1\100\1\101\1\102\1\37\1\14\1\103\1\104" +
- "\1\105\1\106\1\107\1\110\1\111\1\112\1\113\1\114" +
- "\1\115\6\74\1\14\2\32\1\33\1\25\7\14\1\36" +
- "\1\116\2\14\1\117\1\14\1\120\4\14\1\117\10\14" +
- "\1\116\7\14\1\37\23\14\2\32\1\33\1\42\1\121" +
- "\1\122\1\121\1\122\2\121\2\14\5\121\1\14\1\121" +
- "\1\123\1\14\4\121\1\124\1\122\3\121\1\122\1\121" +
- "\1\125\1\126\1\127\1\130\2\14\1\57\1\37\1\14" +
- "\1\61\1\62\1\131\1\64\1\65\1\66\1\67\1\132" +
- "\3\14\6\121\1\14\2\32\1\33\1\42\15\14\1\133" +
- "\7\14\1\134\12\14\1\135\1\136\1\137\1\37\1\14" +
- "\1\140\1\141\1\105\1\142\1\143\1\144\1\145\1\146" +
- "\1\147\1\150\1\151\6\14\1\152\1\153\1\32\1\33" +
- "\1\42\35\152\1\154\1\155\1\156\1\157\1\152\1\57" +
- "\1\37\22\152\1\160\1\161\1\32\1\33\67\160\75\0" +
- "\1\15\74\0\1\17\72\0\1\162\7\20\1\163\5\20" +
- "\1\164\1\0\1\165\1\0\4\20\1\0\6\20\24\0" +
- "\6\20\5\0\1\166\1\0\1\166\1\0\2\166\2\0" +
- "\5\166\4\0\4\166\2\0\3\166\1\0\1\166\24\0" +
- "\6\166\1\22\3\0\67\22\2\0\1\23\74\0\1\25" +
- "\73\0\1\26\1\27\1\26\1\27\1\26\2\27\1\167" +
- "\5\26\1\0\1\170\1\171\1\0\4\26\1\0\1\27" +
- "\3\26\1\27\1\26\24\0\6\26\5\0\7\27\1\167" +
- "\5\27\2\0\1\171\1\0\4\27\1\0\6\27\24\0" +
- "\6\27\5\0\1\172\1\0\1\172\1\0\2\172\2\0" +
- "\5\172\4\0\4\172\2\0\3\172\1\0\1\172\24\0" +
- "\6\172\1\31\3\0\67\31\2\0\1\32\75\0\1\34" +
- "\1\35\1\34\1\35\1\34\2\35\1\0\5\34\1\0" +
- "\1\170\2\0\4\34\1\0\1\35\3\34\1\35\1\34" +
- "\24\0\6\34\5\0\7\35\1\0\5\35\4\0\4\35" +
- "\1\0\6\35\24\0\6\35\1\37\3\0\67\37\4\0" +
- "\1\40\114\0\2\173\1\174\1\175\45\0\1\42\73\0" +
- "\1\46\1\176\1\46\1\177\3\46\1\0\5\46\2\0" +
- "\1\46\1\0\4\46\1\0\1\176\5\46\24\0\6\46" +
- "\6\0\1\44\1\0\1\44\22\0\1\44\3\0\1\44" +
- "\40\0\1\46\1\200\1\46\1\200\3\46\1\0\5\46" +
- "\2\0\1\46\1\0\4\46\1\0\1\200\5\46\24\0" +
- "\6\46\5\0\7\46\1\0\5\46\2\0\1\46\1\0" +
- "\4\46\1\0\6\46\24\0\6\46\5\0\7\46\1\0" +
- "\3\46\1\201\1\46\2\0\1\46\1\0\1\46\1\201" +
- "\2\46\1\0\6\46\24\0\6\46\5\0\7\46\1\0" +
- "\5\46\2\0\1\46\1\0\4\46\1\0\6\46\24\0" +
- "\1\177\2\46\1\202\2\46\6\0\1\203\1\0\1\203" +
- "\15\0\1\203\4\0\6\203\26\0\1\203\36\0\1\204" +
- "\45\0\1\205\1\0\1\205\22\0\1\205\37\0\2\206" +
- "\2\0\21\206\1\207\14\206\1\210\30\206\2\211\2\0" +
- "\21\211\1\212\15\211\1\210\27\211\2\213\2\0\21\213" +
- "\1\214\16\213\1\210\26\213\5\0\7\46\1\0\5\46" +
- "\2\0\1\46\1\0\4\46\1\0\6\46\24\0\1\46" +
- "\2\215\3\46\5\0\7\46\1\0\5\46\2\0\1\46" +
- "\1\0\4\46\1\0\6\46\24\0\1\46\2\216\3\46" +
- "\5\0\7\46\1\0\5\46\2\0\1\46\1\0\1\217" +
- "\3\46\1\0\6\46\24\0\5\46\1\217\5\0\7\74" +
- "\1\0\5\74\2\0\1\74\1\0\4\74\1\0\6\74" +
- "\24\0\6\74\22\0\1\220\55\0\7\74\1\0\5\74" +
- "\2\0\1\74\1\0\2\221\1\222\1\223\1\0\6\74" +
- "\24\0\6\74\22\0\1\224\22\0\1\225\1\226\46\0" +
- "\1\227\23\0\1\230\46\0\1\226\132\0\1\231\73\0" +
- "\1\232\73\0\1\77\24\0\1\233\71\0\1\234\22\0" +
- "\1\234\37\0\7\121\1\0\5\121\1\0\7\121\1\0" +
- "\6\121\24\0\6\121\6\0\1\122\1\0\1\122\22\0" +
- "\1\122\3\0\1\122\41\0\1\235\1\0\1\235\15\0" +
- "\1\235\4\0\6\235\26\0\1\235\36\0\1\236\45\0" +
- "\1\237\1\0\1\237\22\0\1\237\37\0\2\240\2\0" +
- "\21\240\1\241\14\240\1\242\30\240\2\243\2\0\21\243" +
- "\1\244\15\243\1\242\27\243\2\245\2\0\21\245\1\246" +
- "\16\245\1\242\26\245\22\0\1\247\72\0\1\250\22\0" +
- "\1\251\1\252\46\0\1\253\23\0\1\254\46\0\1\252" +
- "\132\0\1\255\73\0\1\256\73\0\1\134\6\0\2\152" +
- "\3\0\42\152\2\0\22\152\2\154\2\0\1\257\20\154" +
- "\1\260\14\154\1\152\4\154\2\257\22\154\2\155\2\0" +
- "\1\261\20\155\1\262\15\155\1\152\3\155\2\261\22\155" +
- "\2\156\2\0\1\263\20\156\1\264\16\156\1\152\2\156" +
- "\2\263\22\156\2\157\2\0\1\265\20\157\1\266\20\157" +
- "\1\152\2\265\22\157\2\160\2\0\67\160\4\0\1\162" +
- "\10\0\1\267\2\0\1\270\1\0\1\164\4\0\1\270" +
- "\10\0\1\267\36\0\1\162\7\0\1\271\5\0\1\164" +
- "\54\0\1\164\102\0\1\272\63\0\7\166\1\272\5\166" +
- "\4\0\4\166\1\0\6\166\24\0\6\166\14\0\1\273" +
- "\56\0\1\274\3\0\67\274\14\0\1\275\63\0\7\172" +
- "\1\275\5\172\4\0\4\172\1\0\6\172\24\0\6\172" +
- "\5\0\7\46\1\0\5\46\2\0\1\46\1\0\4\46" +
- "\1\0\6\46\24\0\1\276\5\46\1\206\3\0\67\206" +
- "\1\211\3\0\67\211\1\213\3\0\67\213\5\0\7\46" +
- "\1\0\5\46\2\0\1\46\1\0\4\46\1\0\6\46" +
- "\24\0\3\46\1\277\2\46\5\0\7\46\1\0\5\46" +
- "\2\0\1\46\1\0\4\46\1\0\6\46\24\0\3\46" +
- "\1\300\2\46\17\0\1\301\74\0\1\301\51\0\1\240" +
- "\3\0\67\240\1\243\3\0\67\243\1\245\3\0\67\245" +
- "\2\257\2\0\21\257\1\302\14\257\1\303\30\257\1\154" +
- "\1\152\2\0\1\257\42\154\2\257\22\154\2\261\2\0" +
- "\21\261\1\304\15\261\1\303\27\261\1\155\1\152\2\0" +
- "\1\261\42\155\2\261\22\155\2\263\2\0\21\263\1\305" +
- "\16\263\1\303\26\263\1\156\1\152\2\0\1\263\42\156" +
- "\2\263\22\156\2\265\2\0\21\265\1\306\20\265\1\303" +
- "\24\265\1\157\1\152\2\0\1\265\42\157\2\265\22\157" +
- "\16\0\1\307\71\0\1\310\22\0\1\310\32\0\1\257" +
- "\3\0\67\257\1\261\3\0\67\261\1\263\3\0\67\263" +
- "\1\265\3\0\67\265\17\0\1\311\74\0\1\311\51\0";
+ "\1\20\2\21\1\22\1\23\1\24\1\20\1\24\1\20" +
+ "\2\24\2\20\5\24\1\20\1\25\1\20\5\24\1\26" +
+ "\1\20\4\24\2\20\3\24\1\20\2\24\7\20\1\26" +
+ "\7\20\1\26\3\20\3\24\1\20\2\27\1\30\1\31" +
+ "\1\32\1\20\1\32\1\20\1\32\1\33\2\20\5\32" +
+ "\1\20\1\34\1\20\1\35\4\32\1\36\1\20\4\32" +
+ "\2\20\3\32\1\20\2\32\7\20\1\36\7\20\1\36" +
+ "\3\20\3\32\1\20\2\37\1\40\1\31\1\41\1\20" +
+ "\1\41\1\20\1\41\1\42\1\20\1\43\5\41\3\20" +
+ "\5\41\1\44\1\20\4\41\2\20\3\41\1\20\2\41" +
+ "\23\20\3\41\1\20\2\37\1\40\1\45\16\20\1\46" +
+ "\6\20\1\44\44\20\2\37\1\40\1\47\1\50\1\51" +
+ "\1\52\1\51\2\53\2\20\2\53\1\54\1\55\1\53" +
+ "\1\20\1\53\1\56\1\53\1\57\3\53\1\44\1\20" +
+ "\1\53\1\55\2\53\1\60\1\51\1\50\1\52\1\53" +
+ "\1\51\1\53\1\57\1\61\1\62\1\63\1\64\2\20" +
+ "\1\65\1\66\1\67\1\70\1\71\1\72\1\73\1\74" +
+ "\1\75\1\76\3\20\1\77\1\100\1\53\1\20\2\37" +
+ "\1\40\1\47\1\101\1\20\1\101\1\20\2\101\2\20" +
+ "\5\101\1\102\1\103\1\20\5\101\1\44\1\20\4\101" +
+ "\1\104\1\20\3\101\1\20\2\101\4\20\1\105\1\106" +
+ "\1\107\1\20\1\110\1\111\1\112\1\113\1\114\1\115" +
+ "\1\116\1\117\1\120\1\121\1\122\3\101\1\20\2\37" +
+ "\1\40\1\31\7\20\1\43\1\123\2\20\1\124\1\20" +
+ "\1\125\7\20\1\44\2\20\1\124\10\20\1\123\30\20" +
+ "\2\37\1\40\1\47\1\126\1\127\1\126\1\127\2\126" +
+ "\2\20\5\126\1\20\1\126\1\130\5\126\1\44\1\20" +
+ "\4\126\1\131\1\127\3\126\1\127\2\126\1\132\1\133" +
+ "\1\134\1\135\2\20\1\65\1\20\1\67\1\70\1\136" +
+ "\1\72\1\73\1\74\1\75\1\137\3\20\3\126\1\20" +
+ "\2\37\1\40\1\47\15\20\1\140\7\20\1\44\5\20" +
+ "\1\141\13\20\1\142\1\143\1\144\1\20\1\145\1\146" +
+ "\1\112\1\147\1\150\1\151\1\152\1\153\1\154\1\155" +
+ "\1\156\3\20\1\157\1\160\1\37\1\40\1\47\25\157" +
+ "\1\44\16\157\1\161\1\162\1\163\1\164\1\157\1\65" +
+ "\17\157\1\165\1\166\1\37\1\40\72\165\1\20\2\167" +
+ "\1\170\1\31\1\171\1\20\1\171\1\20\2\171\2\20" +
+ "\5\171\3\20\1\172\4\171\1\173\1\20\4\171\2\20" +
+ "\3\171\1\20\2\171\23\20\3\171\1\174\1\175\1\176" +
+ "\1\177\1\200\25\174\1\173\43\174\1\20\2\37\1\40" +
+ "\1\31\25\20\1\44\43\20\1\165\1\201\1\176\1\177" +
+ "\72\165\100\0\1\21\77\0\1\23\75\0\1\202\7\24" +
+ "\1\203\5\24\1\204\1\0\1\205\5\24\2\0\4\24" +
+ "\1\0\7\24\23\0\3\24\5\0\1\206\1\0\1\206" +
+ "\1\0\2\206\2\0\5\206\3\0\5\206\2\0\4\206" +
+ "\2\0\3\206\1\0\2\206\23\0\3\206\1\26\3\0" +
+ "\72\26\2\0\1\27\77\0\1\31\76\0\1\32\1\33" +
+ "\1\32\1\33\1\32\2\33\1\207\5\32\1\0\1\210" +
+ "\1\211\5\32\2\0\4\32\1\0\1\33\3\32\1\33" +
+ "\2\32\23\0\3\32\5\0\7\33\1\207\5\33\2\0" +
+ "\1\211\5\33\2\0\4\33\1\0\7\33\23\0\3\33" +
+ "\5\0\1\212\1\0\1\212\1\0\2\212\2\0\5\212" +
+ "\3\0\5\212\2\0\4\212\2\0\3\212\1\0\2\212" +
+ "\23\0\3\212\5\0\1\213\1\33\1\32\1\33\1\32" +
+ "\2\33\1\207\5\32\1\0\1\210\1\211\5\32\2\0" +
+ "\4\32\1\0\1\33\1\213\2\32\1\33\2\32\23\0" +
+ "\3\32\1\36\3\0\72\36\2\0\1\37\100\0\1\41" +
+ "\1\42\1\41\1\42\1\41\2\42\1\0\5\41\1\0" +
+ "\1\210\1\0\5\41\2\0\4\41\1\0\1\42\3\41" +
+ "\1\42\2\41\23\0\3\41\5\0\7\42\1\0\5\42" +
+ "\3\0\5\42\2\0\4\42\1\0\7\42\23\0\3\42" +
+ "\1\44\3\0\72\44\4\0\1\45\125\0\2\214\1\215" +
+ "\1\216\42\0\1\47\76\0\1\53\1\217\1\53\1\220" +
+ "\3\53\1\0\5\53\2\0\6\53\2\0\4\53\1\0" +
+ "\1\217\6\53\23\0\3\53\6\0\1\51\1\0\1\51" +
+ "\30\0\1\51\3\0\1\51\35\0\1\53\1\221\1\53" +
+ "\1\221\3\53\1\0\5\53\2\0\6\53\2\0\4\53" +
+ "\1\0\1\221\6\53\23\0\3\53\5\0\7\53\1\0" +
+ "\5\53\2\0\6\53\2\0\4\53\1\0\7\53\23\0" +
+ "\3\53\5\0\7\53\1\0\3\53\1\222\1\53\2\0" +
+ "\6\53\2\0\1\53\1\222\2\53\1\0\7\53\23\0" +
+ "\3\53\5\0\7\53\1\0\5\53\2\0\3\53\1\223" +
+ "\2\53\2\0\4\53\1\0\7\53\23\0\1\220\2\53" +
+ "\6\0\1\224\1\0\1\224\23\0\1\224\4\0\7\224" +
+ "\33\0\7\53\1\0\5\53\2\0\2\53\1\225\3\53" +
+ "\2\0\4\53\1\0\6\53\1\225\23\0\3\53\41\0" +
+ "\1\226\42\0\1\227\1\0\1\227\30\0\1\227\34\0" +
+ "\2\230\2\0\27\230\1\231\15\230\1\232\24\230\2\233" +
+ "\2\0\27\233\1\234\16\233\1\232\23\233\2\235\2\0" +
+ "\27\235\1\236\17\235\1\232\22\235\5\0\7\53\1\0" +
+ "\5\53\2\0\2\53\1\237\3\53\2\0\4\53\1\0" +
+ "\6\53\1\237\23\0\3\53\5\0\7\53\1\0\5\53" +
+ "\2\0\6\53\2\0\1\240\3\53\1\0\7\53\23\0" +
+ "\2\53\1\240\5\0\7\101\1\0\5\101\2\0\6\101" +
+ "\2\0\4\101\1\0\7\101\23\0\3\101\22\0\1\241" +
+ "\60\0\7\101\1\0\5\101\2\0\6\101\2\0\2\242" +
+ "\1\243\1\244\1\0\7\101\23\0\3\101\22\0\1\245" +
+ "\31\0\1\246\1\247\42\0\1\250\32\0\1\251\42\0" +
+ "\1\247\143\0\1\252\76\0\1\253\76\0\1\104\21\0" +
+ "\1\254\74\0\1\255\30\0\1\255\34\0\7\126\1\0" +
+ "\5\126\1\0\7\126\1\0\5\126\1\0\7\126\23\0" +
+ "\3\126\6\0\1\127\1\0\1\127\30\0\1\127\3\0" +
+ "\1\127\36\0\1\256\1\0\1\256\23\0\1\256\4\0" +
+ "\7\256\67\0\1\257\42\0\1\260\1\0\1\260\30\0" +
+ "\1\260\34\0\2\261\2\0\27\261\1\262\15\261\1\263" +
+ "\24\261\2\264\2\0\27\264\1\265\16\264\1\263\23\264" +
+ "\2\266\2\0\27\266\1\267\17\266\1\263\22\266\22\0" +
+ "\1\270\75\0\1\271\31\0\1\272\1\273\42\0\1\274" +
+ "\32\0\1\275\42\0\1\273\143\0\1\276\76\0\1\277" +
+ "\76\0\1\141\3\0\2\157\3\0\25\157\1\0\23\157" +
+ "\1\0\17\157\2\161\2\0\1\300\25\161\1\300\1\301" +
+ "\15\161\1\157\4\161\1\300\17\161\2\162\2\0\1\302" +
+ "\25\162\1\302\1\303\16\162\1\157\3\162\1\302\17\162" +
+ "\2\163\2\0\1\304\25\163\1\304\1\305\17\163\1\157" +
+ "\2\163\1\304\17\163\2\164\2\0\1\306\25\164\1\306" +
+ "\1\307\21\164\1\157\1\306\17\164\2\165\2\0\72\165" +
+ "\2\0\1\167\100\0\7\171\1\0\5\171\3\0\5\171" +
+ "\2\0\4\171\1\0\7\171\23\0\3\171\5\0\1\310" +
+ "\6\171\1\0\5\171\3\0\5\171\2\0\4\171\1\0" +
+ "\1\171\1\310\5\171\23\0\3\171\1\173\3\0\72\173" +
+ "\2\174\2\0\26\174\1\0\43\174\2\0\1\176\73\0" +
+ "\2\174\2\0\1\200\10\174\1\311\14\174\1\0\13\174" +
+ "\1\311\27\174\4\0\1\202\10\0\1\312\2\0\1\313" +
+ "\1\0\1\204\2\0\1\314\7\0\1\313\10\0\1\312" +
+ "\33\0\1\315\7\0\1\316\5\0\1\204\57\0\1\204" +
+ "\105\0\1\317\66\0\7\206\1\317\5\206\3\0\5\206" +
+ "\2\0\4\206\1\0\7\206\23\0\3\206\14\0\1\320" +
+ "\61\0\1\321\3\0\72\321\14\0\1\322\66\0\7\212" +
+ "\1\322\5\212\3\0\5\212\2\0\4\212\1\0\7\212" +
+ "\23\0\3\212\5\0\1\32\1\33\1\32\1\33\1\32" +
+ "\2\33\1\207\5\32\1\0\1\210\1\211\1\32\1\323" +
+ "\3\32\2\0\4\32\1\0\1\33\3\32\1\33\1\32" +
+ "\1\323\23\0\3\32\5\0\7\53\1\0\5\53\2\0" +
+ "\6\53\2\0\4\53\1\0\7\53\23\0\1\324\2\53" +
+ "\5\0\7\53\1\0\5\53\2\0\3\53\1\325\2\53" +
+ "\2\0\4\53\1\0\7\53\23\0\3\53\1\230\3\0" +
+ "\72\230\1\233\3\0\72\233\1\235\3\0\72\235\5\0" +
+ "\7\53\1\0\5\53\2\0\3\53\1\326\2\53\2\0" +
+ "\4\53\1\0\7\53\23\0\3\53\17\0\1\327\77\0" +
+ "\1\327\54\0\1\261\3\0\72\261\1\264\3\0\72\264" +
+ "\1\266\3\0\72\266\2\300\2\0\27\300\1\330\15\300" +
+ "\1\331\24\300\1\161\1\157\2\0\1\300\25\161\1\300" +
+ "\23\161\1\300\17\161\2\302\2\0\27\302\1\332\16\302" +
+ "\1\331\23\302\1\162\1\157\2\0\1\302\25\162\1\302" +
+ "\23\162\1\302\17\162\2\304\2\0\27\304\1\333\17\304" +
+ "\1\331\22\304\1\163\1\157\2\0\1\304\25\163\1\304" +
+ "\23\163\1\304\17\163\2\306\2\0\27\306\1\334\21\306" +
+ "\1\331\20\306\1\164\1\157\2\0\1\306\25\164\1\306" +
+ "\23\164\1\306\17\164\5\0\7\171\1\0\5\171\3\0" +
+ "\1\171\1\335\3\171\2\0\4\171\1\0\6\171\1\335" +
+ "\23\0\3\171\2\174\2\0\25\174\1\336\1\0\43\174" +
+ "\16\0\1\337\74\0\1\340\30\0\1\340\34\0\1\341" +
+ "\34\0\1\341\37\0\1\315\10\0\1\312\2\0\1\313" +
+ "\1\0\1\204\12\0\1\313\10\0\1\312\34\0\1\32" +
+ "\1\33\1\32\1\33\1\32\2\33\1\207\5\32\1\0" +
+ "\1\210\1\211\2\32\1\342\2\32\2\0\4\32\1\0" +
+ "\1\33\3\32\1\33\2\32\23\0\3\32\1\300\3\0" +
+ "\72\300\1\302\3\0\72\302\1\304\3\0\72\304\1\306" +
+ "\3\0\72\306\5\0\7\171\1\0\5\171\3\0\2\171" +
+ "\1\343\2\171\2\0\4\171\1\0\7\171\23\0\3\171" +
+ "\2\174\2\0\3\174\1\344\22\174\1\0\10\174\1\344" +
+ "\32\174\17\0\1\345\77\0\1\345\102\0\1\346\20\0" +
+ "\1\346\33\0\1\32\1\33\1\32\1\33\1\32\2\33" +
+ "\1\207\5\32\1\0\1\210\1\211\3\32\1\347\1\32" +
+ "\2\0\4\32\1\0\1\33\3\32\1\33\2\32\23\0" +
+ "\3\32\5\0\7\171\1\0\5\171\3\0\3\171\1\350" +
+ "\1\171\2\0\4\171\1\0\7\171\23\0\3\171\2\174" +
+ "\2\0\21\174\1\351\4\174\1\0\43\174\27\0\1\352" +
+ "\46\0\2\351\2\0\26\351\1\0\43\351\30\0\1\353" +
+ "\51\0\1\353\71\0";
private static int[] zzUnpackTrans() {
- int[] result = new int[6667];
+ int[] result = new int[8742];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -445,17 +499,18 @@ public class _M68kLexer implements FlexLexer {
private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 =
- "\13\0\2\11\5\1\1\11\6\1\1\11\3\1\1\11" +
- "\20\1\12\11\6\1\1\11\2\1\4\11\1\1\4\11" +
+ "\17\0\2\11\5\1\1\11\7\1\1\11\3\1\1\11" +
+ "\21\1\12\11\5\1\1\11\2\1\4\11\1\1\4\11" +
"\5\1\1\11\10\1\2\11\1\1\1\11\2\1\3\11" +
- "\1\1\4\11\13\1\1\0\5\1\3\0\3\11\10\1" +
- "\2\0\1\11\4\0\3\1\1\11\3\1\7\11\2\0" +
- "\3\1\2\0\1\11\4\0\10\11\1\0\1\1\1\0" +
- "\1\1\1\0\1\1\1\0\1\1\2\0\5\11\3\1" +
- "\1\11\1\0\1\11\6\0";
+ "\1\1\4\11\13\1\1\11\6\1\1\11\3\1\1\0" +
+ "\5\1\3\0\1\1\3\11\11\1\2\0\1\11\4\0" +
+ "\2\1\1\11\3\1\7\11\2\0\3\1\2\0\1\11" +
+ "\4\0\10\11\1\0\1\1\1\0\1\1\1\0\1\1" +
+ "\1\0\3\1\4\0\5\11\4\1\1\11\1\0\1\11" +
+ "\3\0\2\1\3\0\3\1\2\0\3\1\1\0\1\1";
private static int[] zzUnpackAttribute() {
- int[] result = new int[201];
+ int[] result = new int[235];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
@@ -533,6 +588,7 @@ public class _M68kLexer implements FlexLexer {
/* user code: */
private M68kLexerPrefs lexerPrefs;
boolean eatOneWhitespace = false;
+ int macroLines = 0;
public M68kLexerPrefs getLexerPrefs() {
return lexerPrefs;
@@ -786,13 +842,13 @@ public class _M68kLexer implements FlexLexer {
return BAD_CHARACTER;
}
// fall through
- case 101:
+ case 110:
break;
case 2: {
return WHITE_SPACE;
}
// fall through
- case 102:
+ case 111:
break;
case 3: {
yybegin(NOSOL);
@@ -800,7 +856,7 @@ public class _M68kLexer implements FlexLexer {
return WHITE_SPACE;
}
// fall through
- case 103:
+ case 112:
break;
case 4: {
yybegin(INSTRPART);
@@ -809,20 +865,20 @@ public class _M68kLexer implements FlexLexer {
return GLOBAL_LABEL_DEF;
}
// fall through
- case 104:
+ case 113:
break;
case 5: {
return COMMENT;
}
// fall through
- case 105:
+ case 114:
break;
case 6: {
yybegin(YYINITIAL);
return WHITE_SPACE;
}
// fall through
- case 106:
+ case 115:
break;
case 7: {
if (isAsmMnemonicWithSize(yytext())) {
@@ -847,7 +903,7 @@ public class _M68kLexer implements FlexLexer {
return MACRO_INVOKATION;
}
// fall through
- case 107:
+ case 116:
break;
case 8: {
yybegin(MACROCALL);
@@ -855,641 +911,702 @@ public class _M68kLexer implements FlexLexer {
return MACRO_INVOKATION;
}
// fall through
- case 108:
+ case 117:
break;
case 9: {
yybegin(YYINITIAL);
return COMMENT;
}
// fall through
- case 109:
+ case 118:
break;
case 10: {
yybegin(YYINITIAL);
return EOL;
}
// fall through
- case 110:
+ case 119:
break;
case 11: {
return COLON;
}
// fall through
- case 111:
+ case 120:
break;
case 12: {
yybegin(WAITEOL);
return COMMENT;
}
// fall through
- case 112:
+ case 121:
break;
case 13: {
yybegin(ASMOPS);
return WHITE_SPACE;
}
// fall through
- case 113:
+ case 122:
break;
case 14: {
return handleEolCommentWhitespace(this);
}
// fall through
- case 114:
+ case 123:
break;
case 15: {
yybegin(ASMOPS_OP);
return SYMBOL;
}
// fall through
- case 115:
+ case 124:
break;
case 16: {
yybegin(ASMOPS_OP);
return DECIMAL;
}
// fall through
- case 116:
+ case 125:
break;
case 17: {
return SEPARATOR;
}
// fall through
- case 117:
+ case 126:
break;
case 18: {
return HASH;
}
// fall through
- case 118:
+ case 127:
break;
case 19: {
return OP_BITWISE_XOR;
}
// fall through
- case 119:
+ case 128:
break;
case 20: {
return ROUND_L;
}
// fall through
- case 120:
+ case 129:
break;
case 21: {
yybegin(ASMOPS_OP);
return ROUND_R;
}
// fall through
- case 121:
+ case 130:
break;
case 22: {
return OP_UNARY_NOT;
}
// fall through
- case 122:
+ case 131:
break;
case 23: {
return OP_UNARY_COMPL;
}
// fall through
- case 123:
+ case 132:
break;
case 24: {
return OP_PLUS;
}
// fall through
- case 124:
+ case 133:
break;
case 25: {
return OP_MINUS;
}
// fall through
- case 125:
+ case 134:
break;
case 26: {
yybegin(ASMOPS_OP);
return CURRENT_PC_SYMBOL;
}
// fall through
- case 126:
+ case 135:
break;
case 27: {
return SYMBOL;
}
// fall through
- case 127:
+ case 136:
break;
case 28: {
yybegin(ASMOPS);
return OP_CMP_EQ;
}
// fall through
- case 128:
+ case 137:
break;
case 29: {
yybegin(ASMOPS);
return OP_AR_MOD;
}
// fall through
- case 129:
+ case 138:
break;
case 30: {
yybegin(ASMOPS);
return OP_CMP_LT;
}
// fall through
- case 130:
+ case 139:
break;
case 31: {
yybegin(ASMOPS);
return OP_CMP_GT;
}
// fall through
- case 131:
+ case 140:
break;
case 32: {
yybegin(ASMOPS);
return SEPARATOR;
}
// fall through
- case 132:
+ case 141:
break;
case 33: {
yybegin(ASMOPS);
return OP_BITWISE_XOR;
}
// fall through
- case 133:
+ case 142:
break;
case 34: {
yybegin(ASMOPS);
return ROUND_L;
}
// fall through
- case 134:
+ case 143:
break;
case 35: {
return ROUND_R;
}
// fall through
- case 135:
+ case 144:
break;
case 36: {
yybegin(ASMOPS);
return OP_BITWISE_OR;
}
// fall through
- case 136:
+ case 145:
break;
case 37: {
yybegin(ASMOPS);
return OP_UNARY_COMPL;
}
// fall through
- case 137:
+ case 146:
break;
case 38: {
yybegin(ASMOPS);
return OP_PLUS;
}
// fall through
- case 138:
+ case 147:
break;
case 39: {
yybegin(ASMOPS);
return OP_MINUS;
}
// fall through
- case 139:
+ case 148:
break;
case 40: {
yybegin(ASMOPS);
return OP_AR_MUL;
}
// fall through
- case 140:
+ case 149:
break;
case 41: {
yybegin(ASMOPS);
return OP_BITWISE_AND;
}
// fall through
- case 141:
+ case 150:
break;
case 42: {
yybegin(ASMOPS);
return OP_AR_DIV;
}
// fall through
- case 142:
+ case 151:
break;
case 43: {
yybegin(EXPR);
return OP_ASSIGN;
}
// fall through
- case 143:
+ case 152:
break;
case 44: {
yybegin(EXPR_OP);
return SYMBOL;
}
// fall through
- case 144:
+ case 153:
break;
case 45: {
yybegin(EXPR_OP);
return DECIMAL;
}
// fall through
- case 145:
+ case 154:
break;
case 46: {
yybegin(EXPR_OP);
return ROUND_R;
}
// fall through
- case 146:
+ case 155:
break;
case 47: {
yybegin(EXPR_OP);
return CURRENT_PC_SYMBOL;
}
// fall through
- case 147:
+ case 156:
break;
case 48: {
yybegin(EXPR);
return OP_CMP_EQ;
}
// fall through
- case 148:
+ case 157:
break;
case 49: {
yybegin(EXPR);
return OP_AR_MOD;
}
// fall through
- case 149:
+ case 158:
break;
case 50: {
yybegin(EXPR);
return OP_CMP_LT;
}
// fall through
- case 150:
+ case 159:
break;
case 51: {
yybegin(EXPR);
return OP_CMP_GT;
}
// fall through
- case 151:
+ case 160:
break;
case 52: {
yybegin(EXPR);
return SEPARATOR;
}
// fall through
- case 152:
+ case 161:
break;
case 53: {
yybegin(EXPR);
return OP_BITWISE_XOR;
}
// fall through
- case 153:
+ case 162:
break;
case 54: {
yybegin(EXPR);
return ROUND_L;
}
// fall through
- case 154:
+ case 163:
break;
case 55: {
yybegin(EXPR);
return OP_BITWISE_OR;
}
// fall through
- case 155:
+ case 164:
break;
case 56: {
yybegin(EXPR);
return OP_UNARY_COMPL;
}
// fall through
- case 156:
+ case 165:
break;
case 57: {
yybegin(EXPR);
return OP_PLUS;
}
// fall through
- case 157:
+ case 166:
break;
case 58: {
yybegin(EXPR);
return OP_MINUS;
}
// fall through
- case 158:
+ case 167:
break;
case 59: {
yybegin(EXPR);
return OP_AR_MUL;
}
// fall through
- case 159:
+ case 168:
break;
case 60: {
yybegin(EXPR);
return OP_BITWISE_AND;
}
// fall through
- case 160:
+ case 169:
break;
case 61: {
yybegin(EXPR);
return OP_AR_DIV;
}
// fall through
- case 161:
+ case 170:
break;
case 62: {
return STRINGLIT;
}
// fall through
- case 162:
+ case 171:
break;
case 63: {
+ yybegin(MACROLINE);
+ macroLines = 0;
+ return WHITE_SPACE;
+ }
+ // fall through
+ case 172:
+ break;
+ case 64: {
+ return MACRO_NAME;
+ }
+ // fall through
+ case 173:
+ break;
+ case 65: {
+ yybegin(MACROWAITEOL);
+ return COMMENT;
+ }
+ // fall through
+ case 174:
+ break;
+ case 66: {
+ return MACRO_LINE;
+ }
+ // fall through
+ case 175:
+ break;
+ case 67: {
+ return handleMacroLineEol(this);
+ }
+ // fall through
+ case 176:
+ break;
+ case 68: {
yybegin(ASSIGNMENT);
eatOneWhitespace = true;
yypushback(pushbackAssignment(yytext()));
return SYMBOLDEF;
}
// fall through
- case 163:
+ case 177:
break;
- case 64: {
+ case 69: {
yybegin(INSTRPART);
eatOneWhitespace = false;
yypushback(pushbackLabelColons(yytext()));
return LOCAL_LABEL_DEF;
}
// fall through
- case 164:
+ case 178:
break;
- case 65: {
+ case 70: {
yybegin(INSTRPART);
yypushback(pushbackLabelColons(yytext()));
return GLOBAL_LABEL_DEF;
}
// fall through
- case 165:
- break;
- case 66: {
- return OPSIZE_BS;
- }
- // fall through
- case 166:
- break;
- case 67: {
- return OPSIZE_W;
- }
- // fall through
- case 167:
- break;
- case 68: {
- return OPSIZE_L;
- }
- // fall through
- case 168:
- break;
- case 69: {
- yybegin(ASMOPS_OP);
- return AREG;
- }
- // fall through
- case 169:
- break;
- case 70: {
- yybegin(ASMOPS_OP);
- return REG_SP;
- }
- // fall through
- case 170:
- break;
- case 71: {
- yybegin(ASMOPS_OP);
- return DREG;
- }
- // fall through
- case 171:
- break;
- case 72: {
- yybegin(ASMOPS_OP);
- return REG_SR;
- }
- // fall through
- case 172:
- break;
- case 73: {
- yybegin(ASMOPS_OP);
- return HEXADECIMAL;
- }
- // fall through
- case 173:
- break;
- case 74: {
- yybegin(ASMOPS_OP);
- return BINARY;
- }
- // fall through
- case 174:
- break;
- case 75: {
- yybegin(ASMOPS_OP);
- return OCTAL;
- }
- // fall through
- case 175:
- break;
- case 76: {
- yybegin(ASMOPS_OP);
- return STRINGLIT;
- }
- // fall through
- case 176:
- break;
- case 77: {
- yybegin(ASMOPS_OP);
- return PC;
- }
- // fall through
- case 177:
- break;
- case 78: {
- yybegin(ASMOPS);
- return OP_CMP_LT_EQ;
- }
- // fall through
- case 178:
- break;
- case 79: {
- yybegin(ASMOPS);
- return OP_AR_SHIFT_L;
- }
- // fall through
case 179:
break;
- case 80: {
- yybegin(ASMOPS);
- return OP_CMP_NOT_EQ;
+ case 71: {
+ return OPSIZE_BS;
}
// fall through
case 180:
break;
- case 81: {
- yybegin(ASMOPS);
- return OP_CMP_GT_EQ;
+ case 72: {
+ return OPSIZE_W;
}
// fall through
case 181:
break;
- case 82: {
- yybegin(ASMOPS);
- return OP_AR_SHIFT_R;
+ case 73: {
+ return OPSIZE_L;
}
// fall through
case 182:
break;
- case 83: {
- yybegin(ASMOPS);
- return OP_LOGICAL_AND;
+ case 74: {
+ yybegin(ASMOPS_OP);
+ return AREG;
}
// fall through
case 183:
break;
- case 84: {
- yybegin(ASMOPS);
- return OP_LOGICAL_OR;
+ case 75: {
+ yybegin(ASMOPS_OP);
+ return REG_SP;
}
// fall through
case 184:
break;
- case 85: {
- yybegin(EXPR_OP);
- return HEXADECIMAL;
+ case 76: {
+ yybegin(ASMOPS_OP);
+ return DREG;
}
// fall through
case 185:
break;
- case 86: {
- yybegin(EXPR_OP);
- return BINARY;
+ case 77: {
+ yybegin(ASMOPS_OP);
+ return REG_SR;
}
// fall through
case 186:
break;
- case 87: {
- yybegin(EXPR_OP);
- return OCTAL;
+ case 78: {
+ yybegin(ASMOPS_OP);
+ return HEXADECIMAL;
}
// fall through
case 187:
break;
- case 88: {
- yybegin(EXPR_OP);
- return STRINGLIT;
+ case 79: {
+ yybegin(ASMOPS_OP);
+ return BINARY;
}
// fall through
case 188:
break;
- case 89: {
- yybegin(EXPR);
- return OP_CMP_LT_EQ;
+ case 80: {
+ yybegin(ASMOPS_OP);
+ return OCTAL;
}
// fall through
case 189:
break;
- case 90: {
- yybegin(EXPR);
- return OP_AR_SHIFT_L;
+ case 81: {
+ yybegin(ASMOPS_OP);
+ return STRINGLIT;
}
// fall through
case 190:
break;
- case 91: {
- yybegin(EXPR);
- return OP_CMP_NOT_EQ;
+ case 82: {
+ yybegin(ASMOPS_OP);
+ return PC;
}
// fall through
case 191:
break;
- case 92: {
- yybegin(EXPR);
- return OP_CMP_GT_EQ;
+ case 83: {
+ yybegin(ASMOPS);
+ return OP_CMP_LT_EQ;
}
// fall through
case 192:
break;
- case 93: {
- yybegin(EXPR);
- return OP_AR_SHIFT_R;
+ case 84: {
+ yybegin(ASMOPS);
+ return OP_AR_SHIFT_L;
}
// fall through
case 193:
break;
- case 94: {
- yybegin(EXPR);
- return OP_LOGICAL_AND;
+ case 85: {
+ yybegin(ASMOPS);
+ return OP_CMP_NOT_EQ;
}
// fall through
case 194:
break;
- case 95: {
- yybegin(EXPR);
- return OP_LOGICAL_OR;
+ case 86: {
+ yybegin(ASMOPS);
+ return OP_CMP_GT_EQ;
}
// fall through
case 195:
break;
+ case 87: {
+ yybegin(ASMOPS);
+ return OP_AR_SHIFT_R;
+ }
+ // fall through
+ case 196:
+ break;
+ case 88: {
+ yybegin(ASMOPS);
+ return OP_LOGICAL_AND;
+ }
+ // fall through
+ case 197:
+ break;
+ case 89: {
+ yybegin(ASMOPS);
+ return OP_LOGICAL_OR;
+ }
+ // fall through
+ case 198:
+ break;
+ case 90: {
+ yybegin(EXPR_OP);
+ return HEXADECIMAL;
+ }
+ // fall through
+ case 199:
+ break;
+ case 91: {
+ yybegin(EXPR_OP);
+ return BINARY;
+ }
+ // fall through
+ case 200:
+ break;
+ case 92: {
+ yybegin(EXPR_OP);
+ return OCTAL;
+ }
+ // fall through
+ case 201:
+ break;
+ case 93: {
+ yybegin(EXPR_OP);
+ return STRINGLIT;
+ }
+ // fall through
+ case 202:
+ break;
+ case 94: {
+ yybegin(EXPR);
+ return OP_CMP_LT_EQ;
+ }
+ // fall through
+ case 203:
+ break;
+ case 95: {
+ yybegin(EXPR);
+ return OP_AR_SHIFT_L;
+ }
+ // fall through
+ case 204:
+ break;
case 96: {
+ yybegin(EXPR);
+ return OP_CMP_NOT_EQ;
+ }
+ // fall through
+ case 205:
+ break;
+ case 97: {
+ yybegin(EXPR);
+ return OP_CMP_GT_EQ;
+ }
+ // fall through
+ case 206:
+ break;
+ case 98: {
+ yybegin(EXPR);
+ return OP_AR_SHIFT_R;
+ }
+ // fall through
+ case 207:
+ break;
+ case 99: {
+ yybegin(EXPR);
+ return OP_LOGICAL_AND;
+ }
+ // fall through
+ case 208:
+ break;
+ case 100: {
+ yybegin(EXPR);
+ return OP_LOGICAL_OR;
+ }
+ // fall through
+ case 209:
+ break;
+ case 101: {
yybegin(INSTRPART);
yypushback(pushbackLabelColons(yytext()));
return LOCAL_LABEL_DEF;
}
// fall through
- case 196:
+ case 210:
break;
- case 97: {
+ case 102: {
yybegin(ASMOPS_OP);
return REG_USP;
}
// fall through
- case 197:
+ case 211:
break;
- case 98: {
+ case 103: {
yybegin(ASMOPS_OP);
return REG_CCR;
}
// fall through
- case 198:
+ case 212:
break;
- case 99: {
+ case 104: {
yybegin(ASMOPS_OP);
return REG_VBR;
}
// fall through
- case 199:
+ case 213:
break;
- case 100: {
+ case 105: {
yybegin(EXPR);
return EQU;
}
// fall through
- case 200:
+ case 214:
+ break;
+ case 106: {
+ yybegin(MACRODEF);
+ return MACRO_TAG;
+ }
+ // fall through
+ case 215:
+ break;
+ case 107: {
+ return MACRO_TAG;
+ }
+ // fall through
+ case 216:
+ break;
+ case 108: {
+ yybegin(MACROTERMINATION);
+ return MACRO_END_TAG;
+ }
+ // fall through
+ case 217:
+ break;
+ case 109: {
+ yybegin(MACRODEF);
+ yypushback(pushbackAfterFirstToken(yytext()));
+ return MACRO_NAME;
+ }
+ // fall through
+ case 218:
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
index cf369fc..c825f3d 100644
--- a/src/main/gen/de/platon42/intellij/plugins/m68k/parser/M68kParser.java
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/parser/M68kParser.java
@@ -657,6 +657,89 @@ public class M68kParser implements PsiParser, LightPsiParser {
return true;
}
+ /* ********************************************************** */
+ // ((MacroNameDefinition MACRO_TAG)|(MACRO_TAG MacroNameDefinition)) MacroPlainLine* MACRO_END_TAG
+ public static boolean MacroDefinition(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "MacroDefinition")) return false;
+ if (!nextTokenIs(b, "", MACRO_NAME, MACRO_TAG)) return false;
+ boolean r, p;
+ Marker m = enter_section_(b, l, _NONE_, MACRO_DEFINITION, "");
+ r = MacroDefinition_0(b, l + 1);
+ p = r; // pin = 1
+ r = r && report_error_(b, MacroDefinition_1(b, l + 1));
+ r = p && consumeToken(b, MACRO_END_TAG) && r;
+ exit_section_(b, l, m, r, p, null);
+ return r || p;
+ }
+
+ // (MacroNameDefinition MACRO_TAG)|(MACRO_TAG MacroNameDefinition)
+ private static boolean MacroDefinition_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "MacroDefinition_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = MacroDefinition_0_0(b, l + 1);
+ if (!r) r = MacroDefinition_0_1(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // MacroNameDefinition MACRO_TAG
+ private static boolean MacroDefinition_0_0(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "MacroDefinition_0_0")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = MacroNameDefinition(b, l + 1);
+ r = r && consumeToken(b, MACRO_TAG);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // MACRO_TAG MacroNameDefinition
+ private static boolean MacroDefinition_0_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "MacroDefinition_0_1")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeToken(b, MACRO_TAG);
+ r = r && MacroNameDefinition(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
+ // MacroPlainLine*
+ private static boolean MacroDefinition_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "MacroDefinition_1")) return false;
+ while (true) {
+ int c = current_position_(b);
+ if (!MacroPlainLine(b, l + 1)) break;
+ if (!empty_element_parsed_guard_(b, "MacroDefinition_1", c)) break;
+ }
+ return true;
+ }
+
+ /* ********************************************************** */
+ // MACRO_NAME
+ public static boolean MacroNameDefinition(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "MacroNameDefinition")) return false;
+ if (!nextTokenIs(b, MACRO_NAME)) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeToken(b, MACRO_NAME);
+ exit_section_(b, m, MACRO_NAME_DEFINITION, r);
+ return r;
+ }
+
+ /* ********************************************************** */
+ // MACRO_LINE
+ public static boolean MacroPlainLine(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "MacroPlainLine")) return false;
+ if (!nextTokenIs(b, MACRO_LINE)) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = consumeToken(b, MACRO_LINE);
+ exit_section_(b, m, MACRO_PLAIN_LINE, r);
+ return r;
+ }
+
/* ********************************************************** */
// OPSIZE_BS|OPSIZE_W|OPSIZE_L
public static boolean OperandSize(PsiBuilder b, int l) {
@@ -1048,13 +1131,13 @@ public class M68kParser implements PsiParser, LightPsiParser {
}
/* ********************************************************** */
- // !<> statement (<>|EOL)
+ // !<> (MacroDefinition | 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 && line_1(b, l + 1);
r = r && line_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
@@ -1070,6 +1153,17 @@ public class M68kParser implements PsiParser, LightPsiParser {
return r;
}
+ // MacroDefinition | statement
+ private static boolean line_1(PsiBuilder b, int l) {
+ if (!recursion_guard_(b, l, "line_1")) return false;
+ boolean r;
+ Marker m = enter_section_(b);
+ r = MacroDefinition(b, l + 1);
+ if (!r) r = statement(b, l + 1);
+ exit_section_(b, m, null, r);
+ return r;
+ }
+
// <>|EOL
private static boolean line_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "line_2")) return false;
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kMacroDefinition.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kMacroDefinition.java
new file mode 100644
index 0000000..c9647cb
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kMacroDefinition.java
@@ -0,0 +1,16 @@
+// 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 M68kMacroDefinition extends M68kPsiElement {
+
+ @NotNull
+ M68kMacroNameDefinition getMacroNameDefinition();
+
+ @NotNull
+ List getMacroPlainLineList();
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kMacroNameDefinition.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kMacroNameDefinition.java
new file mode 100644
index 0000000..b9f56b9
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kMacroNameDefinition.java
@@ -0,0 +1,6 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+public interface M68kMacroNameDefinition extends M68kPsiElement {
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kMacroPlainLine.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kMacroPlainLine.java
new file mode 100644
index 0000000..7a571d8
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kMacroPlainLine.java
@@ -0,0 +1,6 @@
+// This is a generated file. Not intended for manual editing.
+package de.platon42.intellij.plugins.m68k.psi;
+
+public interface M68kMacroPlainLine extends M68kPsiElement {
+
+}
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
index 1542055..d217d9b 100644
--- a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kTypes.java
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kTypes.java
@@ -51,6 +51,9 @@ public interface M68kTypes {
IElementType LITERAL_EXPR = new M68kElementType("LITERAL_EXPR");
IElementType LOCAL_LABEL = new M68kElementType("LOCAL_LABEL");
IElementType MACRO_CALL = new M68kElementType("MACRO_CALL");
+ IElementType MACRO_DEFINITION = new M68kElementType("MACRO_DEFINITION");
+ IElementType MACRO_NAME_DEFINITION = new M68kElementType("MACRO_NAME_DEFINITION");
+ IElementType MACRO_PLAIN_LINE = new M68kElementType("MACRO_PLAIN_LINE");
IElementType OPERAND_SIZE = new M68kElementType("OPERAND_SIZE");
IElementType PAREN_EXPR = new M68kElementType("PAREN_EXPR");
IElementType PREPROCESSOR_DIRECTIVE = new M68kElementType("PREPROCESSOR_DIRECTIVE");
@@ -86,7 +89,11 @@ public interface M68kTypes {
IElementType HASH = new M68kTokenType("HASH");
IElementType HEXADECIMAL = new M68kTokenType("HEXADECIMAL");
IElementType LOCAL_LABEL_DEF = new M68kTokenType("LOCAL_LABEL_DEF");
+ IElementType MACRO_END_TAG = new M68kTokenType("MACRO_END_TAG");
IElementType MACRO_INVOKATION = new M68kTokenType("MACRO_INVOKATION");
+ IElementType MACRO_LINE = new M68kTokenType("MACRO_LINE");
+ IElementType MACRO_NAME = new M68kTokenType("MACRO_NAME");
+ IElementType MACRO_TAG = new M68kTokenType("MACRO_TAG");
IElementType MNEMONIC = new M68kTokenType("MNEMONIC");
IElementType OCTAL = new M68kTokenType("OCTAL");
IElementType OPSIZE_BS = new M68kTokenType("OPSIZE_BS");
@@ -210,6 +217,12 @@ public interface M68kTypes {
return new M68kLocalLabelImpl(node);
} else if (type == MACRO_CALL) {
return new M68kMacroCallImpl(node);
+ } else if (type == MACRO_DEFINITION) {
+ return new M68kMacroDefinitionImpl(node);
+ } else if (type == MACRO_NAME_DEFINITION) {
+ return new M68kMacroNameDefinitionImpl(node);
+ } else if (type == MACRO_PLAIN_LINE) {
+ return new M68kMacroPlainLineImpl(node);
} else if (type == OPERAND_SIZE) {
return new M68kOperandSizeImpl(node);
} else if (type == PAREN_EXPR) {
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
index 7ba2106..ae33e75 100644
--- a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kVisitor.java
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/M68kVisitor.java
@@ -94,6 +94,18 @@ public class M68kVisitor extends PsiElementVisitor {
visitPsiElement(o);
}
+ public void visitMacroDefinition(@NotNull M68kMacroDefinition o) {
+ visitPsiElement(o);
+ }
+
+ public void visitMacroNameDefinition(@NotNull M68kMacroNameDefinition o) {
+ visitPsiElement(o);
+ }
+
+ public void visitMacroPlainLine(@NotNull M68kMacroPlainLine o) {
+ visitPsiElement(o);
+ }
+
public void visitOperandSize(@NotNull M68kOperandSize o) {
visitPsiElement(o);
}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kMacroDefinitionImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kMacroDefinitionImpl.java
new file mode 100644
index 0000000..ba989fc
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kMacroDefinitionImpl.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.PsiElementVisitor;
+import com.intellij.psi.util.PsiTreeUtil;
+import de.platon42.intellij.plugins.m68k.psi.M68kMacroDefinition;
+import de.platon42.intellij.plugins.m68k.psi.M68kMacroNameDefinition;
+import de.platon42.intellij.plugins.m68k.psi.M68kMacroPlainLine;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+public class M68kMacroDefinitionImpl extends ASTWrapperPsiElement implements M68kMacroDefinition {
+
+ public M68kMacroDefinitionImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitMacroDefinition(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+ @Override
+ @NotNull
+ public M68kMacroNameDefinition getMacroNameDefinition() {
+ return notNullChild(PsiTreeUtil.getChildOfType(this, M68kMacroNameDefinition.class));
+ }
+
+ @Override
+ @NotNull
+ public List getMacroPlainLineList() {
+ return PsiTreeUtil.getChildrenOfTypeAsList(this, M68kMacroPlainLine.class);
+ }
+
+}
diff --git a/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kMacroNameDefinitionImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kMacroNameDefinitionImpl.java
new file mode 100644
index 0000000..4fb3f5a
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kMacroNameDefinitionImpl.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.M68kMacroNameDefinition;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class M68kMacroNameDefinitionImpl extends ASTWrapperPsiElement implements M68kMacroNameDefinition {
+
+ public M68kMacroNameDefinitionImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitMacroNameDefinition(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/M68kMacroPlainLineImpl.java b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kMacroPlainLineImpl.java
new file mode 100644
index 0000000..da3686d
--- /dev/null
+++ b/src/main/gen/de/platon42/intellij/plugins/m68k/psi/impl/M68kMacroPlainLineImpl.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.M68kMacroPlainLine;
+import de.platon42.intellij.plugins.m68k.psi.M68kVisitor;
+import org.jetbrains.annotations.NotNull;
+
+public class M68kMacroPlainLineImpl extends ASTWrapperPsiElement implements M68kMacroPlainLine {
+
+ public M68kMacroPlainLineImpl(@NotNull ASTNode node) {
+ super(node);
+ }
+
+ public void accept(@NotNull M68kVisitor visitor) {
+ visitor.visitMacroPlainLine(this);
+ }
+
+ @Override
+ public void accept(@NotNull PsiElementVisitor visitor) {
+ if (visitor instanceof M68kVisitor) accept((M68kVisitor) visitor);
+ else super.accept(visitor);
+ }
+
+}
diff --git a/src/main/java/de/platon42/intellij/plugins/m68k/lexer/LexerUtil.kt b/src/main/java/de/platon42/intellij/plugins/m68k/lexer/LexerUtil.kt
index e6c7a14..237f649 100644
--- a/src/main/java/de/platon42/intellij/plugins/m68k/lexer/LexerUtil.kt
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/lexer/LexerUtil.kt
@@ -8,6 +8,7 @@ import de.platon42.intellij.plugins.m68k.asm.M68kIsa.mnemonics
object LexerUtil {
private val ASSIGNMENT_SEPARATORS = charArrayOf(' ', '\t', '=', ':')
+ private val TOKEN_SEPARATORS = charArrayOf(' ', '\t')
@JvmStatic
fun isAsmMnemonic(text: CharSequence) = mnemonics.contains(text.toString().lowercase())
@@ -28,6 +29,11 @@ object LexerUtil {
return text.length - text.indexOfAny(ASSIGNMENT_SEPARATORS)
}
+ @JvmStatic
+ fun pushbackAfterFirstToken(text: CharSequence): Int {
+ return text.length - text.indexOfAny(TOKEN_SEPARATORS)
+ }
+
@JvmStatic
fun pushbackLabelColons(text: CharSequence): Int {
return text.count { it == ':' }
@@ -38,7 +44,17 @@ object LexerUtil {
if (!lexer.eatOneWhitespace && lexer.lexerPrefs.spaceIntroducesComment) {
lexer.yybegin(_M68kLexer.WAITEOL)
}
- lexer.eatOneWhitespace = false;
+ lexer.eatOneWhitespace = false
+ return TokenType.WHITE_SPACE
+ }
+
+ @JvmStatic
+ fun handleMacroLineEol(lexer: _M68kLexer): IElementType {
+ if (++lexer.macroLines > lexer.lexerPrefs.maxLinesPerMacro) {
+ lexer.yybegin(_M68kLexer.YYINITIAL)
+ return TokenType.BAD_CHARACTER
+ }
+ lexer.yybegin(_M68kLexer.MACROLINE)
return TokenType.WHITE_SPACE
}
}
\ 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
index e554651..5fc8a5a 100644
--- a/src/main/java/de/platon42/intellij/plugins/m68k/lexer/_M68kLexer.flex
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/lexer/_M68kLexer.flex
@@ -13,6 +13,7 @@ import static de.platon42.intellij.plugins.m68k.lexer.LexerUtil.*;
%{
private M68kLexerPrefs lexerPrefs;
boolean eatOneWhitespace = false;
+ int macroLines = 0;
public M68kLexerPrefs getLexerPrefs()
{
@@ -38,10 +39,12 @@ WHITE_SPACE=\p{Blank}+
AREG=(a[0-6])
DREG=(d[0-7])
ASSIGNMENT=(([:letter:]|_)(([:letter:]|[:digit:])|_)*:?((\p{Blank}+equ\p{Blank}+)|(\p{Blank}+set\p{Blank}+)|\p{Blank}*=\p{Blank}*))
-LOCAL_LABEL=(\.([:letter:]|_)(([:letter:]|[:digit:])|_)*:?)|(([:letter:]|_)(([:letter:]|[:digit:])|_)*\$:?)
-LOCAL_LABEL_WC=(\.([:letter:]|_)(([:letter:]|[:digit:])|_)*:)|(([:letter:]|_)(([:letter:]|[:digit:])|_)*\$:)
-GLOBAL_LABEL=(([:letter:]|_)(([:letter:]|[:digit:])|_)*:?:?)
-GLOBAL_LABEL_WC=(([:letter:]|_)(([:letter:]|[:digit:])|_)*::?)
+LOCAL_LABEL=(\.([:letter:]|_)([:letter:]|[:digit:]|_)*:?)|(([:letter:]|_)([:letter:]|[:digit:]|_)*\$:?)
+LOCAL_LABEL_WC=(\.([:letter:]|_)([:letter:]|[:digit:]|_)*:)|(([:letter:]|_)([:letter:]|[:digit:]|_)*\$:)
+GLOBAL_LABEL=(([:letter:]|_)([:letter:]|[:digit:]|_)*:?:?)
+GLOBAL_LABEL_WC=(([:letter:]|_)([:letter:]|[:digit:]|_)*::?)
+MACRO_DEF_LEFT=(([:letter:]|_)(([:letter:]|[:digit:]|_))*)\p{Blank}+macro\p{Blank}*
+MACRO_END_TAG=\p{Blank}+endm\p{Blank}*[^;\r\n]*
//MNEMONIC=(([:letter:])+)
SYMBOL=(([:letter:]|_|\.)(([:letter:]|[:digit:]|[_\$]))*)
BONUSSYMBOL=(([:letter:]|_|\.)(([:letter:]|[:digit:]|[_\$\.\\]))*)
@@ -59,14 +62,16 @@ PLAINPARAM=(`([^`\\\r\n]|\\.)*`|'([^'\\\r\n]|\\.)*'|\"([^\"\\\r\n]|\\.)*\")|<([^
COMMENT=([;].*+)
HASH_COMMENT=([#;*].*+)
SKIP_TO_EOL=[^\r\n]+
+PLAIN_MACRO_LINE=[^;\r\n]+
-%state NOSOL,INSTRPART,ASMINSTR,ASMOPS,ASMOPS_OP,ASSIGNMENT,EXPR,EXPR_OP,MACROCALL,WAITEOL
+%state NOSOL,INSTRPART,ASMINSTR,ASMOPS,ASMOPS_OP,ASSIGNMENT,EXPR,EXPR_OP,MACROCALL,WAITEOL,MACRODEF,MACROLINE,MACROTERMINATION,MACROWAITEOL
%%
{
{WHITE_SPACE} { yybegin(NOSOL); eatOneWhitespace = false; return WHITE_SPACE; }
{EOL} { return WHITE_SPACE; }
{ASSIGNMENT} { yybegin(ASSIGNMENT); eatOneWhitespace = true; yypushback(pushbackAssignment(yytext())); return SYMBOLDEF; }
+ {MACRO_DEF_LEFT} { yybegin(MACRODEF); yypushback(pushbackAfterFirstToken(yytext())); return MACRO_NAME; }
{LOCAL_LABEL} { yybegin(INSTRPART); eatOneWhitespace = false; yypushback(pushbackLabelColons(yytext())); return LOCAL_LABEL_DEF; }
{GLOBAL_LABEL} { yybegin(INSTRPART); eatOneWhitespace = false; yypushback(pushbackLabelColons(yytext())); return GLOBAL_LABEL_DEF; }
@@ -78,6 +83,7 @@ SKIP_TO_EOL=[^\r\n]+
{EOL} { yybegin(YYINITIAL); return WHITE_SPACE; }
{LOCAL_LABEL_WC} { yybegin(INSTRPART); yypushback(pushbackLabelColons(yytext())); return LOCAL_LABEL_DEF; }
{GLOBAL_LABEL_WC} { yybegin(INSTRPART); yypushback(pushbackLabelColons(yytext())); return GLOBAL_LABEL_DEF; }
+ "macro" { yybegin(MACRODEF); return MACRO_TAG; }
{DIRECTIVE_KEYWORD} {
if(isAsmMnemonicWithSize(yytext())) { yybegin(ASMINSTR); yypushback(2); return MNEMONIC; }
if(isAsmMnemonic(yytext())) { yybegin(ASMINSTR); return MNEMONIC; }
@@ -288,4 +294,35 @@ SKIP_TO_EOL=[^\r\n]+
{SKIP_TO_EOL} { return COMMENT; }
}
+// The macro mess starts here
+
+ {
+ {WHITE_SPACE} { return WHITE_SPACE; }
+ {EOL} { yybegin(MACROLINE); macroLines = 0; return WHITE_SPACE; }
+ "macro" { return MACRO_TAG; }
+ {MACRONAME} { return MACRO_NAME; }
+
+ {COMMENT} { yybegin(MACROWAITEOL); return COMMENT; }
+}
+
+ {
+ {EOL} { return handleMacroLineEol(this); }
+ {MACRO_END_TAG} { yybegin(MACROTERMINATION); return MACRO_END_TAG; }
+
+ {PLAIN_MACRO_LINE} { return MACRO_LINE; }
+ {COMMENT} { yybegin(MACROWAITEOL); return COMMENT; }
+}
+
+ {
+ {WHITE_SPACE} { return WHITE_SPACE; }
+ {EOL} { yybegin(YYINITIAL); return EOL; }
+ {COMMENT} { yybegin(WAITEOL); return COMMENT; }
+}
+
+
+{
+ {EOL} { return handleMacroLineEol(this); }
+ {SKIP_TO_EOL} { 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
index 274d22c..073e1ee 100644
--- a/src/main/java/de/platon42/intellij/plugins/m68k/m68k.bnf
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/m68k.bnf
@@ -118,7 +118,7 @@
M68kFile ::= line*
-private line ::= !<> statement (<>|EOL)
+private line ::= !<> (MacroDefinition | statement) (<>|EOL)
statement ::= (Assignment
| PreprocessorDirective
@@ -170,6 +170,11 @@ AsmOp ::= MNEMONIC OperandSize?
PreprocessorDirective ::= Label? (DATA_DIRECTIVE | OTHER_DIRECTIVE)
PreprocessorOperands?
+MacroPlainLine ::= MACRO_LINE
+MacroNameDefinition ::= MACRO_NAME
+
+MacroDefinition ::= ((MacroNameDefinition MACRO_TAG)|(MACRO_TAG MacroNameDefinition)) MacroPlainLine* MACRO_END_TAG {pin=1}
+
MacroCall ::= MACRO_INVOKATION PlainOperands?
AsmInstruction ::= AsmOp AsmOperands?
private Instruction ::= AsmInstruction | MacroCall
diff --git a/src/main/java/de/platon42/intellij/plugins/m68k/syntax/M68kColorSettingsPage.kt b/src/main/java/de/platon42/intellij/plugins/m68k/syntax/M68kColorSettingsPage.kt
index cd3290a..bad29c6 100644
--- a/src/main/java/de/platon42/intellij/plugins/m68k/syntax/M68kColorSettingsPage.kt
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/syntax/M68kColorSettingsPage.kt
@@ -18,6 +18,9 @@ import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.GLOBAL_LABEL
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.LOCAL_LABEL
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.MACRO_CALL
+import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.MACRO_LINE
+import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.MACRO_NAME_DEF
+import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.MACRO_PREPROCESSOR
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.MNEMONIC
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.NUMBER
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.OTHER_PREPROCESSOR
@@ -26,8 +29,8 @@ import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.SPECIAL_REG
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.STACK_POINTER
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.STRING
-import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.SYMBOLDEF
-import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.SYMBOLREF
+import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.SYMBOL_DEF
+import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.SYMBOL_REF
import org.jetbrains.annotations.NonNls
import javax.swing.Icon
@@ -49,7 +52,7 @@ PIC_HEIGHT = 256
include "../includes/hardware/custom.i"
BLTHOGON MACRO ; macro definition
- move.w #DMAF_SETCLR|DMAF_BLITHOG,dmacon(a5)
+ move.w #DMAF_SETCLR|DMAF_BLITHOG,dmacon(a5) ; hog!
ENDM
demo_init ; global label
@@ -99,9 +102,12 @@ hello: dc.b 'Hello World!',10,0
AttributesDescriptor("Local labels", LOCAL_LABEL),
AttributesDescriptor("Comma (separator)", SEPARATOR),
AttributesDescriptor("Colon", COLON),
- AttributesDescriptor("Symbol definition", SYMBOLDEF),
- AttributesDescriptor("Symbol reference", SYMBOLREF),
+ AttributesDescriptor("Symbol definition", SYMBOL_DEF),
+ AttributesDescriptor("Symbol reference", SYMBOL_REF),
AttributesDescriptor("Assembly mnemonic", MNEMONIC),
+ AttributesDescriptor("Macro name definition", MACRO_NAME_DEF),
+ AttributesDescriptor("Macro preprocessor directives", MACRO_PREPROCESSOR),
+ AttributesDescriptor("Macro line", MACRO_LINE),
AttributesDescriptor("Macro invocation", MACRO_CALL),
AttributesDescriptor("Data width: Byte/short", DATA_WIDTH_BS),
AttributesDescriptor("Data width: Word", DATA_WIDTH_W),
diff --git a/src/main/java/de/platon42/intellij/plugins/m68k/syntax/M68kSyntaxHighlighter.kt b/src/main/java/de/platon42/intellij/plugins/m68k/syntax/M68kSyntaxHighlighter.kt
index fab466d..eb5cdc8 100644
--- a/src/main/java/de/platon42/intellij/plugins/m68k/syntax/M68kSyntaxHighlighter.kt
+++ b/src/main/java/de/platon42/intellij/plugins/m68k/syntax/M68kSyntaxHighlighter.kt
@@ -28,11 +28,14 @@ class M68kSyntaxHighlighter(val project: Project?) : SyntaxHighlighterBase() {
M68kTypes.COLON -> arrayOf(COLON)
M68kTypes.GLOBAL_LABEL_DEF -> arrayOf(GLOBAL_LABEL)
M68kTypes.LOCAL_LABEL_DEF -> arrayOf(LOCAL_LABEL)
- M68kTypes.SYMBOLDEF -> arrayOf(SYMBOLDEF)
- M68kTypes.SYMBOL -> arrayOf(SYMBOLREF)
+ M68kTypes.SYMBOLDEF -> arrayOf(SYMBOL_DEF)
+ M68kTypes.SYMBOL -> arrayOf(SYMBOL_REF)
M68kTypes.CURRENT_PC_SYMBOL, M68kTypes.PC -> arrayOf(PROGRAM_COUNTER)
M68kTypes.MNEMONIC -> arrayOf(MNEMONIC)
+ M68kTypes.MACRO_TAG, M68kTypes.MACRO_END_TAG -> arrayOf(MACRO_PREPROCESSOR)
+ M68kTypes.MACRO_LINE -> arrayOf(MACRO_LINE)
M68kTypes.MACRO_INVOKATION -> arrayOf(MACRO_CALL)
+ M68kTypes.MACRO_NAME -> arrayOf(MACRO_NAME_DEF)
M68kTypes.DATA_DIRECTIVE -> arrayOf(DATA_PREPROCESSOR)
M68kTypes.OTHER_DIRECTIVE, M68kTypes.EQU -> arrayOf(OTHER_PREPROCESSOR)
M68kTypes.OPSIZE_BS -> arrayOf(DATA_WIDTH_BS)
@@ -55,9 +58,12 @@ class M68kSyntaxHighlighter(val project: Project?) : SyntaxHighlighterBase() {
val LOCAL_LABEL = TextAttributesKey.createTextAttributesKey("MC68000_GLOBAL_LABEL", DefaultLanguageHighlighterColors.FUNCTION_DECLARATION)
val SEPARATOR = TextAttributesKey.createTextAttributesKey("MC68000_SEPARATOR", DefaultLanguageHighlighterColors.COMMA)
val COLON = TextAttributesKey.createTextAttributesKey("MC68000_COLON", DefaultLanguageHighlighterColors.DOT)
- val SYMBOLDEF = TextAttributesKey.createTextAttributesKey("MC68000_SYMBOLDEF", DefaultLanguageHighlighterColors.CONSTANT)
- val SYMBOLREF = TextAttributesKey.createTextAttributesKey("MC68000_SYMBOLREF", DefaultLanguageHighlighterColors.IDENTIFIER)
+ val SYMBOL_DEF = TextAttributesKey.createTextAttributesKey("MC68000_SYMBOLDEF", DefaultLanguageHighlighterColors.CONSTANT)
+ val SYMBOL_REF = TextAttributesKey.createTextAttributesKey("MC68000_SYMBOLREF", DefaultLanguageHighlighterColors.IDENTIFIER)
val MNEMONIC = TextAttributesKey.createTextAttributesKey("MC68000_MNEMONIC", DefaultLanguageHighlighterColors.FUNCTION_CALL)
+ val MACRO_PREPROCESSOR = TextAttributesKey.createTextAttributesKey("MC68000_MACRO_PREPROCESSOR", DefaultLanguageHighlighterColors.INSTANCE_METHOD)
+ val MACRO_NAME_DEF = TextAttributesKey.createTextAttributesKey("MC68000_MACRO_NAME_DEF", DefaultLanguageHighlighterColors.METADATA)
+ val MACRO_LINE = TextAttributesKey.createTextAttributesKey("MC68000_MACRO_LINE", DefaultLanguageHighlighterColors.METADATA)
val MACRO_CALL = TextAttributesKey.createTextAttributesKey("MC68000_MACRO_CALL", DefaultLanguageHighlighterColors.STATIC_METHOD)
val DATA_WIDTH_BS = TextAttributesKey.createTextAttributesKey("MC68000_DATA_WIDTH_BS", DefaultLanguageHighlighterColors.DOT)
val DATA_WIDTH_L = TextAttributesKey.createTextAttributesKey("MC68000_DATA_WIDTH_W", DefaultLanguageHighlighterColors.DOT)
diff --git a/src/test/java/de/platon42/intellij/plugins/m68k/parser/MacroDefinitionTest.kt b/src/test/java/de/platon42/intellij/plugins/m68k/parser/MacroDefinitionTest.kt
new file mode 100644
index 0000000..2d0fc90
--- /dev/null
+++ b/src/test/java/de/platon42/intellij/plugins/m68k/parser/MacroDefinitionTest.kt
@@ -0,0 +1,66 @@
+package de.platon42.intellij.plugins.m68k.parser
+
+import de.platon42.intellij.jupiter.MyTestCase
+import de.platon42.intellij.jupiter.ParsingTestExtension
+import de.platon42.intellij.jupiter.TestDataSubPath
+import org.junit.jupiter.api.Test
+
+@TestDataSubPath("macros")
+internal class MacroDefinitionTest : AbstractParsingTest() {
+
+ @Test
+ internal fun macro_with_name_left(@MyTestCase testCase: ParsingTestExtension.IParsingTestCase) {
+ testGoodSyntax(
+ testCase, """
+FOOBAR MACRO ; start of macro
+.loop\@ move.l \1,(\2)+ ; just copy all the stuff
+ dbra \3,.loop\@
+ ENDM ; end of macro
+
+ move.w d0,d1
+"""
+ )
+ }
+
+ @Test
+ internal fun macro_with_name_right(@MyTestCase testCase: ParsingTestExtension.IParsingTestCase) {
+ testGoodSyntax(
+ testCase, """
+ MACRO FOOBAR ; start of macro
+.loop\@ move.l \1,(\2)+ ; just copy all the stuff
+ dbra \3,.loop\@
+ ENDM ; end of macro
+label: move.w d0,d1
+"""
+ )
+ }
+
+ @Test
+ internal fun empty_macro(@MyTestCase testCase: ParsingTestExtension.IParsingTestCase) {
+ testGoodSyntax(
+ testCase, """
+ MACRO FOOBAR
+ ENDM
+NARF = 100
+"""
+ )
+ }
+
+ @Test
+ internal fun two_macro_definitions_in_succession(@MyTestCase testCase: ParsingTestExtension.IParsingTestCase) {
+ testGoodSyntax(
+ testCase, """
+ MACRO FOOBAR1
+.loop\@ move.l \1,(\2)+
+ dbra \3,.loop\@
+ ENDM
+ MACRO FOOBAR2
+.loop\@ move.w \1,(\2)+
+ dbra \3,.loop\@
+ ENDM
+label: move.w d0,d1
+"""
+ )
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/resources/parser/macros/empty_macro.txt b/src/test/resources/parser/macros/empty_macro.txt
new file mode 100644
index 0000000..24c9192
--- /dev/null
+++ b/src/test/resources/parser/macros/empty_macro.txt
@@ -0,0 +1,21 @@
+Assembly File: a.asm
+ PsiWhiteSpace('\n')
+ PsiWhiteSpace(' ')
+ M68kMacroDefinitionImpl(MACRO_DEFINITION)
+ PsiElement(M68kTokenType.MACRO_TAG)('MACRO')
+ PsiWhiteSpace(' ')
+ M68kMacroNameDefinitionImpl(MACRO_NAME_DEFINITION)
+ PsiElement(M68kTokenType.MACRO_NAME)('FOOBAR')
+ PsiWhiteSpace('\n')
+ PsiElement(M68kTokenType.MACRO_END_TAG)(' ENDM')
+ PsiElement(M68kTokenType.EOL)('\n')
+ M68kStatementImpl(STATEMENT)
+ M68kAssignmentImpl(ASSIGNMENT)
+ M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
+ PsiElement(M68kTokenType.SYMBOLDEF)('NARF')
+ PsiWhiteSpace(' ')
+ PsiElement(M68kTokenType.OP_ASSIGN)('=')
+ PsiWhiteSpace(' ')
+ M68kLiteralExprImpl(LITERAL_EXPR)
+ PsiElement(M68kTokenType.DECIMAL)('100')
+ PsiElement(M68kTokenType.EOL)('\n')
\ No newline at end of file
diff --git a/src/test/resources/parser/macros/macro_with_name_left.txt b/src/test/resources/parser/macros/macro_with_name_left.txt
new file mode 100644
index 0000000..d8ce28c
--- /dev/null
+++ b/src/test/resources/parser/macros/macro_with_name_left.txt
@@ -0,0 +1,37 @@
+Assembly File: a.asm
+ PsiWhiteSpace('\n')
+ M68kMacroDefinitionImpl(MACRO_DEFINITION)
+ M68kMacroNameDefinitionImpl(MACRO_NAME_DEFINITION)
+ PsiElement(M68kTokenType.MACRO_NAME)('FOOBAR')
+ PsiWhiteSpace(' ')
+ PsiElement(M68kTokenType.MACRO_TAG)('MACRO')
+ PsiWhiteSpace(' ')
+ PsiComment(M68kTokenType.COMMENT)('; start of macro')
+ PsiWhiteSpace('\n')
+ M68kMacroPlainLineImpl(MACRO_PLAIN_LINE)
+ PsiElement(M68kTokenType.MACRO_LINE)('.loop\@ move.l \1,(\2)+ ')
+ PsiComment(M68kTokenType.COMMENT)('; just copy all the stuff')
+ PsiWhiteSpace('\n')
+ M68kMacroPlainLineImpl(MACRO_PLAIN_LINE)
+ PsiElement(M68kTokenType.MACRO_LINE)(' dbra \3,.loop\@')
+ PsiWhiteSpace('\n')
+ PsiElement(M68kTokenType.MACRO_END_TAG)(' ENDM ')
+ PsiComment(M68kTokenType.COMMENT)('; end of macro')
+ PsiElement(M68kTokenType.EOL)('\n')
+ PsiWhiteSpace('\n')
+ PsiWhiteSpace(' ')
+ M68kStatementImpl(STATEMENT)
+ M68kAsmInstructionImpl(ASM_INSTRUCTION)
+ M68kAsmOpImpl(ASM_OP)
+ PsiElement(M68kTokenType.MNEMONIC)('move')
+ M68kOperandSizeImpl(OPERAND_SIZE)
+ PsiElement(M68kTokenType.OPSIZE_W)('.w')
+ PsiWhiteSpace(' ')
+ M68kDataRegisterDirectAddressingModeImpl(DATA_REGISTER_DIRECT_ADDRESSING_MODE)
+ M68kDataRegisterImpl(DATA_REGISTER)
+ PsiElement(M68kTokenType.DREG)('d0')
+ PsiElement(M68kTokenType.SEPARATOR)(',')
+ M68kDataRegisterDirectAddressingModeImpl(DATA_REGISTER_DIRECT_ADDRESSING_MODE)
+ M68kDataRegisterImpl(DATA_REGISTER)
+ PsiElement(M68kTokenType.DREG)('d1')
+ PsiElement(M68kTokenType.EOL)('\n')
\ No newline at end of file
diff --git a/src/test/resources/parser/macros/macro_with_name_right.txt b/src/test/resources/parser/macros/macro_with_name_right.txt
new file mode 100644
index 0000000..b0023fb
--- /dev/null
+++ b/src/test/resources/parser/macros/macro_with_name_right.txt
@@ -0,0 +1,40 @@
+Assembly File: a.asm
+ PsiWhiteSpace('\n')
+ PsiWhiteSpace(' ')
+ M68kMacroDefinitionImpl(MACRO_DEFINITION)
+ PsiElement(M68kTokenType.MACRO_TAG)('MACRO')
+ PsiWhiteSpace(' ')
+ M68kMacroNameDefinitionImpl(MACRO_NAME_DEFINITION)
+ PsiElement(M68kTokenType.MACRO_NAME)('FOOBAR')
+ PsiWhiteSpace(' ')
+ PsiComment(M68kTokenType.COMMENT)('; start of macro')
+ PsiWhiteSpace('\n')
+ M68kMacroPlainLineImpl(MACRO_PLAIN_LINE)
+ PsiElement(M68kTokenType.MACRO_LINE)('.loop\@ move.l \1,(\2)+ ')
+ PsiComment(M68kTokenType.COMMENT)('; just copy all the stuff')
+ PsiWhiteSpace('\n')
+ M68kMacroPlainLineImpl(MACRO_PLAIN_LINE)
+ PsiElement(M68kTokenType.MACRO_LINE)(' dbra \3,.loop\@')
+ PsiWhiteSpace('\n')
+ PsiElement(M68kTokenType.MACRO_END_TAG)(' ENDM ')
+ PsiComment(M68kTokenType.COMMENT)('; end of macro')
+ PsiElement(M68kTokenType.EOL)('\n')
+ M68kStatementImpl(STATEMENT)
+ M68kGlobalLabelImpl(GLOBAL_LABEL)
+ PsiElement(M68kTokenType.GLOBAL_LABEL_DEF)('label')
+ PsiElement(M68kTokenType.COLON)(':')
+ PsiWhiteSpace(' ')
+ M68kAsmInstructionImpl(ASM_INSTRUCTION)
+ M68kAsmOpImpl(ASM_OP)
+ PsiElement(M68kTokenType.MNEMONIC)('move')
+ M68kOperandSizeImpl(OPERAND_SIZE)
+ PsiElement(M68kTokenType.OPSIZE_W)('.w')
+ PsiWhiteSpace(' ')
+ M68kDataRegisterDirectAddressingModeImpl(DATA_REGISTER_DIRECT_ADDRESSING_MODE)
+ M68kDataRegisterImpl(DATA_REGISTER)
+ PsiElement(M68kTokenType.DREG)('d0')
+ PsiElement(M68kTokenType.SEPARATOR)(',')
+ M68kDataRegisterDirectAddressingModeImpl(DATA_REGISTER_DIRECT_ADDRESSING_MODE)
+ M68kDataRegisterImpl(DATA_REGISTER)
+ PsiElement(M68kTokenType.DREG)('d1')
+ PsiElement(M68kTokenType.EOL)('\n')
\ No newline at end of file
diff --git a/src/test/resources/parser/macros/two_macro_definitions_in_succession.txt b/src/test/resources/parser/macros/two_macro_definitions_in_succession.txt
new file mode 100644
index 0000000..5807fc7
--- /dev/null
+++ b/src/test/resources/parser/macros/two_macro_definitions_in_succession.txt
@@ -0,0 +1,51 @@
+Assembly File: a.asm
+ PsiWhiteSpace('\n')
+ PsiWhiteSpace(' ')
+ M68kMacroDefinitionImpl(MACRO_DEFINITION)
+ PsiElement(M68kTokenType.MACRO_TAG)('MACRO')
+ PsiWhiteSpace(' ')
+ M68kMacroNameDefinitionImpl(MACRO_NAME_DEFINITION)
+ PsiElement(M68kTokenType.MACRO_NAME)('FOOBAR1')
+ PsiWhiteSpace('\n')
+ M68kMacroPlainLineImpl(MACRO_PLAIN_LINE)
+ PsiElement(M68kTokenType.MACRO_LINE)('.loop\@ move.l \1,(\2)+')
+ PsiWhiteSpace('\n')
+ M68kMacroPlainLineImpl(MACRO_PLAIN_LINE)
+ PsiElement(M68kTokenType.MACRO_LINE)(' dbra \3,.loop\@')
+ PsiWhiteSpace('\n')
+ PsiElement(M68kTokenType.MACRO_END_TAG)(' ENDM')
+ PsiElement(M68kTokenType.EOL)('\n')
+ PsiWhiteSpace(' ')
+ M68kMacroDefinitionImpl(MACRO_DEFINITION)
+ PsiElement(M68kTokenType.MACRO_TAG)('MACRO')
+ PsiWhiteSpace(' ')
+ M68kMacroNameDefinitionImpl(MACRO_NAME_DEFINITION)
+ PsiElement(M68kTokenType.MACRO_NAME)('FOOBAR2')
+ PsiWhiteSpace('\n')
+ M68kMacroPlainLineImpl(MACRO_PLAIN_LINE)
+ PsiElement(M68kTokenType.MACRO_LINE)('.loop\@ move.w \1,(\2)+')
+ PsiWhiteSpace('\n')
+ M68kMacroPlainLineImpl(MACRO_PLAIN_LINE)
+ PsiElement(M68kTokenType.MACRO_LINE)(' dbra \3,.loop\@')
+ PsiWhiteSpace('\n')
+ PsiElement(M68kTokenType.MACRO_END_TAG)(' ENDM')
+ PsiElement(M68kTokenType.EOL)('\n')
+ M68kStatementImpl(STATEMENT)
+ M68kGlobalLabelImpl(GLOBAL_LABEL)
+ PsiElement(M68kTokenType.GLOBAL_LABEL_DEF)('label')
+ PsiElement(M68kTokenType.COLON)(':')
+ PsiWhiteSpace(' ')
+ M68kAsmInstructionImpl(ASM_INSTRUCTION)
+ M68kAsmOpImpl(ASM_OP)
+ PsiElement(M68kTokenType.MNEMONIC)('move')
+ M68kOperandSizeImpl(OPERAND_SIZE)
+ PsiElement(M68kTokenType.OPSIZE_W)('.w')
+ PsiWhiteSpace(' ')
+ M68kDataRegisterDirectAddressingModeImpl(DATA_REGISTER_DIRECT_ADDRESSING_MODE)
+ M68kDataRegisterImpl(DATA_REGISTER)
+ PsiElement(M68kTokenType.DREG)('d0')
+ PsiElement(M68kTokenType.SEPARATOR)(',')
+ M68kDataRegisterDirectAddressingModeImpl(DATA_REGISTER_DIRECT_ADDRESSING_MODE)
+ M68kDataRegisterImpl(DATA_REGISTER)
+ PsiElement(M68kTokenType.DREG)('d1')
+ PsiElement(M68kTokenType.EOL)('\n')
\ No newline at end of file