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

46 lines
887 B
Plaintext

DEF BRAINFUG CODE$, IN$
DIM TAPE[30000]
VAR PNT
'not sure if len is eval'd each time oh well
FOR I=0 TO LEN(CODE$)-1
C$=CODE$[I]
IF C$==">" THEN
INC PNT
ELSEIF C$=="<" THEN
DEC PNT
ELSEIF C$=="+" THEN
INC TAPE[PNT]
ELSEIF C$=="-" THEN
DEC TAPE[PNT]
ELSEIF C$=="." THEN
PRINT CHR$(TAPE[PNT])
ELSEIF C$=="," THEN
TAPE[PNT] = ASC(SHIFT(IN$))
ELSEIF C$=="[" AND TAPE[PNT]==0 THEN
NEST = 1
WHILE NEST
INC I
IF CODE$[I]=="[" THEN
INC NEST
ELSEIF CODE$[I]=="]" THEN
DEC NEST
ENDIF
WEND
ELSEIF C$=="]" AND TAPE[PNT]!=0 THEN
NEST=1
WHILE NEST
DEC I
IF CODE$[I]=="]" THEN
INC NEST
ELSEIF CODE$[I]=="[" THEN
DEC NEST
ENDIF
WEND
ENDIF
NEXT
PRINT
END
CODE$="++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++."
BRAINFUG CODE$, ""