Advertisement
s1ay3r44

Luaf*ck

Sep 28th, 2011
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.00 KB | None | 0 0
  1. codeString = ""
  2. inputString = ""
  3. commands = {"<",">",".",",","[","]","+","-"}
  4. values = {}
  5. iterator = 1
  6. pointer = 1
  7. running = false
  8. input = false
  9.  
  10. for i = 1, 30000 do
  11.     values[i] = 0
  12. end
  13.  
  14.  
  15. function on.paint(gc)
  16.     if running then
  17.         executeCode(gc)
  18.     else
  19.         writeCode(gc)
  20.     end
  21. end
  22.  
  23. function on.charIn(ch)
  24.     if running == false then
  25.         for i,v in pairs (commands) do
  26.             if ch == v then
  27.                 codeString = codeString .. ch
  28.                 refresh()
  29.             end
  30.         end
  31.     end
  32.     if input then
  33.         values[pointer] = string.byte(ch)
  34.         input = false
  35.     end
  36. end
  37.  
  38. function on.backspaceKey()
  39.     if running == false then
  40.         if string.len(codeString) > 0 then
  41.             codeString = string.sub(codeString, 1, string.len(codeString) - 1)
  42.         end
  43.     end
  44.     refresh()
  45. end
  46.  
  47. function on.enterKey()
  48.     if running then
  49.         running = false
  50.     else
  51.         running = true
  52.     end
  53.     refresh()
  54. end
  55.  
  56. function writeCode(gc)
  57.     gc:drawString(codeString, 0, 0, "top")
  58. end
  59.  
  60. function executeCode(gc)
  61.     local str = string.sub(codeString, iterator, iterator)
  62.     if str == "," then
  63.         input = true
  64.     end
  65.     if str == "." then
  66.         gc:drawString(string.char(values[pointer]),0,0,"top")
  67.     end
  68.     if str == "<" then
  69.         pointer = pointer - 1
  70.         if pointer <= 0 then
  71.             pointer = 30000
  72.         end
  73.     end
  74.     if str == ">" then
  75.         pointer = pointer + 1
  76.         if pointer > 30000 then
  77.             pointer = 1
  78.         end
  79.     end
  80.     if str == "+" then
  81.         values[pointer] = values[pointer] + 1
  82.     end
  83.     if str == "-" then
  84.         values[pointer] = values[pointer] - 1
  85.     end
  86.     if str == "[" then
  87.         if values[pointer] == 0 then
  88.             while str ~= "]" do
  89.                 iterator = iterator + 1
  90.                 str = string.sub(codeString, iterator, iterator)
  91.             end
  92.         end
  93.     end
  94.     if str == "]" then
  95.         if values[pointer] ~= 0 then
  96.             while str ~= "[" do
  97.                 iterator = iterator - 1
  98.                 str = string.sub(codeString, iterator, iterator)
  99.             end
  100.         end
  101.     end
  102.     if input == false then
  103.         iterator = iterator + 1
  104.     end
  105.     if iterator > string.len(codeString) then
  106.         running = false
  107.     end
  108.     refresh()
  109. end
  110.  
  111. function refresh()
  112.     platform.window:invalidate()
  113. end
  114.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement