3 " Maintainer: Kamil Toman <kamil.toman@gmail.com>
4 " Last Change: 2010 May 27
5 " Based on Java syntax file by Claudio Fleiner <claudio@fleiner.com>
7 " Quit when a syntax file was already loaded
8 if exists("b:current_syntax")
13 syn keyword fanExternal using native
14 syn keyword fanError goto void serializable volatile
15 syn keyword fanConditional if else switch
16 syn keyword fanRepeat do while for foreach each
17 syn keyword fanBoolean true false
18 syn keyword fanConstant null
19 syn keyword fanTypedef this super
20 syn keyword fanOperator new is isnot as
21 syn keyword fanLongOperator plus minus mult div mod get set slice lshift rshift and or xor inverse negate increment decrement equals compare
22 syn keyword fanType Void Bool Int Float Decimal Str Duration Uri Type Range List Map Obj
23 syn keyword fanStatement return
24 syn keyword fanStorageClass static const final
25 syn keyword fanSlot virtual override once
26 syn keyword fanField readonly
27 syn keyword fanExceptions throw try catch finally
28 syn keyword fanAssert assert
29 syn keyword fanTypedef class enum mixin
30 syn match fanFacet "@[_a-zA-Z][_a-zA-Z0-9_]*\>"
31 syn keyword fanBranch break continue
32 syn keyword fanScopeDecl public internal protected private abstract
34 if exists("fan_space_errors")
35 if !exists("fan_no_trail_space_error")
36 syn match fanSpaceError "\s\+$"
38 if !exists("fan_no_tab_space_error")
39 syn match fanSpaceError " \+\t"me=e-1
43 syn region fanLabelRegion transparent matchgroup=fanLabel start="\<case\>" matchgroup=NONE end=":" contains=fanNumber,fanCharacter
44 syn keyword fanLabel default
45 syn keyword fanLabel case
47 " The following cluster contains all fan groups except the contained ones
48 syn cluster fanTop add=fanExternal,fanError,fanConditional,fanRepeat,fanBoolean,fanConstant,fanTypedef,fanOperator,fanLongOperator,fanType,fanType,fanStatement,fanStorageClass,fanSlot,fanField,fanExceptions,fanAssert,fanClassDecl,fanTypedef,fanFacet,fanBranch,fanScopeDecl,fanLabelRegion,fanLabel
51 syn keyword fanTodo contained TODO FIXME XXX
52 syn region fanComment start="/\*" end="\*/" contains=@fanCommentSpecial,fanTodo,fanComment,@Spell
53 syn match fanCommentStar contained "^\s*\*[^/]"me=e-1
54 syn match fanCommentStar contained "^\s*\*$"
55 syn match fanLineComment "//.*" contains=@fanCommentSpecial2,fanTodo,@Spell
56 syn match fanDocComment "\*\*.*" contains=@fanCommentSpecial2,fanTodo,@Spell
57 hi def link fanCommentString fanString
58 hi def link fanComment2String fanString
59 hi def link fanCommentCharacter fanCharacter
61 syn cluster fanTop add=fanComment,fanLineComment,fanDocComment
63 " match the special comment /**/
64 syn match fanComment "/\*\*/"
66 " Strings and constants
67 syn match fanSpecialError contained "\\."
68 syn match fanSpecialCharError contained "[^']"
69 syn match fanSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\|\$\)"
70 syn match fanStringSubst contained "\$[A-Za-z][A-Za-z_.]*"
71 syn match fanStringSubst contained "\${[^}]*}"
72 syn region fanString start=+"+ end=+"+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell
73 syn region fanTripleString start=+"""+ end=+"""+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell
74 syn region fanDSL start=+<|+ end=+|>+
75 syn match fanUri "`[^`]*`"
76 syn match fanCharacter "'[^']*'" contains=fanSpecialChar,fanSpecialCharError
77 syn match fanCharacter "'\\''" contains=fanSpecialChar
78 syn match fanCharacter "'[^\\]'"
79 syn match fanNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
80 syn match fanNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
81 syn match fanNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
82 syn match fanNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
84 syn cluster fanTop add=fanString,fanCharacter,fanNumber,fanSpecial,fanStringError
86 " The default highlighting.
87 hi def link fanBranch Conditional
88 hi def link fanLabel Label
89 hi def link fanUserLabel Label
90 hi def link fanConditional Conditional
91 hi def link fanRepeat Repeat
92 hi def link fanExceptions Exception
93 hi def link fanAssert Statement
94 hi def link fanStorageClass StorageClass
95 hi def link fanSlot StorageClass
96 hi def link fanField StorageClass
97 hi def link fanScopeDecl StorageClass
98 hi def link fanBoolean Boolean
99 hi def link fanSpecial Special
100 hi def link fanSpecialError Error
101 hi def link fanSpecialCharError Error
102 hi def link fanTripleString String
103 hi def link fanString String
104 hi def link fanDSL String
105 hi def link fanCharacter String
106 hi def link fanStringSubst Identifier
107 hi def link fanUri SpecialChar
108 hi def link fanSpecialChar SpecialChar
109 hi def link fanNumber Number
110 hi def link fanError Error
111 hi def link fanStringError Error
112 hi def link fanStatement Statement
113 hi def link fanOperator Operator
114 hi def link fanLongOperator Operator
115 hi def link fanComment Comment
116 hi def link fanDocComment Comment
117 hi def link fanLineComment Comment
118 hi def link fanConstant Constant
119 hi def link fanTypedef Typedef
120 hi def link fanTodo Todo
121 hi def link fanFacet PreProc
123 hi def link fanCommentTitle SpecialComment
124 hi def link fanCommentStar SpecialComment
125 hi def link fanType Identifier
126 hi def link fanExternal Include
128 hi def link fanSpaceError Error
130 let b:current_syntax = "fan"