mirror of
https://github.com/Open-Argon/argon-v3.git
synced 2025-12-06 17:06:07 +00:00
34 lines
1.4 KiB
Plaintext
34 lines
1.4 KiB
Plaintext
let interpret(code) = do
|
|
memory = map()
|
|
pointer = 0
|
|
code_ptr = 0
|
|
loops = []
|
|
|
|
while (code_ptr < code.length) do
|
|
command = code[code_ptr]
|
|
|
|
if (command == '>') pointer = pointer + 1
|
|
else if (command == '<') pointer = pointer - 1
|
|
else if (command == '+') do
|
|
if (pointer not in memory) memory[pointer] = 0
|
|
memory[pointer] = memory[pointer] + 1
|
|
else if (command == '-') do
|
|
if (pointer not in memory) memory[pointer] = 0
|
|
memory[pointer] = memory[pointer] - 1
|
|
else if (command == '.') term.log((memory.get(pointer, 0)))
|
|
else if (command == ',') memory[pointer] = ord(input())
|
|
else if (command == '[') do
|
|
if (memory.get(pointer, 0) == 0) do
|
|
loop_depth = 1
|
|
while (loop_depth > 0) do
|
|
code_ptr = code_ptr + 1
|
|
if (code[code_ptr] == '[') loop_depth = loop_depth + 1
|
|
else if (code[code_ptr] == ']') loop_depth = loop_depth - 1
|
|
else loops.append(code_ptr)
|
|
else if (command == ']') do
|
|
if (memory.get(pointer, 0) != 0) code_ptr = loops[-1]
|
|
else loops.pop()
|
|
code_ptr = code_ptr + 1
|
|
|
|
term.log("hello worldf")
|
|
interpret('>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]<.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+.>++++++++++.') |