john9912

brainfuck to Lua

Jul 9th, 2016
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.02 KB | None | 0 0
  1. arg = {...}
  2. local path = arg[1]
  3. local input = arg[2]
  4. local readfile = fs.open(input,"r")
  5. local B = readfile.readAll()
  6. readfile.close()
  7. local file = fs.open(path,"w")
  8. local D = {}
  9. local j = 1
  10. repeat
  11.    D[j] = B:sub(j,j)
  12.    j = j + 1
  13. until j == #B+1
  14. local function parse(n)
  15.    if D[n] ~= nil then
  16.       return D[n]
  17.    else
  18.       file.close()
  19.       error("DONE!")
  20.    end
  21. end
  22. local T = {}
  23. T["<"] = "p = p - 1"
  24. T[">"] = "p = p + 1"
  25. T["+"] = "a[p] = a[p] or 0\na[p] = a[p] + 1"
  26. T["-"] = "a[p] = a[p] or 0\na[p] = a[p] - 1"
  27. T["."] = "print(a[p] or 0)"
  28. T[","] = "a[p] = read()"
  29. T["["] = "a[p] = a[p] or 0\nwhile a[p] ~= 0 do"
  30. T["]"] = "end"
  31. local function translate(BF)
  32.    if T[BF] then
  33.       return T[BF]
  34.    end
  35.    return "--Invalid character"
  36. end
  37. local function writeFile(num)
  38.    file.writeLine(translate(parse(num)))
  39. end
  40. file.writeLine("local a = {}\nlocal p = 1\nlocal i = 1\n--repeat\n--a[i] = 0\n--i = i + 1\n--until i == 16384")
  41. local comn = 1
  42. while true do
  43.    writeFile(comn)
  44.    comn = comn + 1
  45. end
Add Comment
Please, Sign In to add comment