RosettaCodeData/Task/Execute-Brain-/SmileBASIC/execute-brain--1.basic

51 lines
840 B
Plaintext

CLEAR
CODE$="++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--"
CODE$=CODE$+"------.>>+.>++."
INPUT$=""
II=0 'INPUT INDEX
PIM TAPE(30000)
P=0
FOR I=0 TO LEN(CODE$)-1
C$=MID$(CODE$, I, 1)
IF C$==">" THEN P=P+1
IF C$=="<" THEN P=P-1
IF C$=="+" THEN TAPE(P)=TAPE(P)+1
IF C$=="-" THEN TAPE(P)=TAPE(P)-1
IF C$=="." THEN PRINT CHR$(TAPE(P));
IF C$=="," THEN @COMMA
IF C$=="[" AND TAPE(P)==0 THEN @LBRACKET
IF C$=="]" AND TAPE(P)!=0 THEN @RBRACKET
GOTO @NEXT
@COMMA
TAPE(P)=ASC(MID$(INPUT$, II, 1))
II=II+1
GOTO @NEXT
@LBRACKET
NEST = 1
@FINDR
I=I+1
C$=MID$(CODE$, I, 1)
IF C$=="[" THEN NEST=NEST+1
IF C$=="]" THEN NEST=NEST-1
IF NEST THEN @FINDR
GOTO @NEXT
@RBRACKET
NEST=1
@FINDL
I=I-1
C$=MID$(CODE$, I, 1)
IF C$=="[" THEN NEST=NEST-1
IF C$=="]" THEN NEST=NEST+1
IF NEST THEN @FINDL
@NEXT
NEXT