561 lines
8.6 KiB
Plaintext
561 lines
8.6 KiB
Plaintext
|
# JOE syntax highlight file for D
|
||
|
|
||
|
=Idle
|
||
|
=Ident
|
||
|
=Comment
|
||
|
=Constant
|
||
|
=String +Constant
|
||
|
=Number +Constant
|
||
|
=Boolean +Constant
|
||
|
=Character +String
|
||
|
=Escape
|
||
|
=StringEscape +Escape
|
||
|
=CharacterEscape +StringEscape
|
||
|
=Type
|
||
|
=Keyword
|
||
|
=Operator +Keyword
|
||
|
=Statement +Keyword
|
||
|
=Conditional +Statement
|
||
|
=Loop +Statement
|
||
|
=Label +DefinedIdent
|
||
|
=Bad
|
||
|
=Brace
|
||
|
=Control
|
||
|
|
||
|
=Methods
|
||
|
|
||
|
:begin Idle
|
||
|
* begin noeat call=.d()
|
||
|
|
||
|
.subr d
|
||
|
|
||
|
:idle Idle
|
||
|
* idle
|
||
|
"(" idle call=.d(paren)
|
||
|
"[" idle call=.d(brack)
|
||
|
"{" do_brace recolor=-1 noeat
|
||
|
# "{" brace recolor=-1 call=.d(squiggly)
|
||
|
.ifdef paren
|
||
|
")" idle return
|
||
|
.else
|
||
|
")" stray recolor=-1
|
||
|
.endif
|
||
|
.ifdef brack
|
||
|
"]" idle return
|
||
|
.else
|
||
|
"]" stray recolor=-1
|
||
|
.endif
|
||
|
.ifdef squiggly
|
||
|
"}" brace recolor=-1 return
|
||
|
.else
|
||
|
"}" stray recolor=-1
|
||
|
.endif
|
||
|
"\n" idle
|
||
|
"/" slash
|
||
|
"0" first_digit recolor=-1
|
||
|
"1-9" decimal recolor=-1
|
||
|
"." maybe_float
|
||
|
"\"" string recolor=-1
|
||
|
"'" char recolor=-1
|
||
|
"\i" ident mark buffer
|
||
|
",:;=><*&|!~+\-%^" control recolor=-1
|
||
|
"r" maybe_rstring mark buffer
|
||
|
"x" maybe_xstring mark buffer
|
||
|
"q" maybe_qstring recolor=-1 mark buffer
|
||
|
"`" bstring recolor=-1
|
||
|
|
||
|
:do_brace Brace
|
||
|
* idle noeat
|
||
|
"{" brace call=.d(squiggly)
|
||
|
|
||
|
:brace Brace
|
||
|
* idle noeat
|
||
|
|
||
|
:stray Bad
|
||
|
* idle noeat
|
||
|
|
||
|
:maybe_done Control
|
||
|
* idle noeat
|
||
|
"/" idle noeat return recolor=-2
|
||
|
|
||
|
:control Control
|
||
|
* idle noeat
|
||
|
|
||
|
:slash Idle
|
||
|
* idle noeat
|
||
|
"*" comment recolor=-2
|
||
|
"+" idle recolor=-2 call=.block_comment()
|
||
|
"/" line_comment recolor=-2
|
||
|
|
||
|
:comment Comment comment
|
||
|
* comment
|
||
|
# might be TODO label
|
||
|
"BFHNTX" comment noeat call=comment_todo.comment_todo()
|
||
|
"*" maybe_end_comment
|
||
|
|
||
|
:maybe_end_comment Comment comment
|
||
|
* comment noeat
|
||
|
"/" idle
|
||
|
"*" maybe_end_comment
|
||
|
|
||
|
:line_comment Comment comment
|
||
|
* line_comment
|
||
|
# might be TODO label
|
||
|
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
|
||
|
"\n" idle
|
||
|
|
||
|
:int_postfix Number
|
||
|
* idle noeat
|
||
|
"uU" int_postfix_1
|
||
|
"L" int_postfix_2
|
||
|
|
||
|
:int_postfix_1 Number
|
||
|
* idle noeat
|
||
|
"L" idle
|
||
|
|
||
|
:int_postfix_2 Number
|
||
|
* idle noeat
|
||
|
"uU" idle
|
||
|
|
||
|
:float_postfix Number
|
||
|
* idle noeat
|
||
|
"fF" float_postfix_1
|
||
|
"L" float_postfix_1
|
||
|
"i" idle
|
||
|
|
||
|
:float_postfix_1 Number
|
||
|
* idle noeat
|
||
|
"i" idle
|
||
|
|
||
|
:first_digit Number
|
||
|
* int_postfix noeat
|
||
|
"xX" hex
|
||
|
"bB" bin
|
||
|
"." float
|
||
|
"eE" epart
|
||
|
"0-9" decimal
|
||
|
|
||
|
:bad_number Bad
|
||
|
* idle noeat
|
||
|
"0-9" bad_number
|
||
|
|
||
|
:octal Number
|
||
|
* int_postfix noeat
|
||
|
"0-7_" octal
|
||
|
"89" bad_number recolor=-1
|
||
|
|
||
|
:hex Number
|
||
|
* int_postfix noeat
|
||
|
"0-9A-Fa-f_" hex
|
||
|
"." hexfloat
|
||
|
"pP" ppart
|
||
|
|
||
|
:hexfloat Number
|
||
|
* float_postfix noeat
|
||
|
"0-9A-Fa-f_" hexfloat
|
||
|
"pP" ppart
|
||
|
|
||
|
:ppart Number
|
||
|
* float_postfix noeat
|
||
|
"0-9+\-" pnum
|
||
|
|
||
|
:pnum Number
|
||
|
* float_postfix noeat
|
||
|
"0-9_" pnum
|
||
|
|
||
|
:decimal Number
|
||
|
* int_postfix noeat
|
||
|
"0-9_" decimal
|
||
|
"eE" epart
|
||
|
"." float
|
||
|
|
||
|
:maybe_float Number
|
||
|
* idle recolor=-2 noeat
|
||
|
"\i" not_ident recolor=-2
|
||
|
"0-9" float recolor=-2
|
||
|
|
||
|
:not_ident Idle
|
||
|
* idle noeat
|
||
|
"\c" not_ident
|
||
|
|
||
|
:float Number
|
||
|
* float_postfix noeat
|
||
|
"eE" epart
|
||
|
"0-9_" float
|
||
|
|
||
|
:epart Number
|
||
|
* idle noeat
|
||
|
"0-9+\-" enum
|
||
|
|
||
|
:enum Number
|
||
|
* float_postfix noeat
|
||
|
"0-9_" enum
|
||
|
|
||
|
:maybe_qstring Brace
|
||
|
* ident recolor=-1 noeat
|
||
|
"{" brace call=.d(squiggly)
|
||
|
"\"" qdstring recolor=-2
|
||
|
|
||
|
:qdstring String string
|
||
|
* qstring save_c
|
||
|
"\i" qdelim buffer
|
||
|
|
||
|
:qdelim String string
|
||
|
* qdelim_bad noeat save_s
|
||
|
"\c" qdelim
|
||
|
"\n" skipline noeat save_s
|
||
|
|
||
|
:qdelim_bad Bad
|
||
|
* qdelim_bad
|
||
|
"\n" skipline noeat
|
||
|
|
||
|
:skipline String string
|
||
|
* skipline
|
||
|
"\n" next_line
|
||
|
|
||
|
:todelim String string
|
||
|
* todelim
|
||
|
"\n" next_line
|
||
|
"\"" next_line strings
|
||
|
"&" founddelim
|
||
|
done
|
||
|
|
||
|
:founddelim String string
|
||
|
* idle noeat
|
||
|
"\"" bad_line
|
||
|
|
||
|
:bad_line Bad
|
||
|
* bad_line
|
||
|
"\n" idle
|
||
|
|
||
|
# eat \n so it's not in string.
|
||
|
:next_line String string
|
||
|
* todelim buffer
|
||
|
"\n" next_line
|
||
|
|
||
|
:qstring String string
|
||
|
* qstring
|
||
|
& qstring_1
|
||
|
|
||
|
:qstring_1 String string
|
||
|
* qstring noeat
|
||
|
"\"" string_postfix
|
||
|
|
||
|
:maybe_xstring Idle
|
||
|
* ident noeat
|
||
|
"\"" xstring recolor=-2
|
||
|
|
||
|
:xstring String string
|
||
|
* bad_xstring recolor=-1
|
||
|
" \t\r\n\f0-9A-Fa-f" xstring
|
||
|
"\"" string_postfix
|
||
|
|
||
|
:bad_xstring Bad
|
||
|
* xstring noeat
|
||
|
|
||
|
:maybe_rstring Idle
|
||
|
* ident noeat
|
||
|
"\"" rstring recolor=-2
|
||
|
|
||
|
:rstring String string
|
||
|
* rstring
|
||
|
"\"" string_postfix
|
||
|
|
||
|
:bstring String string
|
||
|
* bstring
|
||
|
"`" string_postfix
|
||
|
|
||
|
:string String string
|
||
|
* string
|
||
|
"\"" string_postfix
|
||
|
"\\" string_escape recolor=-1
|
||
|
"%" string_control recolor=-1
|
||
|
|
||
|
:string_postfix String string
|
||
|
* idle noeat
|
||
|
"cwd" idle
|
||
|
|
||
|
:string_escape StringEscape string
|
||
|
* string
|
||
|
"U" string_hex8
|
||
|
"u" string_hex4
|
||
|
"x" string_hex2
|
||
|
"0-7" string_octal2
|
||
|
"\n" string recolor=-2
|
||
|
|
||
|
:string_hex8 StringEscape string
|
||
|
* string noeat
|
||
|
"0-9a-fA-F" string_hex7
|
||
|
|
||
|
:string_hex7 StringEscape string
|
||
|
* string noeat
|
||
|
"0-9a-fA-F" string_hex6
|
||
|
|
||
|
:string_hex6 StringEscape string
|
||
|
* string noeat
|
||
|
"0-9a-fA-F" string_hex5
|
||
|
|
||
|
:string_hex5 StringEscape string
|
||
|
* string noeat
|
||
|
"0-9a-fA-F" string_hex4
|
||
|
|
||
|
:string_hex4 StringEscape string
|
||
|
* string noeat
|
||
|
"0-9a-fA-F" string_hex3
|
||
|
|
||
|
:string_hex3 StringEscape string
|
||
|
* string noeat
|
||
|
"0-9a-fA-F" string_hex2
|
||
|
|
||
|
:string_hex2 StringEscape string
|
||
|
* string noeat
|
||
|
"0-9a-fA-F" string_hex1
|
||
|
|
||
|
:string_hex1 StringEscape string
|
||
|
* string noeat
|
||
|
"0-9a-fA-F" string
|
||
|
|
||
|
:string_octal2 StringEscape string
|
||
|
* string noeat
|
||
|
"0-7" string_octal1
|
||
|
|
||
|
:string_octal1 StringEscape string
|
||
|
* string noeat
|
||
|
"0-7" string
|
||
|
|
||
|
:string_control StringEscape string
|
||
|
* string_control
|
||
|
"\n" idle
|
||
|
"\"" string noeat
|
||
|
"diouxXeEfFgGaAcspn%SCM" string
|
||
|
|
||
|
:char Character string
|
||
|
* char_done
|
||
|
"'" idle
|
||
|
"\\" char_escape recolor=-1
|
||
|
|
||
|
:char_done Character string
|
||
|
* idle noeat recolor=-3
|
||
|
"\'" idle
|
||
|
|
||
|
:char_escape CharacterEscape string
|
||
|
* char_done
|
||
|
"U" char_hex8
|
||
|
"u" char_hex4
|
||
|
"x" char_hex2
|
||
|
"0-7" char_octal2
|
||
|
|
||
|
:char_hex8 CharacterEscape string
|
||
|
* char_done noeat
|
||
|
"0-9a-fA-F" char_hex7
|
||
|
|
||
|
:char_hex7 CharacterEscape string
|
||
|
* char_done noeat
|
||
|
"0-9a-fA-F" char_hex6
|
||
|
|
||
|
:char_hex6 CharacterEscape string
|
||
|
* char_done noeat
|
||
|
"0-9a-fA-F" char_hex5
|
||
|
|
||
|
:char_hex5 CharacterEscape string
|
||
|
* char_done noeat
|
||
|
"0-9a-fA-F" char_hex4
|
||
|
|
||
|
:char_hex4 CharacterEscape string
|
||
|
* char_done noeat
|
||
|
"0-9a-fA-F" char_hex3
|
||
|
|
||
|
:char_hex3 CharacterEscape string
|
||
|
* char_done noeat
|
||
|
"0-9a-fA-F" char_hex2
|
||
|
|
||
|
:char_hex2 CharacterEscape string
|
||
|
* char_done noeat
|
||
|
"0-9a-fA-F" char_hex1
|
||
|
|
||
|
:char_hex1 CharacterEscape string
|
||
|
* char_done noeat
|
||
|
"0-9a-fA-F" char_done
|
||
|
|
||
|
:char_octal2 CharacterEscape string
|
||
|
* char_done noeat
|
||
|
"0-7" char_octal1
|
||
|
|
||
|
:char_octal1 CharacterEscape string
|
||
|
* char_done noeat
|
||
|
"0-7" char_done
|
||
|
|
||
|
:ident Ident
|
||
|
* ident_end noeat recolormark strings
|
||
|
"abstract" kw
|
||
|
"alias" kw
|
||
|
"align" kw
|
||
|
"asm" kw
|
||
|
"assert" kw
|
||
|
"auto" kw
|
||
|
"body" kw
|
||
|
"bool" kw
|
||
|
"break" kw
|
||
|
"byte" kw
|
||
|
"case" kw
|
||
|
"cast" kw
|
||
|
"catch" kw
|
||
|
"cdouble" kw
|
||
|
"cent" kw
|
||
|
"cfloat" kw
|
||
|
"char" kw
|
||
|
"class" kw
|
||
|
"const" kw
|
||
|
"continue" kw
|
||
|
"creal" kw
|
||
|
"dchar" kw
|
||
|
"debug" kw
|
||
|
"default" kw
|
||
|
"delegate" kw
|
||
|
"delete" kw
|
||
|
"deprecated" kw
|
||
|
"do" kw
|
||
|
"double" kw
|
||
|
"else" kw
|
||
|
"enum" kw
|
||
|
"export" kw
|
||
|
"extern" kw
|
||
|
"false" kw
|
||
|
"final" kw
|
||
|
"finally" kw
|
||
|
"float" kw
|
||
|
"for" kw
|
||
|
"foreach" kw
|
||
|
"foreach_reverse" kw
|
||
|
"function" kw
|
||
|
"goto" kw
|
||
|
"idouble" kw
|
||
|
"if" kw
|
||
|
"ifloat" kw
|
||
|
"immutable" kw
|
||
|
"import" kw
|
||
|
"in" kw
|
||
|
"inout" kw
|
||
|
"int" kw
|
||
|
"interface" kw
|
||
|
"invariant" kw
|
||
|
"ireal" kw
|
||
|
"is" kw
|
||
|
"lazy" kw
|
||
|
"long" kw
|
||
|
"macro" kw
|
||
|
"mixin" kw
|
||
|
"module" kw
|
||
|
"new" kw
|
||
|
"nothrow" kw
|
||
|
"null" kw
|
||
|
"out" kw
|
||
|
"override" kw
|
||
|
"package" kw
|
||
|
"pragma" kw
|
||
|
"private" kw
|
||
|
"protected" kw
|
||
|
"public" kw
|
||
|
"pure" kw
|
||
|
"real" kw
|
||
|
"ref" kw
|
||
|
"return" kw
|
||
|
"scope" kw
|
||
|
"shared" kw
|
||
|
"short" kw
|
||
|
"static" kw
|
||
|
"struct" kw
|
||
|
"super" kw
|
||
|
"switch" kw
|
||
|
"synchronized" kw
|
||
|
"template" kw
|
||
|
"this" kw
|
||
|
"throw" kw
|
||
|
"true" kw
|
||
|
"try" kw
|
||
|
"typedef" kw
|
||
|
"typeid" kw
|
||
|
"typeof" kw
|
||
|
"ubyte" kw
|
||
|
"ucent" kw
|
||
|
"uint" kw
|
||
|
"ulong" kw
|
||
|
"union" kw
|
||
|
"unittest" kw
|
||
|
"ushort" kw
|
||
|
"version" kw
|
||
|
"void" kw
|
||
|
"volatile" kw
|
||
|
"wchar" kw
|
||
|
"while" kw
|
||
|
"with" kw
|
||
|
"__FILE__" kw
|
||
|
"__MODULE__" kw
|
||
|
"__LINE__" kw
|
||
|
"__FUNCTION__" kw
|
||
|
"__PRETTY_FUNCTION__" kw
|
||
|
"__gshared" kw
|
||
|
"__traits" kw
|
||
|
"__vector" kw
|
||
|
"__parameters" kw
|
||
|
done
|
||
|
"\c" ident
|
||
|
|
||
|
:type Type
|
||
|
* idle noeat
|
||
|
|
||
|
:kw Keyword
|
||
|
* idle noeat
|
||
|
|
||
|
:bad_kw Bad
|
||
|
* idle noeat
|
||
|
|
||
|
:bool Boolean
|
||
|
* idle noeat
|
||
|
|
||
|
:lit Constant
|
||
|
* idle noeat
|
||
|
|
||
|
:loop Loop
|
||
|
* idle noeat
|
||
|
|
||
|
:cond Conditional
|
||
|
* idle noeat
|
||
|
|
||
|
:stmt Statement
|
||
|
* idle noeat
|
||
|
|
||
|
:operator Operator
|
||
|
* idle noeat
|
||
|
|
||
|
:ident_end Idle
|
||
|
* idle noeat
|
||
|
" " ident_end
|
||
|
"(" method_end noeat recolormark
|
||
|
|
||
|
:method_end Methods
|
||
|
* idle noeat
|
||
|
|
||
|
.end
|
||
|
|
||
|
# Recursive block comments
|
||
|
|
||
|
.subr block_comment
|
||
|
|
||
|
:idle Comment comment
|
||
|
* idle
|
||
|
# might be TODO label
|
||
|
"BFHNTX" idle noeat call=comment_todo.comment_todo()
|
||
|
"+" maybe_done
|
||
|
"/" maybe_recur
|
||
|
|
||
|
:maybe_done Comment comment
|
||
|
* idle noeat
|
||
|
"/" idle return
|
||
|
|
||
|
:maybe_recur Comment comment
|
||
|
* idle noeat
|
||
|
"+" idle call=.block_comment()
|
||
|
|
||
|
.end
|