СОДЕРЖАНИЕ Введение....2 1 Теория трансляций......3 1.1 Лексический анализ..3 . 1.2 Синтаксический анализ...5 1.2.1. Метод рекурсивного спуска..6 1.2.2. Метод операторного предшествования..13 1.3 Внутренне представление программы..18 1.3.1. Последовательность четверок..18 1.4. Генерация кода.19 2 Организация таблиц символов...20 2.1Упорядоченные и неупорядоченные таблицы20 2.2. Хеш-адресация..21 2.3 Рехеширование......21 2.3.1. Линейное рехеширование.22 2.3.2. Случайное рехеширование...22 2.3.3. Рехеширование сложением..22 2.4 Метод цепочек.22 3 Оптимизация кода..24 4 Листинг программы27 Заключение..38 ВВЕДЕНИЕ В состав любой вычислительной системы может входить комплекс программ, которые называются трансляторами. Транслятор обеспечивает автоматический перевод программ с алгоритмического языка в машинные коды. По функциональному назначению трансляторы делятся на компиляторы (перевод программ на языке высокого уровня в машинные коды без выполнения), интерпретаторы (перевод каждой конструкции алгоритмического языка в машинные коды с одновременным выполнением) и ассемблеры (перевод программы с языка низкого уровня в машинные коды). Более подробно остановимся на компиляторах. Компилятор – это не что иное, как программа, написанная на некотором языке, для которой входной информацией служит исходная программа, а результатом является эквивалентная ей объектная программа. Раньше компиляторы писались на автокоде. Часто это был единственно доступный язык. Однако сейчас существует тенденция писать компиляторы на языках высокого уровня, поскольку при этом уменьшается время, затрачиваемое на программирование и отладку, а также обеспечивается удобочитаемость компилятора, когда работа над ним завершена. Компиляторам присущ ряд общих черт, что упрощает процесс создания компилирующих программ. Наша цель состоит в том, чтобы описать известные уже модельные представления структуры компиляторов и показать, как с их помощью создается работоспособная компилирующая программа. Компилятор должен выполнить анализ исходной программы и синтез объектного кода. В соответствии с этим любой компилятор включает три основные части: лексический анализатор, синтаксический анализатор и генератор кода. Взаимодействие между компонентами компилятора может осуществляться разнообразными способами. В настоящей работе рассматриваются основные подходы к созданию транслирующих программ. Знаете ли вы что?
Если вам потребовались курсовые,контрольные,рефераты, и диссертации то обратившись в компанию "LastDiplom" вы получите уникальный, в то же время отвечающим всем требованиям материал. Вышеуказанная компания выполняет рефераты на заказ, а так же дипломные работы на заказ для ведущих ВУЗов Алматы. |