puti ::= fn(x: int) { #C("printf(\"%ld\\n\", (long)x); "); }; putf ::= fn(x: float) { #C("printf(\"%f\\n\", (double)x); "); }; foo ::= fn(x ::= 5) (int, int) { x, 2*x }; main ::= fn() { puti(f()); puti(f(7)); puti(f(4)); f ::= fn(a,b::=3) z := a+b { }; r ::= f(); puti(r); s ::= f(7); puti(s); t ::= f(4); puti(t); };