Синтаксис целочисленных выражений

Дополненный синтаксис для целочисленнных выражений Паскаля приведен ниже.

<выражение>::= <простое выражение>

| <простое выражение><оператор сравнения><простое выражение>

<простое выражение>::= <простое выражение> <аддитивный оператор> <терм>

| <терм> | <знак> <терм>

<терм>::= <терм> <мультипликативный оператор> <множитель> | <множитель>

<множитель>::= <переменная> | <беззнаковая константа> | (выражение) | NOT <множитель>

<оператор сравнения>::= = | <> | < | <= | > | >=

<знак>::= + | -

<аддитивный оператор>::= + | - | OR

<мультипликативный оператор>::= * | DIV | MOD | AND

<переменная>::= <идентификатор переменной>

<беззнаковая константа>::= <беззнаковое число> | <идентификатор константы>

| <строка символов>

<беззнаковое число>::= <беззнаковое целое>

Значение целочисленных выражений.

Значение целочисленных выражений дается в виде следующего рекурсивного определения для состояния выполнения S:

E1 = E2(S) = (E1(S) = E2(S))

E1 <> E2(S) = (E1(S) ¹ E2(S))

E1 < E2(S) = (E1(S) < E2(S))

E1 <= E2(S) = (E1(S) ≤ E2(S))

E1 > E2(S) = (E1(S) > E2(S))

E1 >= E2(S) = (E1(S) ≥ E2(S))

E1 + E2(S) = (E1(S) + E2(S)) (возможно переполнение)

E1 - E2(S) = (E1(S) - E2(S)) (возможно переполнение)

E1 * E2(S) = (E1(S) x E2(S)) (возможно переполнение)

E1 DIV E2(S) = (E1(S) / E2(S))

E1 MOD E2(S) = (E1(S) – (E1(S) / E2(S)xE2(S)))

+E (S) = E (S)

-E (S) = - E (S)

(E) (S) = E (S)

Это определение дает значение каждого оператора. Для выражения с более чем одним оператором, значение вычисляется терм за термом, в соответствии с правилами синтаксиса Паскаля, задающими предшествование и ассоциативность.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: