summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/chill.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/chill.vim')
-rw-r--r--runtime/syntax/chill.vim178
1 files changed, 178 insertions, 0 deletions
diff --git a/runtime/syntax/chill.vim b/runtime/syntax/chill.vim
new file mode 100644
index 0000000..f3c66c2
--- /dev/null
+++ b/runtime/syntax/chill.vim
@@ -0,0 +1,178 @@
+" 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