xref: /vim-8.2.3635/runtime/syntax/csc.vim (revision 6c391a74)
1" Vim syntax file
2" Language: Essbase script
3" Maintainer:	Raul Segura Acevedo <[email protected]>
4" Last change:	2011 Dec 25 by Thilo Six
5
6" quit when a syntax file was already loaded
7if exists("b:current_syntax")
8	finish
9endif
10
11let s:cpo_save = &cpo
12set cpo&vim
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 errors in assignments (may lag the editing)
145if 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" Only when an item doesn't have highlighting yet
159
160hi cscVarName term=bold ctermfg=9 gui=bold guifg=blue
161
162hi def link cscNumber	Number
163hi def link cscOctal	Number
164hi def link cscFloat	Float
165hi def link cscParenE	Error
166hi def link cscCommentE	Error
167hi def link cscSpaceE	Error
168hi def link cscError	Error
169hi def link cscString	String
170hi def link cscComment	Comment
171hi def link cscTodo		Todo
172hi def link cscStatement	Statement
173hi def link cscIfError	Error
174hi def link cscEqError	Error
175hi def link cscFunction	Statement
176hi def link cscCondition	Statement
177hi def link cscWarn		WarningMsg
178
179hi def link cscComE	Error
180hi def link cscCom	Statement
181hi def link cscComW	WarningMsg
182
183hi def link cscBPMacro	Identifier
184hi def link cscBPW		WarningMsg
185
186
187let b:current_syntax = "csc"
188
189let &cpo = s:cpo_save
190unlet s:cpo_save
191" vim: ts=8
192