summaryrefslogtreecommitdiffstats
path: root/qemu/roms/SLOF/slof/fs/preprocessor.fs
blob: a13fb300482e20e0eadea6c0cba50a6cee737031 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
\ *****************************************************************************
\ * Copyright (c) 2004, 2008 IBM Corporation
\ * All rights reserved.
\ * This program and the accompanying materials
\ * are made available under the terms of the BSD License
\ * which accompanies this distribution, and is available at
\ * http://www.opensource.org/licenses/bsd-license.php
\ *
\ * Contributors:
\ *     IBM Corporation - initial implementation
\ ****************************************************************************/

: ([IF])
  BEGIN
    BEGIN parse-word dup 0= WHILE
      2drop refill
    REPEAT

    2dup s" [IF]" str= IF 1 throw THEN
    2dup s" [ELSE]" str= IF 2 throw THEN
    2dup s" [THEN]" str= IF 3 throw THEN
    s" \" str= IF linefeed parse 2drop THEN
  AGAIN
  ;

: [IF] ( flag -- )
  IF exit THEN
  1 BEGIN
    ['] ([IF]) catch 
    CASE
      1 OF 1+ ENDOF
      2 OF dup 1 = if 1- then ENDOF
      3 OF 1- ENDOF
    ENDCASE
    dup 0 <=
  UNTIL drop
; immediate

: [ELSE] 0 [COMPILE] [IF] ; immediate
: [THEN] ; immediate