[S S N
_Push_0][S N
S _Duplicate_0][T N
T T _Read_STDIN_as_integer][T T T _Retrieve_input][T N
S T _Print_as_integer]
Harfler S
(boşluk), T
(sekme) ve N
(yeni satır) yalnızca vurgulama olarak eklendi.
[..._some_action]
yalnızca açıklama olarak eklendi.
Çevrimiçi deneyin. Kodu çevrimiçi Whitespace-compiler vii5ard'da çalıştırmak için kodu kendiniz kopyalayıp yapıştırmanız gerekir (SE'nin sekmeleri bir sürü boşluğa dönüştürdüğünü unutmayın!). Çalıştır'ı tıklattığınızda, bir giriş (yani -285.5
) isteyecek ve enter'a tıkladıktan sonra devam edecek ve çıkacaktır -283
.
Sahte kodda açıklama:
Integer i = STDIN as integer
Print i as integer
Boşluk yalnızca G / Ç'yi tamsayı veya tek karakter olarak kullanabilir, bu durumda girdiyi tamsayı olarak okur ve diğer diğer karakterleri yok sayar. Yani -283.5
veya -283abc5
her ikisi de giriş (ve dolayısıyla çıkış) olarak olacaktır -283
.
Ne yazık ki bu yukarıdaki iki nedenden dolayı TIO üzerinde çalışmaz (tüm Whitespace derleyicileri biraz farklıdır.):
- Bu bir verecektir
no parse
biz geçerli bir tamsayı değil tamsayı olarak bir giriş, okumaya çalışırken hata. Bunun yerine, her seferinde bir karakter okuyacağız ve karşılaştığımız anda (bir hata ile) dururuz .
veya daha fazla girdi olmaz (yani 50
/ -50
).
- Vii5ard derleyicisinde 0'ı sadece itmek de mümkündür
SSN
, oysa TIO'da ek S
veya T
: SSSN
/ gerekir SSTN
. İlk S
olan Yığın Manipülasyon etkinleştirme ; İkinci S
ise tamsayı olarak ne şu itin ; üçüncü S
/ T
sırasıyla pozitif / negatif; ve herhangi bir S
/ T
sonrasını (arkasından an N
) ikiliyi itmek istediğimiz sayıdır, nerede S=0
ve T=1
. Tam sayı 0 için bu ikili kısım önemli değildir, çünkü varsayılan olarak 0'dır. Ancak TIO'da hala pozitif / negatif belirtmek zorundayız ve vii5ard gibi diğer birçok Whitespace derleyicisiyle değil.
[N
S S N
_Create_Label_LOOP][S S S N
_Push_0][S N
S _Duplicate_0][T N
T S _Read_STDIN_as_character][T T T _Retrieve_input][S N
S _Duplicate_input][S S S T S T T T S N
_Push_46_.][T S S T _Subtract][N
T S S N
_If_0_Jump_to_Label_EXIT][T N
S S _Print_as_character][N
S N
N
_Jump_to_Label_LOOP]
Harfler S
(boşluk), T
(sekme) ve N
(yeni satır) yalnızca vurgulama olarak eklendi.
[..._some_action]
yalnızca açıklama olarak eklendi.
Çevrimiçi deneyin (yalnızca ham alanlar, sekmeler ve yeni satırlarla).
Sahte kodda açıklama:
Start LOOP:
Character c = STDIN as character
If(c == '.'):
Exit program
Print c as character
Go to the next iteration of LOOP
3.00
için3.14
?