Skip to content

Instantly share code, notes, and snippets.

@lleyton
Created August 7, 2020 21:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lleyton/e04af69bb8bcf6d04fead0a8f192dd40 to your computer and use it in GitHub Desktop.
Save lleyton/e04af69bb8bcf6d04fead0a8f192dd40 to your computer and use it in GitHub Desktop.
PenisScript
local instructions = {
['>'] = '8=D',
['<'] = '8==D',
['+'] = '8===D',
['-'] = '8====D',
['.'] = '8=====D',
[','] = '8======D',
['['] = '8=======D',
[']'] = '8========D'
}
local reversed_instructions = {}
for i, v in pairs(instructions) do
reversed_instructions[v] = i
end
local function to_bf(program)
program = program:gsub('[^8=D]', '')
for i, v in pairs(reversed_instructions) do
program = program:gsub(i, v)
end
return program
end
local function from_bf(program)
program = program:gsub('[^><%+%-%.,%[%]]', '')
for i, v in pairs(instructions) do
program = program:gsub('%' .. i, v)
end
return program
end
local input = io.open(arg[2])
local program = input:read("a")
input:close()
if arg[1] == 'compile' then
local output = io.open('out.bf', 'w')
output:write(to_bf(program))
output:close()
elseif arg[1] == 'reverse' then
local output = io.open('out.pp', 'w')
output:write(from_bf(program))
output:close()
end
@rdebath
Copy link

rdebath commented Apr 29, 2021

@lleyton
Copy link
Author

lleyton commented May 5, 2021

fuck

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment