diff --git a/grammars/6502 Assembly (DASM) OLD.cson b/grammars/6502 Assembly (DASM) OLD.cson new file mode 100644 index 0000000..625bb4e --- /dev/null +++ b/grammars/6502 Assembly (DASM) OLD.cson @@ -0,0 +1,65 @@ +'fileTypes': [] +'foldingStartMarker': '/\\*\\*|\\{\\s*$' +'foldingStopMarker': '\\*\\*/|^\\s*\\}' +'name': '6502 Assembly (DASM) OLD' +'patterns': [ + { + 'match': '\\b(adc|and|asl|bit|clc|cld|cli|clv|cmp|cpx|cpy|dec|dex|dey|eor|inc|inx|iny|lda|ldx|ldy|lsr|nop|ora|pha|php|pla|plp|rol|ror|sbc|sec|sed|sei|sta|stx|sty|tax|txa|tay|tya|tsx|txs)\\b' + 'name': 'keyword' + } + { + 'match': '\\b(bcc|bcs|beq|bmi|bne|bpl|brk|bvc|bvs|jmp|jsr|rti|rts)\\b' + 'name': 'keyword.control' + } + { + 'captures': + '1': + 'name': 'punctuation.definition.comment' + 'match': '(;).*$\\n?' + 'name': 'comment.line.semicolon' + } + { + 'match': '\\b(SET|WORD|BYTE|HEX)\\b' + 'name': 'storage.type' + } + { + 'match': '\\b(ALIGN)\\b' + 'name': 'storage.modifier' + } + { + 'match': '\\b(REPEAT|REPEND|MAC|ENDM|SUBROUTINE)\\b' + 'name': 'support.function' + } + { + 'match': '\\b(processor|org)\\b' + 'name': 'constant.language' + } + { + 'begin': '"' + 'end': '"' + 'name': 'string.quoted.double.untitled' + 'patterns': [ + { + 'match': '\\\\.' + 'name': 'constant.character.escape.untitled' + } + ] + } + { + 'match': '^[A-Za-z_][A-Za-z0-9_]*' + 'name': 'entity.name.label' + } + { + 'match': '^\\.[A-Za-z_][A-Za-z0-9_]*' + 'name': 'entity.name.label.local' + } + { + 'match': '#?\\$[0-9a-fA-F]+' + 'name': 'constant.numeric.hex' + } + { + 'match': '{[0-9]+}' + 'name': 'variable.parameter.macro' + } +] +'scopeName': 'source.assembly.6502.dasm' diff --git a/grammars/6502 Assembly (DASM).cson b/grammars/6502 Assembly (DASM).cson index ffa9cd1..4635b02 100644 --- a/grammars/6502 Assembly (DASM).cson +++ b/grammars/6502 Assembly (DASM).cson @@ -1,65 +1,112 @@ -'fileTypes': [] -'foldingStartMarker': '/\\*\\*|\\{\\s*$' -'foldingStopMarker': '\\*\\*/|^\\s*\\}' -'name': '6502 Assembly (DASM)' -'patterns': [ - { - 'match': '\\b(adc|and|asl|bit|clc|cld|cli|clv|cmp|cpx|cpy|dec|dex|dey|eor|inc|inx|iny|lda|ldx|ldy|lsr|nop|ora|pha|php|pla|plp|rol|ror|sbc|sec|sed|sei|sta|stx|sty|tax|txa|tay|tya|tsx|txs)\\b' - 'name': 'keyword' - } - { - 'match': '\\b(bcc|bcs|beq|bmi|bne|bpl|brk|bvc|bvs|jmp|jsr|rti|rts)\\b' - 'name': 'keyword.control' - } - { - 'captures': - '1': - 'name': 'punctuation.definition.comment' - 'match': '(;).*$\\n?' - 'name': 'comment.line.semicolon' - } - { - 'match': '\\b(SET|WORD|BYTE|HEX)\\b' - 'name': 'storage.type' - } - { - 'match': '\\b(ALIGN)\\b' - 'name': 'storage.modifier' - } - { - 'match': '\\b(REPEAT|REPEND|MAC|ENDM|SUBROUTINE)\\b' - 'name': 'support.function' - } - { - 'match': '\\b(processor|org)\\b' - 'name': 'constant.language' - } - { - 'begin': '"' - 'end': '"' - 'name': 'string.quoted.double.untitled' - 'patterns': [ +# Syntax highlighting for the DASM macro assembler + +scopeName: 'source.assembly.6502.dasm' +fileTypes: [] +name: '6502 Assembly (DASM)' +patterns: [ + { include: 'source.6502-opcodes' } + { include: '#comments' } + { include: '#symbols' } + { include: '#directives' } +] + +# Repository starts here ------------------------------------------------------ +repository: + + # comments + comments: + patterns: [ + # semicolon comments { - 'match': '\\\\.' - 'name': 'constant.character.escape.untitled' + match: ';.*$' + name: 'comment.line.semicolon.dasm' + } + ] + + # symbols + symbols: + patterns: [ + # strings + { + begin: '"' + beginCaptures: + 0: + name: 'punctuation.definition.string.begin.dasm' + end: '"' + endCaptures: + 0: + name: 'punctuation.definition.string.end.dasm' + name: 'string.quoted.double.dasm' + } + # global labels + { + captures: + 1: + name: 'entity.name.function.label.dasm' + match: '\\b([A-Za-z0-9_]+):' + name: 'meta.function.label.dasm' + } + # local labels + { + captures: + 1: + name: 'entity.name.function.label.dasm' + match: '\\.\\b([A-Za-z0-9_]+):' + name: 'meta.function.label.dasm' + } + # absolut addressing/numbers + { + match: '\\#(\'.\'|[^\\s\']+)' + name: 'constant.numeric.hex.dasm' + } + # hex, prefixed with dollar sign($) + { + match: '-?\\$\\b[a-fA-F0-9]+\\b' + name: 'constant.numeric.hex.dasm' + } + # octal, prefixed with zero(0) + { + match: '-?\\b0[1-7]+\\b' + name: 'constant.numeric.octal.dasm' + } + # binary + { + match: '%[01]+' + name: 'constant.numeric.binary.65816-generic' + } + # decimal + { + match: '\\b([0-9]+)\\b' + name: 'constant.numeric.decimal.65816-generic' + } + ] + + # directives + directives: + patterns: [ + # file and symbol control + { + match: '\\b(?i:seg(\\.u)?|include|incbin|incdir|hex|err|r?org|processor|echo|rend|align|subroutine)\\b' + name: 'support.function.pseudo.dasm' + } + # data control + { + match: '\\b(?i:d[csv](.bwl)?|hex|eq[um]|set|list\\s(on|off))\\b' + name: 'support.function.pseudo.dasm' + } + # data control II + { + match: '\\.\\b(?i:byte|word)\\b' + name: 'support.function.pseudo.dasm' + } + # Macro control + { + match: '\\b(?i:mac|endm|mexit)\\b' + name: 'support.function.pseudo.acme' + } + # Conditional control + { + match: '\\b(?i:ifn?const|if|else|e(nd)?if|repeat|repend)\\b' + name: 'keyword.control.conditional.acme' } ] - } - { - 'match': '^[A-Za-z_][A-Za-z0-9_]*' - 'name': 'entity.name.label' - } - { - 'match': '^\\.[A-Za-z_][A-Za-z0-9_]*' - 'name': 'entity.name.label.local' - } - { - 'match': '#?\\$[0-9a-fA-F]+' - 'name': 'constant.numeric.hex' - } - { - 'match': '{[0-9]+}' - 'name': 'variable.parameter.macro' - } -] -'scopeName': 'source.assembly.6502.dasm' diff --git a/grammars/65816-generic.cson b/grammars/65816-generic.cson index 4807f6c..ff7b895 100644 --- a/grammars/65816-generic.cson +++ b/grammars/65816-generic.cson @@ -35,21 +35,21 @@ repository: endCaptures: 0: name: 'punctuation.definition.string.end.65816-generic' - name: 'string.quoted.double.assembly.65816-generic' + name: 'string.quoted.double.65816-generic' } # absolut address/number { match: '\\#(\'.\'|[^\\s\']+)' name: 'constant.numeric.hex.65816-generic' } - # hex, prefixed with ampersand($) + # hex, prefixed with dollar sign($) { - match: '-?\\$[A-Fa-f0-9]+' + match: '-?\\$\\b[a-fA-F0-9]+\\b' name: 'constant.numeric.hex.65816-generic' } # hex, suffixed with h(h) { - match: '-?([0-9]+)h' + match: '-?([a-fA-F0-9]+)h' name: 'constant.numeric.hex.65816-generic' } # binary diff --git a/grammars/65c02-generic.cson b/grammars/65c02-generic.cson index 4b007cc..698eeb8 100644 --- a/grammars/65c02-generic.cson +++ b/grammars/65c02-generic.cson @@ -35,7 +35,7 @@ repository: endCaptures: 0: name: 'punctuation.definition.string.end.65c02-generic' - name: 'string.quoted.double.assembly.65c02-generic' + name: 'string.quoted.double.65c02-generic' } # absolut address/number { @@ -44,12 +44,12 @@ repository: } # hex, prefixed with ampersand($) { - match: '-?\\$[A-Fa-f0-9]+' + match: '-?\\$\\b[A-Fa-f0-9]+\\b' name: 'constant.numeric.hex.65c02-generic' } # hex, suffixed with h(h) { - match: '-?([0-9]+)h' + match: '-?([a-fA-F0-9]+)h' name: 'constant.numeric.hex.65c02-generic' } # binary diff --git a/grammars/acme.cson b/grammars/acme.cson index 23566c1..8acf08f 100644 --- a/grammars/acme.cson +++ b/grammars/acme.cson @@ -43,7 +43,7 @@ repository: endCaptures: 0: name: 'punctuation.definition.string.end.acme' - name: 'string.quoted.double.assembly.acme' + name: 'string.quoted.double.acme' } # absolut addressing/numbering { diff --git a/grammars/cc65-directives.cson b/grammars/cc65-directives.cson index 88b1e86..c067235 100644 --- a/grammars/cc65-directives.cson +++ b/grammars/cc65-directives.cson @@ -24,6 +24,7 @@ repository: # symbols symbols: patterns: [ + # strings { begin: '"' beginCaptures: @@ -33,21 +34,21 @@ repository: endCaptures: 0: name: 'punctuation.definition.string.end.cc65-directives' - name: 'string.quoted.double.assembly.cc65-directives' + name: 'string.quoted.double.cc65-directives' } - # absolut address/number + # absolut addressing/numbers { match: '\\#(\'.\'|[^\\s\']+)' name: 'constant.numeric.hex.cc65-directives' } - # hex, prefixed with ampersand($) + # hex, prefixed with dollar sign($) { - match: '-?\\$[A-Fa-f0-9]+' + match: '-?\\$\\b[a-fA-F0-9]+\\b' name: 'constant.numeric.hex.cc65-directives' } # hex, suffixed with h(h) { - match: '-?([0-9]+)h' + match: '-?\\b([a-fA-F0-9]+)h' name: 'constant.numeric.hex.cc65-directives' } # binary diff --git a/grammars/wdc-directives.cson b/grammars/wdc-directives.cson index f51e699..b007c57 100644 --- a/grammars/wdc-directives.cson +++ b/grammars/wdc-directives.cson @@ -34,21 +34,21 @@ repository: endCaptures: 0: name: 'punctuation.definition.string.end.wdc-toolchain' - name: 'string.quoted.double.assembly.wdc-toolchain' + name: 'string.quoted.double.wdc-toolchain' } - # absolut addressing/numbering + # absolut addressing/numbers { match: '\\#(\'.\'|[^\\s\']+)' name: 'constant.numeric.hex.wdc-toolchain' } - # hex, prefixed with ampersand($) + # hex, prefixed with dollar sign($) { - match: '-?\\$[A-Fa-f0-9]+' + match: '-?\\$\\b[a-fA-F0-9]+\\b' name: 'constant.numeric.hex.wdc-toolchain' } # hex, suffixed with h(h) { - match: '-?([0-9]+)h' + match: '-?\\b([a-fA-F0-9]+)h' name: 'constant.numeric.hex.wdc-toolchain' } # binary prefixed with % @@ -63,7 +63,7 @@ repository: } # octal and decimal { - match: '\\b([0-9]+(d|o|q)?)\\b' + match: '\\b([0-9]+[doq]?)\\b' name: 'constant.numeric.decimal.wdc-toolchain' } ] @@ -73,7 +73,7 @@ repository: patterns: [ # File and Symbol control { - match: '\\b(?i:append|include|insert|end(s|mod)?|exit|module|section|org|origin|equ(al)?|gequ|defl|set|var|extern(al|s)?|xref|globals?|public|xdef|message|messg|efunc|incdebug)\\b' + match: '\\b(?i:append|include|insert|end(s|mod)?|exit|module|section|ref_only|org|origin|equ(al)?|gequ|defl|set|var|extern(al|s)?|xref|globals?|public|xdef|message|messg|efunc|incdebug)\\b' name: 'support.function.pseudo.wdc-toolchain' } # Parsing control @@ -108,7 +108,7 @@ repository: } # Operators II { - match: '\\b(?i:and|not|mod|sh[lr]|x?or|eq|u?[gl]t)\\b' + match: '\\.\\b(?i:and|not|mod|sh[lr]|x?or|eq|u?[gl]t)\\b\\.' name: 'keyword.operator.wdc-toolchain' } ]