# JOE syntax highlight file for AVR assembly language

=Idle
=Ident
=Preproc			# basic color for directives
=Include	+Preproc	# "include" - color
=Define		+Preproc	# same for "def" and "equ"
=DefinedIdent	+Define +Ident	# text after ".def" or ".equ"
=Macro		+Define		# color of word "macro"
=Path		+String		# color for include-path
=Com		+Keyword	# command
=Comment			# comment-color
=Label		+DefinedIdent	# 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 Include
	*			preinc
	" \t"		path
	"\n"		idle
	";"			comment		recolor=-1

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

:definition DefinedIdent
	*			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
	*			comment
	"BFHNTX"        	comment         noeat call=comment_todo.comment_todo()
	"\n"			idle

:ident Ident
	*				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
