5 " Maintainer: Marko Leipert <vim@mleipert.de>
6 " Last Changed: 2002-02-28 09:50:36
7 " Support: http://www.winconsole.de/vim/syntax.html
9 " For version 5.x: Clear all syntax items
10 " For version 6.x: Quit when this syntax file was already loaded
13 set iskeyword+=-,*,#,+,_,/
14 elseif exists("b:current_syntax")
17 setlocal iskeyword+=-,*,#,+,_,/
20 " NATURAL is case insensitive
24 syn keyword naturalInclude include nextgroup=naturalObjName skipwhite
27 syn keyword naturalKeyword define data end-define
28 syn keyword naturalKeyword independent global parameter local redefine view
29 syn keyword naturalKeyword const[ant] init initial
32 syn keyword naturalLoop read end-read end-work find end-find histogram end-histogram
33 syn keyword naturalLoop end-all sort end-sort sorted descending ascending
34 syn keyword naturalRepeat repeat end-repeat while until for step end-for
35 syn keyword naturalKeyword in file with field starting from ending at thru by isn where
36 syn keyword naturalError on error end-error
37 syn keyword naturalKeyword accept reject end-enddata number unique retain as release
38 syn keyword naturalKeyword start end-start break end-break physical page top sequence
39 syn keyword naturalKeyword end-toppage end-endpage end-endfile before processing
40 syn keyword naturalKeyword end-before
43 syn keyword naturalConditional if then else end-if end-norec
44 syn keyword naturalConditional decide end-decide value when condition none any
46 " assignment / calculation
47 syn keyword naturalKeyword reset assign move left right justified compress to into edited
48 syn keyword naturalKeyword add subtract multiply divide compute name
49 syn keyword naturalKeyword all giving remainder rounded leaving space
50 syn keyword naturalKeyword examine full replace giving separate delimiter modified
51 syn keyword naturalKeyword suspend identical suppress
54 syn keyword naturalFlow callnat fetch return enter escape bottom top stack formatted
55 syn keyword naturalFlow command call
56 syn keyword naturalflow end-subroutine routine
59 syn keyword naturalKeyword update store get delete end transaction work once close
62 syn keyword naturalKeyword first every of no record[s] found ignore immediate
63 syn keyword naturalKeyword set settime key control stop terminate
66 syn keyword naturalKeyword write display input reinput notitle nohdr map newpage mark
67 syn keyword naturalKeyword alarm text help eject index
68 syn keyword naturalKeyword format printer skip lines
71 syn keyword naturalKeyword abs atn cos exp frac int log sgn sin sqrt tan val old
73 " report mode keywords
74 syn keyword naturalRMKeyword same loop obtain indexed do doend
77 syn keyword naturalFlow perform subroutine nextgroup=naturalFunction skipwhite
78 syn match naturalFunction "\<[a-z][-_a-z0-9]*\>"
80 syn keyword naturalFlow using nextgroup=naturalKeyword,naturalObjName skipwhite
81 syn match naturalObjName "\<[a-z][-_a-z0-9]\{,7}\>"
84 syn match naturalLabel "\<[+#a-z][-_#a-z0-9]*\."
85 syn match naturalRef "\<[+#a-z][-_#a-z0-9]*\>\.\<[+#a-z][*]\=[-_#a-z0-9]*\>"
88 syn match naturalSysVar "\<\*[a-z][-a-z0-9]*\>"
90 "integer number, or floating point number without a dot.
91 syn match naturalNumber "\<-\=\d\+\>"
92 "floating point number, with dot
93 syn match naturalNumber "\<-\=\d\+\.\d\+\>"
94 "floating point number, starting with a dot
95 syn match naturalNumber "\.\d\+"
97 " Formats in write statement
98 syn match naturalFormat "\<\d\+[TX]\>"
100 " String and Character contstants
101 syn match naturalString "H'\x\+'"
102 syn region naturalString start=+"+ end=+"+
103 syn region naturalString start=+'+ end=+'+
106 syn match naturalAttribute "\<[-a-z][a-z]=[-a-z0-9_\.,]\+\>"
107 syn match naturalType contained "\<[ABINP]\d\+\(,\d\+\)\=\>"
108 syn match naturalType contained "\<[CL]\>"
110 " "TODO" / other comments
111 syn keyword naturalTodo contained todo test
112 syn match naturalCommentMark contained "[a-z][^ \t/:|]*\(\s[^ \t/:'"|]\+\)*:\s"he=e-1
115 syn region naturalComment start="/\*" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
116 syn region naturalComment start="^\*[\ \*]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
117 syn region naturalComment start="^\d\{4} \*[\ \*]"lc=5 end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
118 syn match naturalComment "^*$"
119 syn match naturalComment "^\d\{4} \*$"lc=5
120 " /* is legal syntax in parentheses e.g. "#ident(label./*)"
121 syn region naturalPComment contained start="/\*\s*[^),]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
124 syn keyword naturalOperator and or not eq ne gt lt ge le mask scan
127 syn keyword naturalBoolean true false
129 syn match naturalLineNo "^\d\{4}"
132 syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*\>[^\.']"me=e-1
133 syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*$"
134 syn match naturalLegalIdent "[+#a-z][-_#a-z0-9]*/[-_#a-z0-9]*"
137 syn region naturalPar matchgroup=naturalParGui start="(" end=")" contains=naturalLabel,naturalRef,naturalOperator,@naturalConstant,naturalType,naturalSysVar,naturalPar,naturalLineNo,naturalPComment
138 syn match naturalLineRef "(\d\{4})"
140 " build syntax groups
141 syntax cluster naturalConstant contains=naturalString,naturalNumber,naturalAttribute,naturalBoolean
149 if v:version >= 508 || !exists("did_natural_syntax_inits")
151 let did_natural_syntax_inits = 1
152 command -nargs=+ HiLink hi link <args>
154 command -nargs=+ HiLink hi def link <args>
156 " The default methods for highlighting. Can be overridden later
159 HiLink naturalFormat Constant
160 HiLink naturalAttribute Constant
161 HiLink naturalNumber Number
162 HiLink naturalString String
163 HiLink naturalBoolean Boolean
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
176 HiLink naturalLabel Label
177 HiLink naturalRefLabel Label
180 HiLink naturalPComment Comment
181 HiLink naturalComment Comment
182 HiLink naturalTodo Todo
183 HiLink naturalCommentMark PreProc
185 HiLink naturalInclude Include
186 HiLink naturalSysVar Identifier
187 HiLink naturalLineNo LineNr
188 HiLink naturalLineRef Error
189 HiLink naturalSpecial Special
190 HiLink naturalComKey Todo
193 HiLink naturalRMKeyword Error
194 HiLink naturalLegalIdent Error
196 HiLink naturalType Type
197 HiLink naturalFunction Function
198 HiLink naturalObjName Function
203 let b:current_syntax = "natural"
205 " vim:set ts=4 sw=4 noet ft=vim list: