language-65asm/grammars/6502 Assembly (DASM).cson

113 lines
2.7 KiB
Plaintext

# 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: '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'
}
]