155 lines
5.8 KiB
YAML
155 lines
5.8 KiB
YAML
%YAML 1.2
|
|
---
|
|
# http://www.sublimetext.com/docs/syntax.html
|
|
name: AcmeAssembler (C64)
|
|
file_extensions:
|
|
- .asm
|
|
- .inc
|
|
- .s
|
|
- .a
|
|
- .lib
|
|
scope: source.assembly.acmeassembler
|
|
contexts:
|
|
main:
|
|
- 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|phx|phy|plx|ply|rol|ror|sbc|sec|sed|sei|sta|stx|stz|sty|tax|txa|tay|tya|tsx|txs|trb|tsb|bbr|bbs|rmb|smb|stp|wat)\b
|
|
scope: keyword
|
|
- match: \b(aac|aax|alr|anc|ane|arr|aso|asr|atx|axa|axs|dcm|dcp|dop|hlt|ins|isb|isc|jam|kil|lae|lar|las|lax|lse|lxa|oal|rla|rra|sax|sbx|skb|sha|shs|say|shx|shy|slo|skw|sre|sxa|sya|tas|top|xaa|xas)\b
|
|
scope: illegal
|
|
- match: \b(bcc|bcs|beq|bmi|bne|bra|bpl|brk|bvc|bvs|jmp|jsr|rti|rts)\b
|
|
scope: keyword.control
|
|
- match: /\*
|
|
captures:
|
|
0: punctuation.definition.comment
|
|
push:
|
|
- meta_scope: comment.block
|
|
- match: \*/\n?
|
|
captures:
|
|
0: punctuation.definition.comment
|
|
pop: true
|
|
- match: //
|
|
captures:
|
|
1: punctuation.definition.comment
|
|
push:
|
|
- meta_scope: comment.line.double-slashs
|
|
- match: $\n?
|
|
captures:
|
|
1: punctuation.definition.comment
|
|
pop: true
|
|
- match: (?:^|\s)(\.(word|byte|text|dword))\b
|
|
captures:
|
|
1: storage.type.acme
|
|
- match: \b(CmdArgument)\b
|
|
scope: storage.type.acme
|
|
- match: \b(getNamespace)\b
|
|
scope: support.function.language
|
|
- match: \b(toIntString|toBinaryString|toOctalString|toHexString)\b
|
|
scope: support.function.string
|
|
- match: \b(abs|acos|asin|atan|atan2|cbrt|ceil|cos|cosh|exp|expm1|floor|hypot|IEEEremainder|log|log10|log1p|max|min|pow|mod|random|round|signum|sin|sinh|sqrt|tan|tanh|toDegrees|toRadians)\b
|
|
scope: support.function.math
|
|
- match: \b(LoadBinary|LoadPicture|LoadSid|createFile)\b
|
|
scope: support.function.file
|
|
- match: \b(Matrix|RotationMatrix|ScaleMatrix|MoveMatrix|PerspectiveMatrix|Vector)\b
|
|
scope: support.function.3d
|
|
- match: (?:^|\s)(\.(var|label|const))\b
|
|
captures:
|
|
1: storage.type.keyword.acme.field
|
|
- match: (?:^|\s)(\.(struct|enum))\b
|
|
captures:
|
|
1: keyword.acme.function.object
|
|
- match: (?:^|\s)(\.(eval|fill|print|printnow|import|align|assert|asserterror|error))\b
|
|
captures:
|
|
1: keyword.acme.function
|
|
- match: (?:^|\s)(\.(pc|importonce|pseudopc|return|eval))\b
|
|
captures:
|
|
1: keyword.acme
|
|
- match: (?:^\s*|;\s*)(\*)(?=\s*\=\s*)
|
|
captures:
|
|
1: keyword.acme
|
|
- match: (?:^|\s)(\.(encoding))\b
|
|
scope: keyword.acme.encoding
|
|
- match: '(?:^\s*|;\s*)(\#(define|elif|if|undef))\s+(([A-Za-z_][A-Za-z0-9_]*)+)\b'
|
|
captures:
|
|
1: keyword.acme.preprocessor
|
|
3: constant.acme.preprocessor
|
|
- match: (?:^\s*|;\s*)(\#(else|endif|importonce))\b
|
|
captures:
|
|
1: keyword.acme.preprocessor
|
|
- match: (?:^\s*|;\s*)(\#(import))(?=\s+\".*\")
|
|
captures:
|
|
1: keyword.acme.preprocessor
|
|
- match: '(?:^\s*|;\s*)(\#(importif))\s+!*(([A-Za-z_][A-Za-z0-9_]*)+)(?=\s+\".*\")'
|
|
captures:
|
|
1: keyword.acme.preprocessor
|
|
3: constant.acme.preprocessor
|
|
- match: \b(true|false)\b
|
|
scope: constant.language
|
|
- match: \b(BLACK|WHITE|RED|CYAN|PURPLE|GREEN|BLUE|YELLOW|ORANGE|BROWN|LIGHT_RED|DARK_GRAY|GRAY|DARK_GREY|GREY|LIGHT_GREEN|LIGHT_BLUE|LIGHT_GRAY|LIGHT_GREY)\b
|
|
scope: constant.language.color
|
|
- match: \b(LDA_IMM|LDA_ZP|LDA_ZPX|LDX_ZPY|LDA_IZPX|LDA_IZPY|LDA_ABS|LDA_ABSX|LDA_ABSY|JMP_IND|BNE_REL|RTS)\b
|
|
scope: constant.language.opcodes
|
|
- match: \b(BF_C64FILE|BF_BITMAP_SINGLECOLOR|BF_KOALA|BF_FLI)\b
|
|
scope: constant.language.file
|
|
- match: \b(AT_ABSOLUTE|AT_ABSOLUTEX|AT_ABSOLUTEY|AT_IMMEDIATE|AT_INDIRECT|AT_IZEROPAGEX|AT_IZEROPAGEY|AT_NONE)\b
|
|
scope: constant.language.pseudocommand
|
|
- match: \b(PI|E)\b
|
|
scope: constant.language.math
|
|
- match: \b(Hashtable)\b
|
|
scope: storage.type.hashtable
|
|
- match: \b(list|List)\(\s*(\$?\d+)*\s*\)
|
|
scope: list
|
|
captures:
|
|
1: storage.type.list
|
|
2: variable.parameter
|
|
- match: (?:^|\s)(\.for)\s*\((var)\b
|
|
captures:
|
|
1: keyword.control.for
|
|
2: storage.type.for
|
|
- match: (?:^|\s)((\.if)\b|(else)\b)
|
|
captures:
|
|
1: keyword.control.if
|
|
- match: (?:^|\s)(\.while)(?=\s*\(.*\))
|
|
captures:
|
|
1: keyword.control.while
|
|
- match: '"'
|
|
push:
|
|
- meta_scope: string.quoted.double.untitled
|
|
- match: '"'
|
|
pop: true
|
|
- match: \\.
|
|
scope: constant.character.escape
|
|
- match: '(?:^\s*|;\s*)((\.filenamespace)\s*([A-Za-z_][A-Za-z0-9_]*))\b'
|
|
captures:
|
|
1: meta.filenamespace.identifier
|
|
2: keyword.type.filenamespace
|
|
3: entity.name.filenamespace
|
|
- match: '(?:^\s*|;\s*)((\.namespace)\s*([A-Za-z_][A-Za-z0-9_]*))\b'
|
|
captures:
|
|
1: meta.namespace.identifier
|
|
2: keyword.type.namespace
|
|
3: entity.name.namespace
|
|
- match: '(?:^\s*|;\s*)(((!)|(!?(\@*[A-Za-z_][A-Za-z0-9_]*)+))\:)'
|
|
scope: label
|
|
captures:
|
|
1: meta.label.identifier
|
|
2: entity.name.label
|
|
- match: '(?:^\s*|;\s*)((\.pseudocommand)\s*(\@*[A-Za-z_][A-Za-z0-9_]*))\b'
|
|
captures:
|
|
1: meta.pseudocommand.identifier
|
|
2: storage.type.pseudocommand
|
|
3: entity.name.pseudocommand
|
|
- match: '(?:^\s*|;\s*)((\.function)\s*(\@*[A-Za-z0-9_]*))\b'
|
|
captures:
|
|
1: meta.label.identifier
|
|
2: storage.type.function
|
|
3: entity.name.function
|
|
- match: '(?:^\s*|;\s*)((\.macro)\s*(\@*[A-Za-z_][A-Za-z0-9_]*))\b'
|
|
captures:
|
|
1: meta.macro.identifier
|
|
2: storage.type.macro
|
|
3: entity.name.macro
|
|
- match: '#?\$\h+'
|
|
scope: constant.numeric.hex
|
|
- match: \b\d+
|
|
scope: constant.numeric.decimal
|
|
- match: '\#?%[01]+'
|
|
scope: constant.numeric.binary
|