Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

ОС гибридной сети

Данная сеть состоит из нескольких одноранговых сетей, соединенных между собой сервером и отдельными клиентскими узлами.

Системные программы

 

Трансляторы, компиляторы и интерпретаторы

Транслятор – программа, которая переводит входную программу на исходном (входном) языке в эквивалентную ей выходную программу на результирующем (выходном) языке.

ПРИМЕР: трансляция программы с языка Паскаль на язык Ассемблер.

Компилятор – это транслятор, который осуществляет перевод исходной программы и эквивалентную ей объектную программу на языке машинных команд или языке ассемблера.

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

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

Общая схема работы компилятора

 

 
 

 


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

На этапе АНАЛИЗА выполняется распознавание текста исходной программы, создание и заполнение таблиц идентификаторов. Результатом его работы служит некое внутреннее представление программы, понятное компилятору.

На этапе СИНТЕЗА на основании внутреннего представления программ, а также информации, находящейся в таблице идентификаторов, порождается текст результирующей программы. Результатом этого этапа является объектный код.

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

Лексический анализ (сканер) – это часть компилятора, которая читает исходную программу и выделяет в её тексте лексемы входного языка, которые заносит в итоговую таблицу лексем.

Лексема (лексическая единица языка) – это структурная единица языка, которая состоит из элементарных символов языка и не содержит в своем составе других структурных единиц языка. Лексемами языков программирования являются идентификаторы, константы, ключевые слова языка, знаки операций и т.п.

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

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

Входные данные: таблица идентификаторов; результаты разбора синтаксических конструкций входного языка.

Этапы семантического анализа:

1) проверка соблюдения во входной программе семантических соглашений входного языка:

– каждая метка, на которую есть ссылка должна присутствовать;

– идентификатор должен быть описан один раз;

– типы должны быть согласованы между собой;

– число фактических параметров должно быть согласовано с числом и типом формальных параметров.

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

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

3) проверка элементарных смысловых норм языков программирования, напрямую не связанные с входными языками.

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

1) идентификация элементов языка – установление соответствия между объектами и их именами в тексте исходной программы:

– имена локальных переменных дополняются именами блоков, в которых они описаны;

– имена процедур и функций модифицируются в зависимости от типов их формирующих аргументов и т.д.

2) распределение памяти – это процесс, который ставит в соответствие лексическим единицам исходной программы адрес, размер и атрибуты области памяти, необходимой для этой лексической единицы.

Генерация кода – порождение команд, составляющих предложения выходного языка и в целом текст результирующей программы.

Таблицы идентификаторов.

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

 

<== предыдущая лекция | следующая лекция ==>
Одноранговые серверные сетевые ОС | Концентрация растворов
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 348; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.