Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Генерация кода

Читайте также:
  1. Массовая дегенерация
  2. Регенерация адсорбента
  3. Химическая регенерация

Возможны три формы объектного кода: абсолютные команды, помещенные в фиксированные ячейки (после окончания компиляции такая программа немедленно выполняется); программа на автокоде (ее потом придется транслировать); программа на языке машины, записанная на внешнюю память (для выполнения она должна быть объединена с другими подпрограммами и затем загружена).

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

Проще всего получить объектную программу на автокоде. В этом случае не приходится формировать команды как последовательности битов; можно порождать команды, содержащие символические имена. Более того, можно формировать макроопределение. Это позволяет также уменьшить объем компилятора.

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

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

 

 

44. Лексический анализ

Основная задача лексического анализа - разбить входной текст, состо­ящий из последовательности одиночных символов, на последователь­ность слов, или лексем, т.е. выделить эти слова из непрерывной после­довательности символов. Все символы входной последовательности с этой точки зрения разделяются насимволы, принадлежащие каким-либо лек­семам, и символы, разделяющие лексемы (разделители). В некоторых случаях между лексемами может и не быть разделителей. С другой сто­роны, в некоторых языках лексемы могут содержать незначащие сим­волы (например, символ пробела в Фортране). В Си разделительное зна­чение символов-разделителей может блокироваться ("\" в конце строки внутри "...").

Обычно все лексемы делятся на классы. Примерами таких классов являются числа (целые, восьмеричные, шестнадцатиричные, действи­тельные и т.д.), идентификаторы, строки. Отдельно выделяются ключе­вые слова и символы пунктуации (иногда их называют символы-ограничители). Как правило, ключевые слова - это некоторое конечное подмножество идентификаторов. В некоторых языках (например, ПЛ/1) смысл лексе­мы может зависеть от ее контекста и невозможно провести лексический анализ в отрыве от синтаксического.


Дата добавления: 2015-07-15; просмотров: 92 | Нарушение авторских прав


Читайте в этой же книге: Основные идеи ОПП | Вопрос 9. Понятие об ООП. Основные принципы и идеи ООП. | Понятие полиморфизма. Использование в языке. | Абстрактые классы, виртуальные методы. Наследование и замещение методов. | Параметризация типов данных в классах и функциях. | Разделение массива | Сбалансированные деревья | Многоключевые деревья | Матрица смежности | Основы алгоритмов криптографии. |
<== предыдущая страница | следующая страница ==>
Программная документация.| I семестр

mybiblioteka.su - 2015-2024 год. (0.005 сек.)