Subleq: Difference between revisions
Content added Content deleted
(→{{header|SNOBOL}}: Add implementation) |
|||
Line 3,339: | Line 3,339: | ||
{{out}} |
{{out}} |
||
<pre>HELLO, WORLD.</pre> |
<pre>HELLO, WORLD.</pre> |
||
=={{header|SNOBOL4}}== |
|||
All "addresses" get 1 added to them before being used as array indexes. |
|||
<syntaxhighlight lang="snobol"> MEM = ARRAY('32') |
|||
MEM<1> = 15 |
|||
MEM<2> = 17 |
|||
MEM<3> = -1 |
|||
MEM<4> = 17 |
|||
MEM<5> = -1 |
|||
MEM<6> = -1 |
|||
MEM<7> = 16 |
|||
MEM<8> = 1 |
|||
MEM<9> = -1 |
|||
MEM<10> = 16 |
|||
MEM<11> = 3 |
|||
MEM<12> = -1 |
|||
MEM<13> = 15 |
|||
MEM<14> = 15 |
|||
MEM<15> = 0 |
|||
MEM<16> = 0 |
|||
MEM<17> = -1 |
|||
MEM<18> = 72 |
|||
MEM<19> = 101 |
|||
MEM<20> = 108 |
|||
MEM<21> = 108 |
|||
MEM<22> = 111 |
|||
MEM<23> = 44 |
|||
MEM<24> = 32 |
|||
MEM<25> = 119 |
|||
MEM<26> = 111 |
|||
MEM<27> = 114 |
|||
MEM<28> = 108 |
|||
MEM<29> = 100 |
|||
MEM<30> = 33 |
|||
MEM<31> = 10 |
|||
MEM<32> = 0 |
|||
INBUF = |
|||
OUTBUF = |
|||
BP = 0 |
|||
IP = 0 |
|||
LOOP GE(IP, 0) :F(DONE) |
|||
A = MEM<IP + 1> |
|||
B = MEM<IP + 2> |
|||
C = MEM<IP + 3> |
|||
IP = IP + 3 |
|||
GE(A, 0) :S(NOIN) |
|||
LE(BP,SIZE(INBUF)) :S(GETCH) |
|||
INBUF = INPUT |
|||
BP = 1 |
|||
GETCH &ALPHABET @N SUBSTR(INBUF,BP,1) |
|||
MEM<B + 1> = N |
|||
BP = BP + 1 :(LOOP) |
|||
NOIN GE(B, 0) :S(NOOUT) |
|||
EQ(MEM<A + 1>, 10) :F(PUTCH) |
|||
OUTPUT = OUTBUF |
|||
OUTBUF = :(LOOP) |
|||
PUTCH OUTBUF = OUTBUF CHAR(MEM<A + 1>) :(LOOP) |
|||
NOOUT MEM<B + 1> = MEM<B + 1> - MEM<A + 1> |
|||
LE(MEM<B + 1>, 0) :F(LOOP) |
|||
IP = C :(LOOP) |
|||
DONE EQ(SIZE(OUTBUF),0) :S(END) |
|||
OUTPUT = OUTBUF |
|||
END<syntaxhighlight> |
|||
{{Out}} |
|||
<pre>Hello, world!</pre> |
|||
=={{header|Swift}}== |
=={{header|Swift}}== |