Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Модели классов систем




 

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

 

1. Лексический анализатор, транслирующий входной язык в некоторый внутренний код.

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

3. Синтаксический анализатор, который проверяет синтаксис компилируемого кода. Он использует заданную грамматику языка и создает синтаксическое дерево.

4. Синтаксическое дерево, которое представляет внутреннюю структуру компилируемой программы.

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

6. Генератор кода, который проходит по синтаксическому дереву и генерирует машинный код.

 

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

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

 

Рис. 10.11. Модель потоков данных для компилятора

 

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

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

 

Рис. 10.12. Модель репозитория для компилятора

 

В настоящее время разработано относительно небольшое количество проблемно-зависимых моделей классов систем. Организации, занимающиеся разработкой подобных моделей, рассматривают их как ценную интеллектуальную собственность, поскольку они являются основой разработки программных систем. Такие модели часто представляют архитектуру целой серии программных продуктов. Например, для всех драйверов принтеров, независимо от свойств конкретного принтера, может использоваться одинаковая исходная архитектура. Подобные архитектуры рассматриваются в главе 14.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...