view runtime/syntax/chill.vim @ 10048:43efa4f5a8ea

commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Aug 30 23:26:57 2016 +0200 Updated runtime files. Remove version checks for Vim older than 6.0.
author Christian Brabandt <cb@256bit.org>
date Tue, 30 Aug 2016 23:30:09 +0200
parents 3fc0f57ecb91
children 46763b01cd9a
line wrap: on
line source

" 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
command -nargs=+ HiLink hi def link <args>

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

let b:current_syntax = "chill"

" vim: ts=8