TC-R Samples
Note
Note that the transformation does not apply to field names and primitives.
as.tig
let
type a = { a: int }
function a(a: a): a = a{ a = a + a }
var a : a := a(1, 2)
in
a.a
end
tc --rename -A as.tig
$ tc --rename -A as.tig
/* == Abstract Syntax Tree. == */
primitive print(string_0 : string)
primitive print_err(string_1 : string)
primitive print_int(int_2 : int)
primitive flush()
primitive getchar() : string
primitive ord(string_3 : string) : int
primitive chr(code_4 : int) : string
primitive size(string_5 : string) : int
primitive streq(s1_6 : string, s2_7 : string) : int
primitive strcmp(s1_8 : string, s2_9 : string) : int
primitive substring(string_10 : string, start_11 : int, length_12 : int) : string
primitive concat(fst_13 : string, snd_14 : string) : string
primitive not(boolean_15 : int) : int
primitive exit(status_16 : int)
primitive gc_enable(enable_17 : int)
primitive gc_run()
function _main() =
(
let
type a_18 = { a : int }
function a_20(a_19 : a_18) : a_18 =
a_18 { a = a_19 + a_19 }
var a_21 : a_18 := a_20(1, 2)
in
a_21.a
end;
()
)
$ echo $?
0
Warning
The sample below concern the object renaming.
object-renamer.tig
let
class A
{
var a := 1
method k(b : int) : int = b
method toto(b : int) : int = self.a + b
}
class B extends A
{
var c : string := "salut"
method k(b : int) : int = b + 2
method t(b : int) : int = (print(self.c); self.a)
}
var a : A := new A
var b : B := new B
in
a.k(1) + b.k(4);
b.t(1);
b.toto(2);
a.a;
b.c;
b.a
end
tc --object-rename -A object-renamer.tig
$ tc --object-rename -A object-renamer.tig
/* == Abstract Syntax Tree. == */
primitive print(string_0 : string)
primitive print_err(string_1 : string)
primitive print_int(int_2 : int)
primitive flush()
primitive getchar() : string
primitive ord(string_3 : string) : int
primitive chr(code_4 : int) : string
primitive size(string_5 : string) : int
primitive streq(s1_6 : string, s2_7 : string) : int
primitive strcmp(s1_8 : string, s2_9 : string) : int
primitive substring(string_10 : string, start_11 : int, length_12 : int) : string
primitive concat(fst_13 : string, snd_14 : string) : string
primitive not(boolean_15 : int) : int
primitive exit(status_16 : int)
primitive gc_enable(enable_17 : int)
primitive gc_run()
function _main() =
(
let
type A_22 =
class extends Object
{
var a := 1
method k_19(b_18 : int) : int =
b_18
method toto_21(b_20 : int) : int =
self.a + b_20
}
type B_27 =
class extends A_22
{
var c : string := "salut"
method k_24(b_23 : int) : int =
b_23 + 2
method t_26(b_25 : int) : int =
(
print(self.c);
self.a
)
}
var a_28 : A_22 := new A_22
var b_29 : B_27 := new B_27
in
(
a_28.k_19(1) + b_29.k_24(4);
b_29.t_26(1);
b_29.toto_21(2);
a_28.a;
b_29.c;
b_29.a
)
end;
()
)
$ echo $?
0