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