[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Obufscated Lua?
- From: David Given <dg@...>
- Date: Wed, 10 Aug 2005 15:03:43 +0100
I'm sorry, I just had to get this out of my system... appended is a Brainfuck
compiler, written in Lua. Note that it's a *compiler*; it converts a BF
program into a Lua chunk, and then runs it. It may even produce efficient
code, but it's hard to tell.
It is, if I say so myself, really quite deranged. I've tried to produce a
program that is worthy of both languages, with all that implies...
local t = {}; table.setn(t, 30000)
local n = 1;
local sg = string.gsub
function next(c) return function() n = n + 1; return c(); end; end
function prev(c) return function() n = n - 1; return c(); end; end
function inc(c) return function() t[n] = (t[n] or 0) + 1; return c(); end; end
function dec(c) return function() t[n] = (t[n] or 0) - 1; return c(); end; end
function o(c)
return function() io.write(string.char(t[n] or 0)); return c(); end; end
function i(c)
return function() t[n] = string.byte(io.read(1)); return c(); end; end
function l(c1, c2)
return function() if (t[n] ~= 0) then c1()(); return l(c1, c2)(); else
return c2(); end; end; end
function r(s, p, m) local n; s, n = sg(s, p, m)
if (n ~= 0) then return r(s, p, m) end; return s; end
function trans(m, i, j, k, ...)
m = r(m, "%"..i.."(.*)", j)
if k then return trans(m, k, unpack(arg)); end
return m
end
local bbn = 0
function bb(m)
bbn = bbn + 1
_G["bb"..(bbn-1)] = loadstring("return "..trans(m.."function() end", "+",
"inc(%1)", "-", "dec(%1)", ".", "o(%1)", ",", "i(%1)", ">",
"next(%1)", "<", "prev(%1)", "{", "l(%1", "}", ",%1)"))
return "bb"..(bbn-1)
end
function luafuck(s)
return _G[bb(r(sg(s, "[^+-<>[%]]", ""), "^(.*)%[([^%]]*)%](.*)$",
function(sl, m, sr) return sl.."{"..bb(m).."}"..sr; end))]()
end
chunk = luafuck([[
++++++++++[>+++++++>++++++++++>+++>+<<<<-] >++.>+.+++++++..
+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
]])
chunk()
--
+- David Given --McQ-+ "I can handle myself. I've been in a fire fight.
| dg@cowlark.com | Well, I was in a fire.... Actually I was fired.
| (dg@tao-group.com) | From a fry cook opportunity." --- Firefly, _War
+- www.cowlark.com --+ Stories_
Attachment:
pgpTzuPx91lBw.pgp
Description: PGP signature