Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | " Vim syntax file |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 2 | " Language: Forth |
| 3 | " Maintainer: Johan Kotlinski <kotlinski@gmail.com> |
| 4 | " Previous Maintainer: Christian V. J. Brüssow <cvjb@cvjb.de> |
| 5 | " Last Change: 2023 Aug 13 |
| 6 | " Filenames: *.f,*.fs,*.ft,*.fth,*.4th |
| 7 | " URL: https://github.com/jkotlinski/forth.vim |
| 8 | |
| 9 | " Supports the Forth-2012 Standard. |
| 10 | " |
| 11 | " Removed words from the earlier Forth-79, Forth-83 and Forth-94 standards are |
| 12 | " also included. |
| 13 | " |
| 14 | " These have been organised according to the version in which they were |
| 15 | " initially included and the version in which they were removed (obsolescent |
| 16 | " status is ignored). Words with "experimental" or "uncontrolled" status are |
| 17 | " not included unless they were later standardised. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 18 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 19 | " quit when a syntax file was already loaded |
| 20 | if exists("b:current_syntax") |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 21 | finish |
| 22 | endif |
| 23 | |
Bram Moolenaar | 6ee8d89 | 2012-01-10 14:55:01 +0100 | [diff] [blame] | 24 | let s:cpo_save = &cpo |
| 25 | set cpo&vim |
| 26 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 27 | " Synchronization method |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 28 | exe "syn sync minlines=" .. get(g:, "forth_minlines", 50) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 29 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 30 | syn case ignore |
| 31 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 32 | " Characters allowed in keywords |
Bram Moolenaar | e37d50a | 2008-08-06 17:06:04 +0000 | [diff] [blame] | 33 | " I don't know if 128-255 are allowed in ANS-FORTH |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 34 | syn iskeyword 33-126,128-255 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 35 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 36 | " Space errors {{{1 |
Bram Moolenaar | 3577c6f | 2008-06-24 21:16:56 +0000 | [diff] [blame] | 37 | " when wanted, highlight trailing white space |
| 38 | if exists("forth_space_errors") |
| 39 | if !exists("forth_no_trail_space_error") |
| 40 | syn match forthSpaceError display excludenl "\s\+$" |
| 41 | endif |
| 42 | if !exists("forth_no_tab_space_error") |
| 43 | syn match forthSpaceError display " \+\t"me=e-1 |
| 44 | endif |
| 45 | endif |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 46 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 47 | " Core words {{{1 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 48 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 49 | " basic mathematical and logical operators {{{2 |
| 50 | syn keyword forthOperators * */ */MOD + - / /MOD 0< 0= 1+ 1- 2* 2/ < = > ABS |
| 51 | syn keyword forthOperators AND FM/MOD INVERT LSHIFT M* MAX MIN MOD NEGATE OR |
| 52 | syn keyword forthOperators RSHIFT SM/REM U< UM* UM/MOD XOR |
| 53 | " extension words |
| 54 | syn keyword forthOperators 0<> 0> <> U> WITHIN |
| 55 | " Forth-79 |
| 56 | syn keyword forthOperators U* U/ U/MOD |
| 57 | " Forth-79, Forth-83 |
| 58 | syn keyword forthOperators NOT |
| 59 | " Forth-83 |
| 60 | syn keyword forthOperators 2+ 2- |
Bram Moolenaar | 25a6e8a | 2018-03-30 12:27:32 +0200 | [diff] [blame] | 61 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 62 | " non-standard basic mathematical and logical operators |
| 63 | syn keyword forthOperators 0<= 0>= 8* <= >= ?DNEGATE ?NEGATE U<= U>= UNDER+ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 64 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 65 | " various words that take an input and do something with it {{{2 |
| 66 | syn keyword forthFunction . U. |
| 67 | " extension words |
| 68 | syn keyword forthFunction .R U.R |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 69 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 70 | " stack manipulations {{{2 |
| 71 | syn keyword forthStack 2DROP 2DUP 2OVER 2SWAP >R ?DUP DROP DUP OVER R> R@ ROT |
| 72 | syn keyword forthStack SWAP |
| 73 | " extension words |
| 74 | syn keyword forthStack NIP PICK ROLL TUCK |
| 75 | syn keyword forthRStack 2>R 2R> 2R@ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 76 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 77 | " non-standard stack manipulations |
| 78 | syn keyword forthStack -ROT 3DROP 3DUP 4-ROT 4DROP 4DUP 4ROT 4SWAP 4TUCK |
| 79 | syn keyword forthStack 5DROP 5DUP 8DROP 8DUP 8SWAP |
| 80 | syn keyword forthRStack 4>R 4R> 4R@ 4RDROP RDROP |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 81 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 82 | " stack pointer manipulations {{{2 |
| 83 | syn keyword forthSP DEPTH |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 84 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 85 | " non-standard stack pointer manipulations |
| 86 | syn keyword forthSP FP! FP@ LP! LP@ RP! RP@ SP! SP@ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 87 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 88 | " address operations {{{2 |
| 89 | syn keyword forthMemory ! +! 2! 2@ @ C! C@ |
| 90 | syn keyword forthAdrArith ALIGN ALIGNED ALLOT CELL+ CELLS CHAR+ CHARS |
| 91 | syn keyword forthMemBlks FILL MOVE |
| 92 | " extension words |
| 93 | syn keyword forthMemBlks ERASE UNUSED |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 94 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 95 | " non-standard address operations |
| 96 | syn keyword forthAdrArith ADDRESS-UNIT-BITS CELL CFALIGN CFALIGNED FLOAT |
| 97 | syn keyword forthAdrArith MAXALIGN MAXALIGNED |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 98 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 99 | " conditionals {{{2 |
| 100 | syn keyword forthCond ELSE IF THEN |
| 101 | " extension words |
| 102 | syn keyword forthCond CASE ENDCASE ENDOF OF |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 103 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 104 | " non-standard conditionals |
| 105 | syn keyword forthCond ?DUP-0=-IF ?DUP-IF ENDIF |
| 106 | |
| 107 | " iterations {{{2 |
| 108 | syn keyword forthLoop +LOOP BEGIN DO EXIT I J LEAVE LOOP RECURSE REPEAT UNLOOP |
| 109 | syn keyword forthLoop UNTIL WHILE |
| 110 | " extension words |
| 111 | syn keyword forthLoop ?DO AGAIN |
| 112 | |
| 113 | " non-standard iterations |
| 114 | syn keyword forthLoop +DO -DO -LOOP ?LEAVE DONE FOR K NEXT U+DO U-DO |
| 115 | |
| 116 | " new words {{{2 |
| 117 | syn match forthColonDef "\<:\s*[^ \t]\+\>" |
| 118 | syn keyword forthEndOfColonDef ; |
| 119 | syn keyword forthDefine ' , C, CONSTANT CREATE DOES> EXECUTE IMMEDIATE LITERAL |
| 120 | syn keyword forthDefine POSTPONE STATE VARIABLE ] |
| 121 | syn match forthDefine "\<\[']\>" |
| 122 | syn match forthDefine "\<\[\>" |
| 123 | " extension words |
| 124 | syn keyword forthColonDef :NONAME |
| 125 | syn keyword forthDefine BUFFER: COMPILE, DEFER IS MARKER TO VALUE |
| 126 | syn match forthDefine "\<\[COMPILE]\>" |
| 127 | " Forth-79, Forth-83 |
| 128 | syn keyword forthDefine COMPILE |
| 129 | |
| 130 | " non-standard new words |
| 131 | syn match forthClassDef "\<:CLASS\s*[^ \t]\+\>" |
| 132 | syn keyword forthEndOfClassDef ;CLASS |
| 133 | syn match forthObjectDef "\<:OBJECT\s*[^ \t]\+\>" |
| 134 | syn keyword forthEndOfObjectDef ;OBJECT |
| 135 | syn match forthColonDef "\<:M\s*[^ \t]\+\>" |
| 136 | syn keyword forthEndOfColonDef ;M |
| 137 | syn keyword forthDefine 2, <BUILDS <COMPILATION <INTERPRETATION C; COMP' |
| 138 | syn keyword forthDefine COMPILATION> COMPILE-ONLY CREATE-INTERPRET/COMPILE |
| 139 | syn keyword forthDefine CVARIABLE F, FIND-NAME INTERPRET INTERPRETATION> |
| 140 | syn keyword forthDefine LASTXT NAME>COMP NAME>INT NAME?INT POSTPONE, RESTRICT |
| 141 | syn keyword forthDefine USER |
| 142 | syn match forthDefine "\<\[COMP']\>" |
| 143 | |
| 144 | " basic character operations {{{2 |
| 145 | syn keyword forthCharOps BL COUNT CR EMIT FIND KEY SPACE SPACES TYPE WORD |
| 146 | " recognize 'char (' or '[CHAR] (' correctly, so it doesn't |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 147 | " highlight everything after the paren as a comment till a closing ')' |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 148 | syn match forthCharOps '\<CHAR\s\S\s' |
| 149 | syn match forthCharOps '\<\[CHAR]\s\S\s' |
| 150 | " Forth-83, Forth-94 |
| 151 | syn keyword forthCharOps EXPECT #TIB TIB |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 152 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 153 | " non-standard basic character operations |
| 154 | syn keyword forthCharOps (.) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 155 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 156 | " char-number conversion {{{2 |
| 157 | syn keyword forthConversion # #> #S <# >NUMBER HOLD S>D SIGN |
| 158 | " extension words |
| 159 | syn keyword forthConversion HOLDS |
| 160 | " Forth-79, Forth-83, Forth-93 |
| 161 | syn keyword forthConversion CONVERT |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 162 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 163 | " non-standard char-number conversion |
| 164 | syn keyword forthConversion #>> (NUMBER) (NUMBER?) <<# DIGIT DPL HLD NUMBER |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 165 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 166 | " interpreter, wordbook, compiler {{{2 |
| 167 | syn keyword forthForth >BODY >IN ACCEPT ENVIRONMENT? EVALUATE HERE QUIT SOURCE |
| 168 | " extension words |
| 169 | syn keyword forthForth ACTION-OF DEFER! DEFER@ PAD PARSE PARSE-NAME REFILL |
| 170 | syn keyword forthForth RESTORE-INPUT SAVE-INPUT SOURCE-ID |
| 171 | " Forth-79 |
| 172 | syn keyword forthForth 79-STANDARD |
| 173 | " Forth-83 |
| 174 | syn keyword forthForth <MARK <RESOLVE >MARK >RESOLVE ?BRANCH BRANCH FORTH-83 |
| 175 | " Forth-79, Forth-83, Forth-94 |
| 176 | syn keyword forthForth QUERY |
| 177 | " Forth-83, Forth-94 |
| 178 | syn keyword forthForth SPAN |
Bram Moolenaar | e37d50a | 2008-08-06 17:06:04 +0000 | [diff] [blame] | 179 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 180 | " non-standard interpreter, wordbook, compiler |
| 181 | syn keyword forthForth ) >LINK >NEXT >VIEW ASSERT( ASSERT0( ASSERT1( ASSERT2( |
| 182 | syn keyword forthForth ASSERT3( BODY> CFA COLD L>NAME LINK> N>LINK NAME> VIEW |
| 183 | syn keyword forthForth VIEW> |
Bram Moolenaar | e37d50a | 2008-08-06 17:06:04 +0000 | [diff] [blame] | 184 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 185 | " booleans {{{2 |
| 186 | " extension words |
| 187 | syn match forthBoolean "\<\%(TRUE\|FALSE\)\>" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 188 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 189 | " numbers {{{2 |
| 190 | syn keyword forthMath BASE DECIMAL |
| 191 | " extension words |
| 192 | syn keyword forthMath HEX |
| 193 | syn match forthInteger '\<-\=\d\+\.\=\>' |
| 194 | syn match forthInteger '\<#-\=\d\+\.\=\>' |
| 195 | syn match forthInteger '\<\$-\=\x\+\.\=\>' |
| 196 | syn match forthInteger '\<%-\=[01]\+\.\=\>' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 197 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 198 | " characters {{{2 |
| 199 | syn match forthCharacter "'\k'" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 200 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 201 | " strings {{{2 |
| 202 | |
| 203 | " Words that end with " are assumed to start string parsing. |
| 204 | " This includes standard words: S" ." |
| 205 | syn region forthString matchgroup=forthString start=+\<\S\+"\s+ end=+"+ end=+$+ contains=@Spell |
| 206 | " extension words |
| 207 | syn region forthString matchgroup=forthString start=+\<C"\s+ end=+"+ end=+$+ contains=@Spell |
| 208 | " Matches S\" |
| 209 | syn region forthString matchgroup=forthString start=+\<S\\"\s+ end=+"+ end=+$+ contains=@Spell,forthEscape |
| 210 | |
| 211 | syn match forthEscape +\C\\[abeflmnqrtvz"\\]+ contained |
| 212 | syn match forthEscape "\C\\x\x\x" contained |
| 213 | |
| 214 | " comments {{{2 |
| 215 | |
| 216 | syn keyword forthTodo contained TODO FIXME XXX |
| 217 | |
| 218 | " Some special, non-FORTH keywords |
| 219 | syn match forthTodo contained "\<\%(TODO\|FIXME\|XXX\)\%(\>\|:\@=\)" |
| 220 | |
| 221 | " XXX If you find this overkill you can remove it. This has to come after the |
| 222 | " highlighting for numbers and booleans otherwise it has no effect. |
| 223 | syn region forthComment start='\<\%(0\|FALSE\)\s\+\[IF]' end='\<\[ENDIF]' end='\<\[THEN]' contains=forthTodo |
| 224 | |
| 225 | if get(g:, "forth_no_comment_fold", 0) |
| 226 | syn region forthComment start='\<(\>' end=')' contains=@Spell,forthTodo,forthSpaceError |
| 227 | " extension words |
| 228 | syn match forthComment '\<\\\>.*$' contains=@Spell,forthTodo,forthSpaceError |
| 229 | else |
| 230 | syn region forthComment start='\<(\>' end=')' contains=@Spell,forthTodo,forthSpaceError fold |
| 231 | " extension words |
| 232 | syn match forthComment '\<\\\>.*$' contains=@Spell,forthTodo,forthSpaceError |
| 233 | syn region forthMultilineComment start="^\s*\\\>" end="\n\%(\s*\\\>\)\@!" contains=forthComment transparent fold |
| 234 | endif |
| 235 | |
| 236 | " extension words |
| 237 | syn region forthComment start='\<\.(\>' end=')' end='$' contains=@Spell,forthTodo,forthSpaceError |
| 238 | |
| 239 | " ABORT {{{2 |
| 240 | syn keyword forthForth ABORT |
| 241 | syn region forthForth start=+\<ABORT"\s+ end=+"\>+ end=+$+ |
| 242 | |
| 243 | " The optional Block word set {{{1 |
| 244 | " Handled as Core words - REFILL |
| 245 | syn keyword forthBlocks BLK BLOCK BUFFER FLUSH LOAD SAVE-BUFFERS UPDATE |
| 246 | " extension words |
| 247 | syn keyword forthBlocks EMPTY-BUFFERS LIST SCR THRU |
| 248 | |
| 249 | " Non-standard Block words |
| 250 | syn keyword forthBlocks +LOAD +THRU --> BLOCK-INCLUDED BLOCK-OFFSET |
| 251 | syn keyword forthBlocks BLOCK-POSITION EMPTY-BUFFER GET-BLOCK-FID OPEN-BLOCKS |
| 252 | syn keyword forthBlocks SAVE-BUFFER UPDATED? USE |
| 253 | |
| 254 | " The optional Double-Number word set {{{1 |
| 255 | syn keyword forthConversion D>S |
| 256 | syn keyword forthDefine 2CONSTANT 2LITERAL 2VARIABLE |
| 257 | syn keyword forthFunction D. D.R |
| 258 | syn keyword forthOperators D+ D- D0= D2* D2/ D= DABS DMAX DMIN DNEGATE |
| 259 | syn keyword forthOperators D0< D< M+ M*/ |
| 260 | " extension words |
| 261 | syn keyword forthDefine 2VALUE |
| 262 | syn keyword forthOperators DU< |
| 263 | syn keyword forthStack 2ROT |
| 264 | |
| 265 | " Non-standard Double-Number words |
| 266 | syn keyword forthOperators D0<= D0<> D0> D0>= D<= D<> D> D>= DU<= DU> DU>= |
| 267 | syn keyword forthStack 2-ROT 2NIP 2RDROP 2TUCK |
| 268 | |
| 269 | " The optional Exception word set {{{1 |
| 270 | " Handled as Core words - ABORT ABORT" |
| 271 | syn keyword forthCond CATCH THROW |
| 272 | |
| 273 | " The optional Facility word set {{{1 |
| 274 | syn keyword forthCharOps AT-XY KEY? PAGE |
| 275 | " extension words |
| 276 | syn keyword forthCharOps EKEY EKEY>CHAR EKEY>FKEY EKEY? EMIT? K-ALT-MASK |
| 277 | syn keyword forthCharOps K-CTRL-MASK K-DELETE K-DOWN K-END K-F1 K-F10 K-F11 |
| 278 | syn keyword forthCharOps K-F12 K-F2 K-F3 K-F4 K-F5 K-F6 K-F7 K-F8 K-F9 K-HOME |
| 279 | syn keyword forthCharOps K-INSERT K-LEFT K-NEXT K-PRIOR K-RIGHT K-SHIFT-MASK |
| 280 | syn keyword forthCharOps K-UP |
| 281 | syn keyword forthDefine +FIELD BEGIN-STRUCTURE CFIELD: END-STRUCTURE FIELD: |
| 282 | syn keyword forthForth MS TIME&DATE |
| 283 | |
| 284 | " The optional File-Access word set {{{1 |
| 285 | " Handled as Core words - REFILL SOURCE-ID S\" S" ( |
| 286 | syn keyword forthFileMode BIN R/O R/W W/O |
| 287 | syn keyword forthFileWords CLOSE-FILE CREATE-FILE DELETE-FILE FILE-POSITION |
| 288 | syn keyword forthFileWords FILE-SIZE INCLUDE-FILE INCLUDED OPEN-FILE READ-FILE |
| 289 | syn keyword forthFileWords READ-LINE REPOSITION-FILE RESIZE-FILE WRITE-FILE |
| 290 | syn keyword forthFileWords WRITE-LINE |
| 291 | " extension words |
| 292 | syn keyword forthFileWords FILE-STATUS FLUSH-FILE RENAME-FILE REQUIRED |
| 293 | syn match forthInclude '\<INCLUDE\s\+\k\+' |
| 294 | syn match forthInclude '\<REQUIRE\s\+\k\+' |
| 295 | |
| 296 | " Non-standard File-Access words |
| 297 | syn keyword forthFileWords EMIT-FILE KEY-FILE KEY?-FILE SLURP-FID SLURP-FILE |
| 298 | syn keyword forthFileWords STDERR STDIN STDOUT |
Bram Moolenaar | 25a6e8a | 2018-03-30 12:27:32 +0200 | [diff] [blame] | 299 | syn match forthInclude '^FLOAD\s\+' |
| 300 | syn match forthInclude '^NEEDS\s\+' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 301 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 302 | " The optional Floating-Point word set {{{1 |
Bram Moolenaar | e37d50a | 2008-08-06 17:06:04 +0000 | [diff] [blame] | 303 | |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 304 | " numbers |
| 305 | syn match forthFloat '\<[+-]\=\d\+\.\=\d*[DdEe][+-]\=\d*\>' |
| 306 | |
| 307 | syn keyword forthConversion >FLOAT D>F F>D |
| 308 | syn keyword forthAdrArith FALIGN FALIGNED FLOAT+ FLOATS |
| 309 | syn keyword forthDefine FCONSTANT FLITERAL FVARIABLE |
| 310 | syn keyword forthFStack FDROP FDUP FOVER FROT FSWAP |
| 311 | syn keyword forthFunction REPRESENT |
| 312 | syn keyword forthMemory F! F@ |
| 313 | syn keyword forthOperators F* F+ F- F/ F0< F0= F< FLOOR FMAX FMIN FNEGATE |
| 314 | syn keyword forthOperators FROUND |
| 315 | syn keyword forthSP FDEPTH |
| 316 | " extension words |
| 317 | syn keyword forthConversion F>S S>F |
| 318 | syn keyword forthAdrArith DFALIGN DFALIGNED DFLOAT+ DFLOATS SFALIGN |
| 319 | syn keyword forthAdrArith SFALIGNED SFLOAT+ SFLOATS |
| 320 | syn keyword forthDefine DFFIELD: FFIELD: FVALUE SFFIELD: |
| 321 | syn keyword forthFunction F. FE. FS. PRECISION SET-PRECISION |
| 322 | syn keyword forthMemory DF! DF@ SF! SF@ |
| 323 | syn keyword forthOperators F** FABS FACOS FACOSH FALOG FASIN FASINH FATAN |
| 324 | syn keyword forthOperators FATAN2 FATANH FCOS FCOSH FEXP FEXPM1 FLN FLNP1 |
| 325 | syn keyword forthOperators FLOG FSIN FSINCOS FSINH FSQRT FTAN FTANH FTRUNC F~ |
| 326 | |
| 327 | " Non-standard Floating-Point words |
| 328 | syn keyword forthOperators 1/F F2* F2/ F~ABS F~REL |
| 329 | syn keyword forthFStack FNIP FTUCK |
| 330 | |
| 331 | " The optional Locals word set {{{1 |
| 332 | syn keyword forthForth (LOCAL) |
| 333 | " extension words |
| 334 | syn region forthLocals start="\<{:\>" end="\<:}\>" |
| 335 | syn region forthLocals start="\<LOCALS|\>" end="\<|\>" |
| 336 | |
| 337 | " Non-standard Locals words |
| 338 | syn region forthLocals start="\<{\>" end="\<}\>" |
| 339 | |
| 340 | " The optional Memory-Allocation word set {{{1 |
| 341 | syn keyword forthMemory ALLOCATE FREE RESIZE |
| 342 | |
| 343 | " The optional Programming-Tools wordset {{{1 |
| 344 | syn keyword forthDebug .S ? DUMP SEE WORDS |
| 345 | " extension words |
| 346 | syn keyword forthAssembler ;CODE ASSEMBLER CODE END-CODE |
| 347 | syn keyword forthCond AHEAD CS-PICK CS-ROLL |
| 348 | syn keyword forthDefine NAME>COMPILE NAME>INTERPRET NAME>STRING SYNONYM |
| 349 | syn keyword forthDefine TRAVERSE-WORDLIST |
| 350 | syn match forthDefine "\<\[DEFINED]\>" |
| 351 | syn match forthDefine "\<\[ELSE]\>" |
| 352 | syn match forthDefine "\<\[IF]\>" |
| 353 | syn match forthDefine "\<\[THEN]\>" |
| 354 | syn match forthDefine "\<\[UNDEFINED]\>" |
| 355 | syn keyword forthForth BYE FORGET |
| 356 | syn keyword forthStack N>R NR> |
| 357 | syn keyword forthVocs EDITOR |
| 358 | |
| 359 | " Non-standard Programming-Tools words |
| 360 | syn keyword forthAssembler FLUSH-ICACHE |
| 361 | syn keyword forthDebug PRINTDEBUGDATA PRINTDEBUGLINE |
| 362 | syn match forthDebug "\<\~\~\>" |
| 363 | syn match forthDefine "\<\[+LOOP]\>" |
| 364 | syn match forthDefine "\<\[?DO]\>" |
| 365 | syn match forthDefine "\<\[AGAIN]\>" |
| 366 | syn match forthDefine "\<\[BEGIN]\>" |
| 367 | syn match forthDefine "\<\[DO]\>" |
| 368 | syn match forthDefine "\<\[ENDIF]\>" |
| 369 | syn match forthDefine "\<\[IFDEF]\>" |
| 370 | syn match forthDefine "\<\[IFUNDEF]\>" |
| 371 | syn match forthDefine "\<\[LOOP]\>" |
| 372 | syn match forthDefine "\<\[NEXT]\>" |
| 373 | syn match forthDefine "\<\[REPEAT]\>" |
| 374 | syn match forthDefine "\<\[UNTIL]\>" |
| 375 | syn match forthDefine "\<\[WHILE]\>" |
| 376 | |
| 377 | " The optional Search-Order word set {{{1 |
| 378 | " Handled as Core words - FIND |
| 379 | syn keyword forthVocs DEFINITIONS FORTH-WORDLIST GET-CURRENT GET-ORDER |
| 380 | syn keyword forthVocs SEARCH-WORDLIST SET-CURRENT SET-ORDER WORDLIST |
| 381 | " extension words |
| 382 | syn keyword forthVocs ALSO FORTH ONLY ORDER PREVIOUS |
| 383 | " Forth-79, Forth-83 |
| 384 | syn keyword forthVocs CONTEXT CURRENT VOCABULARY |
| 385 | |
| 386 | " Non-standard Search-Order words |
| 387 | syn keyword forthVocs #VOCS ROOT SEAL VOCS |
| 388 | |
| 389 | " The optional String word set {{{1 |
| 390 | syn keyword forthFunction -TRAILING /STRING BLANK CMOVE CMOVE> COMPARE SEARCH |
| 391 | syn keyword forthFunction SLITERAL |
| 392 | " extension words |
| 393 | syn keyword forthFunction REPLACES SUBSTITUTE UNESCAPE |
| 394 | |
| 395 | " The optional Extended-Character word set {{{1 |
| 396 | " Handled as Core words - [CHAR] CHAR and PARSE |
| 397 | syn keyword forthAdrArith XCHAR+ |
| 398 | syn keyword forthCharOps X-SIZE XC-SIZE XEMIT XKEY XKEY? |
| 399 | syn keyword forthDefine XC, |
| 400 | syn keyword forthMemory XC!+ XC!+? XC@+ |
| 401 | " extension words |
| 402 | syn keyword forthAdrArith XCHAR- +X/STRING X\\STRING- |
| 403 | syn keyword forthCharOps EKEY>XCHAR X-WIDTH XC-WIDTH |
| 404 | syn keyword forthConversion XHOLD |
| 405 | syn keyword forthString -TRAILING-GARBAGE |
| 406 | |
| 407 | " Define the default highlighting {{{1 |
| 408 | hi def link forthBoolean Boolean |
| 409 | hi def link forthCharacter Character |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 410 | hi def link forthTodo Todo |
| 411 | hi def link forthOperators Operator |
| 412 | hi def link forthMath Number |
| 413 | hi def link forthInteger Number |
| 414 | hi def link forthFloat Float |
| 415 | hi def link forthStack Special |
| 416 | hi def link forthRstack Special |
| 417 | hi def link forthFStack Special |
| 418 | hi def link forthSP Special |
| 419 | hi def link forthMemory Function |
| 420 | hi def link forthAdrArith Function |
| 421 | hi def link forthMemBlks Function |
| 422 | hi def link forthCond Conditional |
| 423 | hi def link forthLoop Repeat |
| 424 | hi def link forthColonDef Define |
| 425 | hi def link forthEndOfColonDef Define |
| 426 | hi def link forthDefine Define |
| 427 | hi def link forthDebug Debug |
| 428 | hi def link forthAssembler Include |
| 429 | hi def link forthCharOps Character |
| 430 | hi def link forthConversion String |
| 431 | hi def link forthForth Statement |
| 432 | hi def link forthVocs Statement |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 433 | hi def link forthEscape Special |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 434 | hi def link forthString String |
| 435 | hi def link forthComment Comment |
| 436 | hi def link forthClassDef Define |
| 437 | hi def link forthEndOfClassDef Define |
| 438 | hi def link forthObjectDef Define |
| 439 | hi def link forthEndOfObjectDef Define |
| 440 | hi def link forthInclude Include |
| 441 | hi def link forthLocals Type " nothing else uses type and locals must stand out |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 442 | hi def link forthFileMode Function |
Bram Moolenaar | 25a6e8a | 2018-03-30 12:27:32 +0200 | [diff] [blame] | 443 | hi def link forthFunction Function |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 444 | hi def link forthFileWords Statement |
| 445 | hi def link forthBlocks Statement |
| 446 | hi def link forthSpaceError Error |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 447 | "}}} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 448 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 449 | let b:current_syntax = "forth" |
| 450 | |
Bram Moolenaar | 6ee8d89 | 2012-01-10 14:55:01 +0100 | [diff] [blame] | 451 | let &cpo = s:cpo_save |
| 452 | unlet s:cpo_save |
dkearns | 1610528 | 2023-08-31 16:17:16 +1000 | [diff] [blame] | 453 | |
| 454 | " vim:ts=8:sw=4:nocindent:smartindent:fdm=marker:tw=78 |
Bram Moolenaar | be4e016 | 2023-02-02 13:59:48 +0000 | [diff] [blame] | 455 | |