1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" 3071d4279SBram Moolenaar" Language: NATURAL 45dc6252dSBram Moolenaar" Version: 2.1.0.5 5e37d50a5SBram Moolenaar" Maintainer: Marko von Oppen <[email protected]> 65dc6252dSBram Moolenaar" Last Changed: 2012-02-05 18:50:43 7e37d50a5SBram Moolenaar" Support: http://www.von-oppen.com/ 8071d4279SBram Moolenaar 989bcfda6SBram Moolenaar" quit when a syntax file was already loaded 1089bcfda6SBram Moolenaarif exists("b:current_syntax") 11071d4279SBram Moolenaar finish 12071d4279SBram Moolenaarendif 1389bcfda6SBram Moolenaarsetlocal iskeyword+=-,*,#,+,_,/ 14071d4279SBram Moolenaar 155dc6252dSBram Moolenaarlet s:cpo_save = &cpo 165dc6252dSBram Moolenaarset cpo&vim 175dc6252dSBram Moolenaar 18071d4279SBram Moolenaar" NATURAL is case insensitive 19071d4279SBram Moolenaarsyntax case ignore 20071d4279SBram Moolenaar 21071d4279SBram Moolenaar" preprocessor 22071d4279SBram Moolenaarsyn keyword naturalInclude include nextgroup=naturalObjName skipwhite 23071d4279SBram Moolenaar 24071d4279SBram Moolenaar" define data 25071d4279SBram Moolenaarsyn keyword naturalKeyword define data end-define 26071d4279SBram Moolenaarsyn keyword naturalKeyword independent global parameter local redefine view 27071d4279SBram Moolenaarsyn keyword naturalKeyword const[ant] init initial 28071d4279SBram Moolenaar 29071d4279SBram Moolenaar" loops 30071d4279SBram Moolenaarsyn keyword naturalLoop read end-read end-work find end-find histogram end-histogram 31071d4279SBram Moolenaarsyn keyword naturalLoop end-all sort end-sort sorted descending ascending 32071d4279SBram Moolenaarsyn keyword naturalRepeat repeat end-repeat while until for step end-for 33071d4279SBram Moolenaarsyn keyword naturalKeyword in file with field starting from ending at thru by isn where 34071d4279SBram Moolenaarsyn keyword naturalError on error end-error 35071d4279SBram Moolenaarsyn keyword naturalKeyword accept reject end-enddata number unique retain as release 36071d4279SBram Moolenaarsyn keyword naturalKeyword start end-start break end-break physical page top sequence 37071d4279SBram Moolenaarsyn keyword naturalKeyword end-toppage end-endpage end-endfile before processing 38071d4279SBram Moolenaarsyn keyword naturalKeyword end-before 39071d4279SBram Moolenaar 40071d4279SBram Moolenaar" conditionals 41071d4279SBram Moolenaarsyn keyword naturalConditional if then else end-if end-norec 42071d4279SBram Moolenaarsyn keyword naturalConditional decide end-decide value when condition none any 43071d4279SBram Moolenaar 44071d4279SBram Moolenaar" assignment / calculation 45071d4279SBram Moolenaarsyn keyword naturalKeyword reset assign move left right justified compress to into edited 46071d4279SBram Moolenaarsyn keyword naturalKeyword add subtract multiply divide compute name 47e37d50a5SBram Moolenaarsyn keyword naturalKeyword all giving remainder rounded leaving space numeric 48071d4279SBram Moolenaarsyn keyword naturalKeyword examine full replace giving separate delimiter modified 49071d4279SBram Moolenaarsyn keyword naturalKeyword suspend identical suppress 50071d4279SBram Moolenaar 51071d4279SBram Moolenaar" program flow 52071d4279SBram Moolenaarsyn keyword naturalFlow callnat fetch return enter escape bottom top stack formatted 53071d4279SBram Moolenaarsyn keyword naturalFlow command call 54071d4279SBram Moolenaarsyn keyword naturalflow end-subroutine routine 55071d4279SBram Moolenaar 56071d4279SBram Moolenaar" file operations 57071d4279SBram Moolenaarsyn keyword naturalKeyword update store get delete end transaction work once close 58071d4279SBram Moolenaar 59071d4279SBram Moolenaar" other keywords 60071d4279SBram Moolenaarsyn keyword naturalKeyword first every of no record[s] found ignore immediate 61071d4279SBram Moolenaarsyn keyword naturalKeyword set settime key control stop terminate 62071d4279SBram Moolenaar 63071d4279SBram Moolenaar" in-/output 64e37d50a5SBram Moolenaarsyn keyword naturalKeyword write display input reinput notitle nohdr map newpage 65e37d50a5SBram Moolenaarsyn keyword naturalKeyword alarm text help eject index window base size 66071d4279SBram Moolenaarsyn keyword naturalKeyword format printer skip lines 67071d4279SBram Moolenaar 68071d4279SBram Moolenaar" functions 69071d4279SBram Moolenaarsyn keyword naturalKeyword abs atn cos exp frac int log sgn sin sqrt tan val old 70e37d50a5SBram Moolenaarsyn keyword naturalKeyword pos 71071d4279SBram Moolenaar 72071d4279SBram Moolenaar" report mode keywords 73071d4279SBram Moolenaarsyn keyword naturalRMKeyword same loop obtain indexed do doend 74071d4279SBram Moolenaar 75071d4279SBram Moolenaar" Subroutine name 76071d4279SBram Moolenaarsyn keyword naturalFlow perform subroutine nextgroup=naturalFunction skipwhite 77071d4279SBram Moolenaarsyn match naturalFunction "\<[a-z][-_a-z0-9]*\>" 78071d4279SBram Moolenaar 79071d4279SBram Moolenaarsyn keyword naturalFlow using nextgroup=naturalKeyword,naturalObjName skipwhite 80071d4279SBram Moolenaarsyn match naturalObjName "\<[a-z][-_a-z0-9]\{,7}\>" 81071d4279SBram Moolenaar 82071d4279SBram Moolenaar" Labels 83071d4279SBram Moolenaarsyn match naturalLabel "\<[+#a-z][-_#a-z0-9]*\." 84071d4279SBram Moolenaarsyn match naturalRef "\<[+#a-z][-_#a-z0-9]*\>\.\<[+#a-z][*]\=[-_#a-z0-9]*\>" 85071d4279SBram Moolenaar 86e37d50a5SBram Moolenaar" mark keyword special handling 87e37d50a5SBram Moolenaarsyn keyword naturalKeyword mark nextgroup=naturalMark skipwhite 88e37d50a5SBram Moolenaarsyn match naturalMark "\<\*[a-z][-_#.a-z0-9]*\>" 89e37d50a5SBram Moolenaar 90071d4279SBram Moolenaar" System variables 91071d4279SBram Moolenaarsyn match naturalSysVar "\<\*[a-z][-a-z0-9]*\>" 92071d4279SBram Moolenaar 93071d4279SBram Moolenaar"integer number, or floating point number without a dot. 94071d4279SBram Moolenaarsyn match naturalNumber "\<-\=\d\+\>" 95071d4279SBram Moolenaar"floating point number, with dot 96071d4279SBram Moolenaarsyn match naturalNumber "\<-\=\d\+\.\d\+\>" 97071d4279SBram Moolenaar"floating point number, starting with a dot 98071d4279SBram Moolenaarsyn match naturalNumber "\.\d\+" 99071d4279SBram Moolenaar 100071d4279SBram Moolenaar" Formats in write statement 101071d4279SBram Moolenaarsyn match naturalFormat "\<\d\+[TX]\>" 102071d4279SBram Moolenaar 103071d4279SBram Moolenaar" String and Character contstants 104071d4279SBram Moolenaarsyn match naturalString "H'\x\+'" 105071d4279SBram Moolenaarsyn region naturalString start=+"+ end=+"+ 106071d4279SBram Moolenaarsyn region naturalString start=+'+ end=+'+ 107071d4279SBram Moolenaar 108071d4279SBram Moolenaar" Type definition 109071d4279SBram Moolenaarsyn match naturalAttribute "\<[-a-z][a-z]=[-a-z0-9_\.,]\+\>" 110071d4279SBram Moolenaarsyn match naturalType contained "\<[ABINP]\d\+\(,\d\+\)\=\>" 111071d4279SBram Moolenaarsyn match naturalType contained "\<[CL]\>" 112071d4279SBram Moolenaar 113071d4279SBram Moolenaar" "TODO" / other comments 114071d4279SBram Moolenaarsyn keyword naturalTodo contained todo test 115071d4279SBram Moolenaarsyn match naturalCommentMark contained "[a-z][^ \t/:|]*\(\s[^ \t/:'"|]\+\)*:\s"he=e-1 116071d4279SBram Moolenaar 117071d4279SBram Moolenaar" comments 118071d4279SBram Moolenaarsyn region naturalComment start="/\*" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark 119e37d50a5SBram Moolenaarsyn region naturalComment start="^\*[ *]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark 120071d4279SBram Moolenaarsyn region naturalComment start="^\d\{4} \*[\ \*]"lc=5 end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark 121e37d50a5SBram Moolenaarsyn match naturalComment "^\*$" 122071d4279SBram Moolenaarsyn match naturalComment "^\d\{4} \*$"lc=5 123071d4279SBram Moolenaar" /* is legal syntax in parentheses e.g. "#ident(label./*)" 124071d4279SBram Moolenaarsyn region naturalPComment contained start="/\*\s*[^),]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark 125071d4279SBram Moolenaar 126071d4279SBram Moolenaar" operators 127e37d50a5SBram Moolenaarsyn keyword naturalOperator and or not eq ne gt lt ge le mask scan modified 128071d4279SBram Moolenaar 129071d4279SBram Moolenaar" constants 130071d4279SBram Moolenaarsyn keyword naturalBoolean true false 131071d4279SBram Moolenaarsyn match naturalLineNo "^\d\{4}" 132071d4279SBram Moolenaar 133071d4279SBram Moolenaar" identifiers 134071d4279SBram Moolenaarsyn match naturalIdent "\<[+#a-z][-_#a-z0-9]*\>[^\.']"me=e-1 135071d4279SBram Moolenaarsyn match naturalIdent "\<[+#a-z][-_#a-z0-9]*$" 136071d4279SBram Moolenaarsyn match naturalLegalIdent "[+#a-z][-_#a-z0-9]*/[-_#a-z0-9]*" 137071d4279SBram Moolenaar 138071d4279SBram Moolenaar" parentheses 139071d4279SBram Moolenaarsyn region naturalPar matchgroup=naturalParGui start="(" end=")" contains=naturalLabel,naturalRef,naturalOperator,@naturalConstant,naturalType,naturalSysVar,naturalPar,naturalLineNo,naturalPComment 140071d4279SBram Moolenaarsyn match naturalLineRef "(\d\{4})" 141071d4279SBram Moolenaar 142071d4279SBram Moolenaar" build syntax groups 143071d4279SBram Moolenaarsyntax cluster naturalConstant contains=naturalString,naturalNumber,naturalAttribute,naturalBoolean 144071d4279SBram Moolenaar 145071d4279SBram Moolenaar" folding 146071d4279SBram Moolenaarif v:version >= 600 147071d4279SBram Moolenaar set foldignore=* 148071d4279SBram Moolenaarendif 149071d4279SBram Moolenaar 150071d4279SBram Moolenaar 151071d4279SBram Moolenaar" The default methods for highlighting. Can be overridden later 152071d4279SBram Moolenaar 153071d4279SBram Moolenaar" Constants 154*f37506f6SBram Moolenaarhi def link naturalFormat Constant 155*f37506f6SBram Moolenaarhi def link naturalAttribute Constant 156*f37506f6SBram Moolenaarhi def link naturalNumber Number 157*f37506f6SBram Moolenaarhi def link naturalString String 158*f37506f6SBram Moolenaarhi def link naturalBoolean Boolean 159071d4279SBram Moolenaar 160071d4279SBram Moolenaar" All kinds of keywords 161*f37506f6SBram Moolenaarhi def link naturalConditional Conditional 162*f37506f6SBram Moolenaarhi def link naturalRepeat Repeat 163*f37506f6SBram Moolenaarhi def link naturalLoop Repeat 164*f37506f6SBram Moolenaarhi def link naturalFlow Keyword 165*f37506f6SBram Moolenaarhi def link naturalError Keyword 166*f37506f6SBram Moolenaarhi def link naturalKeyword Keyword 167*f37506f6SBram Moolenaarhi def link naturalOperator Operator 168*f37506f6SBram Moolenaarhi def link naturalParGui Operator 169071d4279SBram Moolenaar 170071d4279SBram Moolenaar" Labels 171*f37506f6SBram Moolenaarhi def link naturalLabel Label 172*f37506f6SBram Moolenaarhi def link naturalRefLabel Label 173071d4279SBram Moolenaar 174071d4279SBram Moolenaar" Comments 175*f37506f6SBram Moolenaarhi def link naturalPComment Comment 176*f37506f6SBram Moolenaarhi def link naturalComment Comment 177*f37506f6SBram Moolenaarhi def link naturalTodo Todo 178*f37506f6SBram Moolenaarhi def link naturalCommentMark PreProc 179071d4279SBram Moolenaar 180*f37506f6SBram Moolenaarhi def link naturalInclude Include 181*f37506f6SBram Moolenaarhi def link naturalSysVar Identifier 182*f37506f6SBram Moolenaarhi def link naturalLineNo LineNr 183*f37506f6SBram Moolenaarhi def link naturalLineRef Error 184*f37506f6SBram Moolenaarhi def link naturalSpecial Special 185*f37506f6SBram Moolenaarhi def link naturalComKey Todo 186071d4279SBram Moolenaar 187071d4279SBram Moolenaar" illegal things 188*f37506f6SBram Moolenaarhi def link naturalRMKeyword Error 189*f37506f6SBram Moolenaarhi def link naturalLegalIdent Error 190071d4279SBram Moolenaar 191*f37506f6SBram Moolenaarhi def link naturalType Type 192*f37506f6SBram Moolenaarhi def link naturalFunction Function 193*f37506f6SBram Moolenaarhi def link naturalObjName PreProc 194071d4279SBram Moolenaar 195071d4279SBram Moolenaar 196071d4279SBram Moolenaarlet b:current_syntax = "natural" 197071d4279SBram Moolenaar 1985dc6252dSBram Moolenaarlet &cpo = s:cpo_save 1995dc6252dSBram Moolenaarunlet s:cpo_save 2005dc6252dSBram Moolenaar 2015dc6252dSBram Moolenaar" vim:set ts=8 sw=8 noet ft=vim list: 202