Case<выражение> of

<десятичное_число> => Md(<десятичное_число>, s)

<переменная> =>if VARMAP(<переменная>, s) = undef

then error

else VARMAP(<переменная>, s)

<двоичное_выражение> =>

if(Me(<двоичное_выражение>.<выражение_слева>, s) = undef

OR Me(<двоичное_выражение>.< выражение_справа >, s) = undef)

then error

else if (<двоичное_выражение>.< оператор > = '+' then

Me(<двоичное_выражение>.<выражение_слева>, s) +

Me(<двоичное_выражение>.<выражение_справа>, s)

else Me(<двоичное_выражение>.<выражение_слева>, s) ×

Me(<двоичное_выражение>.<выражение_справа>, s).

Оператор присваивания - это вычисление выражения плюс присваивание его значения переменной, находящейся в левой части. Сказанное можно описать следующей функцией:

Ма(х = Е, s) º if Me(E, s) = error

then error

else s' = {<i1', v1'>, <i2', v2'>,..., <in', vn'>} where

for j = 1, 2, ..., n, vj' = VARMAP(ij', s) if ij <>x;

Me(E, s) ifij = x.

Отметим, что два сравнения, выполняющиеся в двух последних строках(ij <> x и ij = х), относятся к именам, а не значениям.

После определения полной системы для заданного языка ее можно использовать для определения смысла полных программ этого языка. Это создает основу для очень строгого способа мышления в программировании.

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

С одной стороны, денотационные описания очень сложны, с другой - они дают великолепный метод краткого описания языка.








Дата добавления: 2015-07-18; просмотров: 940;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.