vim/ras.vim 2.4 KiB raw
1
" ras.vim
2
" Syntax for Radiance Assembly (.ras) files
3
"
4
if exists("b:current_syntax")
5
  finish
6
endif
7
8
syntax clear
9
10
" Comments
11
syntax keyword rasTodo TODO FIXME contained containedin=rasComment
12
13
" Directives
14
syntax match rasDirective "\.\%(align\|ascii\|byte\|constant\|data\|dword\|export\|space\|text\|word\)\>"
15
16
" Labels
17
syntax match rasLabel "@[A-Za-z_][A-Za-z0-9_]*\%(::[A-Za-z_][A-Za-z0-9_]*\)*"
18
syntax region rasLabel start=+@"+ skip=+\\.+ end=+"+ oneline
19
20
" Mnemonics
21
syntax keyword rasMnemonic add addi addiw addw and andi auipc
22
syntax keyword rasMnemonic beq beqz bge bgeu bgt ble blt bltu bne bnez
23
syntax keyword rasMnemonic call csrc csrr csrrw csrsi csrw
24
syntax keyword rasMnemonic div divu divuw divw
25
syntax keyword rasMnemonic ebreak ecall
26
syntax keyword rasMnemonic fence
27
syntax keyword rasMnemonic j jal jalr la lb lbu ld lh lhu li lui lw lwu
28
syntax keyword rasMnemonic mret mul mulh mulhsu mulhu mulw mv
29
syntax keyword rasMnemonic neg nop not or ori
30
syntax keyword rasMnemonic rem remu remuw remw ret
31
syntax keyword rasMnemonic sb sd seqz sh sll slli slliw sllw slt slti sltiu sltu snez
32
syntax keyword rasMnemonic sra srai sraiw sraw srl srli srliw srlw sub subw sw
33
syntax keyword rasMnemonic tail wfi xor xori
34
35
" Registers
36
syntax match rasRegister "%\%(a[0-7]\|fp\|gp\|ra\|s[0-9]\|s10\|s11\|sp\|t[0-6]\|tp\|zero\)\>"
37
38
" CSR names
39
syntax keyword rasCsr mcause mepc mhartid mie mip mscratch mstatus mtval mtvec
40
41
" Numbers and literals
42
syntax match rasNumber "\%([+-]\)\=\<0[xX][0-9A-Fa-f]\+\>"
43
syntax match rasNumber "\%([+-]\)\=\<\d\+\>"
44
syntax region rasString start=+"+ skip=+\\.+ end=+"+ oneline
45
syntax region rasChar start=+'+ skip=+\\.+ end=+'+ oneline
46
47
" Namespaced symbols and punctuation
48
syntax match rasNamespaceSep "::"
49
syntax match rasPunct "[(),;:+\-*/]"
50
51
" Comment delimiters take priority over punctuation.
52
syntax match rasComment "//.*$" contains=rasTodo
53
54
highlight default link rasComment Comment
55
highlight default link rasTodo Todo
56
highlight default link rasDirective Special
57
highlight default link rasLabel Label
58
highlight default link rasMnemonic Keyword
59
highlight default link rasRegister Identifier
60
highlight default link rasCsr Type
61
highlight default link rasNumber Number
62
highlight default link rasString String
63
highlight default link rasChar Character
64
highlight default link rasNamespaceSep Delimiter
65
highlight default link rasPunct Delimiter
66
67
let b:current_syntax = "ras"