mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			137 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Forth
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Forth
		
	
	
	
	
	
| \ -*- forth -*- Copyright 2004, 2013 Lars Brinkhoff
 | |
| 
 | |
| \ Kernel: #tib
 | |
| \ TODO:   .r
 | |
| 
 | |
| : .( ( "<string><paren>" -- )
 | |
|     [char] ) parse type ; immediate
 | |
| 
 | |
| : 0<> ( n -- flag )   0 <> ;
 | |
| 
 | |
| : 0> ( n -- flag )   0 > ;
 | |
| 
 | |
| \ Kernel: 2>r
 | |
| 
 | |
| : 2r> ( -- x1 x2 ) ( R: x1 x2 -- )   r> r> r> rot >r swap ;
 | |
| 
 | |
| : 2r@ ( -- x1 x2 ) ( R: x1 x2 -- x1 x2 )   2r> 2dup 2>r ;
 | |
| 
 | |
| : :noname   align here  0 c, 15 allot  lastxt dup @ , !
 | |
|             [ ' enter >code @ ] literal , 0 , ] lastxt @ ;
 | |
| 
 | |
| \ Kernel: <>
 | |
| 
 | |
| \ : ?do ( n1 n2 -- ) ( R: -- loop-sys ) ( C: -- do-sys )
 | |
| \     here  postpone 2>r  unresolved branch  here ;
 | |
| 
 | |
| : again ( -- ) ( C: dest -- )
 | |
|     postpone branch , ; immediate
 | |
| 
 | |
| : string+ ( caddr -- addr )
 | |
|     count + aligned ;
 | |
| 
 | |
| : (c") ( -- caddr ) ( R: ret1 -- ret2 )
 | |
|     r> dup string+ >r ;
 | |
| 
 | |
| : c" ( "<string><quote>" -- caddr )
 | |
|     postpone (c")  [char] " parse  dup c,  string, ; immediate
 | |
| 
 | |
| : case ( -- ) ( C: -- case-sys )
 | |
|     0 ;
 | |
| 
 | |
| : compile, ( xt -- )
 | |
|     , ;
 | |
| 
 | |
| \ TODO: convert
 | |
| 
 | |
| : endcase ( x -- ) ( C: case-sys -- )
 | |
|     0 do  postpone then  loop
 | |
|     postpone drop ;
 | |
| 
 | |
| : endof ( -- ) ( C: case-sys1 of-sys -- case-sys2 )
 | |
|     postpone else  swap 1+ ;
 | |
| 
 | |
| \ TODO: erase
 | |
| \ TODO: expect
 | |
| 
 | |
| : false ( -- 0 )
 | |
|     0 ;
 | |
| 
 | |
| : hex ( -- )
 | |
|     16 base ! ;
 | |
| 
 | |
| \ TODO:   marker
 | |
| \ Kernel: nip
 | |
| 
 | |
| : of ( x x -- | x y -- x ) ( C: -- of-sys )
 | |
|     postpone over  postpone =  postpone if  postpone drop ;
 | |
| 
 | |
| \ Kernel: pad
 | |
| \ Kernel: parse
 | |
| 
 | |
| : pick ( xn ... x0 n -- xn ... x0 xn )
 | |
|     2 + cells 'SP @ + @ ;
 | |
| 
 | |
| : query ( -- )
 | |
|     tib ''source !  #tib ''#source !  0 'source-id !
 | |
|     refill drop ;
 | |
| 
 | |
| \ Kernel: refill
 | |
| \ Kernel: restore-input
 | |
| 
 | |
| \ TODO: roll ( xn xn-1 ... x0 n -- xn-1 ... x0 xn ) ;
 | |
| 
 | |
| \ Kernel: save-input
 | |
| \ Kernel: source-id
 | |
| \ TODO:   span
 | |
| \ Kernel: tib
 | |
| 
 | |
| : to ( x "word" -- )
 | |
|     ' >body , ;
 | |
| 
 | |
| : true ( -- -1 )
 | |
|     -1 ;
 | |
| 
 | |
| : tuck ( x y -- y x y )
 | |
|     swap over ;
 | |
| 
 | |
| \ TODO: u.r
 | |
| 
 | |
| : u> ( x y -- flag )
 | |
|     2dup u< if 2drop false else <> then ;
 | |
| 
 | |
| \ TODO: unused
 | |
| 
 | |
| : value ( x "word" -- )
 | |
|     create ,
 | |
|   does> ( -- x )
 | |
|     @ ;
 | |
| 
 | |
| : within   over - >r - r> u< ;
 | |
| 
 | |
| \ TODO: [compile]
 | |
| 
 | |
| \ Kernel: \
 | |
| 
 | |
| \ ----------------------------------------------------------------------
 | |
| 
 | |
| ( Forth2012 core extension words. )
 | |
| 
 | |
| \ TODO: action-of
 | |
| 
 | |
| \ TODO: buffer:
 | |
| 
 | |
| : defer   create ['] abort ,  does> @ execute ;
 | |
| 
 | |
| : defer! ( xt2 xt1 -- )   >body ! ;
 | |
| 
 | |
| : defer@ ( xt1 -- xt2 )   >body @ ;
 | |
| 
 | |
| \ TODO: holds
 | |
| 
 | |
| : is ( xt "word" -- )   ' defer! ;
 | |
| 
 | |
| \ TODO: parse-name
 | |
| 
 | |
| \ TODO: s\"
 |