I'm seeing a bug in how conditionals are grouped together.
(ps (return (if (if x y z) a b))) => "return x ? y : z ? a : b;"
This requires parentheses in order to evaluate the way the PS expression was clearly intended, namely:
(x ? y : z) ? a : b
PS appears to make the wrong decision about when to include parentheses, since it does it here when the default would do:
(ps (return (if x y (if z a b)))) => "return x ? y : (z ? a : b);"
Daniel