blob: f7f140f5880c87d64be1191eec7a8d0b6fabdd71 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2"
3" Language: NATURAL
4" Version: 2.0.26.17
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
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: