Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 14 | " quit when a syntax file was already loaded |
| 15 | if exists("b:current_syntax") |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 |
Viktor Szépe | dbf749b | 2023-10-16 09:53:37 +0200 | [diff] [blame] | 27 | syn keyword chillSignal RECEIVE receive SEND send NONPERSISTENT nonpersistent PERSISTENT persistent SET set EVER ever |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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. |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 124 | " Only when an item doesn't have highlighting yet |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 125 | |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 130 | |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 174 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 175 | |
| 176 | let b:current_syntax = "chill" |
| 177 | |
| 178 | " vim: ts=8 |