xref: /vim-8.2.3635/runtime/syntax/mix.vim (revision df980db6)
14b60a6cdSBram Moolenaar" Vim syntax file
24b60a6cdSBram Moolenaar" Language:	MIX (Donald Knuth's assembly language used in TAOCP)
34b60a6cdSBram Moolenaar" Maintainer:	Wu Yongwei <[email protected]>
44b60a6cdSBram Moolenaar" Filenames:	*.mixal *.mix
5*df980db6SBram Moolenaar" Last Change:  2017-11-26 15:21:36 +0800
64b60a6cdSBram Moolenaar
74b60a6cdSBram Moolenaar" Quit when a syntax file was already loaded
84b60a6cdSBram Moolenaarif exists("b:current_syntax")
94b60a6cdSBram Moolenaar  finish
104b60a6cdSBram Moolenaarendif
114b60a6cdSBram Moolenaar
124b60a6cdSBram Moolenaarlet s:cpo_save = &cpo
134b60a6cdSBram Moolenaarset cpo&vim
144b60a6cdSBram Moolenaar
154b60a6cdSBram Moolenaarsyn case ignore
164b60a6cdSBram Moolenaar
174b60a6cdSBram Moolenaar" Special processing of ALF directive: implementations vary whether quotation
184b60a6cdSBram Moolenaar" marks are needed
19*df980db6SBram Moolenaarsyn match mixAlfParam		#\s\{1,2\}"\?[^"]\{,5\}"\?# contains=mixString nextgroup=mixEndComment contained
204b60a6cdSBram Moolenaar
214b60a6cdSBram Moolenaar" Region for parameters
224b60a6cdSBram Moolenaarsyn match mixParam		#[-+*/:=0-9a-z,()"]\+# contains=mixIdentifier,mixSpecial,mixNumber,mixString,mixLabel nextgroup=mixEndComment contained
234b60a6cdSBram Moolenaar
244b60a6cdSBram Moolenaar" Comment at the line end
254b60a6cdSBram Moolenaarsyn match mixEndComment		".*" contains=mixRegister contained
264b60a6cdSBram Moolenaar
274b60a6cdSBram Moolenaar" Identifier; must go before literals
284b60a6cdSBram Moolenaarsyn match mixIdentifier		"[a-z0-9_]\+" contained
294b60a6cdSBram Moolenaar
304b60a6cdSBram Moolenaar" Literals
314b60a6cdSBram Moolenaarsyn match mixSpecial		"[-+*/:=]" contained
324b60a6cdSBram Moolenaarsyn match mixNumber		"[0-9]\+\>" contained
334b60a6cdSBram Moolenaarsyn region mixString		start=+"+ skip=+\\"+ end=+"+ contained
344b60a6cdSBram Moolenaar
354b60a6cdSBram Moolenaar" Labels
364b60a6cdSBram Moolenaarsyn match mixLabel		"^[a-z0-9_]\{,10\}\s\+" nextgroup=mixAlfSpecial,mixOpcode,mixDirective
374b60a6cdSBram Moolenaarsyn match mixLabel		"[0-9][BF]" contained
384b60a6cdSBram Moolenaar
394b60a6cdSBram Moolenaar" Comments
404b60a6cdSBram Moolenaarsyn match mixComment		"^\*.*" contains=mixRegister
414b60a6cdSBram Moolenaar
424b60a6cdSBram Moolenaar" Directives
434b60a6cdSBram Moolenaarsyn keyword mixDirective 	ORIG EQU CON END nextgroup=mixParam contained skipwhite
444b60a6cdSBram Moolenaarsyn keyword mixDirective 	ALF nextgroup=mixAlfParam contained
454b60a6cdSBram Moolenaar
464b60a6cdSBram Moolenaar" Opcodes
474b60a6cdSBram Moolenaarsyn keyword mixOpcode	NOP HLT NUM CHAR FLOT FIX nextgroup=mixEndComment contained
484b60a6cdSBram Moolenaarsyn keyword mixOpcode	FADD FSUB FMUL FDIV FCMP MOVE ADD SUB MUL DIV IOC IN OUT JRED JBUS JMP JSJ JOV JNOV JL JE JG JLE JNE JGE SLA SRA SLAX SRAX SLC SRC nextgroup=mixParam contained skipwhite
49*df980db6SBram Moolenaarsyn keyword mixOpcode	SLB SRB JAE JAO JXE JXO nextgroup=mixParam contained skipwhite
504b60a6cdSBram Moolenaar
514b60a6cdSBram Moolenaarsyn match mixOpcode	"LD[AX1-6]N\?\>" nextgroup=mixParam contained skipwhite
524b60a6cdSBram Moolenaarsyn match mixOpcode	"ST[AX1-6JZ]\>" nextgroup=mixParam contained skipwhite
534b60a6cdSBram Moolenaarsyn match mixOpcode	"EN[TN][AX1-6]\>" nextgroup=mixParam contained skipwhite
544b60a6cdSBram Moolenaarsyn match mixOpcode	"INC[AX1-6]\>" nextgroup=mixParam contained skipwhite
554b60a6cdSBram Moolenaarsyn match mixOpcode	"DEC[AX1-6]\>" nextgroup=mixParam contained skipwhite
564b60a6cdSBram Moolenaarsyn match mixOpcode	"CMP[AX1-6]\>" nextgroup=mixParam contained skipwhite
574b60a6cdSBram Moolenaarsyn match mixOpcode	"J[AX1-6]N\?[NZP]\>" nextgroup=mixParam contained skipwhite
584b60a6cdSBram Moolenaar
594b60a6cdSBram Moolenaar" Switch back to being case sensitive
604b60a6cdSBram Moolenaarsyn case match
614b60a6cdSBram Moolenaar
62*df980db6SBram Moolenaar" Registers (only to be used in comments now)
634b60a6cdSBram Moolenaarsyn keyword mixRegister	rA rX rI1 rI2 rI3 rI4 rI5 rI6 rJ contained
644b60a6cdSBram Moolenaar
654b60a6cdSBram Moolenaar" The default highlighting
664b60a6cdSBram Moolenaarhi def link mixRegister		Special
674b60a6cdSBram Moolenaarhi def link mixLabel		Define
684b60a6cdSBram Moolenaarhi def link mixComment		Comment
694b60a6cdSBram Moolenaarhi def link mixEndComment	Comment
704b60a6cdSBram Moolenaarhi def link mixDirective	Keyword
714b60a6cdSBram Moolenaarhi def link mixOpcode		Keyword
724b60a6cdSBram Moolenaar
734b60a6cdSBram Moolenaarhi def link mixSpecial		Special
744b60a6cdSBram Moolenaarhi def link mixNumber		Number
754b60a6cdSBram Moolenaarhi def link mixString		String
764b60a6cdSBram Moolenaarhi def link mixAlfParam		String
774b60a6cdSBram Moolenaarhi def link mixIdentifier	Identifier
784b60a6cdSBram Moolenaar
794b60a6cdSBram Moolenaarlet b:current_syntax = "mix"
804b60a6cdSBram Moolenaar
814b60a6cdSBram Moolenaarlet &cpo = s:cpo_save
824b60a6cdSBram Moolenaarunlet s:cpo_save
834b60a6cdSBram Moolenaar
844b60a6cdSBram Moolenaar" vim: ts=8
85