Started working on macro support. Macro-Definition are now plain, unparsed lines. Added Syntax-Highlighter options.
This commit is contained in:
@@ -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')
|
||||
@@ -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')
|
||||
@@ -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')
|
||||
@@ -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')
|
||||
Reference in New Issue
Block a user