xref: /vim-8.2.3635/runtime/syntax/natural.vim (revision 0fa313a7)
1" Vim syntax file
2"
3" Language:		NATURAL
4" Version:		2.0.26.17
5" Maintainer:	Marko Leipert <[email protected]>
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:
206