mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	runtime(forth): Update syntax and ftplugin files (vim/vim#12976)
1610528cc3
Co-authored-by: dkearns <dougkearns@gmail.com>
		
	
		
			
				
	
	
		
			456 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			456 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
" Vim syntax file
 | 
						|
" Language:		Forth
 | 
						|
" Maintainer:		Johan Kotlinski <kotlinski@gmail.com>
 | 
						|
" Previous Maintainer:	Christian V. J. Brüssow <cvjb@cvjb.de>
 | 
						|
" Last Change:		2023 Aug 13
 | 
						|
" Filenames:		*.f,*.fs,*.ft,*.fth,*.4th
 | 
						|
" URL:			https://github.com/jkotlinski/forth.vim
 | 
						|
 | 
						|
" Supports the Forth-2012 Standard.
 | 
						|
"
 | 
						|
" Removed words from the earlier Forth-79, Forth-83 and Forth-94 standards are
 | 
						|
" also included.
 | 
						|
"
 | 
						|
" These have been organised according to the version in which they were
 | 
						|
" initially included and the version in which they were removed (obsolescent
 | 
						|
" status is ignored).  Words with "experimental" or "uncontrolled" status are
 | 
						|
" not included unless they were later standardised.
 | 
						|
 | 
						|
" quit when a syntax file was already loaded
 | 
						|
if exists("b:current_syntax")
 | 
						|
    finish
 | 
						|
endif
 | 
						|
 | 
						|
let s:cpo_save = &cpo
 | 
						|
set cpo&vim
 | 
						|
 | 
						|
" Synchronization method
 | 
						|
exe "syn sync minlines=" .. get(g:, "forth_minlines", 50)
 | 
						|
 | 
						|
syn case ignore
 | 
						|
 | 
						|
" Characters allowed in keywords
 | 
						|
" I don't know if 128-255 are allowed in ANS-FORTH
 | 
						|
syn iskeyword 33-126,128-255
 | 
						|
 | 
						|
" Space errors {{{1
 | 
						|
" when wanted, highlight trailing white space
 | 
						|
if exists("forth_space_errors")
 | 
						|
    if !exists("forth_no_trail_space_error")
 | 
						|
        syn match forthSpaceError display excludenl "\s\+$"
 | 
						|
    endif
 | 
						|
    if !exists("forth_no_tab_space_error")
 | 
						|
        syn match forthSpaceError display " \+\t"me=e-1
 | 
						|
    endif
 | 
						|
endif
 | 
						|
 | 
						|
" Core words {{{1
 | 
						|
 | 
						|
" basic mathematical and logical operators {{{2
 | 
						|
syn keyword forthOperators * */ */MOD + - / /MOD 0< 0= 1+ 1- 2* 2/ < = > ABS
 | 
						|
syn keyword forthOperators AND FM/MOD INVERT LSHIFT M* MAX MIN MOD NEGATE OR
 | 
						|
syn keyword forthOperators RSHIFT SM/REM U< UM* UM/MOD XOR
 | 
						|
  " extension words
 | 
						|
syn keyword forthOperators 0<> 0> <> U> WITHIN
 | 
						|
  " Forth-79
 | 
						|
syn keyword forthOperators U* U/ U/MOD
 | 
						|
  " Forth-79, Forth-83
 | 
						|
syn keyword forthOperators NOT
 | 
						|
  " Forth-83
 | 
						|
syn keyword forthOperators 2+ 2-
 | 
						|
 | 
						|
" non-standard basic mathematical and logical operators
 | 
						|
syn keyword forthOperators 0<= 0>= 8* <= >= ?DNEGATE ?NEGATE U<= U>= UNDER+
 | 
						|
 | 
						|
" various words that take an input and do something with it {{{2
 | 
						|
syn keyword forthFunction . U.
 | 
						|
  " extension words
 | 
						|
syn keyword forthFunction .R U.R
 | 
						|
 | 
						|
" stack manipulations {{{2
 | 
						|
syn keyword forthStack 2DROP 2DUP 2OVER 2SWAP >R ?DUP DROP DUP OVER R> R@ ROT
 | 
						|
syn keyword forthStack SWAP
 | 
						|
  " extension words
 | 
						|
syn keyword forthStack  NIP PICK ROLL TUCK
 | 
						|
syn keyword forthRStack 2>R 2R> 2R@
 | 
						|
 | 
						|
" non-standard stack manipulations
 | 
						|
syn keyword forthStack  -ROT 3DROP 3DUP 4-ROT 4DROP 4DUP 4ROT 4SWAP 4TUCK
 | 
						|
syn keyword forthStack  5DROP 5DUP 8DROP 8DUP 8SWAP
 | 
						|
syn keyword forthRStack 4>R 4R> 4R@ 4RDROP RDROP
 | 
						|
 | 
						|
" stack pointer manipulations {{{2
 | 
						|
syn keyword forthSP DEPTH
 | 
						|
 | 
						|
" non-standard stack pointer manipulations
 | 
						|
syn keyword forthSP FP!  FP@ LP!  LP@ RP!  RP@ SP!  SP@
 | 
						|
 | 
						|
" address operations {{{2
 | 
						|
syn keyword forthMemory !  +!  2!  2@ @ C!  C@
 | 
						|
syn keyword forthAdrArith ALIGN ALIGNED ALLOT CELL+ CELLS CHAR+ CHARS
 | 
						|
syn keyword forthMemBlks  FILL MOVE
 | 
						|
  " extension words
 | 
						|
syn keyword forthMemBlks  ERASE UNUSED
 | 
						|
 | 
						|
" non-standard address operations
 | 
						|
syn keyword forthAdrArith ADDRESS-UNIT-BITS CELL CFALIGN CFALIGNED FLOAT
 | 
						|
syn keyword forthAdrArith MAXALIGN MAXALIGNED
 | 
						|
 | 
						|
" conditionals {{{2
 | 
						|
syn keyword forthCond ELSE IF THEN
 | 
						|
  " extension words
 | 
						|
syn keyword forthCond CASE ENDCASE ENDOF OF
 | 
						|
 | 
						|
" non-standard conditionals
 | 
						|
syn keyword forthCond ?DUP-0=-IF ?DUP-IF ENDIF
 | 
						|
 | 
						|
" iterations {{{2
 | 
						|
syn keyword forthLoop +LOOP BEGIN DO EXIT I J LEAVE LOOP RECURSE REPEAT UNLOOP
 | 
						|
syn keyword forthLoop UNTIL WHILE
 | 
						|
  " extension words
 | 
						|
syn keyword forthLoop ?DO AGAIN
 | 
						|
 | 
						|
" non-standard iterations
 | 
						|
syn keyword forthLoop +DO -DO -LOOP ?LEAVE DONE FOR K NEXT U+DO U-DO
 | 
						|
 | 
						|
" new words {{{2
 | 
						|
syn match   forthColonDef      "\<:\s*[^ \t]\+\>"
 | 
						|
syn keyword forthEndOfColonDef ;
 | 
						|
syn keyword forthDefine ' , C, CONSTANT CREATE DOES> EXECUTE IMMEDIATE LITERAL
 | 
						|
syn keyword forthDefine POSTPONE STATE VARIABLE ]
 | 
						|
