forked from aniani/vim
		
	
		
			
	
	
		
			252 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			252 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " Vim syntax file | ||
|  | " Language:	(VAX) Macro Assembly | ||
|  | " Maintainer:	Tom Uijldert <tom.uijldert [at] cmg.nl> | ||
|  | " Last change:	2004 May 16 | ||
|  | " | ||
|  | " This is incomplete. Feel free to contribute... | ||
|  | " | ||
|  | 
 | ||
|  | " For version 5.x: Clear all syntax items | ||
|  | " For version 6.x: Quit when a syntax file was already loaded | ||
|  | if version < 600 | ||
|  |   syntax clear | ||
|  | elseif exists("b:current_syntax") | ||
|  |   finish | ||
|  | endif | ||
|  | 
 | ||
|  | syn case ignore | ||
|  | 
 | ||
|  | " Partial list of register symbols | ||
|  | syn keyword vmasmReg	r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 | ||
|  | syn keyword vmasmReg	ap fp sp pc iv dv | ||
|  | 
 | ||
|  | " All matches - order is important! | ||
|  | syn keyword vmasmOpcode adawi adwc ashl ashq bitb bitw bitl decb decw decl | ||
|  | syn keyword vmasmOpcode ediv emul incb incw incl mcomb mcomw mcoml | ||
|  | syn keyword vmasmOpcode movzbw movzbl movzwl popl pushl rotl sbwc | ||
|  | syn keyword vmasmOpcode cmpv cmpzv cmpc3 cmpc5 locc matchc movc3 movc5 | ||
|  | syn keyword vmasmOpcode movtc movtuc scanc skpc spanc crc extv extzv | ||
|  | syn keyword vmasmOpcode ffc ffs insv aobleq aoblss bbc bbs bbcci bbssi | ||
|  | syn keyword vmasmOpcode blbc blbs brb brw bsbb bsbw caseb casew casel | ||
|  | syn keyword vmasmOpcode jmp jsb rsb sobgeq sobgtr callg calls ret | ||
|  | syn keyword vmasmOpcode bicpsw bispsw bpt halt index movpsl nop popr pushr xfc | ||
|  | syn keyword vmasmOpcode insqhi insqti insque remqhi remqti remque | ||
|  | syn keyword vmasmOpcode addp4 addp6 ashp cmpp3 cmpp4 cvtpl cvtlp cvtps cvtpt | ||
|  | syn keyword vmasmOpcode cvtsp cvttp divp movp mulp subp4 subp6 editpc | ||
|  | syn keyword vmasmOpcode prober probew rei ldpctx svpctx mfpr mtpr bugw bugl | ||
|  | syn keyword vmasmOpcode vldl vldq vgathl vgathq vstl vstq vscatl vscatq | ||
|  | syn keyword vmasmOpcode vvcvt iota mfvp mtvp vsync | ||
|  | syn keyword vmasmOpcode beql[u] bgtr[u] blss[u] | ||
|  | syn match vmasmOpcode "\<add[bwlfdgh][23]\>" | ||
|  | syn match vmasmOpcode "\<bi[cs][bwl][23]\>" | ||
|  | syn match vmasmOpcode "\<clr[bwlqofdgh]\>" | ||
|  | syn match vmasmOpcode "\<cmp[bwlfdgh]\>" | ||
|  | syn match vmasmOpcode "\<cvt[bwlfdgh][bwlfdgh]\>" | ||
|  | syn match vmasmOpcode "\<cvtr[fdgh]l\>" | ||
|  | syn match vmasmOpcode "\<div[bwlfdgh][23]\>" | ||
|  | syn match vmasmOpcode "\<emod[fdgh]\>" | ||
|  | syn match vmasmOpcode "\<mneg[bwlfdgh]\>" | ||
|  | syn match vmasmOpcode "\<mov[bwlqofdgh]\>" | ||
|  | syn match vmasmOpcode "\<mul[bwlfdgh][23]\>" | ||
|  | syn match vmasmOpcode "\<poly[fdgh]\>" | ||
|  | syn match vmasmOpcode "\<sub[bwlfdgh][23]\>" | ||
|  | syn match vmasmOpcode "\<tst[bwlfdgh]\>" | ||
|  | syn match vmasmOpcode "\<xor[bwl][23]\>" | ||
|  | syn match vmasmOpcode "\<mova[bwlfqdgho]\>" | ||
|  | syn match vmasmOpcode "\<push[bwlfqdgho]\>" | ||
|  | syn match vmasmOpcode "\<acb[bwlfgdh]\>" | ||
|  | syn match vmasmOpcode "\<b[lng]equ\=\>" | ||
|  | syn match vmasmOpcode "\<b[cv][cs]\>" | ||
|  | syn match vmasmOpcode "\<bb[cs][cs]\>" | ||
|  | syn match vmasmOpcode "\<v[vs]add[lfdg]\>" | ||
|  | syn match vmasmOpcode "\<v[vs]cmp[lfdg]\>" | ||
|  | syn match vmasmOpcode "\<v[vs]div[fdg]\>" | ||
|  | syn match vmasmOpcode "\<v[vs]mul[lfdg]\>" | ||
|  | syn match vmasmOpcode "\<v[vs]sub[lfdg]\>" | ||
|  | syn match vmasmOpcode "\<v[vs]bi[cs]l\>" | ||
|  | syn match vmasmOpcode "\<v[vs]xorl\>" | ||
|  | syn match vmasmOpcode "\<v[vs]merge\>" | ||
|  | syn match vmasmOpcode "\<v[vs]s[rl]ll\>" | ||
|  | 
 | ||
