もはや、C言語から大分ずれますが、こんな感じを考えています。

tarai: (x:int; y:int; z:int) {int} = {
 if (x <= y) {
  y
 } else {
  tarai(tarai(x - 1; y; z); tarai(y - 1; z; x); tarai(z - 1; x; y))
 }
}
main : (){} = {
 printf("%d"; tarai(20;5;1))
}

内部的には
(@disable
 (= (: (tarai) (@paren (: (x) (int)) (;) (: (y) (int)) (;) (: (z) (int)) (@block (int))))
  (@block
   (else (if (@paren (<= (x) (y)) ) (@block (y)) )
      (@block (tarai (@paren (tarai (@paren (- x 1) (;) (y) (;) (z))) (;)
                  (tarai (@paren (- y 1) (;) (z) (;) (x))) (;)
                  (tarai (@paren (- z 1) (;) (x) (;) (y))) ))))))
 (= (: (main) (@paren) (@block)) (@block
   (printf (@paren ("%d") (;) (tarai (@paren (20) (;) (5) (;) (1)))))
 )))
な感じ。