253 lines
4.1 KiB
Plaintext
253 lines
4.1 KiB
Plaintext
# JOE syntax highlight file for assembly language
|
|
|
|
# Highlights ';' comments, C-preprocessor stuff and C-like constants.
|
|
|
|
# Some assembly languages do not use C-preprocessor and use '#' for
|
|
# comments. For them, eliminate all states up to ':idle'. and change the
|
|
# ";" line in 'idle' to '#'.
|
|
|
|
# For UNIX assembly ';' actually separates instructions, but I've only seen
|
|
# this for 'rep; movsb'. If it bothers you eliminate the ';' line in
|
|
# ':idle'.
|
|
|
|
# This highlighter is too strict for numeric constants. Many assembly
|
|
# languages allow '000009', which looks like a bad octal constant in C/UNIX.
|
|
|
|
=Idle
|
|
=Bad bold red
|
|
=Preproc blue
|
|
=Define bold blue
|
|
=Comment green
|
|
=IncLocal cyan
|
|
=IncSystem bold cyan
|
|
=Constant cyan
|
|
=Escape bold cyan
|
|
=Type bold
|
|
=Keyword bold
|
|
=CppKeyword bold
|
|
=Brace
|
|
=Control
|
|
|
|
:reset Idle
|
|
* first noeat
|
|
" \t" reset
|
|
|
|
:first Idle
|
|
* idle noeat
|
|
"#" pre recolor=-1
|
|
|
|
:pre Preproc
|
|
* preproc noeat
|
|
" \t" pre
|
|
"a-z" preident recolor=-1 buffer
|
|
|
|
:preident Preproc
|
|
* preproc noeat strings
|
|
"define" predef
|
|
"include" preinc
|
|
done
|
|
"a-z" preident
|
|
|
|
:preinc Preproc
|
|
* preinc
|
|
" \t" preinc_ws
|
|
"\n" reset
|
|
|
|
:preinc_ws Preproc
|
|
* prebad recolor=-1
|
|
" \t" preinc_ws
|
|
"\"" preinc_local recolor=-1
|
|
"<" preinc_system recolor=-1
|
|
|
|
:preinc_local IncLocal
|
|
* preinc_local
|
|
"\"\n" reset
|
|
|
|
:preinc_system IncSystem
|
|
* preinc_system
|
|
">\n" reset
|
|
|
|
:prebad Bad
|
|
* prebad
|
|
"\n" reset
|
|
|
|
|
|
:predef Preproc
|
|
* predef
|
|
" \t" predef_ws
|
|
"\n" reset
|
|
|
|
:predef_ws Preproc
|
|
* prebad recolor=-1
|
|
" \t" predef_ws
|
|
"a-zA-Z0-9_" predef_ident recolor=-1
|
|
|
|
:predef_ident Define
|
|
* idle noeat
|
|
"a-zA-Z0-9_" predef_ident
|
|
|
|
|
|
:preproc Preproc
|
|
* preproc
|
|
"\n" reset
|
|
"\\" preproc_cont
|
|
"/" preproc_slash
|
|
|
|
:preproc_slash Preproc
|
|
* preproc noeat
|
|
"*" comment recolor=-2
|
|
"/" line_comment recolor=-2
|
|
|
|
:preproc_cont Preproc
|
|
* preproc_cont
|
|
"\n" preproc
|
|
|
|
# All following states are for when we're not in a preprocessor line
|
|
|
|
:idle Idle
|
|
* idle
|
|
";" line_comment recolor=-1
|
|
"\n" reset
|
|
"/" slash
|
|
"0" first_digit recolor=-1
|
|
"1-9" decimal recolor=-1
|
|
"." maybe_float
|
|
"\"" string recolor=-1
|
|
"'" char recolor=-1
|
|
"a-zA-Z_" ident buffer
|
|
"{}" brace recolor=-1
|
|
",:=()><[]*&|!~+\-%^" control recolor=-1
|
|
|
|
:brace Brace
|
|
* idle noeat
|
|
|
|
:control Control
|
|
* idle noeat
|
|
|
|
:slash Idle
|
|
* idle noeat recolor=-2 # Not sure about this
|
|
"*" comment recolor=-2
|
|
"/" line_comment recolor=-2
|
|
|
|
:comment Comment
|
|
* comment
|
|
"*" maybe_end_comment
|
|
|
|
:maybe_end_comment Comment
|
|
* comment
|
|
"/" idle
|
|
"*" maybe_end_comment
|
|
|
|
:line_comment Comment
|
|
* line_comment
|
|
"\n" reset
|
|
|
|
:first_digit Constant
|
|
* idle noeat
|
|
"xX" hex
|
|
"." float
|
|
"eE" epart
|
|
"0-7" octal
|
|
"89" bad_number recolor=-1
|
|
|
|
:bad_number Bad
|
|
* idle noeat
|
|
"0-9" bad_number
|
|
|
|
:octal Constant
|
|
* idle noeat
|
|
"0-7" octal
|
|
"89" bad_number recolor=-1
|
|
|
|
:hex Constant
|
|
* idle noeat
|
|
"0-9A-Fa-f" hex
|
|
|
|
:decimal Constant
|
|
* idle noeat
|
|
"0-9" decimal
|
|
"eE" epart
|
|
"." float
|
|
|
|
:maybe_float Constant
|
|
* idle recolor=-2 noeat
|
|
"0-9" float recolor=-2
|
|
|
|
:float Constant
|
|
* idle noeat
|
|
"eE" epart
|
|
"0-9" float
|
|
|
|
:epart Constant
|
|
* idle noeat
|
|
"0-9+\-" enum
|
|
|
|
:enum Constant
|
|
* idle noeat
|
|
"0-9" enum
|
|
|
|
:string Constant
|
|
* string
|
|
"\"" idle
|
|
"\\" string_escape recolor=-1
|
|
"%" string_control recolor=-1
|
|
|
|
:string_escape Escape
|
|
* string
|
|
"x" string_hex1
|
|
"0-7" string_octal2
|
|
"\n" string recolor=-2
|
|
|
|
:string_hex1 Escape
|
|
* string noeat
|
|
"0-9a-fA-F" string_hex2
|
|
|
|
:string_hex2 Escape
|
|
* string noeat
|
|
"0-9a-fA-F" string
|
|
|
|
:string_octal2 Escape
|
|
* string noeat
|
|
"0-7" string_octal3
|
|
|
|
:string_octal3 Escape
|
|
* string noeat
|
|
"0-7" string
|
|
|
|
:string_control Escape
|
|
* string_control
|
|
"\n" reset
|
|
"diouxXeEfFgGaAcspn%SC" string
|
|
|
|
:char Constant
|
|
* char
|
|
"\n" reset
|
|
"'" idle
|
|
"\\" char_escape recolor=-1
|
|
|
|
:char_escape Escape
|
|
* char
|
|
"x" char_hex1
|
|
"0-7" char_octal2
|
|
"\n" char recolor=-2
|
|
|
|
:char_hex1 Escape
|
|
* char noeat
|
|
"0-9a-fA-F" char_hex2
|
|
|
|
:char_hex2 Escape
|
|
* char noeat
|
|
"0-9a-fA-F" char
|
|
|
|
:char_octal2 Escape
|
|
* char noeat
|
|
"0-7" char_octal3
|
|
|
|
:char_octal3 Escape
|
|
* char noeat
|
|
"0-7" char
|
|
|
|
:ident Idle
|
|
* idle noeat
|
|
"a-zA-Z0-9_" ident
|