Jimmy's papa今天學習如何使用Forth的if..then控制結構(Control Structure)積木,這類積木只能在定義(編譯)高階積木時使用,不能用在解譯時期,且
if積木與
then積木必須成對使用,if..then積木之間可巢狀內含其他的if..then積木
由於Forth後置語法的關係,邏輯條件運算必需先於
if積木完成,
if積木會取堆疊頂端值(Top of Stack),若數值不為0,則為真(True),若數值等於0,則為假(False)
下面是Jimmy's papa拉一拉積木,所做的範例
這是產生出來的Forth原始碼
: test if s" TOS is non-zero" then ; 1 test .s
這是產生出來的Forth原始碼
: test if s" TOS is non-zero" then ; 0 test .s
這是產生出來的Forth原始碼
: test if s" TOS is non-zero." else s" TOS is zero." then ; 1 test 0 test .s
執行
exit積木,Forth將從目前的高階積木離開,此動作會清掉返回堆疊(Return Stack)頂端,
所以若高階積木有用到
>r積木將資料暫存於返回堆疊(Return Stack),則需在執行exit積木之前,
先執行
r>積木將暫存資料從返回堆疊(Return Stack)移回資料堆疊(Data Stack)
這是產生出來的Forth原始碼
: test dup 1 = if drop s" one" exit then 2 = if s" two" exit then ; 2 test .s
沒有留言:
張貼留言