diff options
Diffstat (limited to 'syntax/chill.vim')
| -rw-r--r-- | syntax/chill.vim | 182 | 
1 files changed, 182 insertions, 0 deletions
diff --git a/syntax/chill.vim b/syntax/chill.vim new file mode 100644 index 00000000..b9970e9d --- /dev/null +++ b/syntax/chill.vim @@ -0,0 +1,182 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim syntax file +" Language:	CHILL +" Maintainer:	YoungSang Yoon <image@lgic.co.kr> +" Last change:	2004 Jan 21 +" + +" first created by image@lgic.co.kr & modified by paris@lgic.co.kr + +" CHILL (CCITT High Level Programming Language) is used for +" developing software of ATM switch at LGIC (LG Information +" & Communications LTd.) + + +" quit when a syntax file was already loaded +if exists("b:current_syntax") +  finish +endif + +" A bunch of useful CHILL keywords +syn keyword	chillStatement	goto GOTO return RETURN returns RETURNS +syn keyword	chillLabel		CASE case ESAC esac +syn keyword	chillConditional	if IF else ELSE elsif ELSIF switch SWITCH THEN then FI fi +syn keyword	chillLogical	NOT not +syn keyword	chillRepeat	while WHILE for FOR do DO od OD TO to +syn keyword	chillProcess	START start STACKSIZE stacksize PRIORITY priority THIS this STOP stop +syn keyword	chillBlock		PROC proc PROCESS process +syn keyword	chillSignal	RECEIVE receive SEND send NONPERSISTENT nonpersistent PERSISTENT peristent SET set EVER ever + +syn keyword	chillTodo		contained TODO FIXME XXX + +" String and Character constants +" Highlight special characters (those which have a backslash) differently +syn match	chillSpecial	contained "\\x\x\+\|\\\o\{1,3\}\|\\.\|\\$" +syn region	chillString	start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=chillSpecial +syn match	chillCharacter	"'[^\\]'" +syn match	chillSpecialCharacter "'\\.'" +syn match	chillSpecialCharacter "'\\\o\{1,3\}'" + +"when wanted, highlight trailing white space +if exists("chill_space_errors") +  syn match	chillSpaceError	"\s*$" +  syn match	chillSpaceError	" \+\t"me=e-1 +endif + +"catch errors caused by wrong parenthesis +syn cluster	chillParenGroup	contains=chillParenError,chillIncluded,chillSpecial,chillTodo,chillUserCont,chillUserLabel,chillBitField +syn region	chillParen		transparent start='(' end=')' contains=ALLBUT,@chillParenGroup +syn match	chillParenError	")" +syn match	chillInParen	contained "[{}]" + +"integer number, or floating point number without a dot and with "f". +syn case ignore +syn match	chillNumber		"\<\d\+\(u\=l\=\|lu\|f\)\>" +"floating point number, with dot, optional exponent +syn match	chillFloat		"\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" +"floating point number, starting with a dot, optional exponent +syn match	chillFloat		"\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" +"floating point number, without dot, with exponent +syn match	chillFloat		"\<\d\+e[-+]\=\d\+[fl]\=\>" +"hex number +syn match	chillNumber		"\<0x\x\+\(u\=l\=\|lu\)\>" +"syn match chillIdentifier	"\<[a-z_][a-z0-9_]*\>" +syn case match +" flag an octal number with wrong digits +syn match	chillOctalError	"\<0\o*[89]" + +if exists("chill_comment_strings") +  " A comment can contain chillString, chillCharacter and chillNumber. +  " But a "*/" inside a chillString in a chillComment DOES end the comment!  So we +  " need to use a special type of chillString: chillCommentString, which also ends on +  " "*/", and sees a "*" at the start of the line as comment again. +  " Unfortunately this doesn't very well work for // type of comments :-( +  syntax match	chillCommentSkip	contained "^\s*\*\($\|\s\+\)" +  syntax region chillCommentString	contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=chillSpecial,chillCommentSkip +  syntax region chillComment2String	contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=chillSpecial +  syntax region chillComment	start="/\*" end="\*/" contains=chillTodo,chillCommentString,chillCharacter,chillNumber,chillFloat,chillSpaceError +  syntax match  chillComment	"//.*" contains=chillTodo,chillComment2String,chillCharacter,chillNumber,chillSpaceError +else +  syn region	chillComment	start="/\*" end="\*/" contains=chillTodo,chillSpaceError +  syn match	chillComment	"//.*" contains=chillTodo,chillSpaceError +endif +syntax match	chillCommentError	"\*/" + +syn keyword	chillOperator	SIZE size +syn keyword	chillType		dcl DCL int INT char CHAR bool BOOL REF ref LOC loc INSTANCE instance +syn keyword	chillStructure	struct STRUCT enum ENUM newmode NEWMODE synmode SYNMODE +"syn keyword	chillStorageClass +syn keyword	chillBlock		PROC proc END end +syn keyword	chillScope		GRANT grant SEIZE seize +syn keyword	chillEDML		select SELECT delete DELETE update UPDATE in IN seq SEQ WHERE where INSERT insert include INCLUDE exclude EXCLUDE +syn keyword	chillBoolConst	true TRUE false FALSE + +syn region	chillPreCondit	start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=chillComment,chillString,chillCharacter,chillNumber,chillCommentError,chillSpaceError +syn region	chillIncluded	contained start=+"+ skip=+\\\\\|\\"+ end=+"+ +syn match	chillIncluded	contained "<[^>]*>" +syn match	chillInclude	"^\s*#\s*include\>\s*["<]" contains=chillIncluded +"syn match chillLineSkip	"\\$" +syn cluster	chillPreProcGroup	contains=chillPreCondit,chillIncluded,chillInclude,chillDefine,chillInParen,chillUserLabel +syn region	chillDefine		start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,@chillPreProcGroup +syn region	chillPreProc	start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,@chillPreProcGroup + +" Highlight User Labels +syn cluster	chillMultiGroup	contains=chillIncluded,chillSpecial,chillTodo,chillUserCont,chillUserLabel,chillBitField +syn region	chillMulti		transparent start='?' end=':' contains=ALLBUT,@chillMultiGroup +" Avoid matching foo::bar() in C++ by requiring that the next char is not ':' +syn match	chillUserCont	"^\s*\I\i*\s*:$" contains=chillUserLabel +syn match	chillUserCont	";\s*\I\i*\s*:$" contains=chillUserLabel +syn match	chillUserCont	"^\s*\I\i*\s*:[^:]"me=e-1 contains=chillUserLabel +syn match	chillUserCont	";\s*\I\i*\s*:[^:]"me=e-1 contains=chillUserLabel + +syn match	chillUserLabel	"\I\i*" contained + +" Avoid recognizing most bitfields as labels +syn match	chillBitField	"^\s*\I\i*\s*:\s*[1-9]"me=e-1 +syn match	chillBitField	";\s*\I\i*\s*:\s*[1-9]"me=e-1 + +syn match	chillBracket	contained "[<>]" +if !exists("chill_minlines") +  let chill_minlines = 15 +endif +exec "syn sync ccomment chillComment minlines=" . chill_minlines + +" Define the default highlighting. +" Only when an item doesn't have highlighting yet + +hi def link chillLabel	Label +hi def link chillUserLabel	Label +hi def link chillConditional	Conditional +" hi def link chillConditional	term=bold ctermfg=red guifg=red gui=bold + +hi def link chillRepeat	Repeat +hi def link chillProcess	Repeat +hi def link chillSignal	Repeat +hi def link chillCharacter	Character +hi def link chillSpecialCharacter chillSpecial +hi def link chillNumber	Number +hi def link chillFloat	Float +hi def link chillOctalError	chillError +hi def link chillParenError	chillError +hi def link chillInParen	chillError +hi def link chillCommentError	chillError +hi def link chillSpaceError	chillError +hi def link chillOperator	Operator +hi def link chillStructure	Structure +hi def link chillBlock	Operator +hi def link chillScope	Operator +"hi def link chillEDML     term=underline ctermfg=DarkRed guifg=Red +hi def link chillEDML	PreProc +"hi def link chillBoolConst	term=bold ctermfg=brown guifg=brown +hi def link chillBoolConst	Constant +"hi def link chillLogical	term=bold ctermfg=brown guifg=brown +hi def link chillLogical	Constant +hi def link chillStorageClass	StorageClass +hi def link chillInclude	Include +hi def link chillPreProc	PreProc +hi def link chillDefine	Macro +hi def link chillIncluded	chillString +hi def link chillError	Error +hi def link chillStatement	Statement +hi def link chillPreCondit	PreCondit +hi def link chillType	Type +hi def link chillCommentError	chillError +hi def link chillCommentString chillString +hi def link chillComment2String chillString +hi def link chillCommentSkip	chillComment +hi def link chillString	String +hi def link chillComment	Comment +" hi def link chillComment	term=None ctermfg=lightblue guifg=lightblue +hi def link chillSpecial	SpecialChar +hi def link chillTodo	Todo +hi def link chillBlock	Statement +"hi def link chillIdentifier	Identifier +hi def link chillBracket	Delimiter + + +let b:current_syntax = "chill" + +" vim: ts=8 + +endif  | 
