nilang 0.4.1

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

fn linear_search(list, len, target) {
  i = 0;

  while i < len {
    if list[i] == target {
      return i;
    } else {
      i = i + 1;
    }
  }

  return null;
}

my_list = [0, 0, 420, 0];


result = linear_search(my_list, 4, 420);

print(result);  // 2

%%%%

=== FN 1 START ===
INT  3, 0
LT   4, 3, 1
JNT  8, 4
MEML 4, 0[3]
EQ   4, 4, 2
JNT  2, 4
RTN  3
INT  4, 1
ADD  3, 3, 4
JMP  -8
LDN  0
RTN  0
=== END ===
=== FN 0 START ===
LOC  3, 0
LIST 2
INT  0, 0
PUSH 2, 0
PUSH 2, 0
INT  1, 420
PUSH 2, 1
PUSH 2, 0
INT  0, 4
ARG  2
ARG  0
ARG  1
CALL 0, 3
OUT  0
LDN  0
RTN  0
=== END ===