somni 0.2.0

Somni scripting language and VM
Documentation
Globals:

Function: add_from_rust
  External function

Function: reverse
  External function

Function: main
block 0
  var return_value: bool = None
  var temp1: void = None
  var n: void = None
  var temp3: void = None
  var temp4: {int/signed} = Some(MaybeSignedInt(2))
  var temp5: {int/signed} = Some(MaybeSignedInt(3))
  var temp6: int = None
  var temp7: int = None
  var temp8: void = None
  var temp9: void = None
  temp9 = temp4
  var temp10: void = None
  temp10 = temp5
  temp8 = call add_from_rust(temp9, temp10)
  temp3 = temp8
  free(temp10)
  free(temp9)
  free(temp8)
  free(temp7)
  free(temp6)
  free(temp5)
  free(temp4)
  n = temp3
  free(temp3)
  var temp11: bool = Some(Bool(false))
  var temp12: {int/signed} = Some(MaybeSignedInt(5))
  var temp13: void = None
  temp13 = n == temp12
  free(temp12)
  if temp13 -> block 3 else block 2

block 1
  -> return

block 2
  free(temp13)
  return_value = temp11
  free(temp11)
  free(n)
  free(temp1)
  free(return_value)
  -> block 4

block 3
  var temp14: void = None
  var temp15: string = Some(String(StringIndex(22)))
  var temp16: int = None
  var temp17: int = None
  var temp18: void = None
  var temp19: void = None
  temp19 = temp15
  temp18 = call reverse(temp19)
  temp14 = temp18
  free(temp19)
  free(temp18)
  free(temp17)
  free(temp16)
  free(temp15)
  var temp20: string = Some(String(StringIndex(28)))
  var temp21: void = None
  temp21 = temp14 == temp20
  free(temp14)
  free(temp20)
  temp11 = temp21
  free(temp21)
  -> block 2

block 4
  -> block 1

block 5
  free(return_value)
  -> block 1

Function: multiple_calls
block 0
  var return_value: bool = None
  var temp1: void = None
  var n: void = None
  var temp3: void = None
  var temp4: {int/signed} = Some(MaybeSignedInt(2))
  var temp5: {int/signed} = Some(MaybeSignedInt(3))
  var temp6: int = None
  var temp7: int = None
  var temp8: void = None
  var temp9: void = None
  temp9 = temp4
  var temp10: void = None
  temp10 = temp5
  temp8 = call add_from_rust(temp9, temp10)
  temp3 = temp8
  free(temp10)
  free(temp9)
  free(temp8)
  free(temp7)
  free(temp6)
  free(temp5)
  free(temp4)
  n = temp3
  free(temp3)
  var m: void = None
  var temp12: void = None
  var temp13: {int/signed} = Some(MaybeSignedInt(3))
  var temp14: {int/signed} = Some(MaybeSignedInt(2))
  var temp15: int = None
  var temp16: int = None
  var temp17: void = None
  var temp18: void = None
  temp18 = temp13
  var temp19: void = None
  temp19 = temp14
  temp17 = call add_from_rust(temp18, temp19)
  temp12 = temp17
  free(temp19)
  free(temp18)
  free(temp17)
  free(temp16)
  free(temp15)
  free(temp14)
  free(temp13)
  m = temp12
  free(temp12)
  var temp20: void = None
  temp20 = n == m
  return_value = temp20
  free(temp20)
  free(m)
  free(n)
  free(temp1)
  free(return_value)
  -> block 2

block 1
  -> return

block 2
  -> block 1

block 3
  free(return_value)
  -> block 1

Function: free_scope
block 0
  var return_value: int = None
  var temp1: void = None
  var a: void = None
  var temp3: {int/signed} = Some(MaybeSignedInt(0))
  a = temp3
  free(temp3)
  -> block 3

block 1
  -> return

block 2
  var temp7: void = None
  var temp8: int = None
  var temp9: int = None
  var temp10: void = None
  var temp11: void = None
  temp11 = a
  temp10 = call return_from_scope(temp11)
  temp7 = temp10
  free(temp11)
  free(temp10)
  free(temp9)
  free(temp8)
  return_value = temp7
  free(temp7)
  free(a)
  free(temp1)
  free(return_value)
  -> block 1

block 3
  var temp4: void = None
  var a: void = None
  var temp6: {int/signed} = Some(MaybeSignedInt(1))
  a = temp6
  free(temp6)
  free(a)
  free(temp4)
  -> block 2

Function: return_from_scope
block 0
  var return_value: int = None
  var a: int = None
  var temp2: void = None
  -> block 3

block 1
  -> return

block 2
  free(temp2)
  free(a)
  free(return_value)
  -> block 1

block 3
  var temp3: void = None
  return_value = a
  free(temp3)
  -> block 2