Execute Brain****: Difference between revisions

Added AppleScript
(PHP version, Tested, works fine)
(Added AppleScript)
Line 22:
[[/Ada|Implementation in Ada]].
 
=={{header|AppleScript}}==
<lang AppleScript>
set codeString to text returned of (display dialog "Enter BF code:" buttons "OK" default answer "")
set inputString to text returned of (display dialog "Enter input string" buttons "OK" default answer "")
set codePointer to 1
set loopPosns to {}
set tape to {}
set tapePointer to 1
set output to {}
set inputPointer to 1
 
on betterMod(x, y) -- so -2 mod 256 is 254 instead of -2
local x
local y
try
return -y * (round (x / y) rounding down) + x
on error eMsg number eNum
error "Can't call betterMod() on " & eMsg number eNum
end try
end betterMod
 
repeat while codePointer ≤ length of codeString
set theChar to (get character codePointer of codeString)
if (theChar = "+") then
if (length of tape < tapePointer) then
set tape to tape & 0
end if
set item tapePointer of tape to betterMod(((get item tapePointer of tape) + 1), 256)
else if (theChar = "-") then
if (length of tape < tapePointer) then
set tape to tape & 0
end if
set item tapePointer of tape to betterMod(((get item tapePointer of tape) - 1), 256)
else if (theChar = "<") then
set tapePointer to tapePointer - 1
else if (theChar = ">") then
set tapePointer to tapePointer + 1
else if (theChar = "[") then
set loopPosns to loopPosns & codePointer
else if (theChar = "]") then
if (item tapePointer of tape ≠ 0) then
set codePointer to (item (length of loopPosns) of loopPosns) - 1
set loopPosns to items 1 thru ((length of loopPosns)) of loopPosns
end if
else if (theChar = ".") then
set output to output & item tapePointer of tape
else if (theChar = ",") then
if (length of tape < tapePointer) then
set tape to tape & 0
end if
if (inputPointer > length of inputString) then
set inputPointer to 1
end if
set item tapePointer of tape to id of item inputPointer of inputString
set inputPointer to inputPointer + 1
end if
set codePointer to codePointer + 1
end repeat
 
set strout to string id output
display dialog strout
</lang>
=={{header|AutoHotkey}}==