diff options
Diffstat (limited to 'runtime/syntax/natural.vim')
-rw-r--r-- | runtime/syntax/natural.vim | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/runtime/syntax/natural.vim b/runtime/syntax/natural.vim new file mode 100644 index 0000000..be529f2 --- /dev/null +++ b/runtime/syntax/natural.vim @@ -0,0 +1,201 @@ +" Vim syntax file +" +" Language: NATURAL +" Version: 2.1.0.5 +" Maintainer: Marko von Oppen <marko@von-oppen.com> +" Last Changed: 2012-02-05 18:50:43 +" Support: http://www.von-oppen.com/ + +" quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif +setlocal iskeyword+=-,*,#,+,_,/ + +let s:cpo_save = &cpo +set cpo&vim + +" NATURAL is case insensitive +syntax case ignore + +" preprocessor +syn keyword naturalInclude include nextgroup=naturalObjName skipwhite + +" define data +syn keyword naturalKeyword define data end-define +syn keyword naturalKeyword independent global parameter local redefine view +syn keyword naturalKeyword const[ant] init initial + +" loops +syn keyword naturalLoop read end-read end-work find end-find histogram end-histogram +syn keyword naturalLoop end-all sort end-sort sorted descending ascending +syn keyword naturalRepeat repeat end-repeat while until for step end-for +syn keyword naturalKeyword in file with field starting from ending at thru by isn where +syn keyword naturalError on error end-error +syn keyword naturalKeyword accept reject end-enddata number unique retain as release +syn keyword naturalKeyword start end-start break end-break physical page top sequence +syn keyword naturalKeyword end-toppage end-endpage end-endfile before processing +syn keyword naturalKeyword end-before + +" conditionals +syn keyword naturalConditional if then else end-if end-norec +syn keyword naturalConditional decide end-decide value when condition none any + +" assignment / calculation +syn keyword naturalKeyword reset assign move left right justified compress to into edited +syn keyword naturalKeyword add subtract multiply divide compute name +syn keyword naturalKeyword all giving remainder rounded leaving space numeric +syn keyword naturalKeyword examine full replace giving separate delimiter modified +syn keyword naturalKeyword suspend identical suppress + +" program flow +syn keyword naturalFlow callnat fetch return enter escape bottom top stack formatted +syn keyword naturalFlow command call +syn keyword naturalflow end-subroutine routine + +" file operations +syn keyword naturalKeyword update store get delete end transaction work once close + +" other keywords +syn keyword naturalKeyword first every of no record[s] found ignore immediate +syn keyword naturalKeyword set settime key control stop terminate + +" in-/output +syn keyword naturalKeyword write display input reinput notitle nohdr map newpage +syn keyword naturalKeyword alarm text help eject index window base size +syn keyword naturalKeyword format printer skip lines + +" functions +syn keyword naturalKeyword abs atn cos exp frac int log sgn sin sqrt tan val old +syn keyword naturalKeyword pos + +" report mode keywords +syn keyword naturalRMKeyword same loop obtain indexed do doend + +" Subroutine name +syn keyword naturalFlow perform subroutine nextgroup=naturalFunction skipwhite +syn match naturalFunction "\<[a-z][-_a-z0-9]*\>" + +syn keyword naturalFlow using nextgroup=naturalKeyword,naturalObjName skipwhite +syn match naturalObjName "\<[a-z][-_a-z0-9]\{,7}\>" + +" Labels +syn match naturalLabel "\<[+#a-z][-_#a-z0-9]*\." +syn match naturalRef "\<[+#a-z][-_#a-z0-9]*\>\.\<[+#a-z][*]\=[-_#a-z0-9]*\>" + +" mark keyword special handling +syn keyword naturalKeyword mark nextgroup=naturalMark skipwhite +syn match naturalMark "\<\*[a-z][-_#.a-z0-9]*\>" + +" System variables +syn match naturalSysVar "\<\*[a-z][-a-z0-9]*\>" + +"integer number, or floating point number without a dot. +syn match naturalNumber "\<-\=\d\+\>" +"floating point number, with dot +syn match naturalNumber "\<-\=\d\+\.\d\+\>" +"floating point number, starting with a dot +syn match naturalNumber "\.\d\+" + +" Formats in write statement +syn match naturalFormat "\<\d\+[TX]\>" + +" String and Character contstants +syn match naturalString "H'\x\+'" +syn region naturalString start=+"+ end=+"+ +syn region naturalString start=+'+ end=+'+ + +" Type definition +syn match naturalAttribute "\<[-a-z][a-z]=[-a-z0-9_\.,]\+\>" +syn match naturalType contained "\<[ABINP]\d\+\(,\d\+\)\=\>" +syn match naturalType contained "\<[CL]\>" + +" "TODO" / other comments +syn keyword naturalTodo contained todo test +syn match naturalCommentMark contained "[a-z][^ \t/:|]*\(\s[^ \t/:'"|]\+\)*:\s"he=e-1 + +" comments +syn region naturalComment start="/\*" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark +syn region naturalComment start="^\*[ *]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark +syn region naturalComment start="^\d\{4} \*[\ \*]"lc=5 end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark +syn match naturalComment "^\*$" +syn match naturalComment "^\d\{4} \*$"lc=5 +" /* is legal syntax in parentheses e.g. "#ident(label./*)" +syn region naturalPComment contained start="/\*\s*[^),]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark + +" operators +syn keyword naturalOperator and or not eq ne gt lt ge le mask scan modified + +" constants +syn keyword naturalBoolean true false +syn match naturalLineNo "^\d\{4}" + +" identifiers +syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*\>[^\.']"me=e-1 +syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*$" +syn match naturalLegalIdent "[+#a-z][-_#a-z0-9]*/[-_#a-z0-9]*" + +" parentheses +syn region naturalPar matchgroup=naturalParGui start="(" end=")" contains=naturalLabel,naturalRef,naturalOperator,@naturalConstant,naturalType,naturalSysVar,naturalPar,naturalLineNo,naturalPComment +syn match naturalLineRef "(\d\{4})" + +" build syntax groups +syntax cluster naturalConstant contains=naturalString,naturalNumber,naturalAttribute,naturalBoolean + +" folding +if v:version >= 600 + set foldignore=* +endif + + +" The default methods for highlighting. Can be overridden later + +" Constants +hi def link naturalFormat Constant +hi def link naturalAttribute Constant +hi def link naturalNumber Number +hi def link naturalString String +hi def link naturalBoolean Boolean + +" All kinds of keywords +hi def link naturalConditional Conditional +hi def link naturalRepeat Repeat +hi def link naturalLoop Repeat +hi def link naturalFlow Keyword +hi def link naturalError Keyword +hi def link naturalKeyword Keyword +hi def link naturalOperator Operator +hi def link naturalParGui Operator + +" Labels +hi def link naturalLabel Label +hi def link naturalRefLabel Label + +" Comments +hi def link naturalPComment Comment +hi def link naturalComment Comment +hi def link naturalTodo Todo +hi def link naturalCommentMark PreProc + +hi def link naturalInclude Include +hi def link naturalSysVar Identifier +hi def link naturalLineNo LineNr +hi def link naturalLineRef Error +hi def link naturalSpecial Special +hi def link naturalComKey Todo + +" illegal things +hi def link naturalRMKeyword Error +hi def link naturalLegalIdent Error + +hi def link naturalType Type +hi def link naturalFunction Function +hi def link naturalObjName PreProc + + +let b:current_syntax = "natural" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim:set ts=8 sw=8 noet ft=vim list: |