Might conflict with casts (which are also expressions starting with "(" followed by a a type), but I think they should be possible to distinguish in LR1. Allowing the parenthesis to be removed when there is exactly one parameter doesn't really sound that useful, so I suggest not adopting that part.