Выражения
https://www.angelcode.com/angelscript/sdk/docs/manual/doc_expressions.html
Выражение это комбинация из одной или нескольких переменных, функций и операторов, результатом интерпретации которого становится некоторое значение.
Интерпретация
С точки зрения интерпретатора любое выражение представляется как функция. Возьмём простейшее объявление переменной с начальным значением:
Опустив тип, для краткости повествования, интерпретатор выполнит две операции:
Немного усложним пример:
Операции будут выглядеть таким образом:
Как видите, набор операторов превращается в функции, аргументы которых зовутся операндами.
Приоритет
Возьмём предыдущий пример и уберём объявление:
Как видите, есть две операции:
A = 11 + 3
Чтоб интерпретатору понять, как правильно подобрать функции существует приоритет, узнать который можно в соответствующей таблице. Оператор + имеет более высокий приоритет, посему он первым и превратится в функцию:
Вторым и заключительным действием для этого выражения будет обработка оператора =:
Оператор скобки
Скобки просто возвращают содержащееся в них выражение:
Это свойство скобок зачастую используется для смены порядка операторов:
Ассоциативность
Возьмём простой пример:
У нас снова есть две операции:
1 - 33 + 5
Руководствоваться приоритетом в данном случае не получится, у операторов - и + он одинаков. В таком случае на помощь приходит ассоциативность, которая указана в соответствующей таблице. Для операторов в нашем примере она левая, то бишь они будут разобраны слева на право. Сначала вычитание:
Затем сложение:
Рассмотрим так же правую ассоциативность на примере оператора =:
По традиции у нас есть две операции:
A = BB = 5
Так как присваивание B правее, оно и будет первым: