reva.vim (7591B)
1 " Vim syntax file 2 " Language: Reva Forth 3 " Version: 2011.2 4 " Last Change: 2019 Sep 27 5 " Maintainer: Ron Aaron <ron@ronware.org> 6 " URL: https://github.com/ronaaron/reva 7 " Filetypes: *.rf *.frt 8 " NOTE: You should also have the ftplugin/reva.vim file to set 'isk' 9 10 " quit when a syntax file was already loaded 11 if exists("b:current_syntax") 12 finish 13 endif 14 15 let s:cpo_save = &cpo 16 set cpo&vim 17 18 syn clear 19 20 " Synchronization method 21 syn sync ccomment 22 syn sync maxlines=100 23 24 25 syn case ignore 26 " Some special, non-FORTH keywords 27 "syn keyword revaTodo contained todo fixme bugbug todo: bugbug: note: 28 syn match revaTodo contained '\(todo\|fixme\|bugbug\|note\)[:]*' 29 syn match revaTodo contained 'copyright\(\s(c)\)\=\(\s[0-9]\{2,4}\)\=' 30 31 syn match revaHelpDesc '\S.*' contained 32 syn match revaHelpStuff '\<\(def\|stack\|ctx\|ver\|os\|related\):\s.*' 33 syn region revaHelpStuff start='\<desc:\>' end='^\S' contains=revaHelpDesc 34 syn region revaEOF start='\<|||\>' end='{$}' contains=revaHelpStuff 35 36 37 syn case match 38 " basic mathematical and logical operators 39 syn keyword revaoperators + - * / mod /mod negate abs min max umin umax 40 syn keyword revaoperators and or xor not invert 1+ 1- 41 syn keyword revaoperators m+ */ */mod m* um* m*/ um/mod fm/mod sm/rem 42 syn keyword revaoperators d+ d- dnegate dabs dmin dmax > < = >> << u< <> 43 44 45 " stack manipulations 46 syn keyword revastack drop nip dup over tuck swap rot -rot ?dup pick roll 47 syn keyword revastack 2drop 2nip 2dup 2over 2swap 2rot 3drop 48 syn keyword revastack >r r> r@ rdrop 49 " syn keyword revastack sp@ sp! rp@ rp! 50 51 " address operations 52 syn keyword revamemory @ ! +! c@ c! 2@ 2! align aligned allot allocate here free resize 53 syn keyword revaadrarith chars char+ cells cell+ cell cell- 2cell+ 2cell- 3cell+ 4cell+ 54 syn keyword revamemblks move fill 55 56 " conditionals 57 syn keyword revacond if else then =if >if <if <>if if0 ;; catch throw 58 59 " iterations 60 syn keyword revaloop while repeat until again 61 syn keyword revaloop do loop i j leave unloop skip more 62 63 " new words 64 syn match revaColonDef '\<noname:\|\<:\s+' contains=revaComment 65 syn keyword revaEndOfColonDef ; ;inline 66 syn keyword revadefine constant constant, variable create variable, 67 syn keyword revadefine user value to +to defer! defer@ defer is does> immediate 68 syn keyword revadefine compile literal ' ['] 69 70 " Built in words 71 com! -nargs=+ Builtin syn keyword revaBuiltin <args> 72 Builtin execute ahead interp bye >body here pad words make 73 Builtin accept close cr creat delete ekey emit fsize ioerr key? 74 Builtin mtime open/r open/rw read rename seek space spaces stat 75 Builtin tell type type_ write (seek) (argv) (save) 0; 0drop; 76 Builtin >class >lz >name >xt alias alias: appname argc asciiz, asciizl, 77 Builtin body> clamp depth disassemble findprev fnvhash getenv here, 78 Builtin iterate last! last@ later link lz> lzmax os parse/ peek 79 Builtin peek-n pop prior push put rp@ rpick save setenv slurp 80 Builtin stack-empty? stack-iterate stack-size stack: THROW_BADFUNC 81 Builtin THROW_BADLIB THROW_GENERIC used xt>size z, 82 Builtin +lplace +place -chop /char /string bounds c+lplace c+place 83 Builtin chop cmp cmpi count lc lcount lplace place quote rsplit search split 84 Builtin zcount zt \\char 85 Builtin chdir g32 k32 u32 getcwd getpid hinst osname stdin stdout 86 Builtin (-lib) (bye) (call) (else) (find) (func) (here) (if (lib) (s0) (s^) 87 Builtin (to~) (while) >in >rel ?literal appstart cold compiling? context? d0 default_class 88 Builtin defer? dict dolstr dostr find-word h0 if) interp isa onexit 89 Builtin onstartup pdoes pop>ebx prompt rel> rp0 s0 src srcstr state str0 then,> then> tib 90 Builtin tp vector vector! word? xt? .ver revaver revaver# && '' 'constant 'context 91 Builtin 'create 'defer 'does 'forth 'inline 'macro 'macront 'notail 'value 'variable 92 Builtin (.r) (context) (create) (header) (hide) (inline) (p.r) (words~) (xfind) 93 Builtin ++ -- , -2drop -2nip -link -swap . .2x .classes .contexts .funcs .libs .needs .r 94 Builtin .rs .x 00; 0do 0if 1, 2, 3, 2* 2/ 2constant 2variable 3dup 4dup ;then >base >defer 95 Builtin >rr ? ?do @execute @rem appdir argv as back base base! between chain cleanup-libs 96 Builtin cmove> context?? ctrl-c ctx>name data: defer: defer@def dictgone do_cr eleave 97 Builtin endcase endof eval exception exec false find func: header heapgone help help/ 98 Builtin hex# hide inline{ last lastxt lib libdir literal, makeexename mnotail ms ms@ 99 Builtin newclass noop nosavedict notail nul of off on p: padchar parse parseln 100 Builtin parsews rangeof rdepth remains reset reva revaused rol8 rr> scratch setclass sp 101 Builtin strof super> temp time&date true turnkey? undo vfunc: w! w@ 102 Builtin xchg xchg2 xfind xt>name xwords { {{ }} } _+ _1+ _1- pathsep case \|| 103 " p[ [''] [ ['] 104 105 106 " debugging 107 syn keyword revadebug .s dump see 108 109 " basic character operations 110 " syn keyword revaCharOps (.) CHAR EXPECT FIND WORD TYPE -TRAILING EMIT KEY 111 " syn keyword revaCharOps KEY? TIB CR 112 " syn match revaCharOps '\<char\s\S\s' 113 " syn match revaCharOps '\<\[char\]\s\S\s' 114 " syn region revaCharOps start=+."\s+ skip=+\\"+ end=+"+ 115 116 " char-number conversion 117 syn keyword revaconversion s>d >digit digit> >single >double >number >float 118 119 " contexts 120 syn keyword revavocs forth macro inline 121 syn keyword revavocs context: 122 syn match revavocs /\<\~[^~ ]*/ 123 syn match revavocs /[^~ ]*\~\>/ 124 125 " numbers 126 syn keyword revamath decimal hex base binary octal 127 syn match revainteger '\<-\=[0-9.]*[0-9.]\+\>' 128 " recognize hex and binary numbers, the '$' and '%' notation is for greva 129 syn match revainteger '\<\$\x*\x\+\>' " *1* --- dont't mess 130 syn match revainteger '\<\x*\d\x*\>' " *2* --- this order! 131 syn match revainteger '\<%[0-1]*[0-1]\+\>' 132 syn match revainteger "\<'.\>" 133 134 " Strings 135 " syn region revaString start=+\.\?\"+ end=+"+ end=+$+ 136 syn region revaString start=/"/ skip=/\\"/ end=/"/ 137 138 " Comments 139 syn region revaComment start='\\S\s' end='.*' contains=revaTodo 140 syn match revaComment '\.(\s[^)]\{-})' contains=revaTodo 141 syn region revaComment start='(\s' skip='\\)' end=')' contains=revaTodo 142 syn match revaComment '(\s[^\-]*\-\-[^\-]\{-})' contains=revaTodo 143 syn match revaComment '\<|\s.*$' contains=revaTodo 144 syn match revaColonDef '\<:m\?\s*[^ \t]\+\>' contains=revaComment 145 146 " Include files 147 syn match revaInclude '\<\(include\|needs\)\s\+\S\+' 148 149 150 " Define the default highlighting. 151 if !exists("did_reva_syntax_inits") 152 let did_reva_syntax_inits=1 153 " The default methods for highlighting. Can be overridden later. 154 hi def link revaEOF cIf0 155 hi def link revaHelpStuff special 156 hi def link revaHelpDesc Comment 157 hi def link revaTodo Todo 158 hi def link revaOperators Operator 159 hi def link revaMath Number 160 hi def link revaInteger Number 161 hi def link revaStack Special 162 hi def link revaFStack Special 163 hi def link revaSP Special 164 hi def link revaMemory Operator 165 hi def link revaAdrArith Function 166 hi def link revaMemBlks Function 167 hi def link revaCond Conditional 168 hi def link revaLoop Repeat 169 hi def link revaColonDef Define 170 hi def link revaEndOfColonDef Define 171 hi def link revaDefine Define 172 hi def link revaDebug Debug 173 hi def link revaCharOps Character 174 hi def link revaConversion String 175 hi def link revaForth Statement 176 hi def link revaVocs Statement 177 hi def link revaString String 178 hi def link revaComment Comment 179 hi def link revaClassDef Define 180 hi def link revaEndOfClassDef Define 181 hi def link revaObjectDef Define 182 hi def link revaEndOfObjectDef Define 183 hi def link revaInclude Include 184 hi def link revaBuiltin Keyword 185 endif 186 187 let b:current_syntax = "reva" 188 let &cpo = s:cpo_save 189 unlet s:cpo_save 190 191 " vim: ts=8:sw=4:nocindent:smartindent: