xref: /vim-8.2.3635/runtime/syntax/natural.vim (revision f37506f6)
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