From ac97d79c52faf658eaabe9d1f8ec9c82371ea41b Mon Sep 17 00:00:00 2001 From: Koichi Nakamura Date: Wed, 6 Jan 2021 03:33:48 +0900 Subject: [PATCH] Add orelse --- bootstrap.fs | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/bootstrap.fs b/bootstrap.fs index 88dec1d..bb22d28 100644 --- a/bootstrap.fs +++ b/bootstrap.fs @@ -1319,7 +1319,12 @@ decimal : abort ABORTED-ERROR throw ; +: orelse ( f e -- e ) + swap if drop success then +; + ( === Dump of data stack === ) + : .s ( -- ) sp0 sp@ - cell- cell / ( depth of the stack ) '<' emit 0 u.r '>' emit space @@ -1956,29 +1961,21 @@ codegen-target @ s" i386-linux" str= [if] 6 constant SYS_CLOSE : (open-file) ( c-addr fam -- obj f ) - swap SYS_OPEN syscall2 dup 0>= if success else OPEN-FILE-ERROR then + swap SYS_OPEN syscall2 dup 0>= OPEN-FILE-ERROR orelse ; : (close-file) ( obj -- f ) - SYS_CLOSE syscall1 0>= if success else CLOSE-FILE-ERROR then + SYS_CLOSE syscall1 0>= CLOSE-FILE-ERROR orelse ; : (read-file) ( c-addr u fd -- u2 f ) - >r swap r> SYS_READ syscall3 dup 0>= if - success - else - READ-FILE-ERROR - then + >r swap r> SYS_READ syscall3 dup 0>= READ-LINE-ERROR orelse ; : (write-file) ( c-addr u1 fd -- f ) >r swap >r dup r> r> \ ( u1 u1 c-addr fd ) SYS_WRITE syscall3 \ ( u1 u2 ) - = if - success - else - WRITE-FILE-ERROR - then + = WRITE-FILE-ERROR orelse ; [else] \ i386-linux