Reworked BNF for symbol references and program counter. Enhanced syntax highlighting. Continued work on referencing (not yet working). Fixed renaming of Labels and Symbols. Added M68kRenameInputValidator for correct renaming of symbols and labels (allow local labels with dot or dollar). Added UsagesProvider (not sure if working). Added PairedBraceMatcher.

This commit is contained in:
2021-07-18 15:05:59 +02:00
parent 349372f6b3
commit 25c755d729
55 changed files with 531 additions and 61 deletions
@@ -39,7 +39,8 @@ Assembly File: a.asm
M68kUnaryComplExprImpl(UNARY_COMPL_EXPR)
PsiElement(M68kTokenType.OP_UNARY_COMPL)('~')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('WIDTH')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('WIDTH')
PsiElement(M68kTokenType.OP_BITWISE_XOR)('^')
M68kLiteralExprImpl(LITERAL_EXPR)
PsiElement(M68kTokenType.OCTAL)('@123')
@@ -59,7 +60,8 @@ Assembly File: a.asm
PsiElement(M68kTokenType.ROUND_L)('(')
M68kBinaryModExprImpl(BINARY_MOD_EXPR)
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('NARF')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('NARF')
PsiElement(M68kTokenType.OP_AR_MOD)('%')
M68kBinaryBitwiseOrExprImpl(BINARY_BITWISE_OR_EXPR)
M68kBinaryBitwiseOrExprImpl(BINARY_BITWISE_OR_EXPR)
@@ -123,7 +125,8 @@ Assembly File: a.asm
M68kUnaryComplExprImpl(UNARY_COMPL_EXPR)
PsiElement(M68kTokenType.OP_UNARY_COMPL)('~')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('WIDTH')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('WIDTH')
PsiElement(M68kTokenType.OP_BITWISE_XOR)('^')
M68kLiteralExprImpl(LITERAL_EXPR)
PsiElement(M68kTokenType.OCTAL)('@123')
@@ -143,7 +146,8 @@ Assembly File: a.asm
PsiElement(M68kTokenType.ROUND_L)('(')
M68kBinaryModExprImpl(BINARY_MOD_EXPR)
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('NARF')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('NARF')
PsiElement(M68kTokenType.OP_AR_MOD)('%')
M68kBinaryBitwiseOrExprImpl(BINARY_BITWISE_OR_EXPR)
M68kBinaryBitwiseOrExprImpl(BINARY_BITWISE_OR_EXPR)
@@ -10,7 +10,8 @@ Assembly File: a.asm
M68kImmediateDataImpl(IMMEDIATE_DATA)
PsiElement(M68kTokenType.HASH)('#')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('FOO_BAR')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('FOO_BAR')
PsiElement(M68kTokenType.SEPARATOR)(',')
M68kDataRegisterDirectAddressingModeImpl(DATA_REGISTER_DIRECT_ADDRESSING_MODE)
M68kDataRegisterImpl(DATA_REGISTER)
@@ -16,7 +16,8 @@ Assembly File: a.asm
PsiElement(M68kTokenType.DECIMAL)('4')
PsiElement(M68kTokenType.OP_PLUS)('+')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('foo')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('foo')
PsiElement(M68kTokenType.SEPARATOR)(',')
PsiElement(M68kTokenType.PC)('pc')
PsiElement(M68kTokenType.SEPARATOR)(',')
@@ -15,7 +15,8 @@ Assembly File: a.asm
PsiElement(M68kTokenType.DECIMAL)('4')
PsiElement(M68kTokenType.OP_PLUS)('+')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('foo')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('foo')
PsiElement(M68kTokenType.ROUND_L)('(')
PsiElement(M68kTokenType.PC)('pc')
PsiElement(M68kTokenType.SEPARATOR)(',')
@@ -18,7 +18,8 @@ Assembly File: a.asm
PsiElement(M68kTokenType.DECIMAL)('4')
PsiElement(M68kTokenType.OP_PLUS)('+')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('foo')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('foo')
PsiElement(M68kTokenType.ROUND_R)(')')
PsiElement(M68kTokenType.SEPARATOR)(',')
PsiElement(M68kTokenType.PC)('pc')
@@ -16,7 +16,8 @@ Assembly File: a.asm
PsiElement(M68kTokenType.DECIMAL)('4')
PsiElement(M68kTokenType.OP_PLUS)('+')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('foo')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('foo')
PsiElement(M68kTokenType.SEPARATOR)(',')
M68kAddressRegisterImpl(ADDRESS_REGISTER)
PsiElement(M68kTokenType.AREG)('sp')
@@ -15,7 +15,8 @@ Assembly File: a.asm
PsiElement(M68kTokenType.DECIMAL)('4')
PsiElement(M68kTokenType.OP_PLUS)('+')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('foo')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('foo')
PsiElement(M68kTokenType.ROUND_L)('(')
M68kAddressRegisterImpl(ADDRESS_REGISTER)
PsiElement(M68kTokenType.AREG)('sp')
@@ -16,7 +16,8 @@ Assembly File: a.asm
PsiElement(M68kTokenType.DECIMAL)('4')
PsiElement(M68kTokenType.OP_PLUS)('+')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('foo')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('foo')
PsiElement(M68kTokenType.SEPARATOR)(',')
M68kAddressRegisterImpl(ADDRESS_REGISTER)
PsiElement(M68kTokenType.AREG)('sp')
@@ -15,7 +15,8 @@ Assembly File: a.asm
PsiElement(M68kTokenType.DECIMAL)('4')
PsiElement(M68kTokenType.OP_PLUS)('+')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('foo')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('foo')
PsiElement(M68kTokenType.ROUND_L)('(')
M68kAddressRegisterImpl(ADDRESS_REGISTER)
PsiElement(M68kTokenType.AREG)('sp')
@@ -1,10 +1,12 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiWhiteSpace(' ')
PsiElement(M68kTokenType.EQU)('equ')
PsiWhiteSpace(' ')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('BAR')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('BAR')
PsiElement(M68kTokenType.EOL)('\n')
@@ -1,7 +1,8 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiWhiteSpace(' ')
PsiElement(M68kTokenType.OP_ASSIGN)('=')
PsiWhiteSpace(' ')
@@ -1,7 +1,8 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiElement(M68kTokenType.OP_ASSIGN)('=')
M68kBinaryAddExprImpl(BINARY_ADD_EXPR)
M68kLiteralExprImpl(LITERAL_EXPR)
@@ -1,10 +1,12 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiWhiteSpace(' ')
PsiElement(M68kTokenType.EQU)('set')
PsiWhiteSpace(' ')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('BAR')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('BAR')
PsiElement(M68kTokenType.EOL)('\n')
@@ -1,7 +1,8 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiElement(M68kTokenType.COLON)(':')
PsiWhiteSpace(' ')
PsiElement(M68kTokenType.OP_ASSIGN)('=')
@@ -1,7 +1,8 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiElement(M68kTokenType.COLON)(':')
PsiWhiteSpace(' ')
PsiElement(M68kTokenType.EQU)('set')
@@ -1,13 +1,16 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiElement(M68kTokenType.OP_ASSIGN)('=')
PsiWhiteSpace(' ')
M68kBinarySubExprImpl(BINARY_SUB_EXPR)
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('.local')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('.local')
PsiElement(M68kTokenType.OP_MINUS)('-')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('.bar')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('.bar')
PsiElement(M68kTokenType.EOL)('\n')
@@ -47,7 +47,8 @@ Assembly File: a.asm
PsiWhiteSpace('\t')
M68kAbsoluteAddressAddressingModeImpl(ABSOLUTE_ADDRESS_ADDRESSING_MODE)
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('resetcode')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('resetcode')
PsiWhiteSpace(' ')
PsiComment(M68kTokenType.COMMENT)('; unreachable')
PsiElement(M68kTokenType.EOL)('\n')
@@ -1,7 +1,8 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiWhiteSpace(' ')
PsiElement(M68kTokenType.OP_ASSIGN)('=')
PsiWhiteSpace(' ')
@@ -1,7 +1,8 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('foo')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('foo')
PsiWhiteSpace(' ')
PsiElement(M68kTokenType.OP_ASSIGN)('=')
PsiWhiteSpace(' ')
@@ -1,7 +1,8 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiWhiteSpace(' ')
PsiElement(M68kTokenType.OP_ASSIGN)('=')
PsiWhiteSpace(' ')
@@ -5,7 +5,8 @@ Assembly File: a.asm
PsiElement(M68kTokenType.OTHER_DIRECTIVE)('IFD')
PsiWhiteSpace(' ')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('DEBUG')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('DEBUG')
PsiWhiteSpace(' ')
PsiComment(M68kTokenType.COMMENT)('; cause a crash')
PsiElement(M68kTokenType.EOL)('\n')
@@ -7,5 +7,6 @@ Assembly File: a.asm
PsiElement(M68kTokenType.OTHER_DIRECTIVE)('incbin')
PsiWhiteSpace(' ')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('Convertedassets\scroller_howto.raw.BPL')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('Convertedassets\scroller_howto.raw.BPL')
PsiElement(M68kTokenType.EOL)('\n')
@@ -6,8 +6,10 @@ Assembly File: a.asm
PsiWhiteSpace(' ')
M68kBinarySubExprImpl(BINARY_SUB_EXPR)
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.CURRENT_PC_SYMBOL)('*')
M68kProgramCounterReferenceImpl(PROGRAM_COUNTER_REFERENCE)
PsiElement(M68kTokenType.CURRENT_PC_SYMBOL)('*')
PsiElement(M68kTokenType.OP_MINUS)('-')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('.label')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('.label')
PsiElement(M68kTokenType.EOL)('\n')
@@ -6,7 +6,8 @@ Assembly File: a.asm
PsiWhiteSpace(' ')
M68kBinaryCmpEqExprImpl(BINARY_CMP_EQ_EXPR)
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('DEBUG')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('DEBUG')
PsiElement(M68kTokenType.OP_CMP_EQ)('=')
M68kLiteralExprImpl(LITERAL_EXPR)
PsiElement(M68kTokenType.DECIMAL)('1')
@@ -1,7 +1,8 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiWhiteSpace(' ')
PsiElement(M68kTokenType.OP_ASSIGN)('=')
PsiWhiteSpace(' ')
@@ -36,7 +37,8 @@ Assembly File: a.asm
M68kUnaryComplExprImpl(UNARY_COMPL_EXPR)
PsiElement(M68kTokenType.OP_UNARY_COMPL)('~')
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('WIDTH')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('WIDTH')
PsiElement(M68kTokenType.OP_BITWISE_XOR)('^')
M68kLiteralExprImpl(LITERAL_EXPR)
PsiElement(M68kTokenType.OCTAL)('@123')
@@ -56,7 +58,8 @@ Assembly File: a.asm
PsiElement(M68kTokenType.ROUND_L)('(')
M68kBinaryModExprImpl(BINARY_MOD_EXPR)
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('NARF')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('NARF')
PsiElement(M68kTokenType.OP_AR_MOD)('%')
M68kBinaryBitwiseOrExprImpl(BINARY_BITWISE_OR_EXPR)
M68kBinaryBitwiseOrExprImpl(BINARY_BITWISE_OR_EXPR)
@@ -1,7 +1,8 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiWhiteSpace(' ')
PsiElement(M68kTokenType.OP_ASSIGN)('=')
PsiWhiteSpace(' ')
@@ -1,7 +1,8 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiWhiteSpace(' ')
PsiElement(M68kTokenType.OP_ASSIGN)('=')
PsiWhiteSpace(' ')
@@ -1,7 +1,8 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiWhiteSpace(' ')
PsiElement(M68kTokenType.OP_ASSIGN)('=')
PsiWhiteSpace(' ')
@@ -1,7 +1,8 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiWhiteSpace(' ')
PsiElement(M68kTokenType.OP_ASSIGN)('=')
PsiWhiteSpace(' ')
@@ -1,7 +1,8 @@
Assembly File: a.asm
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiWhiteSpace(' ')
PsiElement(M68kTokenType.OP_ASSIGN)('=')
PsiWhiteSpace(' ')
@@ -10,7 +11,8 @@ Assembly File: a.asm
PsiElement(M68kTokenType.EOL)('\n')
M68kStatementImpl(STATEMENT)
M68kAssignmentImpl(ASSIGNMENT)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
M68kSymbolDefinitionImpl(SYMBOL_DEFINITION)
PsiElement(M68kTokenType.SYMBOLDEF)('FOO')
PsiElement(M68kTokenType.OP_ASSIGN)('=')
M68kLiteralExprImpl(LITERAL_EXPR)
PsiElement(M68kTokenType.STRINGLIT)('"bar"')
@@ -69,7 +69,8 @@ Assembly File: a.asm
PsiElement(M68kTokenType.SEPARATOR)(',')
M68kAbsoluteAddressAddressingModeImpl(ABSOLUTE_ADDRESS_ADDRESSING_MODE)
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('innerloop$')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('innerloop$')
PsiWhiteSpace(' ')
PsiComment(M68kTokenType.COMMENT)('; copy more')
PsiElement(M68kTokenType.EOL)('\n')
@@ -87,7 +88,8 @@ Assembly File: a.asm
PsiWhiteSpace(' ')
M68kAbsoluteAddressAddressingModeImpl(ABSOLUTE_ADDRESS_ADDRESSING_MODE)
M68kRefExprImpl(REF_EXPR)
PsiElement(M68kTokenType.SYMBOL)('.outerloop')
M68kSymbolReferenceImpl(SYMBOL_REFERENCE)
PsiElement(M68kTokenType.SYMBOL)('.outerloop')
PsiWhiteSpace(' ')
PsiComment(M68kTokenType.COMMENT)('; end of chunk?')
PsiElement(M68kTokenType.EOL)('\n')