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