blob: 4e2f9a8604018c50fcfc3f7d8ea392a07012e212 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Slice (ZeroC's Specification Language for Ice)
Bram Moolenaar9372a112005-12-06 19:59:18 +00003" Maintainer: Morel Bodin <slice06@nym.hush.com>
4" Last Change: 2005 Dec 03
Bram Moolenaar071d4272004-06-13 20:20:40 +00005
6" For version 5.x: Clear all syntax items
7" For version 6.x: Quit when a syntax file was already loaded
8if version < 600
9 syntax clear
10elseif exists("b:current_syntax")
11 finish
12endif
13
14" The Slice keywords
15
16syn keyword sliceType bool byte double float int long short string void
17syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws
Bram Moolenaar9372a112005-12-06 19:59:18 +000018syn keyword sliceConstruct class enum exception dictionary interface module LocalObject Object sequence struct
Bram Moolenaar071d4272004-06-13 20:20:40 +000019syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws
20syn keyword sliceBoolean false true
21
22" Include directives
Bram Moolenaarac7bd632013-03-19 11:35:58 +010023syn region sliceIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
Bram Moolenaar071d4272004-06-13 20:20:40 +000024syn match sliceIncluded display contained "<[^>]*>"
25syn match sliceInclude display "^\s*#\s*include\>\s*["<]" contains=sliceIncluded
26
27" Double-include guards
28syn region sliceGuard start="^#\(define\|ifndef\|endif\)" end="$"
29
30" Strings and characters
31syn region sliceString start=+"+ end=+"+
32
33" Numbers (shamelessly ripped from c.vim, only slightly modified)
34"integer number, or floating point number without a dot and with "f".
35syn case ignore
36syn match sliceNumbers display transparent "\<\d\|\.\d" contains=sliceNumber,sliceFloat,sliceOctal
37syn match sliceNumber display contained "\d\+"
38"hex number
39syn match sliceNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
40" Flag the first zero of an octal number as something special
41syn match sliceOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=sliceOctalZero
42syn match sliceOctalZero display contained "\<0"
43syn match sliceFloat display contained "\d\+f"
44"floating point number, with dot, optional exponent
45syn match sliceFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
46"floating point number, starting with a dot, optional exponent
47syn match sliceFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
48"floating point number, without dot, with exponent
49syn match sliceFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
50" flag an octal number with wrong digits
51syn case match
52
53
54" Comments
55syn region sliceComment start="/\*" end="\*/"
56syn match sliceComment "//.*"
57
58syn sync ccomment sliceComment
59
60" Define the default highlighting.
61" For version 5.7 and earlier: only when not done already
62" For version 5.8 and later: only when an item doesn't have highlighting yet
63if version >= 508 || !exists("did_slice_syn_inits")
64 if version < 508
65 let did_slice_syn_inits = 1
66 command -nargs=+ HiLink hi link <args>
67 else
68 command -nargs=+ HiLink hi def link <args>
69 endif
70
71 HiLink sliceComment Comment
72 HiLink sliceConstruct Keyword
73 HiLink sliceType Type
74 HiLink sliceString String
75 HiLink sliceIncluded String
76 HiLink sliceQualifier Keyword
77 HiLink sliceInclude Include
78 HiLink sliceGuard PreProc
79 HiLink sliceBoolean Boolean
80 HiLink sliceFloat Number
81 HiLink sliceNumber Number
82 HiLink sliceOctal Number
83 HiLink sliceOctalZero Special
84 HiLink sliceNumberError Special
85
86 delcommand HiLink
87endif
88
89let b:current_syntax = "slice"
90
91" vim: ts=8