xref: /vim-8.2.3635/runtime/syntax/csc.vim (revision 00a927d6)
1" Vim syntax file
2" Language: Essbase script
3" Maintainer:	Raul Segura Acevedo <[email protected]>
4" Last change:	2001 Sep 25
5
6" For version 5.x: Clear all syntax items
7" For version 6.x: Quit when a syntax file was already loaded
8if version < 600
9	syntax clear
10elseif exists("b:current_syntax")
11	finish
12endif
13
14" folds: fix/endfix and comments
15sy	region	EssFold start="\<Fix" end="EndFix" transparent fold
16
17sy	keyword	cscTodo contained TODO FIXME XXX
18
19" cscCommentGroup allows adding matches for special things in comments
20sy	cluster cscCommentGroup contains=cscTodo
21
22" Strings in quotes
23sy	match	cscError	'"'
24sy	match	cscString	'"[^"]*"'
25
26"when wanted, highlight trailing white space
27if exists("csc_space_errors")
28	if !exists("csc_no_trail_space_error")
29		sy	match	cscSpaceE	"\s\+$"
30	endif
31	if !exists("csc_no_tab_space_error")
32		sy	match	cscSpaceE	" \+\t"me=e-1
33	endif
34endif
35
36"catch errors caused by wrong parenthesis and brackets
37sy	cluster	cscParenGroup	contains=cscParenE,@cscCommentGroup,cscUserCont,cscBitField,cscFormat,cscNumber,cscFloat,cscOctal,cscNumbers,cscIfError,cscComW,cscCom,cscFormula,cscBPMacro
38sy	region	cscParen	transparent start='(' end=')' contains=ALLBUT,@cscParenGroup
39sy	match	cscParenE	")"
40
41"integer number, or floating point number without a dot and with "f".
42sy	case	ignore
43sy	match	cscNumbers	transparent "\<\d\|\.\d" contains=cscNumber,cscFloat,cscOctal
44sy	match	cscNumber	contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
45"hex number
46sy	match	cscNumber	contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
47" Flag the first zero of an octal number as something special
48sy	match	cscOctal	contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>"
49sy	match	cscFloat	contained "\d\+f"
50"floating point number, with dot, optional exponent
51sy	match	cscFloat	contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
52"floating point number, starting with a dot, optional exponent
53sy	match	cscFloat	contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
54"floating point number, without dot, with exponent
55sy	match	cscFloat	contained "\d\+e[-+]\=\d\+[fl]\=\>"
56
57sy	region	cscComment	start="/\*" end="\*/" contains=@cscCommentGroup,cscSpaceE fold
58sy	match	cscCommentE	"\*/"
59
60sy	keyword	cscIfError	IF ELSE ENDIF ELSEIF
61sy	keyword	cscCondition	contained IF ELSE ENDIF ELSEIF
62sy	keyword	cscFunction	contained VARPER VAR UDA TRUNCATE SYD SUMRANGE SUM
63sy	keyword	cscFunction	contained STDDEVRANGE STDDEV SPARENTVAL SLN SIBLINGS SHIFT
64sy	keyword	cscFunction	contained SANCESTVAL RSIBLINGS ROUND REMAINDER RELATIVE PTD
65sy	keyword	cscFunction	contained PRIOR POWER PARENTVAL NPV NEXT MOD MINRANGE MIN
66sy	keyword	cscFunction	contained MDSHIFT MDPARENTVAL MDANCESTVAL MAXRANGE MAX MATCH
67sy	keyword	cscFunction	contained LSIBLINGS LEVMBRS LEV
68sy	keyword	cscFunction	contained ISUDA ISSIBLING ISSAMELEV ISSAMEGEN ISPARENT ISMBR
69sy	keyword	cscFunction	contained ISLEV ISISIBLING ISIPARENT ISIDESC ISICHILD ISIBLINGS
70sy	keyword	cscFunction	contained ISIANCEST ISGEN ISDESC ISCHILD ISANCEST ISACCTYPE
71sy	keyword	cscFunction	contained IRSIBLINGS IRR INTEREST INT ILSIBLINGS IDESCENDANTS
72sy	keyword	cscFunction	contained ICHILDREN IANCESTORS IALLANCESTORS
73sy	keyword	cscFunction	contained GROWTH GENMBRS GEN FACTORIAL DISCOUNT DESCENDANTS
74sy	keyword	cscFunction	contained DECLINE CHILDREN CURRMBRRANGE CURLEV CURGEN
75sy	keyword	cscFunction	contained COMPOUNDGROWTH COMPOUND AVGRANGE AVG ANCESTVAL
76sy	keyword	cscFunction	contained ANCESTORS ALLANCESTORS ACCUM ABS
77sy	keyword	cscFunction	contained @VARPER @VAR @UDA @TRUNCATE @SYD @SUMRANGE @SUM
78sy	keyword	cscFunction	contained @STDDEVRANGE @STDDEV @SPARENTVAL @SLN @SIBLINGS @SHIFT
79sy	keyword	cscFunction	contained @SANCESTVAL @RSIBLINGS @ROUND @REMAINDER @RELATIVE @PTD
80sy	keyword	cscFunction	contained @PRIOR @POWER @PARENTVAL @NPV @NEXT @MOD @MINRANGE @MIN
81sy	keyword	cscFunction	contained @MDSHIFT @MDPARENTVAL @MDANCESTVAL @MAXRANGE @MAX @MATCH
82sy	keyword	cscFunction	contained @LSIBLINGS @LEVMBRS @LEV
83sy	keyword	cscFunction	contained @ISUDA @ISSIBLING @ISSAMELEV @ISSAMEGEN @ISPARENT @ISMBR
84sy	keyword	cscFunction	contained @ISLEV @ISISIBLING @ISIPARENT @ISIDESC @ISICHILD @ISIBLINGS
85sy	keyword	cscFunction	contained @ISIANCEST @ISGEN @ISDESC @ISCHILD @ISANCEST @ISACCTYPE
86sy	keyword	cscFunction	contained @IRSIBLINGS @IRR @INTEREST @INT @ILSIBLINGS @IDESCENDANTS
87sy	keyword	cscFunction	contained @ICHILDREN @IANCESTORS @IALLANCESTORS
88sy	keyword	cscFunction	contained @GROWTH @GENMBRS @GEN @FACTORIAL @DISCOUNT @DESCENDANTS
89sy	keyword	cscFunction	contained @DECLINE @CHILDREN @CURRMBRRANGE @CURLEV @CURGEN
90sy	keyword	cscFunction	contained @COMPOUNDGROWTH @COMPOUND @AVGRANGE @AVG @ANCESTVAL
91sy	keyword	cscFunction	contained @ANCESTORS @ALLANCESTORS @ACCUM @ABS
92sy	match	cscFunction	contained "@"
93sy	match	cscError	"@\s*\a*" contains=cscFunction
94
95sy	match	cscStatement	"&"
96sy	keyword	cscStatement	AGG ARRAY VAR CCONV CLEARDATA DATACOPY
97
98sy	match	cscComE	contained "^\s*CALC.*"
99sy	match	cscComE	contained "^\s*CLEARBLOCK.*"
100sy	match	cscComE	contained "^\s*SET.*"
101sy	match	cscComE	contained "^\s*FIX"
102sy	match	cscComE	contained "^\s*ENDFIX"
103sy	match	cscComE	contained "^\s*ENDLOOP"
104sy	match	cscComE	contained "^\s*LOOP"
105" sy	keyword	cscCom	FIX ENDFIX LOOP ENDLOOP
106
107sy	match	cscComW	"^\s*CALC.*"
108sy	match	cscCom	"^\s*CALC\s*ALL"
109sy	match	cscCom	"^\s*CALC\s*AVERAGE"
110sy	match	cscCom	"^\s*CALC\s*DIM"
111sy	match	cscCom	"^\s*CALC\s*FIRST"
112sy	match	cscCom	"^\s*CALC\s*LAST"
113sy	match	cscCom	"^\s*CALC\s*TWOPASS"
114
115sy	match	cscComW	"^\s*CLEARBLOCK.*"
116sy	match	cscCom	"^\s*CLEARBLOCK\s\+ALL"
117sy	match	cscCom	"^\s*CLEARBLOCK\s\+UPPER"
118sy	match	cscCom	"^\s*CLEARBLOCK\s\+NONINPUT"
119
120sy	match	cscComW	"^\s*\<SET.*"
121sy	match	cscCom	"^\s*\<SET\s\+Commands"
122sy	match	cscCom	"^\s*\<SET\s\+AGGMISSG"
123sy	match	cscCom	"^\s*\<SET\s\+CACHE"
124sy	match	cscCom	"^\s*\<SET\s\+CALCHASHTBL"
125sy	match	cscCom	"^\s*\<SET\s\+CLEARUPDATESTATUS"
126sy	match	cscCom	"^\s*\<SET\s\+FRMLBOTTOMUP"
127sy	match	cscCom	"^\s*\<SET\s\+LOCKBLOCK"
128sy	match	cscCom	"^\s*\<SET\s\+MSG"
129sy	match	cscCom	"^\s*\<SET\s\+NOTICE"
130sy	match	cscCom	"^\s*\<SET\s\+UPDATECALC"
131sy	match	cscCom	"^\s*\<SET\s\+UPTOLOCAL"
132
133sy	keyword	cscBPMacro	contained !LoopOnAll !LoopOnLevel !LoopOnSelected
134sy	keyword	cscBPMacro	contained !CurrentMember !LoopOnDimensions !CurrentDimension
135sy	keyword	cscBPMacro	contained !CurrentOtherLoopDimension !LoopOnOtherLoopDimensions
136sy	keyword	cscBPMacro	contained !EndLoop !AllMembers !SelectedMembers !If !Else !EndIf
137sy	keyword	cscBPMacro	contained LoopOnAll LoopOnLevel LoopOnSelected
138sy	keyword	cscBPMacro	contained CurrentMember LoopOnDimensions CurrentDimension
139sy	keyword	cscBPMacro	contained CurrentOtherLoopDimension LoopOnOtherLoopDimensions
140sy	keyword	cscBPMacro	contained EndLoop AllMembers SelectedMembers If Else EndIf
141sy	match	cscBPMacro	contained	"!"
142sy	match	cscBPW	"!\s*\a*"	contains=cscBPmacro
143
144" when wanted, highlighting lhs members or erros in asignments (may lag the editing)
145if version >= 600 && exists("csc_asignment")
146	sy	match	cscEqError	'\("[^"]*"\s*\|[^][\t !%()*+,--/:;<=>{}~]\+\s*\|->\s*\)*=\([^=]\@=\|$\)'
147	sy	region	cscFormula	transparent matchgroup=cscVarName start='\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\s*=\([^=]\@=\|\n\)' skip='"[^"]*"' end=';' contains=ALLBUT,cscFormula,cscFormulaIn,cscBPMacro,cscCondition
148	sy	region	cscFormulaIn	matchgroup=cscVarName transparent start='\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\(->\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\)*\s*=\([^=]\@=\|$\)' skip='"[^"]*"' end=';' contains=ALLBUT,cscFormula,cscFormulaIn,cscBPMacro,cscCondition contained
149	sy	match	cscEq	"=="
150endif
151
152if !exists("csc_minlines")
153	let csc_minlines = 50	" mostly for () constructs
154endif
155exec "sy sync ccomment cscComment minlines=" . csc_minlines
156
157" Define the default highlighting.
158" For version 5.7 and earlier: only when not done already
159" For version 5.8 and later: only when an item doesn't have highlighting yet
160if version >= 508 || !exists("did_csc_syntax_inits")
161	if version < 508
162		let did_csc_syntax_inits = 1
163		command -nargs=+ HiLink hi link <args>
164	else
165		command -nargs=+ HiLink hi def link <args>
166	endif
167
168	hi cscVarName term=bold ctermfg=9 gui=bold guifg=blue
169
170	HiLink	cscNumber	Number
171	HiLink	cscOctal	Number
172	HiLink	cscFloat	Float
173	HiLink	cscParenE	Error
174	HiLink	cscCommentE	Error
175	HiLink	cscSpaceE	Error
176	HiLink	cscError	Error
177	HiLink	cscString	String
178	HiLink	cscComment	Comment
179	HiLink	cscTodo		Todo
180	HiLink	cscStatement	Statement
181	HiLink	cscIfError	Error
182	HiLink	cscEqError	Error
183	HiLink	cscFunction	Statement
184	HiLink	cscCondition	Statement
185	HiLink	cscWarn		WarningMsg
186
187	HiLink	cscComE	Error
188	HiLink	cscCom	Statement
189	HiLink	cscComW	WarningMsg
190
191	HiLink	cscBPMacro	Identifier
192	HiLink	cscBPW		WarningMsg
193
194	delcommand HiLink
195endif
196
197let b:current_syntax = "csc"
198
199" vim: ts=8
200