Разработка компиляторов. Ишакова Е.Н. - 13 стр.

UptoLike

Составители: 

13
Пример 2.4. Программа на модельном языке М, вычисляющая среднее
арифметическое чисел, введенных с клавиатуры.
program
var k
, n, sum: int;
begin
read
(n);
sum
:= 0;
i
:=1;
while i
<=n do
begin
read
(k);
sum
:=sum+k;
k
:=k+1
end
;
write
(sum/n)
end
.
2.2 Общая структура компилятора
Определение 2.2. Компиляторэто программа, которая осуществляет
перевод исходной программы на входном языке в эквивалентную ей объектную
программу на языке машинных команд или языке ассемблере.
Основные функции компилятора:
1) проверка исходной цепочки символов на принадлежность к входному
языку;
2) генерация выходной цепочки символов на языке машинных команд
или ассемблере.
Процесс компиляции состоит из двух основных этапов: синтеза и анали-
за. На этапе анализа выполняется распознавание текста исходной программы и
заполнение таблиц идентификаторов. Результатом этапа служит некоторое
внутреннее представление программы, понятное компилятору.
На этапе синтеза на основании внутреннего представления программы и
информации, содержащейся в таблице идентификаторов, порождается текст ре-
зультирующей программы. Результатом этого этапа является объектный код.
Данные этапы состоят из более мелких стадий, называемых фазами. Со-
став фаз и их взаимодействие зависит от конкретной реализации компилятора.
Но в том или ином виде в каждом компиляторе выделяются следующие фазы:
1)
лексический анализ;
2)
синтаксический анализ;
3)
семантический анализ;
4)
подготовка к генерации кода;
5)
генерация кода.
Определение 2.3. Процесс последовательного чтения компилятором дан-
ных из внешней памяти, их обработки и помещения результатов во внешнюю
память, называется проходом компилятора.
     Пример 2.4. Программа на модельном языке М, вычисляющая среднее
арифметическое чисел, введенных с клавиатуры.
     program
     var k, n, sum: int;
     begin
       read(n);
       sum:= 0;
       i:=1;
      while i<=n do
          begin
             read(k);
             sum:=sum+k;
             k:=k+1
          end;
      write(sum/n)
     end.

     2.2 Общая структура компилятора

      Определение 2.2. Компилятор – это программа, которая осуществляет
перевод исходной программы на входном языке в эквивалентную ей объектную
программу на языке машинных команд или языке ассемблере.
      Основные функции компилятора:
      1) проверка исходной цепочки символов на принадлежность к входному
языку;
      2) генерация выходной цепочки символов на языке машинных команд
или ассемблере.
      Процесс компиляции состоит из двух основных этапов: синтеза и анали-
за. На этапе анализа выполняется распознавание текста исходной программы и
заполнение таблиц идентификаторов. Результатом этапа служит некоторое
внутреннее представление программы, понятное компилятору.
      На этапе синтеза на основании внутреннего представления программы и
информации, содержащейся в таблице идентификаторов, порождается текст ре-
зультирующей программы. Результатом этого этапа является объектный код.
      Данные этапы состоят из более мелких стадий, называемых фазами. Со-
став фаз и их взаимодействие зависит от конкретной реализации компилятора.
Но в том или ином виде в каждом компиляторе выделяются следующие фазы:
      1) лексический анализ;
      2) синтаксический анализ;
      3) семантический анализ;
      4) подготовка к генерации кода;
      5) генерация кода.
      Определение 2.3. Процесс последовательного чтения компилятором дан-
ных из внешней памяти, их обработки и помещения результатов во внешнюю
память, называется проходом компилятора.
                                                                        13