blob: 07e9708eaab5d1873939f51f307130309a3174fd [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Speedup, plant simulator from AspenTech
3" Maintainer: Stefan.Schwarzer <s.schwarzer@ndh.net>
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +01004" URL: http://www.ndh.net/home/sschwarzer/download/spup.vim
5" Last Change: 2012 Feb 03 by Thilo Six
Bram Moolenaar071d4272004-06-13 20:20:40 +00006" Filename: spup.vim
7
8" Bugs
9" - in the appropriate sections keywords are always highlighted
10" even if they are not used with the appropriate meaning;
11" example: in
12" MODEL demonstration
13" TYPE
14" *area AS area
15" both "area" are highlighted as spupType.
16"
17" If you encounter problems or have questions or suggestions, mail me
18
19" Remove old syntax stuff
20" For version 5.x: Clear all syntax items
21" For version 6.x: Quit when a syntax file was already loaded
22if version < 600
23 syntax clear
24elseif exists("b:current_syntax")
25 finish
26endif
27
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010028let s:cpo_save = &cpo
29set cpo&vim
30
Bram Moolenaar071d4272004-06-13 20:20:40 +000031" don't hightlight several keywords like subsections
32"let strict_subsections = 1
33
34" highlight types usually found in DECLARE section
35if !exists("hightlight_types")
36 let highlight_types = 1
37endif
38
39" one line comment syntax (# comments)
40" 1. allow appended code after comment, do not complain
41" 2. show code beginnig with the second # as an error
42" 3. show whole lines with more than one # as an error
43if !exists("oneline_comments")
44 let oneline_comments = 2
45endif
46
47" Speedup SECTION regions
48syn case ignore
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010049syn region spupCdi matchgroup=spupSection start="^CDI" end="^\*\*\*\*" contains=spupCdiSubs,@spupOrdinary
Bram Moolenaar071d4272004-06-13 20:20:40 +000050syn region spupConditions matchgroup=spupSection start="^CONDITIONS" end="^\*\*\*\*" contains=spupConditionsSubs,@spupOrdinary,spupConditional,spupOperator,spupCode
51syn region spupDeclare matchgroup=spupSection start="^DECLARE" end="^\*\*\*\*" contains=spupDeclareSubs,@spupOrdinary,spupTypes,spupCode
52syn region spupEstimation matchgroup=spupSection start="^ESTIMATION" end="^\*\*\*\*" contains=spupEstimationSubs,@spupOrdinary
53syn region spupExternal matchgroup=spupSection start="^EXTERNAL" end="^\*\*\*\*" contains=spupExternalSubs,@spupOrdinary
54syn region spupFlowsheet matchgroup=spupSection start="^FLOWSHEET" end="^\*\*\*\*" contains=spupFlowsheetSubs,@spupOrdinary,spupStreams,@spupTextproc
55syn region spupFunction matchgroup=spupSection start="^FUNCTION" end="^\*\*\*\*" contains=spupFunctionSubs,@spupOrdinary,spupHelp,spupCode,spupTypes
56syn region spupGlobal matchgroup=spupSection start="^GLOBAL" end="^\*\*\*\*" contains=spupGlobalSubs,@spupOrdinary
57syn region spupHomotopy matchgroup=spupSection start="^HOMOTOPY" end="^\*\*\*\*" contains=spupHomotopySubs,@spupOrdinary
58syn region spupMacro matchgroup=spupSection start="^MACRO" end="^\*\*\*\*" contains=spupMacroSubs,@spupOrdinary,@spupTextproc,spupTypes,spupStreams,spupOperator
59syn region spupModel matchgroup=spupSection start="^MODEL" end="^\*\*\*\*" contains=spupModelSubs,@spupOrdinary,spupConditional,spupOperator,spupTypes,spupStreams,@spupTextproc,spupHelp
60syn region spupOperation matchgroup=spupSection start="^OPERATION" end="^\*\*\*\*" contains=spupOperationSubs,@spupOrdinary,@spupTextproc
61syn region spupOptions matchgroup=spupSection start="^OPTIONS" end="^\*\*\*\*" contains=spupOptionsSubs,@spupOrdinary
62syn region spupProcedure matchgroup=spupSection start="^PROCEDURE" end="^\*\*\*\*" contains=spupProcedureSubs,@spupOrdinary,spupHelp,spupCode,spupTypes
63syn region spupProfiles matchgroup=spupSection start="^PROFILES" end="^\*\*\*\*" contains=@spupOrdinary,@spupTextproc
64syn region spupReport matchgroup=spupSection start="^REPORT" end="^\*\*\*\*" contains=spupReportSubs,@spupOrdinary,spupHelp,@spupTextproc
65syn region spupTitle matchgroup=spupSection start="^TITLE" end="^\*\*\*\*" contains=spupTitleSubs,spupComment,spupConstant,spupError
66syn region spupUnit matchgroup=spupSection start="^UNIT" end="^\*\*\*\*" contains=spupUnitSubs,@spupOrdinary
67
68" Subsections
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010069syn keyword spupCdiSubs INPUT FREE OUTPUT LINEARTIME MINNONZERO CALCULATE FILES SCALING contained
Bram Moolenaar071d4272004-06-13 20:20:40 +000070syn keyword spupDeclareSubs TYPE STREAM contained
71syn keyword spupEstimationSubs ESTIMATE SSEXP DYNEXP RESULT contained
72syn keyword spupExternalSubs TRANSMIT RECEIVE contained
73syn keyword spupFlowsheetSubs STREAM contained
74syn keyword spupFunctionSubs INPUT OUTPUT contained
75syn keyword spupGlobalSubs VARIABLES MAXIMIZE MINIMIZE CONSTRAINT contained
76syn keyword spupHomotopySubs VARY OPTIONS contained
77syn keyword spupMacroSubs MODEL FLOWSHEET contained
78syn keyword spupModelSubs CATEGORY SET TYPE STREAM EQUATION PROCEDURE contained
79syn keyword spupOperationSubs SET PRESET INITIAL SSTATE FREE contained
80syn keyword spupOptionsSubs ROUTINES TRANSLATE EXECUTION contained
81syn keyword spupProcedureSubs INPUT OUTPUT SPACE PRECALL POSTCALL DERIVATIVE STREAM contained
82" no subsections for Profiles
83syn keyword spupReportSubs SET INITIAL FIELDS FIELDMARK DISPLAY WITHIN contained
84syn keyword spupUnitSubs ROUTINES SET contained
85
86" additional keywords for subsections
87if !exists( "strict_subsections" )
88 syn keyword spupConditionsSubs STOP PRINT contained
89 syn keyword spupDeclareSubs UNIT SET COMPONENTS THERMO OPTIONS contained
90 syn keyword spupEstimationSubs VARY MEASURE INITIAL contained
91 syn keyword spupFlowsheetSubs TYPE FEED PRODUCT INPUT OUTPUT CONNECTION OF IS contained
92 syn keyword spupMacroSubs CONNECTION STREAM SET INPUT OUTPUT OF IS FEED PRODUCT TYPE contained
93 syn keyword spupModelSubs AS ARRAY OF INPUT OUTPUT CONNECTION contained
94 syn keyword spupOperationSubs WITHIN contained
95 syn keyword spupReportSubs LEFT RIGHT CENTER CENTRE UOM TIME DATE VERSION RELDATE contained
96 syn keyword spupUnitSubs IS A contained
97endif
98
99" Speedup data types
100if exists( "highlight_types" )
101 syn keyword spupTypes act_coeff_liq area coefficient concentration contained
102 syn keyword spupTypes control_signal cond_liq cond_vap cp_mass_liq contained
103 syn keyword spupTypes cp_mol_liq cp_mol_vap cv_mol_liq cv_mol_vap contained
104 syn keyword spupTypes diffus_liq diffus_vap delta_p dens_mass contained
105 syn keyword spupTypes dens_mass_sol dens_mass_liq dens_mass_vap dens_mol contained
106 syn keyword spupTypes dens_mol_sol dens_mol_liq dens_mol_vap enthflow contained
107 syn keyword spupTypes enth_mass enth_mass_liq enth_mass_vap enth_mol contained
108 syn keyword spupTypes enth_mol_sol enth_mol_liq enth_mol_vap entr_mol contained
109 syn keyword spupTypes entr_mol_sol entr_mol_liq entr_mol_vap fraction contained
110 syn keyword spupTypes flow_mass flow_mass_liq flow_mass_vap flow_mol contained
111 syn keyword spupTypes flow_mol_vap flow_mol_liq flow_vol flow_vol_vap contained
112 syn keyword spupTypes flow_vol_liq fuga_vap fuga_liq fuga_sol contained
113 syn keyword spupTypes gibb_mol_sol heat_react heat_trans_coeff contained
114 syn keyword spupTypes holdup_heat holdup_heat_liq holdup_heat_vap contained
115 syn keyword spupTypes holdup_mass holdup_mass_liq holdup_mass_vap contained
116 syn keyword spupTypes holdup_mol holdup_mol_liq holdup_mol_vap k_value contained
117 syn keyword spupTypes length length_delta length_short liqfraction contained
118 syn keyword spupTypes liqmassfraction mass massfraction molefraction contained
119 syn keyword spupTypes molweight moment_inertia negative notype percent contained
120 syn keyword spupTypes positive pressure press_diff press_drop press_rise contained
121 syn keyword spupTypes ratio reaction reaction_mass rotation surf_tens contained
122 syn keyword spupTypes temperature temperature_abs temp_diff temp_drop contained
123 syn keyword spupTypes temp_rise time vapfraction vapmassfraction contained
124 syn keyword spupTypes velocity visc_liq visc_vap volume zmom_rate contained
125 syn keyword spupTypes seg_rate smom_rate tmom_rate zmom_mass seg_mass contained
126 syn keyword spupTypes smom_mass tmom_mass zmom_holdup seg_holdup contained
127 syn keyword spupTypes smom_holdup tmom_holdup contained
128endif
129
130" stream types
131syn keyword spupStreams mainstream vapour liquid contained
132
133" "conditional" keywords
134syn keyword spupConditional IF THEN ELSE ENDIF contained
135" Operators, symbols etc.
136syn keyword spupOperator AND OR NOT contained
137syn match spupSymbol "[,\-+=:;*/\"<>@%()]" contained
138syn match spupSpecial "[&\$?]" contained
139" Surprisingly, Speedup allows no unary + instead of the -
140syn match spupError "[(=+\-*/]\s*+\d\+\([ed][+-]\=\d\+\)\=\>"lc=1 contained
141syn match spupError "[(=+\-*/]\s*+\d\+\.\([ed][+-]\=\d\+\)\=\>"lc=1 contained
142syn match spupError "[(=+\-*/]\s*+\d*\.\d\+\([ed][+-]\=\d\+\)\=\>"lc=1 contained
143" String
144syn region spupString start=+"+ end=+"+ oneline contained
145syn region spupString start=+'+ end=+'+ oneline contained
146" Identifier
147syn match spupIdentifier "\<[a-z][a-z0-9_]*\>" contained
148" Textprocessor directives
149syn match spupTextprocGeneric "?[a-z][a-z0-9_]*\>" contained
150syn region spupTextprocError matchgroup=spupTextprocGeneric start="?ERROR" end="?END"he=s-1 contained
151" Number, without decimal point
152syn match spupNumber "-\=\d\+\([ed][+-]\=\d\+\)\=" contained
153" Number, allows 1. before exponent
154syn match spupNumber "-\=\d\+\.\([ed][+-]\=\d\+\)\=" contained
155" Number allows .1 before exponent
156syn match spupNumber "-\=\d*\.\d\+\([ed][+-]\=\d\+\)\=" contained
157" Help subsections
158syn region spupHelp start="^HELP"hs=e+1 end="^\$ENDHELP"he=s-1 contained
159" Fortran code
160syn region spupCode start="^CODE"hs=e+1 end="^\$ENDCODE"he=s-1 contained
161" oneline comments
162if oneline_comments > 3
163 oneline_comments = 2 " default
164endif
165if oneline_comments == 1
166 syn match spupComment "#[^#]*#\="
167elseif oneline_comments == 2
168 syn match spupError "#.*$"
169 syn match spupComment "#[^#]*" nextgroup=spupError
170elseif oneline_comments == 3
171 syn match spupComment "#[^#]*"
172 syn match spupError "#[^#]*#.*"
173endif
174" multiline comments
175syn match spupOpenBrace "{" contained
176syn match spupError "}"
177syn region spupComment matchgroup=spupComment2 start="{" end="}" keepend contains=spupOpenBrace
178
179syn cluster spupOrdinary contains=spupNumber,spupIdentifier,spupSymbol
180syn cluster spupOrdinary add=spupError,spupString,spupComment
181syn cluster spupTextproc contains=spupTextprocGeneric,spupTextprocError
182
183" define syncronizing; especially OPERATION sections can become very large
184syn sync clear
185syn sync minlines=100
186syn sync maxlines=500
187
188syn sync match spupSyncOperation grouphere spupOperation "^OPERATION"
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100189syn sync match spupSyncCdi grouphere spupCdi "^CDI"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000190syn sync match spupSyncConditions grouphere spupConditions "^CONDITIONS"
191syn sync match spupSyncDeclare grouphere spupDeclare "^DECLARE"
192syn sync match spupSyncEstimation grouphere spupEstimation "^ESTIMATION"
193syn sync match spupSyncExternal grouphere spupExternal "^EXTERNAL"
194syn sync match spupSyncFlowsheet grouphere spupFlowsheet "^FLOWSHEET"
195syn sync match spupSyncFunction grouphere spupFunction "^FUNCTION"
196syn sync match spupSyncGlobal grouphere spupGlobal "^GLOBAL"
197syn sync match spupSyncHomotopy grouphere spupHomotopy "^HOMOTOPY"
198syn sync match spupSyncMacro grouphere spupMacro "^MACRO"
199syn sync match spupSyncModel grouphere spupModel "^MODEL"
200syn sync match spupSyncOperation grouphere spupOperation "^OPERATION"
201syn sync match spupSyncOptions grouphere spupOptions "^OPTIONS"
202syn sync match spupSyncProcedure grouphere spupProcedure "^PROCEDURE"
203syn sync match spupSyncProfiles grouphere spupProfiles "^PROFILES"
204syn sync match spupSyncReport grouphere spupReport "^REPORT"
205syn sync match spupSyncTitle grouphere spupTitle "^TITLE"
206syn sync match spupSyncUnit grouphere spupUnit "^UNIT"
207
208" Define the default highlighting.
209" For version 5.7 and earlier: only when not done already
210" For version 5.8 and later: only when an item doesn't have highlighting yet
211if version >= 508 || !exists("did_spup_syn_inits")
212 if version < 508
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100213 let did_spup_syn_inits = 1
214 command -nargs=+ HiLink hi link <args>
215 else
216 command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000217 endif
218
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100219 HiLink spupCdi spupSection
220 HiLink spupConditions spupSection
221 HiLink spupDeclare spupSection
222 HiLink spupEstimation spupSection
223 HiLink spupExternal spupSection
224 HiLink spupFlowsheet spupSection
225 HiLink spupFunction spupSection
226 HiLink spupGlobal spupSection
227 HiLink spupHomotopy spupSection
228 HiLink spupMacro spupSection
229 HiLink spupModel spupSection
230 HiLink spupOperation spupSection
231 HiLink spupOptions spupSection
232 HiLink spupProcedure spupSection
233 HiLink spupProfiles spupSection
234 HiLink spupReport spupSection
235 HiLink spupTitle spupConstant " this is correct, truly ;)
236 HiLink spupUnit spupSection
Bram Moolenaar071d4272004-06-13 20:20:40 +0000237
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100238 HiLink spupCdiSubs spupSubs
239 HiLink spupConditionsSubs spupSubs
240 HiLink spupDeclareSubs spupSubs
241 HiLink spupEstimationSubs spupSubs
242 HiLink spupExternalSubs spupSubs
243 HiLink spupFlowsheetSubs spupSubs
244 HiLink spupFunctionSubs spupSubs
245 HiLink spupHomotopySubs spupSubs
246 HiLink spupMacroSubs spupSubs
247 HiLink spupModelSubs spupSubs
248 HiLink spupOperationSubs spupSubs
249 HiLink spupOptionsSubs spupSubs
250 HiLink spupProcedureSubs spupSubs
251 HiLink spupReportSubs spupSubs
252 HiLink spupUnitSubs spupSubs
Bram Moolenaar071d4272004-06-13 20:20:40 +0000253
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100254 HiLink spupCode Normal
255 HiLink spupComment Comment
256 HiLink spupComment2 spupComment
257 HiLink spupConditional Statement
258 HiLink spupConstant Constant
259 HiLink spupError Error
260 HiLink spupHelp Normal
261 HiLink spupIdentifier Identifier
262 HiLink spupNumber Constant
263 HiLink spupOperator Special
264 HiLink spupOpenBrace spupError
265 HiLink spupSection Statement
266 HiLink spupSpecial spupTextprocGeneric
267 HiLink spupStreams Type
268 HiLink spupString Constant
269 HiLink spupSubs Statement
270 HiLink spupSymbol Special
271 HiLink spupTextprocError Normal
272 HiLink spupTextprocGeneric PreProc
273 HiLink spupTypes Type
Bram Moolenaar071d4272004-06-13 20:20:40 +0000274
275 delcommand HiLink
276endif
277
278let b:current_syntax = "spup"
279
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100280let &cpo = s:cpo_save
281unlet s:cpo_save
282" vim:ts=8