syn match   forthDefine "\<\[']\>"
 | 
						|
syn match   forthDefine "\<\[\>"
 | 
						|
  " extension words
 | 
						|
syn keyword forthColonDef :NONAME
 | 
						|
syn keyword forthDefine   BUFFER: COMPILE, DEFER IS MARKER TO VALUE
 | 
						|
syn match   forthDefine   "\<\[COMPILE]\>"
 | 
						|
  " Forth-79, Forth-83
 | 
						|
syn keyword forthDefine COMPILE
 | 
						|
 | 
						|
" non-standard new words
 | 
						|
syn match   forthClassDef       "\<:CLASS\s*[^ \t]\+\>"
 | 
						|
syn keyword forthEndOfClassDef  ;CLASS
 | 
						|
syn match   forthObjectDef      "\<:OBJECT\s*[^ \t]\+\>"
 | 
						|
syn keyword forthEndOfObjectDef ;OBJECT
 | 
						|
syn match   forthColonDef       "\<:M\s*[^ \t]\+\>"
 | 
						|
syn keyword forthEndOfColonDef  ;M
 | 
						|
syn keyword forthDefine 2, <BUILDS <COMPILATION <INTERPRETATION C; COMP'
 | 
						|
syn keyword forthDefine COMPILATION> COMPILE-ONLY CREATE-INTERPRET/COMPILE
 | 
						|
