355 lines
5.3 KiB
Plaintext
355 lines
5.3 KiB
Plaintext
|
# JOE syntax highlight file for Swift
|
||
|
|
||
|
=Idle
|
||
|
=Comment
|
||
|
=Preproc
|
||
|
=Precond +Preproc
|
||
|
=Constant
|
||
|
=String +Constant
|
||
|
=Number +Constant
|
||
|
=Boolean +Constant
|
||
|
=StringEscape +Escape +String
|
||
|
=Operator
|
||
|
=Keyword
|
||
|
=Statement +Keyword
|
||
|
=Loop +Statement
|
||
|
=Conditional +Statement
|
||
|
=Type
|
||
|
=StorageClass +Type +Keyword
|
||
|
=Modifier +StorageClass
|
||
|
=Label +DefinedIdent
|
||
|
=Builtin +DefinedFunction
|
||
|
=Bad
|
||
|
|
||
|
:pre_idle Idle
|
||
|
* NULL noeat call=.swift()
|
||
|
|
||
|
.subr swift
|
||
|
|
||
|
:idle Idle
|
||
|
* idle
|
||
|
"(" idle call=.swift(paren)
|
||
|
"[" idle call=.swift(brack)
|
||
|
"{" idle call=.swift(squiggly)
|
||
|
.ifdef paren
|
||
|
")" idle return
|
||
|
.else
|
||
|
")" stray recolor=-1
|
||
|
.endif
|
||
|
.ifdef brack
|
||
|
"]" idle return
|
||
|
.else
|
||
|
"]" stray recolor=-1
|
||
|
.endif
|
||
|
.ifdef squiggly
|
||
|
"}" idle return
|
||
|
.else
|
||
|
"}" stray recolor=-1
|
||
|
.endif
|
||
|
"0" zero recolor=-1
|
||
|
"1-9" decimal recolor=-1
|
||
|
"." decimal_point recolor=-1
|
||
|
"\"" string recolor=-1
|
||
|
"/" slash recolor=-1
|
||
|
"@$\i" ident buffer
|
||
|
"#" pre mark
|
||
|
|
||
|
:stray Bad
|
||
|
* idle
|
||
|
|
||
|
:pre Preproc
|
||
|
* idle noeat
|
||
|
" \t" pre
|
||
|
"a-z" preident recolor=-1 buffer
|
||
|
|
||
|
:preident Preproc
|
||
|
* idle markend recolormark noeat strings
|
||
|
"if" precond markend recolormark
|
||
|
"elseif" precond markend recolormark
|
||
|
"else" precond markend recolormark
|
||
|
"endif" precond markend recolormark
|
||
|
done
|
||
|
"a-z" preident
|
||
|
|
||
|
:precond Precond
|
||
|
* idle noeat
|
||
|
|
||
|
# Comments
|
||
|
|
||
|
:slash Comment comment
|
||
|
* idle noeat recolor=-2
|
||
|
"/" line_comment
|
||
|
"*" idle call=.block_comment()
|
||
|
|
||
|
:line_comment Comment comment
|
||
|
* line_comment
|
||
|
"\n" idle
|
||
|
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
|
||
|
|
||
|
# Numbers
|
||
|
|
||
|
:bad_number Bad
|
||
|
* idle noeat
|
||
|
"0-9" bad_number
|
||
|
|
||
|
:zero Constant
|
||
|
* idle noeat
|
||
|
"b" binary
|
||
|
"o" octal
|
||
|
"x" hex
|
||
|
"." maybe_float
|
||
|
"eE" epart
|
||
|
"0-9_" decimal recolor=-1
|
||
|
|
||
|
:decimal_point Constant
|
||
|
* idle noeat recolor=-2
|
||
|
"." decimal_point_1 recolor=-2
|
||
|
"\i" not_ident recolor=-2
|
||
|
"0-9_" float
|
||
|
|
||
|
:not_ident Idle
|
||
|
* idle noeat
|
||
|
"\c" not_ident
|
||
|
|
||
|
:decimal_point_1 Idle
|
||
|
* idle noeat
|
||
|
"." idle
|
||
|
|
||
|
:octal Constant
|
||
|
* idle noeat
|
||
|
"0-7_" octal
|
||
|
"89" bad_number recolor=-1
|
||
|
|
||
|
:binary Constant
|
||
|
* idle noeat
|
||
|
"01_" binary
|
||
|
"2-9" bad_number recolor=-1
|
||
|
|
||
|
:hex Constant
|
||
|
* idle noeat
|
||
|
"0-9A-Fa-f_" hex
|
||
|
"." hexfloat
|
||
|
"pP" ppart
|
||
|
|
||
|
:hexfloat Constant
|
||
|
* idle noeat
|
||
|
"0-9A-Fa-f_" hexfloat
|
||
|
"pP" ppart
|
||
|
|
||
|
:ppart Constant
|
||
|
* idle noeat
|
||
|
"0-9+\-" pnum
|
||
|
|
||
|
:pnum Constant
|
||
|
* idle noeat
|
||
|
"0-9_" pnum
|
||
|
|
||
|
:decimal Constant
|
||
|
* idle noeat
|
||
|
"0-9_" decimal
|
||
|
"eE" epart
|
||
|
"." maybe_float
|
||
|
|
||
|
:maybe_float Constant
|
||
|
* idle noeat recolor=-2
|
||
|
"." decimal_point_1 recolor=-2
|
||
|
"eE" epart
|
||
|
"0-9_" float
|
||
|
|
||
|
:float Constant
|
||
|
* idle noeat
|
||
|
"eE" epart
|
||
|
"0-9_" float
|
||
|
|
||
|
:epart Constant
|
||
|
* idle noeat
|
||
|
"0-9+\-" enum
|
||
|
|
||
|
:enum Constant
|
||
|
* idle noeat
|
||
|
"0-9_" enum
|
||
|
|
||
|
# Strings
|
||
|
|
||
|
:string String string
|
||
|
* string
|
||
|
"\"" idle
|
||
|
"\\" string_escape recolor=-1
|
||
|
|
||
|
:string_escape StringEscape string
|
||
|
* string
|
||
|
"(" string call=.swift(paren) recolor=-2
|
||
|
"u" string_maybe_uni
|
||
|
|
||
|
:string_maybe_uni StringEscape string
|
||
|
* string
|
||
|
"{" string_uni
|
||
|
|
||
|
:string_uni StringEscape string
|
||
|
* string_uni
|
||
|
"}" string
|
||
|
|
||
|
# Identifiers
|
||
|
|
||
|
:ident Idle
|
||
|
* idle noeat strings
|
||
|
"class" storage
|
||
|
"deinit" kw
|
||
|
"enum" storage
|
||
|
"extension" storage
|
||
|
"func" storage
|
||
|
"import" stmt
|
||
|
"init" kw
|
||
|
"inout" storage
|
||
|
"internal" modifier
|
||
|
"let" kw
|
||
|
"operator" kw
|
||
|
"private" modifier
|
||
|
"protocol" storage
|
||
|
"public" modifier
|
||
|
"static" modifier
|
||
|
"struct" storage
|
||
|
"subscript" kw
|
||
|
"typealias" storage
|
||
|
"var" kw
|
||
|
"break" stmt
|
||
|
"case" label
|
||
|
"continue" loop
|
||
|
"default" label
|
||
|
"defer" stmt
|
||
|
"do" stmt
|
||
|
"else" cond
|
||
|
"fallthrough" stmt
|
||
|
"for" loop
|
||
|
"guard" kw
|
||
|
"if" cond
|
||
|
"in" kw
|
||
|
"repeat" loop
|
||
|
"return" stmt
|
||
|
"switch" cond
|
||
|
"where" kw
|
||
|
"while" loop
|
||
|
"as" kw
|
||
|
"catch" stmt
|
||
|
"dynamicType" kw
|
||
|
"false" bool
|
||
|
"is" kw
|
||
|
"nil" lit
|
||
|
"rethrows" modifier
|
||
|
"super" kw
|
||
|
"self" kw
|
||
|
"Self" type
|
||
|
"throw" stmt
|
||
|
"throws" modifier
|
||
|
"true" bool
|
||
|
"try" kw
|
||
|
"__COLUMN__" kw
|
||
|
"__FILE__" kw
|
||
|
"__FUNCTION__" kw
|
||
|
"__LINE__" kw
|
||
|
"_" kw
|
||
|
"associativity" kw
|
||
|
"convenience" kw
|
||
|
"dynamic" kw
|
||
|
"didSet" kw
|
||
|
"final" storage
|
||
|
"get" kw
|
||
|
"infix" kw
|
||
|
"indirect" kw
|
||
|
"lazy" storage
|
||
|
"left" kw
|
||
|
"mutating" storage
|
||
|
"none" kw
|
||
|
"nonmutating" storage
|
||
|
"open" storage
|
||
|
"optional" kw
|
||
|
"override" storage
|
||
|
"postfix" kw
|
||
|
"precedence" kw
|
||
|
"prefix" kw
|
||
|
"Protocol" builtin
|
||
|
"required" kw
|
||
|
"right" kw
|
||
|
"set" kw
|
||
|
"Type" builtin
|
||
|
"unowned" kw
|
||
|
"weak" kw
|
||
|
"willSet" kw
|
||
|
|
||
|
"String" type
|
||
|
"Int" type
|
||
|
"Int8" type
|
||
|
"Int16" type
|
||
|
"Int32" type
|
||
|
"Int64" type
|
||
|
"UInt" type
|
||
|
"UInt8" type
|
||
|
"UInt16" type
|
||
|
"UInt32" type
|
||
|
"UInt64" type
|
||
|
"Float" type
|
||
|
"Double" type
|
||
|
"Bool" type
|
||
|
"Character" type
|
||
|
"Optional" type
|
||
|
done
|
||
|
"$\c" ident
|
||
|
|
||
|
:kw Keyword
|
||
|
* idle noeat
|
||
|
|
||
|
:bool Boolean
|
||
|
* idle noeat
|
||
|
|
||
|
:lit Constant
|
||
|
* idle noeat
|
||
|
|
||
|
:oper Operator
|
||
|
* idle noeat
|
||
|
|
||
|
:storage StorageClass
|
||
|
* idle noeat
|
||
|
|
||
|
:modifier Modifier
|
||
|
* idle noeat
|
||
|
|
||
|
:label Label
|
||
|
* idle noeat
|
||
|
|
||
|
:loop Loop
|
||
|
* idle noeat
|
||
|
|
||
|
:cond Conditional
|
||
|
* idle noeat
|
||
|
|
||
|
:stmt Statement
|
||
|
* idle noeat
|
||
|
|
||
|
:builtin Builtin
|
||
|
* idle noeat
|
||
|
|
||
|
:type Type
|
||
|
* idle noeat
|
||
|
|
||
|
.end
|
||
|
|
||
|
# Recursive block comments
|
||
|
|
||
|
.subr block_comment
|
||
|
|
||
|
:idle Comment comment
|
||
|
* idle
|
||
|
"*" maybe_done
|
||
|
"/" maybe_recur
|
||
|
"BFHNTX" idle noeat call=comment_todo.comment_todo()
|
||
|
|
||
|
:maybe_done Comment comment
|
||
|
* idle noeat
|
||
|
"/" idle return
|
||
|
|
||
|
:maybe_recur Comment comment
|
||
|
* idle noeat
|
||
|
"*" idle call=.block_comment()
|
||
|
|
||
|
.end
|