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

Страницы работы

17 страниц (Word-файл)

Фрагмент текста работы

Белорусский государственный университет

информатики и радиоэлектроники

Кафедра интеллектуальных информационных технологий

Отчет по лабораторной работе №2

по курсу ЯПИС

Выполнил:                                                                                       Проверил:

студент группы 421701                                                                 Сердюков Р.Е.

Виноград Т.В.

Минск 2006


СОДЕРЖАНИЕ

1.Цель работы………………………………………………….………………3

2.Классификационные признаки, которыми должен обладать разраба-   тываемый язык…………………………………………………………………4

3.Описание алфавита и токенов разработанного языка…....…………….….8

4.Описание атрибутивной грамматики и операционной семантики разработанного языка……..……………………………………………..…….9

5.Примеры……………………………………………………………………..13


Цель работы:

1)  Разработать язык, обладающий необходимыми классификационными признаками (в соответствии с вариантом задания)

2)  Описать алфавит языка

3)  Описать токены языка

4)  Описать атрибутивную грамматику для разработанного языка

5)  Записать несколько примеров на разработанном языке

Классификационные признаки, которыми должен обладать разрабатываемый язык:

1.  Объявление переменных:

a)  Явное.

Пояснение:

Явное объявление переменных — это оператор программы, в котором перечислены имена переменных и указан их тип. Для данного разрабатываемого мною языка объявление переменной будет сопровождаться ключевым словом var.

Пример: Perem a, b.

2.  Связывание типа с переменной:

a)  динамическое.

Пояснение:

Динамическое связывание переменной характеризуется тем, что тип в операторе объявления переменных  не указывается. Связывание переменной с типом происходит в момент присваивания ей первого либо нового  значения. При этом переменная, стоящая в левой части оператора присваивания, связывается с типом сущности, указанной в правой части. Определение типа должно осуществляться при первом присваивании ей какого-либо значения.

Пример: a = 80– тип int, c = “Мама”- тип string

3.  Связывание ячейки памяти с переменной:

a)  автоматические.

Пояснение:

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

4.  Константы:

a)  Отсутствуют.

5.  Проверка типов:

a)  нестрогая типизация.

Пояснение:

При таком формировании системы типов в языке в разные моменты существования языковых объектов не существует однозначного, строго определённого, соответствия между объектом и его типом.

6.  Область видимости:

a)  Статическая.

Пояснение:

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

7.  Структуры, ограничивающие область видимости:

a)  Блочные операторы.

Пояснение:

Если переменная используется в одном блочном операторе, то переменную с тем же именем можно объявить в другом блочном операторе, и это будут две разные переменные.

8.  Элементарные типы данных:

a)  целые числа;

b) числа с плавающей точкой;

c)  символьный тип.

9.  Типы данных, определяемые пользователем:

a)  символьные строки.

10.  Определение пользователем абстрактных типов данных:

a)  отсутствуют.

11.  Перегрузка операторов:

a)  отсутствуют.

12.  Преобразование типов:

a)  неявное.

Пояснение:

 Преобразование типов должно не должно  осуществляться с помощью каких-либо ключевых слов, и ограничиваться родственным диапазоном типов. Неявные преобразования типа выполняются для согласования аргументов оператора со значениями, предполагаемыми в этих операторах.

Пример:

   char ch;

   int i;

   float f1;

   f1=i=ch='A';

Величина 'A' присваивается символьной переменной ch. Переменная i получает целое значение, являющееся преобразованием символа 'A' в целое число, т.е. '65'. Переменная f1 получает значение 65.00, являющееся преобразованием числа 65 в число с плавающей точкой.

13.  Операторы сокращенного вычисления:

a)  отсутствуют.

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

a)  Составной.

 Пример:

b=b+5

15.  Операторы ветвления:

a)  Двухвариантные.

Пояснение:

Присутствует оператор условия «if (expression) then statement else

Похожие материалы

Информация о работе