Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конпект лекций по ТЯПиМТ.docx
Скачиваний:
207
Добавлен:
27.01.2015
Размер:
329.63 Кб
Скачать

54

Саратовский государственный технический университет им.

Гагарина Ю.А.

Теория языков программирования и методы трансляции

конспект лекций

составил Сайкин А.И.

Саратов, 2015

Данный конспект представляет собой краткое изложение лекционного курса, читавшегося студентам по специальности «Программирование вычислительной техники и автоматизированных систем» в объёме 54 часа.

СОДЕРЖАНИЕ

Введение...…………………………………………………………………….. 4 1. Языки и кризис программирования…………………………………………6

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

грамматики……………………………………………………………………8

3. Основные понятия и определения…………………………………………..9

4. Этапы построения трансляторов…………………………………………….16

5. Основные методы поиска ошибок в исходных текстах программ………..18

6. Современное состояние и перспективы развития программирования

трансляторов………………………………………………………………….19

7. Лексический анализ. Интуитивный подход……………………………….21

8. Классы лексем и их особенности…………………………………………..21

9. Формирование таблиц лексем и построение дескрипторного текста

исходной программы………………………………………………………23

10. Синтаксический анализ. Метод рекурсивного спуска………………….26

11. Пример грамматики упрощенного языка Паскаль……………………..26

12. Пример программы на упрощенном Паскале…………………………..27

13. Алгоритм синтаксического анализа по методу рекурсивного спуска…31

14. Формализация методов построения трансляторов. Формальные

языки и грамматики. Классификация формальных языков

по Хомскому………………………………………………………………..36

15. Лексический анализ, регулярные грамматики и конечные автоматы…39

16. S-грамматики и магазинные автоматы………………………………..…42

17. Грамматики типа LL(k). Алгоритмы построения магазинных

анализаторов……………………………………………………………….45

18. Детерминированный синтаксический анализ сверху вниз……………..50

19. Правила определения детерминированного МП-преобразователя

по LL(1) грамматике………………………………………………………52

20. Заключение………………………………………………………………….54

Литература………………………………………………………………….54

Введение.

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

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

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

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

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

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

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

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