-- Main Brainfuck interpreter. If you can program in Brainfuck (and in Lua), -- you certainly don't need any explanation on the code below! return function(s) local subst = {["+"]="v=v+1 ", ["-"]="v=v-1 ", [">"]="i=i+1 ", ["<"]="i=i-1 ", ["."] = "w(v)", [","]="v=r()", ["["]="while v~=0 do ", ["]"]="end "} local env = setmetatable({ i=0, t=setmetatable({},{__index=function() return 0 end}), r=function() return io.read(1):byte() end, w=function(c) io.write(string.char(c)) end }, {__index=function(t,k) return t.t[t.i] end, __newindex=function(t,k,v) t.t[t.i]=v end }) load(s:gsub("[^%+%-<>%.,%[%]]+",""):gsub(".", subst), "brainfuck", "t", env)() end