xref: /vim-8.2.3635/runtime/syntax/chill.vim (revision 89bcfda6)
1" Vim syntax file
2" Language:	CHILL
3" Maintainer:	YoungSang Yoon <[email protected]>
4" Last change:	2004 Jan 21
5"
6
7" first created by [email protected] & modified by [email protected]
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" quit when a syntax file was already loaded
15if exists("b:current_syntax")
16  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
27syn keyword	chillSignal	RECEIVE receive SEND send NONPERSISTENT nonpersistent PERSISTENT peristent SET set EVER ever
28
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.
124" Only when an item doesn't have highlighting yet
125command -nargs=+ HiLink hi def link <args>
126
127HiLink chillLabel	Label
128HiLink chillUserLabel	Label
129HiLink chillConditional	Conditional
130" hi chillConditional	term=bold ctermfg=red guifg=red gui=bold
131
132HiLink chillRepeat	Repeat
133HiLink chillProcess	Repeat
134HiLink chillSignal	Repeat
135HiLink chillCharacter	Character
136HiLink chillSpecialCharacter chillSpecial
137HiLink chillNumber	Number
138HiLink chillFloat	Float
139HiLink chillOctalError	chillError
140HiLink chillParenError	chillError
141HiLink chillInParen	chillError
142HiLink chillCommentError	chillError
143HiLink chillSpaceError	chillError
144HiLink chillOperator	Operator
145HiLink chillStructure	Structure
146HiLink chillBlock	Operator
147HiLink chillScope	Operator
148"hi chillEDML     term=underline ctermfg=DarkRed guifg=Red
149HiLink chillEDML	PreProc
150"hi chillBoolConst	term=bold ctermfg=brown guifg=brown
151HiLink chillBoolConst	Constant
152"hi chillLogical	term=bold ctermfg=brown guifg=brown
153HiLink chillLogical	Constant
154HiLink chillStorageClass	StorageClass
155HiLink chillInclude	Include
156HiLink chillPreProc	PreProc
157HiLink chillDefine	Macro
158HiLink chillIncluded	chillString
159HiLink chillError	Error
160HiLink chillStatement	Statement
161HiLink chillPreCondit	PreCondit
162HiLink chillType	Type
163HiLink chillCommentError	chillError
164HiLink chillCommentString chillString
165HiLink chillComment2String chillString
166HiLink chillCommentSkip	chillComment
167HiLink chillString	String
168HiLink chillComment	Comment
169" hi chillComment	term=None ctermfg=lightblue guifg=lightblue
170HiLink chillSpecial	SpecialChar
171HiLink chillTodo	Todo
172HiLink chillBlock	Statement
173"HiLink chillIdentifier	Identifier
174HiLink chillBracket	Delimiter
175
176delcommand HiLink
177
178let b:current_syntax = "chill"
179
180" vim: ts=8
181