Реферат: Проектирование трансляторов
большой части исходной программы таким образом, что рабочая прог-
рамма обращается в процессе единственного просмотра исходной
программы. В многопроходном трансляторе последовательности преоб-
разований применяются ко всей программе как к целому.
Имеется много факторов, определяющих выбор числа проходов
при проектировании трансляторов (время компиляции, время разра-
ботки, относительная независимость фаз трансляции, размеры ОП
ЭВМ).
Некоторые языки (Алгол-68, АДА) принципиально требуют для
своей реализации несколько проходов, в частности можно рассмот-
реть двухпроходную схему трансляции. Ее особенности:
1) она может использоваться для языков программирования, в
которых определяющая реализация идентификатора появляется (тек-
стуально) раньше любой прикладной реализации, что имеет место для
большинства языков;
2) при написании транслятора необходимо пректировать проме-
жуточный язык, на котором должен представляться исходный текст
между программными проходами.
Лексический анализ (сканер)
Сканер - самая простая часть компилятора, иногда также назы-
ваемая лексическим анализатором. Сканер просматривает литеры ис-
ходной программы слева направо и строит символы программы - це-
лые числа, идентификаторы, служебные слова, двухлитерные символы,
такие как ** и // и т.д. Символы передаются затем на обработку
фактическому анализатору. На этой стадии может быть исключен ком-
ментарий. Сканер также может заносить идентификаторы в таблицу
символов и выполнять другую простую работу, которая фактически
требует анализа исходной программы. Он может выполнить большую
часть работы по макрогенерации в тех случаях, когда требуется