Правила, определяющие порядок выполнения операций, вытекают из синтаксиса выражений, которые строятся из множителей, термов и простых выражений.
Множитель имеет следующий синтаксис:
---------------- множитель ---T-------------->¦ ссылка на +-----------> ¦ ¦ переменную ¦ ^ ¦ L---------------- ¦ ¦ ---------- ¦ +---->¦константа+----------------------+ ¦ ¦без знака¦ ¦ ¦ L---------- ¦ ¦ ---- ---------- ---- ¦ +---->¦ ( +---->¦выражение¦--->¦ ) +---+ ¦ L---- L---------- L---- ¦ ¦ ---- ---------- ¦ +---->¦not+---->¦множитель+------------+ ¦ L---- L---------- ¦ ¦ ----- ---------- ¦ +---->¦знак+--->¦множитель+------------+ ¦ L----- L---------- ¦ ¦ ---------- ¦ +---->¦ вызов +----------------------+ ¦ ¦ функции ¦ ¦ ¦ L---------- ¦ ¦ ------------ ¦ +---->¦конструктор+--------------------+ ¦ ¦ множества ¦ ¦ ¦ L------------ ¦ ¦ ------------ ¦ +---->¦ адресный +--------------------+ ¦ ¦ множитель ¦ ¦ ¦ L------------ ¦ ¦ --------------- ¦ L---->¦ приведение +------------------ ¦типа значения ¦ L---------------
Вызов функции активизирует функцию и представляет собой зна- чения, возвращаемые функцией (см. далее в этой главе раздел "Вы- зовы функций"). Описатель множества представляет собой значение множественного типа (см. раздел, озаглавленный, как "Описание множеств"). Приведение типа изменяет тип значения (см. "Приведе- ние типа").
Адресный множитель вычисляет адрес переменной, процедуры, функции или метода. См. раздел "Операция @".
Беззнаковая константа имеет следующий синтаксис:
---------- константа без знака ---T---->¦ число +-------------> ¦ ¦без знака¦ ^ ¦ L---------- ¦ ¦ ----------- ¦ +---->¦символьная+--------+ ¦ ¦ строка ¦ ¦ ¦ L----------- ¦ ¦ -------------- ¦ +---->¦идентификатор+-----+ ¦ ¦ константы ¦ ¦ ¦ L-------------- ¦ ¦ ---- ¦ L---->¦nil+---------------- L----
Некоторые примеры множителей могут включать в себя:
Х { ссылка на переменную } @Х { указатель на переменную } 15 { константа без знака } (Х+Y+Z) { подвыражение } SIN(Х/2) { вызов функции } ['0..''9','А'..'Z'] { описатель множества } not Done { отрицание булевской переменной } сhar(Digit+48) { назначение типа }