blob: ebf0aaff115cb2fcec49de155b84ba1fb43fb7a7 [file] [log] [blame]
Bram Moolenaar0c1ff162016-04-21 18:01:28 +02001" Vim syntax file
2" Language: AVR Assembler (AVRA)
3" AVRA Home: http://avra.sourceforge.net/index.html
4" AVRA Version: 1.3.0
5" Maintainer: Marius Ghita <mhitza@gmail.com>
6
7let s:cpo_save = &cpo
8set cpo&vim
9
10setlocal iskeyword=a-z,A-Z,48-57,.,_
11" 'isident' is a global option, better not set it
12" setlocal isident=a-z,A-Z,48-57,.,_
13syn case ignore
14
15syn keyword avraRegister r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14
16syn keyword avraRegister r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27
17syn keyword avraRegister r28 r29 r30 r31
18
19syn keyword avraInstr add adc adiw sub subi sbc sbci sbiw and andi or ori eor
20syn keyword avraInstr com neg sbr cbr inc dec tst clr ser mul muls mulsu fmul
21syn keyword avraInstr fmuls fmulsu des rjmp ijmp eijmp jmp rcall icall eicall
22syn keyword avraInstr call ret reti cpse cp cpc cpi sbrc sbrs sbic sbis brbs
23syn keyword avraInstr brbc breq brne brcs brcc brsh brlo brmi brpl brge brlt
24syn keyword avraInstr brhs brhc brts brtc brvs brvc brie brid mov movw ldi lds
25syn keyword avraInstr ld ldd sts st std lpm elpm spm in out push pop xch las
26syn keyword avraInstr lac lat lsl lsr rol ror asr swap bset bclr sbi cbi bst bld
27syn keyword avraInstr sec clc sen cln sez clz sei cli ses cls sev clv set clt
28syn keyword avraInstr seh clh break nop sleep wdr
29
30syn keyword avraDirective .byte .cseg .db .def .device .dseg .dw .endmacro .equ
31syn keyword avraDirective .eseg .exit .include .list .listmac .macro .nolist
32syn keyword avraDirective .org .set .define .undef .ifdef .ifndef .if .else
33syn keyword avraDirective .elif .elseif .warning
34
35syn keyword avraOperator low high byte2 byte3 byte4 lwrd hwrd page exp2 log2
36
37syn match avraNumericOperator "[-*/+]"
38syn match avraUnaryOperator "!"
39syn match avraBinaryOperator "<<\|>>\|<\|<=\|>\|>=\|==\|!="
40syn match avraBitwiseOperator "[~&^|]\|&&\|||"
41
42syn match avraBinaryNumber "\<0[bB][0-1]*\>"
43syn match avraHexNumber "\<0[xX][0-9a-fA-F]\+\>"
44syn match avraDecNumber "\<\(0\|[1-9]\d*\)\>"
45
46syn region avraComment start=";" end="$"
47syn region avraString start="\"" end="\"\|$"
48
49syn match avraLabel "^\s*[^; \t]\+:"
50
51hi def link avraBinaryNumber avraNumber
52hi def link avraHexNumber avraNumber
53hi def link avraDecNumber avraNumber
54
55hi def link avraNumericOperator avraOperator
56hi def link avraUnaryOperator avraOperator
57hi def link avraBinaryOperator avraOperator
58hi def link avraBitwiseOperator avraOperator
59
60
61hi def link avraOperator operator
62hi def link avraComment comment
63hi def link avraDirective preproc
64hi def link avraRegister type
65hi def link avraNumber constant
66hi def link avraString String
67hi def link avraInstr keyword
68hi def link avraLabel label
69
70let b:current_syntax = "avra"
71
72let &cpo = s:cpo_save
73unlet s:cpo_save