a_type :: Int poInter_type :: *Int // null_poInter: poInter_type = null if_stmt :: (cond: Int): type CONSTANT :: 10 thing := 10 if i := thing + cond, cond + CONSTANT return i + CONSTANT else if cond - CONSTANT return i - CONSTANT else return CONSTANT for_stmt :: () for i := 0, i + 10, i+=1 pass add_10 :: (size: Int): Int add_20 :: (new_size: Int): Int return 20 add :: (a: Int, b: Int = 10): Int return a + b constant :: 20; result := constant + 10 v3 := add(1,2) v2 := add(a = 1, b = 2) v1 := add(a = 1) // v_err := add([0] = 1) v4 := add(b = 1, a = 2) // v_err := add([0] = 1, [1] = 2) // v_err := add([0] = 1, 10) // illegal // v_err := add([1] = 1) // illegal // v_err := add() // illegal return v4 return_constant :: (): Int constant :: 10 return constant returning_Void :: (insert: Int) val1: Int = return_constant() val2: Int = add_10(val1) return type :: a_type