Каков приоритет оператора в OpenSCAD?

В разделе Руководства пользователя OpenSCAD, посвященном операторам, не упоминается приоритет. Быстрый поиск в Интернете ничего не нашел. Я предполагаю, что обычный порядок возведения в степень, затем умножения, затем сложения выполняется, но как, например, условный оператор или унарный минус взаимодействуют с ними? Существует ли официальный документ, описывающий приоритет операторов в OpenSCAD?

, 👍5

Обсуждение

Я не уверен, что это задокументировано, но я думаю, что в основном они следуют прецеденту C или C++ для приоритета., @R.. GitHub STOP HELPING ICE

Если вы не уверены, используйте круглые скобки для принудительного приоритета., @0scar

@0scar Это то, что я делаю, но было бы неплохо знать., @user31389


1 ответ


Лучший ответ:

6

В выражениях OpenSCAD порядок приоритета таков:

Операторы Описание
() [] группа, вектор или диапазон
() [] . вызов функции, индексация, поиск членов
^ возведение в степень
! + - унарные операции
* / % умножение
+ - сложение
< <= >= > заказ
== != равенство
&& логично И
|| логично ИЛИ
?: function() let() assert() echo() тернарный оператор и унарные псевдооператоры

Битовых операторов не существует, и ни запятая, ни "=" не являются операторами.

Источник: openscad/src/parser.y


,