if exists("b:current_syntax") finish endif " Computation instructions syntax match hackasmFunction "\v0" syntax match hackasmFunction "\v1" syntax match hackasmFunction "\vM" syntax match hackasmFunction "\vD" syntax match hackasmFunction "\vA" syntax match hackasmFunction "\v-" syntax match hackasmFunction "\v\+" syntax match hackasmFunction "\v\|" syntax match hackasmFunction "\v!" syntax match hackasmFunction "\v\&" " Jump instructions syntax match hackasmConditional "\v;null" syntax match hackasmConditional "\v;JGT" syntax match hackasmConditional "\v;JEQ" syntax match hackasmConditional "\v;JGE" syntax match hackasmConditional "\v;JLT" syntax match hackasmConditional "\v;JNE" syntax match hackasmConditional "\v;JLE" syntax match hackasmConditional "\v;JMP" " Assignment instructions syntax match hackasmOperator "\vnull\s*\=" syntax match hackasmOperator "\vM\s*\=" syntax match hackasmOperator "\vD\s*\=" syntax match hackasmOperator "\vMD\s*\=" syntax match hackasmOperator "\vA\s*\=" syntax match hackasmOperator "\vAM\s*\=" syntax match hackasmOperator "\vAD\s*\=" syntax match hackasmOperator "\vAMD\s*\=" syntax match hackasmNumber "\v\@[0-9]+" syntax match hackasmIdentifier "\v\@[a-z][a-z_]*" syntax match hackasmLabel "\v\@[A-Z][A-Za-z0-9:._]*" syntax match hackasmLabel "\v\([A-Z][A-Za-z0-9:._]*\)" syntax match hackasmError "\v\t+" syntax match hackasmError "\v\([A-Z].*[^A-Za-z0-9:._].*\)" syntax match hackasmError "\v\@[A-Z]+[^A-Za-z0-9:._].*" syntax match hackasmError "\v\@[a-z]+[^a-za-z0-9:._].*" " Computation instruction errors syntax match hackasmError "\vM\s*\+\s*D" syntax match hackasmError "\vA\s*\+\s*D" " TODO Missing invalid computation instructions syntax match hackasmKeyword "\v\@R[0-9]" syntax match hackasmKeyword "\v\@R1[0-5]" syntax match hackasmKeyword "\v\@SCREEN" syntax match hackasmKeyword "\v\@KBD" syntax match hackasmKeyword "\v\@SP" syntax match hackasmKeyword "\v\@LCL" syntax match hackasmKeyword "\v\@ARG" syntax match hackasmKeyword "\v\@THIS" syntax match hackasmKeyword "\v\@THAT" syntax match hackasmComment "\v//.*$" highlight link hackasmError Error highlight link hackasmComment Comment highlight link hackasmFunction Function highlight link hackasmConditional Conditional highlight link hackasmOperator Operator highlight link hackasmKeyword Keyword highlight link hackasmNumber Number highlight link hackasmIdentifier Identifier highlight link hackasmLabel Label let b:current_syntax = "hackasm"