- •Модуль № 2.
- •1. Методы лексического, семантического и синтаксического анализа. Регулярные языки.
- •2. Методы лексического, семантического и синтаксического анализа. Контекстно-свободные языки.
- •3. Методы лексического, семантического и синтаксического анализа. Классы кс-языков и грамматик.
- •4. Компиляторы. Этапы трансляции. Общая схема работы транслятора.
- •5. Компиляторы. Понятие прохода. Многопроходные и однопроходные компиляторы.
- •6. Интерпретаторы. Особенности построения интерпретаторов.
- •Принципы построения лексических анализаторов
- •7. Трансляторы с языка ассемблера («ассемблеры»).
- •8. Лексические анализаторы (сканеры). Принципы построения сканеров. Назначение лексического анализатора.
- •Этапы семантического анализа
- •10. Генератор кода. Распределение памяти. Принципы распределения памяти. Дисплей памяти процедуры (функции).
- •Общие принципы генерации кода
- •12. Системы программирования. Понятие и структура системы программирования.
- •13. Системы программирования. Принципы функционирования систем программирования.
- •14. Системы программирования. Функции текстовых редакторов в системах программирования.
- •15. Системы программирования. Компоновщик. Назначение и функции компоновщика.
- •16. Системы программирования. Загрузчики. Функции загрузчика.
- •17. Системы программирования . Библиотеки подпрограмм как составная часть систем программирования.
- •18. Системы программирования. Разработка программ в архитектуре «клиент—сервер»
Общие принципы генерации кода
Генерация объектного кода — это перевод компилятором внутреннего представления исходной программы в цепочку символов выходного языка.
Генерация объектного кода порождает результирующую объектную программу на языке ассемблера или непосредственно на машинном языке (в машинных кодах). Внутреннее представление программы может иметь любую структуру в зависимости от реализации компилятора, в то время как результирующая программа всегда представляет собой линейную последовательность команд. Поэтому генерация объектного кода (объектной программы) в любом случае должна выполнять действия, связанные с преобразованием сложных синтаксических структур в линейные цепочки.
Генерацию кода можно считать функцией, определенной на синтаксическом дереве, построенном в результате синтаксического анализа, и на информации,
содержащейся в таблице идентификаторов.
12. Системы программирования. Понятие и структура системы программирования.
Комплекс программных средств, обеспечивающих поддержку технологий проектирования, кодирования, тестирования и отладки, называется системой программирования
Проектирование.
Было сказано, что на сегодняшний день достаточно сложно, а практически невозможно создавать программное обеспечение без этапа проектирования, такого же долгого, нудного и детального периода, который проходит во время проектирования любого технического объекта.
К детальному проектированию, которое бы позволяло некоторым формальным образом описывать создаваемый проект и работать с проектом в части его детализации. Причем, переход от детализации к кодированию не имел бы четкой границы.
Кодирование.
Основной компонент системы кодирования — язык программирования. В голове каждого программиста лежит иерархия языков программирования — от машинного кода и ассемблера до универсальных языков программирования (FORTRAN, Algol, Pascal, C и т.д.), специализированных языков (SQL, HTML, Java и т.д.)
Этапы тестирования и отладки
Тестирование — это поиск ситуации, в которой программный продукт не работает. При этом используются наборы тестов, определяющих внешнюю нагрузку на программный продукт. Можно сказать, что программа оттестирована на определенном наборе тестов. Утверждение, что программа оттестирована вообще в общем случае некорректно.
Отладка — это процесс поиска, локализации и исправления ошибки. Отладка осуществляется, когда мы имеем программную систему, и знаем, что она не работает на каком-то из тестов.
Проблемы тестирования и отладки — это есть проблемы крайней важности. По оценкам, на тестирование и отладку затрачивается порядка 30% времени разработки проекта.
13. Системы программирования. Принципы функционирования систем программирования.
Системой программирования будем называть весь комплекс программных средств,
предназначенных для кодирования, тестирования и отладки программного обеспечения. Нередко системы программирования взаимосвязаны и с другими техническими средствами, служащими целям создания программного обеспечения на более ранних этапах жизненного цикла (от формулировки требований и анализа до проектирования).
Система программирования и трансляции — очень наукоемкая область программного обеспечения. Организация трансляторов — это было первое применение теоретических достижений науки, которые заключались в следующем. За счет возможности использования тех или иных грамматик (наборов формальных правил построения лексических конструкций и синтаксических правил), можно разделить программную реализацию лексических и синтаксических анализаторов на два компонента. Первый компонент — это программа, которая в общем случае ничего не знает о том языке, который она будет анализировать. Второй компонент — это набор данных, представляющий из себя формальное описание свойств языка, который мы анализируем. Совмещение этих двух компонентов, позволяет автоматизировать процесс построения лексических и синтаксических анализаторов, а также генераторов кода, для различных языков программирования. Современные системы программирования в своем составе имеют средства автоматизации построения компиляторов.