syn keyword forthDefine CVARIABLE F, FIND-NAME INTERPRET INTERPRETATION>
 | 
						|
syn keyword forthDefine LASTXT NAME>COMP NAME>INT NAME?INT POSTPONE, RESTRICT
 | 
						|
syn keyword forthDefine USER
 | 
						|
syn match   forthDefine "\<\[COMP']\>"
 | 
						|
 | 
						|
" basic character operations {{{2
 | 
						|
syn keyword forthCharOps BL COUNT CR EMIT FIND KEY SPACE SPACES TYPE WORD
 | 
						|
" recognize 'char (' or '[CHAR] (' correctly, so it doesn't
 | 
						|
" highlight everything after the paren as a comment till a closing ')'
 | 
						|
syn match forthCharOps '\<CHAR\s\S\s'
 | 
						|
syn match forthCharOps '\<\[CHAR]\s\S\s'
 | 
						|
  " Forth-83, Forth-94
 | 
						|
syn keyword forthCharOps EXPECT #TIB TIB
 | 
						|
 | 
						|
" non-standard basic character operations
 | 
						|
syn keyword forthCharOps (.)
 | 
						|
 | 
						|
" char-number conversion {{{2
 | 
						|
syn keyword forthConversion # #> #S <# >NUMBER HOLD S>D SIGN
 | 
						|
  " extension words
 | 
						|
syn keyword forthConversion HOLDS
 | 
						|
  " Forth-79, Forth-83, Forth-93
 | 
						|
syn keyword forthConversion CONVERT
 | 
						|
 | 
						|
" non-standard char-number conversion
 | 
						|
syn keyword forthConversion #>> (NUMBER) (NUMBER?) <<# DIGIT DPL HLD NUMBER
 | 
						|
 | 
						|
" interpreter, wordbook, compiler {{{2
 | 
						|
syn keyword forthForth >BODY >IN ACCEPT ENVIRONMENT?  EVALUATE HERE QUIT SOURCE
 | 
						|
  " extension words
 | 
						|
syn keyword forthForth ACTION-OF DEFER!  DEFER@ PAD PARSE PARSE-NAME REFILL
 | 
						|
syn keyword forthForth RESTORE-INPUT SAVE-INPUT SOURCE-ID
 | 
						|
  " Forth-79
 | 
						|
syn keyword forthForth 79-STANDARD
 | 
						|
  " Forth-83
 | 
						|
syn keyword forthForth <MARK <RESOLVE >MARK >RESOLVE ?BRANCH BRANCH FORTH-83
 | 
						|
  " Forth-79, Forth-83, Forth-94
 | 
						|
syn keyword forthForth QUERY
 | 
						|
  " Forth-83, Forth-94
 | 
						|
syn keyword forthForth SPAN
 | 
						|
 | 
						|
" non-standard interpreter, wordbook, compiler
 | 
						|
syn keyword forthForth ) >LINK >NEXT >VIEW ASSERT( ASSERT0( ASSERT1( ASSERT2(
 | 
						|
syn keyword forthForth ASSERT3( BODY> CFA COLD L>NAME LINK> N>LINK NAME> VIEW
 | 
						|
syn keyword forthForth VIEW>
 | 
						|
 | 
						|
" booleans {{{2
 | 
						|
  " extension words
 | 
						|
syn match forthBoolean "\<\%(TRUE\|FALSE\)\>"
 | 
						|
 | 
						|
" numbers {{{2
 | 
						|
syn keyword forthMath  BASE DECIMAL
 | 
						|
  " extension words
 | 
						|
syn keyword forthMath  HEX
 | 
						|
syn match forthInteger '\<-\=\d\+\.\=\>'
 | 
						|
syn match forthInteger '\<#-\=\d\+\.\=\>'
 | 
						|
syn match forthInteger '\<\$-\=\x\+\.\=\>'
 | 
						|
syn match forthInteger '\<%-\=[01]\+\.\=\>'
 | 
						|
 | 
						|
" characters {{{2
 | 
						|
syn match forthCharacter "'\k'"
 | 
						|
 | 
						|
" strings {{{2
 | 
						|
 | 
						|
" Words that end with " are assumed to start string parsing.
 | 
						|
" This includes standard words: S" ."
 | 
						|
syn region forthString matchgroup=forthString start=+\<\S\+"\s+ end=+"+ end=+$+ contains=@Spell
 | 
						|
  " extension words
 | 
						|
syn region forthString matchgroup=forthString start=+\<C"\s+ end=+"+ end=+$+ contains=@Spell
 | 
						|
" Matches S\"
 | 
						|
syn region forthString matchgroup=forthString start=+\<S\\"\s+ end=+"+ end=+$+ contains=@Spell,forthEscape
 | 
						|
 | 
						|
syn match forthEscape +\C\\[abeflmnqrtvz"\\]+ contained
 | 
						|
syn match forthEscape "\C\\x\x\x" contained
 | 
						|
 | 
						|
" comments {{{2
 | 
						|
 | 
						|
syn keyword forthTodo contained TODO FIXME XXX
 | 
						|
 | 
						|
" Some special, non-FORTH keywords
 | 
						|
syn match forthTodo contained "\<\%(TODO\|FIXME\|XXX\)\%(\>\|:\@=\)"
 | 
						|
 | 
						|
" XXX If you find this overkill you can remove it. This has to come after the
 | 
						|
" highlighting for numbers and booleans otherwise it has no effect.
 | 
						|
syn region forthComment start='\<\%(0\|FALSE\)\s\+\[IF]' end='\<\[ENDIF]' end='\<\[THEN]' contains=forthTodo
 | 
						|
 | 
						|
if get(g:, "forth_no_comment_fold", 0)
 | 
						|
    syn region forthComment start='\<(\>' end=')' contains=@Spell,forthTodo,forthSpaceError
 | 
						|
      " extension words
 | 
						|
    syn match  forthComment '\<\\\>.*$' contains=@Spell,forthTodo,forthSpaceError
 | 
						|
else
 | 
						|
    syn region forthComment start='\<(\>' end=')' contains=@Spell,forthTodo,forthSpaceError fold
 | 
						|
      " extension words
 | 
						|
    syn match  forthComment '\<\\\>.*$' contains=@Spell,forthTodo,forthSpaceError
 | 
						|
    syn region forthMultilineComment start="^\s*\\\>" end="\n\%(\s*\\\>\)\@!" contains=forthComment transparent fold
 | 
						|
endif
 | 
						|
 | 
						|
  " extension words
 | 
						|
syn region forthComment start='\<\.(\>' end=')' end='$' contains=@Spell,forthTodo,forthSpaceError
 | 
						|
 | 
						|
" ABORT {{{2
 | 
						|
syn keyword forthForth ABORT
 | 
						|
syn region forthForth start=+\<ABORT"\s+ end=+"\>+ end=+$+
 | 
						|
 | 
						|
" The optional Block word set {{{1
 | 
						|
" Handled as Core words - REFILL
 | 
						|
syn keyword forthBlocks BLK BLOCK BUFFER FLUSH LOAD SAVE-BUFFERS UPDATE
 | 
						|
  " extension words
 | 
						|
syn keyword forthBlocks EMPTY-BUFFERS LIST SCR THRU
 | 
						|
 | 
						|
" Non-standard Block words
 | 
						|
syn keyword forthBlocks +LOAD +THRU --> BLOCK-INCLUDED BLOCK-OFFSET
 | 
						|
syn keyword forthBlocks BLOCK-POSITION EMPTY-BUFFER GET-BLOCK-FID OPEN-BLOCKS
 | 
						|
syn keyword forthBlocks SAVE-BUFFER UPDATED? USE
 | 
						|
 | 
						|
" The optional Double-Number word set {{{1
 | 
						|
syn keyword forthConversion D>S
 | 
						|
syn keyword forthDefine     2CONSTANT 2LITERAL 2VARIABLE
 | 
						|
syn keyword forthFunction   D. D.R
 | 
						|
syn keyword forthOperators  D+ D- D0= D2* D2/ D= DABS DMAX DMIN DNEGATE
 | 
						|
syn keyword forthOperators  D0< D< M+ M*/
 | 
						|
  " extension words
 | 
						|
syn keyword forthDefine    2VALUE
 | 
						|
syn keyword forthOperators DU<
 | 
						|
syn keyword forthStack     2ROT
 | 
						|
 | 
						|
" Non-standard Double-Number words
 | 
						|
syn keyword forthOperators D0<= D0<> D0> D0>= D<= D<> D> D>= DU<= DU> DU>=
 | 
						|
syn keyword forthStack     2-ROT 2NIP 2RDROP 2TUCK
 | 
						|
 | 
						|
" The optional Exception word set {{{1
 | 
						|
" Handled as Core words - ABORT ABORT"
 | 
						|
syn keyword forthCond CATCH THROW
 | 
						|
 | 
						|
" The optional Facility word set {{{1
 | 
						|
syn keyword forthCharOps AT-XY KEY?  PAGE
 | 
						|
  " extension words
 | 
						|
syn keyword forthCharOps EKEY EKEY>CHAR EKEY>FKEY EKEY?  EMIT?  K-ALT-MASK
 | 
						|
syn keyword forthCharOps K-CTRL-MASK K-DELETE K-DOWN K-END K-F1 K-F10 K-F11
 | 
						|
syn keyword forthCharOps K-F12 K-F2 K-F3 K-F4 K-F5 K-F6 K-F7 K-F8 K-F9 K-HOME
 | 
						|
syn keyword forthCharOps K-INSERT K-LEFT K-NEXT K-PRIOR K-RIGHT K-SHIFT-MASK
 | 
						|
syn keyword forthCharOps K-UP
 | 
						|
syn keyword forthDefine  +FIELD BEGIN-STRUCTURE CFIELD: END-STRUCTURE FIELD:
 | 
						|
syn keyword forthForth   MS TIME&DATE
 | 
						|
 | 
						|
" The optional File-Access word set {{{1
 | 
						|
" Handled as Core words - REFILL SOURCE-ID S\" S" (
 | 
						|
syn keyword forthFileMode  BIN R/O R/W W/O
 | 
						|
syn keyword forthFileWords CLOSE-FILE CREATE-FILE DELETE-FILE FILE-POSITION
 | 
						|
syn keyword forthFileWords FILE-SIZE INCLUDE-FILE INCLUDED OPEN-FILE READ-FILE
 | 
						|
syn keyword forthFileWords READ-LINE REPOSITION-FILE RESIZE-FILE WRITE-FILE
 | 
						|
syn keyword forthFileWords WRITE-LINE
 | 
						|
  " extension words
 | 
						|
syn keyword forthFileWords FILE-STATUS FLUSH-FILE RENAME-FILE REQUIRED
 | 
						|
syn match forthInclude '\<INCLUDE\s\+\k\+'
 | 
						|
syn match forthInclude '\<REQUIRE\s\+\k\+'
 | 
						|
 | 
						|
" Non-standard File-Access words
 | 
						|
syn keyword forthFileWords EMIT-FILE KEY-FILE KEY?-FILE SLURP-FID SLURP-FILE
 | 
						|
syn keyword forthFileWords STDERR STDIN STDOUT
 | 
						|
syn match forthInclude '^FLOAD\s\+'
 | 
						|
syn match forthInclude '^NEEDS\s\+'
 | 
						|
 | 
						|
" The optional Floating-Point word set {{{1
 | 
						|
 | 
						|
" numbers
 | 
						|
syn match   forthFloat      '\<[+-]\=\d\+\.\=\d*[DdEe][+-]\=\d*\>'
 | 
						|
 | 
						|
syn keyword forthConversion >FLOAT D>F F>D
 | 
						|
syn keyword forthAdrArith   FALIGN FALIGNED FLOAT+ FLOATS
 | 
						|
syn keyword forthDefine     FCONSTANT FLITERAL FVARIABLE
 | 
						|
syn keyword forthFStack     FDROP FDUP FOVER FROT FSWAP
 | 
						|
syn keyword forthFunction   REPRESENT
 | 
						|
syn keyword forthMemory     F! F@
 | 
						|
syn keyword forthOperators  F* F+ F- F/ F0< F0= F< FLOOR FMAX FMIN FNEGATE
 | 
						|
syn keyword forthOperators  FROUND
 | 
						|
syn keyword forthSP         FDEPTH
 | 
						|
  " extension words
 | 
						|
syn keyword forthConversion F>S S>F
 | 
						|
syn keyword forthAdrArith   DFALIGN DFALIGNED DFLOAT+ DFLOATS SFALIGN
 | 
						|
syn keyword forthAdrArith   SFALIGNED SFLOAT+ SFLOATS
 | 
						|
syn keyword forthDefine     DFFIELD: FFIELD: FVALUE SFFIELD:
 | 
						|
syn keyword forthFunction   F. FE. FS. PRECISION SET-PRECISION
 | 
						|
syn keyword forthMemory     DF! DF@ SF! SF@
 | 
						|
syn keyword forthOperators  F** FABS FACOS FACOSH FALOG FASIN FASINH FATAN
 | 
						|
syn keyword forthOperators  FATAN2 FATANH FCOS FCOSH FEXP FEXPM1 FLN FLNP1
 | 
						|
syn keyword forthOperators  FLOG FSIN FSINCOS FSINH FSQRT FTAN FTANH FTRUNC F~
 | 
						|
 | 
						|
" Non-standard Floating-Point words
 | 
						|
syn keyword forthOperators 1/F F2* F2/ F~ABS F~REL
 | 
						|
syn keyword forthFStack    FNIP FTUCK
 | 
						|
 | 
						|
" The optional Locals word set {{{1
 | 
						|
syn keyword forthForth (LOCAL)
 | 
						|
  " extension words
 | 
						|
syn region forthLocals start="\<{:\>" end="\<:}\>"
 | 
						|
syn region forthLocals start="\<LOCALS|\>" end="\<|\>"
 | 
						|
 | 
						|
" Non-standard Locals words
 | 
						|
syn region forthLocals start="\<{\>" end="\<}\>"
 | 
						|
 | 
						|
" The optional Memory-Allocation word set {{{1
 | 
						|
syn keyword forthMemory ALLOCATE FREE RESIZE
 | 
						|
 | 
						|
" The optional Programming-Tools wordset {{{1
 | 
						|
syn keyword forthDebug .S ? DUMP SEE WORDS
 | 
						|
  " extension words
 | 
						|
syn keyword forthAssembler ;CODE ASSEMBLER CODE END-CODE
 | 
						|
syn keyword forthCond      AHEAD CS-PICK CS-ROLL
 | 
						|
syn keyword forthDefine    NAME>COMPILE NAME>INTERPRET NAME>STRING SYNONYM
 | 
						|
syn keyword forthDefine    TRAVERSE-WORDLIST
 | 
						|
syn match   forthDefine    "\<\[DEFINED]\>"
 | 
						|
syn match   forthDefine    "\<\[ELSE]\>"
 | 
						|
syn match   forthDefine    "\<\[IF]\>"
 | 
						|
syn match   forthDefine    "\<\[THEN]\>"
 | 
						|
syn match   forthDefine    "\<\[UNDEFINED]\>"
 | 
						|
syn keyword forthForth     BYE FORGET
 | 
						|
syn keyword forthStack     N>R NR>
 | 
						|
syn keyword forthVocs      EDITOR
 | 
						|
 | 
						|
" Non-standard Programming-Tools words
 | 
						|
syn keyword forthAssembler FLUSH-ICACHE
 | 
						|
syn keyword forthDebug     PRINTDEBUGDATA PRINTDEBUGLINE
 | 
						|
syn match   forthDebug     "\<\~\~\>"
 | 
						|
syn match   forthDefine    "\<\[+LOOP]\>"
 | 
						|
syn match   forthDefine    "\<\[?DO]\>"
 | 
						|
syn match   forthDefine    "\<\[AGAIN]\>"
 | 
						|
syn match   forthDefine    "\<\[BEGIN]\>"
 | 
						|
syn match   forthDefine    "\<\[DO]\>"
 | 
						|
syn match   forthDefine    "\<\[ENDIF]\>"
 | 
						|
syn match   forthDefine    "\<\[IFDEF]\>"
 | 
						|
syn match   forthDefine    "\<\[IFUNDEF]\>"
 | 
						|
syn match   forthDefine    "\<\[LOOP]\>"
 | 
						|
syn match   forthDefine    "\<\[NEXT]\>"
 | 
						|
syn match   forthDefine    "\<\[REPEAT]\>"
 | 
						|
syn match   forthDefine    "\<\[UNTIL]\>"
 | 
						|
syn match   forthDefine    "\<\[WHILE]\>"
 | 
						|
 | 
						|
" The optional Search-Order word set {{{1
 | 
						|
" Handled as Core words - FIND
 | 
						|
syn keyword forthVocs DEFINITIONS FORTH-WORDLIST GET-CURRENT GET-ORDER
 | 
						|
syn keyword forthVocs SEARCH-WORDLIST SET-CURRENT SET-ORDER WORDLIST
 | 
						|
  " extension words
 | 
						|
syn keyword forthVocs ALSO FORTH ONLY ORDER PREVIOUS
 | 
						|
  " Forth-79, Forth-83
 | 
						|
syn keyword forthVocs CONTEXT CURRENT VOCABULARY
 | 
						|
 | 
						|
" Non-standard Search-Order words
 | 
						|
syn keyword forthVocs #VOCS ROOT SEAL VOCS
 | 
						|
 | 
						|
" The optional String word set {{{1
 | 
						|
syn keyword forthFunction -TRAILING /STRING BLANK CMOVE CMOVE> COMPARE SEARCH
 | 
						|
syn keyword forthFunction SLITERAL
 | 
						|
  " extension words
 | 
						|
syn keyword forthFunction REPLACES SUBSTITUTE UNESCAPE
 | 
						|
 | 
						|
" The optional Extended-Character word set {{{1
 | 
						|
" Handled as Core words - [CHAR] CHAR and PARSE
 | 
						|
syn keyword forthAdrArith XCHAR+
 | 
						|
syn keyword forthCharOps  X-SIZE XC-SIZE XEMIT XKEY XKEY?
 | 
						|
syn keyword forthDefine   XC,
 | 
						|
syn keyword forthMemory   XC!+ XC!+? XC@+
 | 
						|
  " extension words
 | 
						|
syn keyword forthAdrArith   XCHAR- +X/STRING X\\STRING-
 | 
						|
syn keyword forthCharOps    EKEY>XCHAR X-WIDTH XC-WIDTH
 | 
						|
syn keyword forthConversion XHOLD
 | 
						|
syn keyword forthString     -TRAILING-GARBAGE
 | 
						|
 | 
						|
" Define the default highlighting {{{1
 | 
						|
hi def link forthBoolean Boolean
 | 
						|
hi def link forthCharacter Character
 | 
						|
hi def link forthTodo Todo
 | 
						|
hi def link forthOperators Operator
 | 
						|
hi def link forthMath Number
 | 
						|
hi def link forthInteger Number
 | 
						|
hi def link forthFloat Float
 | 
						|
hi def link forthStack Special
 | 
						|
hi def link forthRstack Special
 | 
						|
hi def link forthFStack Special
 | 
						|
hi def link forthSP Special
 | 
						|
hi def link forthMemory Function
 | 
						|
hi def link forthAdrArith Function
 | 
						|
hi def link forthMemBlks Function
 | 
						|
hi def link forthCond Conditional
 | 
						|
hi def link forthLoop Repeat
 | 
						|
hi def link forthColonDef Define
 | 
						|
hi def link forthEndOfColonDef Define
 | 
						|
hi def link forthDefine Define
 | 
						|
hi def link forthDebug Debug
 | 
						|
hi def link forthAssembler Include
 | 
						|
hi def link forthCharOps Character
 | 
						|
hi def link forthConversion String
 | 
						|
hi def link forthForth Statement
 | 
						|
hi def link forthVocs Statement
 | 
						|
hi def link forthEscape Special
 | 
						|
hi def link forthString String
 | 
						|
hi def link forthComment Comment
 | 
						|
hi def link forthClassDef Define
 | 
						|
hi def link forthEndOfClassDef Define
 | 
						|
hi def link forthObjectDef Define
 | 
						|
hi def link forthEndOfObjectDef Define
 | 
						|
hi def link forthInclude Include
 | 
						|
hi def link forthLocals Type " nothing else uses type and locals must stand out
 | 
						|
hi def link forthFileMode Function
 | 
						|
hi def link forthFunction Function
 | 
						|
hi def link forthFileWords Statement
 | 
						|
hi def link forthBlocks Statement
 | 
						|
hi def link forthSpaceError Error
 | 
						|
"}}}
 | 
						|
 | 
						|
let b:current_syntax = "forth"
 | 
						|
 | 
						|
let &cpo = s:cpo_save
 | 
						|
unlet s:cpo_save
 | 
						|
 | 
						|
" vim:ts=8:sw=4:nocindent:smartindent:fdm=marker:tw=78
 | 
						|
 |