Split up opsizes for better syntax highlighting. Fixed bug in macro-call lexer.
This commit is contained in:
@@ -34,10 +34,12 @@ LOCAL_LABEL_WC=(\.([:letter:]|_)(([:letter:]|[:digit:])|_)*:)|(([:letter:]|_)(([
|
||||
GLOBAL_LABEL=(([:letter:]|_)(([:letter:]|[:digit:])|_)*:?:?)
|
||||
GLOBAL_LABEL_WC=(([:letter:]|_)(([:letter:]|[:digit:])|_)*::?)
|
||||
//MNEMONIC=(([:letter:])+)
|
||||
SYMBOL=(([:letter:]|_|\.)(([:letter:]|[:digit:])|[_\$])*)
|
||||
SYMBOL=(([:letter:]|_|\.)(([:letter:]|[:digit:]|[_\$]))*)
|
||||
MACRONAME=(([:letter:]|_)(([:letter:]|[:digit:]|_))*)
|
||||
DIRECTIVE_KEYWORD=(([:letter:])(([:letter:]))*)(\..)?
|
||||
OPSIZE_BS=(\.[bs])
|
||||
OPSIZE_WL=(\.[wl])
|
||||
OPSIZE_W=(\.w)
|
||||
OPSIZE_L=(\.l)
|
||||
BINARY=(%[01]+)
|
||||
HEXADECIMAL=(\$[0-9a-f]+)
|
||||
OCTAL=(@[0-7]+)
|
||||
@@ -73,7 +75,7 @@ HASH_COMMENT=([#;*].*+)
|
||||
yybegin(MACROCALL); return MACRO_INVOKATION;
|
||||
}
|
||||
// {MNEMONIC} { if(isAsmMnemonic(yytext())) { yybegin(ASMINSTR); return MNEMONIC; } else { yybegin(INSTRPART); return SYMBOL; } }
|
||||
{SYMBOL} { yybegin(MACROCALL); return SYMBOL; }
|
||||
{MACRONAME} { yybegin(MACROCALL); return MACRO_INVOKATION; }
|
||||
{HASH_COMMENT} { yybegin(YYINITIAL); return COMMENT; }
|
||||
}
|
||||
|
||||
@@ -89,7 +91,7 @@ HASH_COMMENT=([#;*].*+)
|
||||
yybegin(MACROCALL); return MACRO_INVOKATION;
|
||||
}
|
||||
// {MNEMONIC} { if(isAsmMnemonic(yytext())) { yybegin(ASMINSTR); return MNEMONIC; } else { return SYMBOL; } }
|
||||
{SYMBOL} { yybegin(MACROCALL); return MACRO_INVOKATION; }
|
||||
{MACRONAME} { yybegin(MACROCALL); return MACRO_INVOKATION; }
|
||||
|
||||
{COMMENT} { yybegin(WAITEOL); return COMMENT; }
|
||||
}
|
||||
@@ -99,7 +101,8 @@ HASH_COMMENT=([#;*].*+)
|
||||
{EOL} { yybegin(YYINITIAL); return EOL; }
|
||||
|
||||
{OPSIZE_BS} { return OPSIZE_BS; }
|
||||
{OPSIZE_WL} { return OPSIZE_WL; }
|
||||
{OPSIZE_W} { return OPSIZE_W; }
|
||||
{OPSIZE_L} { return OPSIZE_L; }
|
||||
|
||||
{COMMENT} { yybegin(WAITEOL); return COMMENT; }
|
||||
}
|
||||
@@ -184,7 +187,8 @@ HASH_COMMENT=([#;*].*+)
|
||||
{STRINGLIT} { return STRINGLIT; }
|
||||
|
||||
{OPSIZE_BS} { return OPSIZE_BS; }
|
||||
{OPSIZE_WL} { return OPSIZE_WL; }
|
||||
{OPSIZE_W} { return OPSIZE_W; }
|
||||
{OPSIZE_L} { return OPSIZE_L; }
|
||||
|
||||
{AREG} { return AREG; }
|
||||
{DREG} { return DREG; }
|
||||
|
||||
@@ -138,9 +138,9 @@ LocalLabel ::= LOCAL_LABEL_DEF {extends=Label}
|
||||
GlobalLabel ::= GLOBAL_LABEL_DEF {extends=Label}
|
||||
Label ::= LocalLabel | GlobalLabel
|
||||
|
||||
OperandSize ::= (OPSIZE_BS|OPSIZE_WL)
|
||||
AddressSize ::= OPSIZE_WL
|
||||
DataWidth ::= OPSIZE_WL
|
||||
OperandSize ::= (OPSIZE_BS|OPSIZE_W|OPSIZE_L)
|
||||
AddressSize ::= (OPSIZE_W|OPSIZE_L)
|
||||
DataWidth ::= (OPSIZE_W|OPSIZE_L)
|
||||
|
||||
AsmOp ::= MNEMONIC OperandSize?
|
||||
|
||||
|
||||
@@ -11,7 +11,9 @@ import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.
|
||||
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.BAD_CHARACTER
|
||||
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.COMMENT
|
||||
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.DATA_PREPROCESSOR
|
||||
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.DATA_WIDTH
|
||||
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.DATA_WIDTH_BS
|
||||
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.DATA_WIDTH_L
|
||||
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.DATA_WIDTH_W
|
||||
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.DREG
|
||||
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.GLOBAL_LABEL
|
||||
import de.platon42.intellij.plugins.m68k.syntax.M68kSyntaxHighlighter.Companion.LOCAL_LABEL
|
||||
@@ -44,19 +46,21 @@ PIC_HEIGHT = 256
|
||||
|
||||
include "../includes/hardware/custom.i"
|
||||
|
||||
BLTHOGON MACRO
|
||||
BLTHOGON MACRO ; macro definition
|
||||
move.w #DMAF_SETCLR|DMAF_BLITHOG,dmacon(a5)
|
||||
ENDM
|
||||
|
||||
demo_init ; global label
|
||||
PUSHM d0-d7/a0-a6 ; this is a macro
|
||||
lea pd_ModViewTable(a4),a0
|
||||
tst.w d1
|
||||
beq.s .skip
|
||||
PUSHM d0-d7/a0-a6 ; this is a macro call
|
||||
lea pd_ModViewTable(a4,d1.w),a0
|
||||
moveq.l #0,d0
|
||||
move.w #PIC_HEIGHT-1,d7
|
||||
.loop move.l d0,(a0)+ ; local label
|
||||
dbra d7,.loop
|
||||
POPM
|
||||
rts
|
||||
.skip rts
|
||||
|
||||
hello: dc.b 'Hello World!',10,0
|
||||
even
|
||||
@@ -88,7 +92,9 @@ hello: dc.b 'Hello World!',10,0
|
||||
AttributesDescriptor("Symbol reference", SYMBOL),
|
||||
AttributesDescriptor("Assembly mnemonic", MNEMONIC),
|
||||
AttributesDescriptor("Macro invocation", MACRO_CALL),
|
||||
AttributesDescriptor("Data/address width", DATA_WIDTH),
|
||||
AttributesDescriptor("Byte/short data width", DATA_WIDTH_BS),
|
||||
AttributesDescriptor("Word data width", DATA_WIDTH_W),
|
||||
AttributesDescriptor("Long data width", DATA_WIDTH_L),
|
||||
AttributesDescriptor("Data preprocessor directives", DATA_PREPROCESSOR),
|
||||
AttributesDescriptor("Other preprocessor directives", OTHER_PREPROCESSOR),
|
||||
AttributesDescriptor("Strings", STRING),
|
||||
|
||||
@@ -26,7 +26,9 @@ class M68kSyntaxHighlighter : SyntaxHighlighterBase() {
|
||||
M68kTypes.MACRO_INVOKATION -> arrayOf(MACRO_CALL)
|
||||
M68kTypes.DATA_DIRECTIVE -> arrayOf(DATA_PREPROCESSOR)
|
||||
M68kTypes.OTHER_DIRECTIVE -> arrayOf(OTHER_PREPROCESSOR)
|
||||
M68kTypes.OPSIZE_BS, M68kTypes.OPSIZE_WL -> arrayOf(DATA_WIDTH)
|
||||
M68kTypes.OPSIZE_BS -> arrayOf(DATA_WIDTH_BS)
|
||||
M68kTypes.OPSIZE_W -> arrayOf(DATA_WIDTH_W)
|
||||
M68kTypes.OPSIZE_L -> arrayOf(DATA_WIDTH_L)
|
||||
M68kTypes.ADDRESS_REGISTER, M68kTypes.AREG -> arrayOf(AREG)
|
||||
M68kTypes.DATA_REGISTER, M68kTypes.DREG -> arrayOf(DREG)
|
||||
M68kTypes.SPECIAL_REGISTER, M68kTypes.REG_USP, M68kTypes.REG_SR, M68kTypes.REG_CCR -> arrayOf(SPECIAL_REG)
|
||||
@@ -46,7 +48,9 @@ class M68kSyntaxHighlighter : SyntaxHighlighterBase() {
|
||||
val SYMBOL = TextAttributesKey.createTextAttributesKey("M68K_SYMBOL", DefaultLanguageHighlighterColors.IDENTIFIER)
|
||||
val MNEMONIC = TextAttributesKey.createTextAttributesKey("M68K_MNEMONIC", DefaultLanguageHighlighterColors.FUNCTION_CALL)
|
||||
val MACRO_CALL = TextAttributesKey.createTextAttributesKey("M68K_MACRO_CALL", DefaultLanguageHighlighterColors.STATIC_METHOD)
|
||||
val DATA_WIDTH = TextAttributesKey.createTextAttributesKey("M68K_DATA_WIDTH", DefaultLanguageHighlighterColors.INSTANCE_METHOD)
|
||||
val DATA_WIDTH_BS = TextAttributesKey.createTextAttributesKey("M68K_DATA_WIDTH_BS", DefaultLanguageHighlighterColors.DOT)
|
||||
val DATA_WIDTH_L = TextAttributesKey.createTextAttributesKey("M68K_DATA_WIDTH_W", DefaultLanguageHighlighterColors.DOT)
|
||||
val DATA_WIDTH_W = TextAttributesKey.createTextAttributesKey("M68K_DATA_WIDTH_L", DefaultLanguageHighlighterColors.DOT)
|
||||
val DATA_PREPROCESSOR = TextAttributesKey.createTextAttributesKey("M68K_DATA_PREPROCESSOR", DefaultLanguageHighlighterColors.CONSTANT)
|
||||
val OTHER_PREPROCESSOR = TextAttributesKey.createTextAttributesKey("M68K_OTHER_PREPROCESSOR", DefaultLanguageHighlighterColors.KEYWORD)
|
||||
val STRING = TextAttributesKey.createTextAttributesKey("M68K_STRING", DefaultLanguageHighlighterColors.STRING)
|
||||
|
||||
Reference in New Issue
Block a user