nextupprevious
Next:2.2.2 Операторы
Up:2.2 Выражения, операторы и функции
Previous:2.2 Выражения, операторы и функции


2.2.1 Выражения

Выражение -- это формула, образованная из констант, переменных и обращений к функциям с помощью знаков операций и скобок, которая задает правила получения новых значений по текущим. Действуя по этим правилам, ВМ осуществляет процесс выполнения выражения для получения некоторого значения, называемого результатом выполнения выражения (или просто результатом выражения). Результат выполнения выражения не изменяет текущего состояния памяти ВМ, хотя и зависит от него; выражение, как правило, имеет разные значения при разных состояниях памяти.

Выражение состоит из операндов и операций. Операндами могут быть константы (например, числа), переменные, обращения к функциям (например, к стандартным функциям типа abc и odd), а также сами выражения, заключенные в скобки. Из них с помощью операций строятся выражения разной сложности: множители, слагаемые, простые выражения и выражения -- рис.2.3. При записи выражения знак унарной операции предшествует своему операнду (так называемая префиксная запись), а знак бинарной операции располагается между операндами ( инфиксная запись). Синтаксические правила определяют разбиение любого выражения на подвыражения, выявляют его синтаксическую структуру. Например, выражение 3.14 + Х$*$Y mod 3 - 12 состоит из трех слагаемых: 3.14, X$*$Y mod3, 12, второе из которых в свою очередь состоит из трех множителей: X, Y, 3.

Expression = SimpleExpression
        [ ( "=" | "#" | "<" | "<=" | ">" | ">=" | in ) SimpleExpression ]

SimpleExpression = [ "+"|"-" ] Term { ( "+" | "-" | or ) Term }.

Term = Factor { ( "*" | "/" | div | mod | "&" ) Factor }.

Factor = number
         | CharConstant
         | string
         | Designator // Обозначение переменной или константы
         | Designator "(" [ ActualParameters ] ")" // Обращение к функции
         | "(" Expression ")"
         | "~" Factor.

Рис. 2.3. Выражение

В соответствии с синтаксической структурой все операции разбиваются на группы, между которыми задан порядок старшинства (первый: ~; второй: $*$$/$, div, mod, &; третий: +, -, or; четвертый: =, #, <, <=,  >,  >=). Предполагается, что операции в пределах одного выражения выполняются в обычном порядке слева направо, но с учетом скобок (значение выражения в скобках вычисляется самостоятельно и используется в дальнейших вычислениях) и указанного порядка старшинства операций. Например, операции выражения 2 + 2 $*$ 3 div 4 - 1 выполняются в следующей последовательности: $*$, div, +, - .

Каждое выражение имеет определенный тип -- тип результата этого выражения. Например, 15 div 4 + 2 -- выражение целого типа, 3.01 + 2.35, 17 + 3.14 и 3/2 -- выражения вещественного типа, odd(X) & (X<3) -- выражение логического типа, а 'A' и chr(X + 5) -- выражения литерного типа.

Next:2.2.2 Операторы
Up:2.2 Выражения, операторы и функции
Previous:2.2 Выражения, операторы и функции


© В.Н. Касьянов, Е.В.Касьянова, 2004