forked from aniani/vim
		
	
		
			
	
	
		
			278 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			278 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " 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:  2003 May 11 | ||
|  | " 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 | ||
|  | 
 | ||
|  | " 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" | ||
|  | 
 | ||
|  | " vim:ts=4 |