if exists('b:current_syntax') finish endif let s:save_cpo = &cpoptions set cpoptions&vim setlocal iskeyword+=- setlocal shiftwidth=4 setlocal tabstop=4 syn keyword mieUnspecifiedKeyword \ to step iter-args get set \ case then default syn keyword mieInstructionFlag \ eq gt ge lt le syn match mieRegister "%[0-9]\>" syn match mieRegister "%[1-9][0-9]\+\>" syn match mieRegister "%[A-Za-z_\-\.][A-Za-z0-9_\-\.]*\>" syn match mieMachineRegister "$[0-9]\>" syn match mieMachineRegister "$[1-9][0-9]\+\>" syn match mieMachineRegister "$[A-Za-z_\-\.][A-Za-z0-9_\-\.]*\>" syn match mieIdentifier /@\(\w\+\)\(\.\(\w\+\)\)*\>/ syn match mieIdentifier /@\.\(\w\+\)\(\.\(\w\+\)\)*\>/ syn match mieBlockIdentifier /\^\(\w\+\)\(\.\(\w\+\)\)*/ syn match mieBlockLabel /\^\(\w\+\)\(\.\(\w\+\)\)*\:/ syn keyword mieBuiltinType void " Use syn match for type names that are ALSO dialect names, to ensure that " dialect operations are still matched as such. syn match mieBuiltinType /\/ syn match mieBuiltinType /\/ syn match mieBuiltinType /\/ syn match mieBuiltinType "\<[if][0-9]\>" syn match mieBuiltinType "\<[if][1-9][0-9]\+\>" syn match mieDialectType /#[A-Za-z][A-Za-z0-9\-]*\(\.[A-Za-z][A-Za-z0-9\-]*\)\+/ syn match mieInstruction /\*[A-Za-z][A-Za-z0-9\-]*\(\.[A-Za-z][A-Za-z0-9\-]*\)\+\([>\*]\)\@!\>/ syn match mieGenericOperation /\~[A-Za-z][A-Za-z0-9\-]*\(\.[A-Za-z][A-Za-z0-9\-]*\)\+\([>\*]\)\@!\>/ syn match mieGraphOperation /+[A-Za-z][A-Za-z0-9\-]*\(\.[A-Za-z][A-Za-z0-9\-]*\)\+\([>\*]\)\@!\>/ syn match mieCustomOperation /\<[A-Za-z][A-Za-z0-9\-]*\(\.[A-Za-z][A-Za-z0-9\-]*\)\+\>/ syn match mieAttributeName /\<[A-Za-z][A-Za-z0-9\-_\.]*\(\s*=\)\@=\>/ syn region mieString start=+"+ end=+"\%(u8\)\=+ end=+$+ extend syn match mieFloat /\<[0-9]\+\.[0-9]\+/ syn match mieFloat /\<-[0-9]\+\.[0-9]\+/ syn match mieFloat /\<+[0-9]\+\.[0-9]\+/ syn match mieInteger /\<[0-9]\+\(\.\)\@!\>/ syn match mieInteger /\<-[0-9]\+\(\.\)\@!\>/ syn match mieInteger /\<0x[:xdigit:]\+\>/ syn match mieInteger /\<-0x[:xdigit:]\+\>/ syn match mieIntegerDimension /[0-9]\+x/ syn match mieIntegerDimension /0x[:xdigit:]\+x/ syn keyword mieTodo contained TODO FIXME XXX NOTE HACK TBD syn region mieBlockComment start="/\*" end="\*/" contains=mieTodo,mieBlockComment syn match mieLineComment ";.*$" contains=mieTodo,mieBlockComment syn cluster mieComment contains=mieLineComment,mieBlockComment syn match mieBrackets "[[\]]" display syn match mieParens "[()]" display syn match mieBraces "[{}]" display syn match mieAngleBrackets "[<>]" display syn match mieOperator "[=:]" display syn match mieOperator "->" display " The default highlighting. hi def link mieUnspecifiedKeyword Keyword hi def link mieInteger Number hi def link mieFloat Number hi def link mieParens Delimiter hi def link mieBraces Structure hi def link mieBrackets Delimiter hi def link mieAngleBrackets StorageClass hi def link mieDialectType Type hi def link mieGenericOperation @function.builtin hi def link mieGraphOperation Statement hi def link mieCustomOperation Function hi def link mieInstruction @attribute hi def link mieInstructionFlag StorageClass hi def link mieIdentifier Identifier hi def link mieBlockIdentifier Label hi def link mieBlockLabel Label hi def link mieRegister @variable.parameter hi def link mieMachineRegister @variable.builtin hi def link mieString String hi def link mieBuiltinType @type.builtin hi def link mieBlockType @attribute hi def link mieTypeModifier @attribute hi def link mieAttributeName @property hi def link mieComment Comment hi def link mieLineComment mieComment hi def link mieBlockComment mieComment hi def link mieLineContinuation mieComment hi def link mieIdent @variable.builtin hi def link mieAtom Constant let b:current_syntax = 'mie' let &cpoptions = s:save_cpo unlet s:save_cpo