[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]
強調表示としてのみ追加される文字S
(スペース)、T
(タブ)、およびN
(改行)。
[..._some_action]
説明としてのみ追加。
オンラインでお試しください。オンラインのWhitespace-compiler vii5ardでコードを実行するには、コードを自分でコピーして貼り付ける必要があります(SEはタブを一連のスペースに変換します!)。[実行]をクリックすると、入力(つまり-285.5
)が要求され、[入力]をクリックすると、続行して出力されます-283
。
擬似コードの説明:
Integer i = STDIN as integer
Print i as integer
空白は整数または単一文字としてのみI / Oを使用できるため、この場合、入力を整数として読み取り、他の後続文字を無視します。すなわち、-283.5
またはの-283abc5
両方が入力(したがって出力)として使用され-283
ます。
残念ながら、これは2つの理由でTIOでは機能しません(すべてのWhitespaceコンパイラはわずかに異なります。):
no parse
有効な整数ではない整数として入力を読み取ろうとすると、エラーが発生します。そのため、代わりに一度に1文字ずつ読み取り、.
入力が検出されるか入力がなくなるとすぐに(エラーで)停止します(つまり50
/ -50
)。
- vii5ardコンパイラでは、just
SSN
で0をプッシュすることもできますが、TIOでは追加のS
or T
:SSSN
/ が必要SSTN
です。1つ目S
は、スタック操作の有効化です。2つ目S
は、整数として続くプッシュです。3番目のS
/ T
はそれぞれ正/負です。そして、その後のS
/ T
(後に続くN
)は、バイナリでプッシュする番号です。ここでS=0
およびT=1
です。整数0の場合、デフォルトでは0であるため、このバイナリ部分は重要ではありません。しかし、TIOでは、ポジティブ/ネガティブを指定する必要があり、vii5ardのような他のほとんどのホワイトスペースコンパイラではそうではありません。
[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]
強調表示としてのみ追加される文字S
(スペース)、T
(タブ)、およびN
(改行)。
[..._some_action]
説明としてのみ追加。
オンラインで試してください(未加工のスペース、タブ、改行のみ)。
擬似コードの説明:
Start LOOP:
Character c = STDIN as character
If(c == '.'):
Exit program
Print c as character
Go to the next iteration of LOOP
3.00
のために3.14
?