123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- " 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:
|