uxn/etc/usm.sublime-syntax

111 lines
2.3 KiB
YAML

%YAML 1.2
---
# See http://www.sublimetext.com/docs/3/syntax.html
name: Uxn Assembly
scopeName: usm.
fileTypes: [usm]
file_extensions:
- usm
scope: source.usm
contexts:
main:
# get/set
- match: '\.(\S+)\sDEO2'
scope: constant.numeric
pop: true
- match: '\.(\S+)\sDEO'
scope: constant.numeric
pop: true
- match: '\.(\S+)\sPOK2'
scope: constant.numeric
pop: true
- match: '\.(\S+)\sPOK'
scope: constant.numeric
pop: true
- match: '\.(\S+)\sGET2'
scope: constant.numeric
pop: true
- match: '\.(\S+)\sGET'
scope: constant.numeric
pop: true
- match: '\.(\S+)\sDEI2'
scope: entity.name.type.typedef
pop: true
- match: '\.(\S+)\sDEI'
scope: entity.name.type.typedef
pop: true
- match: '\.(\S+)\sPEK2'
scope: entity.name.type.typedef
pop: true
- match: '\.(\S+)\sPEK'
scope: entity.name.type.typedef
pop: true
- match: '\.(\S+)\sPUT2'
scope: entity.name.type.typedef
pop: true
- match: '\.(\S+)\sPUT'
scope: entity.name.type.typedef
pop: true
# label
- match: '\@(\S+)\s?'
scope: string.control
pop: true
# sublabel
- match: '\&(\S+)\s?'
scope: string.control
pop: true
# jump
- match: '\|(\S+)\s?'
scope: entity.name.tag.structure.any
pop: true
# pad
- match: '\$(\S+)\s?'
scope: entity.name.tag.structure.any
pop: true
# Pushing to stack
- match: '\"(\S+)\s?'
scope: variable.parameter.option
pop: true
# Addressing
- match: '\.(\S+)\s?' # zero-page
scope: variable.function.shell
pop: true
- match: '\,(\S+)\s?' # relative
scope: entity.name.tag.yaml
pop: true
- match: '\;(\S+)\s?' # absolute
scope: keyword.control
pop: true
- match: '\:(\S+)\s?' # raw
scope: keyword.control
pop: true
# Blocks
- match: '\[\s?'
scope: comment
pop: true
- match: '\]\s?'
scope: comment
pop: true
- match: '\{'
scope: variable.control
push:
- meta_scope: variable.control
- match: '\}'
pop: true
- match: '\('
scope: comment
push:
- meta_scope: comment.line
- match: '\)'
pop: true