nilang 0.4.1

A scripting language interpreter for Advent of Code
Documentation
OPT=true
%%%%

fn rotate_array(array, len) {
  prev = array[0-1];

  i = 0;
  while i < len - 1 {
    temp = array[i];
    array[i] = prev;
    prev = temp;
    i = i + 1;
  }
}

my_array = [1, 2, 3, 4];

rotate_array(my_array, 4);

print(my_array); // [4, 1, 2, 3]

%%%%

=== FN 1 START ===
INT  3, 0
INT  4, 1
INT  2, -1
MEML 5, 0[2]
COPY 2, 3
SUB  3, 1, 4
LT   3, 2, 3
JNT  6, 3
MEML 3, 0[2]
MEMS 0[2], 5
ADD  2, 2, 4
COPY 5, 3
JMP  -7
LDN  0
RTN  0
=== END ===
=== FN 0 START ===
LOC  2, 0
LIST 1
INT  0, 1
PUSH 1, 0
INT  0, 2
PUSH 1, 0
INT  0, 3
PUSH 1, 0
INT  0, 4
PUSH 1, 0
ARG  1
ARG  0
CALL 0, 2
OUT  1
LDN  0
RTN  0
=== END ===