Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 192 lines (168 sloc) 8.277 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
" 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.)


" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
  syntax clear
elseif 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.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_ch_syntax_inits")
  if version < 508
    let did_ch_syntax_inits = 1
    command -nargs=+ HiLink hi link <args>
  else
    command -nargs=+ HiLink hi def link <args>
  endif

  HiLink chillLabel Label
  HiLink chillUserLabel Label
  HiLink chillConditional Conditional
" hi chillConditional term=bold ctermfg=red guifg=red gui=bold

  HiLink chillRepeat Repeat
  HiLink chillProcess Repeat
  HiLink chillSignal Repeat
  HiLink chillCharacter Character
  HiLink chillSpecialCharacter chillSpecial
  HiLink chillNumber Number
  HiLink chillFloat Float
  HiLink chillOctalError chillError
  HiLink chillParenError chillError
  HiLink chillInParen chillError
  HiLink chillCommentError chillError
  HiLink chillSpaceError chillError
  HiLink chillOperator Operator
  HiLink chillStructure Structure
  HiLink chillBlock Operator
  HiLink chillScope Operator
"hi chillEDML term=underline ctermfg=DarkRed guifg=Red
  HiLink chillEDML PreProc
"hi chillBoolConst term=bold ctermfg=brown guifg=brown
  HiLink chillBoolConst Constant
"hi chillLogical term=bold ctermfg=brown guifg=brown
  HiLink chillLogical Constant
  HiLink chillStorageClass StorageClass
  HiLink chillInclude Include
  HiLink chillPreProc PreProc
  HiLink chillDefine Macro
  HiLink chillIncluded chillString
  HiLink chillError Error
  HiLink chillStatement Statement
  HiLink chillPreCondit PreCondit
  HiLink chillType Type
  HiLink chillCommentError chillError
  HiLink chillCommentString chillString
  HiLink chillComment2String chillString
  HiLink chillCommentSkip chillComment
  HiLink chillString String
  HiLink chillComment Comment
" hi chillComment term=None ctermfg=lightblue guifg=lightblue
  HiLink chillSpecial SpecialChar
  HiLink chillTodo Todo
  HiLink chillBlock Statement
"HiLink chillIdentifier Identifier
  HiLink chillBracket Delimiter

  delcommand HiLink
endif

let b:current_syntax = "chill"

" vim: ts=8
Something went wrong with that request. Please try again.