Files
ivy/doc/sample/Sum.2.mie

97 lines
2.2 KiB
Plaintext
Raw Normal View History

2026-01-19 14:20:04 +00:00
meta.source-filename "Sum.im"
ivy.package-scope "net.doorstuck.test"
ivy.module {
ivy.init-text {
%0 = ivy.str.constant "Finds the sum of a set of numbers."
%cout = ivy.global-ref @cout -> ptr
%1 = ptr.load %cout : ptr -> #ivy.id
ivy.send-msg to %1, put:%0 -> void
%sum = ptr.alloca i32 -> ptr
%sum.0 = i32.constant 0
ptr.store %sum.0, %sum : i32, ptr
scf.loop() -> void {
%2 = ivy.str.constant "Number (blank to finish): "
%3 = ptr.load %cout : ptr -> #ivy.id
ivy.send-msg to %3, put:%2 -> void
%4 = ptr.load %cout : ptr -> #ivy.id
ivy.send-msg to %3, flush -> void
%v = ptr.alloca i32 -> ptr
%5 = i32.constant 0
ptr.store %5, %v : i32, ptr
%input = ptr.alloca #ivy.id -> ptr
%cin = ivy.global-ref @cin -> ptr
%7 = ptr.load %cin : ptr -> #ivy.id
%8 = ivy.send-msg to %7, read-line -> #ivy.id
ptr.store %8, %input : #ivy.id, ptr
%9 = ptr.load %input : ptr -> #ivy.id
%String = ivy.global-ref @String -> ptr
%10 = ptr.load %String : ptr -> #ivy.id
%11 = ivy.send-msg to %10, new -> #ivy.id
%12 = ivy.cmp eq %9, %11 : (#ivy.id, #ivy.id) -> i1
scf.if %12 -> void {
scf.loop-break : ()
}
%v = ptr.alloca #ivy.id -> ptr
%Int = ivy.global-ref @Int -> ptr
%13 = ptr.load %Int : ptr -> #ivy.id
%14 = ptr.load %input : ptr -> #ivy.id
%15 = ivy.send-msg to %12, parse:%14 -> #ivy.id
ptr.store %15, %v : #ivy.id, ptr
%16 = ptr.load %v : ptr -> #ivy.id
%17 = ivy.null-id : #ivy.id
%18 = ivy.cmp eq %16, %17 : (#ivy.id, #ivy.id) -> i1
scf.if %1 -> void {
%19 = ptr.load %cout : ptr -> #ivy.id
%StringBuilder = ivy.global-ref @StringBuilder -> ptr
%20 = ptr.load %StringBuilder : ptr -> #ivy.id
%21 = ivy.send-msg to %20, new -> #ivy.id
%22 = ptr.load %input : ptr -> #ivy.id
ivy.send-msg to %21, append:%22 -> void
%23 = ivy.str.constant " is not a valid number."
ivy.send-msg to %21, append:%23 -> void
%24 = ivy.send-msg to %21, to-string -> #ivy.id
ivy.send-msg to %19, put:%24 -> void
scf.loop-continue : ()
}
%25 = ptr.load %sum : ptr -> i32
%26 = ptr.load %v : ptr -> #ivy.id
%addtmp = ivy.add %25, %26 : (i32, #ivy.id) -> #ivy.id
ptr.store %addtmp, %sum : #ivy.id, ptr
scf.loop-continue : ()
}
}
}