Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local loop = {false, {}}
- local pointer = 1
- local data = {}
- for index = 1, 32 do
- data[index] = 0
- end
- function customHandleChar(perform)
- repeat
- for special in perform:gmatch(".") do
- if special == "+" then
- data[pointer] = data[pointer] + 1
- elseif special == "-" then
- data[pointer] = data[pointer] - 1
- elseif special == ">" then
- pointer = pointer + 1
- elseif special == "<" then
- pointer = pointer - 1
- elseif special == "," then
- data[pointer] = io.read():sub(1, 1):byte()
- elseif special == "." then
- io.write(string.char(data[pointer > 0 and pointer or 32]))
- end
- end
- until data[pointer] == 0
- end
- function handleChar(char)
- if not loop[1] then
- if char == "[" then
- loop[1] = true
- elseif char == "+" then
- data[pointer] = data[pointer] + 1
- elseif char == "-" then
- data[pointer] = data[pointer] - 1
- elseif char == ">" then
- pointer = pointer + 1
- elseif char == "<" then
- pointer = pointer - 1
- elseif char == "," then
- data[pointer] = io.read():sub(1, 1):byte()
- elseif char == "." then
- io.write(string.char(data[pointer > 0 and pointer or 32]))
- end
- else
- if char == "]" then
- customHandleChar(table.concat(loop[2]))
- loop[1] = false
- loop[2] = {}
- else
- table.insert(loop[2], char)
- end
- end
- end
- function run(code)
- code = code:gsub("/%*.-%*/", "")
- for char in code:gmatch(".") do
- handleChar(char)
- end
- end
- run([[
- +++++ +++++ [ /* set [1] to 10, loop until [1] == 0 */
- >+++++ ++ /* increase [2] by 7 */
- >+++++ +++++ /* increase [3] by 10 */
- >+++++ +++++ + /* increase [4] by 11 */
- <<<- /* go back to [1] and decrease by 1 */
- ]
- >++ . /* increase [2] by 2, reaching 'H', then print it. */
- >+ . /* increase [3] by 1, reaching 'e', then print it. */
- >-- .. /* decrease [4] by 2, reaching 'l', then print it twice. */
- +++ . /* increase [4] by 3, reaching 'o', then print it. */
- ]])
Advertisement
Add Comment
Please, Sign In to add comment