Merged from the latest developing branch.
[MacVim/jjgod.git] / runtime / syntax / natural.vim
blobf7f140f5880c87d64be1191eec7a8d0b6fabdd71
1 " Vim syntax file
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
9 " For version 5.x: Clear all syntax items
10 " For version 6.x: Quit when this syntax file was already loaded
11 if v:version < 600
12         syntax clear
13         set iskeyword+=-,*,#,+,_,/
14 elseif exists("b:current_syntax")
15         finish
16 else
17         setlocal iskeyword+=-,*,#,+,_,/
18 endif
20 " NATURAL is case insensitive
21 syntax case ignore
23 " preprocessor
24 syn keyword naturalInclude              include nextgroup=naturalObjName skipwhite
26 " define data
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
31 " loops
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
42 " conditionals
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
53 " program flow
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
58 " file operations
59 syn keyword naturalKeyword              update store get delete end transaction work once close
61 " other keywords
62 syn keyword naturalKeyword              first every of no record[s] found ignore immediate
63 syn keyword naturalKeyword              set settime key control stop terminate
65 " in-/output
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
70 " functions
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
76 " Subroutine name
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}\>"
83 " Labels
84 syn match       naturalLabel            "\<[+#a-z][-_#a-z0-9]*\."
85 syn match       naturalRef                      "\<[+#a-z][-_#a-z0-9]*\>\.\<[+#a-z][*]\=[-_#a-z0-9]*\>"
87 " System variables
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=+'+
105 " Type definition
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
114 " comments
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
123 " operators
124 syn keyword     naturalOperator         and or not eq ne gt lt ge le mask scan
126 " constants
127 syn keyword naturalBoolean              true false
129 syn match       naturalLineNo           "^\d\{4}"
131 " identifiers
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]*"
136 " parentheses
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
143 " folding
144 if v:version >= 600
145         set foldignore=*
146 endif
149 if 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
158         " Constants
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
175         " Labels
176         HiLink naturalLabel                     Label
177         HiLink naturalRefLabel          Label
179         " Comments
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
192         " illegal things
193         HiLink naturalRMKeyword         Error
194         HiLink naturalLegalIdent        Error
196         HiLink naturalType                      Type
197         HiLink naturalFunction          Function
198         HiLink naturalObjName           Function
200         delcommand HiLink
201 endif
203 let b:current_syntax = "natural"
205 " vim:set ts=4 sw=4 noet ft=vim list: