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 */
- >+++++ ++ /* increase [2] by 7 */
- >+++++ +++++ /* increase [3] by 10 */
- >+++++ +++++ + /* increase [4] by 11 */
- >+++++ +++++ + /* increase [5] by 11 */
- >+++++ +++++ + /* increase [6] by 11 */
- <<<<<- /* decrease [1] by 1 */
- ]
- >++ /* increase [2] by 2, reaching byte of 'H' */
- >+ /* increase [3] by 1, reaching byte of 'e' */
- >-- /* decrease [4] by 2, reaching byte of 'l' */
- >-- /* decrease [5] by 2, reaching byte of 'l' */
- >+ /* increase [6] by 1, reaching byte of 'o' */
- [<] /* return to [1], can loop because it is 0 */
- [>.] /* print bytes, [7] is 0, therefore will not reach infinite loop */
- ]])
Advertisement
Add Comment
Please, Sign In to add comment