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