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}}==