1" Vim syntax file 2" 3" Language: NATURAL 4" Version: 2.0.26.17 5" Maintainer: Marko Leipert <[email protected]> 6" Last Changed: 2002-02-28 09:50:36 7" Support: http://www.winconsole.de/vim/syntax.html 8 9" For version 5.x: Clear all syntax items 10" For version 6.x: Quit when this syntax file was already loaded 11if v:version < 600 12 syntax clear 13 set iskeyword+=-,*,#,+,_,/ 14elseif exists("b:current_syntax") 15 finish 16else 17 setlocal iskeyword+=-,*,#,+,_,/ 18endif 19 20" NATURAL is case insensitive 21syntax case ignore 22 23" preprocessor 24syn keyword naturalInclude include nextgroup=naturalObjName skipwhite 25 26" define data 27syn keyword naturalKeyword define data end-define 28syn keyword naturalKeyword independent global parameter local redefine view 29syn keyword naturalKeyword const[ant] init initial 30 31" loops 32syn keyword naturalLoop read end-read end-work find end-find histogram end-histogram 33syn keyword naturalLoop end-all sort end-sort sorted descending ascending 34syn keyword naturalRepeat repeat end-repeat while until for step end-for 35syn keyword naturalKeyword in file with field starting from ending at thru by isn where 36syn keyword naturalError on error end-error 37syn keyword naturalKeyword accept reject end-enddata number unique retain as release 38syn keyword naturalKeyword start end-start break end-break physical page top sequence 39syn keyword naturalKeyword end-toppage end-endpage end-endfile before processing 40syn keyword naturalKeyword end-before 41 42" conditionals 43syn keyword naturalConditional if then else end-if end-norec 44syn keyword naturalConditional decide end-decide value when condition none any 45 46" assignment / calculation 47syn keyword naturalKeyword reset assign move left right justified compress to into edited 48syn keyword naturalKeyword add subtract multiply divide compute name 49syn keyword naturalKeyword all giving remainder rounded leaving space 50syn keyword naturalKeyword examine full replace giving separate delimiter modified 51syn keyword naturalKeyword suspend identical suppress 52 53" program flow 54syn keyword naturalFlow callnat fetch return enter escape bottom top stack formatted 55syn keyword naturalFlow command call 56syn keyword naturalflow end-subroutine routine 57 58" file operations 59syn keyword naturalKeyword update store get delete end transaction work once close 60 61" other keywords 62syn keyword naturalKeyword first every of no record[s] found ignore immediate 63syn keyword naturalKeyword set settime key control stop terminate 64 65" in-/output 66syn keyword naturalKeyword write display input reinput notitle nohdr map newpage mark 67syn keyword naturalKeyword alarm text help eject index 68syn keyword naturalKeyword format printer skip lines 69 70" functions 71syn keyword naturalKeyword abs atn cos exp frac int log sgn sin sqrt tan val old 72 73" report mode keywords 74syn keyword naturalRMKeyword same loop obtain indexed do doend 75 76" Subroutine name 77syn keyword naturalFlow perform subroutine nextgroup=naturalFunction skipwhite 78syn match naturalFunction "\<[a-z][-_a-z0-9]*\>" 79 80syn keyword naturalFlow using nextgroup=naturalKeyword,naturalObjName skipwhite 81syn match naturalObjName "\<[a-z][-_a-z0-9]\{,7}\>" 82 83" Labels 84syn match naturalLabel "\<[+#a-z][-_#a-z0-9]*\." 85syn match naturalRef "\<[+#a-z][-_#a-z0-9]*\>\.\<[+#a-z][*]\=[-_#a-z0-9]*\>" 86 87" System variables 88syn match naturalSysVar "\<\*[a-z][-a-z0-9]*\>" 89 90"integer number, or floating point number without a dot. 91syn match naturalNumber "\<-\=\d\+\>" 92"floating point number, with dot 93syn match naturalNumber "\<-\=\d\+\.\d\+\>" 94"floating point number, starting with a dot 95syn match naturalNumber "\.\d\+" 96 97" Formats in write statement 98syn match naturalFormat "\<\d\+[TX]\>" 99 100" String and Character contstants 101syn match naturalString "H'\x\+'" 102syn region naturalString start=+"+ end=+"+ 103syn region naturalString start=+'+ end=+'+ 104 105" Type definition 106syn match naturalAttribute "\<[-a-z][a-z]=[-a-z0-9_\.,]\+\>" 107syn match naturalType contained "\<[ABINP]\d\+\(,\d\+\)\=\>" 108syn match naturalType contained "\<[CL]\>" 109 110" "TODO" / other comments 111syn keyword naturalTodo contained todo test 112syn match naturalCommentMark contained "[a-z][^ \t/:|]*\(\s[^ \t/:'"|]\+\)*:\s"he=e-1 113 114" comments 115syn region naturalComment start="/\*" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark 116syn region naturalComment start="^\*[\ \*]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark 117syn region naturalComment start="^\d\{4} \*[\ \*]"lc=5 end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark 118syn match naturalComment "^*$" 119syn match naturalComment "^\d\{4} \*$"lc=5 120" /* is legal syntax in parentheses e.g. "#ident(label./*)" 121syn region naturalPComment contained start="/\*\s*[^),]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark 122 123" operators 124syn keyword naturalOperator and or not eq ne gt lt ge le mask scan 125 126" constants 127syn keyword naturalBoolean true false 128 129syn match naturalLineNo "^\d\{4}" 130 131" identifiers 132syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*\>[^\.']"me=e-1 133syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*$" 134syn match naturalLegalIdent "[+#a-z][-_#a-z0-9]*/[-_#a-z0-9]*" 135 136" parentheses 137syn region naturalPar matchgroup=naturalParGui start="(" end=")" contains=naturalLabel,naturalRef,naturalOperator,@naturalConstant,naturalType,naturalSysVar,naturalPar,naturalLineNo,naturalPComment 138syn match naturalLineRef "(\d\{4})" 139 140" build syntax groups 141syntax cluster naturalConstant contains=naturalString,naturalNumber,naturalAttribute,naturalBoolean 142 143" folding 144if v:version >= 600 145 set foldignore=* 146endif 147 148 149if v:version >= 508 || !exists("did_natural_syntax_inits") 150 if v:version < 508 151 let did_natural_syntax_inits = 1 152 command -nargs=+ HiLink hi link <args> 153 else 154 command -nargs=+ HiLink hi def link <args> 155 endif 156 " The default methods for highlighting. Can be overridden later 157 158 " Constants 159 HiLink naturalFormat Constant 160 HiLink naturalAttribute Constant 161 HiLink naturalNumber Number 162 HiLink naturalString String 163 HiLink naturalBoolean Boolean 164 165 " All kinds of keywords 166 HiLink naturalConditional Conditional 167 HiLink naturalRepeat Repeat 168 HiLink naturalLoop Repeat 169 HiLink naturalFlow Keyword 170 HiLink naturalError Keyword 171 HiLink naturalKeyword Keyword 172 HiLink naturalOperator Operator 173 HiLink naturalParGui Operator 174 175 " Labels 176 HiLink naturalLabel Label 177 HiLink naturalRefLabel Label 178 179 " Comments 180 HiLink naturalPComment Comment 181 HiLink naturalComment Comment 182 HiLink naturalTodo Todo 183 HiLink naturalCommentMark PreProc 184 185 HiLink naturalInclude Include 186 HiLink naturalSysVar Identifier 187 HiLink naturalLineNo LineNr 188 HiLink naturalLineRef Error 189 HiLink naturalSpecial Special 190 HiLink naturalComKey Todo 191 192 " illegal things 193 HiLink naturalRMKeyword Error 194 HiLink naturalLegalIdent Error 195 196 HiLink naturalType Type 197 HiLink naturalFunction Function 198 HiLink naturalObjName Function 199 200 delcommand HiLink 201endif 202 203let b:current_syntax = "natural" 204 205" vim:set ts=4 sw=4 noet ft=vim list: 206