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