nilang 0.4.1

A scripting language interpreter for Advent of Code
Documentation
========= FILE ./src/runtime/tests/fixtures/euclidean_gcd/euclidean_gcd.ir.actual ========
fn1 (a_0, b_0) {
block0:
  t2 = a_0 == b_0
  jnt t2 block2
  next block1

block1:
  RETURN a_0

block2:
  t3 = a_0 < b_0
  jnt t3 block4(a_0, b_0)
  next block3

block3:
  next block4(b_0, a_0)

block4(a_1, b_1):
  remainder_0 = a_1 % b_1
  t7 = 0
  t8 = remainder_0 == t7
  jnt t8 block7
  next block5

block5:
  RETURN b_1

block7:
  LOAD_UPVAL find_gcd_0
  STORE_ARG b_1
  STORE_ARG remainder_0
  t10 = CALL find_gcd_0
  RETURN t10

}
MAIN () {
block0:
  find_gcd_0 = fn1
  STORE_UPVAL find_gcd_0, find_gcd_0
  t1 = 0
  STORE_ARG t1
  STORE_ARG t1
  t3 = CALL find_gcd_0
  PRINT t3
  t6 = 1
  STORE_ARG t6
  STORE_ARG t6
  t8 = CALL find_gcd_0
  PRINT t8
  t11 = 13
  STORE_ARG t11
  STORE_ARG t11
  t13 = CALL find_gcd_0
  PRINT t13
  t16 = 16
  t17 = 32
  STORE_ARG t16
  STORE_ARG t17
  t18 = CALL find_gcd_0
  PRINT t18
  t21 = 81
  t22 = 18
  STORE_ARG t21
  STORE_ARG t22
  t23 = CALL find_gcd_0
  PRINT t23
  t26 = 31256365662
  t27 = 14347398432
  STORE_ARG t26
  STORE_ARG t27
  t28 = CALL find_gcd_0
  PRINT t28
  t31 = 1023
  t32 = 64
  STORE_ARG t31
  STORE_ARG t32
  t33 = CALL find_gcd_0
  PRINT t33
  t36 = 1024
  STORE_ARG t36
  STORE_ARG t32
  t38 = CALL find_gcd_0
  PRINT t38
  t40 = null
  RETURN t40

}