nilang 0.4.1

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

fn raise(n, x) {
  if x == 0 {
    return 1;
  }

  x = x - 1;

  while x > 0 {
    n = n * n;

    x = x - 1;
  }

  return n;
}

p = 0;
while p < 12 {
  print(raise(2, p));
  p = p + 1;
}

%%%%

=== FN 1 START ===
INT  3, 0
EQ   2, 1, 3
JNT  3, 2
INT  0, 1
RTN  0
INT  2, 1
SUB  1, 1, 2
SWAP 0, 1
GT   4, 0, 3
JNT  4, 4
MULT 1, 1, 1
SUB  0, 0, 2
JMP  -4
RTN  1
=== END ===
=== FN 0 START ===
LOC  1, 0
INT  0, 0
INT  2, 12
LT   2, 0, 2
JNT  9, 2
INT  2, 2
ARG  2
ARG  0
CALL 2, 1
OUT  2
INT  2, 1
ADD  0, 0, 2
JMP  -10
LDN  0
RTN  0
=== END ===