# JOE syntax highlight file for AVR assembly language

=Idle
=Preproc	cyan		# basic color for directives
=Inc		blue		# "include" - color
=Def		magenta		# same for "def" and "equ"
=Definit	cyan		# text after ".def" or ".equ"
=Macro		red			# color of word "macro"
=Path		cyan			# color for include-path
=Com		yellow		# command
=Comment	green		# comment-color
=Label		red			# label


:idle Idle
	*				idle
	"."				preproc		recolor=-1
	";"				comment		recolor=-1
	"a-zA-Z_0-9"	ident		recolor=-1 buffer mark

:preproc Preproc
	*			preproc
	"a-zA-Z"	preident	buffer
	"\n"		idle
	";"			comment recolor=-1
	
:preident Preproc
	*			preproc		noeat istrings
	"include"	preinc
	"def"		predef
	"equ"		predef
	"macro"		premacro
	"endmacro"	premacro
	"endm"		premacro
done
	"a-zA-Z"	preident
	";"			comment		recolor=-1

:preinc Inc
	*			preinc
	" \t"		path
	"\n"		idle
	";"			comment		recolor=-1

:predef Def
	*			predef
	" \t"		definition
	"\n"		idle
	";"			comment		recolor=-1

:definition Definit
	*			definition
	"\n"		idle
	";"			comment		recolor=-1

:premacro Macro
	*			premacro 
	" \t\n"		idle
	";"			comment 	recolor=-1

:path Path
	*			path
	"\n"		idle
	";"			comment		recolor=-1

:comment Comment
	*			comment
	"\n"		idle

:ident Idle
	*				idle noeat istrings
	"and"		com
	"andi"		com
	"eor"		com
	"or"		com
	"ori"		com
	"com"		com
	"neg"		com
	"clr"		com
	"ser"		com
	"cr"		com
	"tst"		com
	"swap"		com
	"add"		com
	"adc"		com
	"adiw"		com
	"sub"		com
	"subi"		com
	"sbc"		com
	"sbci"		com
	"sbiw"		com
	"dec"		com
	"inc"		com
	"asr"		com
	"lsl"		com
	"lsr"		com
	"rol"		com
	"ror"		com
	"mul"		com
	"muls"		com
	"mulsu"		com
	"fmul"		com
	"fmuls"		com
	"fmulsu"	com
	"cbr"		com
	"sbr"		com
	"sbi"		com
	"cbi"		com
	"bclr"		com
	"bset"		com
	"bld"		com
	"bst"		com
	"clc"		com
	"sec"		com
	"cln"		com
	"sen"		com
	"clz"		com
	"sez"		com
	"cli"		com
	"sei"		com
	"cls"		com
	"ses"		com
	"clv"		com
	"sev"		com
	"clt"		com
	"set"		com
	"clh"		com
	"seh"		com
	"mov"		com
	"movw"		com
	"ldi"		com
	"ld"		com
	"ldd"		com
	"lds"		com
	"st"		com
	"std"		com
	"sts"		com
	"lpm"		com
	"elpm"		com
	"spm"		com
	"espm"		com
	"in"		com
	"out"		com
	"push"		com
	"pop"		com
	"rjmp"		com
	"ijmp"		com
	"eijmp"		com
	"jmp"		com
	"rcall"		com
	"icall"		com
	"eicall"	com
	"call"		com
	"ret"		com
	"reti"		com
	"cp"		com
	"cpc"		com
	"cpi"		com
	"cpse"		com
	"sbrc"		com
	"sbrs"		com
	"sbic"		com
	"sbis"		com
	"brbc"		com
	"brbs"		com
	"brcs"		com
	"brcc"		com
	"breq"		com
	"brne"		com
	"brsh"		com
	"brlo"		com
	"brmi"		com
	"brpl"		com
	"brge"		com
	"brlt"		com
	"brhs"		com
	"brhc"		com
	"brts"		com
	"brtc"		com
	"brvs"		com
	"brvc"		com
	"brid"		com
	"brie"		com
	"nop"		com
	"sleep"		com
	"wdr"		com
done
	"a-zA-Z0-9_"	ident
	":"				itslabel recolor=-1 markend recolormark

:itslabel Label
	*			idle

:com Com
	*			idle noeat
