blob: 3a57ece91394fead793479d262f3dbdf34e7af0b [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
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02006" quit when a syntax file was already loaded
7if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +00008 finish
9endif
10
11" The Slice keywords
12
13syn keyword sliceType bool byte double float int long short string void
14syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws
Bram Moolenaar9372a112005-12-06 19:59:18 +000015syn keyword sliceConstruct class enum exception dictionary interface module LocalObject Object sequence struct
Bram Moolenaar071d4272004-06-13 20:20:40 +000016syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws
17syn keyword sliceBoolean false true
18
19" Include directives
Bram Moolenaarac7bd632013-03-19 11:35:58 +010020syn region sliceIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
Bram Moolenaar071d4272004-06-13 20:20:40 +000021syn match sliceIncluded display contained "<[^>]*>"
22syn match sliceInclude display "^\s*#\s*include\>\s*["<]" contains=sliceIncluded
23
24" Double-include guards
25syn region sliceGuard start="^#\(define\|ifndef\|endif\)" end="$"
26
27" Strings and characters
28syn region sliceString start=+"+ end=+"+
29
30" Numbers (shamelessly ripped from c.vim, only slightly modified)
31"integer number, or floating point number without a dot and with "f".
32syn case ignore
33syn match sliceNumbers display transparent "\<\d\|\.\d" contains=sliceNumber,sliceFloat,sliceOctal
34syn match sliceNumber display contained "\d\+"
35"hex number
36syn match sliceNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
37" Flag the first zero of an octal number as something special
38syn match sliceOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=sliceOctalZero
39syn match sliceOctalZero display contained "\<0"
40syn match sliceFloat display contained "\d\+f"
41"floating point number, with dot, optional exponent
42syn match sliceFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
43"floating point number, starting with a dot, optional exponent
44syn match sliceFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
45"floating point number, without dot, with exponent
46syn match sliceFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
47" flag an octal number with wrong digits
48syn case match
49
50
51" Comments
52syn region sliceComment start="/\*" end="\*/"
53syn match sliceComment "//.*"
54
55syn sync ccomment sliceComment
56
57" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020058" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +000059
Bram Moolenaarf37506f2016-08-31 22:22:10 +020060hi def link sliceComment Comment
61hi def link sliceConstruct Keyword
62hi def link sliceType Type
63hi def link sliceString String
64hi def link sliceIncluded String
65hi def link sliceQualifier Keyword
66hi def link sliceInclude Include
67hi def link sliceGuard PreProc
68hi def link sliceBoolean Boolean
69hi def link sliceFloat Number
70hi def link sliceNumber Number
71hi def link sliceOctal Number
72hi def link sliceOctalZero Special
73hi def link sliceNumberError Special
Bram Moolenaar071d4272004-06-13 20:20:40 +000074
Bram Moolenaar071d4272004-06-13 20:20:40 +000075
76let b:current_syntax = "slice"
77
78" vim: ts=8