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?
$\begingroup$
$\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$– R.. GitHub STOP HELPING ICECommented 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$– user31389Commented Sep 28, 2021 at 12:55
Add a comment
|
1 Answer
$\begingroup$
$\endgroup$
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