xref: /vim-8.2.3635/runtime/syntax/forth.vim (revision 6ee8d89c)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:    FORTH
3071d4279SBram Moolenaar" Maintainer:  Christian V. J. Br�ssow <[email protected]>
4*6ee8d89cSBram Moolenaar" Last Change: Sa 07 Jan 2012 21:30:55 CET
5071d4279SBram Moolenaar" Filenames:   *.fs,*.ft
6071d4279SBram Moolenaar" URL:	       http://www.cvjb.de/comp/vim/forth.vim
7071d4279SBram Moolenaar
8*6ee8d89cSBram Moolenaar" $Id: forth.vim,v 1.13 2012/01/07 21:31:31 bruessow Exp $
9071d4279SBram Moolenaar
10071d4279SBram Moolenaar" The list of keywords is incomplete, compared with the offical ANS
11071d4279SBram Moolenaar" wordlist. If you use this language, please improve it, and send me
12071d4279SBram Moolenaar" the patches.
13e37d50a5SBram Moolenaar"
14e37d50a5SBram Moolenaar" Before sending me patches, please download the newest version of this file
15e37d50a5SBram Moolenaar" from http://www.cvjb.de/comp/vim/forth.vim or http://www.vim.org/ (search
16e37d50a5SBram Moolenaar" for forth.vim).
17071d4279SBram Moolenaar
18071d4279SBram Moolenaar" Many Thanks to...
19071d4279SBram Moolenaar"
20*6ee8d89cSBram Moolenaar" 2012-01-07:
21*6ee8d89cSBram Moolenaar" Thilo Six <T.Six at gmx dot de> send a patch for cpoptions.
22*6ee8d89cSBram Moolenaar" See the discussion at http://thread.gmane.org/gmane.editors.vim.devel/32151
23*6ee8d89cSBram Moolenaar"
24cdf04208SBram Moolenaar" 2009-06-28:
25cdf04208SBram Moolenaar" Josh Grams send a patch to allow the parenthesis comments at the
26cdf04208SBram Moolenaar" beginning of a line. That patch also fixed a typo in one of the
27cdf04208SBram Moolenaar" comments.
28cdf04208SBram Moolenaar"
29e37d50a5SBram Moolenaar" 2008-02-09:
30e37d50a5SBram Moolenaar" Shawn K. Quinn <sjquinn at speakeasy dot net> send a big patch with
31e37d50a5SBram Moolenaar" new words commonly used in Forth programs or defined by GNU Forth.
32e37d50a5SBram Moolenaar"
333577c6faSBram Moolenaar" 2007-07-11:
343577c6faSBram Moolenaar" Benjamin Krill <ben at codiert dot org> send me a patch
353577c6faSBram Moolenaar" to highlight space errors.
363577c6faSBram Moolenaar" You can toggle this feature on through setting the
373577c6faSBram Moolenaar" flag forth_space_errors in you vimrc. If you have switched it on,
383577c6faSBram Moolenaar" you can turn off highlighting of trailing spaces in comments by
393577c6faSBram Moolenaar" setting forth_no_trail_space_error in your vimrc. If you do not want
403577c6faSBram Moolenaar" the highlighting of a tabulator following a space in comments, you
413577c6faSBram Moolenaar" can turn this off by setting forth_no_tab_space_error.
423577c6faSBram Moolenaar"
433577c6faSBram Moolenaar" 2006-05-25:
443577c6faSBram Moolenaar" Bill McCarthy <WJMc@...> and Ilya Sher <ilya-vim@...>
453577c6faSBram Moolenaar" Who found a bug in the ccomment line in 2004!!!
463577c6faSBram Moolenaar" I'm really very sorry, that it has taken two years to fix that
473577c6faSBram Moolenaar" in the offical version of this file. Shame on me.
483577c6faSBram Moolenaar" I think my face will be red the next ten years...
493577c6faSBram Moolenaar"
503577c6faSBram Moolenaar" 2006-05-21:
513577c6faSBram Moolenaar" Thomas E. Vaughan <tevaugha at ball dot com> send me a patch
523577c6faSBram Moolenaar" for the parenthesis comment word, so words with a trailing
533577c6faSBram Moolenaar" parenthesis will not start the highlighting for such comments.
548299df96SBram Moolenaar"
55071d4279SBram Moolenaar" 2003-05-10:
56071d4279SBram Moolenaar" Andrew Gaul <andrew at gaul.org> send me a patch for
57071d4279SBram Moolenaar" forthOperators.
58071d4279SBram Moolenaar"
59071d4279SBram Moolenaar" 2003-04-03:
603577c6faSBram Moolenaar" Ron Aaron <ron at ronware dot org> made updates for an
61071d4279SBram Moolenaar" improved Win32Forth support.
62071d4279SBram Moolenaar"
63071d4279SBram Moolenaar" 2002-04-22:
643577c6faSBram Moolenaar" Charles Shattuck <charley at forth dot org> helped me to settle up with the
65071d4279SBram Moolenaar" binary and hex number highlighting.
66071d4279SBram Moolenaar"
67071d4279SBram Moolenaar" 2002-04-20:
683577c6faSBram Moolenaar" Charles Shattuck <charley at forth dot org> send me some code for correctly
69071d4279SBram Moolenaar" highlighting char and [char] followed by an opening paren. He also added
70071d4279SBram Moolenaar" some words for operators, conditionals, and definitions; and added the
71071d4279SBram Moolenaar" highlighting for s" and c".
72071d4279SBram Moolenaar"
73071d4279SBram Moolenaar" 2000-03-28:
743577c6faSBram Moolenaar" John Providenza <john at probo dot com> made improvements for the
75071d4279SBram Moolenaar" highlighting of strings, and added the code for highlighting hex numbers.
76071d4279SBram Moolenaar"
77071d4279SBram Moolenaar
78071d4279SBram Moolenaar
79071d4279SBram Moolenaar" For version 5.x: Clear all syntax items
80071d4279SBram Moolenaar" For version 6.x: Quit when a syntax file was already loaded
81071d4279SBram Moolenaarif version < 600
82071d4279SBram Moolenaar    syntax clear
83071d4279SBram Moolenaarelseif exists("b:current_syntax")
84071d4279SBram Moolenaar    finish
85071d4279SBram Moolenaarendif
86071d4279SBram Moolenaar
87*6ee8d89cSBram Moolenaarlet s:cpo_save = &cpo
88*6ee8d89cSBram Moolenaarset cpo&vim
89*6ee8d89cSBram Moolenaar
90071d4279SBram Moolenaar" Synchronization method
918299df96SBram Moolenaarsyn sync ccomment
928299df96SBram Moolenaarsyn sync maxlines=200
93071d4279SBram Moolenaar
94071d4279SBram Moolenaar" I use gforth, so I set this to case ignore
95071d4279SBram Moolenaarsyn case ignore
96071d4279SBram Moolenaar
97071d4279SBram Moolenaar" Some special, non-FORTH keywords
98071d4279SBram Moolenaarsyn keyword forthTodo contained TODO FIXME XXX
99071d4279SBram Moolenaarsyn match forthTodo contained 'Copyright\(\s([Cc])\)\=\(\s[0-9]\{2,4}\)\='
100071d4279SBram Moolenaar
101071d4279SBram Moolenaar" Characters allowed in keywords
102e37d50a5SBram Moolenaar" I don't know if 128-255 are allowed in ANS-FORTH
103071d4279SBram Moolenaarif version >= 600
104071d4279SBram Moolenaar    setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255
105071d4279SBram Moolenaarelse
106071d4279SBram Moolenaar    set iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255
107071d4279SBram Moolenaarendif
108071d4279SBram Moolenaar
1093577c6faSBram Moolenaar" when wanted, highlight trailing white space
1103577c6faSBram Moolenaarif exists("forth_space_errors")
1113577c6faSBram Moolenaar    if !exists("forth_no_trail_space_error")
1123577c6faSBram Moolenaar        syn match forthSpaceError display excludenl "\s\+$"
1133577c6faSBram Moolenaar    endif
1143577c6faSBram Moolenaar    if !exists("forth_no_tab_space_error")
1153577c6faSBram Moolenaar        syn match forthSpaceError display " \+\t"me=e-1
1163577c6faSBram Moolenaar    endif
1173577c6faSBram Moolenaarendif
118071d4279SBram Moolenaar
119071d4279SBram Moolenaar" Keywords
120071d4279SBram Moolenaar
121071d4279SBram Moolenaar" basic mathematical and logical operators
122071d4279SBram Moolenaarsyn keyword forthOperators + - * / MOD /MOD NEGATE ABS MIN MAX
123e37d50a5SBram Moolenaarsyn keyword forthOperators AND OR XOR NOT LSHIFT RSHIFT INVERT 2* 2/ 1+
124e37d50a5SBram Moolenaarsyn keyword forthOperators 1- 2+ 2- 8* UNDER+
125071d4279SBram Moolenaarsyn keyword forthOperators M+ */ */MOD M* UM* M*/ UM/MOD FM/MOD SM/REM
126e37d50a5SBram Moolenaarsyn keyword forthOperators D+ D- DNEGATE DABS DMIN DMAX D2* D2/
127071d4279SBram Moolenaarsyn keyword forthOperators F+ F- F* F/ FNEGATE FABS FMAX FMIN FLOOR FROUND
128071d4279SBram Moolenaarsyn keyword forthOperators F** FSQRT FEXP FEXPM1 FLN FLNP1 FLOG FALOG FSIN
129071d4279SBram Moolenaarsyn keyword forthOperators FCOS FSINCOS FTAN FASIN FACOS FATAN FATAN2 FSINH
130e37d50a5SBram Moolenaarsyn keyword forthOperators FCOSH FTANH FASINH FACOSH FATANH F2* F2/ 1/F
131e37d50a5SBram Moolenaarsyn keyword forthOperators F~REL F~ABS F~
132e37d50a5SBram Moolenaarsyn keyword forthOperators 0< 0<= 0<> 0= 0> 0>= < <= <> = > >= U< U<=
133e37d50a5SBram Moolenaarsyn keyword forthOperators U> U>= D0< D0<= D0<> D0= D0> D0>= D< D<= D<>
134e37d50a5SBram Moolenaarsyn keyword forthOperators D= D> D>= DU< DU<= DU> DU>= WITHIN ?NEGATE
135e37d50a5SBram Moolenaarsyn keyword forthOperators ?DNEGATE
136071d4279SBram Moolenaar
137071d4279SBram Moolenaar" stack manipulations
138071d4279SBram Moolenaarsyn keyword forthStack DROP NIP DUP OVER TUCK SWAP ROT -ROT ?DUP PICK ROLL
139e37d50a5SBram Moolenaarsyn keyword forthStack 2DROP 2NIP 2DUP 2OVER 2TUCK 2SWAP 2ROT 2-ROT
140e37d50a5SBram Moolenaarsyn keyword forthStack 3DUP 4DUP 5DUP 3DROP 4DROP 5DROP 8DROP 4SWAP 4ROT
141e37d50a5SBram Moolenaarsyn keyword forthStack 4-ROT 4TUCK 8SWAP 8DUP
142071d4279SBram Moolenaarsyn keyword forthRStack >R R> R@ RDROP 2>R 2R> 2R@ 2RDROP
143e37d50a5SBram Moolenaarsyn keyword forthRstack 4>R 4R> 4R@ 4RDROP
144071d4279SBram Moolenaarsyn keyword forthFStack FDROP FNIP FDUP FOVER FTUCK FSWAP FROT
145071d4279SBram Moolenaar
146071d4279SBram Moolenaar" stack pointer manipulations
147071d4279SBram Moolenaarsyn keyword forthSP SP@ SP! FP@ FP! RP@ RP! LP@ LP!
148071d4279SBram Moolenaar
149071d4279SBram Moolenaar" address operations
150071d4279SBram Moolenaarsyn keyword forthMemory @ ! +! C@ C! 2@ 2! F@ F! SF@ SF! DF@ DF!
151071d4279SBram Moolenaarsyn keyword forthAdrArith CHARS CHAR+ CELLS CELL+ CELL ALIGN ALIGNED FLOATS
152071d4279SBram Moolenaarsyn keyword forthAdrArith FLOAT+ FLOAT FALIGN FALIGNED SFLOATS SFLOAT+
153071d4279SBram Moolenaarsyn keyword forthAdrArith SFALIGN SFALIGNED DFLOATS DFLOAT+ DFALIGN DFALIGNED
154071d4279SBram Moolenaarsyn keyword forthAdrArith MAXALIGN MAXALIGNED CFALIGN CFALIGNED
155071d4279SBram Moolenaarsyn keyword forthAdrArith ADDRESS-UNIT-BITS ALLOT ALLOCATE HERE
156071d4279SBram Moolenaarsyn keyword forthMemBlks MOVE ERASE CMOVE CMOVE> FILL BLANK
157071d4279SBram Moolenaar
158071d4279SBram Moolenaar" conditionals
159071d4279SBram Moolenaarsyn keyword forthCond IF ELSE ENDIF THEN CASE OF ENDOF ENDCASE ?DUP-IF
160071d4279SBram Moolenaarsyn keyword forthCond ?DUP-0=-IF AHEAD CS-PICK CS-ROLL CATCH THROW WITHIN
161071d4279SBram Moolenaar
162071d4279SBram Moolenaar" iterations
163071d4279SBram Moolenaarsyn keyword forthLoop BEGIN WHILE REPEAT UNTIL AGAIN
164071d4279SBram Moolenaarsyn keyword forthLoop ?DO LOOP I J K +DO U+DO -DO U-DO DO +LOOP -LOOP
165071d4279SBram Moolenaarsyn keyword forthLoop UNLOOP LEAVE ?LEAVE EXIT DONE FOR NEXT
166071d4279SBram Moolenaar
167071d4279SBram Moolenaar" new words
168e37d50a5SBram Moolenaarsyn match forthClassDef '\<:class\s*[^ \t]\+\>'
169e37d50a5SBram Moolenaarsyn match forthObjectDef '\<:object\s*[^ \t]\+\>'
170071d4279SBram Moolenaarsyn match forthColonDef '\<:m\?\s*[^ \t]\+\>'
171071d4279SBram Moolenaarsyn keyword forthEndOfColonDef ; ;M ;m
172e37d50a5SBram Moolenaarsyn keyword forthEndOfClassDef ;class
173e37d50a5SBram Moolenaarsyn keyword forthEndOfObjectDef ;object
174e37d50a5SBram Moolenaarsyn keyword forthDefine CONSTANT 2CONSTANT FCONSTANT VARIABLE 2VARIABLE
175e37d50a5SBram Moolenaarsyn keyword forthDefine FVARIABLE CREATE USER VALUE TO DEFER IS DOES> IMMEDIATE
176e37d50a5SBram Moolenaarsyn keyword forthDefine COMPILE-ONLY COMPILE RESTRICT INTERPRET POSTPONE EXECUTE
177e37d50a5SBram Moolenaarsyn keyword forthDefine LITERAL CREATE-INTERPRET/COMPILE INTERPRETATION>
178e37d50a5SBram Moolenaarsyn keyword forthDefine <INTERPRETATION COMPILATION> <COMPILATION ] LASTXT
179e37d50a5SBram Moolenaarsyn keyword forthDefine COMP' POSTPONE, FIND-NAME NAME>INT NAME?INT NAME>COMP
180e37d50a5SBram Moolenaarsyn keyword forthDefine NAME>STRING STATE C; CVARIABLE
181e37d50a5SBram Moolenaarsyn keyword forthDefine , 2, F, C,
182e37d50a5SBram Moolenaarsyn match forthDefine "\[IFDEF]"
183e37d50a5SBram Moolenaarsyn match forthDefine "\[IFUNDEF]"
184e37d50a5SBram Moolenaarsyn match forthDefine "\[THEN]"
185e37d50a5SBram Moolenaarsyn match forthDefine "\[ENDIF]"
186e37d50a5SBram Moolenaarsyn match forthDefine "\[ELSE]"
187e37d50a5SBram Moolenaarsyn match forthDefine "\[?DO]"
188e37d50a5SBram Moolenaarsyn match forthDefine "\[DO]"
189e37d50a5SBram Moolenaarsyn match forthDefine "\[LOOP]"
190e37d50a5SBram Moolenaarsyn match forthDefine "\[+LOOP]"
191e37d50a5SBram Moolenaarsyn match forthDefine "\[NEXT]"
192e37d50a5SBram Moolenaarsyn match forthDefine "\[BEGIN]"
193e37d50a5SBram Moolenaarsyn match forthDefine "\[UNTIL]"
194e37d50a5SBram Moolenaarsyn match forthDefine "\[AGAIN]"
195e37d50a5SBram Moolenaarsyn match forthDefine "\[WHILE]"
196e37d50a5SBram Moolenaarsyn match forthDefine "\[REPEAT]"
197071d4279SBram Moolenaarsyn match forthDefine "\[COMP']"
198071d4279SBram Moolenaarsyn match forthDefine "'"
199071d4279SBram Moolenaarsyn match forthDefine '\<\[\>'
200071d4279SBram Moolenaarsyn match forthDefine "\[']"
201071d4279SBram Moolenaarsyn match forthDefine '\[COMPILE]'
202071d4279SBram Moolenaar
203071d4279SBram Moolenaar" debugging
204071d4279SBram Moolenaarsyn keyword forthDebug PRINTDEBUGDATA PRINTDEBUGLINE
205071d4279SBram Moolenaarsyn match forthDebug "\<\~\~\>"
206071d4279SBram Moolenaar
207071d4279SBram Moolenaar" Assembler
208071d4279SBram Moolenaarsyn keyword forthAssembler ASSEMBLER CODE END-CODE ;CODE FLUSH-ICACHE C,
209071d4279SBram Moolenaar
210071d4279SBram Moolenaar" basic character operations
211071d4279SBram Moolenaarsyn keyword forthCharOps (.) CHAR EXPECT FIND WORD TYPE -TRAILING EMIT KEY
212071d4279SBram Moolenaarsyn keyword forthCharOps KEY? TIB CR
213071d4279SBram Moolenaar" recognize 'char (' or '[char] (' correctly, so it doesn't
214071d4279SBram Moolenaar" highlight everything after the paren as a comment till a closing ')'
215071d4279SBram Moolenaarsyn match forthCharOps '\<char\s\S\s'
216071d4279SBram Moolenaarsyn match forthCharOps '\<\[char\]\s\S\s'
217071d4279SBram Moolenaarsyn region forthCharOps start=+."\s+ skip=+\\"+ end=+"+
218071d4279SBram Moolenaar
219071d4279SBram Moolenaar" char-number conversion
220e37d50a5SBram Moolenaarsyn keyword forthConversion <<# <# # #> #>> #S (NUMBER) (NUMBER?) CONVERT D>F
221e37d50a5SBram Moolenaarsyn keyword forthConversion D>S DIGIT DPL F>D HLD HOLD NUMBER S>D SIGN >NUMBER
222e37d50a5SBram Moolenaarsyn keyword forthConversion F>S S>F
223071d4279SBram Moolenaar
224cdf04208SBram Moolenaar" interpreter, wordbook, compiler
225071d4279SBram Moolenaarsyn keyword forthForth (LOCAL) BYE COLD ABORT >BODY >NEXT >LINK CFA >VIEW HERE
226071d4279SBram Moolenaarsyn keyword forthForth PAD WORDS VIEW VIEW> N>LINK NAME> LINK> L>NAME FORGET
227e37d50a5SBram Moolenaarsyn keyword forthForth BODY> ASSERT( ASSERT0( ASSERT1( ASSERT2( ASSERT3( )
228071d4279SBram Moolenaarsyn region forthForth start=+ABORT"\s+ skip=+\\"+ end=+"+
229071d4279SBram Moolenaar
230071d4279SBram Moolenaar" vocabularies
231071d4279SBram Moolenaarsyn keyword forthVocs ONLY FORTH ALSO ROOT SEAL VOCS ORDER CONTEXT #VOCS
232071d4279SBram Moolenaarsyn keyword forthVocs VOCABULARY DEFINITIONS
233071d4279SBram Moolenaar
234e37d50a5SBram Moolenaar" File keywords
235e37d50a5SBram Moolenaarsyn keyword forthFileMode R/O R/W W/O BIN
236e37d50a5SBram Moolenaarsyn keyword forthFileWords OPEN-FILE CREATE-FILE CLOSE-FILE DELETE-FILE
237e37d50a5SBram Moolenaarsyn keyword forthFileWords RENAME-FILE READ-FILE READ-LINE KEY-FILE
238e37d50a5SBram Moolenaarsyn keyword forthFileWords KEY?-FILE WRITE-FILE WRITE-LINE EMIT-FILE
239e37d50a5SBram Moolenaarsyn keyword forthFileWords FLUSH-FILE FILE-STATUS FILE-POSITION
240e37d50a5SBram Moolenaarsyn keyword forthFileWords REPOSITION-FILE FILE-SIZE RESIZE-FILE
241e37d50a5SBram Moolenaarsyn keyword forthFileWords SLURP-FILE SLURP-FID STDIN STDOUT STDERR
242e37d50a5SBram Moolenaarsyn keyword forthBlocks OPEN-BLOCKS USE LOAD --> BLOCK-OFFSET
243e37d50a5SBram Moolenaarsyn keyword forthBlocks GET-BLOCK-FID BLOCK-POSITION LIST SCR BLOCK
244e37d50a5SBram Moolenaarsyn keyword forthBlocks BUFER EMPTY-BUFFERS EMPTY-BUFFER UPDATE UPDATED?
245e37d50a5SBram Moolenaarsyn keyword forthBlocks SAVE-BUFFERS SAVE-BUFFER FLUSH THRU +LOAD +THRU
246e37d50a5SBram Moolenaarsyn keyword forthBlocks BLOCK-INCLUDED
247e37d50a5SBram Moolenaar
248071d4279SBram Moolenaar" numbers
249071d4279SBram Moolenaarsyn keyword forthMath DECIMAL HEX BASE
250071d4279SBram Moolenaarsyn match forthInteger '\<-\=[0-9.]*[0-9.]\+\>'
251e37d50a5SBram Moolenaarsyn match forthInteger '\<&-\=[0-9.]*[0-9.]\+\>'
252071d4279SBram Moolenaar" recognize hex and binary numbers, the '$' and '%' notation is for gforth
253071d4279SBram Moolenaarsyn match forthInteger '\<\$\x*\x\+\>' " *1* --- dont't mess
254071d4279SBram Moolenaarsyn match forthInteger '\<\x*\d\x*\>'  " *2* --- this order!
255071d4279SBram Moolenaarsyn match forthInteger '\<%[0-1]*[0-1]\+\>'
256e37d50a5SBram Moolenaarsyn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe]\d\+\>'
257e37d50a5SBram Moolenaarsyn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe][-+]\d\+\>'
258e37d50a5SBram Moolenaar
259e37d50a5SBram Moolenaar" XXX If you find this overkill you can remove it. this has to come after the
260e37d50a5SBram Moolenaar" highlighting for numbers otherwise it has no effect.
261e37d50a5SBram Moolenaarsyn region forthComment start='0 \[if\]' end='\[endif\]' end='\[then\]' contains=forthTodo
262071d4279SBram Moolenaar
263071d4279SBram Moolenaar" Strings
264071d4279SBram Moolenaarsyn region forthString start=+\.*\"+ end=+"+ end=+$+
265071d4279SBram Moolenaar" XXX
266071d4279SBram Moolenaarsyn region forthString start=+s\"+ end=+"+ end=+$+
267071d4279SBram Moolenaarsyn region forthString start=+c\"+ end=+"+ end=+$+
268071d4279SBram Moolenaar
269071d4279SBram Moolenaar" Comments
2703577c6faSBram Moolenaarsyn match forthComment '\\\s.*$' contains=forthTodo,forthSpaceError
2713577c6faSBram Moolenaarsyn region forthComment start='\\S\s' end='.*' contains=forthTodo,forthSpaceError
2723577c6faSBram Moolenaarsyn match forthComment '\.(\s[^)]*)' contains=forthTodo,forthSpaceError
273cdf04208SBram Moolenaarsyn region forthComment start='\(^\|\s\)\zs(\s' skip='\\)' end=')' contains=forthTodo,forthSpaceError
2743577c6faSBram Moolenaarsyn region forthComment start='/\*' end='\*/' contains=forthTodo,forthSpaceError
275071d4279SBram Moolenaar
276071d4279SBram Moolenaar" Include files
277071d4279SBram Moolenaarsyn match forthInclude '^INCLUDE\s\+\k\+'
278e37d50a5SBram Moolenaarsyn match forthInclude '^require\s\+\k\+'
279071d4279SBram Moolenaarsyn match forthInclude '^fload\s\+'
280071d4279SBram Moolenaarsyn match forthInclude '^needs\s\+'
281071d4279SBram Moolenaar
282e37d50a5SBram Moolenaar" Locals definitions
283e37d50a5SBram Moolenaarsyn region forthLocals start='{\s' start='{$' end='\s}' end='^}'
284e37d50a5SBram Moolenaarsyn match forthLocals '{ }' " otherwise, at least two spaces between
285e37d50a5SBram Moolenaarsyn region forthDeprecated start='locals|' end='|'
286e37d50a5SBram Moolenaar
287071d4279SBram Moolenaar" Define the default highlighting.
288071d4279SBram Moolenaar" For version 5.7 and earlier: only when not done already
289071d4279SBram Moolenaar" For version 5.8 and later: only when an item doesn't have highlighting yet
290071d4279SBram Moolenaarif version >= 508 || !exists("did_forth_syn_inits")
291071d4279SBram Moolenaar    if version < 508
292071d4279SBram Moolenaar	let did_forth_syn_inits = 1
293071d4279SBram Moolenaar	command -nargs=+ HiLink hi link <args>
294071d4279SBram Moolenaar    else
295071d4279SBram Moolenaar	command -nargs=+ HiLink hi def link <args>
296071d4279SBram Moolenaar    endif
297071d4279SBram Moolenaar
298071d4279SBram Moolenaar    " The default methods for highlighting. Can be overriden later.
299071d4279SBram Moolenaar    HiLink forthTodo Todo
300071d4279SBram Moolenaar    HiLink forthOperators Operator
301071d4279SBram Moolenaar    HiLink forthMath Number
302071d4279SBram Moolenaar    HiLink forthInteger Number
303071d4279SBram Moolenaar    HiLink forthFloat Float
304071d4279SBram Moolenaar    HiLink forthStack Special
305071d4279SBram Moolenaar    HiLink forthRstack Special
306071d4279SBram Moolenaar    HiLink forthFStack Special
307071d4279SBram Moolenaar    HiLink forthSP Special
308071d4279SBram Moolenaar    HiLink forthMemory Function
309071d4279SBram Moolenaar    HiLink forthAdrArith Function
310071d4279SBram Moolenaar    HiLink forthMemBlks Function
311071d4279SBram Moolenaar    HiLink forthCond Conditional
312071d4279SBram Moolenaar    HiLink forthLoop Repeat
313071d4279SBram Moolenaar    HiLink forthColonDef Define
314071d4279SBram Moolenaar    HiLink forthEndOfColonDef Define
315071d4279SBram Moolenaar    HiLink forthDefine Define
316071d4279SBram Moolenaar    HiLink forthDebug Debug
317071d4279SBram Moolenaar    HiLink forthAssembler Include
318071d4279SBram Moolenaar    HiLink forthCharOps Character
319071d4279SBram Moolenaar    HiLink forthConversion String
320071d4279SBram Moolenaar    HiLink forthForth Statement
321071d4279SBram Moolenaar    HiLink forthVocs Statement
322071d4279SBram Moolenaar    HiLink forthString String
323071d4279SBram Moolenaar    HiLink forthComment Comment
324071d4279SBram Moolenaar    HiLink forthClassDef Define
325071d4279SBram Moolenaar    HiLink forthEndOfClassDef Define
326071d4279SBram Moolenaar    HiLink forthObjectDef Define
327071d4279SBram Moolenaar    HiLink forthEndOfObjectDef Define
328071d4279SBram Moolenaar    HiLink forthInclude Include
329e37d50a5SBram Moolenaar    HiLink forthLocals Type " nothing else uses type and locals must stand out
330e37d50a5SBram Moolenaar    HiLink forthDeprecated Error " if you must, change to Type
331e37d50a5SBram Moolenaar    HiLink forthFileMode Function
332e37d50a5SBram Moolenaar    HiLink forthFileWords Statement
333e37d50a5SBram Moolenaar    HiLink forthBlocks Statement
3343577c6faSBram Moolenaar    HiLink forthSpaceError Error
335071d4279SBram Moolenaar
336071d4279SBram Moolenaar    delcommand HiLink
337071d4279SBram Moolenaarendif
338071d4279SBram Moolenaar
339071d4279SBram Moolenaarlet b:current_syntax = "forth"
340071d4279SBram Moolenaar
341*6ee8d89cSBram Moolenaarlet &cpo = s:cpo_save
342*6ee8d89cSBram Moolenaarunlet s:cpo_save
343071d4279SBram Moolenaar" vim:ts=8:sw=4:nocindent:smartindent:
344