1" Vim syntax file 2" 3" Language: NATURAL 4" Version: 2.1.0.3 5" Maintainer: Marko von Oppen <[email protected]> 6" Last Changed: 2008-07-29 01:40:52 7" Support: http://www.von-oppen.com/ 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 numeric 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 67syn keyword naturalKeyword alarm text help eject index window base size 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 72syn keyword naturalKeyword pos 73 74" report mode keywords 75syn keyword naturalRMKeyword same loop obtain indexed do doend 76 77" Subroutine name 78syn keyword naturalFlow perform subroutine nextgroup=naturalFunction skipwhite 79syn match naturalFunction "\<[a-z][-_a-z0-9]*\>" 80 81syn keyword naturalFlow using nextgroup=naturalKeyword,naturalObjName skipwhite 82syn match naturalObjName "\<[a-z][-_a-z0-9]\{,7}\>" 83 84" Labels 85syn match naturalLabel "\<[+#a-z][-_#a-z0-9]*\." 86syn match naturalRef "\<[+#a-z][-_#a-z0-9]*\>\.\<[+#a-z][*]\=[-_#a-z0-9]*\>" 87 88" mark keyword special handling 89syn keyword naturalKeyword mark nextgroup=naturalMark skipwhite 90syn match naturalMark "\<\*[a-z][-_#.a-z0-9]*\>" 91 92" System variables 93syn match naturalSysVar "\<\*[a-z][-a-z0-9]*\>" 94 95"integer number, or floating point number without a dot. 96syn match naturalNumber "\<-\=\d\+\>" 97"floating point number, with dot 98syn match naturalNumber "\<-\=\d\+\.\d\+\>" 99"floating point number, starting with a dot 100syn match naturalNumber "\.\d\+" 101 102" Formats in write statement 103syn match naturalFormat "\<\d\+[TX]\>" 104 105" String and Character contstants 106syn match naturalString "H'\x\+'" 107syn region naturalString start=+"+ end=+"+ 108syn region naturalString start=+'+ end=+'+ 109 110" Type definition 111syn match naturalAttribute "\<[-a-z][a-z]=[-a-z0-9_\.,]\+\>" 112syn match naturalType contained "\<[ABINP]\d\+\(,\d\+\)\=\>" 113syn match naturalType contained "\<[CL]\>" 114 115" "TODO" / other comments 116syn keyword naturalTodo contained todo test 117syn match naturalCommentMark contained "[a-z][^ \t/:|]*\(\s[^ \t/:'"|]\+\)*:\s"he=e-1 118 119" comments 120syn region naturalComment start="/\*" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark 121syn region naturalComment start="^\*[ *]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark 122syn region naturalComment start="^\d\{4} \*[\ \*]"lc=5 end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark 123syn match naturalComment "^\*$" 124syn match naturalComment "^\d\{4} \*$"lc=5 125" /* is legal syntax in parentheses e.g. "#ident(label./*)" 126syn region naturalPComment contained start="/\*\s*[^),]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark 127 128" operators 129syn keyword naturalOperator and or not eq ne gt lt ge le mask scan modified 130 131" constants 132syn keyword naturalBoolean true false 133syn match naturalLineNo "^\d\{4}" 134 135" identifiers 136syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*\>[^\.']"me=e-1 137syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*$" 138syn match naturalLegalIdent "[+#a-z][-_#a-z0-9]*/[-_#a-z0-9]*" 139 140" parentheses 141syn region naturalPar matchgroup=naturalParGui start="(" end=")" contains=naturalLabel,naturalRef,naturalOperator,@naturalConstant,naturalType,naturalSysVar,naturalPar,naturalLineNo,naturalPComment 142syn match naturalLineRef "(\d\{4})" 143 144" build syntax groups 145syntax cluster naturalConstant contains=naturalString,naturalNumber,naturalAttribute,naturalBoolean 146 147" folding 148if v:version >= 600 149 set foldignore=* 150endif 151 152 153if v:version >= 508 || !exists("did_natural_syntax_inits") 154 if v:version < 508 155 let did_natural_syntax_inits = 1 156 command -nargs=+ HiLink hi link <args> 157 else 158 command -nargs=+ HiLink hi def link <args> 159 endif 160 " The default methods for highlighting. Can be overridden later 161 162 " Constants 163 HiLink naturalFormat Constant 164 HiLink naturalAttribute Constant 165 HiLink naturalNumber Number 166 HiLink naturalString String 167 HiLink naturalBoolean Boolean 168 169 " All kinds of keywords 170 HiLink naturalConditional Conditional 171 HiLink naturalRepeat Repeat 172 HiLink naturalLoop Repeat 173 HiLink naturalFlow Keyword 174 HiLink naturalError Keyword 175 HiLink naturalKeyword Keyword 176 HiLink naturalOperator Operator 177 HiLink naturalParGui Operator 178 179 " Labels 180 HiLink naturalLabel Label 181 HiLink naturalRefLabel Label 182 183 " Comments 184 HiLink naturalPComment Comment 185 HiLink naturalComment Comment 186 HiLink naturalTodo Todo 187 HiLink naturalCommentMark PreProc 188 189 HiLink naturalInclude Include 190 HiLink naturalSysVar Identifier 191 HiLink naturalLineNo LineNr 192 HiLink naturalLineRef Error 193 HiLink naturalSpecial Special 194 HiLink naturalComKey Todo 195 196 " illegal things 197 HiLink naturalRMKeyword Error 198 HiLink naturalLegalIdent Error 199 200 HiLink naturalType Type 201 HiLink naturalFunction Function 202 HiLink naturalObjName PreProc 203 204 delcommand HiLink 205endif 206 207let b:current_syntax = "natural" 208 209" vim:set ts=8 sw=8 noet ft=vim: 210