blob: ca00cd95e8b1e2606dfec6bcb1f1ca0d5145fff9 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: CHILL
3" Maintainer: YoungSang Yoon <image@lgic.co.kr>
4" Last change: 2004 Jan 21
5"
6
7" first created by image@lgic.co.kr & modified by paris@lgic.co.kr
8
9" CHILL (CCITT High Level Programming Language) is used for
10" developing software of ATM switch at LGIC (LG Information
11" & Communications LTd.)
12
13
14" For version 5.x: Clear all syntax items
15" For version 6.x: Quit when a syntax file was already loaded
16if version < 600
17 syntax clear
18elseif exists("b:current_syntax")
19 finish
20endif
21
22" A bunch of useful CHILL keywords
23syn keyword chillStatement goto GOTO return RETURN returns RETURNS
24syn keyword chillLabel CASE case ESAC esac
25syn keyword chillConditional if IF else ELSE elsif ELSIF switch SWITCH THEN then FI fi
26syn keyword chillLogical NOT not
27syn keyword chillRepeat while WHILE for FOR do DO od OD TO to
28syn keyword chillProcess START start STACKSIZE stacksize PRIORITY priority THIS this STOP stop
29syn keyword chillBlock PROC proc PROCESS process
30syn keyword chillSignal RECEIVE receive SEND send NONPERSISTENT nonpersistent PERSISTENT peristent SET set EVER ever
31
32syn keyword chillTodo contained TODO FIXME XXX
33
34" String and Character constants
35" Highlight special characters (those which have a backslash) differently
36syn match chillSpecial contained "\\x\x\+\|\\\o\{1,3\}\|\\.\|\\$"
37syn region chillString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=chillSpecial
38syn match chillCharacter "'[^\\]'"
39syn match chillSpecialCharacter "'\\.'"
40syn match chillSpecialCharacter "'\\\o\{1,3\}'"
41
42"when wanted, highlight trailing white space
43if exists("chill_space_errors")
44 syn match chillSpaceError "\s*$"
45 syn match chillSpaceError " \+\t"me=e-1
46endif
47
48"catch errors caused by wrong parenthesis
49syn cluster chillParenGroup contains=chillParenError,chillIncluded,chillSpecial,chillTodo,chillUserCont,chillUserLabel,chillBitField
50syn region chillParen transparent start='(' end=')' contains=ALLBUT,@chillParenGroup
51syn match chillParenError ")"
52syn match chillInParen contained "[{}]"
53
54"integer number, or floating point number without a dot and with "f".
55syn case ignore
56syn match chillNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
57"floating point number, with dot, optional exponent
58syn match chillFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
59"floating point number, starting with a dot, optional exponent
60syn match chillFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
61"floating point number, without dot, with exponent
62syn match chillFloat "\<\d\+e[-+]\=\d\+[fl]\=\>"
63"hex number
64syn match chillNumber "\<0x\x\+\(u\=l\=\|lu\)\>"
65"syn match chillIdentifier "\<[a-z_][a-z0-9_]*\>"
66syn case match
67" flag an octal number with wrong digits
68syn match chillOctalError "\<0\o*[89]"
69
70if exists("chill_comment_strings")
71 " A comment can contain chillString, chillCharacter and chillNumber.
72 " But a "*/" inside a chillString in a chillComment DOES end the comment! So we
73 " need to use a special type of chillString: chillCommentString, which also ends on
74 " "*/", and sees a "*" at the start of the line as comment again.
75 " Unfortunately this doesn't very well work for // type of comments :-(
76 syntax match chillCommentSkip contained "^\s*\*\($\|\s\+\)"
77 syntax region chillCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=chillSpecial,chillCommentSkip
78 syntax region chillComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=chillSpecial
79 syntax region chillComment start="/\*" end="\*/" contains=chillTodo,chillCommentString,chillCharacter,chillNumber,chillFloat,chillSpaceError
80 syntax match chillComment "//.*" contains=chillTodo,chillComment2String,chillCharacter,chillNumber,chillSpaceError
81else
82 syn region chillComment start="/\*" end="\*/" contains=chillTodo,chillSpaceError
83 syn match chillComment "//.*" contains=chillTodo,chillSpaceError
84endif
85syntax match chillCommentError "\*/"
86
87syn keyword chillOperator SIZE size
88syn keyword chillType dcl DCL int INT char CHAR bool BOOL REF ref LOC loc INSTANCE instance
89syn keyword chillStructure struct STRUCT enum ENUM newmode NEWMODE synmode SYNMODE
90"syn keyword chillStorageClass
91syn keyword chillBlock PROC proc END end
92syn keyword chillScope GRANT grant SEIZE seize
93syn keyword chillEDML select SELECT delete DELETE update UPDATE in IN seq SEQ WHERE where INSERT insert include INCLUDE exclude EXCLUDE
94syn keyword chillBoolConst true TRUE false FALSE
95
96syn region chillPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=chillComment,chillString,chillCharacter,chillNumber,chillCommentError,chillSpaceError
97syn region chillIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
98syn match chillIncluded contained "<[^>]*>"
99syn match chillInclude "^\s*#\s*include\>\s*["<]" contains=chillIncluded
100"syn match chillLineSkip "\\$"
101syn cluster chillPreProcGroup contains=chillPreCondit,chillIncluded,chillInclude,chillDefine,chillInParen,chillUserLabel
102syn region chillDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,@chillPreProcGroup
103syn region chillPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,@chillPreProcGroup
104
105" Highlight User Labels
106syn cluster chillMultiGroup contains=chillIncluded,chillSpecial,chillTodo,chillUserCont,chillUserLabel,chillBitField
107syn region chillMulti transparent start='?' end=':' contains=ALLBUT,@chillMultiGroup
108" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
109syn match chillUserCont "^\s*\I\i*\s*:$" contains=chillUserLabel
110syn match chillUserCont ";\s*\I\i*\s*:$" contains=chillUserLabel
111syn match chillUserCont "^\s*\I\i*\s*:[^:]"me=e-1 contains=chillUserLabel
112syn match chillUserCont ";\s*\I\i*\s*:[^:]"me=e-1 contains=chillUserLabel
113
114syn match chillUserLabel "\I\i*" contained
115
116" Avoid recognizing most bitfields as labels
117syn match chillBitField "^\s*\I\i*\s*:\s*[1-9]"me=e-1
118syn match chillBitField ";\s*\I\i*\s*:\s*[1-9]"me=e-1
119
120syn match chillBracket contained "[<>]"
121if !exists("chill_minlines")
122 let chill_minlines = 15
123endif
124exec "syn sync ccomment chillComment minlines=" . chill_minlines
125
126" Define the default highlighting.
127" For version 5.7 and earlier: only when not done already
128" For version 5.8 and later: only when an item doesn't have highlighting yet
129if version >= 508 || !exists("did_ch_syntax_inits")
130 if version < 508
131 let did_ch_syntax_inits = 1
132 command -nargs=+ HiLink hi link <args>
133 else
134 command -nargs=+ HiLink hi def link <args>
135 endif
136
137 HiLink chillLabel Label
138 HiLink chillUserLabel Label
139 HiLink chillConditional Conditional
140 " hi chillConditional term=bold ctermfg=red guifg=red gui=bold
141
142 HiLink chillRepeat Repeat
143 HiLink chillProcess Repeat
144 HiLink chillSignal Repeat
145 HiLink chillCharacter Character
146 HiLink chillSpecialCharacter chillSpecial
147 HiLink chillNumber Number
148 HiLink chillFloat Float
149 HiLink chillOctalError chillError
150 HiLink chillParenError chillError
151 HiLink chillInParen chillError
152 HiLink chillCommentError chillError
153 HiLink chillSpaceError chillError
154 HiLink chillOperator Operator
155 HiLink chillStructure Structure
156 HiLink chillBlock Operator
157 HiLink chillScope Operator
158 "hi chillEDML term=underline ctermfg=DarkRed guifg=Red
159 HiLink chillEDML PreProc
160 "hi chillBoolConst term=bold ctermfg=brown guifg=brown
161 HiLink chillBoolConst Constant
162 "hi chillLogical term=bold ctermfg=brown guifg=brown
163 HiLink chillLogical Constant
164 HiLink chillStorageClass StorageClass
165 HiLink chillInclude Include
166 HiLink chillPreProc PreProc
167 HiLink chillDefine Macro
168 HiLink chillIncluded chillString
169 HiLink chillError Error
170 HiLink chillStatement Statement
171 HiLink chillPreCondit PreCondit
172 HiLink chillType Type
173 HiLink chillCommentError chillError
174 HiLink chillCommentString chillString
175 HiLink chillComment2String chillString
176 HiLink chillCommentSkip chillComment
177 HiLink chillString String
178 HiLink chillComment Comment
179 " hi chillComment term=None ctermfg=lightblue guifg=lightblue
180 HiLink chillSpecial SpecialChar
181 HiLink chillTodo Todo
182 HiLink chillBlock Statement
183 "HiLink chillIdentifier Identifier
184 HiLink chillBracket Delimiter
185
186 delcommand HiLink
187endif
188
189let b:current_syntax = "chill"
190
191" vim: ts=8