5
$\begingroup$

OpenSCAD User Manual's section on operators does not mention precedence. Quick Web searches found nothing. I assume the usual order of exponentiation, then multiplication, then addition does hold, but how does e.g. a conditional operator or unary minus interact with these? Is there an official document describing the precedence of operators in OpenSCAD?

$\endgroup$
3
  • $\begingroup$ I'm not sure if/where it's documented but I think largely they follow C or C++ precedent for precedence. $\endgroup$ Commented Sep 28, 2021 at 2:12
  • 1
    $\begingroup$ If you aren't sure, use parenthesis to force precedence. $\endgroup$
    – 0scar
    Commented Sep 28, 2021 at 11:39
  • $\begingroup$ @0scar That's what I'm doing, but it would be nice to know. $\endgroup$
    – user31389
    Commented Sep 28, 2021 at 12:55

1 Answer 1

6
$\begingroup$

Within OpenSCAD expressions, the order of precedence is:

Operators Description
() [] group, vector, or range
() [] . function call, indexing, member lookup
^ exponentiation
! + - unary operations
* / % multiplication
+ - addition
< <= >= > ordering
== != equality
&& logical AND
|| logical OR
?: function() let() assert() echo() ternary operator and unary pseudo-operators

There are no bit-wise operators, and neither comma nor "=" are operators.

Source: openscad/src/parser.y

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .