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