|  | " Various number formats | ||
|  | syn match vmasmdecNumber	"[+-]\=[0-9]\+\>" | ||
|  | syn match vmasmdecNumber	"^d[0-9]\+\>" | ||
|  | syn match vmasmhexNumber	"^x[0-9a-f]\+\>" | ||
|  | syn match vmasmoctNumber	"^o[0-7]\+\>" | ||
|  | syn match vmasmbinNumber	"^b[01]\+\>" | ||
|  | syn match vmasmfloatNumber	"[-+]\=[0-9]\+E[-+]\=[0-9]\+" | ||
|  | syn match vmasmfloatNumber	"[-+]\=[0-9]\+\.[0-9]*\(E[-+]\=[0-9]\+\)\=" | ||
|  | 
 | ||
|  | " Valid labels | ||
|  | syn match vmasmLabel		"^[a-z_$.][a-z0-9_$.]\{,30}::\=" | ||
|  | syn match vmasmLabel		"\<[0-9]\{1,5}\$:\="          " Local label | ||
|  | 
 | ||
|  | " Character string constants | ||
|  | "       Too complex really. Could be "<...>" but those could also be | ||
|  | "       expressions. Don't know how to handle chosen delimiters | ||
|  | "       ("^<sep>...<sep>") | ||
|  | " syn region vmasmString		start="<" end=">" oneline | ||
|  | 
 | ||
|  | " Operators | ||
|  | syn match vmasmOperator	"[-+*/@&!\\]" | ||
|  | syn match vmasmOperator	"=" | ||
|  | syn match vmasmOperator	"=="		" Global assignment | ||
|  | syn match vmasmOperator	"%length(.*)" | ||
|  | syn match vmasmOperator	"%locate(.*)" | ||
|  | syn match vmasmOperator	"%extract(.*)" | ||
|  | syn match vmasmOperator	"^[amfc]" | ||
|  | syn match vmasmOperator	"[bwlg]^" | ||
|  | 
 | ||
|  | syn match vmasmOperator	"\<\(not_\)\=equal\>" | ||
|  | syn match vmasmOperator	"\<less_equal\>" | ||
|  | syn match vmasmOperator	"\<greater\(_equal\)\=\>" | ||
|  | syn match vmasmOperator	"\<less_than\>" | ||
|  | syn match vmasmOperator	"\<\(not_\)\=defined\>" | ||
|  | syn match vmasmOperator	"\<\(not_\)\=blank\>" | ||
|  | syn match vmasmOperator	"\<identical\>" | ||
|  | syn match vmasmOperator	"\<different\>" | ||
|  | syn match vmasmOperator	"\<eq\>" | ||
|  | syn match vmasmOperator	"\<[gl]t\>" | ||
|  | syn match vmasmOperator	"\<n\=df\>" | ||
|  | syn match vmasmOperator	"\<n\=b\>" | ||
|  | syn match vmasmOperator	"\<idn\>" | ||
|  | syn match vmasmOperator	"\<[nlg]e\>" | ||
|  | syn match vmasmOperator	"\<dif\>" | ||
|  | 
 | ||
