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
 |