(CALL name ...), where name is the name of a function (in the case of a function
call) or type (in the cast of a constructor call) and ... are one or more expression
forms representing the arguments, respectively.
e.g.
int x, y;
dp3(x, y) -> (CALL dp3 x y)
int d, e, f;
ivec3(d, e, 1) -> (CALL d e 1)
float a, b;
bvec4(a == 2.01, d >= 3, !e, a || b) ->
(CALL bvec4 (BINARY float == a 2.01) (BINARY int >= d 3) (UNARY int ! e) (BINARY float || a b))
(CALL dp3 x y)(CALL ivec3 d e 1)(CALL bvec4 (BINARY bool == a 2.01) (BINARY bool >= d 3) (UNARY bool ! e) (BINARY bool || a b))
--