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