Added separate syntax highlighting for stack pointer vs. normal address registers.
This commit is contained in:
@@ -35,7 +35,7 @@ import static de.platon42.intellij.plugins.m68k.lexer.LexerUtil.*;
|
||||
|
||||
EOL=\R
|
||||
WHITE_SPACE=\p{Blank}+
|
||||
AREG=((a[0-7])|sp)
|
||||
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:])|_)*\$:?)
|
||||
@@ -216,6 +216,7 @@ SKIP_TO_EOL=[^\r\n]+
|
||||
|
||||
{AREG} { yybegin(ASMOPS_OP); return AREG; }
|
||||
{DREG} { yybegin(ASMOPS_OP); return DREG; }
|
||||
"sp"|"a7" { yybegin(ASMOPS_OP); return REG_SP; }
|
||||
"pc" { yybegin(ASMOPS_OP); return PC; }
|
||||
"ccr" { yybegin(ASMOPS_OP); return REG_CCR; }
|
||||
"sr" { yybegin(ASMOPS_OP); return REG_SR; }
|
||||
|
||||
@@ -195,7 +195,7 @@ DataRegister ::= DREG {
|
||||
extends = Register
|
||||
}
|
||||
|
||||
AddressRegister ::= AREG {
|
||||
AddressRegister ::= AREG | REG_SP {
|
||||
name = "address register"
|
||||
extends = Register
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.
|
||||
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.PROGRAM_COUNTER
|
||||
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.SEPARATOR
|
||||
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
|
||||
@@ -65,6 +66,12 @@ demo_init ; global label
|
||||
POPM
|
||||
.skip rts
|
||||
|
||||
irq: move.l a0,-(sp)
|
||||
move usp,a0
|
||||
move.l a0,$400.w
|
||||
move.l (sp)+,a0
|
||||
rte
|
||||
|
||||
hello: dc.b 'Hello World!',10,0
|
||||
even
|
||||
dc.w *-hello ; length of string
|
||||
@@ -97,17 +104,18 @@ hello: dc.b 'Hello World!',10,0
|
||||
AttributesDescriptor("Symbol reference", SYMBOLREF),
|
||||
AttributesDescriptor("Assembly mnemonic", MNEMONIC),
|
||||
AttributesDescriptor("Macro invocation", MACRO_CALL),
|
||||
AttributesDescriptor("Byte/short data width", DATA_WIDTH_BS),
|
||||
AttributesDescriptor("Word data width", DATA_WIDTH_W),
|
||||
AttributesDescriptor("Long data width", DATA_WIDTH_L),
|
||||
AttributesDescriptor("Data width: Byte/short", DATA_WIDTH_BS),
|
||||
AttributesDescriptor("Data width: Word", DATA_WIDTH_W),
|
||||
AttributesDescriptor("Data width: Long", DATA_WIDTH_L),
|
||||
AttributesDescriptor("Data preprocessor directives", DATA_PREPROCESSOR),
|
||||
AttributesDescriptor("Other preprocessor directives", OTHER_PREPROCESSOR),
|
||||
AttributesDescriptor("Strings", STRING),
|
||||
AttributesDescriptor("Numbers", NUMBER),
|
||||
AttributesDescriptor("Address registers", AREG),
|
||||
AttributesDescriptor("Data registers", DREG),
|
||||
AttributesDescriptor("Program counter", PROGRAM_COUNTER),
|
||||
AttributesDescriptor("Special registers", SPECIAL_REG),
|
||||
AttributesDescriptor("Registers: Address registers", AREG),
|
||||
AttributesDescriptor("Registers: Stack pointer", STACK_POINTER),
|
||||
AttributesDescriptor("Registers: Data registers", DREG),
|
||||
AttributesDescriptor("Registers: Program counter", PROGRAM_COUNTER),
|
||||
AttributesDescriptor("Registers: Special registers", SPECIAL_REG),
|
||||
AttributesDescriptor("Comments", COMMENT),
|
||||
AttributesDescriptor("Bad characters", BAD_CHARACTER)
|
||||
)
|
||||
|
||||
@@ -39,6 +39,7 @@ class M68kSyntaxHighlighter(val project: Project?) : SyntaxHighlighterBase() {
|
||||
M68kTypes.OPSIZE_W -> arrayOf(DATA_WIDTH_W)
|
||||
M68kTypes.OPSIZE_L -> arrayOf(DATA_WIDTH_L)
|
||||
M68kTypes.AREG -> arrayOf(AREG)
|
||||
M68kTypes.REG_SP -> arrayOf(STACK_POINTER)
|
||||
M68kTypes.DREG -> arrayOf(DREG)
|
||||
M68kTypes.REG_USP, M68kTypes.REG_SR, M68kTypes.REG_CCR, M68kTypes.REG_VBR -> arrayOf(SPECIAL_REG)
|
||||
M68kTypes.COMMENT -> arrayOf(COMMENT)
|
||||
@@ -66,6 +67,7 @@ class M68kSyntaxHighlighter(val project: Project?) : SyntaxHighlighterBase() {
|
||||
val STRING = TextAttributesKey.createTextAttributesKey("MC68000_STRING", DefaultLanguageHighlighterColors.STRING)
|
||||
val NUMBER = TextAttributesKey.createTextAttributesKey("MC68000_NUMBER", DefaultLanguageHighlighterColors.NUMBER)
|
||||
val AREG = TextAttributesKey.createTextAttributesKey("MC68000_AREG", DefaultLanguageHighlighterColors.PARAMETER)
|
||||
val STACK_POINTER = TextAttributesKey.createTextAttributesKey("MC68000_SP", DefaultLanguageHighlighterColors.PARAMETER)
|
||||
val DREG = TextAttributesKey.createTextAttributesKey("MC68000_DREG", DefaultLanguageHighlighterColors.PARAMETER)
|
||||
val SPECIAL_REG = TextAttributesKey.createTextAttributesKey("MC68000_SPECIALREG", DefaultLanguageHighlighterColors.PARAMETER)
|
||||
val PROGRAM_COUNTER = TextAttributesKey.createTextAttributesKey("MC68000_PROGRAM_COUNTER", DefaultLanguageHighlighterColors.PARAMETER)
|
||||
|
||||
Reference in New Issue
Block a user