|  | " Special items for comments | ||
|  | syn keyword vmasmTodo		contained todo | ||
|  | 
 | ||
|  | " Comments | ||
|  | syn match vmasmComment		";.*" contains=vmasmTodo | ||
|  | 
 | ||
|  | " Include | ||
|  | syn match vmasmInclude		"\.library\>" | ||
|  | 
 | ||
|  | " Macro definition | ||
|  | syn match vmasmMacro		"\.macro\>" | ||
|  | syn match vmasmMacro		"\.mexit\>" | ||
|  | syn match vmasmMacro		"\.endm\>" | ||
|  | syn match vmasmMacro		"\.mcall\>" | ||
|  | syn match vmasmMacro		"\.mdelete\>" | ||
|  | 
 | ||
|  | " Conditional assembly | ||
|  | syn match vmasmPreCond		"\.iff\=\>" | ||
|  | syn match vmasmPreCond		"\.if_false\>" | ||
|  | syn match vmasmPreCond		"\.iftf\=\>" | ||
|  | syn match vmasmPreCond		"\.if_true\(_false\)\=\>" | ||
|  | syn match vmasmPreCond		"\.iif\>" | ||
|  | 
 | ||
|  | " Loop control | ||
|  | syn match vmasmRepeat		"\.irpc\=\>" | ||
|  | syn match vmasmRepeat		"\.repeat\>" | ||
|  | syn match vmasmRepeat		"\.rept\>" | ||
|  | syn match vmasmRepeat		"\.endr\>" | ||
|  | 
 | ||
|  | " Directives | ||
|  | syn match vmasmDirective	"\.address\>" | ||
|  | syn match vmasmDirective	"\.align\>" | ||
|  | syn match vmasmDirective	"\.asci[cdiz]\>" | ||
|  | syn match vmasmDirective	"\.blk[abdfghloqw]\>" | ||
|  | syn match vmasmDirective	"\.\(signed_\)\=byte\>" | ||
|  | syn match vmasmDirective	"\.\(no\)\=cross\>" | ||
|  | syn match vmasmDirective	"\.debug\>" | ||
|  | syn match vmasmDirective	"\.default displacement\>" | ||
|  | syn match vmasmDirective	"\.[dfgh]_floating\>" | ||
|  | syn match vmasmDirective	"\.disable\>" | ||
|  | syn match vmasmDirective	"\.double\>" | ||
|  | syn match vmasmDirective	"\.dsabl\>" | ||
|  | syn match vmasmDirective	"\.enable\=\>" | ||
|  | syn match vmasmDirective	"\.endc\=\>" | ||
|  | syn match vmasmDirective	"\.entry\>" | ||
|  | syn match vmasmDirective	"\.error\>" | ||
|  | syn match vmasmDirective	"\.even\>" | ||
|  | syn match vmasmDirective	"\.external\>" | ||
|  | syn match vmasmDirective	"\.extrn\>" | ||
|  | syn match vmasmDirective	"\.float\>" | ||
|  | syn match vmasmDirective	"\.globa\=l\>" | ||
|  | syn match vmasmDirective	"\.ident\>" | ||
|  | syn match vmasmDirective	"\.link\>" | ||
|  | syn match vmasmDirective	"\.list\>" | ||
|  | syn match vmasmDirective	"\.long\>" | ||
|  | syn match vmasmDirective	"\.mask\>" | ||
|  | syn match vmasmDirective	"\.narg\>" | ||
|  | syn match vmasmDirective	"\.nchr\>" | ||
|  | syn match vmasmDirective	"\.nlist\>" | ||
|  | syn match vmasmDirective	"\.ntype\>" | ||
|  | syn match vmasmDirective	"\.octa\>" | ||
|  | syn match vmasmDirective	"\.odd\>" | ||
|  | syn match vmasmDirective	"\.opdef\>" | ||
|  | syn match vmasmDirective	"\.packed\>" | ||
|  | syn match vmasmDirective	"\.page\>" | ||
|  | syn match vmasmDirective	"\.print\>" | ||
|  | syn match vmasmDirective	"\.psect\>" | ||
|  | syn match vmasmDirective	"\.quad\>" | ||
|  | syn match vmasmDirective	"\.ref[1248]\>" | ||
|  | syn match vmasmDirective	"\.ref16\>" | ||
|  | syn match vmasmDirective	"\.restore\(_psect\)\=\>" | ||
|  | syn match vmasmDirective	"\.save\(_psect\)\=\>" | ||
|  | syn match vmasmDirective	"\.sbttl\>" | ||
|  | syn match vmasmDirective	"\.\(no\)\=show\>" | ||
|  | syn match vmasmDirective	"\.\(sub\)\=title\>" | ||
|  | syn match vmasmDirective	"\.transfer\>" | ||
|  | syn match vmasmDirective	"\.warn\>" | ||
|  | syn match vmasmDirective	"\.weak\>" | ||
|  | syn match vmasmDirective	"\.\(signed_\)\=word\>" | ||
|  | 
 | ||
