- unsigned outer_precedence = (outer_oper ? outer_oper->precedence : 20);
- unsigned inner_precedence = (inner_oper ? inner_oper->precedence : 0);
-
- bool needs_parentheses = (inner_precedence>=outer_precedence);
- if(inner_oper && inner_oper==outer_oper)
- // Omit parentheses if the operator's natural grouping works out.
- needs_parentheses = (inner_oper->assoc!=Operator::ASSOCIATIVE && on_rhs!=(inner_oper->assoc==Operator::RIGHT_TO_LEFT));
-
- if(needs_parentheses)
- {
- RefPtr<ParenthesizedExpression> parexpr = new ParenthesizedExpression;
- parexpr->expression = expr.clone();
- ptr = parexpr;
- }
- else
- ptr = expr.clone();
-