| " Vim syntax file |
| " Language: Speedup, plant simulator from AspenTech |
| " Maintainer: Stefan.Schwarzer <s.schwarzer@ndh.net> |
| " URL: http://www.ndh.net/home/sschwarzer/download/spup.vim |
| " Last Change: 2012 Feb 03 by Thilo Six |
| " Filename: spup.vim |
| |
| " Bugs |
| " - in the appropriate sections keywords are always highlighted |
| " even if they are not used with the appropriate meaning; |
| " example: in |
| " MODEL demonstration |
| " TYPE |
| " *area AS area |
| " both "area" are highlighted as spupType. |
| " |
| " If you encounter problems or have questions or suggestions, mail me |
| |
| " Remove old syntax stuff |
| " For version 5.x: Clear all syntax items |
| " For version 6.x: Quit when a syntax file was already loaded |
| if version < 600 |
| syntax clear |
| elseif exists("b:current_syntax") |
| finish |
| endif |
| |
| let s:cpo_save = &cpo |
| set cpo&vim |
| |
| " don't hightlight several keywords like subsections |
| "let strict_subsections = 1 |
| |
| " highlight types usually found in DECLARE section |
| if !exists("hightlight_types") |
| let highlight_types = 1 |
| endif |
| |
| " one line comment syntax (# comments) |
| " 1. allow appended code after comment, do not complain |
| " 2. show code beginnig with the second # as an error |
| " 3. show whole lines with more than one # as an error |
| if !exists("oneline_comments") |
| let oneline_comments = 2 |
| endif |
| |
| " Speedup SECTION regions |
| syn case ignore |
| syn region spupCdi matchgroup=spupSection start="^CDI" end="^\*\*\*\*" contains=spupCdiSubs,@spupOrdinary |
| syn region spupConditions matchgroup=spupSection start="^CONDITIONS" end="^\*\*\*\*" contains=spupConditionsSubs,@spupOrdinary,spupConditional,spupOperator,spupCode |
| syn region spupDeclare matchgroup=spupSection start="^DECLARE" end="^\*\*\*\*" contains=spupDeclareSubs,@spupOrdinary,spupTypes,spupCode |
| syn region spupEstimation matchgroup=spupSection start="^ESTIMATION" end="^\*\*\*\*" contains=spupEstimationSubs,@spupOrdinary |
| syn region spupExternal matchgroup=spupSection start="^EXTERNAL" end="^\*\*\*\*" contains=spupExternalSubs,@spupOrdinary |
| syn region spupFlowsheet matchgroup=spupSection start="^FLOWSHEET" end="^\*\*\*\*" contains=spupFlowsheetSubs,@spupOrdinary,spupStreams,@spupTextproc |
| syn region spupFunction matchgroup=spupSection start="^FUNCTION" end="^\*\*\*\*" contains=spupFunctionSubs,@spupOrdinary,spupHelp,spupCode,spupTypes |
| syn region spupGlobal matchgroup=spupSection start="^GLOBAL" end="^\*\*\*\*" contains=spupGlobalSubs,@spupOrdinary |
| syn region spupHomotopy matchgroup=spupSection start="^HOMOTOPY" end="^\*\*\*\*" contains=spupHomotopySubs,@spupOrdinary |
| syn region spupMacro matchgroup=spupSection start="^MACRO" end="^\*\*\*\*" contains=spupMacroSubs,@spupOrdinary,@spupTextproc,spupTypes,spupStreams,spupOperator |
| syn region spupModel matchgroup=spupSection start="^MODEL" end="^\*\*\*\*" contains=spupModelSubs,@spupOrdinary,spupConditional,spupOperator,spupTypes,spupStreams,@spupTextproc,spupHelp |
| syn region spupOperation matchgroup=spupSection start="^OPERATION" end="^\*\*\*\*" contains=spupOperationSubs,@spupOrdinary,@spupTextproc |
| syn region spupOptions matchgroup=spupSection start="^OPTIONS" end="^\*\*\*\*" contains=spupOptionsSubs,@spupOrdinary |
| syn region spupProcedure matchgroup=spupSection start="^PROCEDURE" end="^\*\*\*\*" contains=spupProcedureSubs,@spupOrdinary,spupHelp,spupCode,spupTypes |
| syn region spupProfiles matchgroup=spupSection start="^PROFILES" end="^\*\*\*\*" contains=@spupOrdinary,@spupTextproc |
| syn region spupReport matchgroup=spupSection start="^REPORT" end="^\*\*\*\*" contains=spupReportSubs,@spupOrdinary,spupHelp,@spupTextproc |
| syn region spupTitle matchgroup=spupSection start="^TITLE" end="^\*\*\*\*" contains=spupTitleSubs,spupComment,spupConstant,spupError |
| syn region spupUnit matchgroup=spupSection start="^UNIT" end="^\*\*\*\*" contains=spupUnitSubs,@spupOrdinary |
| |
| " Subsections |
| syn keyword spupCdiSubs INPUT FREE OUTPUT LINEARTIME MINNONZERO CALCULATE FILES SCALING contained |
| syn keyword spupDeclareSubs TYPE STREAM contained |
| syn keyword spupEstimationSubs ESTIMATE SSEXP DYNEXP RESULT contained |
| syn keyword spupExternalSubs TRANSMIT RECEIVE contained |
| syn keyword spupFlowsheetSubs STREAM contained |
| syn keyword spupFunctionSubs INPUT OUTPUT contained |
| syn keyword spupGlobalSubs VARIABLES MAXIMIZE MINIMIZE CONSTRAINT contained |
| syn keyword spupHomotopySubs VARY OPTIONS contained |
| syn keyword spupMacroSubs MODEL FLOWSHEET contained |
| syn keyword spupModelSubs CATEGORY SET TYPE STREAM EQUATION PROCEDURE contained |
| syn keyword spupOperationSubs SET PRESET INITIAL SSTATE FREE contained |
| syn keyword spupOptionsSubs ROUTINES TRANSLATE EXECUTION contained |
| syn keyword spupProcedureSubs INPUT OUTPUT SPACE PRECALL POSTCALL DERIVATIVE STREAM contained |
| " no subsections for Profiles |
| syn keyword spupReportSubs SET INITIAL FIELDS FIELDMARK DISPLAY WITHIN contained |
| syn keyword spupUnitSubs ROUTINES SET contained |
| |
| " additional keywords for subsections |
| if !exists( "strict_subsections" ) |
| syn keyword spupConditionsSubs STOP PRINT contained |
| syn keyword spupDeclareSubs UNIT SET COMPONENTS THERMO OPTIONS contained |
| syn keyword spupEstimationSubs VARY MEASURE INITIAL contained |
| syn keyword spupFlowsheetSubs TYPE FEED PRODUCT INPUT OUTPUT CONNECTION OF IS contained |
| syn keyword spupMacroSubs CONNECTION STREAM SET INPUT OUTPUT OF IS FEED PRODUCT TYPE contained |
| syn keyword spupModelSubs AS ARRAY OF INPUT OUTPUT CONNECTION contained |
| syn keyword spupOperationSubs WITHIN contained |
| syn keyword spupReportSubs LEFT RIGHT CENTER CENTRE UOM TIME DATE VERSION RELDATE contained |
| syn keyword spupUnitSubs IS A contained |
| endif |
| |
| " Speedup data types |
| if exists( "highlight_types" ) |
| syn keyword spupTypes act_coeff_liq area coefficient concentration contained |
| syn keyword spupTypes control_signal cond_liq cond_vap cp_mass_liq contained |
| syn keyword spupTypes cp_mol_liq cp_mol_vap cv_mol_liq cv_mol_vap contained |
| syn keyword spupTypes diffus_liq diffus_vap delta_p dens_mass contained |
| syn keyword spupTypes dens_mass_sol dens_mass_liq dens_mass_vap dens_mol contained |
| syn keyword spupTypes dens_mol_sol dens_mol_liq dens_mol_vap enthflow contained |
| syn keyword spupTypes enth_mass enth_mass_liq enth_mass_vap enth_mol contained |
| syn keyword spupTypes enth_mol_sol enth_mol_liq enth_mol_vap entr_mol contained |
| syn keyword spupTypes entr_mol_sol entr_mol_liq entr_mol_vap fraction contained |
| syn keyword spupTypes flow_mass flow_mass_liq flow_mass_vap flow_mol contained |
| syn keyword spupTypes flow_mol_vap flow_mol_liq flow_vol flow_vol_vap contained |
| syn keyword spupTypes flow_vol_liq fuga_vap fuga_liq fuga_sol contained |
| syn keyword spupTypes gibb_mol_sol heat_react heat_trans_coeff contained |
| syn keyword spupTypes holdup_heat holdup_heat_liq holdup_heat_vap contained |
| syn keyword spupTypes holdup_mass holdup_mass_liq holdup_mass_vap contained |
| syn keyword spupTypes holdup_mol holdup_mol_liq holdup_mol_vap k_value contained |
| syn keyword spupTypes length length_delta length_short liqfraction contained |
| syn keyword spupTypes liqmassfraction mass massfraction molefraction contained |
| syn keyword spupTypes molweight moment_inertia negative notype percent contained |
| syn keyword spupTypes positive pressure press_diff press_drop press_rise contained |
| syn keyword spupTypes ratio reaction reaction_mass rotation surf_tens contained |
| syn keyword spupTypes temperature temperature_abs temp_diff temp_drop contained |
| syn keyword spupTypes temp_rise time vapfraction vapmassfraction contained |
| syn keyword spupTypes velocity visc_liq visc_vap volume zmom_rate contained |
| syn keyword spupTypes seg_rate smom_rate tmom_rate zmom_mass seg_mass contained |
| syn keyword spupTypes smom_mass tmom_mass zmom_holdup seg_holdup contained |
| syn keyword spupTypes smom_holdup tmom_holdup contained |
| endif |
| |
| " stream types |
| syn keyword spupStreams mainstream vapour liquid contained |
| |
| " "conditional" keywords |
| syn keyword spupConditional IF THEN ELSE ENDIF contained |
| " Operators, symbols etc. |
| syn keyword spupOperator AND OR NOT contained |
| syn match spupSymbol "[,\-+=:;*/\"<>@%()]" contained |
| syn match spupSpecial "[&\$?]" contained |
| " Surprisingly, Speedup allows no unary + instead of the - |
| syn match spupError "[(=+\-*/]\s*+\d\+\([ed][+-]\=\d\+\)\=\>"lc=1 contained |
| syn match spupError "[(=+\-*/]\s*+\d\+\.\([ed][+-]\=\d\+\)\=\>"lc=1 contained |
| syn match spupError "[(=+\-*/]\s*+\d*\.\d\+\([ed][+-]\=\d\+\)\=\>"lc=1 contained |
| " String |
| syn region spupString start=+"+ end=+"+ oneline contained |
| syn region spupString start=+'+ end=+'+ oneline contained |
| " Identifier |
| syn match spupIdentifier "\<[a-z][a-z0-9_]*\>" contained |
| " Textprocessor directives |
| syn match spupTextprocGeneric "?[a-z][a-z0-9_]*\>" contained |
| syn region spupTextprocError matchgroup=spupTextprocGeneric start="?ERROR" end="?END"he=s-1 contained |
| " Number, without decimal point |
| syn match spupNumber "-\=\d\+\([ed][+-]\=\d\+\)\=" contained |
| " Number, allows 1. before exponent |
| syn match spupNumber "-\=\d\+\.\([ed][+-]\=\d\+\)\=" contained |
| " Number allows .1 before exponent |
| syn match spupNumber "-\=\d*\.\d\+\([ed][+-]\=\d\+\)\=" contained |
| " Help subsections |
| syn region spupHelp start="^HELP"hs=e+1 end="^\$ENDHELP"he=s-1 contained |
| " Fortran code |
| syn region spupCode start="^CODE"hs=e+1 end="^\$ENDCODE"he=s-1 contained |
| " oneline comments |
| if oneline_comments > 3 |
| oneline_comments = 2 " default |
| endif |
| if oneline_comments == 1 |
| syn match spupComment "#[^#]*#\=" |
| elseif oneline_comments == 2 |
| syn match spupError "#.*$" |
| syn match spupComment "#[^#]*" nextgroup=spupError |
| elseif oneline_comments == 3 |
| syn match spupComment "#[^#]*" |
| syn match spupError "#[^#]*#.*" |
| endif |
| " multiline comments |
| syn match spupOpenBrace "{" contained |
| syn match spupError "}" |
| syn region spupComment matchgroup=spupComment2 start="{" end="}" keepend contains=spupOpenBrace |
| |
| syn cluster spupOrdinary contains=spupNumber,spupIdentifier,spupSymbol |
| syn cluster spupOrdinary add=spupError,spupString,spupComment |
| syn cluster spupTextproc contains=spupTextprocGeneric,spupTextprocError |
| |
| " define syncronizing; especially OPERATION sections can become very large |
| syn sync clear |
| syn sync minlines=100 |
| syn sync maxlines=500 |
| |
| syn sync match spupSyncOperation grouphere spupOperation "^OPERATION" |
| syn sync match spupSyncCdi grouphere spupCdi "^CDI" |
| syn sync match spupSyncConditions grouphere spupConditions "^CONDITIONS" |
| syn sync match spupSyncDeclare grouphere spupDeclare "^DECLARE" |
| syn sync match spupSyncEstimation grouphere spupEstimation "^ESTIMATION" |
| syn sync match spupSyncExternal grouphere spupExternal "^EXTERNAL" |
| syn sync match spupSyncFlowsheet grouphere spupFlowsheet "^FLOWSHEET" |
| syn sync match spupSyncFunction grouphere spupFunction "^FUNCTION" |
| syn sync match spupSyncGlobal grouphere spupGlobal "^GLOBAL" |
| syn sync match spupSyncHomotopy grouphere spupHomotopy "^HOMOTOPY" |
| syn sync match spupSyncMacro grouphere spupMacro "^MACRO" |
| syn sync match spupSyncModel grouphere spupModel "^MODEL" |
| syn sync match spupSyncOperation grouphere spupOperation "^OPERATION" |
| syn sync match spupSyncOptions grouphere spupOptions "^OPTIONS" |
| syn sync match spupSyncProcedure grouphere spupProcedure "^PROCEDURE" |
| syn sync match spupSyncProfiles grouphere spupProfiles "^PROFILES" |
| syn sync match spupSyncReport grouphere spupReport "^REPORT" |
| syn sync match spupSyncTitle grouphere spupTitle "^TITLE" |
| syn sync match spupSyncUnit grouphere spupUnit "^UNIT" |
| |
| " Define the default highlighting. |
| " For version 5.7 and earlier: only when not done already |
| " For version 5.8 and later: only when an item doesn't have highlighting yet |
| if version >= 508 || !exists("did_spup_syn_inits") |
| if version < 508 |
| let did_spup_syn_inits = 1 |
| command -nargs=+ HiLink hi link <args> |
| else |
| command -nargs=+ HiLink hi def link <args> |
| endif |
| |
| HiLink spupCdi spupSection |
| HiLink spupConditions spupSection |
| HiLink spupDeclare spupSection |
| HiLink spupEstimation spupSection |
| HiLink spupExternal spupSection |
| HiLink spupFlowsheet spupSection |
| HiLink spupFunction spupSection |
| HiLink spupGlobal spupSection |
| HiLink spupHomotopy spupSection |
| HiLink spupMacro spupSection |
| HiLink spupModel spupSection |
| HiLink spupOperation spupSection |
| HiLink spupOptions spupSection |
| HiLink spupProcedure spupSection |
| HiLink spupProfiles spupSection |
| HiLink spupReport spupSection |
| HiLink spupTitle spupConstant " this is correct, truly ;) |
| HiLink spupUnit spupSection |
| |
| HiLink spupCdiSubs spupSubs |
| HiLink spupConditionsSubs spupSubs |
| HiLink spupDeclareSubs spupSubs |
| HiLink spupEstimationSubs spupSubs |
| HiLink spupExternalSubs spupSubs |
| HiLink spupFlowsheetSubs spupSubs |
| HiLink spupFunctionSubs spupSubs |
| HiLink spupHomotopySubs spupSubs |
| HiLink spupMacroSubs spupSubs |
| HiLink spupModelSubs spupSubs |
| HiLink spupOperationSubs spupSubs |
| HiLink spupOptionsSubs spupSubs |
| HiLink spupProcedureSubs spupSubs |
| HiLink spupReportSubs spupSubs |
| HiLink spupUnitSubs spupSubs |
| |
| HiLink spupCode Normal |
| HiLink spupComment Comment |
| HiLink spupComment2 spupComment |
| HiLink spupConditional Statement |
| HiLink spupConstant Constant |
| HiLink spupError Error |
| HiLink spupHelp Normal |
| HiLink spupIdentifier Identifier |
| HiLink spupNumber Constant |
| HiLink spupOperator Special |
| HiLink spupOpenBrace spupError |
| HiLink spupSection Statement |
| HiLink spupSpecial spupTextprocGeneric |
| HiLink spupStreams Type |
| HiLink spupString Constant |
| HiLink spupSubs Statement |
| HiLink spupSymbol Special |
| HiLink spupTextprocError Normal |
| HiLink spupTextprocGeneric PreProc |
| HiLink spupTypes Type |
| |
| delcommand HiLink |
| endif |
| |
| let b:current_syntax = "spup" |
| |
| let &cpo = s:cpo_save |
| unlet s:cpo_save |
| " vim:ts=8 |