|  | syn case match | ||
|  | 
 | ||
|  | " Define the default highlighting. | ||
|  | " For version 5.7 and earlier: only when not done already | ||
|  | " For version 5.8 and later: only when an item doesn't have highlighting yet | ||
|  | if version >= 508 || !exists("did_macro_syntax_inits") | ||
|  |   if version < 508 | ||
|  |     let did_macro_syntax_inits = 1 | ||
|  |     command -nargs=+ HiLink hi link <args> | ||
|  |   else | ||
|  |     command -nargs=+ HiLink hi def link <args> | ||
|  |   endif | ||
|  | 
 | ||
|  |   " The default methods for highlighting.  Can be overridden later | ||
|  |   " Comment Constant Error Identifier PreProc Special Statement Todo Type | ||
|  |   " | ||
|  |   " Constant		Boolean Character Number String | ||
|  |   " Identifier		Function | ||
|  |   " PreProc		Define Include Macro PreCondit | ||
|  |   " Special		Debug Delimiter SpecialChar SpecialComment Tag | ||
|  |   " Statement		Conditional Exception Keyword Label Operator Repeat | ||
|  |   " Type		StorageClass Structure Typedef | ||
|  | 
 | ||
|  |   HiLink vmasmComment		Comment | ||
|  |   HiLink vmasmTodo		Todo | ||
|  | 
 | ||
|  |   HiLink vmasmhexNumber		Number		" Constant | ||
|  |   HiLink vmasmoctNumber		Number		" Constant | ||
|  |   HiLink vmasmbinNumber		Number		" Constant | ||
|  |   HiLink vmasmdecNumber		Number		" Constant | ||
|  |   HiLink vmasmfloatNumber	Number		" Constant | ||
|  | 
 | ||
|  | "  HiLink vmasmString		String		" Constant | ||
|  | 
 | ||
|  |   HiLink vmasmReg		Identifier | ||
|  |   HiLink vmasmOperator		Identifier | ||
|  | 
 | ||
|  |   HiLink vmasmInclude		Include		" PreProc | ||
|  |   HiLink vmasmMacro		Macro		" PreProc | ||
|  |   " HiLink vmasmMacroParam	Keyword		" Statement | ||
|  | 
 | ||
|  |   HiLink vmasmDirective		Special | ||
|  |   HiLink vmasmPreCond		Special | ||
|  | 
 | ||
|  | 
 | ||
|  |   HiLink vmasmOpcode		Statement | ||
|  |   HiLink vmasmCond		Conditional	" Statement | ||
|  |   HiLink vmasmRepeat		Repeat		" Statement | ||
|  | 
 | ||
|  |   HiLink vmasmLabel		Type | ||
|  |   delcommand HiLink | ||
|  | endif | ||
|  | 
 | ||
|  | let b:current_syntax = "vmasm" | ||
|  | 
 | ||
|  | " vim: ts=8 sw=2 |