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