22 lines
547 B
Lua
22 lines
547 B
Lua
local repl = {
|
|
['>'] = 'ptr = ptr + 1',
|
|
['<'] = 'ptr = ptr - 1',
|
|
['+'] = 'mem[ptr] = mem[ptr] + 1',
|
|
['-'] = 'mem[ptr] = mem[ptr] - 1',
|
|
['['] = 'while mem[ptr] ~= 0 do',
|
|
[']'] = 'end',
|
|
['.'] = 'io.write(string.char(mem[ptr]))',
|
|
[','] = 'mem[ptr] = (io.read(1) or "\\0"):byte()',
|
|
}
|
|
|
|
local prog = {[[
|
|
local mem = setmetatable({}, { __index = function() return 0 end})
|
|
local ptr = 1
|
|
]]}
|
|
|
|
local source, i = io.read('*all'), 1
|
|
for char in source:gmatch"[<>+.,%[%]%-]" do
|
|
i, prog[i] = i+1, repl[char]
|
|
end
|
|
|
|
load( table.concat(prog, " ") )()
|