" Vim syntax file " Language: TSS (Thermal Synthesizer System) Command Line " Maintainer: Adrian Nagle, anagle@ball.com " Last Change: 2003 May 11 " Filenames: *.tsscl " URL: http://www.naglenet.org/vim/syntax/tsscl.vim " MAIN URL: http://www.naglenet.org/vim/ " 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 " Ignore case syn case ignore " " " Begin syntax definitions for tss geomtery file. " " Load TSS geometry syntax file "source $VIM/myvim/tssgm.vim "source $VIMRUNTIME/syntax/c.vim " Define keywords for TSS syn keyword tssclCommand begin radk list heatrates attr draw syn keyword tssclKeyword cells rays error nodes levels objects cpu syn keyword tssclKeyword units length positions energy time unit solar syn keyword tssclKeyword solar_constant albedo planet_power syn keyword tssclEnd exit syn keyword tssclUnits cm feet meters inches syn keyword tssclUnits Celsius Kelvin Fahrenheit Rankine " Define matches for TSS syn match tssclString /"[^"]\+"/ contains=ALLBUT,tssInteger,tssclKeyword,tssclCommand,tssclEnd,tssclUnits syn match tssclComment "#.*$" " rational and logical operators " < Less than " > Greater than " <= Less than or equal " >= Greater than or equal " == or = Equal to " != Not equal to " && or & Logical AND " || or | Logical OR " ! Logical NOT " " algebraic operators: " ^ or ** Exponentation " * Multiplication " / Division " % Remainder " + Addition " - Subtraction " syn match tssclOper "||\||\|&&\|&\|!=\|!\|>=\|<=\|>\|<\|+\|-\|^\|\*\*\|\*\|/\|%\|==\|=\|\." skipwhite " CLI Directive Commands, with arguments " " BASIC COMMAND LIST " *ADD input_source " *ARITHMETIC { [ON] | OFF } " *CLOSE unit_number " *CPU " *DEFINE " *ECHO[/qualifiers] { [ON] | OFF } " *ELSE [IF { 0 | 1 } ] " *END { IF | WHILE } " *EXIT " *IF { 0 | 1 } " *LIST/n list variable " *OPEN[/r | /r+ | /w | /w+ ] unit_number file_name " *PROMPT prompt_string sybol_name " *READ/unit=unit_number[/LOCAL | /GLOBAL ] sym1 [sym2, [sym3 ...]] " *REWIND " *STOP " *STRCMP string_1 string_2 difference " *SYSTEM command " *UNDEFINE[/LOCAL][/GLOBAL] symbol_name " *WHILE { 0 | 1 } " *WRITE[/unit=unit_number] output text " syn match tssclDirective "\*ADD" syn match tssclDirective "\*ARITHMETIC \+\(ON\|OFF\)" syn match tssclDirective "\*CLOSE" syn match tssclDirective "\*CPU" syn match tssclDirective "\*DEFINE" syn match tssclDirective "\*ECHO" syn match tssclConditional "\*ELSE" syn match tssclConditional "\*END \+\(IF\|WHILE\)" syn match tssclDirective "\*EXIT" syn match tssclConditional "\*IF" syn match tssclDirective "\*LIST" syn match tssclDirective "\*OPEN" syn match tssclDirective "\*PROMPT" syn match tssclDirective "\*READ" syn match tssclDirective "\*REWIND" syn match tssclDirective "\*STOP" syn match tssclDirective "\*STRCMP" syn match tssclDirective "\*SYSTEM" syn match tssclDirective "\*UNDEFINE" syn match tssclConditional "\*WHILE" syn match tssclDirective "\*WRITE" syn match tssclContChar "-$" " C library functoins " Bessel functions (jn, yn) " Error and complementary error fuctions (erf, erfc) " Exponential functions (exp) " Logrithm (log, log10) " Power (pow) " Square root (sqrt) " Floor (floor) " Ceiling (ceil) " Floating point remainder (fmod) " Floating point absolute value (fabs) " Gamma (gamma) " Euclidean distance function (hypot) " Hperbolic functions (sinh, cosh, tanh) " Trigometric functions in radians (sin, cos, tan, asin, acos, atan, atan2) " Trigometric functions in degrees (sind, cosd, tand, asind, acosd, atand, " atan2d) " " local varialbles: cl_arg1, cl_arg2, etc. (cl_arg is an array of arguments) " cl_args is the number of arguments " " " I/O: *PROMPT, *WRITE, *READ " " Conditional branching: " IF, ELSE IF, END " *IF value *IF I==10 " *ELSE IF value *ELSE IF I<10 " *ELSE *ELSE " *ENDIF *ENDIF " " " Iterative looping: " WHILE " *WHILE test " ..... " *END WHILE " " " EXAMPLE: " *DEFINE I = 1 " *WHILE (I <= 10) " *WRITE I = 'I' " *DEFINE I = (I + 1) " *END WHILE " syn match tssclQualifier "/[^/ ]\+"hs=s+1 syn match tssclSymbol "'\S\+'" "syn match tssclSymbol2 " \S\+ " contained syn match tssclInteger "-\=\<[0-9]*\>" syn match tssclFloat "-\=\<[0-9]*\.[0-9]*" syn match tssclScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>" " 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_tsscl_syntax_inits") if version < 508 let did_tsscl_syntax_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink tssclCommand Statement HiLink tssclKeyword Special HiLink tssclEnd Macro HiLink tssclUnits Special HiLink tssclComment Comment HiLink tssclDirective Statement HiLink tssclConditional Conditional HiLink tssclContChar Macro HiLink tssclQualifier Typedef HiLink tssclSymbol Identifier HiLink tssclSymbol2 Symbol HiLink tssclString String HiLink tssclOper Operator HiLink tssclInteger Number HiLink tssclFloat Number HiLink tssclScientific Number delcommand HiLink endif let b:current_syntax = "tsscl" " vim: ts=8 sw=2