1" Vim syntax file 2" Language: TSS (Thermal Synthesizer System) Command Line 3" Maintainer: Adrian Nagle, anagle@ball.com 4" Last Change: 2003 May 11 5" Filenames: *.tsscl 6" URL: http://www.naglenet.org/vim/syntax/tsscl.vim 7" MAIN URL: http://www.naglenet.org/vim/ 8 9 10 11" For version 5.x: Clear all syntax items 12" For version 6.x: Quit when a syntax file was already loaded 13if version < 600 14 syntax clear 15elseif exists("b:current_syntax") 16 finish 17endif 18 19 20 21" Ignore case 22syn case ignore 23 24 25 26" 27" 28" Begin syntax definitions for tss geomtery file. 29" 30 31" Load TSS geometry syntax file 32"source $VIM/myvim/tssgm.vim 33"source $VIMRUNTIME/syntax/c.vim 34 35" Define keywords for TSS 36syn keyword tssclCommand begin radk list heatrates attr draw 37 38syn keyword tssclKeyword cells rays error nodes levels objects cpu 39syn keyword tssclKeyword units length positions energy time unit solar 40syn keyword tssclKeyword solar_constant albedo planet_power 41 42syn keyword tssclEnd exit 43 44syn keyword tssclUnits cm feet meters inches 45syn keyword tssclUnits Celsius Kelvin Fahrenheit Rankine 46 47 48 49" Define matches for TSS 50syn match tssclString /"[^"]\+"/ contains=ALLBUT,tssInteger,tssclKeyword,tssclCommand,tssclEnd,tssclUnits 51 52syn match tssclComment "#.*$" 53 54" rational and logical operators 55" < Less than 56" > Greater than 57" <= Less than or equal 58" >= Greater than or equal 59" == or = Equal to 60" != Not equal to 61" && or & Logical AND 62" || or | Logical OR 63" ! Logical NOT 64" 65" algebraic operators: 66" ^ or ** Exponentation 67" * Multiplication 68" / Division 69" % Remainder 70" + Addition 71" - Subtraction 72" 73syn match tssclOper "||\||\|&&\|&\|!=\|!\|>=\|<=\|>\|<\|+\|-\|^\|\*\*\|\*\|/\|%\|==\|=\|\." skipwhite 74 75" CLI Directive Commands, with arguments 76" 77" BASIC COMMAND LIST 78" *ADD input_source 79" *ARITHMETIC { [ON] | OFF } 80" *CLOSE unit_number 81" *CPU 82" *DEFINE 83" *ECHO[/qualifiers] { [ON] | OFF } 84" *ELSE [IF { 0 | 1 } ] 85" *END { IF | WHILE } 86" *EXIT 87" *IF { 0 | 1 } 88" *LIST/n list variable 89" *OPEN[/r | /r+ | /w | /w+ ] unit_number file_name 90" *PROMPT prompt_string sybol_name 91" *READ/unit=unit_number[/LOCAL | /GLOBAL ] sym1 [sym2, [sym3 ...]] 92" *REWIND 93" *STOP 94" *STRCMP string_1 string_2 difference 95" *SYSTEM command 96" *UNDEFINE[/LOCAL][/GLOBAL] symbol_name 97" *WHILE { 0 | 1 } 98" *WRITE[/unit=unit_number] output text 99" 100syn match tssclDirective "\*ADD" 101syn match tssclDirective "\*ARITHMETIC \+\(ON\|OFF\)" 102syn match tssclDirective "\*CLOSE" 103syn match tssclDirective "\*CPU" 104syn match tssclDirective "\*DEFINE" 105syn match tssclDirective "\*ECHO" 106syn match tssclConditional "\*ELSE" 107syn match tssclConditional "\*END \+\(IF\|WHILE\)" 108syn match tssclDirective "\*EXIT" 109syn match tssclConditional "\*IF" 110syn match tssclDirective "\*LIST" 111syn match tssclDirective "\*OPEN" 112syn match tssclDirective "\*PROMPT" 113syn match tssclDirective "\*READ" 114syn match tssclDirective "\*REWIND" 115syn match tssclDirective "\*STOP" 116syn match tssclDirective "\*STRCMP" 117syn match tssclDirective "\*SYSTEM" 118syn match tssclDirective "\*UNDEFINE" 119syn match tssclConditional "\*WHILE" 120syn match tssclDirective "\*WRITE" 121 122syn match tssclContChar "-$" 123 124" C library functoins 125" Bessel functions (jn, yn) 126" Error and complementary error fuctions (erf, erfc) 127" Exponential functions (exp) 128" Logrithm (log, log10) 129" Power (pow) 130" Square root (sqrt) 131" Floor (floor) 132" Ceiling (ceil) 133" Floating point remainder (fmod) 134" Floating point absolute value (fabs) 135" Gamma (gamma) 136" Euclidean distance function (hypot) 137" Hperbolic functions (sinh, cosh, tanh) 138" Trigometric functions in radians (sin, cos, tan, asin, acos, atan, atan2) 139" Trigometric functions in degrees (sind, cosd, tand, asind, acosd, atand, 140" atan2d) 141" 142" local varialbles: cl_arg1, cl_arg2, etc. (cl_arg is an array of arguments) 143" cl_args is the number of arguments 144" 145" 146" I/O: *PROMPT, *WRITE, *READ 147" 148" Conditional branching: 149" IF, ELSE IF, END 150" *IF value *IF I==10 151" *ELSE IF value *ELSE IF I<10 152" *ELSE *ELSE 153" *ENDIF *ENDIF 154" 155" 156" Iterative looping: 157" WHILE 158" *WHILE test 159" ..... 160" *END WHILE 161" 162" 163" EXAMPLE: 164" *DEFINE I = 1 165" *WHILE (I <= 10) 166" *WRITE I = 'I' 167" *DEFINE I = (I + 1) 168" *END WHILE 169" 170 171syn match tssclQualifier "/[^/ ]\+"hs=s+1 172syn match tssclSymbol "'\S\+'" 173"syn match tssclSymbol2 " \S\+ " contained 174 175syn match tssclInteger "-\=\<[0-9]*\>" 176syn match tssclFloat "-\=\<[0-9]*\.[0-9]*" 177syn match tssclScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>" 178 179 180 181" Define the default highlighting 182" For version 5.7 and earlier: only when not done already 183" For version 5.8 and later: only when an item doesn't have highlighting yet 184if version >= 508 || !exists("did_tsscl_syntax_inits") 185 if version < 508 186 let did_tsscl_syntax_inits = 1 187 command -nargs=+ HiLink hi link <args> 188 else 189 command -nargs=+ HiLink hi def link <args> 190 endif 191 192 HiLink tssclCommand Statement 193 HiLink tssclKeyword Special 194 HiLink tssclEnd Macro 195 HiLink tssclUnits Special 196 197 HiLink tssclComment Comment 198 HiLink tssclDirective Statement 199 HiLink tssclConditional Conditional 200 HiLink tssclContChar Macro 201 HiLink tssclQualifier Typedef 202 HiLink tssclSymbol Identifier 203 HiLink tssclSymbol2 Symbol 204 HiLink tssclString String 205 HiLink tssclOper Operator 206 207 HiLink tssclInteger Number 208 HiLink tssclFloat Number 209 HiLink tssclScientific Number 210 211 delcommand HiLink 212endif 213 214 215let b:current_syntax = "tsscl" 216 217" vim: ts=8 sw=2 218