АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Описание семантики входного языка

Читайте также:
  1. I. Лексика русского языка с точки зрения ее происхождения
  2. II. Лексика русского языка с точки зрения ее активного и пассивного запаса.
  3. II. Нормы современного русского литературного языка
  4. II. — Общее описание призрака.
  5. III. Краткое описание лабораторного стенда
  6. III. Лексика русского языка с точки зрения сферы ее употребления.
  7. IV курс, факультет английского языка
  8. IV. Словарный состав современного русского литературного языка в функциональном, социолингвистическом аспектах и с точки зрения его происхождения (2 часа).
  9. PR- специалист: комплексное описание профессии
  10. VIII. Описание основных факторов риска, связанных с деятельностью Общества
  11. Активный и пассивный запас языка.
  12. Алфавит Maple-языка и его синтаксис. Основные объекты (определение, ввод, действия с ними). Числа. Обыкновенные дроби.

Описание семантики задает представление данных в оперативной памяти, приоритет выполнения операций, правила преобразования типов языка, правила выполнения операторов языка и реализации языковых конструкций.

Представление данных различных типов в оперативной памяти (размер в байтах и диапазон возможных значений) зададим с помощью таблицы (табл. 1).

 

Табл. 1.

Тип Размер, байт Диапазон значений
int   Целые числа. -32768….32767
float   Вещественные числа. 3.14E-38….3.14E+38.
bool   Логические переменные. False, Тrue

 

Отметим также, что входной язык к тому же поддерживает структурированный тип – vector -вектор с вещественными компонентами. Вектор представляется совокупностью компонент, каждая из которых, в свою очередь, представляется типом float.

 

Приоритет операций и порядок выполнения операций с одинаковым приоритетом также зададим с помощью таблицы (см. табл. 2).

 

Табл. 2.

Знак операции Название операции Порядок выполнения
++ -- Увеличение на единицу Уменьшение на единицу Слева направо Слева направо
* / Умножение Деление Слева направо Слева направо
+ - Сложение Вычитание Слева направо Слева направо
< <= > >= Меньше Меньше или равно Больше Больше или равно Слева направо Слева направо Слева направо Слева направо
== != Равно Не равно Слева направо Слева направо
&& || Логическое И Логическое ИЛИ Слева направо Слева направо
not and or Не И Или Справа налево Слева направо Слева направо

 

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

 

 

Правила преобразования типов для бинарных арифметических операций также приведем в таблицу (см. табл. 3).

 

Табл. 3.

Операнд 1 Операнд 2 Операция Результат
double int *, /, +, - double
double foat *, /, +, - double
double double *, /, +, - double
Unsigned long int *, /, +, - Unsigned long
Unsigned long foat *, /, +, - Unsigned long
Unsigned long double *, /, +, - Unsigned long
Long Unsigned long *, /, +, - Unsigned long
Int int *, +, -, / int float
Int Unsigned int *, /, +, - Unsigned int
Int char *, /, +, - int
Int Unsigned char *, /, +, - int
float float *, /, +, - double

 

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

 

Задание правил выполнения операторов языка заключается в описании порядка выполнения операторов.

Оператор цикла спараметром for.

 

< оператор цикла с параметром>::=

for( <оператор присваивания>; <логическое выражение>; <оператор присваивания> )

<составной оператор>

Порядок выполнения оператора:

1. Параметр цикла инициализируется первым оператором присваивания.

2. Вычисляется логическое выражение для текущего значения параметра цикла.

Если получившееся логическое выражение ИСТИНА:

3. Выполняется тело цикла.

4. Выполняется оператор присваивания над текущим значением параметра цикла.

5. Переход к пункту 1.

Если получившееся логическое выражение ЛОЖЬ:

6. Выход из цикла.

Значение параметра цикла при корректном завершении цикла определяется логическим выражением из описания цикла.

Оператор присваивания

 

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

 

< отношение присваивания>::= = | += | -= | *= | /=

Вычисляется арифметическое выражение в правой части и, в случае соответствия типов, запоминается в переменной(для =), указанной в левой части. Если отношение операции отлично от =, то переменная в левой части модифицируется (согласно виду отношения присваивания) с учетом вычисленного арифметического выражения и сохраняется в переменной левой части.

 

Оператор безусловного перехода goto.

 

<оператор безусловного перехода>::= goto <метка>

Выполняется переход на метку.

Метка должна встречаться в теле программы один раз.

 

Условный оператор if-else

< условный оператор >::= if ( <логическое выражение> ) <составной оператор1>

[ else <составной оператор2> ]

Вычисляется значение логического выражения и результат помещается во временную переменную.

Если результат FALSE,топроисходит переходна составной оператор2, в противном случае выполняется составной оператор1 и происходит переход в конец оператора if -else.

 

Условный оператор присваивания

< условный оператор присваивания>::=

( <логическое выражение> )? < выражение1>: < выражение2 >

 

Вычисляется значение логического выражение и результат помещается во временную переменную.

Если результат TRUE,топроисходит присваивание значения выражения1, в противном случае выполняется присваивание значения выражения2 и происходит переход в конец оператора условного присваивания.

 

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

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



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)