|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Описание семантики входного языкаОписание семантики задает представление данных в оперативной памяти, приоритет выполнения операций, правила преобразования типов языка, правила выполнения операторов языка и реализации языковых конструкций. Представление данных различных типов в оперативной памяти (размер в байтах и диапазон возможных значений) зададим с помощью таблицы (табл. 1).
Табл. 1.
Отметим также, что входной язык к тому же поддерживает структурированный тип – vector -вектор с вещественными компонентами. Вектор представляется совокупностью компонент, каждая из которых, в свою очередь, представляется типом float.
Приоритет операций и порядок выполнения операций с одинаковым приоритетом также зададим с помощью таблицы (см. табл. 2).
Табл. 2.
Правила преобразования типов для бинарных операций включают правила автоматического преобразования операндов к одному общему типу, при этом тип результата выполнения операции, как правило, также имеет общий тип. Обычно операнды бинарных арифметических операций разных типов приводятся к старшему (более длинному) типу.
Правила преобразования типов для бинарных арифметических операций также приведем в таблицу (см. табл. 3).
Табл. 3.
При выполнении операции присваивания результат приводится к типу переменной слева от знака операции присваивания, при этом возможно преобразование как старшего типа к младшему, так и наоборот.
Задание правил выполнения операторов языка заключается в описании порядка выполнения операторов. Оператор цикла спараметром 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 и происходит переход в конец оператора условного присваивания.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.012 сек.) |